{"report_id":"1f5643fb-2e73-459a-bc92-9bbbf0dfd1d4","version":0,"status":"done","tags":[],"date":"2026-07-27T13:38:18Z","url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":0,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"final":{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"title":"Wealth Grid Assets","dom":{"size":140205,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (4171)","md5":"cce06c613f859a53e4f2211ffed0d56a","sha1":"81687e933f215a729c1124ea26a74397cd9399b8","sha256":"8f8dd971e2c98bcd1e961fdebd9268ddc9355f8d85fe8e82754fc41a853d9e10","sha512":"bdb329c6843cd1cd38010584f0aed44dac9e7ea1737890f72d80f92bfd15fd76c29708ef65ee3689adf79ecf1acc8213e6e0ad96987280f3fe8ec28c3ca25f02","ssdeep":"1536:ISSZJwp+jVqyt16QJ6vqUif/5TkGwGQG+Gaz5zJ6DAKnf1U/Sg4Sl:ISSXwp+jAQJ6v7dXV7Cfcr","tlshash":"8fd3837042f0011b84879285ffb5ab8b5a929357c6664c84b3fc8fa6ef83cd4ed175a4","dom_hash":"domhash020297656a53e25631ec349c7ae28743","first_seen":"2026-07-27T13:38:30.792914Z","last_seen":"2026-07-27T13:38:30.792914Z","times_seen":1,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":0,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T13:38:18Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":1}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"www.smartsuppchat.com","ip":{"addr":"185.76.9.12","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"domain_registered":"2014-02-02","domain_rank":491650,"first_seen":"2017-01-30T05:24:57Z","last_seen":"2026-07-24T07:15:25.153212Z","alert_count":0,"request_count":1,"received_data":18546,"sent_data":466,"comment":"","tags":null,"fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}]},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":313,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2026-07-26T22:23:14.439231Z","alert_count":0,"request_count":1,"received_data":14922,"sent_data":598,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"bootstrap.smartsuppchat.com","ip":{"addr":"18.185.198.9","port":443,"asn":16509,"as":"AMAZON-02","country":"Germany","country_code":"DE"},"domain_registered":"2014-02-02","domain_rank":425291,"first_seen":"2018-01-29T06:10:36Z","last_seen":"2026-07-24T07:15:25.204838Z","alert_count":0,"request_count":1,"received_data":1724,"sent_data":541,"comment":"","tags":null,"fingerprints":null},{"fqdn":"websocket-visitors.smartsupp.com","ip":{"addr":"18.198.69.8","port":443,"asn":16509,"as":"AMAZON-02","country":"Germany","country_code":"DE"},"domain_registered":"2012-08-25","domain_rank":411464,"first_seen":"2021-07-12T07:42:32Z","last_seen":"2026-07-24T09:04:26.067381Z","alert_count":0,"request_count":1,"received_data":224,"sent_data":634,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":5,"received_data":246725,"sent_data":2890,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translations.smartsuppcdn.com","ip":{"addr":"185.76.9.11","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"domain_registered":"2018-11-20","domain_rank":560346,"first_seen":"2022-11-04T22:28:35Z","last_seen":"2026-07-24T15:28:31.911258Z","alert_count":0,"request_count":1,"received_data":7735,"sent_data":523,"comment":"","tags":null,"fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}]},{"fqdn":"cdn.gtranslate.net","ip":{"addr":"104.26.12.42","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2011-05-26","domain_rank":101861,"first_seen":"2022-11-07T21:49:20Z","last_seen":"2026-07-24T01:31:43.488627Z","alert_count":0,"request_count":2,"received_data":30641,"sent_data":1031,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"wealthgridasset.com","ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"domain_registered":"2026-04-18","domain_rank":0,"first_seen":"2026-07-27T13:38:24.115835Z","last_seen":"2026-07-27T13:38:24.115835Z","alert_count":94,"request_count":94,"received_data":6366179,"sent_data":51830,"comment":"","tags":null,"fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:5.6.40","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"WOW","description":"Reveal CSS animation as you scroll down a page.","website":"https://www.delac.io/WOW","common_platform_enumeration":"","icon":"","categories":["JavaScript frameworks","Web frameworks","JavaScript graphics"]},{"name":"Moment.js","description":"Moment.js is a free and open-source JavaScript library that removes the need to use the native JavaScript Date object directly.","website":"https://momentjs.com","common_platform_enumeration":"cpe:2.3:a:momentjs:moment:*:*:*:*:*:*:*:*","icon":"Moment.js.svg","categories":["JavaScript libraries"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Magnific Popup","description":"Magnific Popup is a responsive lightbox \u0026 dialog script with focus on performance and providing best experience for user with any device.","website":"https://dimsemenov.com/plugins/magnific-popup/","common_platform_enumeration":"","icon":"Magnific Popup.png","categories":["JavaScript libraries"]},{"name":"jQuery:3.6.0","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"jQuery CDN","description":"jQuery CDN is a way to include jQuery in your website without actually downloading and keeping it your website's folder.","website":"https://code.jquery.com/","common_platform_enumeration":"","icon":"jQuery.svg","categories":["CDN"]}]},{"fqdn":"code.jquery.com","ip":{"addr":"151.101.65.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"domain_registered":"2005-12-10","domain_rank":4915,"first_seen":"2012-05-21T17:28:02Z","last_seen":"2026-07-27T00:05:00.24147Z","alert_count":0,"request_count":1,"received_data":88787,"sent_data":469,"comment":"","tags":null,"fingerprints":[{"name":"Nginx","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]},{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]}]},{"fqdn":"widget-v3.smartsuppcdn.com","ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"domain_registered":"2018-11-20","domain_rank":532262,"first_seen":"2022-10-03T13:48:45Z","last_seen":"2026-07-24T15:28:31.507831Z","alert_count":0,"request_count":4,"received_data":329036,"sent_data":1890,"comment":"","tags":null,"fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/gsap.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"bbc405241f9adee450ce6aa4bc2c721d","sha1":"bb4492d3077897c736196b96647d101d51cdeee2","sha256":"ef7ecab5c06cb266136a33c98db3c6cb6d65c4efcae773a697adfe1d319d66bf","sha512":"995ca8d1d8a2f593ee49e777c000144a2bf57c5d0473d5f4aa568f579087d1e828e765cd3f8c20096a6ba684113d7b163749f87abafb0a81c666a718f06cb135","ssdeep":"1536:mum9DvvZwT/ER4gp36k/pyHTKAWXLavcUDdSLORd42IEQmSH+OZOXfyf75o2g1wi:mPFR4gpKk/pyHTKAWXLavcUZSLORd42T","tlshash":"7b83655933d276358147f1369dafcc4ab33a989e1786540e720c90f86f2c478c77aea9","size":87601,"data":"","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.491424Z","times_seen":346,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/aos.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"d3718e34eeb0355be8e3179a2e2bccb7","sha1":"850ee2e5c9fba610840137c6c4e92b5abbc428fe","sha256":"a5005b2e414770fd5ccb40bc221a12771966d02b5c1f9c89da48bd8e3811d377","sha512":"03b0189357c6297e92d92b07cb098f92b9f34d91eb822553ec671090b1837b67afd1a59bf337a3cadcd2f308e8ecf1845caa893ab8d0e28391b678a6211641b7","ssdeep":"384:3IJfNa+yGZHbXPgJT7UKEgMt1sH6GCZy54:4JfNa+yGZHbfgJT7URgesaGCZy54","tlshash":"d162e8dc3691f0a617a790f782bf600ff2f04874245d9090d269c4e63eb58ae8673e5e","size":14690,"data":"","first_seen":"2023-03-07T01:19:08Z","last_seen":"2026-08-03T20:38:38.748021Z","times_seen":10321,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"273238d57b1fa8a15821f48c7ce73bff","sha1":"52cb457f2c29fcfc7ead8608dd77c79e9fd17478","sha256":"c2ebeb26757be6ba579dd4bcbc3e9ed160af6024a6a7926b7886e6083c3161cd","sha512":"5ebaa96ba81164bc065818e7ded8d495c7be01af01c74e1365f8834a6b67c7453d9b8eb2aeaf7fb8a31d218c44f6a42d8e691b572c5c5b17efd872a6dbd6a5e4","ssdeep":"3072:AU3b1ENciZqCNhcJcUd2GMuz/Frxl1Vs5:RUcmUd2GbK5","tlshash":"c4e34289b7f624369613f07d8ebfc805b17a445b2a9cdd59780c91b42f1443886fafac","size":144940,"data":"","first_seen":"2025-08-29T21:12:56.369624Z","last_seen":"2026-07-27T13:38:47.79498Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/moment.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"6860996d0ca4f1796fbe360c0ae16a18","sha1":"1f9129c04bfb98a444405da491c0b017d658ef68","sha256":"7a1aadf281f3a050264ed80442f898717f647d09877fd151d7224c51a6fa9c08","sha512":"f905de1badb98096be92b70abb16a3289e1b973d0a3728a09dbd232401ea8d60f78503ca808edf4aead98fe267cb06edc56fdeb5b5f8472932557b56c131bc3a","ssdeep":"1536:bap8FbGUWdmJ0skZvOKRqPRobxhBBvjUbZ:bap8FbCZsrKRERobxvF8","tlshash":"28834f4aaae274359317f0384d6fcc08b63a580b558e9d09790c92e52f1d93897b9ffc","size":84184,"data":"","first_seen":"2026-07-27T07:42:30.715386Z","last_seen":"2026-07-27T13:38:47.787229Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"f8df1e3bf4c30216b67a2330e5c58ad9","sha1":"a7b3a64826bdcf650d144a3e81ae45f2732ebb57","sha256":"1a93f77cbd70196067b8b715dd70d8bbfc73debb0802ef0954b2a336e712ca5b","sha512":"3cc045a1b8658f55b37c35bb7ef35cdcd39cfb08ce242c3d736f204cfc2477f7598d5228a11f0f8a45c7da3218b9d6f388b277c28d04fcabe1b82790e0397f52","ssdeep":"","tlshash":"bee08c076031046a14d7f406e3aa6a897678480b083a3d243a4e908b3fabb6d236e5a4","size":412,"data":"","first_seen":"2026-07-27T07:42:30.788951Z","last_seen":"2026-07-27T13:38:47.8094Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"01e8e15c5efb3a68432e7cc10f010c99","sha1":"17ce339c4be33fa50b773a387a3a4283ac2d1f8a","sha256":"d15416fbb49fcff11fffd5d699f0a66ff8109de86df7548dc92c77c1d884c2a1","sha512":"39f3ef389ac7a0ef03a06e71a7aa8ff25431ff46365c95528209c66332b937568436c48e01f3f85d07dcbb6f3d4b8fc6583bbc24f9a03c25ef52b27a8023487c","ssdeep":"","tlshash":"a101dc280f57923eca4d43c48e9a161c20a928a31a0d7c65f7cece810f4966e248728e","size":824,"data":"","first_seen":"2026-07-27T07:41:09.461206Z","last_seen":"2026-07-27T13:38:47.81014Z","times_seen":5,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"531b6713aabc9a05fc3fc17c8dfccde1","sha1":"31ccb5953961d01ac30ada97818b39e8ea260e23","sha256":"119f0b6bc1808671f064dc472d0ab4ad61979e8964e6f53cc92788b281bc38ee","sha512":"941fe5b72e0e37d58a24d6a93c5579ca022c2de6334ba0e59927883f83bc375803d8de7340f2adac243425fcf61986f377ebc6a2f1bace42297b788c011bad94","ssdeep":"","tlshash":"e5012b0cac611939d0fb2511a92b205999372acba40c6474fcdc41d4bf94959f3fd6de","size":704,"data":"","first_seen":"2026-07-27T07:42:30.791102Z","last_seen":"2026-07-27T13:38:47.811006Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"43459306b60f1a72b197e2d4ffe52ca4","sha1":"706f7ddead410f703a5b4a725490e68a99f69ddc","sha256":"7b2e551f9d046b4c3c626bb7837f087c7a387f462db8bfd93a5e94402e0947a5","sha512":"78dc6f2368fa91b337efa82a88af9384547e21f5d2b8ac67c5f3964c657c4231ea8d23f1aad046784c6bfd7235a08a6a1ada70421115bcdd702f63f12ec3d70a","ssdeep":"","tlshash":"8ac02b0d00a3944c1c9730ce75cd706648330b03180df0233ecc05010f8519cf365b5c","size":159,"data":"","first_seen":"2026-06-08T05:19:24.928578Z","last_seen":"2026-07-27T13:38:47.811891Z","times_seen":62,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"422381b2b5afb771f3a06fd1b0e98775","sha1":"1ae45c9123f3a21319d3d3b938ab924f9db8ca58","sha256":"95a3fe71f44f01f60d98783fd57d5d90b2f544742f567c12004aaed0ce66cc64","sha512":"eeb301f77716718c047cdc2a26671fe90de93c2b7058f0089fb133ad1cdab539aab14be54bffb5946a20290503146e2fbe2642e9221bceccbdd3672246ca0874","ssdeep":"","tlshash":"9131dd6db4b211620177b82f0abfab893830710f04449e013e9c96d08f99e5cf4d3ae9","size":1519,"data":"","first_seen":"2026-07-27T07:42:30.792528Z","last_seen":"2026-07-27T13:38:47.812708Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":true,"md5":"a8edfd7fe5e3e680fc5d46850a52b729","sha1":"3cd86a71f032252270fa1fe2792f44170bc82d43","sha256":"16ae2fe277d36be6564d6869d6c35b802485760cc3e4a76e48d3b6095c92a542","sha512":"8f06c979a16c7c5073b59ea9e217b9a4f306d4234330fd482304597b8f9440c8b01c3a19357e3f68e3a2be6abcf7594b1f4d9bf582919584398d71d381eb410e","ssdeep":"","tlshash":"17e0a27c2c3580854ba200b880a7e2283e0a703040a0c983889a897d58f0fde7d01aa8","size":416,"data":"","first_seen":"2026-07-27T07:42:30.793584Z","last_seen":"2026-07-27T13:38:47.813513Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.gtranslate.net/widgets/latest/float.js","fqdn":"cdn.gtranslate.net","domain":"gtranslate.net","tld":"net"},"ip":{"addr":"104.26.12.42","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"68ee10aa7ede43f8bb3293b220daf775","sha1":"1f26a636577ea9aaa524c0a23ae8cf342be925e9","sha256":"76e28fc0425d80422e45305464ada45c7c9b4a00132c65012c737c22814c259f","sha512":"531d2baf5f4d61c0def2c5f45fd8d9b69b143c24d0474a01291d858b086b45c233d1cca885cc722d6e6eaff3f8cb62e637df797beca8f5aec20d090f0e23fe08","ssdeep":"384:UzCKMPZATN09o0mtvwfEXMb5TZ/dDszCnfYI:UVMhAh060svwcX0T1dhh","tlshash":"10a2c62921b3003a49531265efff165c607a02b78004ec24bfaeddc2dfd59a9caa77d5","size":23138,"data":"","first_seen":"2026-05-06T20:53:53.345523Z","last_seen":"2026-08-04T02:43:27.765274Z","times_seen":2129,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/shared-kb1yqHaA.js","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"introduction_type":"scriptElement","is_inline":false,"md5":"4a99d6fd0e84ed566d578d0ed5dea128","sha1":"c729468068793db7ca783d243b2ec065b6e2f202","sha256":"99501ff83cea2d37fb29f4ff7e0bfc1a93655e56db91bce74171fe29f0821884","sha512":"fcab2b13f37fe49c7a500be1285445ec1dfb120ed4f6d909925ea5616ee9f62d999fe83c1f8210dcc1742528ee3469e5671b34191317836ab4ed3b020ade8608","ssdeep":"6144:mLjnOEIL18ad2jJKaQF+tRkYcuBa+y+mFJW:iOEIZRd29Uqj4r+mF4","tlshash":"b3443ad53294b03543db51e6906f1106b33e5c58580d812cf269ede638baec8a2f7fb8","size":272133,"data":"","first_seen":"2026-07-27T07:28:16.16312Z","last_seen":"2026-07-29T06:17:50.104199Z","times_seen":1066,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.magnific-popup.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"ba6cf724c8bb1cf5b084e79ff230626e","sha1":"f455c5f153f872e52265f87a644ff89fe14a6fb6","sha256":"3fddc6d28aba3c13d64cfd4847c333ff48c71d4a5a58bd1a0494ca6ae8ac1bb4","sha512":"22c361e44dde632dedaff2625f6631e2fb02ba3b6487097b48baa09f02cd81fd381ebb7d053f525e52e56655b1f8e2b89ddcc0a002e1b0c35c0a6920823641d7","ssdeep":"384:lPhVPXQ2G2XAQyqVxRQ5giCCMLtA15h5/F6l8aZwHwztLCpmst:lPBIt8I5h5t1qkOLCMst","tlshash":"bd921894f2b2b21383a735b8686f70093a729952ed06c855a55d94d87efcec89037f3c","size":20216,"data":"","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-04T05:33:17.358938Z","times_seen":72963,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.odometer.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"dc259ded1a84fccde97eed25b0f36fd7","sha1":"951884d82a2ab311e2719ff96d429082b48c4053","sha256":"45cd87a552a2962ecab5f977c381df31f82adc173512b492cb4a0bd555b2c567","sha512":"a8f21bb09901d6d0f61941dac83cb874b3c132ec4f4f5e163523e1e35705080e57866042de05d3c20c2a63d156769f755513b9cc9f8cc4b75a797ef51eb7518e","ssdeep":"192:x2vNkLkN/cBQiCmchU752Z/mE7hJrky6XHdKyXmaWZShW1Ik7IaB:8vokN0BQiX5y/m8XklHdKyXIZS8OiB","tlshash":"fe42451163e1273d9707e1a1aeef8d44b7b989296194808eb61cd4d9a831c348b7dff8","size":12145,"data":"","first_seen":"2023-03-11T22:43:23Z","last_seen":"2026-08-02T09:41:51.847561Z","times_seen":241,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.appear.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"638410d8bb7fb16e34e13965914f2e44","sha1":"9a6516d6ddd6e89ae3edefdce614b7bf2579ad08","sha256":"ca479c482d27d4c0165057d670cb19e8a60feba8c6e57385d4c3b3c78d6bcee7","sha512":"94efc827cf3a3338a9d55c4b661a6047243d393a9fe93ed918383d39866b9c2fc577fec5e7dcade67026789d9e5db2de9274313d8ba4bf9f08879bb5bcb6c3bc","ssdeep":"48:wo3dm92k3yVvegTkYzSdaMxlehOBOrwR6nZNBFxDNE9l9g9A4F+4vFC8:v3DsEfRebDOrxfFjg/gSmxvFC8","tlshash":"e691020a79eb1ab54877613e9f9fb2442220503b1202d8113ceddf6caf91d68b597fd8","size":4273,"data":"","first_seen":"2023-03-11T22:43:23Z","last_seen":"2026-08-02T09:41:51.835177Z","times_seen":408,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/ajax-form.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"6fb844afc6d3c95fc02dc6f7301b7abd","sha1":"97b7659ca9318daeeb7513cba965817da8c3ff56","sha256":"a2d6b6c46044362f66dd1855cea06e4fc47bbd1a0f0f1ca220e51666a88215af","sha512":"45d21ad467479be270e0e1700254f1d4888ac6c924342a834ce17b6d83367e20daf7497f19b0dbe62aa6314823b1e3e9073e760004e3492f479a8e8a1b202001","ssdeep":"","tlshash":"55219005bf7c0b6e1227214536ed33cdbb2c55b28647742a8fe9187616841dc13c17ab","size":1202,"data":"","first_seen":"2023-03-07T13:01:57Z","last_seen":"2026-07-31T19:25:03.222155Z","times_seen":570,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/demo.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"2b386e6d43f80b35577d6a5bae2c11a3","sha1":"29686a10b0c3c06987dfa3a3a519e1061376b2e1","sha256":"218756098bf9c89bff2350eb626f7426a9bf1cb6e6f408e3384873810c9fecb3","sha512":"c57706e2981fc681de8033c7fc0c93627908d37ce97f536b5794726de5ef94fd49ff0a524b0240a1f1ca78378dd8ccb8a5ad8bbacb2b878617ff18a905ab9026","ssdeep":"","tlshash":"61312b5db06e69b310b77629561ade0d243e842f2324df1db17d0be11fb90ad84b3871","size":1557,"data":"","first_seen":"2026-07-27T07:42:30.735245Z","last_seen":"2026-07-27T13:38:47.800861Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/scripts.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"2e8e4ad7ab58fd350b366ce26acaf936","sha1":"cf1e2871884af17e50e719370df0aa60787d8bed","sha256":"64fec12e4c8c10bd955465bf6f3f34f8ca819c1b0c24f4faa3c139e90772e5f4","sha512":"575f1d86868c154217deb7b489129aea3735b4c71cff72c51d56f7110a7e594d9ca916d68f461d37d3b6ec52b02b8d58f8a73a69e2b8a32da6b12d60201434b4","ssdeep":"384:CeNo2DeQwJq49cvy/3XQe3r4FU7DwuuxoWtY/ovZRjRlYFXILvS1wRYwS2I5tOTW:CHJq4b5/6jSaW","tlshash":"a0f21d5974b71076417b342d8bef9409367b11078c0ae9603d9c4b845fc8a2e99fafee","size":37225,"data":"","first_seen":"2026-07-27T07:42:30.769753Z","last_seen":"2026-07-27T13:38:47.775511Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/charts/gd-default.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"e3b356930afdc1199239ba96452cd32b","sha1":"3810b9a31df00e13a5962896996b07c590ca32e4","sha256":"5d9bdda63b66a1ee5f16882287c490c68e7a82fc174f1af416a628d9825ff8a1","sha512":"a83a7938cfea8c069c8be8a5ca0e10a5a831c539ce0087cfcb13acaf0228392c01ea6b3569519c5c77df4f5bba742102eccea1307fbced21cc4830dcbb51b62f","ssdeep":"384:iCXD4UaCgSIL5G4kaCgSiSaCZSYhKFDvzaCuV0LaCuSILb4paCZSIOhh:UxGCybuv/QzoqL","tlshash":"67f2f08efa79047aa013a42c56ff4605976572472e4abe247f1c2a502f1dc2df0f67ca","size":36144,"data":"","first_seen":"2026-07-27T07:42:30.772012Z","last_seen":"2026-07-27T13:38:47.781232Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.smartsuppchat.com/loader.js?","fqdn":"www.smartsuppchat.com","domain":"smartsuppchat.com","tld":"com"},"ip":{"addr":"185.76.9.12","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"introduction_type":"scriptElement","is_inline":false,"md5":"218d24439d4e2c0990f35338a7ac220c","sha1":"5a7b913584c1244bf61beab9dc644204d130101c","sha256":"efb497f7159de26ea5e0521d675d909dc063e36d0d23c2ad96fa9109b73ee263","sha512":"17af39bfdc350c9d1f8dd74652641d0c028881ecb3935d2d9fdb763d24136665d135d00219aabac57693112e2314d4fa91b802ba2662a1580aa35c5e0b6e624b","ssdeep":"384:2/xzy2A3wyxNeBWbEgl/EuVaBWbE0rIcvqSI/aQ/UpG:2/xzy2A3wXscuVaAxka05","tlshash":"4182b7cc7691b16543ab61b4843f620ff1376929740d8865b965eae13cb8c8ed037fb8","size":18024,"data":"","first_seen":"2026-03-30T19:01:55.527327Z","last_seen":"2026-08-04T06:18:03.8209Z","times_seen":7979,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/app.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"3ed688d18cf6e5aa7c1828b565047642","sha1":"a09825d2e7849d6984b88195d3dbf5a19421d9f5","sha256":"1708f99052a957335350f2194bab65d8e620bb965007d990d7c65fa5cc18827f","sha512":"51e62f102f90cfb6721375fed7d4882f4b3d487aaef06cde5d238b5ca924c6f0e15c9bc421ff3d2e17d980a8d69af8b5904b3f593dac17d6775085e053a2db9a","ssdeep":"192:jlUriF8xFYFs8LhO0XymJ8y52LUAtwdLZNF0NHsb972pZFCiYGdQpSWcT+Q:J8xFYFs8o09JiLUAtm6XCi5dQY","tlshash":"b622121ab0f621a1507b716a4e5f804072739023a459ed243f8d42f20f7d4acd2fbfaa","size":10607,"data":"","first_seen":"2026-07-27T07:42:30.721596Z","last_seen":"2026-07-27T13:38:47.779792Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/gsap-animation.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"61d7f08525706d199b7b94efacedb48f","sha1":"9e6707d19bdc61b0f8682d2c77d2746ebe1b5b85","sha256":"c2a93e40116682091c972c80a2819c57a1600ddf50cbdb1db869f36478155539","sha512":"17555cde681e8f11ed04eae1ece21629c23ca44425ef7dbb60fd80a2241eafc1a8182b32150d367a7ada478199b583ed2fc3ade17d6479016e61bc2e2fc526dc","ssdeep":"","tlshash":"0531998d86e70561177f63be4abe4529383040432c1aaf68befd420b3f494386762fa5","size":1786,"data":"","first_seen":"2024-06-02T05:34:57Z","last_seen":"2026-07-27T13:38:47.76919Z","times_seen":119,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/main.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"b4d531f45ee0f66e3acec89efe9c7480","sha1":"5257ad2a3d4ccf0eec1a7867986598c7bc053308","sha256":"a6e56dea72365eddbaad8ea1fb03e3afa30dd340c41e8d6ab5ae5629c2bc863c","sha512":"0a759cdb5ef9da1db7f0f7131efc8f9729d11553af9ff5c416d49dbb00db930177515bb92649fa66b3dada443997cee48141137cc181f65489e6910c42d1168f","ssdeep":"96:tLPeRdEmDBCmyxbaGCmOFlY7Mt0U61lRxUnF/s8T7mO1sR8AhOImggoAlXovjT7X:tCRd6myxbaiolY7WxszjGtkS0XBRy6","tlshash":"9b322001e17410725137393a5e1f5314a3a252c7adaf7d32b8ac4188df5d32c66babbb","size":11209,"data":"","first_seen":"2025-08-12T03:58:17.885081Z","last_seen":"2026-07-27T13:38:47.789362Z","times_seen":14,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/bundle.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"9eb7494bc5f8b7bbe995640f28f3e385","sha1":"255ae2a98035f5e60d2b01c16320add53bf53c90","sha256":"aea339da8c0ce436ecb4eaff77456bfb7b498c6f811222d55b325a8dc5820a10","sha512":"4a2d5f2a2b449795bea0bbd52cf64362485849e95f449dea5d97793de0dbdd2ca3ee5b985718cfdd38b24f8a32611758666fc80dfa906ade8a216cf395551cea","ssdeep":"49152:Qa53RZF5yQVpS8X4J4RqWkxv2Na8FVzZtZXuEhX3tKMogcVc5A0X5BT7GuampIEI:SRNH","tlshash":"96856249baf235359257f039496fc808b336a41b1a49ed043e0c52a55f5d83ca7fafe8","size":1793990,"data":"","first_seen":"2026-07-27T07:42:30.794918Z","last_seen":"2026-07-27T13:38:47.814534Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/vendor/jquery-3.6.0.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"e86504b92c4745b9315d7f4f9b73fc2a","sha1":"b9b4714b5c1cbc03d9444c9f60a17eecb8e0750d","sha256":"878796facbcbeadeddda79c14175bb3967519b61d1db46ae49a36b5dc84e5dd9","sha512":"b68bab355239d15d094c62bbe79cde78267f7636d15db229da584ce0d7276edb6d0844f05fb903d3f341ab5252004de893c9d9ba60d8a739e883d56695466491","ssdeep":"1536:b7/cnTfIbdDSRjlJTQPWVTagPShkMnJuxlk6WRIvQEtUK9G2CWKeYcftIougRuOk:bLd2oe9G2CWPtmK4Y3OFnG7KokA98J","tlshash":"4fb3b69973d63335864bf0b69c9fcd4df2b9595c23c98409a60cc5a6a830878877edec","size":107748,"data":"","first_seen":"2023-03-07T12:08:36Z","last_seen":"2026-08-03T15:20:17.886033Z","times_seen":1357,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/scroll-lock.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"2475c790379a97954d1dbe8f0c1f23c0","sha1":"4839ffa2aef004d11b1ea03a080efe2e50512d94","sha256":"7faa43d34db21507c48a4625aafbe9db7e3f5b0928a46e999c2c60161d5b970c","sha512":"e322cfda1b24fcc1f9829a7426c3ec636ae0d6310b3ffc781f75651cbc022a4eaba5747e3a167b06158a4861cdd38e4f37fe686933f967543802936a003a5f8f","ssdeep":"384:njErQSRcB+Txiwolr7XI2MmdUQUWQwee7/m0bXNDKa/SjbLi:jErHcYTxiwolr7XI2MmdUQUWQwee7/x9","tlshash":"42a2ff9e75f23471968bb074d86faa09b136009f1a59de103d0c6b759f0cd3c62b2f9a","size":21417,"data":"","first_seen":"2026-07-27T07:42:30.787778Z","last_seen":"2026-07-27T13:38:47.770234Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.magnific-popup.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","size":32802,"data":"","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-3.4.1.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.65.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"220afd743d9e9643852e31a135a9f3ae","sha1":"88523924351bac0b5d560fe0c5781e2556e7693d","sha256":"0925e8ad7bd971391a8b1e98be8e87a6971919eb5b60c196485941c3c1df089a","sha512":"6e722fce1e8553be592b1a741972c7f5b7b0cdafce230e9d2d587d20283482881c96660682e4095a5f14df45a96ec193a9b222030c53b1b7bbe8312b2eae440d","ssdeep":"1536:yTExXUZinxD7oPEZxkMV4SYKFMbRHZ6H5HOHCWrcElzuu7BRCKKBEqBsojZlOPma:ygZm0H5HO5+gCKWZyPmHQ47GKe","tlshash":"338319dd72c6706257b761ba00bf540bf236599e6c4d4410f124e8eabc78a4a823bf7d","size":88145,"data":"","first_seen":"2023-03-07T01:02:34Z","last_seen":"2026-08-04T04:29:45.495877Z","times_seen":138337,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/tooltipster.bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"ba5b6ceae7b52d64158b8d5a7b9ed969","sha1":"b78b8f9fe442e68e3396d6a1e7b855f83025fbd1","sha256":"dd874ad276a97be88fcaa2194c9d4d632517920edc005054cd6c26b8111f662b","sha512":"a36ec5fbecc115a5234fc04f6219265714df5c6b91fe84db4ddbaf98ff900b4d029f988932524459a47b9b1d9b2fb3c4cbf8f7ebb98fde39ff34f383eb766cab","ssdeep":"768:wQV+mIUHjOeWCKNL9zrwhvzu+BJlJp1K/tjZKZmxC61WKTF29BLnmzeBNGssejmg:w6+mFOnNpzCu+B8emJQiMNV9/AyhtMUr","tlshash":"ff53420aa7f115229657b1b99a3fda093231802f56869cb43d5c47f81f1d03a97f3ba8","size":64905,"data":"","first_seen":"2026-07-27T07:42:30.72069Z","last_seen":"2026-07-27T13:38:47.778616Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/global/js/iziToast.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"a05a127c793145cec6b721f14fced3e5","sha1":"5d753b1c803de12f4d2217ab0d143d4dcf047010","sha256":"ac860be79a4cfe434ea68f002638f79371d9a85a3b045a1aaf10dc98df551497","sha512":"ee5a4c561a267f7a96635cb529a5e670aebe766289fe358e6b394585db4b76d5df215cad4b358a07425deaada36d4f4e42c06c2c44d9c192f03ac1afeb9bdc64","ssdeep":"384:ShKmhCPzlc5gVCPBpcG/0CEvXArKKpQi8VREgO3MrnHzxJBkHI4505P:+K5PzlcN8DXArhpQzRHO3M7TxfGIYUP","tlshash":"6a82c894722032374aa329a960ff534a3772156ca9c641a4243fcdad5b34f8939f77f8","size":18481,"data":"","first_seen":"2023-03-07T01:10:25Z","last_seen":"2026-08-04T06:10:25.776928Z","times_seen":3369,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/apexcharts.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"c8ce483c57f4d8715d278153f8db5b71","sha1":"72dbefaf622131731ad22e7c89dc4ac38165d3d8","sha256":"bddb11a069fd0bbae6d83ed7cc4b7c49c97e2000b132649fef89e592b44ad1da","sha512":"f109836ce352891c86c098d8e6b3099f092ac1720cd6c6be6f50a1a1ef77321a2702600dd83f8ac9ca644a760082a6fe036dabe52c32fb0349e84d2ed7f4c9c3","ssdeep":"24576:tbh3tHEjN0Cv4lthOUNJ9GoVY2Tdtk1lbz1BP9wbj7H8XvR/QfTKbXgWmnEBb9Co:tbh3tHEjN0Cv4lthOUpGoVY2Tdtk1lbn","tlshash":"3f15730bdbe62976d503b12d9d2f9906a271954b1e4dec187e4c90a01f5c82c93faff8","size":949099,"data":"","first_seen":"2026-02-09T00:02:08.772768Z","last_seen":"2026-07-27T13:38:47.780716Z","times_seen":5,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/swiper-bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"ce4262a841844ecbf3108087e5ab3597","sha1":"963eacf88cfb728b976266b5f0f4d6b84bafee27","sha256":"a927b5d0830d4810e940faf62c14abc76b651cd513ae72a502f9898ff1654b30","sha512":"5045c13524590b8a45232b90299fb480db77618bbdeaa12703cc8459500b93da33a97865b2d969b9821bc2e71d71a12840848cbe367cf5ca16046b51449d46f4","ssdeep":"3072:mFpfqT7CHtLkFIUEED5GqdBuOtyj9Gmcjc:mFpRW/c","tlshash":"0524710a52f129384293b12e4b9fc520b37a900b7a49eca83e5c49585f5d83c57f9ff9","size":223949,"data":"","first_seen":"2026-07-27T07:42:30.741599Z","last_seen":"2026-07-27T13:38:47.784423Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/charts.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"6a1986313b8ff7a56ccb48e7371eb3d7","sha1":"ac9ace609c6c6d1da17fa6428532196f2c368cd8","sha256":"fb680725117f20ae4249304a0d362c829f774cbecf37f1fe07c07ecdf98481f2","sha512":"0cb239db74a788743e3a07b8f1304b4d2ba74f2e041984355b9462c3360785025df5fc49417eb5cc09ab600f1c1abc870a9276636956f805c6083289885f8bc6","ssdeep":"192:MLZCFo1KAojICCUqCnUiE6I46GKaPCPnAg/QPKAojbCCg2CVyxlCJLG8ZPK3Cjbc:+8yKj4ZMKaKIgIPKjWG8ZPKSM","tlshash":"4f22fa1ddaf12053a113b0b99a2f0615b536a18fac5d7c393f8c12905f8e46c99f9bec","size":10289,"data":"","first_seen":"2026-07-27T07:42:30.733894Z","last_seen":"2026-07-27T13:38:47.799544Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/ScrollTrigger.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"fe0035bf95ea998c247100405a3156ff","sha1":"512642755f7b998893e722aca92554eb8f50d048","sha256":"b65fd407ffda9f927f60f5a662a2919a26b571be89c1db6ff1c20541bdd6e38f","sha512":"ce2bf2b43362429e4223a138214d30d0303354edb7a351dce4d2530b1d4a8fd34d9979b2ce27798532b235d4797413150f24a251a97993354f9593e58540d843","ssdeep":"768:vwRpBQSdefRPULPb/9AE3KGvMzOfmWdKpII9UStJMKoEcxTgvBHb7Psz2:v2zHdxnKE6GLbUUSt7tEEvBHfPd","tlshash":"1c33936a32843235824bf237dd9fcd08b77a189b26c59549720c51a91f2d93c877eeec","size":52453,"data":"","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.590725Z","times_seen":344,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.parallaxScroll.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"fe94d7ccb9fb6cbde8f3b3aaac1ace80","sha1":"ab53b50a877697c9151555726498ccbd357e7356","sha256":"325361f8437acd94b482a6a246e82fece26511e455ab3c44adfcc1a6765d9429","sha512":"80d012af500031f05f135be31b4f9d511aba4e3f03511f0d438e91c7d07b0528abeed4aa811df3c8519c42ffff4bb89eb23f32d22a3b22080806eede0f746965","ssdeep":"192:ztVW0ChASsOOqki3LyByw7FAuKLPr0aqB1yD:fXChCOOqkiWbyPx","tlshash":"3c12fc04e4930522e5e771358f5e029eb72eb5079265d8287b0ddacd4f80b3493e8fe6","size":9713,"data":"","first_seen":"2025-04-12T15:34:26.833919Z","last_seen":"2026-07-27T13:38:47.778094Z","times_seen":73,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/swiper-bundle.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"512a32a6be6d9bd1da397272332fd757","sha1":"5e22ee0381b065de9860ace25b07e69358609652","sha256":"ac5eb91e15d457f314be461ef50a422bc1e381e4783ce1ad3ee30bc9bf8cab93","sha512":"1016c1bc09008414a46e1757d95b96bcfd29832d0cd21b085e7e462978850a2db5a8e0a8b9f33a3c5e39caa8b32e8ba0348128e9fe72dbbed28055702095aa5c","ssdeep":"3072:4nwnTVRLCBBUyMwgSpADH7BcVOsjqq3bwF:Iwn5ZPyMwgSpADH7BcVOsjqq3bK","tlshash":"83d3188db364b2a151e73256539ed10263b65845b80ac5a430b68cd7ac7de8c03bfefd","size":141278,"data":"","first_seen":"2025-12-22T07:55:46.860324Z","last_seen":"2026-07-27T13:38:47.769741Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/wow.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"36050285bfeeb7395752f0f9bbc08273","sha1":"5924f7bbbf1dfa3f0926851d01f782f23a59e805","sha256":"0ec632e6ab02d4fdd514da7f5edc74aa28c9d4c71af76f1c8b93a1fba85bcc69","sha512":"bf887e087c52583114b77bfb417d7dffa0ee8634d39155af14591a24b2add9ef4c8a0c0555364122800d07a55f5f1fb0c723b39541b069a437ff558ddbf380a3","ssdeep":"96:UrZgL1xvPV6GqKgR6TYLWHFMLJA6pOROVEE1fosvGeaMozHImBaoqbl:Ury9PVfIFrlAJROVEEdos+eatzHILoA","tlshash":"750267c97a967031d75796f6833f0106b6361aeeb028047cb5b88dd57c78868523bf38","size":8415,"data":"","first_seen":"2023-03-07T01:02:45Z","last_seen":"2026-08-04T06:10:25.786122Z","times_seen":14223,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.daterangepicker.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"c563bbcee5d3df61cf88a33a02d7ebf4","sha1":"821f3f8a622d625c21de03da87141ad7508bdd31","sha256":"70728ad3932f6b2ad176a0fccbc1da828e37335563a8831c78096ff76af83d53","sha512":"f9ec50e8e73d407ed5176a633c8bae666f86938b77cc8f584e39d1de19878521e85ef8b291c456cd3f7d6be678e6438dfaa3939e2da268fe6d1db4adb8329c7d","ssdeep":"768:vgbIiPlXPe0gUlzoXvLsXj/XX877CQiKfDLGRt7SmRYbMYnPX8aIQQxzi4I65c3M:vgzlXP/gUlzoXv4z/8qQFG4zkaBmaM","tlshash":"6e83b406e9e00d73066b76644a5e59027753c43b9e52781c3b6c61889f8ec3f92feb9c","size":82863,"data":"","first_seen":"2026-07-27T07:42:30.786594Z","last_seen":"2026-07-27T13:38:47.772864Z","times_seen":3,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/bootstrap.bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"6baf57f25796c332144ed58a2a0cd9ee","sha1":"f7fd0f3dc84b2cf93bf81e832505a673f354e0a3","sha256":"82f64f62bb03c1bc1824b0f9c9e05f70dba33e146818e63cdf5c306c8cf3dedd","sha512":"5ff6240d9ca34dfe30c9cd95cb5e981823c7c0063cad9258f8f3a0a24663401da684844524272410673a6325fd78db0f7e7d0fcd3844b8db3eb9aa2613908ee8","ssdeep":"1536:Qmw0iELO+TBR2t472RirWyKsVfK5GEfy3YJtCRv/45wZbqbXZTbYWU178:VwXza3YCl45wZODZTbYR8","tlshash":"cc73c5593244b4730ade85b68037430bf2265998b24b812cb57cadde2a7dcc67277f78","size":80663,"data":"","first_seen":"2023-09-18T01:21:14Z","last_seen":"2026-08-04T06:02:34.905972Z","times_seen":21032,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/SplitText.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"introduction_type":"scriptElement","is_inline":false,"md5":"d203e0f384f1ec120e487ce417d5347c","sha1":"84d4083ec3af4b039fc8eb294a088fe32af8d894","sha256":"55d585e0ef72aa225af809a9bd01ef585560c67af9f88049a117bc545d7c9771","sha512":"21594f64edd0289a83a839a39c8c57fb76d2197955e3bbef8575808ef1137e08e9a9d34513100ae79167e37989ccbd0ff1fec1afb115d7930bd5f943d18003fd","ssdeep":"384:VrEawZ1w8mol3iPqPqMirVuiEUiEJ7i1rxrVkMeilkXcvZaDZ:zwvKhPqPqXV/EJEJ7MzkklgcvZaDZ","tlshash":"4882766052611b34712251175e8aab1ff0b8490bdb53e936b79cf0acab05430dbf7af9","size":18394,"data":"","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.512669Z","times_seen":351,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/main-B-VHc1K4.js","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"introduction_type":"scriptElement","is_inline":false,"md5":"44df6240c839beea4111582dddf02793","sha1":"4b4dd2241d5ff95eba46fb8893058404630825cd","sha256":"a4019ee0c737ef5d214e80e5a87a5a6e839ff2cf4e286cdad9ed6ff397eba250","sha512":"2f30c45b38eeb4a1900f295893fa30362dce2af015cb8eac6b997795ff4b72db55a92d8d38bb7a8cc8f529c612906aa9d2a2a41539c6a67052ae569733ff7e02","ssdeep":"384:Xrgi5RFMkSjJOE/0BW2rvZZ795P6nrnBOVmPCRkXQbpaIF2x:XEizlSjJOEiWYPR5P6rnBOVmycQbpaIi","tlshash":"6c72d7742700783f712f489e15ade546b232c29dd693892d8b2fec0976c5cc0a8b37b9","size":16281,"data":"","first_seen":"2026-07-27T07:28:16.135673Z","last_seen":"2026-07-29T06:17:50.042235Z","times_seen":1081,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"warn","text":"jQuery.Deferred exception: $(...).tooltipster is not a function@https://wealthgridasset.com/assets/templates/basic/dash2/js/app.js:185:23\nj@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1189:55\nDeferred/then/g/\u003c/k\u003c@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1195:45\nsetTimeout handler*Deferred/then/g/\u003c@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1200:117\ni@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1084:49\nfireWith@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1121:97\nfire@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1124:30\ni@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1084:49\nfireWith@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1121:97\nready@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1252:107\nR@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1257:91\nEventListener.handleEvent*@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:1259:123\n@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:6:9\n@https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js:7:2\nmap[type:undefined]","filename":"https://wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js","line_number":1240,"column_number":73}]},"http":[{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.magnific-popup.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.019Z","timestamp":1785159465019,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/jquery.magnific-popup.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 8177\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":32802,"size_decoded":8414,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (562)","md5":"342841c71bf97ea45ca04fe8d6cead55","sha1":"637e10197aa7b42cae85e8423a9570cb70afb674","sha256":"cb99922e6533e36934a738ae2fa05252cc1fd22dc76015fdc5e6e639795e88c0","sha512":"a75fc7d3daaebc0daada3b71521b6582768c93a5039c8ae287a7c6745c958d9af47d061a4c2e2f53278fd5647d60c5406543abafd62d8709d71c36dd72aac9d8","ssdeep":"768:X6pkptmFVQMxhOVvr2XZ+n6HSABdhbGQZD:X62XCwhGsoSABPbGOD","tlshash":"3ae25119f6f321279757b1388e7f9c0832759047ae05dd443e4c61a8afa883895f9fac","first_seen":"2023-03-10T00:49:37Z","last_seen":"2026-07-27T13:38:47.795544Z","times_seen":116,"resource_available":true,"data":"LyohIE1hZ25pZmljIFBvcHVwIC0gdjEuMS4wIC0gMjAxNi0wMi0yMAogKiBodHRwOi8vZGltc2VtZW5vdi5jb20vcGx1Z2lucy9tYWduaWZpYy1wb3B1cC8KICogQ29weXJpZ2h0IChjKSAyMDE2IERtaXRyeSBTZW1lbm92OyAqLwohIGZ1bmN0aW9uKGEpIHsKICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsianF1ZXJ5Il0sIGEpIDogYSgib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IHJlcXVpcmUoImpxdWVyeSIpIDogd2luZG93LmpRdWVyeSB8fCB3aW5kb3cuWmVwdG8pCn0oZnVuY3Rpb24oYSkgewogICAgdmFyIGIsIGMsIGQsIGUsIGYsIGcsIGggPSAiQ2xvc2UiLAogICAgICAgIGkgPSAiQmVmb3JlQ2xvc2UiLAogICAgICAgIGogPSAiQWZ0ZXJDbG9zZSIsCiAgICAgICAgayA9ICJCZWZvcmVBcHBlbmQiLAogICAgICAgIGwgPSAiTWFya3VwUGFyc2UiLAogICAgICAgIG0gPSAiT3BlbiIsCiAgICAgICAgbiA9ICJDaGFuZ2UiLAogICAgICAgIG8gPSAibWZwIiwKICAgICAgICBwID0gIi4iICsgbywKICAgICAgICBxID0gIm1mcC1yZWFkeSIsCiAgICAgICAgciA9ICJtZnAtcmVtb3ZpbmciLAogICAgICAgIHMgPSAibWZwLXByZXZlbnQtY2xvc2UiLAogICAgICAgIHQgPSBmdW5jdGlvbigpIHt9LAogICAgICAgIHUgPSAhIXdpbmRvdy5qUXVlcnksCiAgICAgICAgdiA9IGEod2luZG93KSwKICAgICAgICB3ID0gZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICBiLmV2Lm9uKG8gKyBhICsgcCwgYykKICAgICAgICB9LAogICAgICAgIHggPSBmdW5jdGlvbihiLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIHZhciBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIHJldHVybiBmLmNsYXNzTmFtZSA9ICJtZnAtIiArIGIsIGQgJiYgKGYuaW5uZXJIVE1MID0gZCksIGUgPyBjICYmIGMuYXBwZW5kQ2hpbGQoZikgOiAoZiA9IGEoZiksIGMgJiYgZi5hcHBlbmRUbyhjKSksIGYKICAgICAgICB9LAogICAgICAgIHkgPSBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgIGIuZXYudHJpZ2dlckhhbmRsZXIobyArIGMsIGQpLCBiLnN0LmNhbGxiYWNrcyAmJiAoYyA9IGMuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjLnNsaWNlKDEpLCBiLnN0LmNhbGxiYWNrc1tjXSAmJiBiLnN0LmNhbGxiYWNrc1tjXS5hcHBseShiLCBhLmlzQXJyYXkoZCkgPyBkIDogW2RdKSkKICAgICAgICB9LAogICAgICAgIHogPSBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjID09PSBnICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuIHx8IChiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0biA9IGEoYi5zdC5jbG9zZU1hcmt1cC5yZXBsYWNlKCIldGl0bGUlIiwgYi5zdC50Q2xvc2UpKSwgZyA9IGMpLCBiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bgogICAgICAgIH0sCiAgICAgICAgQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UgfHwgKGIgPSBuZXcgdCwgYi5pbml0KCksIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSA9IGIpCiAgICAgICAgfSwKICAgICAgICBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLAogICAgICAgICAgICAgICAgYiA9IFsibXMiLCAiTyIsICJNb3oiLCAiV2Via2l0Il07CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGEudHJhbnNpdGlvbikgcmV0dXJuICEwOwogICAgICAgICAgICBmb3IgKDsgYi5sZW5ndGg7KQogICAgICAgICAgICAgICAgaWYgKGIucG9wKCkgKyAiVHJhbnNpdGlvbiIgaW4gYSkgcmV0dXJuICEwOwogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9OwogICAgdC5wcm90b3R5cGUgPSB7CiAgICAgICAgY29uc3RydWN0b3I6IHQsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjID0gbmF2aWdhdG9yLmFwcFZlcnNpb247CiAgICAgICAgICAgIGIuaXNMb3dJRSA9IGIuaXNJRTggPSBkb2N1bWVudC5hbGwgJiYgIWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIsIGIuaXNBbmRyb2lkID0gL2FuZHJvaWQvZ2kudGVzdChjKSwgYi5pc0lPUyA9IC9pcGhvbmV8aXBhZHxpcG9kL2dpLnRlc3QoYyksIGIuc3VwcG9ydHNUcmFuc2l0aW9uID0gQigpLCBiLnByb2JhYmx5TW9iaWxlID0gYi5pc0FuZHJvaWQgfHwgYi5pc0lPUyB8fCAvKE9wZXJhIE1pbmkpfEtpbmRsZXx3ZWJPU3xCbGFja0JlcnJ5fChPcGVyYSBNb2JpKXwoV2luZG93cyBQaG9uZSl8SUVNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLCBkID0gYShkb2N1bWVudCksIGIucG9wdXBzQ2FjaGUgPSB7fQogICAgICAgIH0sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYykgewogICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgaWYgKGMuaXNPYmogPT09ICExKSB7CiAgICAgICAgICAgICAgICBiLml0ZW1zID0gYy5pdGVtcy50b0FycmF5KCksIGIuaW5kZXggPSAwOwogICAgICAgICAgICAgICAgdmFyIGcsIGggPSBjLml0ZW1zOwogICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IGgubGVuZ3RoOyBlKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKGcgPSBoW2VdLCBnLnBhcnNlZCAmJiAoZyA9IGcuZWxbMF0pLCBnID09PSBjLmVsWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuaW5kZXggPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGIuaXRlbXMgPSBhLmlzQXJyYXkoYy5pdGVtcykgPyBjLml0ZW1zIDogW2MuaXRlbXNdLCBiLmluZGV4ID0gYy5pbmRleCB8fCAwOwogICAgICAgICAgICBpZiAoYi5pc09wZW4pIHJldHVybiB2b2lkIGIudXBkYXRlSXRlbUhUTUwoKTsKICAgICAgICAgICAgYi50eXBlcyA9IFtdLCBmID0gIiIsIGMubWFpbkVsICYmIGMubWFpbkVsLmxlbmd0aCA/IGIuZXYgPSBjLm1haW5FbC5lcSgwKSA6IGIuZXYgPSBkLCBjLmtleSA/IChiLnBvcHVwc0NhY2hlW2Mua2V5XSB8fCAoYi5wb3B1cHNDYWNoZVtjLmtleV0gPSB7fSksIGIuY3VyclRlbXBsYXRlID0gYi5wb3B1cHNDYWNoZVtjLmtleV0pIDogYi5jdXJyVGVtcGxhdGUgPSB7fSwgYi5zdCA9IGEuZXh0ZW5kKCEwLCB7fSwgYS5tYWduaWZpY1BvcHVwLmRlZmF1bHRzLCBjKSwgYi5maXhlZENvbnRlbnRQb3MgPSAiYXV0byIgPT09IGIuc3QuZml4ZWRDb250ZW50UG9zID8gIWIucHJvYmFibHlNb2JpbGUgOiBiLnN0LmZpeGVkQ29udGVudFBvcywgYi5zdC5tb2RhbCAmJiAoYi5zdC5jbG9zZU9uQ29udGVudENsaWNrID0gITEsIGIuc3QuY2xvc2VPbkJnQ2xpY2sgPSAhMSwgYi5zdC5zaG93Q2xvc2VCdG4gPSAhMSwgYi5zdC5lbmFibGVFc2NhcGVLZXkgPSAhMSksIGIuYmdPdmVybGF5IHx8IChiLmJnT3ZlcmxheSA9IHgoImJnIikub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLndyYXAgPSB4KCJ3cmFwIikuYXR0cigidGFiaW5kZXgiLCAtMSkub24oImNsaWNrIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIGIuX2NoZWNrSWZDbG9zZShhLnRhcmdldCkgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lciA9IHgoImNvbnRhaW5lciIsIGIud3JhcCkpLCBiLmNvbnRlbnRDb250YWluZXIgPSB4KCJjb250ZW50IiksIGIuc3QucHJlbG9hZGVyICYmIChiLnByZWxvYWRlciA9IHgoInByZWxvYWRlciIsIGIuY29udGFpbmVyLCBiLnN0LnRMb2FkaW5nKSk7CiAgICAgICAgICAgIHZhciBpID0gYS5tYWduaWZpY1BvcHVwLm1vZHVsZXM7CiAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBpLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgaiA9IGlbZV07CiAgICAgICAgICAgICAgICBqID0gai5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGouc2xpY2UoMSksIGJbImluaXQiICsgal0uY2FsbChiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHkoIkJlZm9yZU9wZW4iKSwgYi5zdC5zaG93Q2xvc2VCdG4gJiYgKGIuc3QuY2xvc2VCdG5JbnNpZGUgPyAodyhsLCBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgICAgICBjLmNsb3NlX3JlcGxhY2VXaXRoID0geihkLnR5cGUpCiAgICAgICAgICAgIH0pLCBmICs9ICIgbWZwLWNsb3NlLWJ0bi1pbiIpIDogYi53cmFwLmFwcGVuZCh6KCkpKSwgYi5zdC5hbGlnblRvcCAmJiAoZiArPSAiIG1mcC1hbGlnbi10b3AiKSwgYi5maXhlZENvbnRlbnRQb3MgPyBiLndyYXAuY3NzKHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiBiLnN0Lm92ZXJmbG93WSwKICAgICAgICAgICAgICAgIG92ZXJmbG93WDogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6IGIuc3Qub3ZlcmZsb3dZCiAgICAgICAgICAgIH0pIDogYi53cmFwLmNzcyh7CiAgICAgICAgICAgICAgICB0b3A6IHYuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICB9KSwgKGIuc3QuZml4ZWRCZ1BvcyA9PT0gITEgfHwgImF1dG8iID09PSBiLnN0LmZpeGVkQmdQb3MgJiYgIWIuZml4ZWRDb250ZW50UG9zKSAmJiBiLmJnT3ZlcmxheS5jc3MoewogICAgICAgICAgICAgICAgaGVpZ2h0OiBkLmhlaWdodCgpLAogICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIKICAgICAgICAgICAgfSksIGIuc3QuZW5hYmxlRXNjYXBlS2V5ICYmIGQub24oImtleXVwIiArIHAsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIDI3ID09PSBhLmtleUNvZGUgJiYgYi5jbG9zZSgpCiAgICAgICAgICAgIH0pLCB2Lm9uKCJyZXNpemUiICsgcCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnVwZGF0ZVNpemUoKQogICAgICAgICAgICB9KSwgYi5zdC5jbG9zZU9uQ29udGVudENsaWNrIHx8IChmICs9ICIgbWZwLWF1dG8tY3Vyc29yIiksIGYgJiYgYi53cmFwLmFkZENsYXNzKGYpOwogICAgICAgICAgICB2YXIgayA9IGIud0ggPSB2LmhlaWdodCgpLAogICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICBpZiAoYi5maXhlZENvbnRlbnRQb3MgJiYgYi5faGFzU2Nyb2xsQmFyKGspKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGIuX2dldFNjcm9sbGJhclNpemUoKTsKICAgICAgICAgICAgICAgIG8gJiYgKG4ubWFyZ2luUmlnaHQgPSBvKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zICYmIChiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiaGlkZGVuIikgOiBuLm92ZXJmbG93ID0gImhpZGRlbiIpOwogICAgICAgICAgICB2YXIgciA9IGIuc3QubWFpbkNsYXNzOwogICAgICAgICAgICByZXR1cm4gYi5pc0lFNyAmJiAociArPSAiIG1mcC1pZTciKSwgciAmJiBiLl9hZGRDbGFzc1RvTUZQKHIpLCBiLnVwZGF0ZUl0ZW1IVE1MKCksIHkoIkJ1aWxkQ29udHJvbHMiKSwgYSgiaHRtbCIpLmNzcyhuKSwgYi5iZ092ZXJsYXkuYWRkKGIud3JhcCkucHJlcGVuZFRvKGIuc3QucHJlcGVuZFRvIHx8IGEoZG9jdW1lbnQuYm9keSkpLCBiLl9sYXN0Rm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuY29udGVudCA/IChiLl9hZGRDbGFzc1RvTUZQKHEpLCBiLl9zZXRGb2N1cygpKSA6IGIuYmdPdmVybGF5LmFkZENsYXNzKHEpLCBkLm9uKCJmb2N1c2luIiArIHAsIGIuX29uRm9jdXNJbikKICAgICAgICAgICAgfSwgMTYpLCBiLmlzT3BlbiA9ICEwLCBiLnVwZGF0ZVNpemUoayksIHkobSksIGMKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYi5pc09wZW4gJiYgKHkoaSksIGIuaXNPcGVuID0gITEsIGIuc3QucmVtb3ZhbERlbGF5ICYmICFiLmlzTG93SUUgJiYgYi5zdXBwb3J0c1RyYW5zaXRpb24gPyAoYi5fYWRkQ2xhc3NUb01GUChyKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuX2Nsb3NlKCkKICAgICAgICAgICAgfSwgYi5zdC5yZW1vdmFsRGVsYXkpKSA6IGIuX2Nsb3NlKCkpCiAgICAgICAgfSwKICAgICAgICBfY2xvc2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB5KGgpOwogICAgICAgICAgICB2YXIgYyA9IHIgKyAiICIgKyBxICsgIiAiOwogICAgICAgICAgICBpZiAoYi5iZ092ZXJsYXkuZGV0YWNoKCksIGIud3JhcC5kZXRhY2goKSwgYi5jb250YWluZXIuZW1wdHkoKSwgYi5zdC5tYWluQ2xhc3MgJiYgKGMgKz0gYi5zdC5tYWluQ2xhc3MgKyAiICIpLCBiLl9yZW1vdmVDbGFzc0Zyb21NRlAoYyksIGIuZml4ZWRDb250ZW50UG9zKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogIiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBiLmlzSUU3ID8gYSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCAiIikgOiBlLm92ZXJmbG93ID0gIiIsIGEoImh0bWwiKS5jc3MoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBkLm9mZigia2V5dXAiICsgcCArICIgZm9jdXNpbiIgKyBwKSwgYi5ldi5vZmYocCksIGIud3JhcC5hdHRyKCJjbGFzcyIsICJtZnAtd3JhcCIpLnJlbW92ZUF0dHIoInN0eWxlIiksIGIuYmdPdmVybGF5LmF0dHIoImNsYXNzIiwgIm1mcC1iZyIpLCBiLmNvbnRhaW5lci5hdHRyKCJjbGFzcyIsICJtZnAtY29udGFpbmVyIiksICFiLnN0LnNob3dDbG9zZUJ0biB8fCBiLnN0LmNsb3NlQnRuSW5zaWRlICYmIGIuY3VyclRlbXBsYXRlW2IuY3Vyckl0ZW0udHlwZV0gIT09ICEwIHx8IGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuICYmIGIuY3VyclRlbXBsYXRlLmNsb3NlQnRuLmRldGFjaCgpLCBiLnN0LmF1dG9Gb2N1c0xhc3QgJiYgYi5fbGFzdEZvY3VzZWRFbCAmJiBhKGIuX2xhc3RGb2N1c2VkRWwpLmZvY3VzKCksIGIuY3Vyckl0ZW0gPSBudWxsLCBiLmNvbnRlbnQgPSBudWxsLCBiLmN1cnJUZW1wbGF0ZSA9IG51bGwsIGIucHJldkhlaWdodCA9IDAsIHkoaikKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKGIuaXNJT1MpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gd2luZG93LmlubmVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgZCA9IHdpbmRvdy5pbm5lckhlaWdodCAqIGM7CiAgICAgICAgICAgICAgICBiLndyYXAuY3NzKCJoZWlnaHQiLCBkKSwgYi53SCA9IGQKICAgICAgICAgICAgfSBlbHNlIGIud0ggPSBhIHx8IHYuaGVpZ2h0KCk7CiAgICAgICAgICAgIGIuZml4ZWRDb250ZW50UG9zIHx8IGIud3JhcC5jc3MoImhlaWdodCIsIGIud0gpLCB5KCJSZXNpemUiKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlSXRlbUhUTUw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYyA9IGIuaXRlbXNbYi5pbmRleF07CiAgICAgICAgICAgIGIuY29udGVudENvbnRhaW5lci5kZXRhY2goKSwgYi5jb250ZW50ICYmIGIuY29udGVudC5kZXRhY2goKSwgYy5wYXJzZWQgfHwgKGMgPSBiLnBhcnNlRWwoYi5pbmRleCkpOwogICAgICAgICAgICB2YXIgZCA9IGMudHlwZTsKICAgICAgICAgICAgaWYgKHkoIkJlZm9yZUNoYW5nZSIsIFtiLmN1cnJJdGVtID8gYi5jdXJySXRlbS50eXBlIDogIiIsIGRdKSwgYi5jdXJySXRlbSA9IGMsICFiLmN1cnJUZW1wbGF0ZVtkXSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBiLnN0W2RdID8gYi5zdFtkXS5tYXJrdXAgOiAhMTsKICAgICAgICAgICAgICAgIHkoIkZpcnN0TWFya3VwUGFyc2UiLCBmKSwgZiA/IGIuY3VyclRlbXBsYXRlW2RdID0gYShmKSA6IGIuY3VyclRlbXBsYXRlW2RdID0gITAKICAgICAgICAgICAgfQogICAgICAgICAgICBlICYmIGUgIT09IGMudHlwZSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLSIgKyBlICsgIi1ob2xkZXIiKTsKICAgICAgICAgICAgdmFyIGcgPSBiWyJnZXQiICsgZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGQuc2xpY2UoMSldKGMsIGIuY3VyclRlbXBsYXRlW2RdKTsKICAgICAgICAgICAgYi5hcHBlbmRDb250ZW50KGcsIGQpLCBjLnByZWxvYWRlZCA9ICEwLCB5KG4sIGMpLCBlID0gYy50eXBlLCBiLmNvbnRhaW5lci5wcmVwZW5kKGIuY29udGVudENvbnRhaW5lciksIHkoIkFmdGVyQ2hhbmdlIikKICAgICAgICB9LAogICAgICAgIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYi5jb250ZW50ID0gYSwgYSA/IGIuc3Quc2hvd0Nsb3NlQnRuICYmIGIuc3QuY2xvc2VCdG5JbnNpZGUgJiYgYi5jdXJyVGVtcGxhdGVbY10gPT09ICEwID8gYi5jb250ZW50LmZpbmQoIi5tZnAtY2xvc2UiKS5sZW5ndGggfHwgYi5jb250ZW50LmFwcGVuZCh6KCkpIDogYi5jb250ZW50ID0gYSA6IGIuY29udGVudCA9ICIiLCB5KGspLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLSIgKyBjICsgIi1ob2xkZXIiKSwgYi5jb250ZW50Q29udGFpbmVyLmFwcGVuZChiLmNvbnRlbnQpCiAgICAgICAgfSwKICAgICAgICBwYXJzZUVsOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHZhciBkLCBlID0gYi5pdGVtc1tjXTsKICAgICAgICAgICAgaWYgKGUudGFnTmFtZSA/IGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZWw6IGEoZSkKICAgICAgICAgICAgICAgIH0gOiAoZCA9IGUudHlwZSwgZSA9IHsKICAgICAgICAgICAgICAgICAgICBkYXRhOiBlLAogICAgICAgICAgICAgICAgICAgIHNyYzogZS5zcmMKICAgICAgICAgICAgICAgIH0pLCBlLmVsKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gYi50eXBlcywgZyA9IDA7IGcgPCBmLmxlbmd0aDsgZysrKQogICAgICAgICAgICAgICAgICAgIGlmIChlLmVsLmhhc0NsYXNzKCJtZnAtIiArIGZbZ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmW2ddOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuc3JjID0gZS5lbC5hdHRyKCJkYXRhLW1mcC1zcmMiKSwgZS5zcmMgfHwgKGUuc3JjID0gZS5lbC5hdHRyKCJocmVmIikpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUudHlwZSA9IGQgfHwgYi5zdC50eXBlIHx8ICJpbmxpbmUiLCBlLmluZGV4ID0gYywgZS5wYXJzZWQgPSAhMCwgYi5pdGVtc1tjXSA9IGUsIHkoIkVsZW1lbnRQYXJzZSIsIGUpLCBiLml0ZW1zW2NdCiAgICAgICAgfSwKICAgICAgICBhZGRHcm91cDogZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICAgIGQubWZwRWwgPSB0aGlzLCBiLl9vcGVuQ2xpY2soZCwgYSwgYykKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYyB8fCAoYyA9IHt9KTsKICAgICAgICAgICAgdmFyIGUgPSAiY2xpY2subWFnbmlmaWNQb3B1cCI7CiAgICAgICAgICAgIGMubWFpbkVsID0gYSwgYy5pdGVtcyA/IChjLmlzT2JqID0gITAsIGEub2ZmKGUpLm9uKGUsIGQpKSA6IChjLmlzT2JqID0gITEsIGMuZGVsZWdhdGUgPyBhLm9mZihlKS5vbihlLCBjLmRlbGVnYXRlLCBkKSA6IChjLml0ZW1zID0gYSwgYS5vZmYoZSkub24oZSwgZCkpKQogICAgICAgIH0sCiAgICAgICAgX29wZW5DbGljazogZnVuY3Rpb24oYywgZCwgZSkgewogICAgICAgICAgICB2YXIgZiA9IHZvaWQgMCAhPT0gZS5taWRDbGljayA/IGUubWlkQ2xpY2sgOiBhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMubWlkQ2xpY2s7CiAgICAgICAgICAgIGlmIChmIHx8ICEoMiA9PT0gYy53aGljaCB8fCBjLmN0cmxLZXkgfHwgYy5tZXRhS2V5IHx8IGMuYWx0S2V5IHx8IGMuc2hpZnRLZXkpKSB7CiAgICAgICAgICAgICAgICB2YXIgZyA9IHZvaWQgMCAhPT0gZS5kaXNhYmxlT24gPyBlLmRpc2FibGVPbiA6IGEubWFnbmlmaWNQb3B1cC5kZWZhdWx0cy5kaXNhYmxlT247CiAgICAgICAgICAgICAgICBpZiAoZykKICAgICAgICAgICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZy5jYWxsKGIpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHYud2lkdGgoKSA8IGcpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGMudHlwZSAmJiAoYy5wcmV2ZW50RGVmYXVsdCgpLCBiLmlzT3BlbiAmJiBjLnN0b3BQcm9wYWdhdGlvbigpKSwgZS5lbCA9IGEoYy5tZnBFbCksIGUuZGVsZWdhdGUgJiYgKGUuaXRlbXMgPSBkLmZpbmQoZS5kZWxlZ2F0ZSkpLCBiLm9wZW4oZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgIGlmIChiLnByZWxvYWRlcikgewogICAgICAgICAgICAgICAgYyAhPT0gYSAmJiBiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLXMtIiArIGMpLCBkIHx8ICJsb2FkaW5nIiAhPT0gYSB8fCAoZCA9IGIuc3QudExvYWRpbmcpOwogICAgICAgICAgICAgICAgdmFyIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBhLAogICAgICAgICAgICAgICAgICAgIHRleHQ6IGQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB5KCJVcGRhdGVTdGF0dXMiLCBlKSwgYSA9IGUuc3RhdHVzLCBkID0gZS50ZXh0LCBiLnByZWxvYWRlci5odG1sKGQpLCBiLnByZWxvYWRlci5maW5kKCJhIikub24oImNsaWNrIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgICAgIH0pLCBiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLXMtIiArIGEpLCBjID0gYQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfY2hlY2tJZkNsb3NlOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIGlmICghYShjKS5oYXNDbGFzcyhzKSkgewogICAgICAgICAgICAgICAgdmFyIGQgPSBiLnN0LmNsb3NlT25Db250ZW50Q2xpY2ssCiAgICAgICAgICAgICAgICAgICAgZSA9IGIuc3QuY2xvc2VPbkJnQ2xpY2s7CiAgICAgICAgICAgICAgICBpZiAoZCAmJiBlKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoIWIuY29udGVudCB8fCBhKGMpLmhhc0NsYXNzKCJtZnAtY2xvc2UiKSB8fCBiLnByZWxvYWRlciAmJiBjID09PSBiLnByZWxvYWRlclswXSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgaWYgKGMgPT09IGIuY29udGVudFswXSB8fCBhLmNvbnRhaW5zKGIuY29udGVudFswXSwgYykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZCkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUgJiYgYS5jb250YWlucyhkb2N1bWVudCwgYykpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfYWRkQ2xhc3NUb01GUDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICBiLmJnT3ZlcmxheS5hZGRDbGFzcyhhKSwgYi53cmFwLmFkZENsYXNzKGEpCiAgICAgICAgfSwKICAgICAgICBfcmVtb3ZlQ2xhc3NGcm9tTUZQOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHRoaXMuYmdPdmVybGF5LnJlbW92ZUNsYXNzKGEpLCBiLndyYXAucmVtb3ZlQ2xhc3MoYSkKICAgICAgICB9LAogICAgICAgIF9oYXNTY3JvbGxCYXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIChiLmlzSUU3ID8gZC5oZWlnaHQoKSA6IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSA+IChhIHx8IHYuaGVpZ2h0KCkpCiAgICAgICAgfSwKICAgICAgICBfc2V0Rm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAoYi5zdC5mb2N1cyA/IGIuY29udGVudC5maW5kKGIuc3QuZm9jdXMpLmVxKDApIDogYi53cmFwKS5mb2N1cygpCiAgICAgICAgfSwKICAgICAgICBfb25Gb2N1c0luOiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgIHJldHVybiBjLnRhcmdldCA9PT0gYi53cmFwWzBdIHx8IGEuY29udGFpbnMoYi53cmFwWzBdLCBjLnRhcmdldCkgPyB2b2lkIDAgOiAoYi5fc2V0Rm9jdXMoKSwgITEpCiAgICAgICAgfSwKICAgICAgICBfcGFyc2VNYXJrdXA6IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIGQuZGF0YSAmJiAoYyA9IGEuZXh0ZW5kKGQuZGF0YSwgYykpLCB5KGwsIFtiLCBjLCBkXSksIGEuZWFjaChjLCBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkIHx8IGQgPT09ICExKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoZSA9IGMuc3BsaXQoIl8iKSwgZS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBiLmZpbmQocCArICItIiArIGVbMF0pOwogICAgICAgICAgICAgICAgICAgIGlmIChmLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBlWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZVdpdGgiID09PSBnID8gZlswXSAhPT0gZFswXSAmJiBmLnJlcGxhY2VXaXRoKGQpIDogImltZyIgPT09IGcgPyBmLmlzKCJpbWciKSA/IGYuYXR0cigic3JjIiwgZCkgOiBmLnJlcGxhY2VXaXRoKGEoIjxpbWc+IikuYXR0cigic3JjIiwgZCkuYXR0cigiY2xhc3MiLCBmLmF0dHIoImNsYXNzIikpKSA6IGYuYXR0cihlWzFdLCBkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBiLmZpbmQocCArICItIiArIGMpLmh0bWwoZCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIF9nZXRTY3JvbGxiYXJTaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYi5zY3JvbGxiYXJTaXplKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgYS5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOiA5OXB4OyBoZWlnaHQ6IDk5cHg7IG92ZXJmbG93OiBzY3JvbGw7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtOTk5OXB4OyIsIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGIuc2Nyb2xsYmFyU2l6ZSA9IGEub2Zmc2V0V2lkdGggLSBhLmNsaWVudFdpZHRoLCBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGIuc2Nyb2xsYmFyU2l6ZQogICAgICAgIH0KICAgIH0sIGEubWFnbmlmaWNQb3B1cCA9IHsKICAgICAgICBpbnN0YW5jZTogbnVsbCwKICAgICAgICBwcm90bzogdC5wcm90b3R5cGUsCiAgICAgICAgbW9kdWxlczogW10sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICByZXR1cm4gQSgpLCBiID0gYiA/IGEuZXh0ZW5kKCEwLCB7fSwgYikgOiB7fSwgYi5pc09iaiA9ICEwLCBiLmluZGV4ID0gYyB8fCAwLCB0aGlzLmluc3RhbmNlLm9wZW4oYikKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSAmJiBhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UuY2xvc2UoKQogICAgICAgIH0sCiAgICAgICAgcmVnaXN0ZXJNb2R1bGU6IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgYy5vcHRpb25zICYmIChhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHNbYl0gPSBjLm9wdGlvbnMpLCBhLmV4dGVuZCh0aGlzLnByb3RvLCBjLnByb3RvKSwgdGhpcy5tb2R1bGVzLnB1c2goYikKICAgICAgICB9LAogICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgIGRpc2FibGVPbjogMCwKICAgICAgICAgICAga2V5OiBudWxsLAogICAgICAgICAgICBtaWRDbGljazogITEsCiAgICAgICAgICAgIG1haW5DbGFzczogIiIsCiAgICAgICAgICAgIHByZWxvYWRlcjogITAsCiAgICAgICAgICAgIGZvY3VzOiAiIiwKICAgICAgICAgICAgY2xvc2VPbkNvbnRlbnRDbGljazogITEsCiAgICAgICAgICAgIGNsb3NlT25CZ0NsaWNrOiAhMCwKICAgICAgICAgICAgY2xvc2VCdG5JbnNpZGU6ICEwLAogICAgICAgICAgICBzaG93Q2xvc2VCdG46ICEwLAogICAgICAgICAgICBlbmFibGVFc2NhcGVLZXk6ICEwLAogICAgICAgICAgICBtb2RhbDogITEsCiAgICAgICAgICAgIGFsaWduVG9wOiAhMSwKICAgICAgICAgICAgcmVtb3ZhbERlbGF5OiAwLAogICAgICAgICAgICBwcmVwZW5kVG86IG51bGwsCiAgICAgICAgICAgIGZpeGVkQ29udGVudFBvczogImF1dG8iLAogICAgICAgICAgICBmaXhlZEJnUG9zOiAiYXV0byIsCiAgICAgICAgICAgIG92ZXJmbG93WTogImF1dG8iLAogICAgICAgICAgICBjbG9zZU1hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1jbG9zZSI+JiMyMTU7PC9idXR0b24+JywKICAgICAgICAgICAgdENsb3NlOiAiQ2xvc2UgKEVzYykiLAogICAgICAgICAgICB0TG9hZGluZzogIkxvYWRpbmcuLi4iLAogICAgICAgICAgICBhdXRvRm9jdXNMYXN0OiAhMAogICAgICAgIH0KICAgIH0sIGEuZm4ubWFnbmlmaWNQb3B1cCA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBBKCk7CiAgICAgICAgdmFyIGQgPSBhKHRoaXMpOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYykKICAgICAgICAgICAgaWYgKCJvcGVuIiA9PT0gYykgewogICAgICAgICAgICAgICAgdmFyIGUsIGYgPSB1ID8gZC5kYXRhKCJtYWduaWZpY1BvcHVwIikgOiBkWzBdLm1hZ25pZmljUG9wdXAsCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGFyZ3VtZW50c1sxXSwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICBmLml0ZW1zID8gZSA9IGYuaXRlbXNbZ10gOiAoZSA9IGQsIGYuZGVsZWdhdGUgJiYgKGUgPSBlLmZpbmQoZi5kZWxlZ2F0ZSkpLCBlID0gZS5lcShnKSksIGIuX29wZW5DbGljayh7CiAgICAgICAgICAgICAgICAgICAgbWZwRWw6IGUKICAgICAgICAgICAgICAgIH0sIGQsIGYpCiAgICAgICAgICAgIH0gZWxzZSBiLmlzT3BlbiAmJiBiW2NdLmFwcGx5KGIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwogICAgICAgIGVsc2UgYyA9IGEuZXh0ZW5kKCEwLCB7fSwgYyksIHUgPyBkLmRhdGEoIm1hZ25pZmljUG9wdXAiLCBjKSA6IGRbMF0ubWFnbmlmaWNQb3B1cCA9IGMsIGIuYWRkR3JvdXAoZCwgYyk7CiAgICAgICAgcmV0dXJuIGQKICAgIH07CiAgICB2YXIgQywgRCwgRSwgRiA9ICJpbmxpbmUiLAogICAgICAgIEcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgRSAmJiAoRC5hZnRlcihFLmFkZENsYXNzKEMpKS5kZXRhY2goKSwgRSA9IG51bGwpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShGLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBoaWRkZW5DbGFzczogImhpZGUiLAogICAgICAgICAgICBtYXJrdXA6ICIiLAogICAgICAgICAgICB0Tm90Rm91bmQ6ICJDb250ZW50IG5vdCBmb3VuZCIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRJbmxpbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi50eXBlcy5wdXNoKEYpLCB3KGggKyAiLiIgKyBGLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBHKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElubGluZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgaWYgKEcoKSwgYy5zcmMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGIuc3QuaW5saW5lLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gYShjLnNyYyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGYubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZlswXS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICBnICYmIGcudGFnTmFtZSAmJiAoRCB8fCAoQyA9IGUuaGlkZGVuQ2xhc3MsIEQgPSB4KEMpLCBDID0gIm1mcC0iICsgQyksIEUgPSBmLmFmdGVyKEQpLmRldGFjaCgpLnJlbW92ZUNsYXNzKEMpKSwgYi51cGRhdGVTdGF0dXMoInJlYWR5IikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgZS50Tm90Rm91bmQpLCBmID0gYSgiPGRpdj4iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5pbmxpbmVFbGVtZW50ID0gZiwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCBiLl9wYXJzZU1hcmt1cChkLCB7fSwgYyksIGQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEgsIEkgPSAiYWpheCIsCiAgICAgICAgSiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoSCkKICAgICAgICB9LAogICAgICAgIEsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgSigpLCBiLnJlcSAmJiBiLnJlcS5hYm9ydCgpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShJLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBzZXR0aW5nczogbnVsbCwKICAgICAgICAgICAgY3Vyc29yOiAibWZwLWFqYXgtY3VyIiwKICAgICAgICAgICAgdEVycm9yOiAnPGEgaHJlZj0iJXVybCUiPlRoZSBjb250ZW50PC9hPiBjb3VsZCBub3QgYmUgbG9hZGVkLicKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRBamF4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIudHlwZXMucHVzaChJKSwgSCA9IGIuc3QuYWpheC5jdXJzb3IsIHcoaCArICIuIiArIEksIEspLCB3KCJCZWZvcmVDaGFuZ2UuIiArIEksIEspCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEFqYXg6IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIEggJiYgYShkb2N1bWVudC5ib2R5KS5hZGRDbGFzcyhIKSwgYi51cGRhdGVTdGF0dXMoImxvYWRpbmciKTsKICAgICAgICAgICAgICAgIHZhciBkID0gYS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIHVybDogYy5zcmMsCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZCwgZSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHI6IGYKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgeSgiUGFyc2VBamF4IiwgZyksIGIuYXBwZW5kQ29udGVudChhKGcuZGF0YSksIEkpLCBjLmZpbmlzaGVkID0gITAsIEooKSwgYi5fc2V0Rm9jdXMoKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIud3JhcC5hZGRDbGFzcyhxKQogICAgICAgICAgICAgICAgICAgICAgICB9LCAxNiksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLCB5KCJBamF4Q29udGVudEFkZGVkIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgSigpLCBjLmZpbmlzaGVkID0gYy5sb2FkRXJyb3IgPSAhMCwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgYi5zdC5hamF4LnRFcnJvci5yZXBsYWNlKCIldXJsJSIsIGMuc3JjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBiLnN0LmFqYXguc2V0dGluZ3MpOwogICAgICAgICAgICAgICAgcmV0dXJuIGIucmVxID0gYS5hamF4KGQpLCAiIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgTCwgTSA9IGZ1bmN0aW9uKGMpIHsKICAgICAgICBpZiAoYy5kYXRhICYmIHZvaWQgMCAhPT0gYy5kYXRhLnRpdGxlKSByZXR1cm4gYy5kYXRhLnRpdGxlOwogICAgICAgIHZhciBkID0gYi5zdC5pbWFnZS50aXRsZVNyYzsKICAgICAgICBpZiAoZCkgewogICAgICAgICAgICBpZiAoYS5pc0Z1bmN0aW9uKGQpKSByZXR1cm4gZC5jYWxsKGIsIGMpOwogICAgICAgICAgICBpZiAoYy5lbCkgcmV0dXJuIGMuZWwuYXR0cihkKSB8fCAiIgogICAgICAgIH0KICAgICAgICByZXR1cm4gIiIKICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoImltYWdlIiwgewogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgbWFya3VwOiAnPGRpdiBjbGFzcz0ibWZwLWZpZ3VyZSI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48ZmlndXJlPjxkaXYgY2xhc3M9Im1mcC1pbWciPjwvZGl2PjxmaWdjYXB0aW9uPjxkaXYgY2xhc3M9Im1mcC1ib3R0b20tYmFyIj48ZGl2IGNsYXNzPSJtZnAtdGl0bGUiPjwvZGl2PjxkaXYgY2xhc3M9Im1mcC1jb3VudGVyIj48L2Rpdj48L2Rpdj48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PC9kaXY+JywKICAgICAgICAgICAgY3Vyc29yOiAibWZwLXpvb20tb3V0LWN1ciIsCiAgICAgICAgICAgIHRpdGxlU3JjOiAidGl0bGUiLAogICAgICAgICAgICB2ZXJ0aWNhbEZpdDogITAsCiAgICAgICAgICAgIHRFcnJvcjogJzxhIGhyZWY9IiV1cmwlIj5UaGUgaW1hZ2U8L2E+IGNvdWxkIG5vdCBiZSBsb2FkZWQuJwogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdEltYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBkID0gIi5pbWFnZSI7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goImltYWdlIiksIHcobSArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZSAmJiBjLmN1cnNvciAmJiBhKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKGMuY3Vyc29yKQogICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGMuY3Vyc29yICYmIGEoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoYy5jdXJzb3IpLCB2Lm9mZigicmVzaXplIiArIHApCiAgICAgICAgICAgICAgICB9KSwgdygiUmVzaXplIiArIGQsIGIucmVzaXplSW1hZ2UpLCBiLmlzTG93SUUgJiYgdygiQWZ0ZXJDaGFuZ2UiLCBiLnJlc2l6ZUltYWdlKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXNpemVJbWFnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IGIuY3Vyckl0ZW07CiAgICAgICAgICAgICAgICBpZiAoYSAmJiBhLmltZyAmJiBiLnN0LmltYWdlLnZlcnRpY2FsRml0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAwOwogICAgICAgICAgICAgICAgICAgIGIuaXNMb3dJRSAmJiAoYyA9IHBhcnNlSW50KGEuaW1nLmNzcygicGFkZGluZy10b3AiKSwgMTApICsgcGFyc2VJbnQoYS5pbWcuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCkpLCBhLmltZy5jc3MoIm1heC1oZWlnaHQiLCBiLndIIC0gYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX29uSW1hZ2VIYXNTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBhLmltZyAmJiAoYS5oYXNTaXplID0gITAsIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYS5pc0NoZWNraW5nSW1nU2l6ZSA9ICExLCB5KCJJbWFnZUhhc1NpemUiLCBhKSwgYS5pbWdIaWRkZW4gJiYgKGIuY29udGVudCAmJiBiLmNvbnRlbnQucmVtb3ZlQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGEuaW1nSGlkZGVuID0gITEpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBmaW5kSW1hZ2VTaXplOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgZCA9IGEuaW1nWzBdLAogICAgICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbihmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgTCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQubmF0dXJhbFdpZHRoID4gMCA/IHZvaWQgYi5fb25JbWFnZUhhc1NpemUoYSkgOiAoYyA+IDIwMCAmJiBjbGVhckludGVydmFsKEwpLCBjKyssIHZvaWQoMyA9PT0gYyA/IGUoMTApIDogNDAgPT09IGMgPyBlKDUwKSA6IDEwMCA9PT0gYyAmJiBlKDUwMCkpKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBmKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBlKDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldEltYWdlOiBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgZiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjICYmIChjLmltZ1swXS5jb21wbGV0ZSA/IChjLmltZy5vZmYoIi5tZnBsb2FkZXIiKSwgYyA9PT0gYi5jdXJySXRlbSAmJiAoYi5fb25JbWFnZUhhc1NpemUoYyksIGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIHkoIkltYWdlTG9hZENvbXBsZXRlIikpIDogKGUrKywgMjAwID4gZSA/IHNldFRpbWVvdXQoZiwgMTAwKSA6IGcoKSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgJiYgKGMuaW1nLm9mZigiLm1mcGxvYWRlciIpLCBjID09PSBiLmN1cnJJdGVtICYmIChiLl9vbkltYWdlSGFzU2l6ZShjKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSwgYy5oYXNTaXplID0gITAsIGMubG9hZGVkID0gITAsIGMubG9hZEVycm9yID0gITApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoID0gYi5zdC5pbWFnZSwKICAgICAgICAgICAgICAgICAgICBpID0gZC5maW5kKCIubWZwLWltZyIpOwogICAgICAgICAgICAgICAgaWYgKGkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgICAgICAgICAgICBqLmNsYXNzTmFtZSA9ICJtZnAtaW1nIiwgYy5lbCAmJiBjLmVsLmZpbmQoImltZyIpLmxlbmd0aCAmJiAoai5hbHQgPSBjLmVsLmZpbmQoImltZyIpLmF0dHIoImFsdCIpKSwgYy5pbWcgPSBhKGopLm9uKCJsb2FkLm1mcGxvYWRlciIsIGYpLm9uKCJlcnJvci5tZnBsb2FkZXIiLCBnKSwgai5zcmMgPSBjLnNyYywgaS5pcygiaW1nIikgJiYgKGMuaW1nID0gYy5pbWcuY2xvbmUoKSksIGogPSBjLmltZ1swXSwgai5uYXR1cmFsV2lkdGggPiAwID8gYy5oYXNTaXplID0gITAgOiBqLndpZHRoIHx8IChjLmhhc1NpemUgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBiLl9wYXJzZU1hcmt1cChkLCB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IE0oYyksCiAgICAgICAgICAgICAgICAgICAgaW1nX3JlcGxhY2VXaXRoOiBjLmltZwogICAgICAgICAgICAgICAgfSwgYyksIGIucmVzaXplSW1hZ2UoKSwgYy5oYXNTaXplID8gKEwgJiYgY2xlYXJJbnRlcnZhbChMKSwgYy5sb2FkRXJyb3IgPyAoZC5hZGRDbGFzcygibWZwLWxvYWRpbmciKSwgYi51cGRhdGVTdGF0dXMoImVycm9yIiwgaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLCBjLnNyYykpKSA6IChkLnJlbW92ZUNsYXNzKCJtZnAtbG9hZGluZyIpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSksIGQpIDogKGIudXBkYXRlU3RhdHVzKCJsb2FkaW5nIiksIGMubG9hZGluZyA9ICEwLCBjLmhhc1NpemUgfHwgKGMuaW1nSGlkZGVuID0gITAsIGQuYWRkQ2xhc3MoIm1mcC1sb2FkaW5nIiksIGIuZmluZEltYWdlU2l6ZShjKSksIGQpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBOLCBPID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gTiAmJiAoTiA9IHZvaWQgMCAhPT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLnN0eWxlLk1velRyYW5zZm9ybSksIE4KICAgIH07CiAgICBhLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoInpvb20iLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgZWFzaW5nOiAiZWFzZS1pbi1vdXQiLAogICAgICAgICAgICBkdXJhdGlvbjogMzAwLAogICAgICAgICAgICBvcGVuZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmlzKCJpbWciKSA/IGEgOiBhLmZpbmQoImltZyIpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRab29tOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhLCBjID0gYi5zdC56b29tLAogICAgICAgICAgICAgICAgICAgIGQgPSAiLnpvb20iOwogICAgICAgICAgICAgICAgaWYgKGMuZW5hYmxlZCAmJiBiLnN1cHBvcnRzVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBmLCBnID0gYy5kdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5jbG9uZSgpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiY2xhc3MiKS5hZGRDbGFzcygibWZwLWFuaW1hdGVkLWltYWdlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICJhbGwgIiArIGMuZHVyYXRpb24gLyAxZTMgKyAicyAiICsgYy5lYXNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmaXhlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IjogImhpZGRlbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAidHJhbnNpdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsiLXdlYmtpdC0iICsgZl0gPSBlWyItbW96LSIgKyBmXSA9IGVbIi1vLSIgKyBmXSA9IGVbZl0gPSBkLCBiLmNzcyhlKSwgYgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmNvbnRlbnQuY3NzKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHcoIkJ1aWxkQ29udHJvbHMiICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgYSA9IGIuX2dldEl0ZW1Ub1pvb20oKSwgIWEpIHJldHVybiB2b2lkIGsoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpLCBmLmNzcyhiLl9nZXRPZmZzZXQoKSksIGIud3JhcC5hcHBlbmQoZiksIGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuY3NzKGIuX2dldE9mZnNldCghMCkpLCBlID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaygpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5yZW1vdmUoKSwgYSA9IGYgPSBudWxsLCB5KCJab29tQW5pbWF0aW9uRW5kZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSwgdyhpICsgZCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLl9hbGxvd1pvb20oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChlKSwgYi5zdC5yZW1vdmFsRGVsYXkgPSBnLCAhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gYi5fZ2V0SXRlbVRvWm9vbSgpLCAhYSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoITApKSwgYi53cmFwLmFwcGVuZChmKSwgYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmNzcyhiLl9nZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE2KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIHcoaCArIGQsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBiLl9hbGxvd1pvb20oKSAmJiAoaygpLCBmICYmIGYucmVtb3ZlKCksIGEgPSBudWxsKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9hbGxvd1pvb206IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJpbWFnZSIgPT09IGIuY3Vyckl0ZW0udHlwZQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SXRlbVRvWm9vbTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYi5jdXJySXRlbS5oYXNTaXplID8gYi5jdXJySXRlbS5pbWcgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0T2Zmc2V0OiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICB2YXIgZDsKICAgICAgICAgICAgICAgIGQgPSBjID8gYi5jdXJySXRlbS5pbWcgOiBiLnN0Lnpvb20ub3BlbmVyKGIuY3Vyckl0ZW0uZWwgfHwgYi5jdXJySXRlbSk7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGQub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgZiA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLXRvcCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgZyA9IHBhcnNlSW50KGQuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLCAxMCk7CiAgICAgICAgICAgICAgICBlLnRvcCAtPSBhKHdpbmRvdykuc2Nyb2xsVG9wKCkgLSBmOwogICAgICAgICAgICAgICAgdmFyIGggPSB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGQud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICh1ID8gZC5pbm5lckhlaWdodCgpIDogZFswXS5vZmZzZXRIZWlnaHQpIC0gZyAtIGYKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gTygpID8gaFsiLW1vei10cmFuc2Zvcm0iXSA9IGgudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgZS5sZWZ0ICsgInB4LCIgKyBlLnRvcCArICJweCkiIDogKGgubGVmdCA9IGUubGVmdCwgaC50b3AgPSBlLnRvcCksIGgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFAgPSAiaWZyYW1lIiwKICAgICAgICBRID0gIi8vYWJvdXQ6YmxhbmsiLAogICAgICAgIFIgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGlmIChiLmN1cnJUZW1wbGF0ZVtQXSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBiLmN1cnJUZW1wbGF0ZVtQXS5maW5kKCJpZnJhbWUiKTsKICAgICAgICAgICAgICAgIGMubGVuZ3RoICYmIChhIHx8IChjWzBdLnNyYyA9IFEpLCBiLmlzSUU4ICYmIGMuY3NzKCJkaXNwbGF5IiwgYSA/ICJibG9jayIgOiAibm9uZSIpKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShQLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBtYXJrdXA6ICc8ZGl2IGNsYXNzPSJtZnAtaWZyYW1lLXNjYWxlciI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48aWZyYW1lIGNsYXNzPSJtZnAtaWZyYW1lIiBzcmM9Ii8vYWJvdXQ6YmxhbmsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+PC9kaXY+JywKICAgICAgICAgICAgc3JjQWN0aW9uOiAiaWZyYW1lX3NyYyIsCiAgICAgICAgICAgIHBhdHRlcm5zOiB7CiAgICAgICAgICAgICAgICB5b3V0dWJlOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ5b3V0dWJlLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ2PSIsCiAgICAgICAgICAgICAgICAgICAgc3JjOiAiLy93d3cueW91dHViZS5jb20vZW1iZWQvJWlkJT9hdXRvcGxheT0xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZpbWVvOiB7CiAgICAgICAgICAgICAgICAgICAgaW5kZXg6ICJ2aW1lby5jb20vIiwKICAgICAgICAgICAgICAgICAgICBpZDogIi8iLAogICAgICAgICAgICAgICAgICAgIHNyYzogIi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8laWQlP2F1dG9wbGF5PTEiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ21hcHM6IHsKICAgICAgICAgICAgICAgICAgICBpbmRleDogIi8vbWFwcy5nb29nbGUuIiwKICAgICAgICAgICAgICAgICAgICBzcmM6ICIlaWQlJm91dHB1dD1lbWJlZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvdG86IHsKICAgICAgICAgICAgaW5pdElmcmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiLnR5cGVzLnB1c2goUCksIHcoIkJlZm9yZUNoYW5nZSIsIGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBiICE9PSBjICYmIChiID09PSBQID8gUigpIDogYyA9PT0gUCAmJiBSKCEwKSkKICAgICAgICAgICAgICAgIH0pLCB3KGggKyAiLiIgKyBQLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBSKCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldElmcmFtZTogZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBjLnNyYywKICAgICAgICAgICAgICAgICAgICBmID0gYi5zdC5pZnJhbWU7CiAgICAgICAgICAgICAgICBhLmVhY2goZi5wYXR0ZXJucywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZih0aGlzLmluZGV4KSA+IC0xID8gKHRoaXMuaWQgJiYgKGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgdGhpcy5pZCA/IGUuc3Vic3RyKGUubGFzdEluZGV4T2YodGhpcy5pZCkgKyB0aGlzLmlkLmxlbmd0aCwgZS5sZW5ndGgpIDogdGhpcy5pZC5jYWxsKHRoaXMsIGUpKSwgZSA9IHRoaXMuc3JjLnJlcGxhY2UoIiVpZCUiLCBlKSwgITEpIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBnID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gZi5zcmNBY3Rpb24gJiYgKGdbZi5zcmNBY3Rpb25dID0gZSksIGIuX3BhcnNlTWFya3VwKGQsIGcsIGMpLCBiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSwgZAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgUyA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGMgPSBiLml0ZW1zLmxlbmd0aDsKICAgICAgICAgICAgcmV0dXJuIGEgPiBjIC0gMSA/IGEgLSBjIDogMCA+IGEgPyBjICsgYSA6IGEKICAgICAgICB9LAogICAgICAgIFQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiBhLnJlcGxhY2UoLyVjdXJyJS9naSwgYiArIDEpLnJlcGxhY2UoLyV0b3RhbCUvZ2ksIGMpCiAgICAgICAgfTsKICAgIGEubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZSgiZ2FsbGVyeSIsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICBhcnJvd01hcmt1cDogJzxidXR0b24gdGl0bGU9IiV0aXRsZSUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1mcC1hcnJvdyBtZnAtYXJyb3ctJWRpciUiPjwvYnV0dG9uPicsCiAgICAgICAgICAgIHByZWxvYWQ6IFswLCAyXSwKICAgICAgICAgICAgbmF2aWdhdGVCeUltZ0NsaWNrOiAhMCwKICAgICAgICAgICAgYXJyb3dzOiAhMCwKICAgICAgICAgICAgdFByZXY6ICJQcmV2aW91cyAoTGVmdCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdE5leHQ6ICJOZXh0IChSaWdodCBhcnJvdyBrZXkpIiwKICAgICAgICAgICAgdENvdW50ZXI6ICIlY3VyciUgb2YgJXRvdGFsJSIKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRHYWxsZXJ5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5zdC5nYWxsZXJ5LAogICAgICAgICAgICAgICAgICAgIGUgPSAiLm1mcC1nYWxsZXJ5IjsKICAgICAgICAgICAgICAgIHJldHVybiBiLmRpcmVjdGlvbiA9ICEwLCBjICYmIGMuZW5hYmxlZCA/IChmICs9ICIgbWZwLWdhbGxlcnkiLCB3KG0gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjLm5hdmlnYXRlQnlJbWdDbGljayAmJiBiLndyYXAub24oImNsaWNrIiArIGUsICIubWZwLWltZyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5pdGVtcy5sZW5ndGggPiAxID8gKGIubmV4dCgpLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9KSwgZC5vbigia2V5ZG93biIgKyBlLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDM3ID09PSBhLmtleUNvZGUgPyBiLnByZXYoKSA6IDM5ID09PSBhLmtleUNvZGUgJiYgYi5uZXh0KCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSksIHcoIlVwZGF0ZVN0YXR1cyIgKyBlLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgYy50ZXh0ICYmIChjLnRleHQgPSBUKGMudGV4dCwgYi5jdXJySXRlbS5pbmRleCwgYi5pdGVtcy5sZW5ndGgpKQogICAgICAgICAgICAgICAgfSksIHcobCArIGUsIGZ1bmN0aW9uKGEsIGQsIGUsIGYpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGIuaXRlbXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGUuY291bnRlciA9IGcgPiAxID8gVChjLnRDb3VudGVyLCBmLmluZGV4LCBnKSA6ICIiCiAgICAgICAgICAgICAgICB9KSwgdygiQnVpbGRDb250cm9scyIgKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYi5pdGVtcy5sZW5ndGggPiAxICYmIGMuYXJyb3dzICYmICFiLmFycm93TGVmdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGMuYXJyb3dNYXJrdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYi5hcnJvd0xlZnQgPSBhKGQucmVwbGFjZSgvJXRpdGxlJS9naSwgYy50UHJldikucmVwbGFjZSgvJWRpciUvZ2ksICJsZWZ0IikpLmFkZENsYXNzKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGIuYXJyb3dSaWdodCA9IGEoZC5yZXBsYWNlKC8ldGl0bGUlL2dpLCBjLnROZXh0KS5yZXBsYWNlKC8lZGlyJS9naSwgInJpZ2h0IikpLmFkZENsYXNzKHMpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5wcmV2KCkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGYuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLm5leHQoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYi5jb250YWluZXIuYXBwZW5kKGUuYWRkKGYpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB3KG4gKyBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBiLl9wcmVsb2FkVGltZW91dCAmJiBjbGVhclRpbWVvdXQoYi5fcHJlbG9hZFRpbWVvdXQpLCBiLl9wcmVsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucHJlbG9hZE5lYXJieUltYWdlcygpLCBiLl9wcmVsb2FkVGltZW91dCA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9LCAxNikKICAgICAgICAgICAgICAgIH0pLCB2b2lkIHcoaCArIGUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGQub2ZmKGUpLCBiLndyYXAub2ZmKCJjbGljayIgKyBlKSwgYi5hcnJvd1JpZ2h0ID0gYi5hcnJvd0xlZnQgPSBudWxsCiAgICAgICAgICAgICAgICB9KSkgOiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGIuZGlyZWN0aW9uID0gITAsIGIuaW5kZXggPSBTKGIuaW5kZXggKyAxKSwgYi51cGRhdGVJdGVtSFRNTCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZXY6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSAhMSwgYi5pbmRleCA9IFMoYi5pbmRleCAtIDEpLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ29UbzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgYi5kaXJlY3Rpb24gPSBhID49IGIuaW5kZXgsIGIuaW5kZXggPSBhLCBiLnVwZGF0ZUl0ZW1IVE1MKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJlbG9hZE5lYXJieUltYWdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSwgYyA9IGIuc3QuZ2FsbGVyeS5wcmVsb2FkLAogICAgICAgICAgICAgICAgICAgIGQgPSBNYXRoLm1pbihjWzBdLCBiLml0ZW1zLmxlbmd0aCksCiAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWluKGNbMV0sIGIuaXRlbXMubGVuZ3RoKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZSA6IGQpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggKyBhKTsKICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPD0gKGIuZGlyZWN0aW9uID8gZCA6IGUpOyBhKyspIGIuX3ByZWxvYWRJdGVtKGIuaW5kZXggLSBhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfcHJlbG9hZEl0ZW06IGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIGlmIChjID0gUyhjKSwgIWIuaXRlbXNbY10ucHJlbG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBiLml0ZW1zW2NdOwogICAgICAgICAgICAgICAgICAgIGQucGFyc2VkIHx8IChkID0gYi5wYXJzZUVsKGMpKSwgeSgiTGF6eUxvYWQiLCBkKSwgImltYWdlIiA9PT0gZC50eXBlICYmIChkLmltZyA9IGEoJzxpbWcgY2xhc3M9Im1mcC1pbWciIC8+Jykub24oImxvYWQubWZwbG9hZGVyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuaGFzU2l6ZSA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSkub24oImVycm9yLm1mcGxvYWRlciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBkLmhhc1NpemUgPSAhMCwgZC5sb2FkRXJyb3IgPSAhMCwgeSgiTGF6eUxvYWRFcnJvciIsIGQpCiAgICAgICAgICAgICAgICAgICAgfSkuYXR0cigic3JjIiwgZC5zcmMpKSwgZC5wcmVsb2FkZWQgPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgVSA9ICJyZXRpbmEiOwogICAgYS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKFUsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHJlcGxhY2VTcmM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLnNyYy5yZXBsYWNlKC9cLlx3KyQvLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJAMngiICsgYQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmF0aW86IDEKICAgICAgICB9LAogICAgICAgIHByb3RvOiB7CiAgICAgICAgICAgIGluaXRSZXRpbmE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID4gMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gYi5zdC5yZXRpbmEsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhLnJhdGlvOwogICAgICAgICAgICAgICAgICAgIGMgPSBpc05hTihjKSA/IGMoKSA6IGMsIGMgPiAxICYmICh3KCJJbWFnZUhhc1NpemUuIiArIFUsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYi5pbWcuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXgtd2lkdGgiOiBiLmltZ1swXS5uYXR1cmFsV2lkdGggLyBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCB3KCJFbGVtZW50UGFyc2UuIiArIFUsIGZ1bmN0aW9uKGIsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5zcmMgPSBhLnJlcGxhY2VTcmMoZCwgYykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCBBKCkKfSk7"}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":34,"receive":12,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"code.jquery.com/jquery-3.4.1.min.js","fqdn":"code.jquery.com","domain":"jquery.com","tld":"com"},"ip":{"addr":"151.101.65.155","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.025Z","timestamp":1785159465025,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.jquery.com","organization":""},"issuer":{"commonName":"Sectigo Public Server Authentication CA DV E36","organization":"Sectigo Limited"},"validity":{"start":"Wed, 20 May 2026 00:00:00 GMT","end":"Fri, 04 Dec 2026 23:59:59 GMT"},"fingerprint":{"sha1":"DE:F8:0F:C4:8F:BC:F5:01:B1:66:91:CC:15:DC:D8:6E:5D:2F:45:4E","sha256":"05:8E:2E:14:85:E2:41:28:F5:18:A4:37:49:31:2B:0E:24:53:64:3F:02:15:BE:63:EF:F4:B8:53:5A:8B:6D:29"}}},"request":{"raw":"GET /jquery-3.4.1.min.js HTTP/1.1\r\nHost: code.jquery.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: nginx\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Fri, 18 Oct 1991 12:00:00 GMT\r\netag: W/\"28feccc0-15851\"\r\ncache-control: public, max-age=31536000, stale-while-revalidate=604800\r\naccess-control-allow-origin: *\r\ncross-origin-resource-policy: cross-origin\r\ncontent-encoding: gzip\r\nvia: 1.1 varnish, 1.1 varnish\r\naccept-ranges: bytes\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nage: 4001261\r\nx-served-by: cache-lga21965-LGA, cache-bma-essb1270024-BMA\r\nx-cache: HIT, HIT\r\nx-cache-hits: 19752, 161874\r\nx-timer: S1785159465.064832,VS0,VE0\r\nvary: Accept-Encoding\r\ncontent-length: 30638\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Nginx","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]},{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]}],"data":{"size":88145,"size_decoded":31280,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65451)","md5":"220afd743d9e9643852e31a135a9f3ae","sha1":"88523924351bac0b5d560fe0c5781e2556e7693d","sha256":"0925e8ad7bd971391a8b1e98be8e87a6971919eb5b60c196485941c3c1df089a","sha512":"6e722fce1e8553be592b1a741972c7f5b7b0cdafce230e9d2d587d20283482881c96660682e4095a5f14df45a96ec193a9b222030c53b1b7bbe8312b2eae440d","ssdeep":"1536:yTExXUZinxD7oPEZxkMV4SYKFMbRHZ6H5HOHCWrcElzuu7BRCKKBEqBsojZlOPma:ygZm0H5HO5+gCKWZyPmHQ47GKe","tlshash":"338319dd72c6706257b761ba00bf540bf236599e6c4d4410f124e8eabc78a4a823bf7d","first_seen":"2023-03-07T01:02:34Z","last_seen":"2026-08-04T04:29:45.495877Z","times_seen":138337,"resource_available":true,"data":"LyohIGpRdWVyeSB2My40LjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBzdHJpY3QiO3ZhciB0PVtdLEU9Qy5kb2N1bWVudCxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmNvbmNhdCx1PXQucHVzaCxpPXQuaW5kZXhPZixuPXt9LG89bi50b1N0cmluZyx2PW4uaGFzT3duUHJvcGVydHksYT12LnRvU3RyaW5nLGw9YS5jYWxsKE9iamVjdCkseT17fSxtPWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGV9LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmU9PT1lLndpbmRvd30sYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjQuMSIsaz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgay5mbi5pbml0KGUsdCl9LHA9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nO2Z1bmN0aW9uIGQoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9ay5mbj1rLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6ayxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ay5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGsuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGsubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0say5leHRlbmQ9ay5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKGsuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxrLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09ay5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LGsuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0KXtiKGUse25vbmNlOnQmJnQubm9uY2V9KX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtpZihkKGUpKXtmb3Iobj1lLmxlbmd0aDtyPG47cisrKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVha31lbHNlIGZvcihyIGluIGUpaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrO3JldHVybiBlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKHAsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKGQoT2JqZWN0KGUpKT9rLm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTp1LmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6aS5jYWxsKHQsZSxuKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLHI9MCxpPWUubGVuZ3RoO3I8bjtyKyspZVtpKytdPXRbcl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoLGE9IW47aTxvO2krKykhdChlW2ldLGkpIT09YSYmci5wdXNoKGVbaV0pO3JldHVybiByfSxtYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz0wLGE9W107aWYoZChlKSlmb3Iocj1lLmxlbmd0aDtvPHI7bysrKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO2Vsc2UgZm9yKG8gaW4gZSludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtyZXR1cm4gZy5hcHBseShbXSxhKX0sZ3VpZDoxLHN1cHBvcnQ6eX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihrLmZuW1N5bWJvbC5pdGVyYXRvcl09dFtTeW1ib2wuaXRlcmF0b3JdKSxrLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7blsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTt2YXIgaD1mdW5jdGlvbihuKXt2YXIgZSxkLGIsbyxpLGgsZixnLHcsdSxsLFQsQyxhLEUsdixzLGMseSxrPSJzaXp6bGUiKzEqbmV3IERhdGUsbT1uLmRvY3VtZW50LFM9MCxyPTAscD11ZSgpLHg9dWUoKSxOPXVlKCksQT11ZSgpLEQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJihsPSEwKSwwfSxqPXt9Lmhhc093blByb3BlcnR5LHQ9W10scT10LnBvcCxMPXQucHVzaCxIPXQucHVzaCxPPXQuc2xpY2UsUD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihlW25dPT09dClyZXR1cm4gbjtyZXR1cm4tMX0sUj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLE09IltcXHgyMFxcdFxcclxcblxcZl0iLEk9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsJD0iOigiK0krIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsRj1uZXcgUmVnRXhwKE0rIisiLCJnIiksQj1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKCQpLFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iKyQpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksbmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIweCIrdC02NTUzNjtyZXR1cm4gciE9cnx8bj90OnI8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUocj4+MTB8NTUyOTYsMTAyMyZyfDU2MzIwKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwobS5jaGlsZE5vZGVzKSxtLmNoaWxkTm9kZXMpLHRbbS5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoKGU/ZS5vd25lckRvY3VtZW50fHxlOm0pIT09QyYmVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhQVt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiZVLnRlc3QodCkpeyhzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPWspLG89KGw9aCh0KSkubGVuZ3RoO3doaWxlKG8tLSlsW29dPSIjIitzKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpLGY9ZWUudGVzdCh0KSYmeWUoZS5wYXJlbnROb2RlKXx8ZX10cnl7cmV0dXJuIEguYXBwbHkobixmLnF1ZXJ5U2VsZWN0b3JBbGwoYykpLG59Y2F0Y2goZSl7QSh0LCEwKX1maW5hbGx5e3M9PT1rJiZlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBnKHQucmVwbGFjZShCLCIkMSIpLGUsbixyKX1mdW5jdGlvbiB1ZSgpe3ZhciByPVtdO3JldHVybiBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHIucHVzaCh0KyIgIik+Yi5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbci5zaGlmdCgpXSxlW3QrIiAiXT1ufX1mdW5jdGlvbiBsZShlKXtyZXR1cm4gZVtrXT0hMCxlfWZ1bmN0aW9uIGNlKGUpe3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBmZShlLHQpe3ZhciBuPWUuc3BsaXQoInwiKSxyPW4ubGVuZ3RoO3doaWxlKHItLSliLmF0dHJIYW5kbGVbbltyXV09dH1mdW5jdGlvbiBwZShlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJmUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gZGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmUudHlwZT09PXR9fWZ1bmN0aW9uIGhlKG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT10fHwiYnV0dG9uIj09PXQpJiZlLnR5cGU9PT1ufX1mdW5jdGlvbiBnZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImZvcm0iaW4gZT9lLnBhcmVudE5vZGUmJiExPT09ZS5kaXNhYmxlZD8ibGFiZWwiaW4gZT8ibGFiZWwiaW4gZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5kaXNhYmxlZD09PXQ6ZS5kaXNhYmxlZD09PXQ6ZS5pc0Rpc2FibGVkPT09dHx8ZS5pc0Rpc2FibGVkIT09IXQmJmFlKGUpPT09dDplLmRpc2FibGVkPT09dDoibGFiZWwiaW4gZSYmZS5kaXNhYmxlZD09PXR9fWZ1bmN0aW9uIHZlKGEpe3JldHVybiBsZShmdW5jdGlvbihvKXtyZXR1cm4gbz0rbyxsZShmdW5jdGlvbihlLHQpe3ZhciBuLHI9YShbXSxlLmxlbmd0aCxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249cltpXV0mJihlW25dPSEodFtuXT1lW25dKSl9KX0pfWZ1bmN0aW9uIHllKGUpe3JldHVybiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9Zm9yKGUgaW4gZD1zZS5zdXBwb3J0PXt9LGk9c2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lc3BhY2VVUkksbj0oZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVkudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxUPXNlLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lP2Uub3duZXJEb2N1bWVudHx8ZTptO3JldHVybiByIT09QyYmOT09PXIubm9kZVR5cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxtIT09QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVsZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQuZ2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1rLCFDLmdldEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShrKS5sZW5ndGh9KSxkLmdldEJ5SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtdLHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUpe2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitrKyInPjwvYT48c2VsZWN0IGlkPSciK2srIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitrKyItXSIpLmxlbmd0aHx8di5wdXNoKCJ+PSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitrKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpfSksY2UoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVzU2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5jYWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLCQpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxEPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09PUN8fGUub3duZXJEb2N1bWVudD09PW0mJnkobSxlKT8tMTp0PT09Q3x8dC5vd25lckRvY3VtZW50PT09bSYmeShtLHQpPzE6dT9QKHUsZSktUCh1LHQpOjA6NCZuPy0xOjEpfTpmdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBsPSEwLDA7dmFyIG4scj0wLGk9ZS5wYXJlbnROb2RlLG89dC5wYXJlbnROb2RlLGE9W2VdLHM9W3RdO2lmKCFpfHwhbylyZXR1cm4gZT09PUM/LTE6dD09PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09PW0/LTE6c1tyXT09PW0/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGwsbnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoKGUub3duZXJEb2N1bWVudHx8ZSkhPT1DJiZUKGUpLGQubWF0Y2hlc1NlbGVjdG9yJiZFJiYhQVt0KyIgIl0mJighc3x8IXMudGVzdCh0KSkmJighdnx8IXYudGVzdCh0KSkpdHJ5e3ZhciBuPWMuY2FsbChlLHQpO2lmKG58fGQuZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbn1jYXRjaChlKXtBKHQsITApfXJldHVybiAwPHNlKHQsQyxudWxsLFtlXSkubGVuZ3RofSxzZS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9jdW1lbnR8fGUpIT09QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9PUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZqLmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KEQpLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1wW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJnAoZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoRiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtrXXx8KGFba109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09UyYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W1MscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1TJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtTLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW2tdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoQiwiJDEiKSk7cmV0dXJuIHNba10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bUyxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW2tdfHwoZVtrXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PVMmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltrXSYmKHY9Q2UodikpLHkmJiF5W2tdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlba10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoQiwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9TltlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtrXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPU4oZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPVMrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT09Q3x8dHx8aSk7bCE9PWcmJm51bGwhPShvPWRbbF0pO2wrKyl7aWYoeCYmbyl7YT0wLHR8fG8ub3duZXJEb2N1bWVudD09PUN8fChUKG8pLG49IUUpO3doaWxlKHM9dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKFM9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1xLmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihTPWgsdz1wKSxjfSxtP2xlKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0udHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5ndGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMpKShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0U3RhYmxlPWsuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1rLGQuZGV0ZWN0RHVwbGljYXRlcz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtrLmZpbmQ9aCxrLmV4cHI9aC5zZWxlY3RvcnMsay5leHByWyI6Il09ay5leHByLnBzZXVkb3Msay51bmlxdWVTb3J0PWsudW5pcXVlPWgudW5pcXVlU29ydCxrLnRleHQ9aC5nZXRUZXh0LGsuaXNYTUxEb2M9aC5pc1hNTCxrLmNvbnRhaW5zPWguY29udGFpbnMsay5lc2NhcGVTZWxlY3Rvcj1oLmVzY2FwZTt2YXIgVD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmayhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LE49ay5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgRD0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBqKGUsbixyKXtyZXR1cm4gbShuKT9rLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP2suZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/ay5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuLTE8aS5jYWxsKG4sZSkhPT1yfSk6ay5maWx0ZXIobixlLHIpfWsuZmlsdGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP2suZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106ay5maW5kLm1hdGNoZXMoZSxrLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LGsuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhrKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihrLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKWsuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9rLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFqKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZOLnRlc3QoZSk/ayhlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBxLEw9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoay5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8cSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOkwuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2Ygaz90WzBdOnQsay5tZXJnZSh0aGlzLGsucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLEQudGVzdChyWzFdKSYmay5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoayk6ay5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1rLmZuLHE9ayhFKTt2YXIgSD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxPPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIFAoZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfWsuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ayhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihrLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIGUmJmsoZSk7aWYoIU4udGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/ay51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/aS5jYWxsKGsoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhrLnVuaXF1ZVNvcnQoay5tZXJnZSh0aGlzLmdldCgpLGsoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksay5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gUChlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBQKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFQoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBUKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBTKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gUyhlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUuY29udGVudERvY3VtZW50P2UuY29udGVudERvY3VtZW50OihBKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksay5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7ay5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPWsubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49ay5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKE9bcl18fGsudW5pcXVlU29ydChuKSxILnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUj0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gSShlKXt0aHJvdyBlfWZ1bmN0aW9uIFcoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fWsuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LGsuZWFjaChlLm1hdGNoKFIpfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTprLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7ay5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gay5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPWsuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPGsuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0say5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtbIm5vdGlmeSIsInByb2dyZXNzIixrLkNhbGxiYWNrcygibWVtb3J5Iiksay5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKHIpe2suZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwodSxvLE0scyksbCh1LG8sSSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxNLHMpLGwodSxvLEkscyksbCh1LG8sTSxvLm5vdGlmeVdpdGgpKSk6KGEhPT1NJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtrLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJmsuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tUcmFjZSksdTw9aSsxJiYoYSE9PUkmJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KGsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPWsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpNLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKGwoMCxlLG0odCk/dDpNKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOkkpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9rLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBrLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVdO2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxlLG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10uZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxhLnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1rLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZihuPD0xJiYoVyhlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKHQtLSlXKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciAkPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO2suRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25zb2xlLndhcm4mJmUmJiQudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0say5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPWsuRGVmZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLGsucmVhZHkoKX1rLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7ay5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LGsuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1rLnJlYWR5V2FpdDprLmlzUmVhZHkpfHwoay5pc1JlYWR5PSEwKSE9PWUmJjA8LS1rLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtrXSl9fSksay5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQoay5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyIF89ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0hMCxuKV8oZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChrKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LHo9L14tbXMtLyxVPS8tKFthLXpdKS9nO2Z1bmN0aW9uIFgoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIGUucmVwbGFjZSh6LCJtcy0iKS5yZXBsYWNlKFUsWCl9dmFyIEc9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBZKCl7dGhpcy5leHBhbmRvPWsuZXhwYW5kbytZLnVpZCsrfVkudWlkPTEsWS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sRyhlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbVih0KV09bjtlbHNlIGZvcihyIGluIHQpaVtWKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1YodCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFYpOih0PVYodCkpaW4gcj9bdF06dC5tYXRjaChSKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fGsuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIWsuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBRPW5ldyBZLEo9bmV3IFksSz0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLFo9L1tBLVpdL2c7ZnVuY3Rpb24gZWUoZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShaLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Sy50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fUouc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufWsuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBKLmhhc0RhdGEoZSl8fFEuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEouYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0oucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9fSksay5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1KLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVEuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9VihyLnNsaWNlKDUpKSxlZShvLHIsaVtyXSkpO1Euc2V0KG8sImhhc0RhdGFBdHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2Ygbj90aGlzLmVhY2goZnVuY3Rpb24oKXtKLnNldCh0aGlzLG4pfSk6Xyh0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKG8mJnZvaWQgMD09PWUpcmV0dXJuIHZvaWQgMCE9PSh0PUouZ2V0KG8sbikpP3Q6dm9pZCAwIT09KHQ9ZWUobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Si5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0oucmVtb3ZlKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1RLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVEuYWNjZXNzKGUsdCxrLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1rLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPWsuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtrLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gUS5nZXQoZSxuKXx8US5hY2Nlc3MoZSxuLHtlbXB0eTprLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtRLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxrLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/ay5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rLnF1ZXVlKHRoaXMsdCxuKTtrLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJmsuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2suZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTEsaT1rLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1RLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciB0ZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxuZT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrdGUrIikoW2EteiVdKikkIiwiaSIpLHJlPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0saWU9RS5kb2N1bWVudEVsZW1lbnQsb2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxhZT17Y29tcG9zZWQ6ITB9O2llLmdldFJvb3ROb2RlJiYob2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKGFlKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBzZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZvZShlKSYmIm5vbmUiPT09ay5jc3MoZSwiZGlzcGxheSIpfSx1ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGE9e307Zm9yKG8gaW4gdClhW29dPWUuc3R5bGVbb10sZS5zdHlsZVtvXT10W29dO2ZvcihvIGluIGk9bi5hcHBseShlLHJ8fFtdKSx0KWUuc3R5bGVbb109YVtvXTtyZXR1cm4gaX07ZnVuY3Rpb24gbGUoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBrLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChrLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihrLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmbmUuZXhlYyhrLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pay5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLGsuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgY2U9e307ZnVuY3Rpb24gZmUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109US5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmc2UocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT1jZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9ay5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSxjZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsUS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1rLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzZSh0aGlzKT9rKHRoaXMpLnNob3coKTprKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksZ2U9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP2subWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspUS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFEuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2Uub3B0Z3JvdXA9Z2Uub3B0aW9uLGdlLnRib2R5PWdlLnRmb290PWdlLmNvbGdyb3VwPWdlLmNhcHRpb249Z2UudGhlYWQsZ2UudGg9Z2UudGQ7dmFyIG1lLHhlLGJlPS88fCYjP1x3KzsvO2Z1bmN0aW9uIHdlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGEscyx1LGwsYyxmPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHA9W10sZD0wLGg9ZS5sZW5ndGg7ZDxoO2QrKylpZigobz1lW2RdKXx8MD09PW8paWYoIm9iamVjdCI9PT13KG8pKWsubWVyZ2UocCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKGJlLnRlc3Qobykpe2E9YXx8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShkZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLHU9Z2Vbc118fGdlLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0ray5odG1sUHJlZmlsdGVyKG8pK3VbMl0sYz11WzBdO3doaWxlKGMtLSlhPWEubGFzdENoaWxkO2subWVyZ2UocCxhLmNoaWxkTm9kZXMpLChhPWYuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSBwLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7Zi50ZXh0Q29udGVudD0iIixkPTA7d2hpbGUobz1wW2QrK10paWYociYmLTE8ay5pbkFycmF5KG8scikpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD1vZShvKSxhPXZlKGYuYXBwZW5kQ2hpbGQobyksInNjcmlwdCIpLGwmJnllKGEpLG4pe2M9MDt3aGlsZShvPWFbYysrXSloZS50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIGZ9bWU9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKHhlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSx4ZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIikseGUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLG1lLmFwcGVuZENoaWxkKHhlKSx5LmNoZWNrQ2xvbmU9bWUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLG1lLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIW1lLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTt2YXIgVGU9L15rZXkvLENlPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxFZT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24ga2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBTZSgpe3JldHVybiExfWZ1bmN0aW9uIE5lKGUsdCl7cmV0dXJuIGU9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRS5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319KCk9PSgiZm9jdXMiPT09dCl9ZnVuY3Rpb24gQWUoZSx0LG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IocyBpbiJzdHJpbmciIT10eXBlb2YgbiYmKHI9cnx8bixuPXZvaWQgMCksdClBZShlLHMsbixyLHRbc10sbyk7cmV0dXJuIGV9aWYobnVsbD09ciYmbnVsbD09aT8oaT1uLHI9bj12b2lkIDApOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXZvaWQgMCk6KGk9cixyPW4sbj12b2lkIDApKSwhMT09PWkpaT1TZTtlbHNlIGlmKCFpKXJldHVybiBlO3JldHVybiAxPT09byYmKGE9aSwoaT1mdW5jdGlvbihlKXtyZXR1cm4gaygpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPWsuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC5hZGQodGhpcyx0LGkscixuKX0pfWZ1bmN0aW9uIERlKGUsaSxvKXtvPyhRLnNldChlLGksITEpLGsuZXZlbnQuYWRkKGUsaSx7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPVEuZ2V0KHRoaXMsaSk7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tpXSl7aWYoci5sZW5ndGgpKGsuZXZlbnQuc3BlY2lhbFtpXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHI9cy5jYWxsKGFyZ3VtZW50cyksUS5zZXQodGhpcyxpLHIpLHQ9byh0aGlzLGkpLHRoaXNbaV0oKSxyIT09KG49US5nZXQodGhpcyxpKSl8fHQ/US5zZXQodGhpcyxpLCExKTpuPXt9LHIhPT1uKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxuLnZhbHVlfWVsc2Ugci5sZW5ndGgmJihRLnNldCh0aGlzLGkse3ZhbHVlOmsuZXZlbnQudHJpZ2dlcihrLmV4dGVuZChyWzBdLGsuRXZlbnQucHJvdG90eXBlKSxyLnNsaWNlKDEpLHRoaXMpfSksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSkpOnZvaWQgMD09PVEuZ2V0KGUsaSkmJmsuZXZlbnQuYWRkKGUsaSxrZSl9ay5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1RLmdldCh0KTtpZih2KXtuLmhhbmRsZXImJihuPShvPW4pLmhhbmRsZXIsaT1vLnNlbGVjdG9yKSxpJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGllLGkpLG4uZ3VpZHx8KG4uZ3VpZD1rLmd1aWQrKyksKHU9di5ldmVudHMpfHwodT12LmV2ZW50cz17fSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGsmJmsuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP2suZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9RWUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9ay5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmay5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxrLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9US5oYXNEYXRhKGUpJiZRLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9RWUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPWsuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fGsucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KWsuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7ay5pc0VtcHR5T2JqZWN0KHUpJiZRLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1rLmV2ZW50LmZpeChlKSx1PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxsPShRLmdldCh0aGlzLCJldmVudHMiKXx8e30pW3MudHlwZV18fFtdLGM9ay5ldmVudC5zcGVjaWFsW3MudHlwZV18fHt9O2Zvcih1WzBdPXMsdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdVt0XT1hcmd1bWVudHNbdF07aWYocy5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHwhMSE9PWMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLHMpKXthPWsuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHMsbCksdD0wO3doaWxlKChpPWFbdCsrXSkmJiFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3MuY3VycmVudFRhcmdldD1pLmVsZW0sbj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiFzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpcy5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhcy5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwocy5oYW5kbGVPYmo9byxzLmRhdGE9by5kYXRhLHZvaWQgMCE9PShyPSgoay5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSx1KSkmJiExPT09KHMucmVzdWx0PXIpJiYocy5wcmV2ZW50RGVmYXVsdCgpLHMuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNoLmNhbGwodGhpcyxzKSxzLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYmISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0pLnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPGsoaSx0aGlzKS5pbmRleChsKTprLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoay5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Om0oZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW2suZXhwYW5kb10/ZTpuZXcgay5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siLGtlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZRLmdldCh0LCJjbGljayIpfHxBKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxrLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSxrLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygay5FdmVudCkpcmV0dXJuIG5ldyBrLkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09ZS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWUucmV0dXJuVmFsdWU/a2U6U2UsdGhpcy50YXJnZXQ9ZS50YXJnZXQmJjM9PT1lLnRhcmdldC5ub2RlVHlwZT9lLnRhcmdldC5wYXJlbnROb2RlOmUudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1lLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWUucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWUsdCYmay5leHRlbmQodGhpcyx0KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW2suZXhwYW5kb109ITB9LGsuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpTZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9a2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LGsuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmVGUudGVzdChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gmJnZvaWQgMCE9PXQmJkNlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9fSxrLmV2ZW50LmFkZFByb3ApLGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtrLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIERlKHRoaXMsZSxOZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gRGUodGhpcyxlKSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksay5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe2suZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxrLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxrLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEFlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gQWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosayhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49U2UpLHRoaXMuZWFjaChmdW5jdGlvbigpe2suZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGplPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxxZT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxMZT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxIZT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gT2UoZSx0KXtyZXR1cm4gQShlLCJ0YWJsZSIpJiZBKDExIT09dC5ub2RlVHlwZT90OnQuZmlyc3RDaGlsZCwidHIiKSYmayhlKS5jaGlsZHJlbigidGJvZHkiKVswXXx8ZX1mdW5jdGlvbiBQZShlKXtyZXR1cm4gZS50eXBlPShudWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIFJlKGUpe3JldHVybiJ0cnVlLyI9PT0oZS50eXBlfHwiIikuc2xpY2UoMCw1KT9lLnR5cGU9ZS50eXBlLnNsaWNlKDUpOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGw7aWYoMT09PXQubm9kZVR5cGUpe2lmKFEuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1RLnNldCh0LG8pLGw9by5ldmVudHMpKWZvcihpIGluIGRlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fSxsKWZvcihuPTAscj1sW2ldLmxlbmd0aDtuPHI7bisrKWsuZXZlbnQuYWRkKHQsaSxsW2ldW25dKTtKLmhhc0RhdGEoZSkmJihzPUouYWNjZXNzKGUpLHU9ay5leHRlbmQoe30scyksSi5zZXQodCx1KSl9fWZ1bmN0aW9uIEllKG4scixpLG8pe3I9Zy5hcHBseShbXSxyKTt2YXIgZSx0LGEscyx1LGwsYz0wLGY9bi5sZW5ndGgscD1mLTEsZD1yWzBdLGg9bShkKTtpZihofHwxPGYmJiJzdHJpbmciPT10eXBlb2YgZCYmIXkuY2hlY2tDbG9uZSYmTGUudGVzdChkKSlyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4uZXEoZSk7aCYmKHJbMF09ZC5jYWxsKHRoaXMsZSx0Lmh0bWwoKSkpLEllKHQscixpLG8pfSk7aWYoZiYmKHQ9KGU9d2UocixuWzBdLm93bmVyRG9jdW1lbnQsITEsbixvKSkuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9dCksdHx8bykpe2ZvcihzPShhPWsubWFwKHZlKGUsInNjcmlwdCIpLFBlKSkubGVuZ3RoO2M8ZjtjKyspdT1lLGMhPT1wJiYodT1rLmNsb25lKHUsITAsITApLHMmJmsubWVyZ2UoYSx2ZSh1LCJzY3JpcHQiKSkpLGkuY2FsbChuW2NdLHUsYyk7aWYocylmb3IobD1hW2EubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsay5tYXAoYSxSZSksYz0wO2M8cztjKyspdT1hW2NdLGhlLnRlc3QodS50eXBlfHwiIikmJiFRLmFjY2Vzcyh1LCJnbG9iYWxFdmFsIikmJmsuY29udGFpbnMobCx1KSYmKHUuc3JjJiYibW9kdWxlIiE9PSh1LnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP2suX2V2YWxVcmwmJiF1Lm5vTW9kdWxlJiZrLl9ldmFsVXJsKHUuc3JjLHtub25jZTp1Lm5vbmNlfHx1LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0pOmIodS50ZXh0Q29udGVudC5yZXBsYWNlKEhlLCIiKSx1LGwpKX1yZXR1cm4gbn1mdW5jdGlvbiBXZShlLHQsbil7Zm9yKHZhciByLGk9dD9rLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8ay5jbGVhbkRhdGEodmUocikpLHIucGFyZW50Tm9kZSYmKG4mJm9lKHIpJiZ5ZSh2ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1rLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGplLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGM9ZS5jbG9uZU5vZGUoITApLGY9b2UoZSk7aWYoISh5Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxrLmlzWE1MRG9jKGUpKSlmb3IoYT12ZShjKSxyPTAsaT0obz12ZShlKSkubGVuZ3RoO3I8aTtyKyspcz1vW3JdLHU9YVtyXSx2b2lkIDAsImlucHV0Ij09PShsPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJnBlLnRlc3Qocy50eXBlKT91LmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1sJiYidGV4dGFyZWEiIT09bHx8KHUuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZih0KWlmKG4pZm9yKG89b3x8dmUoZSksYT1hfHx2ZShjKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKU1lKG9bcl0sYVtyXSk7ZWxzZSBNZShlLGMpO3JldHVybiAwPChhPXZlKGMsInNjcmlwdCIpKS5sZW5ndGgmJnllKGEsIWYmJnZlKGUsInNjcmlwdCIpKSxjfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWsuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKEcobikpe2lmKHQ9bltRLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IociBpbiB0LmV2ZW50cylpW3JdP2suZXZlbnQucmVtb3ZlKG4scik6ay5yZW1vdmVFdmVudChuLHIsdC5oYW5kbGUpO25bUS5leHBhbmRvXT12b2lkIDB9bltKLmV4cGFuZG9dJiYobltKLmV4cGFuZG9dPXZvaWQgMCl9fX0pLGsuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFdlKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gV2UodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2sudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1lKX0pfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBJZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8T2UodGhpcyxlKS5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdD1PZSh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MDtudWxsIT0oZT10aGlzW3RdKTt0KyspMT09PWUubm9kZVR5cGUmJihrLmNsZWFuRGF0YSh2ZShlLCExKSksZS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGsuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAscj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYhcWUudGVzdChlKSYmIWdlWyhkZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1rLmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxyO24rKykxPT09KHQ9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoay5jbGVhbkRhdGEodmUodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gSWUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2suaW5BcnJheSh0aGlzLG4pPDAmJihrLmNsZWFuRGF0YSh2ZSh0aGlzKSksdCYmdC5yZXBsYWNlQ2hpbGQoZSx0aGlzKSl9LG4pfX0pLGsuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsYSl7ay5mbltlXT1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXSxyPWsoZSksaT1yLmxlbmd0aC0xLG89MDtvPD1pO28rKyl0PW89PT1pP3RoaXM6dGhpcy5jbG9uZSghMCksayhyW29dKVthXSh0KSx1LmFwcGx5KG4sdC5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciAkZT1uZXcgUmVnRXhwKCJeKCIrdGUrIikoPyFweClbYS16JV0rJCIsImkiKSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIHQmJnQub3BlbmVyfHwodD1DKSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LEJlPW5ldyBSZWdFeHAocmUuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gX2UoZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5zdHlsZTtyZXR1cm4obj1ufHxGZShlKSkmJigiIiE9PShhPW4uZ2V0UHJvcGVydHlWYWx1ZSh0KXx8blt0XSl8fG9lKGUpfHwoYT1rLnN0eWxlKGUsdCkpLCF5LnBpeGVsQm94U3R5bGVzKCkmJiRlLnRlc3QoYSkmJkJlLnRlc3QodCkmJihyPXMud2lkdGgsaT1zLm1pbldpZHRoLG89cy5tYXhXaWR0aCxzLm1pbldpZHRoPXMubWF4V2lkdGg9cy53aWR0aD1hLGE9bi53aWR0aCxzLndpZHRoPXIscy5taW5XaWR0aD1pLHMubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIHplKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYodSl7cy5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIix1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLGllLmFwcGVuZENoaWxkKHMpLmFwcGVuZENoaWxkKHUpO3ZhciBlPUMuZ2V0Q29tcHV0ZWRTdHlsZSh1KTtuPSIxJSIhPT1lLnRvcCxhPTEyPT09dChlLm1hcmdpbkxlZnQpLHUuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksdS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KHUub2Zmc2V0V2lkdGgvMyksaWUucmVtb3ZlQ2hpbGQocyksdT1udWxsfX1mdW5jdGlvbiB0KGUpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpfXZhciBuLHIsaSxvLGEscz1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKTt1LnN0eWxlJiYodS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLHUuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix5LmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09dS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxrLmV4dGVuZCh5LHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCkscn0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG99LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG59LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksYX0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX19KSl9KCk7dmFyIFVlPVsiV2Via2l0IiwiTW96IiwibXMiXSxYZT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFZlPXt9O2Z1bmN0aW9uIEdlKGUpe3ZhciB0PWsuY3NzUHJvcHNbZV18fFZlW2VdO3JldHVybiB0fHwoZSBpbiBYZT9lOlZlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49VWUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT1VZVtuXSt0KWluIFhlKXJldHVybiBlfShlKXx8ZSl9dmFyIFllPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxRZT0vXi0tLyxKZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sS2U9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIFplKGUsdCxuKXt2YXIgcj1uZS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIGV0KGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKHUrPWsuY3NzKGUsbityZVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPWsuY3NzKGUsInBhZGRpbmciK3JlW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSkpKToodSs9ay5jc3MoZSwicGFkZGluZyIrcmVbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSk6cys9ay5jc3MoZSwiYm9yZGVyIityZVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHV9ZnVuY3Rpb24gdHQoZSx0LG4pe3ZhciByPUZlKGUpLGk9KCF5LmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLHIpLG89aSxhPV9lKGUsdCxyKSxzPSJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2lmKCRlLnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybigheS5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwiYXV0byI9PT1hfHwhcGFyc2VGbG9hdChhKSYmImlubGluZSI9PT1rLmNzcyhlLCJkaXNwbGF5IiwhMSxyKSkmJmUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihpPSJib3JkZXItYm94Ij09PWsuY3NzKGUsImJveFNpemluZyIsITEsciksKG89cyBpbiBlKSYmKGE9ZVtzXSkpLChhPXBhcnNlRmxvYXQoYSl8fDApK2V0KGUsdCxufHwoaT8iYm9yZGVyIjoiY29udGVudCIpLG8scixhKSsicHgifWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBudC5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfWsuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49X2UoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1WKHQpLHU9UWUudGVzdCh0KSxsPWUuc3R5bGU7aWYodXx8KHQ9R2UocykpLGE9ay5jc3NIb29rc1t0XXx8ay5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09PShvPXR5cGVvZiBuKSYmKGk9bmUuZXhlYyhuKSkmJmlbMV0mJihuPWxlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT1uJiYoIm51bWJlciIhPT1vfHx1fHwobis9aSYmaVszXXx8KGsuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSx5LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ufHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChsW3RdPSJpbmhlcml0IiksYSYmInNldCJpbiBhJiZ2b2lkIDA9PT0obj1hLnNldChlLG4scikpfHwodT9sLnNldFByb3BlcnR5KHQsbik6bFt0XT1uKSl9fSxjc3M6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHM9Vih0KTtyZXR1cm4gUWUudGVzdCh0KXx8KHQ9R2UocykpLChhPWsuY3NzSG9va3NbdF18fGsuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPV9lKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIEtlJiYoaT1LZVt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksay5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHUpe2suY3NzSG9va3NbdV09e2dldDpmdW5jdGlvbihlLHQsbil7aWYodClyZXR1cm4hWWUudGVzdChrLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP3R0KGUsdSxuKTp1ZShlLEplLGZ1bmN0aW9uKCl7cmV0dXJuIHR0KGUsdSxuKX0pfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9RmUoZSksbz0heS5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1pLnBvc2l0aW9uLGE9KG98fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLGkpLHM9bj9ldChlLHUsbixhLGkpOjA7cmV0dXJuIGEmJm8mJihzLT1NYXRoLmNlaWwoZVsib2Zmc2V0Iit1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKV0tcGFyc2VGbG9hdChpW3VdKS1ldChlLHUsImJvcmRlciIsITEsaSktLjUpKSxzJiYocj1uZS5leGVjKHQpKSYmInB4IiE9PShyWzNdfHwicHgiKSYmKGUuc3R5bGVbdV09dCx0PWsuY3NzKGUsdSkpLFplKDAsdCxzKX19fSksay5jc3NIb29rcy5tYXJnaW5MZWZ0PXplKHkucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChfZShlLCJtYXJnaW5MZWZ0IikpfHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdWUoZSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLGsuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGksbyl7ay5jc3NIb29rc1tpK29dPXtleHBhbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj17fSxyPSJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIgIik6W2VdO3Q8NDt0KyspbltpK3JlW3RdK29dPXJbdF18fHJbdC0yXXx8clswXTtyZXR1cm4gbn19LCJtYXJnaW4iIT09aSYmKGsuY3NzSG9va3NbaStvXS5zZXQ9WmUpfSksay5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihlLHQpe3JldHVybiBfKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fSxhPTA7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHI9RmUoZSksaT10Lmxlbmd0aDthPGk7YSsrKW9bdFthXV09ay5jc3MoZSx0W2FdLCExLHIpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP2suc3R5bGUoZSx0LG4pOmsuY3NzKGUsdCl9LGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pLCgoay5Ud2Vlbj1udCkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpudCxpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHxrLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KGsuY3NzTnVtYmVyW25dPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1udC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6bnQucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGUpe3ZhciB0LG49bnQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz10PWsuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpudC5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9bnQucHJvdG90eXBlLChudC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1rLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7ay5meC5zdGVwW2UucHJvcF0/ay5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IWsuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW0dlKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93Omsuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19KS5zY3JvbGxUb3A9bnQucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0say5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxrLmZ4PW50LnByb3RvdHlwZS5pbml0LGsuZnguc3RlcD17fTt2YXIgcnQsaXQsb3QsYXQsc3Q9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHV0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gbHQoKXtpdCYmKCExPT09RS5oaWRkZW4mJkMucmVxdWVzdEFuaW1hdGlvbkZyYW1lP0MucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGx0KTpDLnNldFRpbWVvdXQobHQsay5meC5pbnRlcnZhbCksay5meC50aWNrKCkpfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIEMuc2V0VGltZW91dChmdW5jdGlvbigpe3J0PXZvaWQgMH0pLHJ0PURhdGUubm93KCl9ZnVuY3Rpb24gZnQoZSx0KXt2YXIgbixyPTAsaT17aGVpZ2h0OmV9O2Zvcih0PXQ/MTowO3I8NDtyKz0yLXQpaVsibWFyZ2luIisobj1yZVtyXSldPWlbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIHB0KGUsdCxuKXtmb3IodmFyIHIsaT0oZHQudHdlZW5lcnNbdF18fFtdKS5jb25jYXQoZHQudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpZihyPWlbb10uY2FsbChuLHQsZSkpcmV0dXJuIHJ9ZnVuY3Rpb24gZHQobyxlLHQpe3ZhciBuLGEscj0wLGk9ZHQucHJlZmlsdGVycy5sZW5ndGgscz1rLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihhKXJldHVybiExO2Zvcih2YXIgZT1ydHx8Y3QoKSx0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi1lKSxuPTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLGk9bC50d2VlbnMubGVuZ3RoO3I8aTtyKyspbC50d2VlbnNbcl0ucnVuKG4pO3JldHVybiBzLm5vdGlmeVdpdGgobyxbbCxuLHRdKSxuPDEmJmk/dDooaXx8cy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTpvLHByb3BzOmsuZXh0ZW5kKHt9LGUpLG9wdHM6ay5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmsuZWFzaW5nLl9kZWZhdWx0fSx0KSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6dCxzdGFydFRpbWU6cnR8fGN0KCksZHVyYXRpb246dC5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1rLlR3ZWVuKG8sbC5vcHRzLGUsdCxsLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9sLnR3ZWVucy5sZW5ndGg6MDtpZihhKXJldHVybiB0aGlzO2ZvcihhPSEwO3Q8bjt0KyspbC50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2wsZV0pKTpzLnJlamVjdFdpdGgobyxbbCxlXSksdGhpc319KSxjPWwucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKG4gaW4gZSlpZihpPXRbcj1WKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLChhPWsuY3NzSG9va3Nbcl0pJiYiZXhwYW5kImluIGEpZm9yKG4gaW4gbz1hLmV4cGFuZChvKSxkZWxldGUgZVtyXSxvKW4gaW4gZXx8KGVbbl09b1tuXSx0W25dPWkpO2Vsc2UgdFtyXT1pfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTtyPGk7cisrKWlmKG49ZHQucHJlZmlsdGVyc1tyXS5jYWxsKGwsbyxjLGwub3B0cykpcmV0dXJuIG0obi5zdG9wKSYmKGsuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1ZSkuc3RvcD1uLnN0b3AuYmluZChuKSksbjtyZXR1cm4gay5tYXAoYyxwdCxsKSxtKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKG8sbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksay5meC50aW1lcihrLmV4dGVuZCh1LHtlbGVtOm8sYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfWsuQW5pbWF0aW9uPWsuZXh0ZW5kKGR0LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gbGUobi5lbGVtLGUsbmUuZXhlYyh0KSxuKSxufV19LHR3ZWVuZXI6ZnVuY3Rpb24oZSx0KXttKGUpPyh0PWUsZT1bIioiXSk6ZT1lLm1hdGNoKFIpO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSxkdC50d2VlbmVyc1tuXT1kdC50d2VlbmVyc1tuXXx8W10sZHQudHdlZW5lcnNbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMsZj0id2lkdGgiaW4gdHx8ImhlaWdodCJpbiB0LHA9dGhpcyxkPXt9LGg9ZS5zdHlsZSxnPWUubm9kZVR5cGUmJnNlKGUpLHY9US5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KG51bGw9PShhPWsuX3F1ZXVlSG9va3MoZSwiZngiKSkudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLHAuYWx3YXlzKGZ1bmN0aW9uKCl7cC5hbHdheXMoZnVuY3Rpb24oKXthLnVucXVldWVkLS0say5xdWV1ZShlLCJmeCIpLmxlbmd0aHx8YS5lbXB0eS5maXJlKCl9KX0pKSx0KWlmKGk9dFtyXSxzdC50ZXN0KGkpKXtpZihkZWxldGUgdFtyXSxvPW98fCJ0b2dnbGUiPT09aSxpPT09KGc/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWl8fCF2fHx2b2lkIDA9PT12W3JdKWNvbnRpbnVlO2c9ITB9ZFtyXT12JiZ2W3JdfHxrLnN0eWxlKGUscil9aWYoKHU9IWsuaXNFbXB0eU9iamVjdCh0KSl8fCFrLmlzRW1wdHlPYmplY3QoZCkpZm9yKHIgaW4gZiYmMT09PWUubm9kZVR5cGUmJihuLm92ZXJmbG93PVtoLm92ZXJmbG93LGgub3ZlcmZsb3dYLGgub3ZlcmZsb3dZXSxudWxsPT0obD12JiZ2LmRpc3BsYXkpJiYobD1RLmdldChlLCJkaXNwbGF5IikpLCJub25lIj09PShjPWsuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDooZmUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPWsuY3NzKGUsImRpc3BsYXkiKSxmZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09ay5jc3MoZSwiZmxvYXQiKSYmKHV8fChwLmRvbmUoZnVuY3Rpb24oKXtoLmRpc3BsYXk9bH0pLG51bGw9PWwmJihjPWguZGlzcGxheSxsPSJub25lIj09PWM/IiI6YykpLGguZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cmJihoLm92ZXJmbG93PSJoaWRkZW4iLHAuYWx3YXlzKGZ1bmN0aW9uKCl7aC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGgub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0saC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKSx1PSExLGQpdXx8KHY/ImhpZGRlbiJpbiB2JiYoZz12LmhpZGRlbik6dj1RLmFjY2VzcyhlLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxvJiYodi5oaWRkZW49IWcpLGcmJmZlKFtlXSwhMCkscC5kb25lKGZ1bmN0aW9uKCl7Zm9yKHIgaW4gZ3x8ZmUoW2VdKSxRLnJlbW92ZShlLCJmeHNob3ciKSxkKWsuc3R5bGUoZSxyLGRbcl0pfSkpLHU9cHQoZz92W3JdOjAscixwKSxyIGluIHZ8fCh2W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P2R0LnByZWZpbHRlcnMudW5zaGlmdChlKTpkdC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksay5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5cGVvZiBlP2suZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8bShlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhbSh0KSYmdH07cmV0dXJuIGsuZngub2ZmP3IuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIHIuZHVyYXRpb24mJihyLmR1cmF0aW9uIGluIGsuZnguc3BlZWRzP3IuZHVyYXRpb249ay5meC5zcGVlZHNbci5kdXJhdGlvbl06ci5kdXJhdGlvbj1rLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ci5xdWV1ZSYmITAhPT1yLnF1ZXVlfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXttKHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZrLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0say5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5maWx0ZXIoc2UpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWsuaXNFbXB0eU9iamVjdCh0KSxvPWsuc3BlZWQoZSxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgZT1kdCh0aGlzLGsuZXh0ZW5kKHt9LHQpLG8pOyhpfHxRLmdldCh0aGlzLCJmaW5pc2giKSkmJmUuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fCExPT09by5xdWV1ZT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGksZSxvKXt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG8pfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGkmJihvPWUsZT1pLGk9dm9pZCAwKSxlJiYhMSE9PWkmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPWsudGltZXJzLHI9US5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmdXQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8ay5kZXF1ZXVlKHRoaXMsaSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1RLmdldCh0aGlzKSxuPXRbYSsicXVldWUiXSxyPXRbYSsicXVldWVIb29rcyJdLGk9ay50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLGsucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksay5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHIpe3ZhciBpPWsuZm5bcl07ay5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGZ0KHIsITApLGUsdCxuKX19KSxrLmVhY2goe3NsaWRlRG93bjpmdCgic2hvdyIpLHNsaWRlVXA6ZnQoImhpZGUiKSxzbGlkZVRvZ2dsZTpmdCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHIpe2suZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksay50aW1lcnM9W10say5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLG49ay50aW1lcnM7Zm9yKHJ0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8ay5meC5zdG9wKCkscnQ9dm9pZCAwfSxrLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe2sudGltZXJzLnB1c2goZSksay5meC5zdGFydCgpfSxrLmZ4LmludGVydmFsPTEzLGsuZnguc3RhcnQ9ZnVuY3Rpb24oKXtpdHx8KGl0PSEwLGx0KCkpfSxrLmZ4LnN0b3A9ZnVuY3Rpb24oKXtpdD1udWxsfSxrLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxrLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9ay5meCYmay5meC5zcGVlZHNbcl18fHIsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLHQpe3ZhciBuPUMuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe0MuY2xlYXJUaW1lb3V0KG4pfX0pfSxvdD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYXQ9RS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxvdC50eXBlPSJjaGVja2JveCIseS5jaGVja09uPSIiIT09b3QudmFsdWUseS5vcHRTZWxlY3RlZD1hdC5zZWxlY3RlZCwob3Q9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIsb3QudHlwZT0icmFkaW8iLHkucmFkaW9WYWx1ZT0idCI9PT1vdC52YWx1ZTt2YXIgaHQsZ3Q9ay5leHByLmF0dHJIYW5kbGU7ay5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLGsuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP2sucHJvcChlLHQsbik6KDE9PT1vJiZrLmlzWE1MRG9jKGUpfHwoaT1rLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoay5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9odDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgay5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj1rLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIXkucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJkEoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKFIpO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLGh0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD9rLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxrLmVhY2goay5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgYT1ndFt0XXx8ay5maW5kLmF0dHI7Z3RbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPWd0W29dLGd0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwsZ3Rbb109aSkscn19KTt2YXIgdnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx5dD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24gbXQoZSl7cmV0dXJuKGUubWF0Y2goUil8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24geHQoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goUil8fFtdfWsuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyxrLnByb3AsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2sucHJvcEZpeFtlXXx8ZV19KX19KSxrLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJmsuaXNYTUxEb2MoZSl8fCh0PWsucHJvcEZpeFt0XXx8dCxpPWsucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOnZ0LnRlc3QoZS5ub2RlTmFtZSl8fHl0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLHkub3B0U2VsZWN0ZWR8fChrLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksay5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtrLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksay5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYSxzLHU9MDtpZihtKHQpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS5hZGRDbGFzcyh0LmNhbGwodGhpcyxlLHh0KHRoaXMpKSl9KTtpZigoZT1idCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9eHQobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK210KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXIuaW5kZXhPZigiICIrbysiICIpPDAmJihyKz1vKyIgIik7aSE9PShzPW10KHIpKSYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUseHQodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwiIik7aWYoKGU9YnQodCkpLmxlbmd0aCl3aGlsZShuPXRoaXNbdSsrXSlpZihpPXh0KG4pLHI9MT09PW4ubm9kZVR5cGUmJiIgIittdChpKSsiICIpe2E9MDt3aGlsZShvPWVbYSsrXSl3aGlsZSgtMTxyLmluZGV4T2YoIiAiK28rIiAiKSlyPXIucmVwbGFjZSgiICIrbysiICIsIiAiKTtpIT09KHM9bXQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihpLHQpe3ZhciBvPXR5cGVvZiBpLGE9InN0cmluZyI9PT1vfHxBcnJheS5pc0FycmF5KGkpO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQmJmE/dD90aGlzLmFkZENsYXNzKGkpOnRoaXMucmVtb3ZlQ2xhc3MoaSk6bShpKT90aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS50b2dnbGVDbGFzcyhpLmNhbGwodGhpcyxlLHh0KHRoaXMpLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7aWYoYSl7dD0wLG49ayh0aGlzKSxyPWJ0KGkpO3doaWxlKGU9clt0KytdKW4uaGFzQ2xhc3MoZSk/bi5yZW1vdmVDbGFzcyhlKTpuLmFkZENsYXNzKGUpfWVsc2Ugdm9pZCAwIT09aSYmImJvb2xlYW4iIT09b3x8KChlPXh0KHRoaXMpKSYmUS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsZXx8ITE9PT1pPyIiOlEuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHI9MDt0PSIgIitlKyIgIjt3aGlsZShuPXRoaXNbcisrXSlpZigxPT09bi5ub2RlVHlwZSYmLTE8KCIgIittdCh4dChuKSkrIiAiKS5pbmRleE9mKHQpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciB3dD0vXHIvZztrLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKG4pe3ZhciByLGUsaSx0PXRoaXNbMF07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bShuKSx0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7MT09PXRoaXMubm9kZVR5cGUmJihudWxsPT0odD1pP24uY2FsbCh0aGlzLGUsayh0aGlzKS52YWwoKSk6bik/dD0iIjoibnVtYmVyIj09dHlwZW9mIHQ/dCs9IiI6QXJyYXkuaXNBcnJheSh0KSYmKHQ9ay5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjplKyIifSkpLChyPWsudmFsSG9va3NbdGhpcy50eXBlXXx8ay52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmInNldCJpbiByJiZ2b2lkIDAhPT1yLnNldCh0aGlzLHQsInZhbHVlIil8fCh0aGlzLnZhbHVlPXQpKX0pKTp0PyhyPWsudmFsSG9va3NbdC50eXBlXXx8ay52YWxIb29rc1t0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiByJiZ2b2lkIDAhPT0oZT1yLmdldCh0LCJ2YWx1ZSIpKT9lOiJzdHJpbmciPT10eXBlb2YoZT10LnZhbHVlKT9lLnJlcGxhY2Uod3QsIiIpOm51bGw9PWU/IiI6ZTp2b2lkIDB9fSksay5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxsIT10P3Q6bXQoay50ZXh0KGUpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPWUub3B0aW9ucyxvPWUuc2VsZWN0ZWRJbmRleCxhPSJzZWxlY3Qtb25lIj09PWUudHlwZSxzPWE/bnVsbDpbXSx1PWE/bysxOmkubGVuZ3RoO2ZvcihyPW88MD91OmE/bzowO3I8dTtyKyspaWYoKChuPWlbcl0pLnNlbGVjdGVkfHxyPT09bykmJiFuLmRpc2FibGVkJiYoIW4ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUEobi5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYodD1rKG4pLnZhbCgpLGEpcmV0dXJuIHQ7cy5wdXNoKHQpfXJldHVybiBzfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9ZS5vcHRpb25zLG89ay5tYWtlQXJyYXkodCksYT1pLmxlbmd0aDt3aGlsZShhLS0pKChyPWlbYV0pLnNlbGVjdGVkPS0xPGsuaW5BcnJheShrLnZhbEhvb2tzLm9wdGlvbi5nZXQociksbykpJiYobj0hMCk7cmV0dXJuIG58fChlLnNlbGVjdGVkSW5kZXg9LTEpLG99fX19KSxrLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtrLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBlLmNoZWNrZWQ9LTE8ay5pbkFycmF5KGsoZSkudmFsKCksdCl9fSx5LmNoZWNrT258fChrLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6ZS52YWx1ZX0pfSkseS5mb2N1c2luPSJvbmZvY3VzaW4iaW4gQzt2YXIgVHQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEN0PWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9O2suZXh0ZW5kKGsuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsLGMsZixwPVtufHxFXSxkPXYuY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsaD12LmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihvPWY9YT1uPW58fEUsMyE9PW4ubm9kZVR5cGUmJjghPT1uLm5vZGVUeXBlJiYhVHQudGVzdChkK2suZXZlbnQudHJpZ2dlcmVkKSYmKC0xPGQuaW5kZXhPZigiLiIpJiYoZD0oaD1kLnNwbGl0KCIuIikpLnNoaWZ0KCksaC5zb3J0KCkpLHU9ZC5pbmRleE9mKCI6Iik8MCYmIm9uIitkLChlPWVbay5leHBhbmRvXT9lOm5ldyBrLkV2ZW50KGQsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPXI/MjozLGUubmFtZXNwYWNlPWguam9pbigiLiIpLGUucm5hbWVzcGFjZT1lLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsZS5yZXN1bHQ9dm9pZCAwLGUudGFyZ2V0fHwoZS50YXJnZXQ9biksdD1udWxsPT10P1tlXTprLm1ha2VBcnJheSh0LFtlXSksYz1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LHJ8fCFjLnRyaWdnZXJ8fCExIT09Yy50cmlnZ2VyLmFwcGx5KG4sdCkpKXtpZighciYmIWMubm9CdWJibGUmJiF4KG4pKXtmb3Iocz1jLmRlbGVnYXRlVHlwZXx8ZCxUdC50ZXN0KHMrZCl8fChvPW8ucGFyZW50Tm9kZSk7bztvPW8ucGFyZW50Tm9kZSlwLnB1c2gobyksYT1vO2E9PT0obi5vd25lckRvY3VtZW50fHxFKSYmcC5wdXNoKGEuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93fHxDKX1pPTA7d2hpbGUoKG89cFtpKytdKSYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlmPW8sZS50eXBlPTE8aT9zOmMuYmluZFR5cGV8fGQsKGw9KFEuZ2V0KG8sImV2ZW50cyIpfHx7fSlbZS50eXBlXSYmUS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJkcobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFHKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxrLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsQ3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLEN0KSxrLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWsuZXh0ZW5kKG5ldyBrLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO2suZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksay5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gay5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx5LmZvY3VzaW58fGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtrLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsay5ldmVudC5maXgoZSkpfTtrLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLHQ9US5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxRLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyx0PVEuYWNjZXNzKGUsciktMTt0P1EuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksUS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBFdD1DLmxvY2F0aW9uLGt0PURhdGUubm93KCksU3Q9L1w/LztrLnBhcnNlWE1MPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7dD12b2lkIDB9cmV0dXJuIHQmJiF0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8ay5lcnJvcigiSW52YWxpZCBYTUw6ICIrZSksdH07dmFyIE50PS9cW1xdJC8sQXQ9L1xyP1xuL2csRHQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLGp0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBxdChuLGUscixpKXt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKWsuZWFjaChlLGZ1bmN0aW9uKGUsdCl7cnx8TnQudGVzdChuKT9pKG4sdCk6cXQobisiWyIrKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dD9lOiIiKSsiXSIsdCxyLGkpfSk7ZWxzZSBpZihyfHwib2JqZWN0IiE9PXcoZSkpaShuLGUpO2Vsc2UgZm9yKHQgaW4gZSlxdChuKyJbIit0KyJdIixlW3RdLHIsaSl9ay5wYXJhbT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1mdW5jdGlvbihlLHQpe3ZhciBuPW0odCk/dCgpOnQ7cltyLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj8iIjpuKX07aWYobnVsbD09ZSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIWsuaXNQbGFpbk9iamVjdChlKSlrLmVhY2goZSxmdW5jdGlvbigpe2kodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IobiBpbiBlKXF0KG4sZVtuXSx0LGkpO3JldHVybiByLmpvaW4oIiYiKX0say5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBrLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9ay5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGU/ay5tYWtlQXJyYXkoZSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhayh0aGlzKS5pcygiOmRpc2FibGVkIikmJmp0LnRlc3QodGhpcy5ub2RlTmFtZSkmJiFEdC50ZXN0KGUpJiYodGhpcy5jaGVja2VkfHwhcGUudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1rKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6QXJyYXkuaXNBcnJheShuKT9rLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1ZTplLnJlcGxhY2UoQXQsIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6bi5yZXBsYWNlKEF0LCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIEx0PS8lMjAvZyxIdD0vIy4qJC8sT3Q9LyhbPyZdKV89W14mXSovLFB0PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sUnQ9L14oPzpHRVR8SEVBRCkkLyxNdD0vXlwvXC8vLEl0PXt9LFd0PXt9LCR0PSIqLyIuY29uY2F0KCIqIiksRnQ9RS5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gQnQobyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7InN0cmluZyIhPXR5cGVvZiBlJiYodD1lLGU9IioiKTt2YXIgbixyPTAsaT1lLnRvTG93ZXJDYXNlKCkubWF0Y2goUil8fFtdO2lmKG0odCkpd2hpbGUobj1pW3IrK10pIisiPT09blswXT8obj1uLnNsaWNlKDEpfHwiKiIsKG9bbl09b1tuXXx8W10pLnVuc2hpZnQodCkpOihvW25dPW9bbl18fFtdKS5wdXNoKHQpfX1mdW5jdGlvbiBfdCh0LGksbyxhKXt2YXIgcz17fSx1PXQ9PT1XdDtmdW5jdGlvbiBsKGUpe3ZhciByO3JldHVybiBzW2VdPSEwLGsuZWFjaCh0W2VdfHxbXSxmdW5jdGlvbihlLHQpe3ZhciBuPXQoaSxvLGEpO3JldHVybiJzdHJpbmciIT10eXBlb2Ygbnx8dXx8c1tuXT91PyEocj1uKTp2b2lkIDA6KGkuZGF0YVR5cGVzLnVuc2hpZnQobiksbChuKSwhMSl9KSxyfXJldHVybiBsKGkuZGF0YVR5cGVzWzBdKXx8IXNbIioiXSYmbCgiKiIpfWZ1bmN0aW9uIHp0KGUsdCl7dmFyIG4scixpPWsuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IobiBpbiB0KXZvaWQgMCE9PXRbbl0mJigoaVtuXT9lOnJ8fChyPXt9KSlbbl09dFtuXSk7cmV0dXJuIHImJmsuZXh0ZW5kKCEwLGUsciksZX1GdC5ocmVmPUV0LmhyZWYsay5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOkV0LmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoRXQucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6JHQsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4bWwiOmsucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihlLHQpe3JldHVybiB0P3p0KHp0KGUsay5hamF4U2V0dGluZ3MpLHQpOnp0KGsuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOkJ0KEl0KSxhamF4VHJhbnNwb3J0OkJ0KFd0KSxhamF4OmZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSx0PXR8fHt9O3ZhciBjLGYscCxuLGQscixoLGcsaSxvLHY9ay5hamF4U2V0dXAoe30sdCkseT12LmNvbnRleHR8fHYsbT12LmNvbnRleHQmJih5Lm5vZGVUeXBlfHx5LmpxdWVyeSk/ayh5KTprLmV2ZW50LHg9ay5EZWZlcnJlZCgpLGI9ay5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksdz12LnN0YXR1c0NvZGV8fHt9LGE9e30scz17fSx1PSJjYW5jZWxlZCIsVD17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGgpe2lmKCFuKXtuPXt9O3doaWxlKHQ9UHQuZXhlYyhwKSluW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdPShuW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KHRbMl0pfXQ9bltlLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGg/cDpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWgmJihlPXNbZS50b0xvd2VyQ2FzZSgpXT1zW2UudG9Mb3dlckNhc2UoKV18fGUsYVtlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1oJiYodi5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoaClULmFsd2F5cyhlW1Quc3RhdHVzXSk7ZWxzZSBmb3IodCBpbiBlKXdbdF09W3dbdF0sZVt0XV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHU7cmV0dXJuIGMmJmMuYWJvcnQodCksbCgwLHQpLHRoaXN9fTtpZih4LnByb21pc2UoVCksdi51cmw9KChlfHx2LnVybHx8RXQuaHJlZikrIiIpLnJlcGxhY2UoTXQsRXQucHJvdG9jb2wrIi8vIiksdi50eXBlPXQubWV0aG9kfHx0LnR5cGV8fHYubWV0aG9kfHx2LnR5cGUsdi5kYXRhVHlwZXM9KHYuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChSKXx8WyIiXSxudWxsPT12LmNyb3NzRG9tYWluKXtyPUUuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtyLmhyZWY9di51cmwsci5ocmVmPXIuaHJlZix2LmNyb3NzRG9tYWluPUZ0LnByb3RvY29sKyIvLyIrRnQuaG9zdCE9ci5wcm90b2NvbCsiLy8iK3IuaG9zdH1jYXRjaChlKXt2LmNyb3NzRG9tYWluPSEwfX1pZih2LmRhdGEmJnYucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygdi5kYXRhJiYodi5kYXRhPWsucGFyYW0odi5kYXRhLHYudHJhZGl0aW9uYWwpKSxfdChJdCx2LHQsVCksaClyZXR1cm4gVDtmb3IoaSBpbihnPWsuZXZlbnQmJnYuZ2xvYmFsKSYmMD09ay5hY3RpdmUrKyYmay5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSx2LnR5cGU9di50eXBlLnRvVXBwZXJDYXNlKCksdi5oYXNDb250ZW50PSFSdC50ZXN0KHYudHlwZSksZj12LnVybC5yZXBsYWNlKEh0LCIiKSx2Lmhhc0NvbnRlbnQ/di5kYXRhJiZ2LnByb2Nlc3NEYXRhJiYwPT09KHYuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKHYuZGF0YT12LmRhdGEucmVwbGFjZShMdCwiKyIpKToobz12LnVybC5zbGljZShmLmxlbmd0aCksdi5kYXRhJiYodi5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiB2LmRhdGEpJiYoZis9KFN0LnRlc3QoZik/IiYiOiI/Iikrdi5kYXRhLGRlbGV0ZSB2LmRhdGEpLCExPT09di5jYWNoZSYmKGY9Zi5yZXBsYWNlKE90LCIkMSIpLG89KFN0LnRlc3QoZik/IiYiOiI/IikrIl89IitrdCsrK28pLHYudXJsPWYrbyksdi5pZk1vZGlmaWVkJiYoay5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGsubGFzdE1vZGlmaWVkW2ZdKSxrLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsay5ldGFnW2ZdKSksKHYuZGF0YSYmdi5oYXNDb250ZW50JiYhMSE9PXYuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdi5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHYuZGF0YVR5cGVzWzBdJiZ2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dP3YuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0rKCIqIiE9PXYuZGF0YVR5cGVzWzBdPyIsICIrJHQrIjsgcT0wLjAxIjoiIik6di5hY2NlcHRzWyIqIl0pLHYuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx2LmhlYWRlcnNbaV0pO2lmKHYuYmVmb3JlU2VuZCYmKCExPT09di5iZWZvcmVTZW5kLmNhbGwoeSxULHYpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh2LmNvbXBsZXRlKSxULmRvbmUodi5zdWNjZXNzKSxULmZhaWwodi5lcnJvciksYz1fdChXdCx2LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHZdKSxoKXJldHVybiBUO3YuYXN5bmMmJjA8di50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHYudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHYsVCxuKSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoay5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKGsuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLWsuYWN0aXZlfHxrLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGsuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBrLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxrLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtrW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksay5hamF4KGsuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxrLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxrLl9ldmFsVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7ay5nbG9iYWxFdmFsKGUsdCl9fSl9LGsuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PWsoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtrKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLGsuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hay5leHByLnBzZXVkb3MudmlzaWJsZShlKX0say5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LGsuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIFV0PXswOjIwMCwxMjIzOjIwNH0sWHQ9ay5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhWHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gWHQseS5hamF4PVh0PSEhWHQsay5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHxYdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChVdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksay5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxrLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gay5nbG9iYWxFdmFsKGUpLGV9fX0pLGsuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxrLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1rKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgVnQsR3Q9W10sWXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztrLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9R3QucG9wKCl8fGsuZXhwYW5kbysiXyIra3QrKztyZXR1cm4gdGhpc1tlXT0hMCxlfX0pLGsuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPSExIT09ZS5qc29ucCYmKFl0LnRlc3QoZS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmWXQudGVzdChlLmRhdGEpJiYiZGF0YSIpO2lmKGF8fCJqc29ucCI9PT1lLmRhdGFUeXBlc1swXSlyZXR1cm4gcj1lLmpzb25wQ2FsbGJhY2s9bShlLmpzb25wQ2FsbGJhY2spP2UuanNvbnBDYWxsYmFjaygpOmUuanNvbnBDYWxsYmFjayxhP2VbYV09ZVthXS5yZXBsYWNlKFl0LCIkMSIrcik6ITEhPT1lLmpzb25wJiYoZS51cmwrPShTdC50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmpzb25wKyI9IityKSxlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gb3x8ay5lcnJvcihyKyIgd2FzIG5vdCBjYWxsZWQiKSxvWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsaT1DW3JdLENbcl09ZnVuY3Rpb24oKXtvPWFyZ3VtZW50c30sbi5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1pP2soQykucmVtb3ZlUHJvcChyKTpDW3JdPWksZVtyXSYmKGUuanNvbnBDYWxsYmFjaz10Lmpzb25wQ2FsbGJhY2ssR3QucHVzaChyKSksbyYmbShpKSYmaShvWzBdKSxvPWk9dm9pZCAwfSksInNjcmlwdCJ9KSx5LmNyZWF0ZUhUTUxEb2N1bWVudD0oKFZ0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09VnQuY2hpbGROb2Rlcy5sZW5ndGgpLGsucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/W106KCJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0hMSksdHx8KHkuY3JlYXRlSFRNTERvY3VtZW50Pygocj0odD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZj1FLmxvY2F0aW9uLmhyZWYsdC5oZWFkLmFwcGVuZENoaWxkKHIpKTp0PUUpLG89IW4mJltdLChpPUQuZXhlYyhlKSk/W3QuY3JlYXRlRWxlbWVudChpWzFdKV06KGk9d2UoW2VdLHQsbyksbyYmby5sZW5ndGgmJmsobykucmVtb3ZlKCksay5tZXJnZShbXSxpLmNoaWxkTm9kZXMpKSk7dmFyIHIsaSxvfSxrLmZuLmxvYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPXRoaXMscz1lLmluZGV4T2YoIiAiKTtyZXR1cm4tMTxzJiYocj1tdChlLnNsaWNlKHMpKSxlPWUuc2xpY2UoMCxzKSksbSh0KT8obj10LHQ9dm9pZCAwKTp0JiYib2JqZWN0Ij09dHlwZW9mIHQmJihpPSJQT1NUIiksMDxhLmxlbmd0aCYmay5hamF4KHt1cmw6ZSx0eXBlOml8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOnR9KS5kb25lKGZ1bmN0aW9uKGUpe289YXJndW1lbnRzLGEuaHRtbChyP2soIjxkaXY+IikuYXBwZW5kKGsucGFyc2VIVE1MKGUpKS5maW5kKHIpOmUpfSkuYWx3YXlzKG4mJmZ1bmN0aW9uKGUsdCl7YS5lYWNoKGZ1bmN0aW9uKCl7bi5hcHBseSh0aGlzLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pfSksdGhpc30say5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXtrLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksay5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGsuZ3JlcChrLnRpbWVycyxmdW5jdGlvbihlKXtyZXR1cm4gdD09PWUuZWxlbX0pLmxlbmd0aH0say5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9ay5jc3MoZSwicG9zaXRpb24iKSxjPWsoZSksZj17fTsic3RhdGljIj09PWwmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Yy5vZmZzZXQoKSxvPWsuY3NzKGUsInRvcCIpLHU9ay5jc3MoZSwibGVmdCIpLCgiYWJzb2x1dGUiPT09bHx8ImZpeGVkIj09PWwpJiYtMTwobyt1KS5pbmRleE9mKCJhdXRvIik/KGE9KHI9Yy5wb3NpdGlvbigpKS50b3AsaT1yLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAsaT1wYXJzZUZsb2F0KHUpfHwwKSxtKHQpJiYodD10LmNhbGwoZSxuLGsuZXh0ZW5kKHt9LHMpKSksbnVsbCE9dC50b3AmJihmLnRvcD10LnRvcC1zLnRvcCthKSxudWxsIT10LmxlZnQmJihmLmxlZnQ9dC5sZWZ0LXMubGVmdCtpKSwidXNpbmciaW4gdD90LnVzaW5nLmNhbGwoZSxmKTpjLmNzcyhmKX19LGsuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihlKXtrLm9mZnNldC5zZXRPZmZzZXQodGhpcyx0LGUpfSk7dmFyIGUsbixyPXRoaXNbMF07cmV0dXJuIHI/ci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6ZS50b3Arbi5wYWdlWU9mZnNldCxsZWZ0OmUubGVmdCtuLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09ay5jc3MociwicG9zaXRpb24iKSl0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt0PXRoaXMub2Zmc2V0KCksbj1yLm93bmVyRG9jdW1lbnQsZT1yLm9mZnNldFBhcmVudHx8bi5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmKGU9PT1uLmJvZHl8fGU9PT1uLmRvY3VtZW50RWxlbWVudCkmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJigoaT1rKGUpLm9mZnNldCgpKS50b3ArPWsuY3NzKGUsImJvcmRlclRvcFdpZHRoIiwhMCksaS5sZWZ0Kz1rLmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC1rLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtay5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50O3doaWxlKGUmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxpZX0pfX0pLGsuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbih0LGkpe3ZhciBvPSJwYWdlWU9mZnNldCI9PT1pO2suZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoeChlKT9yPWU6OT09PWUubm9kZVR5cGUmJihyPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PW4pcmV0dXJuIHI/cltpXTplW3RdO3I/ci5zY3JvbGxUbyhvP3IucGFnZVhPZmZzZXQ6bixvP246ci5wYWdlWU9mZnNldCk6ZVt0XT1ufSx0LGUsYXJndW1lbnRzLmxlbmd0aCl9fSksay5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGUsbil7ay5jc3NIb29rc1tuXT16ZSh5LnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0PV9lKGUsbiksJGUudGVzdCh0KT9rKGUpLnBvc2l0aW9uKClbbl0rInB4Ijp0fSl9KSxrLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLHMpe2suZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpzLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24ocixvKXtrLmZuW29dPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGUpLGk9cnx8KCEwPT09ZXx8ITA9PT10PyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4geChlKT8wPT09by5pbmRleE9mKCJvdXRlciIpP2VbImlubmVyIithXTplLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09ZS5ub2RlVHlwZT8ocj1lLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlLmJvZHlbInNjcm9sbCIrYV0sclsic2Nyb2xsIithXSxlLmJvZHlbIm9mZnNldCIrYV0sclsib2Zmc2V0IithXSxyWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09bj9rLmNzcyhlLHQsaSk6ay5zdHlsZShlLHQsbixpKX0scyxuP2U6dm9pZCAwLG4pfX0pfSksay5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7ay5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSksay5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLGsuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX19KSxrLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiByPXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGsuZ3VpZCsrLGl9LGsuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/ay5yZWFkeVdhaXQrKzprLnJlYWR5KCEwKX0say5pc0FycmF5PUFycmF5LmlzQXJyYXksay5wYXJzZUpTT049SlNPTi5wYXJzZSxrLm5vZGVOYW1lPUEsay5pc0Z1bmN0aW9uPW0say5pc1dpbmRvdz14LGsuY2FtZWxDYXNlPVYsay50eXBlPXcsay5ub3c9RGF0ZS5ub3csay5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ay50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4ga30pO3ZhciBRdD1DLmpRdWVyeSxKdD1DLiQ7cmV0dXJuIGsubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09ayYmKEMuJD1KdCksZSYmQy5qUXVlcnk9PT1rJiYoQy5qUXVlcnk9UXQpLGt9LGV8fChDLmpRdWVyeT1DLiQ9ayksa30pOwo="}},"time_used":46,"timings":{"blocked":-1,"dns":2,"connect":9,"send":0,"wait":10,"receive":2,"ssl":23},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.064Z","timestamp":1785159465064,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3285\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3285,"size_decoded":3550,"mime_type":"image/png","magic":"PNG image data, 171 x 38, 8-bit/color RGBA, non-interlaced","md5":"7a91212c1337b31b72feeb79111ecfcf","sha1":"9a6f776c92984f16e0df3ed7bec4162d2a763e9d","sha256":"bc311d929bdfe19c9e731d1dffeca0fa2ed9f9aec6c8442de9618f729500c9a4","sha512":"04f843d21cd9b52f8fcb377e3d2cb2878125a68ef9e66dfbb2ccd150bb175423221d2b6157be72f8dba810840112c4dfe83f7fe38a05ea09dc63392477cf736d","ssdeep":"","tlshash":"c4614c4545772c1b4e308e9c633997baf1da211d0f2d1d905e2b7acedb424683f705b8","first_seen":"2025-08-04T11:51:21.536223Z","last_seen":"2026-07-27T13:38:47.770753Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":51,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":51,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/translate.google.com/translate_a/elementa0d8.js?cb=googleTranslateElementInit","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.441Z","timestamp":1785159465441,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /translate.google.com/translate_a/elementa0d8.js?cb=googleTranslateElementInit HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\ncontent-length: 1251\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1251,"size_decoded":1459,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-08-04T06:18:11.726458Z","times_seen":145690,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":19,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/flaticon.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.775Z","timestamp":1785159464775,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/flaticon.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 624\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2993,"size_decoded":932,"mime_type":"text/css","magic":"ASCII text","md5":"3c70d0acae4f3babefd01a0c939dfc7a","sha1":"79ec0ed60afbb352e5c826ba4a65467e21b4e3f0","sha256":"70ea190aa005c85d257d5c305acefe1160f15f9a6ccd6a37da274cc11a7ecd4b","sha512":"a1f213769f90696324d36e30be0d7d940a4bb3e348adc47e66a291733e5d94a580fdb07a96732c7ebfe1f7aa9c9c6acdc33991220ecf4d4d6c3ae71b566d38f6","ssdeep":"","tlshash":"7f51f8e4817e14804714dec123aee620ff18b0ac9cc68c59d6a27e9df9f1e149392add","first_seen":"2026-02-14T04:59:18.828925Z","last_seen":"2026-07-27T13:38:47.807655Z","times_seen":5,"resource_available":false,"data":"QGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICJmbGF0aWNvbiI7CiAgZm9udC1mYW1pbHk6ICJmbGF0aWNvbiI7CiAgc3JjOiB1cmwoIi4uL2ZvbnRzL2ZsYXRpY29uLmVvdCIpOwogIHNyYzogdXJsKCIuLi9mb250cy9mbGF0aWNvbi5lb3QiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvZmxhdGljb24ud29mZiIpIGZvcm1hdCgid29mZjIiKSwgdXJsKCIuLi9mb250cy9mbGF0aWNvbi53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiLi4vZm9udHMvZmxhdGljb24udHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoIi4uL2ZvbnRzL2ZsYXRpY29uLnN2ZyIpIGZvcm1hdCgic3ZnIik7Cn0KaVtjbGFzc149ZmxhdGljb24tXTpiZWZvcmUsIGlbY2xhc3MqPSIgZmxhdGljb24tIl06YmVmb3JlIHsKICBmb250LWZhbWlseTogZmxhdGljb24gIWltcG9ydGFudDsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtdmFyaWFudDogbm9ybWFsOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxpbmUtaGVpZ2h0OiAxOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCi5mbGF0aWNvbi1waW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDEiOwp9CgouZmxhdGljb24taXBob25lOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTAyIjsKfQoKLmZsYXRpY29uLXBob25lLWNhbGw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDMiOwp9CgouZmxhdGljb24tbWFpbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwNCI7Cn0KCi5mbGF0aWNvbi1lbnZlbG9wZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwNSI7Cn0KCi5mbGF0aWNvbi1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA2IjsKfQoKLmZsYXRpY29uLW5leHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDciOwp9CgouZmxhdGljb24tY2hldnJvbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwOCI7Cn0KCi5mbGF0aWNvbi1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwOSI7Cn0KCi5mbGF0aWNvbi1yaWdodC1hcnJvdzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwYSI7Cn0KCi5mbGF0aWNvbi1hcnJvdy1idXR0b246YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMGIiOwp9CgouZmxhdGljb24tdXNlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwYyI7Cn0KCi5mbGF0aWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTBkIjsKfQoKLmZsYXRpY29uLXNob3BwaW5nLWJhZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwZSI7Cn0KCi5mbGF0aWNvbi1vbmxpbmUtc2hvcHBpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMGYiOwp9CgouZmxhdGljb24tdGltZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExMCI7Cn0KCi5mbGF0aWNvbi1wcm9maXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTEiOwp9CgouZmxhdGljb24tZW1haWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTIiOwp9CgouZmxhdGljb24taW52ZXN0bWVudDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExMyI7Cn0KCi5mbGF0aWNvbi1pbnZlc3RtZW50LTE6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTQiOwp9CgouZmxhdGljb24tcGllLWNoYXJ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE1IjsKfQoKLmZsYXRpY29uLXRhbGs6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTYiOwp9CgouZmxhdGljb24tdHJvcGh5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE3IjsKfQoKLmZsYXRpY29uLWhhcHB5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE4IjsKfQoKLmZsYXRpY29uLWNoaW5hOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE5IjsKfQoKLmZsYXRpY29uLWJ1ZGdldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExYSI7Cn0KCi5mbGF0aWNvbi1yZXBvcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMWIiOwp9CgouZmxhdGljb24tZmluYW5jZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExYyI7Cn0KCi5mbGF0aWNvbi10YXJnZXRlZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExZCI7Cn0KCi5mbGF0aWNvbi10YXJnZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMWUiOwp9CgouZmxhdGljb24tZmluYW5jaWFsLXByb2ZpdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExZiI7Cn0KCi5mbGF0aWNvbi1waWdneS1iYW5rOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTIwIjsKfQoKLmZsYXRpY29uLWdyYXBoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTIxIjsKfQoKLmZsYXRpY29uLWxpZ2h0LWJ1bGI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjIiOwp9CgouZmxhdGljb24tc3RhcnR1cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyMyI7Cn0KCi5mbGF0aWNvbi1saWZlLWluc3VyYW5jZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyNCI7Cn0KCi5mbGF0aWNvbi10cmF2ZWwtaW5zdXJhbmNlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI1IjsKfQoKLmZsYXRpY29uLXByb3RlY3Rpb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjYiOwp9CgouZmxhdGljb24taW5zdXJhbmNlLWFnZW50OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI3IjsKfQoKLmZsYXRpY29uLWhlYWx0aGNhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjgiOwp9CgouZmxhdGljb24tbW90b3JiaWtlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI5IjsKfQoKLmZsYXRpY29uLXNoaXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMmEiOwp9CgouZmxhdGljb24taG91c2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMmIiOwp9CgouZmxhdGljb24taGFuZHNoYWtlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTJjIjsKfQoKLmZsYXRpY29uLXN1aXRjYXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTJkIjsKfS8qIyBzb3VyY2VNYXBwaW5nVVJMPWZsYXRpY29uLmNzcy5tYXAgKi8="}},"time_used":23,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":23,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/scripts.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.028Z","timestamp":1785159465028,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/assets/js/scripts.js?ver=3.0.3 HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 7366\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":37225,"size_decoded":7603,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (346)","md5":"2e8e4ad7ab58fd350b366ce26acaf936","sha1":"cf1e2871884af17e50e719370df0aa60787d8bed","sha256":"64fec12e4c8c10bd955465bf6f3f34f8ca819c1b0c24f4faa3c139e90772e5f4","sha512":"575f1d86868c154217deb7b489129aea3735b4c71cff72c51d56f7110a7e594d9ca916d68f461d37d3b6ec52b02b8d58f8a73a69e2b8a32da6b12d60201434b4","ssdeep":"384:CeNo2DeQwJq49cvy/3XQe3r4FU7DwuuxoWtY/ovZRjRlYFXILvS1wRYwS2I5tOTW:CHJq4b5/6jSaW","tlshash":"a0f21d5974b71076417b342d8bef9409367b11078c0ae9603d9c4b845fc8a2e99fafee","first_seen":"2026-07-27T07:42:30.769753Z","last_seen":"2026-07-27T13:38:47.775511Z","times_seen":3,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKISBmdW5jdGlvbihOaW9BcHAsICQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBOaW9BcHAuUGFja2FnZS5uYW1lID0gIkRhc2hMaXRlIjsKICAgIE5pb0FwcC5QYWNrYWdlLnZlcnNpb24gPSAiMi4zIjsKICAgIHZhciAkd2luID0gJCh3aW5kb3cpLAogICAgICAgICRib2R5ID0gJCgnYm9keScpLAogICAgICAgICRkb2MgPSAkKGRvY3VtZW50KSwKICAgICAgICAvL2NsYXNzIG5hbWVzCiAgICAgICAgX2JvZHlfdGhlbWUgPSAnbmlvLXRoZW1lJywKICAgICAgICBfbWVudSA9ICduay1tZW51JywKICAgICAgICBfbW9iaWxlX25hdiA9ICdtb2JpbGUtbWVudScsCiAgICAgICAgX2hlYWRlciA9ICduay1oZWFkZXInLAogICAgICAgIF9oZWFkZXJfbWVudSA9ICduay1oZWFkZXItbWVudScsCiAgICAgICAgX3NpZGViYXIgPSAnbmstc2lkZWJhcicsCiAgICAgICAgX3NpZGViYXJfbW9iID0gJ25rLXNpZGViYXItbW9iaWxlJywKICAgICAgICBfYXBwX3NpZGViYXIgPSAnbmstYXBwcy1zaWRlYmFyJywKICAgICAgICAvL2JyZWFrcG9pbnRzCiAgICAgICAgX2JyZWFrID0gTmlvQXBwLkJyZWFrOwoKICAgIGZ1bmN0aW9uIGV4dGVuZChvYmosIGV4dCkgewogICAgICAgIE9iamVjdC5rZXlzKGV4dCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICAgICAgb2JqW2tleV0gPSBleHRba2V5XTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gb2JqOwogICAgfSAvLyBDbGFzc0luaXQgQHYxLjAKCgogICAgTmlvQXBwLkNsYXNzQm9keSA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5BZGRJbkJvZHkoX3NpZGViYXIpOwogICAgICAgIE5pb0FwcC5BZGRJbkJvZHkoX2FwcF9zaWRlYmFyKTsKICAgIH07IC8vIENsYXNzSW5pdCBAdjEuMAoKCiAgICBOaW9BcHAuQ2xhc3NOYXZNZW51ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLkJyZWFrQ2xhc3MoJy4nICsgX2hlYWRlcl9tZW51LCBfYnJlYWsubGcsIHsKICAgICAgICAgICAgdGltZU91dDogMAogICAgICAgIH0pOwogICAgICAgIE5pb0FwcC5CcmVha0NsYXNzKCcuJyArIF9zaWRlYmFyLCBfYnJlYWsubGcsIHsKICAgICAgICAgICAgdGltZU91dDogMCwKICAgICAgICAgICAgY2xhc3NBZGQ6IF9zaWRlYmFyX21vYgogICAgICAgIH0pOwogICAgICAgICR3aW4ub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBOaW9BcHAuQnJlYWtDbGFzcygnLicgKyBfaGVhZGVyX21lbnUsIF9icmVhay5sZyk7CiAgICAgICAgICAgIE5pb0FwcC5CcmVha0NsYXNzKCcuJyArIF9zaWRlYmFyLCBfYnJlYWsubGcsIHsKICAgICAgICAgICAgICAgIGNsYXNzQWRkOiBfc2lkZWJhcl9tb2IKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OyAvLyBDb2RlIFByZXR0aWZ5IEB2MS4wCgoKICAgIE5pb0FwcC5QcmV0dGlmeSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHdpbmRvdy5wcmV0dHlQcmludCAmJiBwcmV0dHlQcmludCgpOwogICAgfTsgLy8gQ29waWVkIEB2MS4wCgoKICAgIE5pb0FwcC5Db3BpZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY2xpcCA9ICcuY2xpcGJvYXJkLWluaXQnLAogICAgICAgICAgICB0YXJnZXQgPSAnLmNsaXBib2FyZC10ZXh0JywKICAgICAgICAgICAgc2NsYXNzID0gJ2NsaXBib2FyZC1zdWNjZXNzJywKICAgICAgICAgICAgZWNsYXNzID0gJ2NsaXBib2FyZC1lcnJvcic7IC8vIEZlZWRiYWNrCgogICAgICAgIGZ1bmN0aW9uIGZlZWRiYWNrKGVsLCBzdGF0ZSkgewogICAgICAgICAgICB2YXIgJGVsbSA9ICQoZWwpLAogICAgICAgICAgICAgICAgJGVscCA9ICRlbG0ucGFyZW50KCksCiAgICAgICAgICAgICAgICBjb3B5ID0gewogICAgICAgICAgICAgICAgICAgIHRleHQ6ICdDb3B5JywKICAgICAgICAgICAgICAgICAgICBkb25lOiAnQ29waWVkJywKICAgICAgICAgICAgICAgICAgICBmYWlsOiAnRmFpbGVkJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgdGV4dDogJGVsbS5kYXRhKCdjbGlwLXRleHQnKSwKICAgICAgICAgICAgICAgICAgICBkb25lOiAkZWxtLmRhdGEoJ2NsaXAtc3VjY2VzcycpLAogICAgICAgICAgICAgICAgICAgIGZhaWw6ICRlbG0uZGF0YSgnY2xpcC1lcnJvcicpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBjb3B5LnRleHQgPSBkYXRhLnRleHQgPyBkYXRhLnRleHQgOiBjb3B5LnRleHQ7CiAgICAgICAgICAgIGNvcHkuZG9uZSA9IGRhdGEuZG9uZSA/IGRhdGEuZG9uZSA6IGNvcHkuZG9uZTsKICAgICAgICAgICAgY29weS5mYWlsID0gZGF0YS5mYWlsID8gZGF0YS5mYWlsIDogY29weS5mYWlsOwogICAgICAgICAgICB2YXIgY29weXRleHQgPSBzdGF0ZSA9PT0gJ3N1Y2Nlc3MnID8gY29weS5kb25lIDogY29weS5mYWlsLAogICAgICAgICAgICAgICAgYWRkY2xhc3MgPSBzdGF0ZSA9PT0gJ3N1Y2Nlc3MnID8gc2NsYXNzIDogZWNsYXNzOwogICAgICAgICAgICAkZWxwLmFkZENsYXNzKGFkZGNsYXNzKS5maW5kKHRhcmdldCkuaHRtbChjb3B5dGV4dCk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkZWxwLnJlbW92ZUNsYXNzKHNjbGFzcyArICcgJyArIGVjbGFzcykuZmluZCh0YXJnZXQpLmh0bWwoY29weS50ZXh0KS5ibHVyKCk7CiAgICAgICAgICAgICAgICAkZWxwLmZpbmQoJ2lucHV0JykuYmx1cigpOwogICAgICAgICAgICB9LCAyMDAwKTsKICAgICAgICB9IC8vIEluaXQgQ2xpcGJvYXJkSlMKCgogICAgICAgIGlmIChDbGlwYm9hcmRKUy5pc1N1cHBvcnRlZCgpKSB7CiAgICAgICAgICAgIHZhciBjbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkSlMoY2xpcCk7CiAgICAgICAgICAgIGNsaXBib2FyZC5vbignc3VjY2VzcycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGZlZWRiYWNrKGUudHJpZ2dlciwgJ3N1Y2Nlc3MnKTsKICAgICAgICAgICAgICAgIGUuY2xlYXJTZWxlY3Rpb24oKTsKICAgICAgICAgICAgfSkub24oJ2Vycm9yJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZmVlZGJhY2soZS50cmlnZ2VyLCAnZXJyb3InKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJChjbGlwKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgIH0KCiAgICAgICAgOwogICAgfTsgLy8gQ3VycmVudExpbmsgRGV0ZWN0IEB2MS4wCgoKICAgIE5pb0FwcC5DdXJyZW50TGluayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBfbGluayA9ICcuaGVhZGVyX19saW5rJywKICAgICAgICAgICAgX2N1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZiwKICAgICAgICAgICAgZmlsZU5hbWUgPSBfY3VycmVudFVSTC5zdWJzdHJpbmcoMCwgX2N1cnJlbnRVUkwuaW5kZXhPZigiIyIpID09IC0xID8gX2N1cnJlbnRVUkwubGVuZ3RoIDogX2N1cnJlbnRVUkwuaW5kZXhPZigiIyIpKSwKICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWUuaW5kZXhPZigiPyIpID09IC0xID8gZmlsZU5hbWUubGVuZ3RoIDogZmlsZU5hbWUuaW5kZXhPZigiPyIpKTsKCiAgICAgICAgJChfbGluaykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgX3NlbGZfbGluayA9IHNlbGYuYXR0cignaHJlZicpOwoKICAgICAgICAgICAgaWYgKGZpbGVOYW1lLm1hdGNoKF9zZWxmX2xpbmspKSB7CiAgICAgICAgICAgICAgICBzZWxmLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoJ2FjdGl2ZSAnKS5wYXJlbnRzKCkuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygiYWN0aXZlICIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2VsZi5jbG9zZXN0KCJsaSIpLnJlbW92ZUNsYXNzKCdhY3RpdmUgJykucGFyZW50cygpLmNsb3Nlc3QoImxpOm5vdCguY3VycmVudC1wYWdlKSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsgLy8gUGFzc3dvcmRTd2l0Y2ggQHYxLjAKCgogICAgTmlvQXBwLlBhc3NTd2l0Y2ggPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuUGFzc2NvZGUoJy5wYXNzY29kZS1zd2l0Y2gnKTsKICAgIH07IC8vIFRvYXN0ciBNZXNzYWdlIEB2MS4wIAoKCiAgICBOaW9BcHAuVG9hc3QgPSBmdW5jdGlvbihtc2csIHR0eXBlLCBvcHQpIHsKICAgICAgICB2YXIgdHR5cGUgPSB0dHlwZSA/IHR0eXBlIDogJ2luZm8nLAogICAgICAgICAgICBtc2kgPSAnJywKICAgICAgICAgICAgdGljb24gPSB0dHlwZSA9PT0gJ2luZm8nID8gJ25pIG5pLWluZm8tZmlsbCcgOiB0dHlwZSA9PT0gJ3N1Y2Nlc3MnID8gJ25pIG5pLWNoZWNrLWNpcmNsZS1maWxsJyA6IHR0eXBlID09PSAnZXJyb3InID8gJ25pIG5pLWNyb3NzLWNpcmNsZS1maWxsJyA6IHR0eXBlID09PSAnd2FybmluZycgPyAnbmkgbmktYWxlcnQtZmlsbCcgOiAnJywKICAgICAgICAgICAgZGVmID0gewogICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLAogICAgICAgICAgICAgICAgdWk6ICcnLAogICAgICAgICAgICAgICAgaWNvbjogJ2F1dG8nLAogICAgICAgICAgICAgICAgY2xlYXI6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgIGF0dHIucG9zaXRpb24gPSBhdHRyLnBvc2l0aW9uID8gJ3RvYXN0LScgKyBhdHRyLnBvc2l0aW9uIDogJ3RvYXN0LWJvdHRvbS1yaWdodCc7CiAgICAgICAgYXR0ci5pY29uID0gYXR0ci5pY29uID09PSAnYXV0bycgPyB0aWNvbiA6IGF0dHIuaWNvbiA/IGF0dHIuaWNvbiA6ICcnOwogICAgICAgIGF0dHIudWkgPSBhdHRyLnVpID8gJyAnICsgYXR0ci51aSA6ICcnOwogICAgICAgIG1zaSA9IGF0dHIuaWNvbiAhPT0gJycgPyAnPHNwYW4gY2xhc3M9InRvYXN0ci1pY29uIj48ZW0gY2xhc3M9Imljb24gJyArIGF0dHIuaWNvbiArICciPjwvZW0+PC9zcGFuPicgOiAnJywgbXNnID0gbXNnICE9PSAnJyA/IG1zaSArICc8ZGl2IGNsYXNzPSJ0b2FzdHItdGV4dCI+JyArIG1zZyArICc8L2Rpdj4nIDogJyc7CgogICAgICAgIGlmIChtc2cgIT09ICIiKSB7CiAgICAgICAgICAgIGlmIChhdHRyLmNsZWFyID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICB0b2FzdHIuY2xlYXIoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG9wdGlvbiA9IHsKICAgICAgICAgICAgICAgICJjbG9zZUJ1dHRvbiI6IHRydWUsCiAgICAgICAgICAgICAgICAiZGVidWciOiBmYWxzZSwKICAgICAgICAgICAgICAgICJuZXdlc3RPblRvcCI6IGZhbHNlLAogICAgICAgICAgICAgICAgInByb2dyZXNzQmFyIjogZmFsc2UsCiAgICAgICAgICAgICAgICAicG9zaXRpb25DbGFzcyI6IGF0dHIucG9zaXRpb24gKyBhdHRyLnVpLAogICAgICAgICAgICAgICAgImNsb3NlSHRtbCI6ICc8c3BhbiBjbGFzcz0iYnRuLXRyaWdnZXIiPkNsb3NlPC9zcGFuPicsCiAgICAgICAgICAgICAgICAicHJldmVudER1cGxpY2F0ZXMiOiB0cnVlLAogICAgICAgICAgICAgICAgInNob3dEdXJhdGlvbiI6ICIxNTAwIiwKICAgICAgICAgICAgICAgICJoaWRlRHVyYXRpb24iOiAiMTUwMCIsCiAgICAgICAgICAgICAgICAidGltZU91dCI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ0b2FzdENsYXNzIjogInRvYXN0ciIsCiAgICAgICAgICAgICAgICAiZXh0ZW5kZWRUaW1lT3V0IjogIjMwMDAiCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRvYXN0ci5vcHRpb25zID0gZXh0ZW5kKG9wdGlvbiwgYXR0cik7CiAgICAgICAgICAgIHRvYXN0clt0dHlwZV0obXNnKTsKICAgICAgICB9CiAgICB9OyAvLyBUb2dnbGUgU2NyZWVuIEB2MS4wCgoKICAgIE5pb0FwcC5UR0wuc2NyZWVuID0gZnVuY3Rpb24oZWxtKSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBzc2l6ZSA9ICQodGhpcykuZGF0YSgndG9nZ2xlLXNjcmVlbicpOwoKICAgICAgICAgICAgICAgIGlmIChzc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ3RvZ2dsZS1zY3JlZW4tJyArIHNzaXplKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gVG9nZ2xlIENvbnRlbnQgQHYxLjAKCgogICAgTmlvQXBwLlRHTC5jb250ZW50ID0gZnVuY3Rpb24oZWxtLCBvcHQpIHsKICAgICAgICB2YXIgdG9nZ2xlID0gZWxtID8gZWxtIDogJy50b2dnbGUnLAogICAgICAgICAgICAkdG9nZ2xlID0gJCh0b2dnbGUpLAogICAgICAgICAgICAkY29udGVudEQgPSAkKCdbZGF0YS1jb250ZW50XScpLAogICAgICAgICAgICB0b2dnbGVCcmVhayA9IHRydWUsCiAgICAgICAgICAgIHRvZ2dsZUN1cnJlbnQgPSBmYWxzZSwKICAgICAgICAgICAgZGVmID0gewogICAgICAgICAgICAgICAgYWN0aXZlOiAnYWN0aXZlJywKICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdjb250ZW50LWFjdGl2ZScsCiAgICAgICAgICAgICAgICAiYnJlYWsiOiB0b2dnbGVCcmVhawogICAgICAgICAgICB9LAogICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICBOaW9BcHAuVEdMLnNjcmVlbigkY29udGVudEQpOwogICAgICAgICR0b2dnbGUub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0b2dnbGVDdXJyZW50ID0gdGhpczsKICAgICAgICAgICAgTmlvQXBwLlRvZ2dsZS50cmlnZ2VyKCQodGhpcykuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfSk7CiAgICAgICAgJGRvYy5vbignbW91c2V1cCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHRvZ2dsZUN1cnJlbnQpIHsKICAgICAgICAgICAgICAgIHZhciAkdG9nZ2xlQ3VycmVudCA9ICQodG9nZ2xlQ3VycmVudCksCiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhcmdldCA9ICQodG9nZ2xlQ3VycmVudCkuZGF0YSgndGFyZ2V0JyksCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRDdXJyZW50ID0gJCgiW2RhdGEtY29udGVudD1cIiIuY29uY2F0KGN1cnJlbnRUYXJnZXQsICJcIl0iKSksCiAgICAgICAgICAgICAgICAgICAgJHMyYyA9ICQoJy5zZWxlY3QyLWNvbnRhaW5lcicpLAogICAgICAgICAgICAgICAgICAgICRkcGQgPSAkKCcuZGF0ZXBpY2tlci1kcm9wZG93bicpLAogICAgICAgICAgICAgICAgICAgICR0cGMgPSAkKCcudWktdGltZXBpY2tlci1jb250YWluZXInKTsKCiAgICAgICAgICAgICAgICBpZiAoISR0b2dnbGVDdXJyZW50LmlzKGUudGFyZ2V0KSAmJiAkdG9nZ2xlQ3VycmVudC5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJGNvbnRlbnRDdXJyZW50LmlzKGUudGFyZ2V0KSAmJiAkY29udGVudEN1cnJlbnQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDAgJiYgISRzMmMuaXMoZS50YXJnZXQpICYmICRzMmMuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDAgJiYgISRkcGQuaXMoZS50YXJnZXQpICYmICRkcGQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDAgJiYgISR0cGMuaXMoZS50YXJnZXQpICYmICR0cGMuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBOaW9BcHAuVG9nZ2xlLnJlbW92ZWQoJHRvZ2dsZUN1cnJlbnQuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICAgICAgICAgICAgICAgIHRvZ2dsZUN1cnJlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgICR3aW4ub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkY29udGVudEQuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gJCh0aGlzKS5kYXRhKCdjb250ZW50JyksCiAgICAgICAgICAgICAgICAgICAgc3NpemUgPSAkKHRoaXMpLmRhdGEoJ3RvZ2dsZS1zY3JlZW4nKSwKICAgICAgICAgICAgICAgICAgICB0b2dnbGVCcmVhayA9IF9icmVha1tzc2l6ZV07CgogICAgICAgICAgICAgICAgaWYgKE5pb0FwcC5XaW4ud2lkdGggPiB0b2dnbGVCcmVhaykgewogICAgICAgICAgICAgICAgICAgIE5pb0FwcC5Ub2dnbGUucmVtb3ZlZChjb250ZW50LCBhdHRyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OyAvLyBUb2dnbGVFeHBhbmQgQHYxLjAKCgogICAgTmlvQXBwLlRHTC5leHBhbmQgPSBmdW5jdGlvbihlbG0sIG9wdCkgewogICAgICAgIHZhciB0b2dnbGUgPSBlbG0gPyBlbG0gOiAnLmV4cGFuZCcsCiAgICAgICAgICAgIGRlZiA9IHsKICAgICAgICAgICAgICAgIHRvZ2dsZTogdHJ1ZQogICAgICAgICAgICB9LAogICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICAkKHRvZ2dsZSkub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBOaW9BcHAuVG9nZ2xlLnRyaWdnZXIoJCh0aGlzKS5kYXRhKCd0YXJnZXQnKSwgYXR0cik7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB9KTsKICAgIH07IC8vIERyb3Bkb3duIE1lbnUgQHYxLjAKCgogICAgTmlvQXBwLlRHTC5kZG1lbnUgPSBmdW5jdGlvbihlbG0sIG9wdCkgewogICAgICAgIHZhciBpbWVudSA9IGVsbSA/IGVsbSA6ICcubmstbWVudS10b2dnbGUnLAogICAgICAgICAgICBkZWYgPSB7CiAgICAgICAgICAgICAgICBhY3RpdmU6ICdhY3RpdmUnLAogICAgICAgICAgICAgICAgc2VsZjogJ25rLW1lbnUtdG9nZ2xlJywKICAgICAgICAgICAgICAgIGNoaWxkOiAnbmstbWVudS1zdWInCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICQoaW1lbnUpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKE5pb0FwcC5XaW4ud2lkdGggPCBfYnJlYWsubGcgfHwgJCh0aGlzKS5wYXJlbnRzKCkuaGFzQ2xhc3MoX3NpZGViYXIpKSB7CiAgICAgICAgICAgICAgICBOaW9BcHAuVG9nZ2xlLmRyb3BNZW51KCQodGhpcyksIGF0dHIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfSk7CiAgICB9OyAvLyBTaG93IE1lbnUgQHYxLjAKCgogICAgTmlvQXBwLlRHTC5zaG93bWVudSA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgdmFyIHRvZ2dsZSA9IGVsbSA/IGVsbSA6ICcubmstbmF2LXRvZ2dsZScsCiAgICAgICAgICAgICR0b2dnbGUgPSAkKHRvZ2dsZSksCiAgICAgICAgICAgICRjb250ZW50RCA9ICQoJ1tkYXRhLWNvbnRlbnRdJyksCiAgICAgICAgICAgIHRvZ2dsZUJyZWFrID0gJGNvbnRlbnRELmhhc0NsYXNzKF9oZWFkZXJfbWVudSkgPyBfYnJlYWsubGcgOiBfYnJlYWsueGwsCiAgICAgICAgICAgIHRvZ2dsZU9sYXkgPSBfc2lkZWJhciArICctb3ZlcmxheScsCiAgICAgICAgICAgIHRvZ2dsZUNsb3NlID0gewogICAgICAgICAgICAgICAgcHJvZmlsZTogdHJ1ZSwKICAgICAgICAgICAgICAgIG1lbnU6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlZiA9IHsKICAgICAgICAgICAgICAgIGFjdGl2ZTogJ3RvZ2dsZS1hY3RpdmUnLAogICAgICAgICAgICAgICAgY29udGVudDogX3NpZGViYXIgKyAnLWFjdGl2ZScsCiAgICAgICAgICAgICAgICBib2R5OiAnbmF2LXNob3duJywKICAgICAgICAgICAgICAgIG92ZXJsYXk6IHRvZ2dsZU9sYXksCiAgICAgICAgICAgICAgICAiYnJlYWsiOiB0b2dnbGVCcmVhaywKICAgICAgICAgICAgICAgIGNsb3NlOiB0b2dnbGVDbG9zZQogICAgICAgICAgICB9LAogICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICAkdG9nZ2xlLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgTmlvQXBwLlRvZ2dsZS50cmlnZ2VyKCQodGhpcykuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfSk7CiAgICAgICAgJGRvYy5vbignbW91c2V1cCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKCEkdG9nZ2xlLmlzKGUudGFyZ2V0KSAmJiAkdG9nZ2xlLmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwICYmICEkY29udGVudEQuaXMoZS50YXJnZXQpICYmICRjb250ZW50RC5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiBOaW9BcHAuV2luLndpZHRoIDwgdG9nZ2xlQnJlYWspIHsKICAgICAgICAgICAgICAgIE5pb0FwcC5Ub2dnbGUucmVtb3ZlZCgkdG9nZ2xlLmRhdGEoJ3RhcmdldCcpLCBhdHRyKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgICR3aW4ub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoTmlvQXBwLldpbi53aWR0aCA8IF9icmVhay54bCB8fCBOaW9BcHAuV2luLndpZHRoIDwgdG9nZ2xlQnJlYWspIHsKICAgICAgICAgICAgICAgIE5pb0FwcC5Ub2dnbGUucmVtb3ZlZCgkdG9nZ2xlLmRhdGEoJ3RhcmdldCcpLCBhdHRyKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsgLy8gQW5pbWF0ZSBGb3JtU2VhcmNoIEB2MS4wCgoKICAgIE5pb0FwcC5BbmkuZm9ybVNlYXJjaCA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgdmFyIGRlZiA9IHsKICAgICAgICAgICAgICAgIGFjdGl2ZTogJ2FjdGl2ZScsCiAgICAgICAgICAgICAgICB0aW1lb3V0OiA0MDAsCiAgICAgICAgICAgICAgICB0YXJnZXQ6ICdbZGF0YS1zZWFyY2hdJwogICAgICAgICAgICB9LAogICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICB2YXIgJGVsZW0gPSAkKGVsbSksCiAgICAgICAgICAgICR0YXJnZXQgPSAkKGF0dHIudGFyZ2V0KTsKCiAgICAgICAgaWYgKCRlbGVtLmV4aXN0cygpKSB7CiAgICAgICAgICAgICRlbGVtLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgdGhlX3RhcmdldCA9ICRzZWxmLmRhdGEoJ3RhcmdldCcpLAogICAgICAgICAgICAgICAgICAgICRzZWxmX3N0ID0gJCgnW2RhdGEtc2VhcmNoPScgKyB0aGVfdGFyZ2V0ICsgJ10nKSwKICAgICAgICAgICAgICAgICAgICAkc2VsZl90ZyA9ICQoJ1tkYXRhLXRhcmdldD0nICsgdGhlX3RhcmdldCArICddJyk7CgogICAgICAgICAgICAgICAgaWYgKCEkc2VsZl9zdC5oYXNDbGFzcyhhdHRyLmFjdGl2ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZl90Zy5hZGQoJHNlbGZfc3QpLmFkZENsYXNzKGF0dHIuYWN0aXZlKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZl9zdC5maW5kKCdpbnB1dCcpLmZvY3VzKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzZWxmX3RnLmFkZCgkc2VsZl9zdCkucmVtb3ZlQ2xhc3MoYXR0ci5hY3RpdmUpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmX3N0LmZpbmQoJ2lucHV0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICB9LCBhdHRyLnRpbWVvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJGRvYy5vbih7CiAgICAgICAgICAgICAgICBrZXl1cDogZnVuY3Rpb24ga2V5dXAoZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gIkVzY2FwZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW0uYWRkKCR0YXJnZXQpLnJlbW92ZUNsYXNzKGF0dHIuYWN0aXZlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW91c2V1cDogZnVuY3Rpb24gbW91c2V1cChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGFyZ2V0LmZpbmQoJ2lucHV0JykudmFsKCkgJiYgISR0YXJnZXQuaXMoZS50YXJnZXQpICYmICR0YXJnZXQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDAgJiYgISRlbGVtLmlzKGUudGFyZ2V0KSAmJiAkZWxlbS5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbS5hZGQoJHRhcmdldCkucmVtb3ZlQ2xhc3MoYXR0ci5hY3RpdmUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gQW5pbWF0ZSBGb3JtRWxlbWVudCBAdjEuMAoKCiAgICBOaW9BcHAuQW5pLmZvcm1FbG0gPSBmdW5jdGlvbihlbG0sIG9wdCkgewogICAgICAgIHZhciBkZWYgPSB7CiAgICAgICAgICAgICAgICBmb2N1czogJ2ZvY3VzZWQnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwoKICAgICAgICBpZiAoJChlbG0pLmV4aXN0cygpKSB7CiAgICAgICAgICAgICQoZWxtKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzKTsKCiAgICAgICAgICAgICAgICBpZiAoJHNlbGYudmFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZi5wYXJlbnQoKS5hZGRDbGFzcyhhdHRyLmZvY3VzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkc2VsZi5vbih7CiAgICAgICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5wYXJlbnQoKS5hZGRDbGFzcyhhdHRyLmZvY3VzKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNlbGYudmFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLnBhcmVudCgpLnJlbW92ZUNsYXNzKGF0dHIuZm9jdXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07IC8vIEZvcm0gVmFsaWRhdGUgQHYxLjAKCgogICAgTmlvQXBwLlZhbGlkYXRlID0gZnVuY3Rpb24oZWxtLCBvcHQpIHsKICAgICAgICBpZiAoJChlbG0pLmV4aXN0cygpKSB7CiAgICAgICAgICAgICQoZWxtKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGRlZiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICAgICAgICAgJCh0aGlzKS52YWxpZGF0ZShhdHRyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIE5pb0FwcC5WYWxpZGF0ZS5PbkNoYW5nZSgnLmpzLXNlbGVjdDInKTsKICAgICAgICAgICAgTmlvQXBwLlZhbGlkYXRlLk9uQ2hhbmdlKCcuZGF0ZS1waWNrZXInKTsKICAgICAgICAgICAgTmlvQXBwLlZhbGlkYXRlLk9uQ2hhbmdlKCcuanMtdGFnaWZ5Jyk7CiAgICAgICAgfQogICAgfTsgLy9PbiBjaGFuZ2UgdmFsaWRhdGlvbiBmb3IgdGhpcmQgcGFydHkgcGx1Z2lucwoKCiAgICBOaW9BcHAuVmFsaWRhdGUuT25DaGFuZ2UgPSBmdW5jdGlvbihlbG0pIHsKICAgICAgICAkKGVsbSkub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLnZhbGlkKCk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIE5pb0FwcC5WYWxpZGF0ZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLlZhbGlkYXRlKCcuZm9ybS12YWxpZGF0ZScsIHsKICAgICAgICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIsCiAgICAgICAgICAgIGVycm9yQ2xhc3M6ICJpbnZhbGlkIiwKICAgICAgICAgICAgZXJyb3JQbGFjZW1lbnQ6IGZ1bmN0aW9uIGVycm9yUGxhY2VtZW50KGVycm9yLCBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnRzKCkuaGFzQ2xhc3MoJ2lucHV0LWdyb3VwJykpIHsKICAgICAgICAgICAgICAgICAgICBlcnJvci5hcHBlbmRUbyhlbGVtZW50LnBhcmVudCgpLnBhcmVudCgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYXBwZW5kVG8oZWxlbWVudC5wYXJlbnQoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07IC8vIERyb3B6b25lIEB2MS4xCgoKICAgIE5pb0FwcC5Ecm9wem9uZSA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBtYXhGaWxlcyA9ICQoZWxtKS5kYXRhKCdtYXgtZmlsZXMnKSwKICAgICAgICAgICAgICAgICAgICBtYXhGaWxlcyA9IG1heEZpbGVzID8gbWF4RmlsZXMgOiBudWxsOwogICAgICAgICAgICAgICAgdmFyIG1heEZpbGVTaXplID0gJChlbG0pLmRhdGEoJ21heC1maWxlLXNpemUnKSwKICAgICAgICAgICAgICAgICAgICBtYXhGaWxlU2l6ZSA9IG1heEZpbGVTaXplID8gbWF4RmlsZVNpemUgOiAyNTY7CiAgICAgICAgICAgICAgICB2YXIgYWNjZXB0ZWRGaWxlcyA9ICQoZWxtKS5kYXRhKCdhY2NlcHRlZC1maWxlcycpLAogICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkRmlsZXMgPSBhY2NlcHRlZEZpbGVzID8gYWNjZXB0ZWRGaWxlcyA6IG51bGw7CiAgICAgICAgICAgICAgICB2YXIgZGVmID0gewogICAgICAgICAgICAgICAgICAgICAgICBhdXRvRGlzY292ZXI6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhGaWxlczogbWF4RmlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heEZpbGVzaXplOiBtYXhGaWxlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRGaWxlczogYWNjZXB0ZWRGaWxlcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdkcm9wem9uZScpLmRyb3B6b25lKGF0dHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OyAvLyBEcm9wem9uZSBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5Ecm9wem9uZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLkRyb3B6b25lKCcudXBsb2FkLXpvbmUnLCB7CiAgICAgICAgICAgIHVybDogIi9pbWFnZXMiCiAgICAgICAgfSk7CiAgICB9OyAvLyBXaXphcmQgQHYxLjAKCgogICAgTmlvQXBwLldpemFyZCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciAkd2l6YXJkID0gJCgiLm5rLXdpemFyZCIpOwoKICAgICAgICBpZiAoJHdpemFyZC5leGlzdHMoKSkgewogICAgICAgICAgICAkd2l6YXJkLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIF9zZWxmX2lkID0gJHNlbGYuYXR0cignaWQnKSwKICAgICAgICAgICAgICAgICAgICAkc2VsZl9pZCA9ICQoJyMnICsgX3NlbGZfaWQpLnNob3coKTsKCiAgICAgICAgICAgICAgICAkc2VsZl9pZC5zdGVwcyh7CiAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnOiAiLm5rLXdpemFyZC1oZWFkIiwKICAgICAgICAgICAgICAgICAgICBib2R5VGFnOiAiLm5rLXdpemFyZC1jb250ZW50IiwKICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoOiAiU3VibWl0IiwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogIk5leHQiLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91czogIlByZXYiLAogICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiAiTG9hZGluZyAuLi4iCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aXRsZVRlbXBsYXRlOiAnPHNwYW4gY2xhc3M9Im51bWJlciI+MCNpbmRleCM8L3NwYW4+ICN0aXRsZSMnLAogICAgICAgICAgICAgICAgICAgIG9uU3RlcENoYW5naW5nOiBmdW5jdGlvbiBvblN0ZXBDaGFuZ2luZyhldmVudCwgY3VycmVudEluZGV4LCBuZXdJbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGx3YXlzIGFsbG93IHByZXZpb3VzIGFjdGlvbiBldmVuIGlmIHRoZSBjdXJyZW50IGZvcm0gaXMgbm90IHZhbGlkIQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gbmV3SW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IC8vIE5lZWRlZCBpbiBzb21lIGNhc2VzIGlmIHRoZSB1c2VyIHdlbnQgYmFjayAoY2xlYW4gdXApCgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IG5ld0luZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUbyByZW1vdmUgZXJyb3Igc3R5bGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZl9pZC5maW5kKCIuYm9keTplcSgiICsgbmV3SW5kZXggKyAiKSBsYWJlbC5lcnJvciIpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGZfaWQuZmluZCgiLmJvZHk6ZXEoIiArIG5ld0luZGV4ICsgIikgLmVycm9yIikucmVtb3ZlQ2xhc3MoImVycm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmX2lkLnZhbGlkYXRlKCkuc2V0dGluZ3MuaWdub3JlID0gIjpkaXNhYmxlZCw6aGlkZGVuIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzZWxmX2lkLnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaGluZzogZnVuY3Rpb24gb25GaW5pc2hpbmcoZXZlbnQsIGN1cnJlbnRJbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZl9pZC52YWxpZGF0ZSgpLnNldHRpbmdzLmlnbm9yZSA9ICI6ZGlzYWJsZWQiOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGZfaWQudmFsaWQoKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRmluaXNoZWQ6IGZ1bmN0aW9uIG9uRmluaXNoZWQoZXZlbnQsIGN1cnJlbnRJbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIjIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KS52YWxpZGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JDbGFzczogImludmFsaWQiLAogICAgICAgICAgICAgICAgICAgIGVycm9yUGxhY2VtZW50OiBmdW5jdGlvbiBlcnJvclBsYWNlbWVudChlcnJvciwgZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5hcHBlbmRUbyhlbGVtZW50LnBhcmVudCgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gRGF0YVRhYmxlIEAxLjEKCgogICAgTmlvQXBwLkRhdGFUYWJsZSA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhdXRvX3Jlc3BvbnNpdmUgPSAkKHRoaXMpLmRhdGEoJ2F1dG8tcmVzcG9uc2l2ZScpLAogICAgICAgICAgICAgICAgICAgIGhhc19leHBvcnQgPSB0eXBlb2Ygb3B0LmJ1dHRvbnMgIT09ICd1bmRlZmluZWQnICYmIG9wdC5idXR0b25zID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICAgICAgdmFyIGV4cG9ydF90aXRsZSA9ICQodGhpcykuZGF0YSgnZXhwb3J0LXRpdGxlJykgPyAkKHRoaXMpLmRhdGEoJ2V4cG9ydC10aXRsZScpIDogJ0V4cG9ydCc7CiAgICAgICAgICAgICAgICB2YXIgYnRuID0gaGFzX2V4cG9ydCA/ICc8ImR0LWV4cG9ydC1idXR0b25zIGQtZmxleCBhbGlnbi1jZW50ZXIiPCJkdC1leHBvcnQtdGl0bGUgZC1ub25lIGQtbWQtaW5saW5lLWJsb2NrIj5CPicgOiAnJywKICAgICAgICAgICAgICAgICAgICBidG5fY2xzID0gaGFzX2V4cG9ydCA/ICcgd2l0aC1leHBvcnQnIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgZG9tX25vcm1hbCA9ICc8InJvdyBqdXN0aWZ5LWJldHdlZW4gZy0yJyArIGJ0bl9jbHMgKyAnIjwiY29sLTcgY29sLXNtLTQgdGV4dC1zdGFydCJmPjwiY29sLTUgY29sLXNtLTggdGV4dC1lbmQiPCJkYXRhdGFibGUtZmlsdGVyIjwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZy0yIicgKyBidG4gKyAnbD4+Pj48ImRhdGF0YWJsZS13cmFwIG15LTMidD48InJvdyBhbGlnbi1pdGVtcy1jZW50ZXIiPCJjb2wtNyBjb2wtc20tMTIgY29sLW1kLTkicD48ImNvbC01IGNvbC1zbS0xMiBjb2wtbWQtMyB0ZXh0LXN0YXJ0IHRleHQtbWQtZW5kImk+Pic7CiAgICAgICAgICAgICAgICB2YXIgZG9tX3NlcGFyYXRlID0gJzwicm93IGp1c3RpZnktYmV0d2VlbiBnLTInICsgYnRuX2NscyArICciPCJjb2wtNyBjb2wtc20tNCB0ZXh0LXN0YXJ0ImY+PCJjb2wtNSBjb2wtc20tOCB0ZXh0LWVuZCI8ImRhdGF0YWJsZS1maWx0ZXIiPCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBnLTIiJyArIGJ0biArICdsPj4+PjwibXktMyJ0Pjwicm93IGFsaWduLWl0ZW1zLWNlbnRlciI8ImNvbC03IGNvbC1zbS0xMiBjb2wtbWQtOSJwPjwiY29sLTUgY29sLXNtLTEyIGNvbC1tZC0zIHRleHQtc3RhcnQgdGV4dC1tZC1lbmQiaT4+JzsKICAgICAgICAgICAgICAgIHZhciBkb20gPSAkKHRoaXMpLmhhc0NsYXNzKCdpcy1zZXBhcmF0ZScpID8gZG9tX3NlcGFyYXRlIDogZG9tX25vcm1hbDsKICAgICAgICAgICAgICAgIHZhciBkZWYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9XaWR0aDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbTogZG9tLAogICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAiVHlwZSBpbiB0byBTZWFyY2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoTWVudTogIjxzcGFuIGNsYXNzPSdkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2snPlNob3c8L3NwYW4+PGRpdiBjbGFzcz0nZm9ybS1jb250cm9sLXNlbGVjdCc+IF9NRU5VXyA8L2Rpdj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbzogIl9TVEFSVF8gLV9FTkRfIG9mIF9UT1RBTF8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0VtcHR5OiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvRmlsdGVyZWQ6ICIoIFRvdGFsIF9NQVhfICApIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IjogIkZpcnN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFzdCI6ICJMYXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV4dCI6ICJOZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJldmlvdXMiOiAiUHJldiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgICAgICAgICBhdHRyID0gYXV0b19yZXNwb25zaXZlID09PSBmYWxzZSA/IGV4dGVuZChhdHRyLCB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogZmFsc2UKICAgICAgICAgICAgICAgIH0pIDogYXR0cjsKICAgICAgICAgICAgICAgICQodGhpcykuRGF0YVRhYmxlKGF0dHIpOwogICAgICAgICAgICAgICAgJCgnLmR0LWV4cG9ydC10aXRsZScpLnRleHQoZXhwb3J0X3RpdGxlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gRGF0YVRhYmxlIEluaXQgQHYxLjAKCgogICAgTmlvQXBwLkRhdGFUYWJsZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLkRhdGFUYWJsZSgnLmRhdGF0YWJsZS1pbml0JywgewogICAgICAgICAgICByZXNwb25zaXZlOiB7CiAgICAgICAgICAgICAgICBkZXRhaWxzOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBOaW9BcHAuRGF0YVRhYmxlKCcuZGF0YXRhYmxlLWluaXQtZXhwb3J0JywgewogICAgICAgICAgICByZXNwb25zaXZlOiB7CiAgICAgICAgICAgICAgICBkZXRhaWxzOiB0cnVlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJ1dHRvbnM6IFsnY29weScsICdleGNlbCcsICdjc3YnLCAncGRmJ10KICAgICAgICB9KTsKICAgICAgICAkLmZuLkRhdGFUYWJsZS5leHQucGFnZXIubnVtYmVyc19sZW5ndGggPSA3OwogICAgfTsgLy8gQm9vdFN0cmFwIEV4dGVuZGVkCgoKICAgIE5pb0FwcC5CUy5kZGZpeCA9IGZ1bmN0aW9uKGVsbSwgZXhjKSB7CiAgICAgICAgdmFyIGRkID0gZWxtID8gZWxtIDogJy5kcm9wZG93bi1tZW51JywKICAgICAgICAgICAgZXggPSBleGMgPyBleGMgOiAnYTpub3QoLmNsaWNrYWJsZSksIGJ1dHRvbjpub3QoLmNsaWNrYWJsZSksIGE6bm90KC5jbGlja2FibGUpICosIGJ1dHRvbjpub3QoLmNsaWNrYWJsZSkgKic7CiAgICAgICAgJChkZCkub24oJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoISQoZS50YXJnZXQpLmlzKGV4KSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBpZiAoTmlvQXBwLlN0YXRlLmlzUlRMKSB7CiAgICAgICAgICAgIHZhciAkZE1lbnUgPSAkKCcuZHJvcGRvd24tbWVudScpOwogICAgICAgICAgICAkZE1lbnUuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyk7CgogICAgICAgICAgICAgICAgaWYgKCRzZWxmLmhhc0NsYXNzKCdkcm9wZG93bi1tZW51LWVuZCcpICYmICEkc2VsZi5oYXNDbGFzcygnZHJvcGRvd24tbWVudS1jZW50ZXInKSkgewogICAgICAgICAgICAgICAgICAgICRzZWxmLnByZXYoJ1tkYXRhLWJzLXRvZ2dsZT0iZHJvcGRvd24iXScpLmRyb3Bkb3duKHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyQ29uZmlnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISRzZWxmLmhhc0NsYXNzKCdkcm9wZG93bi1tZW51LWVuZCcpICYmICEkc2VsZi5oYXNDbGFzcygnZHJvcGRvd24tbWVudS1jZW50ZXInKSkgewogICAgICAgICAgICAgICAgICAgICRzZWxmLnByZXYoJ1tkYXRhLWJzLXRvZ2dsZT0iZHJvcGRvd24iXScpLmRyb3Bkb3duKHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyQ29uZmlnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07IC8vIEJvb3RTdHJhcCBTcGVjaWZpYyBUYWIgT3BlbgoKCiAgICBOaW9BcHAuQlMudGFiZml4ID0gZnVuY3Rpb24oZWxtKSB7CiAgICAgICAgdmFyIHRhYiA9IGVsbSA/IGVsbSA6ICdbZGF0YS1icy10b2dnbGU9Im1vZGFsIl0nOwogICAgICAgICQodGFiKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIF90aGlzID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIHRhcmdldCA9IF90aGlzLmRhdGEoJ3RhcmdldCcpLAogICAgICAgICAgICAgICAgdGFyZ2V0X2hyZWYgPSBfdGhpcy5hdHRyKCdocmVmJyksCiAgICAgICAgICAgICAgICB0Z190YWIgPSBfdGhpcy5kYXRhKCd0YWItdGFyZ2V0Jyk7CgogICAgICAgICAgICB2YXIgbW9kYWwgPSB0YXJnZXQgPyAkYm9keS5maW5kKHRhcmdldCkgOiAkYm9keS5maW5kKHRhcmdldF9ocmVmKTsKCiAgICAgICAgICAgIGlmICh0Z190YWIgJiYgdGdfdGFiICE9PSAnIycgJiYgbW9kYWwpIHsKICAgICAgICAgICAgICAgIG1vZGFsLmZpbmQoJ1tocmVmPSInICsgdGdfdGFiICsgJyJdJykudGFiKCdzaG93Jyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kYWwpIHsKICAgICAgICAgICAgICAgIHZhciB0YWJkZWYgPSBtb2RhbC5maW5kKCcubmstbmF2Lm5hdi10YWJzJyk7CiAgICAgICAgICAgICAgICB2YXIgbGluayA9ICQodGFiZGVmWzBdKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJyk7CiAgICAgICAgICAgICAgICAkKGxpbmtbMF0pLnRhYignc2hvdycpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OyAvLyBEYXJrIE1vZGUgU3dpdGNoIEBzaW5jZSB2Mi4wCgoKICAgIE5pb0FwcC5Nb2RlU3dpdGNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRvZ2dsZSA9ICQoJy5kYXJrLXN3aXRjaCcpOwoKICAgICAgICBpZiAoJGJvZHkuaGFzQ2xhc3MoJ2RhcmstbW9kZScpKSB7CiAgICAgICAgICAgIHRvZ2dsZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdG9nZ2xlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgICB9CgogICAgICAgIHRvZ2dsZS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICRib2R5LnRvZ2dsZUNsYXNzKCdkYXJrLW1vZGUnKTsKICAgICAgICB9KTsKICAgIH07IC8vIEtub2IgQHYxLjAKCgogICAgTmlvQXBwLktub2IgPSBmdW5jdGlvbihlbG0sIG9wdCkgewogICAgICAgIGlmICgkKGVsbSkuZXhpc3RzKCkgJiYgdHlwZW9mICQuZm4ua25vYiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICB2YXIgZGVmID0gewogICAgICAgICAgICAgICAgICAgIG1pbjogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykua25vYihhdHRyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gS25vYiBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5Lbm9iLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIga25vYiA9IHsKICAgICAgICAgICAgImRlZmF1bHQiOiB7CiAgICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSwKICAgICAgICAgICAgICAgIGxpbmVDYXA6ICJyb3VuZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFsZjogewogICAgICAgICAgICAgICAgYW5nbGVPZmZzZXQ6IC05MCwKICAgICAgICAgICAgICAgIGFuZ2xlQXJjOiAxODAsCiAgICAgICAgICAgICAgICByZWFkT25seTogdHJ1ZSwKICAgICAgICAgICAgICAgIGxpbmVDYXA6ICJyb3VuZCIKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgTmlvQXBwLktub2IoJy5rbm9iJywga25vYlsiZGVmYXVsdCJdKTsKICAgICAgICBOaW9BcHAuS25vYignLmtub2ItaGFsZicsIGtub2IuaGFsZik7CiAgICB9OyAvLyBSYW5nZSBAdjEuMC4xCgoKICAgIE5pb0FwcC5SYW5nZSA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSAmJiB0eXBlb2Ygbm9VaVNsaWRlciAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJChlbG0pLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIHNlbGZfaWQgPSAkc2VsZi5hdHRyKCdpZCcpOwoKICAgICAgICAgICAgICAgIHZhciBfc3RhcnQgPSAkc2VsZi5kYXRhKCdzdGFydCcpLAogICAgICAgICAgICAgICAgICAgIF9zdGFydCA9IC9ccy9nLnRlc3QoX3N0YXJ0KSA/IF9zdGFydC5zcGxpdCgnICcpIDogX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgIF9zdGFydCA9IF9zdGFydCA/IF9zdGFydCA6IDAsCiAgICAgICAgICAgICAgICAgICAgX2Nvbm5lY3QgPSAkc2VsZi5kYXRhKCdjb25uZWN0JyksCiAgICAgICAgICAgICAgICAgICAgX2Nvbm5lY3QgPSAvXHMvZy50ZXN0KF9jb25uZWN0KSA/IF9jb25uZWN0LnNwbGl0KCcgJykgOiBfY29ubmVjdCwKICAgICAgICAgICAgICAgICAgICBfY29ubmVjdCA9IHR5cGVvZiBfY29ubmVjdCA9PSAndW5kZWZpbmVkJyA/ICdsb3dlcicgOiBfY29ubmVjdCwKICAgICAgICAgICAgICAgICAgICBfbWluID0gJHNlbGYuZGF0YSgnbWluJyksCiAgICAgICAgICAgICAgICAgICAgX21pbiA9IF9taW4gPyBfbWluIDogMCwKICAgICAgICAgICAgICAgICAgICBfbWF4ID0gJHNlbGYuZGF0YSgnbWF4JyksCiAgICAgICAgICAgICAgICAgICAgX21heCA9IF9tYXggPyBfbWF4IDogMTAwLAogICAgICAgICAgICAgICAgICAgIF9taW5fZGlzdGFuY2UgPSAkc2VsZi5kYXRhKCdtaW4tZGlzdGFuY2UnKSwKICAgICAgICAgICAgICAgICAgICBfbWluX2Rpc3RhbmNlID0gX21pbl9kaXN0YW5jZSA/IF9taW5fZGlzdGFuY2UgOiBudWxsLAogICAgICAgICAgICAgICAgICAgIF9tYXhfZGlzdGFuY2UgPSAkc2VsZi5kYXRhKCdtYXgtZGlzdGFuY2UnKSwKICAgICAgICAgICAgICAgICAgICBfbWF4X2Rpc3RhbmNlID0gX21heF9kaXN0YW5jZSA/IF9tYXhfZGlzdGFuY2UgOiBudWxsLAogICAgICAgICAgICAgICAgICAgIF9zdGVwID0gJHNlbGYuZGF0YSgnc3RlcCcpLAogICAgICAgICAgICAgICAgICAgIF9zdGVwID0gX3N0ZXAgPyBfc3RlcCA6IDEsCiAgICAgICAgICAgICAgICAgICAgX29yaWVudGF0aW9uID0gJHNlbGYuZGF0YSgnb3JpZW50YXRpb24nKSwKICAgICAgICAgICAgICAgICAgICBfb3JpZW50YXRpb24gPSBfb3JpZW50YXRpb24gPyBfb3JpZW50YXRpb24gOiAnaG9yaXpvbnRhbCcsCiAgICAgICAgICAgICAgICAgICAgX3Rvb2x0aXAgPSAkc2VsZi5kYXRhKCd0b29sdGlwJyksCiAgICAgICAgICAgICAgICAgICAgX3Rvb2x0aXAgPSBfdG9vbHRpcCA/IF90b29sdGlwIDogZmFsc2U7CgogICAgICAgICAgICAgICAgY29uc29sZS5sb2coX3Rvb2x0aXApOwogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGZfaWQpOwogICAgICAgICAgICAgICAgdmFyIGRlZiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IF9zdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdDogX2Nvbm5lY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogTmlvQXBwLlN0YXRlLmlzUlRMID8gInJ0bCIgOiAibHRyIiwKICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nOiBfbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heCc6IF9tYXgKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBfbWluX2Rpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogX21heF9kaXN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogX3N0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBfb3JpZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiBfdG9vbHRpcAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgICAgICAgICBub1VpU2xpZGVyLmNyZWF0ZSh0YXJnZXQsIGF0dHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OyAvLyBSYW5nZSBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5SYW5nZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLlJhbmdlKCcuZm9ybS1jb250cm9sLXNsaWRlcicpOwogICAgICAgIE5pb0FwcC5SYW5nZSgnLmZvcm0tcmFuZ2Utc2xpZGVyJyk7CiAgICB9OwoKICAgIE5pb0FwcC5TZWxlY3QyLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuU2VsZWN0MignLmpzLXNlbGVjdDInKTsKICAgIH07IC8vIFNsaWNrIFNsaWRlciBAdjEuMC4xCgoKICAgIE5pb0FwcC5TbGljayA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSAmJiB0eXBlb2YgJC5mbi5zbGljayA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBkZWYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICdwcmV2QXJyb3cnOiAnPGRpdiBjbGFzcz0ic2xpY2stYXJyb3ctcHJldiI+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9InNsaWNrLXByZXYiPjxlbSBjbGFzcz0iaWNvbiBuaSBuaS1jaGV2cm9uLWxlZnQiPjwvZW0+PC9hPjwvZGl2PicsCiAgICAgICAgICAgICAgICAgICAgICAgICduZXh0QXJyb3cnOiAnPGRpdiBjbGFzcz0ic2xpY2stYXJyb3ctbmV4dCI+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9InNsaWNrLW5leHQiPjxlbSBjbGFzcz0iaWNvbiBuaSBuaS1jaGV2cm9uLXJpZ2h0Ij48L2VtPjwvYT48L2Rpdj4nLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnNsaWNrKGF0dHIpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OyAvLyBTbGljayBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5TbGlkZXIuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5TbGljaygnLnNsaWRlci1pbml0Jyk7CiAgICB9OyAvLyBNYWduaWZpYyBQb3B1cCBAdjEuMC4wCgoKICAgIE5pb0FwcC5MaWdodGJveCA9IGZ1bmN0aW9uKGVsbSwgdHlwZSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAgICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBkZWYgPSB7fTsKCiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAndmlkZW8nIHx8IHR5cGUgPT0gJ2lmcmFtZScpIHsKICAgICAgICAgICAgICAgICAgICBkZWYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpZnJhbWUnLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdmFsRGVsYXk6IDE2MCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZGVyOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbnRlbnRQb3M6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZU9wZW46IGZ1bmN0aW9uIGJlZm9yZU9wZW4oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdC5pbWFnZS5tYXJrdXAgPSB0aGlzLnN0LmltYWdlLm1hcmt1cC5yZXBsYWNlKCdtZnAtZmlndXJlJywgJ21mcC1maWd1cmUgbWZwLXdpdGgtYW5pbScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3QubWFpbkNsYXNzID0gdGhpcy5zdC5lbC5hdHRyKCdkYXRhLWVmZmVjdCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnY29udGVudCcpIHsKICAgICAgICAgICAgICAgICAgICBkZWYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92YWxEZWxheTogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICBtYWluQ2xhc3M6ICdtZnAtZmFkZSBjb250ZW50LXBvcHVwJwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRlZiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgbWFpbkNsYXNzOiAnbWZwLWZhZGUgaW1hZ2UtcG9wdXAnCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgICAgICAgICAkKHRoaXMpLm1hZ25pZmljUG9wdXAoYXR0cik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07IC8vIENvbnRyb2xzIEB2MS4wLjAKCgogICAgTmlvQXBwLkNvbnRyb2wgPSBmdW5jdGlvbihlbG0pIHsKICAgICAgICB2YXIgY29udHJvbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZWxtKTsKICAgICAgICBjb250cm9sLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgsIGFycikgewogICAgICAgICAgICBpdGVtLmNoZWNrZWQgPyBpdGVtLnBhcmVudE5vZGUuY2xhc3NMaXN0LmFkZCgnY2hlY2tlZCcpIDogbnVsbDsKICAgICAgICAgICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gImNoZWNrYm94IikgewogICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA/IGl0ZW0ucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJykgOiBpdGVtLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSgnY2hlY2tlZCcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gInJhZGlvIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9IicgKyBpdGVtLm5hbWUgKyAnIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4LCBhcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wYXJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpdGVtLmNoZWNrZWQgPyBpdGVtLnBhcmVudE5vZGUuY2xhc3NMaXN0LmFkZCgnY2hlY2tlZCcpIDogbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OyAvLyBOdW1iZXIgU3Bpbm5lciBAdjEuMAoKCiAgICBOaW9BcHAuTnVtYmVyU3Bpbm5lciA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgdmFyIHBsdXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1udW1iZXI9J3BsdXMnXSIpOwogICAgICAgIHZhciBtaW51cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLW51bWJlcj0nbWludXMnXSIpOwogICAgICAgIHBsdXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCwgYXJyKSB7CiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBwbHVzW2luZGV4XS5wYXJlbnROb2RlOwogICAgICAgICAgICBwbHVzW2luZGV4XS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gcGx1c1tpbmRleF0ucGFyZW50Tm9kZS5jaGlsZHJlbjsKICAgICAgICAgICAgICAgIGNoaWxkLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgsIGFycikgewogICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFtpbmRleF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJudW1iZXItc3Bpbm5lciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICFjaGlsZFtpbmRleF0udmFsdWUgPT0gIiIgPyBwYXJzZUludChjaGlsZFtpbmRleF0udmFsdWUpIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSAhY2hpbGRbaW5kZXhdLnN0ZXAgPT0gIiIgPyBwYXJzZUludChjaGlsZFtpbmRleF0uc3RlcCkgOiAxOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF4ID0gIWNoaWxkW2luZGV4XS5tYXggPT0gIiIgPyBwYXJzZUludChjaGlsZFtpbmRleF0ubWF4KSA6IEluZmluaXR5OwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heCArIDEgPiB2YWx1ZSArIHN0ZXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkW2luZGV4XS52YWx1ZSA9IHZhbHVlICsgc3RlcDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkW2luZGV4XS52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIG1pbnVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgsIGFycikgewogICAgICAgICAgICB2YXIgcGFyZW50ID0gbWludXNbaW5kZXhdLnBhcmVudE5vZGU7CiAgICAgICAgICAgIG1pbnVzW2luZGV4XS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gbWludXNbaW5kZXhdLnBhcmVudE5vZGUuY2hpbGRyZW47CiAgICAgICAgICAgICAgICBjaGlsZC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4LCBhcnIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRbaW5kZXhdLmNsYXNzTGlzdC5jb250YWlucygibnVtYmVyLXNwaW5uZXIiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAhY2hpbGRbaW5kZXhdLnZhbHVlID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLnZhbHVlKSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGVwID0gIWNoaWxkW2luZGV4XS5zdGVwID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLnN0ZXApIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbiA9ICFjaGlsZFtpbmRleF0ubWluID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLm1pbikgOiAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiAtIDEgPCB2YWx1ZSAtIHN0ZXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkW2luZGV4XS52YWx1ZSA9IHZhbHVlIC0gc3RlcDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkW2luZGV4XS52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfTsgLy8gU3RlcHBlciBAdjEuMAoKCiAgICBOaW9BcHAuU3RlcHBlciA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGVsbSk7CgogICAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgZWxlbWVudC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7CiAgICAgICAgICAgICAgICB2YXIgZGVmID0gewogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdjogJ3N0ZXBwZXItbmF2JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiAnc3RlcHBlci1wcm9ncmVzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnc3RlcHBlci1zdGVwcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2OiAnc3RlcC1wcmV2JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6ICdzdGVwLW5leHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0OiAnc3RlcC1zdWJtaXQnCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdl9jdXJyZW50OiAnY3VycmVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZfZG9uZTogJ2RvbmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcF9hY3RpdmU6ICdhY3RpdmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcF9kb25lOiAnZG9uZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfc3RlcDogJ2FjdGl2ZScKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zdGVwOiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICAgICAgICAgIE5pb0FwcC5DdXN0b20uU3RlcHBlcihpdGVtLCBhdHRyKTsKICAgICAgICAgICAgICAgIE5pb0FwcC5WYWxpZGF0ZS5PbkNoYW5nZSgnLmpzLXNlbGVjdDInKTsKICAgICAgICAgICAgICAgIE5pb0FwcC5WYWxpZGF0ZS5PbkNoYW5nZSgnLmRhdGUtcGlja2VyJyk7CiAgICAgICAgICAgICAgICBOaW9BcHAuVmFsaWRhdGUuT25DaGFuZ2UoJy5qcy10YWdpZnknKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsgLy8gU3RlcHBlciBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5TdGVwcGVyLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuU3RlcHBlcignLnN0ZXBwZXItaW5pdCcpOwogICAgfTsgLy8gVGFnaWZ5IEB2MS4wLjEKCgogICAgTmlvQXBwLlRhZ2lmeSA9IGZ1bmN0aW9uKGVsbSwgb3B0KSB7CiAgICAgICAgaWYgKCQoZWxtKS5leGlzdHMoKSAmJiB0eXBlb2YgJC5mbi50YWdpZnkgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdmFyIGRlZiwKICAgICAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICAgICAkKGVsbSkudGFnaWZ5KGF0dHIpOwogICAgICAgIH0KICAgIH07IC8vIFRhZ2lmeSBJbml0IEB2MS4wCgoKICAgIE5pb0FwcC5UYWdpZnkuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5UYWdpZnkoJy5qcy10YWdpZnknKTsKICAgIH07IC8vIEV4dHJhIEB2MS4xCgoKICAgIE5pb0FwcC5PdGhlckluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuQ2xhc3NCb2R5KCk7CiAgICAgICAgTmlvQXBwLlBhc3NTd2l0Y2goKTsKICAgICAgICBOaW9BcHAuQ3VycmVudExpbmsoKTsKICAgICAgICBOaW9BcHAuTGlua09mZignLmlzLWRpc2FibGUnKTsKICAgICAgICBOaW9BcHAuQ2xhc3NOYXZNZW51KCk7CiAgICAgICAgTmlvQXBwLlNldEhXKCdbZGF0YS1oZWlnaHRdJywgJ2hlaWdodCcpOwogICAgICAgIE5pb0FwcC5TZXRIVygnW2RhdGEtd2lkdGhdJywgJ3dpZHRoJyk7CiAgICAgICAgTmlvQXBwLk51bWJlclNwaW5uZXIoKTsKICAgICAgICBOaW9BcHAuTGlnaHRib3goJy5wb3B1cC12aWRlbycsICd2aWRlbycpOwogICAgICAgIE5pb0FwcC5MaWdodGJveCgnLnBvcHVwLWlmcmFtZScsICdpZnJhbWUnKTsKICAgICAgICBOaW9BcHAuTGlnaHRib3goJy5wb3B1cC1pbWFnZScsICdpbWFnZScpOwogICAgICAgIE5pb0FwcC5MaWdodGJveCgnLnBvcHVwLWNvbnRlbnQnLCAnY29udGVudCcpOwogICAgICAgIE5pb0FwcC5Db250cm9sKCcuY3VzdG9tLWNvbnRyb2wtaW5wdXQnKTsKICAgIH07IC8vIEFuaW1hdGUgSW5pdCBAdjEuMAoKCiAgICBOaW9BcHAuQW5pLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuQW5pLmZvcm1FbG0oJy5mb3JtLWNvbnRyb2wtb3V0bGluZWQnKTsKICAgICAgICBOaW9BcHAuQW5pLmZvcm1TZWFyY2goJy50b2dnbGUtc2VhcmNoJyk7CiAgICB9OyAvLyBCb290c3RyYXBFeHRlbmQgSW5pdCBAdjEuMAoKCiAgICBOaW9BcHAuQlMuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5CUy5tZW51dGlwKCdhLm5rLW1lbnUtbGluaycpOwogICAgICAgIE5pb0FwcC5CUy50b29sdGlwKCcubmstdG9vbHRpcCcpOwogICAgICAgIE5pb0FwcC5CUy50b29sdGlwKCcuYnRuLXRvb2x0aXAnLCB7CiAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcKICAgICAgICB9KTsKICAgICAgICBOaW9BcHAuQlMudG9vbHRpcCgnW2RhdGEtdG9nZ2xlPSJ0b29sdGlwIl0nKTsKICAgICAgICBOaW9BcHAuQlMudG9vbHRpcCgnW2RhdGEtYnMtdG9nZ2xlPSJ0b29sdGlwIl0nKTsKICAgICAgICBOaW9BcHAuQlMudG9vbHRpcCgnLnRpcGluZm8sLm5rLW1lbnUtdG9vbHRpcCcsIHsKICAgICAgICAgICAgcGxhY2VtZW50OiAncmlnaHQnCiAgICAgICAgfSk7CiAgICAgICAgTmlvQXBwLkJTLnBvcG92ZXIoJ1tkYXRhLXRvZ2dsZT0icG9wb3ZlciJdJyk7CiAgICAgICAgTmlvQXBwLkJTLnBvcG92ZXIoJ1tkYXRhLWJzLXRvZ2dsZT0icG9wb3ZlciJdJyk7CiAgICAgICAgTmlvQXBwLkJTLnByb2dyZXNzKCdbZGF0YS1wcm9ncmVzc10nKTsKICAgICAgICBOaW9BcHAuQlMuZmlsZWlucHV0KCcuZm9ybS1maWxlLWlucHV0Jyk7CiAgICAgICAgTmlvQXBwLkJTLm1vZGFsZml4KCk7CiAgICAgICAgTmlvQXBwLkJTLmRkZml4KCk7CiAgICAgICAgTmlvQXBwLkJTLnRhYmZpeCgpOwogICAgfTsgLy8gUGlja2VyIEluaXQgQHYxLjAKCgogICAgTmlvQXBwLlBpY2tlci5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgTmlvQXBwLlBpY2tlci5kYXRlKCcuZGF0ZS1waWNrZXInKTsKICAgICAgICBOaW9BcHAuUGlja2VyLmRvYignLmRhdGUtcGlja2VyLWFsdCcpOwogICAgICAgIE5pb0FwcC5QaWNrZXIudGltZSgnLnRpbWUtcGlja2VyJyk7CiAgICAgICAgTmlvQXBwLlBpY2tlci5kYXRlKCcuZGF0ZS1waWNrZXItcmFuZ2UnLCB7CiAgICAgICAgICAgIHRvZGF5SGlnaGxpZ2h0OiBmYWxzZSwKICAgICAgICAgICAgYXV0b2Nsb3NlOiBmYWxzZQogICAgICAgIH0pOwogICAgfTsgLy8gQWRkb25zIEB2MQoKCiAgICBOaW9BcHAuQWRkb25zLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBOaW9BcHAuS25vYi5pbml0KCk7CiAgICAgICAgTmlvQXBwLlJhbmdlLmluaXQoKTsKICAgICAgICBOaW9BcHAuU2VsZWN0Mi5pbml0KCk7CiAgICAgICAgTmlvQXBwLkRyb3B6b25lLmluaXQoKTsKICAgICAgICBOaW9BcHAuU2xpZGVyLmluaXQoKTsKICAgICAgICBOaW9BcHAuRGF0YVRhYmxlLmluaXQoKTsKICAgICAgICBOaW9BcHAuVGFnaWZ5LmluaXQoKTsKICAgIH07IC8vIFRvZ2dsZXIgQHYxCgoKICAgIE5pb0FwcC5UR0wuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5UR0wuY29udGVudCgnLnRvZ2dsZScpOwogICAgICAgIE5pb0FwcC5UR0wuZXhwYW5kKCcudG9nZ2xlLWV4cGFuZCcpOwogICAgICAgIE5pb0FwcC5UR0wuZXhwYW5kKCcudG9nZ2xlLW9wdCcsIHsKICAgICAgICAgICAgdG9nZ2xlOiBmYWxzZQogICAgICAgIH0pOwogICAgICAgIE5pb0FwcC5UR0wuc2hvd21lbnUoJy5uay1uYXYtdG9nZ2xlJyk7CiAgICAgICAgTmlvQXBwLlRHTC5kZG1lbnUoJy4nICsgX21lbnUgKyAnLXRvZ2dsZScsIHsKICAgICAgICAgICAgc2VsZjogX21lbnUgKyAnLXRvZ2dsZScsCiAgICAgICAgICAgIGNoaWxkOiBfbWVudSArICctc3ViJwogICAgICAgIH0pOwogICAgfTsKCiAgICBOaW9BcHAuQlMubW9kYWxPbkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAkKCcubW9kYWwnKS5vbignc2hvd24uYnMubW9kYWwnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgTmlvQXBwLlNlbGVjdDIuaW5pdCgpOwogICAgICAgICAgICBOaW9BcHAuVmFsaWRhdGUuaW5pdCgpOwogICAgICAgIH0pOwogICAgfTsgLy8gSW5pdGlhbCBieSBkZWZhdWx0CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCiAgICBOaW9BcHAuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLk90aGVySW5pdCk7CiAgICAgICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuUHJldHRpZnkpOwogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkNvbG9yQkcpOwogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkNvbG9yVFhUKTsKICAgICAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5Db3BpZWQpOwogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkFuaS5pbml0KTsKICAgICAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5UR0wuaW5pdCk7CiAgICAgICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuQlMuaW5pdCk7CiAgICAgICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuVmFsaWRhdGUuaW5pdCk7CiAgICAgICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuUGlja2VyLmluaXQpOwogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkFkZG9ucy5Jbml0KTsKICAgICAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5XaXphcmQpOwogICAgICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLlN0ZXBwZXIuaW5pdCk7CiAgICAgICAgTmlvQXBwLmNvbXMud2luTG9hZC5wdXNoKE5pb0FwcC5Nb2RlU3dpdGNoKTsKICAgIH07CgogICAgTmlvQXBwLmluaXQoKTsKICAgIHJldHVybiBOaW9BcHA7Cn0oTmlvQXBwLCBqUXVlcnkpOw=="}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/call_back_shape.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.085Z","timestamp":1785159465085,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/call_back_shape.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 8627\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":8627,"size_decoded":8892,"mime_type":"image/png","magic":"PNG image data, 550 x 340, 8-bit/color RGBA, non-interlaced","md5":"2d88f898041c2c50d233e7ccdace56e4","sha1":"8df78867303f69e4e1480eb1feb38e4fdde50cc4","sha256":"d5da1b67cfbdfa2c58130cdfa6aba1a854f97efed40d3a881330cfae8bfb2405","sha512":"f1fcdf9a7faf04199c131d9f3b3916d38d86ef94d2809330aed2bab02854ecaf68830a735ba557330233be2e0966b0f765ba8d85553b0a639f99bd928f5e16cb","ssdeep":"192:UStI+E1UOlGu331qQMo5tDlvSo8PSWzAKIse:Tt5h1YlvaSaAKIF","tlshash":"2602bf2acf563437f45b633d87d3e268c5e710b54953705b781978e06a7e9224a0e33e","first_seen":"2025-10-13T02:30:07.485784Z","last_seen":"2026-07-27T13:38:47.800213Z","times_seen":15,"resource_available":false,"data":"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"}},"time_used":64,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":58,"receive":6,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.492Z","timestamp":1785159465492,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\ncontent-length: 1251\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1251,"size_decoded":1459,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-08-04T06:18:11.726458Z","times_seen":145690,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":19,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/main-B-VHc1K4.js","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:52.717Z","timestamp":1785159472717,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1857279285.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 14:34:45 GMT","end":"Wed, 02 Sep 2026 14:34:44 GMT"},"fingerprint":{"sha1":"92:5D:A0:17:13:91:72:7B:B6:8C:6A:7D:A9:55:7F:C8:A9:47:11:99","sha256":"0E:FC:E3:4D:AD:32:B2:11:05:DC:E3:CD:CC:9E:10:DC:C5:2D:9E:1C:D7:C1:9C:00:92:15:43:C5:B7:0B:3A:D6"}}},"request":{"raw":"GET /assets/main-B-VHc1K4.js HTTP/1.1\r\nHost: widget-v3.smartsuppcdn.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:52 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: max-age=31536000, public, immutable\r\netag: W/\"6a670743-3f99\"\r\nexpires: Tue, 27 Jul 2027 07:27:08 GMT\r\nlast-modified: Mon, 27 Jul 2026 07:22:43 GMT\r\nx-77-nzt: k7vjUwVL/U4bGu72KItbosIfWc0QlkifzcauqeJ46NqX6YKWXQDuz4mT6NOpPRDhSTYaTTI\r\nx-77-nzt-ray: fdb5412328488cc3305f676a3cbd052b\r\nx-77-cache: HIT\r\nx-77-age: 22212\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":16281,"size_decoded":6834,"mime_type":"application/javascript","magic":"Java source, ASCII text, with very long lines (15873)","md5":"44df6240c839beea4111582dddf02793","sha1":"4b4dd2241d5ff95eba46fb8893058404630825cd","sha256":"a4019ee0c737ef5d214e80e5a87a5a6e839ff2cf4e286cdad9ed6ff397eba250","sha512":"2f30c45b38eeb4a1900f295893fa30362dce2af015cb8eac6b997795ff4b72db55a92d8d38bb7a8cc8f529c612906aa9d2a2a41539c6a67052ae569733ff7e02","ssdeep":"384:Xrgi5RFMkSjJOE/0BW2rvZZ795P6nrnBOVmPCRkXQbpaIF2x:XEizlSjJOEiWYPR5P6rnBOVmycQbpaIi","tlshash":"6c72d7742700783f712f489e15ade546b232c29dd693892d8b2fec0976c5cc0a8b37b9","first_seen":"2026-07-27T07:28:16.135673Z","last_seen":"2026-07-29T06:17:50.042235Z","times_seen":1081,"resource_available":true,"data":"Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bd2luZG93LnBhcmVudC5zbWFydHN1cHAuZ2V0QXNzZXRVcmwoImFzc2V0cy9XaWRnZXRNZXNzZW5nZXItRDFpVlkzTGouanMiKSx3aW5kb3cucGFyZW50LnNtYXJ0c3VwcC5nZXRBc3NldFVybCgiYXNzZXRzL3NoYXJlZC1rYjF5cUhhQS5qcyIpLHdpbmRvdy5wYXJlbnQuc21hcnRzdXBwLmdldEFzc2V0VXJsKCJhc3NldHMvV2lkZ2V0TWVzc2VuZ2VySW5wdXQtREhyNXVId2QuanMiKSx3aW5kb3cucGFyZW50LnNtYXJ0c3VwcC5nZXRBc3NldFVybCgiYXNzZXRzL1dpZGdldFBvcHVwLUJBMWpjSG51LmpzIildKSkpPT5pLm1hcChpPT5kW2ldKTsKaW1wb3J0e0EgYXMgZSxBaSBhcyB0LEFyIGFzIG4sQXQgYXMgcixCIGFzIGksQmkgYXMgYSxDIGFzIG8sQ2kgYXMgcyxEIGFzIGMsRGkgYXMgbCxFIGFzIHUsRWkgYXMgZCxHaSBhcyBmLEdyIGFzIHAsSGkgYXMgbSxIbiBhcyBoLEhyIGFzIGcsSSBhcyBfLElpIGFzIHYsSiBhcyB5LEppIGFzIGIsS2kgYXMgeCxLciBhcyBTLExpIGFzIEMsTSBhcyBlZSxOIGFzIHRlLE5pIGFzIHcsTyBhcyBuZSxPciBhcyByZSxQaSBhcyBpZSxQciBhcyBhZSxQdCBhcyBvZSxSIGFzIHNlLFMgYXMgY2UsU2kgYXMgbGUsVCBhcyB1ZSxUaSBhcyBULFVpIGFzIGRlLFVyIGFzIEUsVmkgYXMgRCxXaSBhcyBmZSxXbiBhcyBwZSxXdCBhcyBtZSxYaSBhcyBPLFhyIGFzIGssWHQgYXMgaGUsWSBhcyBnZSxZaSBhcyBBLFluIGFzIGosWXIgYXMgX2UsWmkgYXMgTSxaciBhcyB2ZSxfIGFzIHllLGEgYXMgYmUsYWEgYXMgTixiIGFzIHhlLGJpIGFzIFAsY2EgYXMgRixkIGFzIFNlLGRpIGFzIENlLGR0IGFzIHdlLGVhIGFzIFRlLGVpIGFzIEksZiBhcyBFZSxmaSBhcyBMLGggYXMgRGUsaGkgYXMgUixpIGFzIHosaWEgYXMgQixqIGFzIE9lLGppIGFzIFYsam4gYXMga2Usa2kgYXMgQWUsa3IgYXMgamUsbCBhcyBNZSxsYSBhcyBOZSxsaSBhcyBILG0gYXMgUGUsbWkgYXMgRmUsbiBhcyBJZSxuYSBhcyBMZSxvIGFzIFUsb2kgYXMgVyxvciBhcyBHLHBpIGFzIEsscSBhcyBSZSxxbiBhcyB6ZSxyIGFzIHEscyBhcyBCZSx0IGFzIFZlLHRhIGFzIEhlLHRpIGFzIEosdSBhcyBVZSx1aSBhcyBZLHcgYXMgWCx3aSBhcyBaLHggYXMgV2UseGkgYXMgR2UseSBhcyBLZSx5aSBhcyBxZX1mcm9tIi4vc2hhcmVkLWtiMXlxSGFBLmpzIjt2YXIgSmU9ZChgPGRpdj48IT48L2Rpdj5gKTtmdW5jdGlvbiBZZShlLHQpe04odCwhMCk7bGV0IG49eChudWxsKSxyPWAke1MoKS5TTUFSVFNVUFBfQVVUT0NSRUFURT09PSExP2cod2luZG93KS5pZDpgc21hcnRzdXBwYH0td2lkZ2V0LWNvbnRhaW5lcmA7aygoKT0+e3cobikmJnAoKS5ib2R5LmFwcGVuZENoaWxkKHcobikpfSksX2UoKCk9PntwKCkuZ2V0RWxlbWVudEJ5SWQocik/LnJlbW92ZSgpfSk7dmFyIGk9SmUoKTtSKGEoaSksKCk9PnQuY2hpbGRyZW4/P05lKSxGKGkpLEooaSxlPT5mKG4sZSksKCk9PncobikpLHYoKCk9PlcoaSxgaWRgLHIpKSxaKGUsaSksQigpfXZhciBYZT1kKGA8aWZyYW1lIGFsbG93ZnVsbHNjcmVlbj0iIiBzY3JvbGxpbmc9Im5vIj48L2lmcmFtZT5gKTtmdW5jdGlvbiBRKGUsdCl7Tih0LCEwKTtsZXQgbj0oKT0+TShjLGAkdGhlbWVDb2xvcmAsciksW3IsaV09TygpLGE9eCh2b2lkIDApLG89eChudWxsKSxsO0MoKCk9Pnt3KG8pJiZ1KHcobykpfSksQygoKT0+e3cobykmJmQobigpKX0pO2xldCB1PWFzeW5jIGU9PntsJiZhd2FpdCBzKGwpLGUmJnQuY29tcG9uZW50JiYobD1HZSh0LmNvbXBvbmVudCx7dGFyZ2V0OmUuYm9keX0pKX0sZD1lPT57dyhvKSYmbmUodyhvKSxlKX0scD1lPT57aWYoIXcobykpcmV0dXJuO2xldCB0PXcobykuY3JlYXRlRWxlbWVudChgc3R5bGVgKTtyZXR1cm4gdC50ZXh0Q29udGVudD1lLHcobykuaGVhZC5hcHBlbmRDaGlsZCh0KSx0fSxtPSgpPT57Zm9yKGxldCBlIG9mIHdpbmRvdy5kb2N1bWVudC5zdHlsZVNoZWV0cyl7bGV0IHQ9YGA7dHJ5e3Q9Wy4uLmUuY3NzUnVsZXNdLm1hcChlPT5lLmNzc1RleHQpLmpvaW4oYGApfWNhdGNoe2NvbnRpbnVlfWlmKCFwKHQpKXJldHVybn19LGg9KCk9PnshdyhhKXx8IXcoYSkuY29udGVudERvY3VtZW50fHwoZihvLHcoYSkuY29udGVudERvY3VtZW50LCEwKSxtKCkpfTtrKGFzeW5jKCk9Pnthd2FpdCBpZSgpLHcoYSk/LmNvbnRlbnREb2N1bWVudCYmdyhhKS5jb250ZW50RG9jdW1lbnQucmVhZHlTdGF0ZT09PWBjb21wbGV0ZWAmJncoYSkuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3P2goKTp3KGEpPy5hZGRFdmVudExpc3RlbmVyKGBsb2FkYCxoKX0pLF9lKGFzeW5jKCk9Pnt3KGEpJiZ3KGEpLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGxvYWRgLGgpLGwmJmF3YWl0IHMobCl9KTt2YXIgZz1YZSgpO0ooZyxlPT5mKGEsZSksKCk9PncoYSkpLHYoKCk9PntXKGcsYGlkYCx0LmlkKSxXKGcsYHRpdGxlYCx0LnRpdGxlKSxIKGcsdC5mcmFtZVN0eWxlKX0pLFooZSxnKSxCKCksaSgpfXZhciBaZT1sKGA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPjxwYXRoIGQ9Ik02My4xMTMsMTguNTF2LS4xNkM2MC4zMjMsNy4wNSw0NC41ODIsMywzMS45NzIsM1MzLjU4Miw3LC43OTIsMTguNWE2Ni4yMiw2Ni4yMiwwLDAsMCwwLDIwLjQ2YzEuMTgsNC43NCw1LjA1LDguNjMsMTEuMzYsMTEuNDFsLTQsNUEzLjQ3LDMuNDcsMCwwLDAsMTAuODgyLDYxYTMuMzksMy4zOSwwLDAsMCwxLjQ0LS4zMUwyNi44NjIsNTRjMS43OS4xOCwzLjQ5LjI3LDUuMDcuMjcsMTEuMDQuMDQsMjguNDEtNC4wNCwzMS4xOC0xNS40M2E2MC4zMyw2MC4zMywwLDAsMCwwLTIwLjMzWiI+PC9wYXRoPjwvc3ZnPmApO2Z1bmN0aW9uIFFlKGUsdCl7bGV0IG49dmUodCxgaWNvblNpemVgLDMsMTYpO3ZhciByPVplKCk7digoKT0+e1cocixgd2lkdGhgLG4oKSksVyhyLGBoZWlnaHRgLG4oKSl9KSxaKGUscil9ZnVuY3Rpb24gJGUoZSx0KXtOKHQsITApO2xldCBuPXgoITEpO2soKCk9PntmKG4sITApfSk7dmFyIHI9VCgpLGk9RChyKSxhPWU9Pnt2YXIgbj1UKCk7UihEKG4pLCgpPT50LmNoaWxkcmVuPz9OZSksWihlLG4pfTtQKGksZT0+e3cobikmJmUoYSl9KSxaKGUsciksQigpfXZhciBldD1kKGA8ZGl2IGNsYXNzPSJ0cmFuc2Zvcm0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGdyb3VwLWhvdmVyOnNjYWxlLTExNSI+PCE+PC9kaXY+YCk7ZnVuY3Rpb24gdHQoZSl7JGUoZSx7Y2hpbGRyZW46KGUsdCk9Pnt2YXIgbj1ldCgpO1FlKGEobikse2ljb25TaXplOjI0fSksRihuKSxLKDMsbiwoKT0+QmUsKCk9Pih7ZGVsYXk6MjAwLGR1cmF0aW9uOjMwMCxzdGFydDouNixvcGFjaXR5Oi44fSkpLFooZSxuKX0sJCRzbG90czp7ZGVmYXVsdDohMH19KX12YXIgbnQ9ZChgPGRpdiBjbGFzcz0icC0xIj48ZGl2IGNsYXNzPSJmbGV4LWNlbnRlciB3LTEyIGgtMTIgYmctd2hpdGUgYmctb3BhY2l0eS0xMCByb3VuZGVkLWZ1bGwiPjwhPjwvZGl2PjwvZGl2PmApO2Z1bmN0aW9uIHJ0KGUpe3ZhciB0PW50KCksbj1hKHQpO3R0KGEobikse30pLEYobiksRih0KSxaKGUsdCl9dmFyIGl0PWQoYDxkaXYgY2xhc3M9ImZsZXgiPjxkaXYgY2xhc3M9ImZsZXgtY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHBsLTQgcHItMSI+IDwvZGl2PiA8IT48L2Rpdj5gKTtmdW5jdGlvbiBhdChlLHQpe04odCwhMSk7bGV0IG49KCk9Pk0oaixgJHRgLHIpLFtyLGldPU8oKSxvPWZlKCk7aygoKT0+e2xldCBlPU1hdGguY2VpbCh3KG8pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtVZS5zZXQoZSl9KSxJKCk7dmFyIHM9aXQoKSxjPWEocyksbD1hKGMsITApO0YoYykscnQobShjLDIpLHt9KSxGKHMpLEoocyxlPT5mKG8sZSksKCk9PncobykpLHYoZT0+e1coYyxgZGF0YS10ZXN0aWRgLEcud2lkZ2V0QnV0dG9uVGV4dCksbGUobCxlKX0sWygpPT5uKCkoYGJ1dHRvbi5ncmVldGluZ2ApXSksWihlLHMpLEIoKSxpKCl9dmFyIG90PWQoYDxkaXYgaWQ9IndpZGdldC1vbmxpbmUtYmFkZ2UiIGNsYXNzPSJhYnNvbHV0ZSBsZWZ0LTAgYm90dG9tLTAgdy0yIGgtMiBwLTEuNSBiZy1ncmVlbi00MDAgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci13aGl0ZSI+PC9kaXY+YCk7ZnVuY3Rpb24gc3QoZSx0KXtOKHQsITEpO2xldCBuPSgpPT5NKGtlLGAkaXNXaWRnZXRPbmxpbmVgLHIpLFtyLGldPU8oKTtJKCk7dmFyIGE9VCgpLG89RChhKSxzPWU9Pnt2YXIgdD1vdCgpO3YoKCk9PlcodCxgZGF0YS10ZXN0aWRgLEcud2lkZ2V0T25saW5lQmFkZ2UpKSxLKDMsdCwoKT0+QmUpLFooZSx0KX07UChvLGU9PntuKCkmJmUocyl9KSxaKGUsYSksQigpLGkoKX12YXIgY3Q9ZChgPGRpdiBpZD0id2lkZ2V0LXVucmVhZC1tZXNzYWdlcy1iYWRnZSIgY2xhc3M9ImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgbWluLXctNSBoLTUgZmxleC1jZW50ZXIgcHgtMSB0ZXh0LXdoaXRlIGJnLXJlZC02MDAgdGV4dC14cyByb3VuZGVkLWZ1bGwgc2hhZG93Ij4gPC9kaXY+YCk7ZnVuY3Rpb24gbHQoZSx0KXtOKHQsITApO2xldCBuPSgpPT5NKGhlLGAkdW5yZWFkTWVzc2FnZXNDb3VudGAsciksW3IsaV09TygpLG89QSgoKT0+bigpPjApO3ZhciBzPVQoKSxjPUQocyksbD1lPT57dmFyIHQ9Y3QoKSxyPWEodCwhMCk7Rih0KSx2KCgpPT57Vyh0LGBkYXRhLXRlc3RpZGAsRy53aWRnZXRVbnJlYWRNZXNzYWdlc0JhZGdlKSxsZShyLG4oKT45OT9gOTkrYDpuKCkpfSksSygzLHQsKCk9PkJlKSxaKGUsdCl9O1AoYyxlPT57dyhvKSYmZShsKX0pLFooZSxzKSxCKCksaSgpfXZhciB1dD1kKGA8ZGl2IGNsYXNzPSJoLWZ1bGwgdy1mdWxsIGZpeGVkIGZsZXgganVzdGlmeS1lbmQgYm9yZGVyLXJvdW5kZWQtZnVsbCI+PGRpdiByb2xlPSJidXR0b24iIGNsYXNzPSJncm91cCBmbGV4LWNlbnRlciB3LWZ1bGwgYmctcHJpbWFyeS1ncmFkaWVudCBiZy1wcmltYXJ5LWdyYWRpZW50LWhvdmVyIHRleHQtcHJpbWFyeS1jb250ZW50IHJvdW5kZWQtZnVsbCBvdmVyZmxvdy1oaWRkZW4gY3Vyc29yLXBvaW50ZXIgY29udGVudC1mb2N1cy1zZWNvbmRhcnkiPjwhPiA8IT48L2Rpdj4gPCE+PC9kaXY+YCk7ZnVuY3Rpb24gZHQoZSxuKXtOKG4sITEpO2xldCBpPSgpPT5NKGosYCR0YCxzKSxvPSgpPT5NKERlLGAkaXNXaWRnZXRCdXR0b25CdWJibGVgLHMpLFtzLGNdPU8oKTtJKCk7dmFyIGw9dXQoKSx1PWEobCk7Vyh1LGB0YWJpbmRleGAsMCk7dmFyIGQ9YSh1KSxmPWU9Pnt0dChlLHt9KX0scD1lPT57YXQoZSx7fSl9O1AoZCxlPT57bygpP2UoZik6ZShwLC0xKX0pLHN0KG0oZCwyKSx7fSksRih1KSxsdChtKHUsMikse30pLEYobCksdihlPT57Vyh1LGBhcmlhLWxhYmVsYCxlKSxXKHUsYGRhdGEtdGVzdGlkYCxHLndpZGdldEJ1dHRvbil9LFsoKT0+aSgpKGBhcmlhTGFiZWwub3BlbkNoYXRgKV0pLHQoYGNsaWNrYCx1LCgpPT5zZSgpKSxWKGBrZXlwcmVzc2AsdSxlPT5lLmtleT09PXIuRW50ZXImJnNlKCkpLFooZSxsKSxCKCksYygpfUFlKFtgY2xpY2tgXSk7dmFyIGZ0PWQoYDxkaXY+PCE+PC9kaXY+YCk7ZnVuY3Rpb24gcHQoZSx0KXtOKHQsITApO2xldCBuPSgpPT5NKFNlLGAkYnV0dG9uRnJhbWVXaWR0aGAscykscj0oKT0+TSh0ZSxgJHNob3VsZFJlbmRlckJ1dHRvbkZyYW1lYCxzKSxpPSgpPT5NKERlLGAkaXNXaWRnZXRCdXR0b25CdWJibGVgLHMpLG89KCk9Pk0oaixgJHRgLHMpLFtzLGNdPU8oKSxsPXgodm9pZCAwKSxkPWU9Pnt3KGwpJiYodyhsKS5zdHlsZS53aWR0aD1gJHtlfXB4YCl9LHt3aWRnZXRCbG9ja2luZ09wdGlvbnM6cH09RS5nZXRPcHRpb25zKCk7QygoKT0+e3cobCkmJmQobigpKX0pO3ZhciBtPVQoKSxoPUQobSksZz1lPT57dmFyIHQ9ZnQoKTtsZXQgbjtxZShhKHQpLCgpPT5pKCl8fG8oKSxlPT57e2xldCB0PUEoWCk7UShlLHtnZXQgY29tcG9uZW50KCl7cmV0dXJuIGR0fSxnZXQgaWQoKXtyZXR1cm4gRy53aWRnZXRCdXR0b25GcmFtZX0sdGl0bGU6YFNtYXJ0c3VwcCB3aWRnZXQgYnV0dG9uYCxnZXQgZnJhbWVTdHlsZSgpe3JldHVybiB3KHQpfX0pfX0pLEYodCksSih0LGU9PmYobCxlKSwoKT0+dyhsKSksTCh0LGU9PktlPy4oZSkpLHYoZT0+e249SCh0LGBib3JkZXItcmFkaXVzOiA5OTk5cHg7IGJveC1zaGFkb3c6IHJnYigwIDAgMCAvIDYlKSAwcHggMXB4IDZweCwgcmdiKDAgMCAwIC8gJHtwPy5saW1pdFNoYWRvdz9gMjAlKSAwcHggMnB4IDEycHhgOmAxMiUpIDBweCAycHggMzJweGB9OyBjb2xvci1zY2hlbWU6IG5vcm1hbDtgLG4sZSksVyh0LGBkYXRhLXRlc3RpZGAsRy53aWRnZXRCdXR0b25GcmFtZSl9LFsoKT0+KHtoZWlnaHQ6dSg1Nil9KV0pLEsoMSx0LCgpPT5VLCgpPT4oe3k6MjAsZGVsYXk6MTUwLGR1cmF0aW9uOjMwMH0pKSxLKDIsdCwoKT0+YmUsKCk9Pih7ZHVyYXRpb246MjUwfSkpLFooZSx0KX07UChoLGU9PntyKCkmJmUoZyl9KSxaKGUsbSksQigpLGMoKX12YXIgJD1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLkluaXRpYWxpemVkPTBdPWBJbml0aWFsaXplZGAsZVtlLkxvYWRpbmc9MV09YExvYWRpbmdgLGVbZS5TdWNjZXNzPTJdPWBTdWNjZXNzYCxlW2UuRXJyb3I9M109YEVycm9yYCxlfSh7fSksbXQ9bmV3IE1hcCxodD1hc3luYyBlPT57bGV0IHQ9KGF3YWl0IGUoKSkuZGVmYXVsdDtyZXR1cm4gbXQuc2V0KGUsdCksdH07ZnVuY3Rpb24gZ3QoZSx0KXtOKHQsITApO2xldCBuPXZlKHQsYGRlbGF5YCwzLDIwMCkscj14KGRlKCQuSW5pdGlhbGl6ZWQpKSxpPXgodm9pZCAwKSxhPXgodm9pZCAwKSxvPXgodm9pZCAwKSxzPUEoKCk9PncoaSkpLGM9KCk9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KHcobykpfSxsPWFzeW5jKCk9PntjKCksZihhLHZvaWQgMCksZihpLHZvaWQgMCksbigpPjA/KGYociwkLkluaXRpYWxpemVkLCEwKSxmKG8sd2luZG93LnNldFRpbWVvdXQoKCk9PntmKHIsJC5Mb2FkaW5nLCEwKX0sbigpKSwhMCkpOmYociwkLkxvYWRpbmcsITApO3RyeXtmKGksYXdhaXQgaHQodC5sb2FkZXIpLCEwKSxmKHIsJC5TdWNjZXNzLCEwKX1jYXRjaChlKXtpZihmKHIsJC5FcnJvciwhMCksZSBpbnN0YW5jZW9mIEVycm9yKWYoYSxlLCEwKTtlbHNlIHRocm93IGV9YygpfTttdC5oYXModC5sb2FkZXIpPyhmKHIsJC5TdWNjZXNzLCEwKSxmKGksbXQuZ2V0KHQubG9hZGVyKSwhMCkpOmsoKCk9PntsKCl9KTt2YXIgdT1UKCksZD1EKHUpLHA9ZT0+e3ZhciBuPVQoKTtSKEQobiksKCk9PnQuZXJyb3IsKCk9Pih7ZXJyb3I6dyhhKX0pKSxaKGUsbil9LG09ZT0+e3ZhciBuPVQoKTtSKEQobiksKCk9PnQubG9hZGluZyksWihlLG4pfSxoPWU9Pnt2YXIgdD1UKCk7RmUoRCh0KSwoKT0+dyhzKSwoZSx0KT0+e3QoZSx7fSl9KSxaKGUsdCl9O1AoZCxlPT57dyhyKT09PSQuRXJyb3ImJnQuZXJyb3I/ZShwKTp3KHIpPT09JC5Mb2FkaW5nP2UobSwxKTp3KHIpPT09JC5TdWNjZXNzJiZlKGgsMil9KSxaKGUsdSksQigpfXZhciBfdD0oKT0+YWUoKCk9PmltcG9ydChgLi9XaWRnZXRNZXNzZW5nZXItRDFpVlkzTGouanNgKSxfX3ZpdGVfX21hcERlcHMoWzAsMSwyXSksaW1wb3J0Lm1ldGEudXJsKSx2dD1lPT57dmFyIHQ9YnQoKSxuPWEodCkscj1hKG4pO3EoYShyKSx7c2l6ZTozMn0pLEYocik7dmFyIGk9bShyLDIpLG89YShpKTtxKG8se3NpemU6MzJ9KTt2YXIgcz1tKG8sMik7cShzLHtzaXplOjMyfSkscShtKHMsMikse3NpemU6MzJ9KSxGKGkpLEYobik7dmFyIGM9bShuLDIpLGw9YShjKTtxKGEobCkse3NpemU6NDR9KSxGKGwpO3ZhciB1PW0obCwyKSxkPWEodSk7eihkLHtoZWlnaHQ6MjAsd2lkdGg6MjcwfSkseihtKGQsMikse2hlaWdodDoyMCx3aWR0aDoxMjJ9KSxGKHUpLEYoYyk7dmFyIGY9bShjLDIpLHA9YShmKTtxKGEocCkse3NpemU6Mjh9KSxGKHApO3ZhciBoPW0ocCwyKTt6KGEoaCkse2hlaWdodDoxMTIsd2lkdGg6Mjk1LHJvdW5kZWRTdHlsZTpgcm91bmRlZC02YH0pLEYoaCksRihmKTt2YXIgZz1tKGYsMiksXz1hKGcpO3ooXyx7aGVpZ2h0OjMyLHdpZHRoOjI5NX0pO3ZhciB2PW0oXywyKTt6KHYse2hlaWdodDozMix3aWR0aDoxNDh9KSx6KG0odiwyKSx7aGVpZ2h0OjMyLHdpZHRoOjIyNH0pLEYoZyksRih0KSxaKGUsdCl9LHl0PShlLHQpPT57bGV0IG49KCk9PnQ/LigpLmVycm9yO3ZhciByPXh0KCksaT1tKGEociksMiksbz1hKGksITApO0YoaSksRihyKSx2KCgpPT5sZShvLG4oKSkpLFooZSxyKX0sYnQ9ZChgPGRpdiBjbGFzcz0iaC1mdWxsIHAtMiBiZy13aGl0ZSIgaWQ9IlRPRE8gdGVzdCI+PGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4iPjxkaXYgY2xhc3M9ImZsZXgiPjwhPjwvZGl2PiA8ZGl2IGNsYXNzPSJmbGV4IHNwYWNlLXgtMiI+PCE+IDwhPiA8IT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZmxleCBtdC0yIj48ZGl2IGNsYXNzPSJmbGV4IG1sLTEgbXItMiI+PCE+PC9kaXY+IDxkaXYgY2xhc3M9ImZsZXgtYm90dG9tIHNwYWNlLXktMiI+PCE+IDwhPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWJhc2VsaW5lIG10LTgiPjxkaXYgY2xhc3M9ImZsZXggbWwtMSBtci0yIj48IT48L2Rpdj4gPGRpdiBjbGFzcz0ic3BhY2UteS0yIj48IT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQgc3BhY2UteS01IG10LTggbXItMSI+PCE+IDwhPiA8IT48L2Rpdj48L2Rpdj5gKSx4dD1kKGA8ZGl2IGNsYXNzPSJoLWZ1bGwgcC00IGJnLXdoaXRlIHRleHQtcmVkLTUwMCI+PGRpdiBjbGFzcz0idGV4dC1sZyBmb250LWJvbGQiPkZhaWxlZCB0byBsb2FkIHdpZGdldDwvZGl2PiA8ZGl2IGNsYXNzPSJ0ZXh0LXhzIj4gPC9kaXY+PC9kaXY+YCk7ZnVuY3Rpb24gU3QoZSl7Z3QoZSx7Z2V0IGxvYWRlcigpe3JldHVybiBfdH0sZGVsYXk6MCxnZXQgZXJyb3IoKXtyZXR1cm4geXR9LGdldCBsb2FkaW5nKCl7cmV0dXJuIHZ0fX0pfXZhciBDdD1kKGA8ZGl2PjwhPjwvZGl2PmApO2Z1bmN0aW9uIHd0KGUsdCl7Tih0LCEwKTtsZXQgcj0oKT0+TShqZSxgJGlzRnVsbFNjcmVlbkVuYWJsZWRgLGwpLG89KCk9Pk0oUGUsYCRpc01lc3NlbmdlckZyYW1lRXhwYW5kZWRgLGwpLHM9KCk9Pk0obixgJGlzTW9iaWxlRGV2aWNlYCxsKSxjPSgpPT5NKGksYCRzaG91bGRSZW5kZXJNZXNzZW5nZXJGcmFtZWAsbCksW2wsZF09TygpLG09eCh2b2lkIDApLGc9YE1vYmlsZVdpZGdldE1lc3Nlbmdlck9wZW5gLF89KGUsdCk9PntpZighdyhtKSlyZXR1cm47bGV0e3dpZGdldEJsb2NraW5nT3B0aW9uczpufT1FLmdldE9wdGlvbnMoKSx7d2lkdGg6cixoZWlnaHQ6aX09dWUoZSx0KTt3KG0pLnN0eWxlLm1heEhlaWdodD1oKGkpP2k6dShpKSx3KG0pLnN0eWxlLndpZHRoPWgocik/cjp1KHIpLHcobSkuc3R5bGUuaGVpZ2h0PWV8fG4/LmhlYWRsZXNzTW9kZT9gMTAwJWA6YGNhbGMoMTAwJSAtIDQwcHgpYH07QygoKT0+e3cobSkmJl8ocigpLG8oKSl9KTtsZXQgeT14KCExKTtDKCgpPT57aWYocygpKXtpZihjKCkmJiF3KHkpKXtsZXQgZT1wKCkuY3JlYXRlRWxlbWVudChgc3R5bGVgKTtlLnRleHRDb250ZW50PWAqIHtvdmVyZmxvdzogaGlkZGVufWAsZS5jbGFzc05hbWU9ZyxwKCkuaGVhZC5hcHBlbmRDaGlsZChlKSxmKHksITApfWlmKCFjKCkmJncoeSkpe2xldCBlPXAoKS5oZWFkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZyk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspcCgpLmhlYWQucmVtb3ZlQ2hpbGQoZVt0XSk7Zih5LCExKX19fSk7dmFyIGI9VCgpLFM9RChiKSxlZT1lPT57dmFyIHQ9Q3QoKTtIKHQsYGAse30se3RyYW5zaXRpb246YG1heC1oZWlnaHQgMjUwbXMgZWFzZS1pbi1vdXQsIHdpZHRoIDI1MG1zIGVhc2UtaW4tb3V0YCxvdmVyZmxvdzpgaGlkZGVuYH0pO3ZhciBuPWEodCk7e2xldCBlPUEoWCk7UShuLHtnZXQgY29tcG9uZW50KCl7cmV0dXJuIFN0fSxnZXQgaWQoKXtyZXR1cm4gRy53aWRnZXRNZXNzZW5nZXJGcmFtZX0sdGl0bGU6YFNtYXJ0c3VwcCB3aWRnZXQgbWVzc2VuZ2VyYCxnZXQgZnJhbWVTdHlsZSgpe3JldHVybiB3KGUpfX0pfUYodCksTCh0LChlLHQpPT54ZT8uKGUsdCksciksSih0LGU9PmYobSxlKSwoKT0+dyhtKSksdigoKT0+Vyh0LGBkYXRhLXRlc3RpZGAsRy53aWRnZXRNZXNzZW5nZXJGcmFtZSkpLEsoMSx0LCgpPT5VLCgpPT4oe3k6MjAsZHVyYXRpb246MjAwfSkpLEsoMix0LCgpPT5VLCgpPT4oe3k6MTAsZHVyYXRpb246MTUwfSkpLFooZSx0KX07UChTLGU9PntjKCkmJmUoZWUpfSksWihlLGIpLEIoKSxkKCl9dmFyIFR0PSgpPT5hZSgoKT0+aW1wb3J0KGAuL1dpZGdldFBvcHVwLUJBMWpjSG51LmpzYCksX192aXRlX19tYXBEZXBzKFszLDEsMl0pLGltcG9ydC5tZXRhLnVybCksRXQ9ZT0+e3ZhciB0PUR0KCksbj1hKHQpO3Eobix7c2l6ZTo0NH0pO3ZhciByPW0obiwyKSxpPWEocik7eihpLHtoZWlnaHQ6MjAsd2lkdGg6MjcwfSk7dmFyIG89bShpLDIpO3oobyx7aGVpZ2h0OjIwLHdpZHRoOjI3MH0pLHoobShvLDIpLHtoZWlnaHQ6MjAsd2lkdGg6MTIyfSksRihyKSxGKHQpLFooZSx0KX0sRHQ9ZChgPGRpdiBjbGFzcz0iaC1mdWxsIHAtMiBiZy13aGl0ZSI+PCE+IDxkaXYgY2xhc3M9Im10LTQgc3BhY2UteS0yIj48IT4gPCE+IDwhPjwvZGl2PjwvZGl2PmApO2Z1bmN0aW9uIE90KGUpe2d0KGUse2dldCBsb2FkZXIoKXtyZXR1cm4gVHR9LGRlbGF5OjAsZ2V0IGxvYWRpbmcoKXtyZXR1cm4gRXR9fSl9dmFyIGt0PWQoYDxkaXY+PCE+PC9kaXY+YCk7ZnVuY3Rpb24gQXQoZSx0KXtOKHQsITApO2xldCBuPSgpPT5NKHllLGAkcG9wdXBGcmFtZUhlaWdodGAsbykscj0oKT0+TShFZSxgJGhhc1BvcHVwRnJhbWVIb3ZlcmAsbyksaT0oKT0+TShPZSxgJHNob3VsZFJlbmRlclBvcHVwRnJhbWVgLG8pLFtvLHNdPU8oKSxjPXgodm9pZCAwKSxsPWU9Pnt3KGMpJiYodyhjKS5zdHlsZS5tYXhIZWlnaHQ9YCR7ZX1weGApfSx7d2lkZ2V0QmxvY2tpbmdPcHRpb25zOmR9PUUuZ2V0T3B0aW9ucygpO0MoKCk9Pnt3KGMpJiZsKG4oKSl9KTtsZXQgcD1BKCgpPT5yKCk/LjI4Oi4xNik7dmFyIG09VCgpLGg9RChtKSxnPWU9Pnt2YXIgdD1rdCgpO2xldCBuO3ZhciByPWEodCk7e2xldCBlPUEoWCk7UShyLHtnZXQgY29tcG9uZW50KCl7cmV0dXJuIE90fSxnZXQgaWQoKXtyZXR1cm4gRy53aWRnZXRQb3B1cEZyYW1lfSx0aXRsZTpgU21hcnRzdXBwIHdpZGdldCBwb3B1cGAsZ2V0IGZyYW1lU3R5bGUoKXtyZXR1cm4gdyhlKX19KX1GKHQpLEoodCxlPT5mKGMsZSksKCk9PncoYykpLEwodCxlPT5jZT8uKGUpKSx2KGU9PntuPUgodCxgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTsgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0LCBtYXgtaGVpZ2h0IDI1MG1zIGVhc2UtaW4tb3V0YCxuLGUpLFcodCxgZGF0YS10ZXN0aWRgLEcud2lkZ2V0UG9wdXBGcmFtZSl9LFsoKT0+KHt3aWR0aDp1KDMwMCksImJvcmRlci1yYWRpdXMiOnUoMjApLG92ZXJmbG93OmBoaWRkZW5gLCJib3gtc2hhZG93IjpgcmdiYSgwLCAwLCAwLCAke2Q/LmxpbWl0U2hhZG93P2AwLjIpIDBweCAzcHggMTJweGA6YCR7dyhwKX0pIDBweCAzcHggMTZweGB9YH0pXSksSygxLHQsKCk9PlUsKCk9Pih7eToyMCxkZWxheTozMDAsZHVyYXRpb246NDAwfSkpLEsoMix0LCgpPT5VLCgpPT4oe3k6MTAsZHVyYXRpb246NDAwfSkpLFooZSx0KX07UChoLGU9PntpKCkmJmUoZyl9KSxaKGUsbSksQigpLHMoKX12YXIganQ9ZChgPGRpdiBjbGFzcz0iZmxleCBwLTIiPjxkaXY+PC9kaXY+IDxkaXY+PC9kaXY+IDxkaXY+PC9kaXY+PC9kaXY+YCk7ZnVuY3Rpb24gTXQoZSx0KXtsZXQgbj12ZSh0LGBzaXplYCwzLGBtZGApLHI9dmUodCxgY29sb3JgLDMsYGJsYWNrYCksaT1BKCgpPT50Lml0ZXJhdGlvbnM/P2BpbmZpbml0ZWApO3ZhciBvPWp0KCkscz1hKG8pO2xldCBjO3ZhciBsPW0ocywyKTtsZXQgdTt2YXIgZD1tKGwsMik7bGV0IGY7RihvKSx2KCgpPT57WShzLDEsYHR5cGluZy1pbmRpY2F0b3IgJHtuKCl9IGluZGljYXRvci1jb2xvci0ke3IoKX0gYW5pbWF0ZS10eXBpbmdgLGBzdmVsdGUtczQweGdrYCksYz1IKHMsYGAsYyx7ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOncoaSl9KSxZKGwsMSxgdHlwaW5nLWluZGljYXRvciAke24oKX0gaW5kaWNhdG9yLWNvbG9yLSR7cigpfSB0eXBpbmctaW5kaWNhdG9yLXNlY29uZCBhbmltYXRlLXR5cGluZ2AsYHN2ZWx0ZS1zNDB4Z2tgKSx1PUgobCxgYCx1LHsiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6dyhpKX0pLFkoZCwxLGB0eXBpbmctaW5kaWNhdG9yICR7bigpfSBpbmRpY2F0b3ItY29sb3ItJHtyKCl9IHR5cGluZy1pbmRpY2F0b3ItdGhpcmQgYW5pbWF0ZS10eXBpbmdgLGBzdmVsdGUtczQweGdrYCksZj1IKGQsYGAsZix7ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOncoaSl9KX0pLFooZSxvKX12YXIgTnQ9ZChgPGRpdiBjbGFzcz0iZmxleC1jZW50ZXIgaC1mdWxsIGJnLXdoaXRlIHJvdW5kZWQtbGciPjwhPjwvZGl2PmApO2Z1bmN0aW9uIFB0KGUpe3ZhciB0PU50KCk7TXQoYSh0KSx7aXRlcmF0aW9uczoyfSksRih0KSxaKGUsdCl9dmFyIEZ0PWQoYDxkaXY+PCE+PC9kaXY+YCk7ZnVuY3Rpb24gSXQoZSx0KXtOKHQsITEpO2xldCBuPSgpPT5NKGVlLGAkc2hvdWxkUmVuZGVyVHlwaW5nRnJhbWVgLHIpLFtyLGldPU8oKSx7d2lkZ2V0QmxvY2tpbmdPcHRpb25zOnN9PUUuZ2V0T3B0aW9ucygpO0koKTt2YXIgYz1UKCksbD1EKGMpLGQ9ZT0+e3ZhciB0PUZ0KCk7bGV0IG47dmFyIHI9YSh0KTt7bGV0IGU9YihYKTtRKHIse2dldCBjb21wb25lbnQoKXtyZXR1cm4gUHR9LGdldCBpZCgpe3JldHVybiBHLndpZGdldFR5cGluZ0ZyYW1lfSx0aXRsZTpgU21hcnRzdXBwIHdpZGdldCB0eXBpbmdgLGdldCBmcmFtZVN0eWxlKCl7cmV0dXJuIHcoZSl9fSl9Rih0KSxMKHQsZT0+bz8uKGUpKSx2KGU9PntuPUgodCxgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjIpICR7cz8ubGltaXRTaGFkb3c/YDBweCAzcHggMTJweGA6YDBweCAzcHggMTZweGB9OyBib3JkZXItcmFkaXVzOiAyNHB4O2AsbixlKSxXKHQsYGRhdGEtdGVzdGlkYCxHLndpZGdldFR5cGluZ0ZyYW1lKX0sWygpPT4oe2hlaWdodDp1KDQwKSx3aWR0aDp1KDcwKSxvdmVyZmxvdzpgaGlkZGVuYH0pXSksSygxLHQsKCk9PlUsKCk9Pih7eToyMCxkZWxheTozMDAsZHVyYXRpb246NDAwfSkpLEsoMix0LCgpPT5VLCgpPT4oe3k6MTAsZHVyYXRpb246MjUwfSkpLFooZSx0KX07UChsLGU9PntuKCkmJmUoZCl9KSxaKGUsYyksQigpLGkoKX12YXIgTHQ9TGUobnVsbCksUnQ9VGUoW0x0XSwoW2VdKT0+ISFlKSx6dD1kKGA8aW1nIGNsYXNzPSJtLWF1dG8gbWF4LWgtZnVsbCBtYXgtdy1mdWxsIHNlbGVjdC1ub25lIGJnLWJsYWNrIiB3aWR0aD0iYXV0byIgaGVpZ2h0PSJhdXRvIi8+YCksQnQ9ZChgPHZpZGVvIGNvbnRyb2xzPSIiIGNsYXNzPSJtLWF1dG8gbWF4LWgtZnVsbCBtYXgtdy1mdWxsIGJnLWJsYWNrIG9iamVjdC1jb250YWluIj48dHJhY2sga2luZD0iY2FwdGlvbnMiLz4gPHNvdXJjZS8+PC92aWRlbz5gLDIpLFZ0PWQoYDxkaXYgY2xhc3M9InctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCI+PGRpdiBjbGFzcz0iZmxleC1zaHJpbmsgZmxleCBmbGV4LXJvdyB3LWZ1bGwgYmctYmxhY2sgdGV4dC13aGl0ZSI+PGRpdiBjbGFzcz0iZmxleC1ncm93IGZsZXggaXRlbXMtY2VudGVyIHRleHQtbWQgcHgtNCBvdmVyZmxvdy1oaWRkZW4iPjxzcGFuIGNsYXNzPSJ3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LWVsbGlwc2lzIG92ZXJmbG93LWhpZGRlbiI+IDwvc3Bhbj48L2Rpdj4gPGRpdiBjbGFzcz0iZmxleC1zaHJpbmsiPjwhPjwvZGl2PjwvZGl2PiA8ZGl2PjwhPjwvZGl2PjwvZGl2PmApO2Z1bmN0aW9uIEh0KGUsbil7TihuLCEwKTtsZXQgcj0oKT0+TShyZSxgJGlzRGVza3RvcGAscyksaT0oKT0+TShMdCxgJHByZXZpZXdlZE1lZGlhYCxzKSxvPSgpPT5NKGosYCR0YCxzKSxbcyxjXT1PKCksbD1BKHIpLHU9ZT0+e2U9PT1gb3ZlcmxheWAmJiF3KGwpfHxMdC5zZXQobnVsbCl9O3ZhciBkPVZ0KCksZj1hKGQpLHA9YShmKSxoPWEocCksZz1hKGgsITApO0YoaCksRihwKTt2YXIgXz1tKHAsMikseT1hKF8pO3tsZXQgZT1BKCgpPT5vKCkoYHRvb2x0aXAuY2xvc2VgKSk7VmUoeSx7b25DbGljazooKT0+dShgYnV0dG9uYCksZ2V0IGljb24oKXtyZXR1cm4gSWV9LGdldCBpY29uRGVzY3JpcHRpb24oKXtyZXR1cm4gdyhlKX0saWNvblNjYWxlOiEwLHNpemU6YHhsYH0pfUYoXyksRihmKTt2YXIgYj1tKGYsMikseD1hKGIpLFM9ZT0+e3ZhciBuPXp0KCk7digoKT0+e1cobixgc3JjYCxpKCk/LmF0dGFjaG1lbnQudXJsKSxXKG4sYGFsdGAsaSgpPy5hdHRhY2htZW50LmZpbGVOYW1lKX0pLHQoYGNsaWNrYCxuLGU9PmUuc3RvcFByb3BhZ2F0aW9uKCkpLFYoYGtleXByZXNzYCxuLCgpPT57fSksWihlLG4pfSxDPWU9Pnt2YXIgbj1CdCgpO24uYXV0b3BsYXk9ITAsbi5sb29wPSEwO3ZhciByPW0oYShuKSwyKTtGKG4pLHYoKCk9Plcocixgc3JjYCxpKCkuYXR0YWNobWVudC51cmwpKSx0KGBjbGlja2AsbixlPT5lLnN0b3BQcm9wYWdhdGlvbigpKSxWKGBrZXlwcmVzc2AsbiwoKT0+e30pLFooZSxuKX07UCh4LGU9PntpKCk/LnR5cGU9PT13ZS5JbWFnZT9lKFMpOmkoKT8udHlwZT09PXdlLlZpZGVvJiZlKEMsMSl9KSxGKGIpLEYoZCksdigoKT0+e2xlKGcsaSgpPy5hdHRhY2htZW50LmZpbGVOYW1lKSxZKGIsMSxDZShbYHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBmbGV4LWdyb3cgZmxleCBpdGVtcy1jZW50ZXIgYmctYmxhY2svODAgei0xMGAscigpP2BwLThgOmBwLTRgXSkpfSksdChgY2xpY2tgLGIsKCk9PnUoYG92ZXJsYXlgKSksVihga2V5cHJlc3NgLGIsKCk9Pnt9KSxLKDEsZCwoKT0+VSwoKT0+KHt5OjIwLGRlbGF5OjMwMCxkdXJhdGlvbjo0MDB9KSksSygyLGQsKCk9PlUsKCk9Pih7eToxMCxkdXJhdGlvbjoyNTB9KSksWihlLGQpLEIoKSxjKCl9QWUoW2BjbGlja2BdKTt2YXIgVXQ9ZChgPGRpdj48IT48L2Rpdj5gKTtmdW5jdGlvbiBXdChlLHQpe04odCwhMSk7bGV0IG49KCk9Pk0oUnQsYCRzaG91bGRSZW5kZXJNZWRpYVByZXZpZXdgLHIpLFtyLGldPU8oKTtJKCk7dmFyIG89VCgpLHM9RChvKSxjPWU9Pnt2YXIgdD1VdCgpO0godCxgYCx7fSx7dHJhbnNpdGlvbjpgbWF4LWhlaWdodCAyNTBtcyBlYXNlLWluLW91dCwgd2lkdGggMjUwbXMgZWFzZS1pbi1vdXRgfSk7dmFyIG49YSh0KTt7bGV0IGU9YigoKT0+WChlPT57ZS5zdHlsZS5wb3NpdGlvbj1gZml4ZWRgfSkpO1Eobix7Z2V0IGNvbXBvbmVudCgpe3JldHVybiBIdH0sZ2V0IGlkKCl7cmV0dXJuIEcud2lkZ2V0SW1hZ2VQcmV2aWV3fSx0aXRsZTpgU21hcnRzdXBwIHdpZGdldCBpbWFnZSBwcmV2aWV3YCxnZXQgZnJhbWVTdHlsZSgpe3JldHVybiB3KGUpfX0pfUYodCksTCh0LGU9PldlPy4oZSkpLHYoKCk9PlcodCxgZGF0YS10ZXN0aWRgLEcud2lkZ2V0SW1hZ2VQcmV2aWV3KSksSygxLHQsKCk9PlUsKCk9Pih7eToyMCxkZWxheToxMDAsZHVyYXRpb246MjUwfSkpLEsoMix0LCgpPT5VLCgpPT4oe3k6MTAsZHVyYXRpb246MjUwfSkpLFooZSx0KX07UChzLGU9PntuKCkmJmUoYyl9KSxaKGUsbyksQigpLGkoKX12YXIgR3Q9ZChgPCE+IDwhPiA8IT4gPCE+IDwhPmAsMSk7ZnVuY3Rpb24gS3QodCxyKXtOKHIsITApO2xldCBpPSgpPT5NKG1lLGAkbGFzdFVucmVhZE1lc3NhZ2VgLG8pLGE9KCk9Pk0oXyxgJGlzTWVzc2VuZ2VyRnJhbWVPcGVuYCxvKSxbbyxzXT1PKCk7aygoKT0+eyhhc3luYygpPT57YXdhaXQgemUoKSxhd2FpdCBwZS5pbml0Q2xpZW50KCl9KSgpfSksQygoKT0+e2koKSYmIWEoKSYmZSgpfSksZ2UoUygpKSxIZShuKSYmeShTKCkpLFllKHQse2NoaWxkcmVuOihlLHQpPT57dmFyIG49R3QoKSxyPUQobik7SXQocix7fSk7dmFyIGk9bShyLDIpO0F0KGkse30pO3ZhciBhPW0oaSwyKTtwdChhLHt9KTt2YXIgbz1tKGEsMik7d3Qobyx7fSksV3QobShvLDIpLHt9KSxaKGUsbil9LCQkc2xvdHM6e2RlZmF1bHQ6ITB9fSksQigpLHMoKX12YXIgcXQ9Zyh3aW5kb3cpO0UuaW5pdChxdC5vcHRpb25zKSxxdC5pbnN0YWxsQXBpKE1lKSxjLnNldFRoZW1lQ29sb3IocXQub3B0aW9ucyksUmUoKSxvZSgpLEdlKEt0LHt0YXJnZXQ6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGFwcGApfSk7ZXhwb3J0e010IGFzIG4sTHQgYXMgdH07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4tQi1WSGMxSzQuanMubWFw"}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/odometer.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.776Z","timestamp":1785159464776,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/odometer.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 432\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3532,"size_decoded":740,"mime_type":"text/css","magic":"ASCII text","md5":"79253903389c9437b419d5a207b9e82a","sha1":"2a3c78f6367045303a3221fd8171fc235f3e9a12","sha256":"ade68cfe2439fa616fc7b92a04007374d458da79d34cc75bb2520e1ce48b15ea","sha512":"69760811781e0f5ad0ababc1b1d6494e42915b605c35b42a471bceb30f258a563e992b22ae20c40ccf2ff10d910eb681cf8360360f8a7cbac565cecb132f60c3","ssdeep":"","tlshash":"dd7106281f600724333a300ab6d92765fffcb9525223e49db34aa40bcd13db9d289b57","first_seen":"2023-05-18T22:53:18Z","last_seen":"2026-07-27T13:38:47.768704Z","times_seen":185,"resource_available":false,"data":"Lm9kb21ldGVyLm9kb21ldGVyLWF1dG8tdGhlbWUsIC5vZG9tZXRlci5vZG9tZXRlci10aGVtZS1kZWZhdWx0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAqdmVydGljYWwtYWxpZ246IGF1dG87CiAgKnpvb206IDE7CiAgKmRpc3BsYXk6IGlubGluZTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLm9kb21ldGVyLm9kb21ldGVyLWF1dG8tdGhlbWUgLm9kb21ldGVyLWRpZ2l0LCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdCAub2RvbWV0ZXItZGlnaXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICp2ZXJ0aWNhbC1hbGlnbjogYXV0bzsKICAqem9vbTogMTsKICAqZGlzcGxheTogaW5saW5lOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoub2RvbWV0ZXIub2RvbWV0ZXItYXV0by10aGVtZSAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLWRpZ2l0LXNwYWNlciwgLm9kb21ldGVyLm9kb21ldGVyLXRoZW1lLWRlZmF1bHQgLm9kb21ldGVyLWRpZ2l0IC5vZG9tZXRlci1kaWdpdC1zcGFjZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICp2ZXJ0aWNhbC1hbGlnbjogYXV0bzsKICAqem9vbTogMTsKICAqZGlzcGxheTogaW5saW5lOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoub2RvbWV0ZXIub2RvbWV0ZXItYXV0by10aGVtZSAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLWRpZ2l0LWlubmVyLCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdCAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLWRpZ2l0LWlubmVyIHsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoub2RvbWV0ZXIub2RvbWV0ZXItYXV0by10aGVtZSAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLXJpYmJvbiwgLm9kb21ldGVyLm9kb21ldGVyLXRoZW1lLWRlZmF1bHQgLm9kb21ldGVyLWRpZ2l0IC5vZG9tZXRlci1yaWJib24gewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lIC5vZG9tZXRlci1kaWdpdCAub2RvbWV0ZXItcmliYm9uLWlubmVyLCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdCAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLXJpYmJvbi1pbm5lciB7CiAgZGlzcGxheTogYmxvY2s7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lIC5vZG9tZXRlci1kaWdpdCAub2RvbWV0ZXItdmFsdWUsIC5vZG9tZXRlci5vZG9tZXRlci10aGVtZS1kZWZhdWx0IC5vZG9tZXRlci1kaWdpdCAub2RvbWV0ZXItdmFsdWUgewogIGRpc3BsYXk6IGJsb2NrOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKfQoub2RvbWV0ZXIub2RvbWV0ZXItYXV0by10aGVtZSAub2RvbWV0ZXItZGlnaXQgLm9kb21ldGVyLXZhbHVlLm9kb21ldGVyLWxhc3QtdmFsdWUsIC5vZG9tZXRlci5vZG9tZXRlci10aGVtZS1kZWZhdWx0IC5vZG9tZXRlci1kaWdpdCAub2RvbWV0ZXItdmFsdWUub2RvbWV0ZXItbGFzdC12YWx1ZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lLm9kb21ldGVyLWFuaW1hdGluZy11cCAub2RvbWV0ZXItcmliYm9uLWlubmVyLCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdC5vZG9tZXRlci1hbmltYXRpbmctdXAgLm9kb21ldGVyLXJpYmJvbi1pbm5lciB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAyczsKICAtbW96LXRyYW5zaXRpb246IC1tb3otdHJhbnNmb3JtIDJzOwogIC1tcy10cmFuc2l0aW9uOiAtbXMtdHJhbnNmb3JtIDJzOwogIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAyczsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMnM7Cn0KLm9kb21ldGVyLm9kb21ldGVyLWF1dG8tdGhlbWUub2RvbWV0ZXItYW5pbWF0aW5nLXVwLm9kb21ldGVyLWFuaW1hdGluZyAub2RvbWV0ZXItcmliYm9uLWlubmVyLCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdC5vZG9tZXRlci1hbmltYXRpbmctdXAub2RvbWV0ZXItYW5pbWF0aW5nIC5vZG9tZXRlci1yaWJib24taW5uZXIgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lLm9kb21ldGVyLWFuaW1hdGluZy1kb3duIC5vZG9tZXRlci1yaWJib24taW5uZXIsIC5vZG9tZXRlci5vZG9tZXRlci10aGVtZS1kZWZhdWx0Lm9kb21ldGVyLWFuaW1hdGluZy1kb3duIC5vZG9tZXRlci1yaWJib24taW5uZXIgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lLm9kb21ldGVyLWFuaW1hdGluZy1kb3duLm9kb21ldGVyLWFuaW1hdGluZyAub2RvbWV0ZXItcmliYm9uLWlubmVyLCAub2RvbWV0ZXIub2RvbWV0ZXItdGhlbWUtZGVmYXVsdC5vZG9tZXRlci1hbmltYXRpbmctZG93bi5vZG9tZXRlci1hbmltYXRpbmcgLm9kb21ldGVyLXJpYmJvbi1pbm5lciB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAyczsKICAtbW96LXRyYW5zaXRpb246IC1tb3otdHJhbnNmb3JtIDJzOwogIC1tcy10cmFuc2l0aW9uOiAtbXMtdHJhbnNmb3JtIDJzOwogIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAyczsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMnM7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9Ci5vZG9tZXRlci5vZG9tZXRlci1hdXRvLXRoZW1lIC5vZG9tZXRlci12YWx1ZSwgLm9kb21ldGVyLm9kb21ldGVyLXRoZW1lLWRlZmF1bHQgLm9kb21ldGVyLXZhbHVlIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLm9kb21ldGVyLWZvcm1hdHRpbmctbWFyayB7CiAgZGlzcGxheTogbm9uZTsKfQ=="}},"time_used":22,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":22,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/services/services_img03.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.055Z","timestamp":1785159465055,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/services/services_img03.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 65279\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":65279,"size_decoded":65546,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment length 16, Exif Standard: [TIFF image data, little-endian, direntries=4, description=Tractor spraying soybean field at springfotokostic,\u0001, copyright=fotokostic,\u0001, xresolution=112, yresolution=120], progressive, precision 8, 612x321, components 3","md5":"460df515a01b30999f02387dd53d0911","sha1":"d815d04dc083372c39f03fb4564cbd07e6c563da","sha256":"0c91e6b6fe9404b9045f4571066c85aee6774c2d8cb80d9737258a5ced9eaf22","sha512":"1047db913bfcdc297c2d5bd079afe4a83538d967c1b02c1e712dbe510e08bcf711ea6e0b39ca9391ad5fbd0dfdd1c32afcd496440f7a7704a4d20572ad3e298b","ssdeep":"1536:KY0zSTIDCUmybigkyYhkETnKRSyWCmEj6IOKm8KN:h0zSTYCqlrEqjjEIivN","tlshash":"2353f15115b33705ec08e436cdd50b5bd3a2a8fb42b0e99aa3ec6d5b1c4b454ebc4e2d","first_seen":"2025-11-19T03:58:34.513998Z","last_seen":"2026-07-27T13:38:47.748282Z","times_seen":7,"resource_available":false,"data":"/9j/4AAQSkZJRgABAQEBLAEsAAD/4QCIRXhpZgAASUkqAAgAAAAEAA4BAgAoAAAAPgAAAJiCAgAKAAAAZgAAABoBBQABAAAAcAAAABsBBQABAAAAeAAAAAAAAABUcmFjdG9yIHNwcmF5aW5nIHNveWJlYW4gZmllbGQgYXQgc3ByaW5nZm90b2tvc3RpYywBAAABAAAALAEAAAEAAAD/4QW7aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj4KCTxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CgkJPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpJcHRjNHhtcENvcmU9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBDb3JlLzEuMC94bWxucy8iICAgeG1sbnM6R2V0dHlJbWFnZXNHSUZUPSJodHRwOi8veG1wLmdldHR5aW1hZ2VzLmNvbS9naWZ0LzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGx1cz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi94bXAvMS4wLyIgIHhtbG5zOmlwdGNFeHQ9Imh0dHA6Ly9pcHRjLm9yZy9zdGQvSXB0YzR4bXBFeHQvMjAwOC0wMi0yOS8iIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3JpZ2h0cy8iIGRjOlJpZ2h0cz0iZm90b2tvc3RpYyIgcGhvdG9zaG9wOkNyZWRpdD0iR2V0dHkgSW1hZ2VzL2lTdG9ja3Bob3RvIiBHZXR0eUltYWdlc0dJRlQ6QXNzZXRJRD0iNTA2MTY0NzY0IiB4bXBSaWdodHM6V2ViU3RhdGVtZW50PSJodHRwczovL3d3dy5pc3RvY2twaG90by5jb20vbGVnYWwvbGljZW5zZS1hZ3JlZW1lbnQ/dXRtX21lZGl1bT1vcmdhbmljJmFtcDt1dG1fc291cmNlPWdvb2dsZSZhbXA7dXRtX2NhbXBhaWduPWlwdGN1cmwiIHBsdXM6RGF0YU1pbmluZz0iaHR0cDovL25zLnVzZXBsdXMub3JnL2xkZi92b2NhYi9ETUktUFJPSElCSVRFRC1FWENFUFRTRUFSQ0hFTkdJTkVJTkRFWElORyIgPgo8ZGM6Y3JlYXRvcj48cmRmOlNlcT48cmRmOmxpPmZvdG9rb3N0aWM8L3JkZjpsaT48L3JkZjpTZXE+PC9kYzpjcmVhdG9yPjxkYzpkZXNjcmlwdGlvbj48cmRmOkFsdD48cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlRyYWN0b3Igc3ByYXlpbmcgc295YmVhbiBmaWVsZCBhdCBzcHJpbmc8L3JkZjpsaT48L3JkZjpBbHQ+PC9kYzpkZXNjcmlwdGlvbj4KPHBsdXM6TGljZW5zb3I+PHJkZjpTZXE+PHJkZjpsaSByZGY6cGFyc2VUeXBlPSdSZXNvdXJjZSc+PHBsdXM6TGljZW5zb3JVUkw+aHR0cHM6Ly93d3cuaXN0b2NrcGhvdG8uY29tL3Bob3RvL2xpY2Vuc2UtZ201MDYxNjQ3NjQtP3V0bV9tZWRpdW09b3JnYW5pYyZhbXA7dXRtX3NvdXJjZT1nb29nbGUmYW1wO3V0bV9jYW1wYWlnbj1pcHRjdXJsPC9wbHVzOkxpY2Vuc29yVVJMPjwvcmRmOmxpPjwvcmRmOlNlcT48L3BsdXM6TGljZW5zb3I+CgkJPC9yZGY6RGVzY3JpcHRpb24+Cgk8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJ3Ij8+Cv/tAIRQaG90b3Nob3AgMy4wADhCSU0EBAAAAAAAaBwCUAAKZm90b2tvc3RpYxwCeAAoVHJhY3RvciBzcHJheWluZyBzb3liZWFuIGZpZWxkIGF0IHNwcmluZxwCdAAKZm90b2tvc3RpYxwCbgAYR2V0dHkgSW1hZ2VzL2lTdG9ja3Bob3Rv/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIh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"}},"time_used":80,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":58,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/bg/services_bg.html","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.711Z","timestamp":1785159465711,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/bg/services_bg.html HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/html\r\nlast-modified: Thu, 16 Apr 2026 11:29:14 GMT\r\naccept-ranges: bytes\r\ncontent-length: 0\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":183,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-04T06:30:23.608803Z","times_seen":17703944,"resource_available":true,"data":""}},"time_used":56,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":56,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.795Z","timestamp":1785159464795,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\ncontent-length: 1251\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1251,"size_decoded":1459,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-08-04T06:18:11.726458Z","times_seen":145690,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/bootstrap.bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.799Z","timestamp":1785159464799,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/bootstrap.bundle.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 22905\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":80663,"size_decoded":23143,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (65299)","md5":"6baf57f25796c332144ed58a2a0cd9ee","sha1":"f7fd0f3dc84b2cf93bf81e832505a673f354e0a3","sha256":"82f64f62bb03c1bc1824b0f9c9e05f70dba33e146818e63cdf5c306c8cf3dedd","sha512":"5ff6240d9ca34dfe30c9cd95cb5e981823c7c0063cad9258f8f3a0a24663401da684844524272410673a6325fd78db0f7e7d0fcd3844b8db3eb9aa2613908ee8","ssdeep":"1536:Qmw0iELO+TBR2t472RirWyKsVfK5GEfy3YJtCRv/45wZbqbXZTbYWU178:VwXza3YCl45wZODZTbYR8","tlshash":"cc73c5593244b4730ade85b68037430bf2265998b24b812cb57cadde2a7dcc67277f78","first_seen":"2023-09-18T01:21:14Z","last_seen":"2026-08-04T06:02:34.905972Z","times_seen":21032,"resource_available":true,"data":"LyohCiAgKiBCb290c3RyYXAgdjUuMy4yIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKQogICogQ29weXJpZ2h0IDIwMTEtMjAyMyBUaGUgQm9vdHN0cmFwIEF1dGhvcnMgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ncmFwaHMvY29udHJpYnV0b3JzKQogICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpCiAgKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6KHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuYm9vdHN0cmFwPWUoKX0odGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgdD1uZXcgTWFwLGU9e3NldChlLGksbil7dC5oYXMoZSl8fHQuc2V0KGUsbmV3IE1hcCk7Y29uc3Qgcz10LmdldChlKTtzLmhhcyhpKXx8MD09PXMuc2l6ZT9zLnNldChpLG4pOmNvbnNvbGUuZXJyb3IoYEJvb3RzdHJhcCBkb2Vzbid0IGFsbG93IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgcGVyIGVsZW1lbnQuIEJvdW5kIGluc3RhbmNlOiAke0FycmF5LmZyb20ocy5rZXlzKCkpWzBdfS5gKX0sZ2V0OihlLGkpPT50LmhhcyhlKSYmdC5nZXQoZSkuZ2V0KGkpfHxudWxsLHJlbW92ZShlLGkpe2lmKCF0LmhhcyhlKSlyZXR1cm47Y29uc3Qgbj10LmdldChlKTtuLmRlbGV0ZShpKSwwPT09bi5zaXplJiZ0LmRlbGV0ZShlKX19LGk9InRyYW5zaXRpb25lbmQiLG49dD0+KHQmJndpbmRvdy5DU1MmJndpbmRvdy5DU1MuZXNjYXBlJiYodD10LnJlcGxhY2UoLyMoW15ccyIjJ10rKS9nLCgodCxlKT0+YCMke0NTUy5lc2NhcGUoZSl9YCkpKSx0KSxzPXQ9Pnt0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGkpKX0sbz10PT4hKCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpJiYodm9pZCAwIT09dC5qcXVlcnkmJih0PXRbMF0pLHZvaWQgMCE9PXQubm9kZVR5cGUpLHI9dD0+byh0KT90LmpxdWVyeT90WzBdOnQ6InN0cmluZyI9PXR5cGVvZiB0JiZ0Lmxlbmd0aD4wP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iobih0KSk6bnVsbCxhPXQ9PntpZighbyh0KXx8MD09PXQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZT0idmlzaWJsZSI9PT1nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoInZpc2liaWxpdHkiKSxpPXQuY2xvc2VzdCgiZGV0YWlsczpub3QoW29wZW5dKSIpO2lmKCFpKXJldHVybiBlO2lmKGkhPT10KXtjb25zdCBlPXQuY2xvc2VzdCgic3VtbWFyeSIpO2lmKGUmJmUucGFyZW50Tm9kZSE9PWkpcmV0dXJuITE7aWYobnVsbD09PWUpcmV0dXJuITF9cmV0dXJuIGV9LGw9dD0+IXR8fHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8ISF0LmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQiKXx8KHZvaWQgMCE9PXQuZGlzYWJsZWQ/dC5kaXNhYmxlZDp0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSYmImZhbHNlIiE9PXQuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKSxjPXQ9PntpZighZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dGFjaFNoYWRvdylyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRSb290Tm9kZSl7Y29uc3QgZT10LmdldFJvb3ROb2RlKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTaGFkb3dSb290P2U6bnVsbH1yZXR1cm4gdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/dDp0LnBhcmVudE5vZGU/Yyh0LnBhcmVudE5vZGUpOm51bGx9LGg9KCk9Pnt9LGQ9dD0+e3Qub2Zmc2V0SGVpZ2h0fSx1PSgpPT53aW5kb3cualF1ZXJ5JiYhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImRhdGEtYnMtbm8tanF1ZXJ5Iik/d2luZG93LmpRdWVyeTpudWxsLGY9W10scD0oKT0+InJ0bCI9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyLG09dD0+e3ZhciBlO2U9KCk9Pntjb25zdCBlPXUoKTtpZihlKXtjb25zdCBpPXQuTkFNRSxuPWUuZm5baV07ZS5mbltpXT10LmpRdWVyeUludGVyZmFjZSxlLmZuW2ldLkNvbnN0cnVjdG9yPXQsZS5mbltpXS5ub0NvbmZsaWN0PSgpPT4oZS5mbltpXT1uLHQualF1ZXJ5SW50ZXJmYWNlKX19LCJsb2FkaW5nIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/KGYubGVuZ3RofHxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwoKCk9Pntmb3IoY29uc3QgdCBvZiBmKXQoKX0pKSxmLnB1c2goZSkpOmUoKX0sZz0odCxlPVtdLGk9dCk9PiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoLi4uZSk6aSxfPSh0LGUsbj0hMCk9PntpZighbilyZXR1cm4gdm9pZCBnKHQpO2NvbnN0IG89KHQ9PntpZighdClyZXR1cm4gMDtsZXR7dHJhbnNpdGlvbkR1cmF0aW9uOmUsdHJhbnNpdGlvbkRlbGF5Oml9PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO2NvbnN0IG49TnVtYmVyLnBhcnNlRmxvYXQoZSkscz1OdW1iZXIucGFyc2VGbG9hdChpKTtyZXR1cm4gbnx8cz8oZT1lLnNwbGl0KCIsIilbMF0saT1pLnNwbGl0KCIsIilbMF0sMWUzKihOdW1iZXIucGFyc2VGbG9hdChlKStOdW1iZXIucGFyc2VGbG9hdChpKSkpOjB9KShlKSs1O2xldCByPSExO2NvbnN0IGE9KHt0YXJnZXQ6bn0pPT57bj09PWUmJihyPSEwLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLGEpLGcodCkpfTtlLmFkZEV2ZW50TGlzdGVuZXIoaSxhKSxzZXRUaW1lb3V0KCgoKT0+e3J8fHMoZSl9KSxvKX0sYj0odCxlLGksbik9Pntjb25zdCBzPXQubGVuZ3RoO2xldCBvPXQuaW5kZXhPZihlKTtyZXR1cm4tMT09PW8/IWkmJm4/dFtzLTFdOnRbMF06KG8rPWk/MTotMSxuJiYobz0obytzKSVzKSx0W01hdGgubWF4KDAsTWF0aC5taW4obyxzLTEpKV0pfSx2PS9bXi5dKig/PVwuLiopXC58LiovLHk9L1wuLiovLHc9Lzo6XGQrJC8sQT17fTtsZXQgRT0xO2NvbnN0IFQ9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxDPW5ldyBTZXQoWyJjbGljayIsImRibGNsaWNrIiwibW91c2V1cCIsIm1vdXNlZG93biIsImNvbnRleHRtZW51IiwibW91c2V3aGVlbCIsIkRPTU1vdXNlU2Nyb2xsIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJtb3VzZW1vdmUiLCJzZWxlY3RzdGFydCIsInNlbGVjdGVuZCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwib3JpZW50YXRpb25jaGFuZ2UiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcm1vdmUiLCJwb2ludGVydXAiLCJwb2ludGVybGVhdmUiLCJwb2ludGVyY2FuY2VsIiwiZ2VzdHVyZXN0YXJ0IiwiZ2VzdHVyZWNoYW5nZSIsImdlc3R1cmVlbmQiLCJmb2N1cyIsImJsdXIiLCJjaGFuZ2UiLCJyZXNldCIsInNlbGVjdCIsInN1Ym1pdCIsImZvY3VzaW4iLCJmb2N1c291dCIsImxvYWQiLCJ1bmxvYWQiLCJiZWZvcmV1bmxvYWQiLCJyZXNpemUiLCJtb3ZlIiwiRE9NQ29udGVudExvYWRlZCIsInJlYWR5c3RhdGVjaGFuZ2UiLCJlcnJvciIsImFib3J0Iiwic2Nyb2xsIl0pO2Z1bmN0aW9uIE8odCxlKXtyZXR1cm4gZSYmYCR7ZX06OiR7RSsrfWB8fHQudWlkRXZlbnR8fEUrK31mdW5jdGlvbiB4KHQpe2NvbnN0IGU9Tyh0KTtyZXR1cm4gdC51aWRFdmVudD1lLEFbZV09QVtlXXx8e30sQVtlXX1mdW5jdGlvbiBrKHQsZSxpPW51bGwpe3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZpbmQoKHQ9PnQuY2FsbGFibGU9PT1lJiZ0LmRlbGVnYXRpb25TZWxlY3Rvcj09PWkpKX1mdW5jdGlvbiBMKHQsZSxpKXtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgZSxzPW4/aTplfHxpO2xldCBvPUkodCk7cmV0dXJuIEMuaGFzKG8pfHwobz10KSxbbixzLG9dfWZ1bmN0aW9uIFModCxlLGksbixzKXtpZigic3RyaW5nIiE9dHlwZW9mIGV8fCF0KXJldHVybjtsZXRbbyxyLGFdPUwoZSxpLG4pO2lmKGUgaW4gVCl7Y29uc3QgdD10PT5mdW5jdGlvbihlKXtpZighZS5yZWxhdGVkVGFyZ2V0fHxlLnJlbGF0ZWRUYXJnZXQhPT1lLmRlbGVnYXRlVGFyZ2V0JiYhZS5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKXJldHVybiB0LmNhbGwodGhpcyxlKX07cj10KHIpfWNvbnN0IGw9eCh0KSxjPWxbYV18fChsW2FdPXt9KSxoPWsoYyxyLG8/aTpudWxsKTtpZihoKXJldHVybiB2b2lkKGgub25lT2ZmPWgub25lT2ZmJiZzKTtjb25zdCBkPU8ocixlLnJlcGxhY2UodiwiIikpLHU9bz9mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uIG4ocyl7Y29uc3Qgbz10LnF1ZXJ5U2VsZWN0b3JBbGwoZSk7Zm9yKGxldHt0YXJnZXQ6cn09cztyJiZyIT09dGhpcztyPXIucGFyZW50Tm9kZSlmb3IoY29uc3QgYSBvZiBvKWlmKGE9PT1yKXJldHVybiBQKHMse2RlbGVnYXRlVGFyZ2V0OnJ9KSxuLm9uZU9mZiYmTi5vZmYodCxzLnR5cGUsZSxpKSxpLmFwcGx5KHIsW3NdKX19KHQsaSxyKTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbiBpKG4pe3JldHVybiBQKG4se2RlbGVnYXRlVGFyZ2V0OnR9KSxpLm9uZU9mZiYmTi5vZmYodCxuLnR5cGUsZSksZS5hcHBseSh0LFtuXSl9fSh0LHIpO3UuZGVsZWdhdGlvblNlbGVjdG9yPW8/aTpudWxsLHUuY2FsbGFibGU9cix1Lm9uZU9mZj1zLHUudWlkRXZlbnQ9ZCxjW2RdPXUsdC5hZGRFdmVudExpc3RlbmVyKGEsdSxvKX1mdW5jdGlvbiBEKHQsZSxpLG4scyl7Y29uc3Qgbz1rKGVbaV0sbixzKTtvJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKGksbyxCb29sZWFuKHMpKSxkZWxldGUgZVtpXVtvLnVpZEV2ZW50XSl9ZnVuY3Rpb24gJCh0LGUsaSxuKXtjb25zdCBzPWVbaV18fHt9O2Zvcihjb25zdFtvLHJdb2YgT2JqZWN0LmVudHJpZXMocykpby5pbmNsdWRlcyhuKSYmRCh0LGUsaSxyLmNhbGxhYmxlLHIuZGVsZWdhdGlvblNlbGVjdG9yKX1mdW5jdGlvbiBJKHQpe3JldHVybiB0PXQucmVwbGFjZSh5LCIiKSxUW3RdfHx0fWNvbnN0IE49e29uKHQsZSxpLG4pe1ModCxlLGksbiwhMSl9LG9uZSh0LGUsaSxuKXtTKHQsZSxpLG4sITApfSxvZmYodCxlLGksbil7aWYoInN0cmluZyIhPXR5cGVvZiBlfHwhdClyZXR1cm47Y29uc3RbcyxvLHJdPUwoZSxpLG4pLGE9ciE9PWUsbD14KHQpLGM9bFtyXXx8e30saD1lLnN0YXJ0c1dpdGgoIi4iKTtpZih2b2lkIDA9PT1vKXtpZihoKWZvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGwpKSQodCxsLGksZS5zbGljZSgxKSk7Zm9yKGNvbnN0W2ksbl1vZiBPYmplY3QuZW50cmllcyhjKSl7Y29uc3Qgcz1pLnJlcGxhY2UodywiIik7YSYmIWUuaW5jbHVkZXMocyl8fEQodCxsLHIsbi5jYWxsYWJsZSxuLmRlbGVnYXRpb25TZWxlY3Rvcil9fWVsc2V7aWYoIU9iamVjdC5rZXlzKGMpLmxlbmd0aClyZXR1cm47RCh0LGwscixvLHM/aTpudWxsKX19LHRyaWdnZXIodCxlLGkpe2lmKCJzdHJpbmciIT10eXBlb2YgZXx8IXQpcmV0dXJuIG51bGw7Y29uc3Qgbj11KCk7bGV0IHM9bnVsbCxvPSEwLHI9ITAsYT0hMTtlIT09SShlKSYmbiYmKHM9bi5FdmVudChlLGkpLG4odCkudHJpZ2dlcihzKSxvPSFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkscj0hcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpLGE9cy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSk7Y29uc3QgbD1QKG5ldyBFdmVudChlLHtidWJibGVzOm8sY2FuY2VsYWJsZTohMH0pLGkpO3JldHVybiBhJiZsLnByZXZlbnREZWZhdWx0KCksciYmdC5kaXNwYXRjaEV2ZW50KGwpLGwuZGVmYXVsdFByZXZlbnRlZCYmcyYmcy5wcmV2ZW50RGVmYXVsdCgpLGx9fTtmdW5jdGlvbiBQKHQsZT17fSl7Zm9yKGNvbnN0W2ksbl1vZiBPYmplY3QuZW50cmllcyhlKSl0cnl7dFtpXT1ufWNhdGNoKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9Pm59KX1yZXR1cm4gdH1mdW5jdGlvbiBNKHQpe2lmKCJ0cnVlIj09PXQpcmV0dXJuITA7aWYoImZhbHNlIj09PXQpcmV0dXJuITE7aWYodD09PU51bWJlcih0KS50b1N0cmluZygpKXJldHVybiBOdW1iZXIodCk7aWYoIiI9PT10fHwibnVsbCI9PT10KXJldHVybiBudWxsO2lmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHQpKX1jYXRjaChlKXtyZXR1cm4gdH19ZnVuY3Rpb24gaih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bQS1aXS9nLCh0PT5gLSR7dC50b0xvd2VyQ2FzZSgpfWApKX1jb25zdCBGPXtzZXREYXRhQXR0cmlidXRlKHQsZSxpKXt0LnNldEF0dHJpYnV0ZShgZGF0YS1icy0ke2ooZSl9YCxpKX0scmVtb3ZlRGF0YUF0dHJpYnV0ZSh0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGBkYXRhLWJzLSR7aihlKX1gKX0sZ2V0RGF0YUF0dHJpYnV0ZXModCl7aWYoIXQpcmV0dXJue307Y29uc3QgZT17fSxpPU9iamVjdC5rZXlzKHQuZGF0YXNldCkuZmlsdGVyKCh0PT50LnN0YXJ0c1dpdGgoImJzIikmJiF0LnN0YXJ0c1dpdGgoImJzQ29uZmlnIikpKTtmb3IoY29uc3QgbiBvZiBpKXtsZXQgaT1uLnJlcGxhY2UoL15icy8sIiIpO2k9aS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKStpLnNsaWNlKDEsaS5sZW5ndGgpLGVbaV09TSh0LmRhdGFzZXRbbl0pfXJldHVybiBlfSxnZXREYXRhQXR0cmlidXRlOih0LGUpPT5NKHQuZ2V0QXR0cmlidXRlKGBkYXRhLWJzLSR7aihlKX1gKSl9O2NsYXNzIEh7c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJue319c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybnt9fXN0YXRpYyBnZXQgTkFNRSgpe3Rocm93IG5ldyBFcnJvcignWW91IGhhdmUgdG8gaW1wbGVtZW50IHRoZSBzdGF0aWMgbWV0aG9kICJOQU1FIiwgZm9yIGVhY2ggY29tcG9uZW50IScpfV9nZXRDb25maWcodCl7cmV0dXJuIHQ9dGhpcy5fbWVyZ2VDb25maWdPYmoodCksdD10aGlzLl9jb25maWdBZnRlck1lcmdlKHQpLHRoaXMuX3R5cGVDaGVja0NvbmZpZyh0KSx0fV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0fV9tZXJnZUNvbmZpZ09iaih0LGUpe2NvbnN0IGk9byhlKT9GLmdldERhdGFBdHRyaWJ1dGUoZSwiY29uZmlnIik6e307cmV0dXJuey4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCwuLi4ib2JqZWN0Ij09dHlwZW9mIGk/aTp7fSwuLi5vKGUpP0YuZ2V0RGF0YUF0dHJpYnV0ZXMoZSk6e30sLi4uIm9iamVjdCI9PXR5cGVvZiB0P3Q6e319fV90eXBlQ2hlY2tDb25maWcodCxlPXRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpe2Zvcihjb25zdFtuLHNdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IGU9dFtuXSxyPW8oZSk/ImVsZW1lbnQiOm51bGw9PShpPWUpP2Ake2l9YDpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaSkubWF0Y2goL1xzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTtpZighbmV3IFJlZ0V4cChzKS50ZXN0KHIpKXRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gIiR7bn0iIHByb3ZpZGVkIHR5cGUgIiR7cn0iIGJ1dCBleHBlY3RlZCB0eXBlICIke3N9Ii5gKX12YXIgaX19Y2xhc3MgVyBleHRlbmRzIEh7Y29uc3RydWN0b3IodCxpKXtzdXBlcigpLCh0PXIodCkpJiYodGhpcy5fZWxlbWVudD10LHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoaSksZS5zZXQodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLHRoaXMpKX1kaXNwb3NlKCl7ZS5yZW1vdmUodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSxOLm9mZih0aGlzLl9lbGVtZW50LHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl0aGlzW3RdPW51bGx9X3F1ZXVlQ2FsbGJhY2sodCxlLGk9ITApe18odCxlLGkpfV9nZXRDb25maWcodCl7cmV0dXJuIHQ9dGhpcy5fbWVyZ2VDb25maWdPYmoodCx0aGlzLl9lbGVtZW50KSx0PXRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UodCksdGhpcy5fdHlwZUNoZWNrQ29uZmlnKHQpLHR9c3RhdGljIGdldEluc3RhbmNlKHQpe3JldHVybiBlLmdldChyKHQpLHRoaXMuREFUQV9LRVkpfXN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKHQsZT17fSl7cmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UodCl8fG5ldyB0aGlzKHQsIm9iamVjdCI9PXR5cGVvZiBlP2U6bnVsbCl9c3RhdGljIGdldCBWRVJTSU9OKCl7cmV0dXJuIjUuMy4yIn1zdGF0aWMgZ2V0IERBVEFfS0VZKCl7cmV0dXJuYGJzLiR7dGhpcy5OQU1FfWB9c3RhdGljIGdldCBFVkVOVF9LRVkoKXtyZXR1cm5gLiR7dGhpcy5EQVRBX0tFWX1gfXN0YXRpYyBldmVudE5hbWUodCl7cmV0dXJuYCR7dH0ke3RoaXMuRVZFTlRfS0VZfWB9fWNvbnN0IEI9dD0+e2xldCBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLXRhcmdldCIpO2lmKCFlfHwiIyI9PT1lKXtsZXQgaT10LmdldEF0dHJpYnV0ZSgiaHJlZiIpO2lmKCFpfHwhaS5pbmNsdWRlcygiIyIpJiYhaS5zdGFydHNXaXRoKCIuIikpcmV0dXJuIG51bGw7aS5pbmNsdWRlcygiIyIpJiYhaS5zdGFydHNXaXRoKCIjIikmJihpPWAjJHtpLnNwbGl0KCIjIilbMV19YCksZT1pJiYiIyIhPT1pP24oaS50cmltKCkpOm51bGx9cmV0dXJuIGV9LHo9e2ZpbmQ6KHQsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpPT5bXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGUsdCkpLGZpbmRPbmU6KHQsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpPT5FbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwoZSx0KSxjaGlsZHJlbjoodCxlKT0+W10uY29uY2F0KC4uLnQuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5tYXRjaGVzKGUpKSkscGFyZW50cyh0LGUpe2NvbnN0IGk9W107bGV0IG49dC5wYXJlbnROb2RlLmNsb3Nlc3QoZSk7Zm9yKDtuOylpLnB1c2gobiksbj1uLnBhcmVudE5vZGUuY2xvc2VzdChlKTtyZXR1cm4gaX0scHJldih0LGUpe2xldCBpPXQucHJldmlvdXNFbGVtZW50U2libGluZztmb3IoO2k7KXtpZihpLm1hdGNoZXMoZSkpcmV0dXJuW2ldO2k9aS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nfXJldHVybltdfSxuZXh0KHQsZSl7bGV0IGk9dC5uZXh0RWxlbWVudFNpYmxpbmc7Zm9yKDtpOyl7aWYoaS5tYXRjaGVzKGUpKXJldHVybltpXTtpPWkubmV4dEVsZW1lbnRTaWJsaW5nfXJldHVybltdfSxmb2N1c2FibGVDaGlsZHJlbih0KXtjb25zdCBlPVsiYSIsImJ1dHRvbiIsImlucHV0IiwidGV4dGFyZWEiLCJzZWxlY3QiLCJkZXRhaWxzIiwiW3RhYmluZGV4XSIsJ1tjb250ZW50ZWRpdGFibGU9InRydWUiXSddLm1hcCgodD0+YCR7dH06bm90KFt0YWJpbmRleF49Ii0iXSlgKSkuam9pbigiLCIpO3JldHVybiB0aGlzLmZpbmQoZSx0KS5maWx0ZXIoKHQ9PiFsKHQpJiZhKHQpKSl9LGdldFNlbGVjdG9yRnJvbUVsZW1lbnQodCl7Y29uc3QgZT1CKHQpO3JldHVybiBlJiZ6LmZpbmRPbmUoZSk/ZTpudWxsfSxnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHQpe2NvbnN0IGU9Qih0KTtyZXR1cm4gZT96LmZpbmRPbmUoZSk6bnVsbH0sZ2V0TXVsdGlwbGVFbGVtZW50c0Zyb21TZWxlY3Rvcih0KXtjb25zdCBlPUIodCk7cmV0dXJuIGU/ei5maW5kKGUpOltdfX0sUj0odCxlPSJoaWRlIik9Pntjb25zdCBpPWBjbGljay5kaXNtaXNzJHt0LkVWRU5UX0tFWX1gLG49dC5OQU1FO04ub24oZG9jdW1lbnQsaSxgW2RhdGEtYnMtZGlzbWlzcz0iJHtufSJdYCwoZnVuY3Rpb24oaSl7aWYoWyJBIiwiQVJFQSJdLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkmJmkucHJldmVudERlZmF1bHQoKSxsKHRoaXMpKXJldHVybjtjb25zdCBzPXouZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKXx8dGhpcy5jbG9zZXN0KGAuJHtufWApO3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShzKVtlXSgpfSkpfSxxPSIuYnMuYWxlcnQiLFY9YGNsb3NlJHtxfWAsSz1gY2xvc2VkJHtxfWA7Y2xhc3MgUSBleHRlbmRzIFd7c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuImFsZXJ0In1jbG9zZSgpe2lmKE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LFYpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpO2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImZhZGUiKTt0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+dGhpcy5fZGVzdHJveUVsZW1lbnQoKSksdGhpcy5fZWxlbWVudCx0KX1fZGVzdHJveUVsZW1lbnQoKXt0aGlzLl9lbGVtZW50LnJlbW92ZSgpLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LEspLHRoaXMuZGlzcG9zZSgpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPVEuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF18fHQuc3RhcnRzV2l0aCgiXyIpfHwiY29uc3RydWN0b3IiPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7ZVt0XSh0aGlzKX19KSl9fVIoUSwiY2xvc2UiKSxtKFEpO2NvbnN0IFg9J1tkYXRhLWJzLXRvZ2dsZT0iYnV0dG9uIl0nO2NsYXNzIFkgZXh0ZW5kcyBXe3N0YXRpYyBnZXQgTkFNRSgpe3JldHVybiJidXR0b24ifXRvZ2dsZSgpe3RoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIikpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPVkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTsidG9nZ2xlIj09PXQmJmVbdF0oKX0pKX19Ti5vbihkb2N1bWVudCwiY2xpY2suYnMuYnV0dG9uLmRhdGEtYXBpIixYLCh0PT57dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC50YXJnZXQuY2xvc2VzdChYKTtZLmdldE9yQ3JlYXRlSW5zdGFuY2UoZSkudG9nZ2xlKCl9KSksbShZKTtjb25zdCBVPSIuYnMuc3dpcGUiLEc9YHRvdWNoc3RhcnQke1V9YCxKPWB0b3VjaG1vdmUke1V9YCxaPWB0b3VjaGVuZCR7VX1gLHR0PWBwb2ludGVyZG93biR7VX1gLGV0PWBwb2ludGVydXAke1V9YCxpdD17ZW5kQ2FsbGJhY2s6bnVsbCxsZWZ0Q2FsbGJhY2s6bnVsbCxyaWdodENhbGxiYWNrOm51bGx9LG50PXtlbmRDYWxsYmFjazoiKGZ1bmN0aW9ufG51bGwpIixsZWZ0Q2FsbGJhY2s6IihmdW5jdGlvbnxudWxsKSIscmlnaHRDYWxsYmFjazoiKGZ1bmN0aW9ufG51bGwpIn07Y2xhc3Mgc3QgZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50PXQsdCYmc3QuaXNTdXBwb3J0ZWQoKSYmKHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoZSksdGhpcy5fZGVsdGFYPTAsdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHM9Qm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KSx0aGlzLl9pbml0RXZlbnRzKCkpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiBpdH1zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIG50fXN0YXRpYyBnZXQgTkFNRSgpe3JldHVybiJzd2lwZSJ9ZGlzcG9zZSgpe04ub2ZmKHRoaXMuX2VsZW1lbnQsVSl9X3N0YXJ0KHQpe3RoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzP3RoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2godCkmJih0aGlzLl9kZWx0YVg9dC5jbGllbnRYKTp0aGlzLl9kZWx0YVg9dC50b3VjaGVzWzBdLmNsaWVudFh9X2VuZCh0KXt0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKHQpJiYodGhpcy5fZGVsdGFYPXQuY2xpZW50WC10aGlzLl9kZWx0YVgpLHRoaXMuX2hhbmRsZVN3aXBlKCksZyh0aGlzLl9jb25maWcuZW5kQ2FsbGJhY2spfV9tb3ZlKHQpe3RoaXMuX2RlbHRhWD10LnRvdWNoZXMmJnQudG91Y2hlcy5sZW5ndGg+MT8wOnQudG91Y2hlc1swXS5jbGllbnRYLXRoaXMuX2RlbHRhWH1faGFuZGxlU3dpcGUoKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuX2RlbHRhWCk7aWYodDw9NDApcmV0dXJuO2NvbnN0IGU9dC90aGlzLl9kZWx0YVg7dGhpcy5fZGVsdGFYPTAsZSYmZyhlPjA/dGhpcy5fY29uZmlnLnJpZ2h0Q2FsbGJhY2s6dGhpcy5fY29uZmlnLmxlZnRDYWxsYmFjayl9X2luaXRFdmVudHMoKXt0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cz8oTi5vbih0aGlzLl9lbGVtZW50LHR0LCh0PT50aGlzLl9zdGFydCh0KSkpLE4ub24odGhpcy5fZWxlbWVudCxldCwodD0+dGhpcy5fZW5kKHQpKSksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwb2ludGVyLWV2ZW50IikpOihOLm9uKHRoaXMuX2VsZW1lbnQsRywodD0+dGhpcy5fc3RhcnQodCkpKSxOLm9uKHRoaXMuX2VsZW1lbnQsSiwodD0+dGhpcy5fbW92ZSh0KSkpLE4ub24odGhpcy5fZWxlbWVudCxaLCh0PT50aGlzLl9lbmQodCkpKSl9X2V2ZW50SXNQb2ludGVyUGVuVG91Y2godCl7cmV0dXJuIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzJiYoInBlbiI9PT10LnBvaW50ZXJUeXBlfHwidG91Y2giPT09dC5wb2ludGVyVHlwZSl9c3RhdGljIGlzU3VwcG9ydGVkKCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4wfX1jb25zdCBvdD0iLmJzLmNhcm91c2VsIixydD0iLmRhdGEtYXBpIixhdD0ibmV4dCIsbHQ9InByZXYiLGN0PSJsZWZ0IixodD0icmlnaHQiLGR0PWBzbGlkZSR7b3R9YCx1dD1gc2xpZCR7b3R9YCxmdD1ga2V5ZG93biR7b3R9YCxwdD1gbW91c2VlbnRlciR7b3R9YCxtdD1gbW91c2VsZWF2ZSR7b3R9YCxndD1gZHJhZ3N0YXJ0JHtvdH1gLF90PWBsb2FkJHtvdH0ke3J0fWAsYnQ9YGNsaWNrJHtvdH0ke3J0fWAsdnQ9ImNhcm91c2VsIix5dD0iYWN0aXZlIix3dD0iLmFjdGl2ZSIsQXQ9Ii5jYXJvdXNlbC1pdGVtIixFdD13dCtBdCxUdD17QXJyb3dMZWZ0Omh0LEFycm93UmlnaHQ6Y3R9LEN0PXtpbnRlcnZhbDo1ZTMsa2V5Ym9hcmQ6ITAscGF1c2U6ImhvdmVyIixyaWRlOiExLHRvdWNoOiEwLHdyYXA6ITB9LE90PXtpbnRlcnZhbDoiKG51bWJlcnxib29sZWFuKSIsa2V5Ym9hcmQ6ImJvb2xlYW4iLHBhdXNlOiIoc3RyaW5nfGJvb2xlYW4pIixyaWRlOiIoYm9vbGVhbnxzdHJpbmcpIix0b3VjaDoiYm9vbGVhbiIsd3JhcDoiYm9vbGVhbiJ9O2NsYXNzIHh0IGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy5faW50ZXJ2YWw9bnVsbCx0aGlzLl9hY3RpdmVFbGVtZW50PW51bGwsdGhpcy5faXNTbGlkaW5nPSExLHRoaXMudG91Y2hUaW1lb3V0PW51bGwsdGhpcy5fc3dpcGVIZWxwZXI9bnVsbCx0aGlzLl9pbmRpY2F0b3JzRWxlbWVudD16LmZpbmRPbmUoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIix0aGlzLl9lbGVtZW50KSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpLHRoaXMuX2NvbmZpZy5yaWRlPT09dnQmJnRoaXMuY3ljbGUoKX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gQ3R9c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBPdH1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm4iY2Fyb3VzZWwifW5leHQoKXt0aGlzLl9zbGlkZShhdCl9bmV4dFdoZW5WaXNpYmxlKCl7IWRvY3VtZW50LmhpZGRlbiYmYSh0aGlzLl9lbGVtZW50KSYmdGhpcy5uZXh0KCl9cHJldigpe3RoaXMuX3NsaWRlKGx0KX1wYXVzZSgpe3RoaXMuX2lzU2xpZGluZyYmcyh0aGlzLl9lbGVtZW50KSx0aGlzLl9jbGVhckludGVydmFsKCl9Y3ljbGUoKXt0aGlzLl9jbGVhckludGVydmFsKCksdGhpcy5fdXBkYXRlSW50ZXJ2YWwoKSx0aGlzLl9pbnRlcnZhbD1zZXRJbnRlcnZhbCgoKCk9PnRoaXMubmV4dFdoZW5WaXNpYmxlKCkpLHRoaXMuX2NvbmZpZy5pbnRlcnZhbCl9X21heWJlRW5hYmxlQ3ljbGUoKXt0aGlzLl9jb25maWcucmlkZSYmKHRoaXMuX2lzU2xpZGluZz9OLm9uZSh0aGlzLl9lbGVtZW50LHV0LCgoKT0+dGhpcy5jeWNsZSgpKSk6dGhpcy5jeWNsZSgpKX10byh0KXtjb25zdCBlPXRoaXMuX2dldEl0ZW1zKCk7aWYodD5lLmxlbmd0aC0xfHx0PDApcmV0dXJuO2lmKHRoaXMuX2lzU2xpZGluZylyZXR1cm4gdm9pZCBOLm9uZSh0aGlzLl9lbGVtZW50LHV0LCgoKT0+dGhpcy50byh0KSkpO2NvbnN0IGk9dGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKTtpZihpPT09dClyZXR1cm47Y29uc3Qgbj10Pmk/YXQ6bHQ7dGhpcy5fc2xpZGUobixlW3RdKX1kaXNwb3NlKCl7dGhpcy5fc3dpcGVIZWxwZXImJnRoaXMuX3N3aXBlSGVscGVyLmRpc3Bvc2UoKSxzdXBlci5kaXNwb3NlKCl9X2NvbmZpZ0FmdGVyTWVyZ2UodCl7cmV0dXJuIHQuZGVmYXVsdEludGVydmFsPXQuaW50ZXJ2YWwsdH1fYWRkRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLl9jb25maWcua2V5Ym9hcmQmJk4ub24odGhpcy5fZWxlbWVudCxmdCwodD0+dGhpcy5fa2V5ZG93bih0KSkpLCJob3ZlciI9PT10aGlzLl9jb25maWcucGF1c2UmJihOLm9uKHRoaXMuX2VsZW1lbnQscHQsKCgpPT50aGlzLnBhdXNlKCkpKSxOLm9uKHRoaXMuX2VsZW1lbnQsbXQsKCgpPT50aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCkpKSksdGhpcy5fY29uZmlnLnRvdWNoJiZzdC5pc1N1cHBvcnRlZCgpJiZ0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCl9X2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKXtmb3IoY29uc3QgdCBvZiB6LmZpbmQoIi5jYXJvdXNlbC1pdGVtIGltZyIsdGhpcy5fZWxlbWVudCkpTi5vbih0LGd0LCh0PT50LnByZXZlbnREZWZhdWx0KCkpKTtjb25zdCB0PXtsZWZ0Q2FsbGJhY2s6KCk9PnRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoY3QpKSxyaWdodENhbGxiYWNrOigpPT50aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKGh0KSksZW5kQ2FsbGJhY2s6KCk9PnsiaG92ZXIiPT09dGhpcy5fY29uZmlnLnBhdXNlJiYodGhpcy5wYXVzZSgpLHRoaXMudG91Y2hUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpLHRoaXMudG91Y2hUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT50aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCkpLDUwMCt0aGlzLl9jb25maWcuaW50ZXJ2YWwpKX19O3RoaXMuX3N3aXBlSGVscGVyPW5ldyBzdCh0aGlzLl9lbGVtZW50LHQpfV9rZXlkb3duKHQpe2lmKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QodC50YXJnZXQudGFnTmFtZSkpcmV0dXJuO2NvbnN0IGU9VHRbdC5rZXldO2UmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihlKSkpfV9nZXRJdGVtSW5kZXgodCl7cmV0dXJuIHRoaXMuX2dldEl0ZW1zKCkuaW5kZXhPZih0KX1fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudCh0KXtpZighdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpcmV0dXJuO2NvbnN0IGU9ei5maW5kT25lKHd0LHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtlLmNsYXNzTGlzdC5yZW1vdmUoeXQpLGUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiKTtjb25zdCBpPXouZmluZE9uZShgW2RhdGEtYnMtc2xpZGUtdG89IiR7dH0iXWAsdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpO2kmJihpLmNsYXNzTGlzdC5hZGQoeXQpLGkuc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJ0cnVlIikpfV91cGRhdGVJbnRlcnZhbCgpe2NvbnN0IHQ9dGhpcy5fYWN0aXZlRWxlbWVudHx8dGhpcy5fZ2V0QWN0aXZlKCk7aWYoIXQpcmV0dXJuO2NvbnN0IGU9TnVtYmVyLnBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLWludGVydmFsIiksMTApO3RoaXMuX2NvbmZpZy5pbnRlcnZhbD1lfHx0aGlzLl9jb25maWcuZGVmYXVsdEludGVydmFsfV9zbGlkZSh0LGU9bnVsbCl7aWYodGhpcy5faXNTbGlkaW5nKXJldHVybjtjb25zdCBpPXRoaXMuX2dldEFjdGl2ZSgpLG49dD09PWF0LHM9ZXx8Yih0aGlzLl9nZXRJdGVtcygpLGksbix0aGlzLl9jb25maWcud3JhcCk7aWYocz09PWkpcmV0dXJuO2NvbnN0IG89dGhpcy5fZ2V0SXRlbUluZGV4KHMpLHI9ZT0+Ti50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsZSx7cmVsYXRlZFRhcmdldDpzLGRpcmVjdGlvbjp0aGlzLl9vcmRlclRvRGlyZWN0aW9uKHQpLGZyb206dGhpcy5fZ2V0SXRlbUluZGV4KGkpLHRvOm99KTtpZihyKGR0KS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZighaXx8IXMpcmV0dXJuO2NvbnN0IGE9Qm9vbGVhbih0aGlzLl9pbnRlcnZhbCk7dGhpcy5wYXVzZSgpLHRoaXMuX2lzU2xpZGluZz0hMCx0aGlzLl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KG8pLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9cztjb25zdCBsPW4/ImNhcm91c2VsLWl0ZW0tc3RhcnQiOiJjYXJvdXNlbC1pdGVtLWVuZCIsYz1uPyJjYXJvdXNlbC1pdGVtLW5leHQiOiJjYXJvdXNlbC1pdGVtLXByZXYiO3MuY2xhc3NMaXN0LmFkZChjKSxkKHMpLGkuY2xhc3NMaXN0LmFkZChsKSxzLmNsYXNzTGlzdC5hZGQobCksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9PntzLmNsYXNzTGlzdC5yZW1vdmUobCxjKSxzLmNsYXNzTGlzdC5hZGQoeXQpLGkuY2xhc3NMaXN0LnJlbW92ZSh5dCxjLGwpLHRoaXMuX2lzU2xpZGluZz0hMSxyKHV0KX0pLGksdGhpcy5faXNBbmltYXRlZCgpKSxhJiZ0aGlzLmN5Y2xlKCl9X2lzQW5pbWF0ZWQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNsaWRlIil9X2dldEFjdGl2ZSgpe3JldHVybiB6LmZpbmRPbmUoRXQsdGhpcy5fZWxlbWVudCl9X2dldEl0ZW1zKCl7cmV0dXJuIHouZmluZChBdCx0aGlzLl9lbGVtZW50KX1fY2xlYXJJbnRlcnZhbCgpe3RoaXMuX2ludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbCl9X2RpcmVjdGlvblRvT3JkZXIodCl7cmV0dXJuIHAoKT90PT09Y3Q/bHQ6YXQ6dD09PWN0P2F0Omx0fV9vcmRlclRvRGlyZWN0aW9uKHQpe3JldHVybiBwKCk/dD09PWx0P2N0Omh0OnQ9PT1sdD9odDpjdH1zdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y29uc3QgZT14dC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsdCk7aWYoIm51bWJlciIhPXR5cGVvZiB0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF18fHQuc3RhcnRzV2l0aCgiXyIpfHwiY29uc3RydWN0b3IiPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7ZVt0XSgpfX1lbHNlIGUudG8odCl9KSl9fU4ub24oZG9jdW1lbnQsYnQsIltkYXRhLWJzLXNsaWRlXSwgW2RhdGEtYnMtc2xpZGUtdG9dIiwoZnVuY3Rpb24odCl7Y29uc3QgZT16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7aWYoIWV8fCFlLmNsYXNzTGlzdC5jb250YWlucyh2dCkpcmV0dXJuO3QucHJldmVudERlZmF1bHQoKTtjb25zdCBpPXh0LmdldE9yQ3JlYXRlSW5zdGFuY2UoZSksbj10aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1icy1zbGlkZS10byIpO3JldHVybiBuPyhpLnRvKG4pLHZvaWQgaS5fbWF5YmVFbmFibGVDeWNsZSgpKToibmV4dCI9PT1GLmdldERhdGFBdHRyaWJ1dGUodGhpcywic2xpZGUiKT8oaS5uZXh0KCksdm9pZCBpLl9tYXliZUVuYWJsZUN5Y2xlKCkpOihpLnByZXYoKSx2b2lkIGkuX21heWJlRW5hYmxlQ3ljbGUoKSl9KSksTi5vbih3aW5kb3csX3QsKCgpPT57Y29uc3QgdD16LmZpbmQoJ1tkYXRhLWJzLXJpZGU9ImNhcm91c2VsIl0nKTtmb3IoY29uc3QgZSBvZiB0KXh0LmdldE9yQ3JlYXRlSW5zdGFuY2UoZSl9KSksbSh4dCk7Y29uc3Qga3Q9Ii5icy5jb2xsYXBzZSIsTHQ9YHNob3cke2t0fWAsU3Q9YHNob3duJHtrdH1gLER0PWBoaWRlJHtrdH1gLCR0PWBoaWRkZW4ke2t0fWAsSXQ9YGNsaWNrJHtrdH0uZGF0YS1hcGlgLE50PSJzaG93IixQdD0iY29sbGFwc2UiLE10PSJjb2xsYXBzaW5nIixqdD1gOnNjb3BlIC4ke1B0fSAuJHtQdH1gLEZ0PSdbZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIl0nLEh0PXtwYXJlbnQ6bnVsbCx0b2dnbGU6ITB9LFd0PXtwYXJlbnQ6IihudWxsfGVsZW1lbnQpIix0b2dnbGU6ImJvb2xlYW4ifTtjbGFzcyBCdCBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl90cmlnZ2VyQXJyYXk9W107Y29uc3QgaT16LmZpbmQoRnQpO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IGU9ei5nZXRTZWxlY3RvckZyb21FbGVtZW50KHQpLGk9ei5maW5kKGUpLmZpbHRlcigodD0+dD09PXRoaXMuX2VsZW1lbnQpKTtudWxsIT09ZSYmaS5sZW5ndGgmJnRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKHQpfXRoaXMuX2luaXRpYWxpemVDaGlsZHJlbigpLHRoaXMuX2NvbmZpZy5wYXJlbnR8fHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl90cmlnZ2VyQXJyYXksdGhpcy5faXNTaG93bigpKSx0aGlzLl9jb25maWcudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiBIdH1zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIFd0fXN0YXRpYyBnZXQgTkFNRSgpe3JldHVybiJjb2xsYXBzZSJ9dG9nZ2xlKCl7dGhpcy5faXNTaG93bigpP3RoaXMuaGlkZSgpOnRoaXMuc2hvdygpfXNob3coKXtpZih0aGlzLl9pc1RyYW5zaXRpb25pbmd8fHRoaXMuX2lzU2hvd24oKSlyZXR1cm47bGV0IHQ9W107aWYodGhpcy5fY29uZmlnLnBhcmVudCYmKHQ9dGhpcy5fZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKCIuY29sbGFwc2Uuc2hvdywgLmNvbGxhcHNlLmNvbGxhcHNpbmciKS5maWx0ZXIoKHQ9PnQhPT10aGlzLl9lbGVtZW50KSkubWFwKCh0PT5CdC5nZXRPckNyZWF0ZUluc3RhbmNlKHQse3RvZ2dsZTohMX0pKSkpLHQubGVuZ3RoJiZ0WzBdLl9pc1RyYW5zaXRpb25pbmcpcmV0dXJuO2lmKE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LEx0KS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtmb3IoY29uc3QgZSBvZiB0KWUuaGlkZSgpO2NvbnN0IGU9dGhpcy5fZ2V0RGltZW5zaW9uKCk7dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFB0KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoTXQpLHRoaXMuX2VsZW1lbnQuc3R5bGVbZV09MCx0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fdHJpZ2dlckFycmF5LCEwKSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITA7Y29uc3QgaT1gc2Nyb2xsJHtlWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX1gO3RoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShNdCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFB0LE50KSx0aGlzLl9lbGVtZW50LnN0eWxlW2VdPSIiLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LFN0KX0pLHRoaXMuX2VsZW1lbnQsITApLHRoaXMuX2VsZW1lbnQuc3R5bGVbZV09YCR7dGhpcy5fZWxlbWVudFtpXX1weGB9aGlkZSgpe2lmKHRoaXMuX2lzVHJhbnNpdGlvbmluZ3x8IXRoaXMuX2lzU2hvd24oKSlyZXR1cm47aWYoTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsRHQpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZ2V0RGltZW5zaW9uKCk7dGhpcy5fZWxlbWVudC5zdHlsZVt0XT1gJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RdfXB4YCxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChNdCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFB0LE50KTtmb3IoY29uc3QgdCBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpe2NvbnN0IGU9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHQpO2UmJiF0aGlzLl9pc1Nob3duKGUpJiZ0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RdLCExKX10aGlzLl9pc1RyYW5zaXRpb25pbmc9ITAsdGhpcy5fZWxlbWVudC5zdHlsZVt0XT0iIix0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoTXQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChQdCksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsJHQpfSksdGhpcy5fZWxlbWVudCwhMCl9X2lzU2hvd24odD10aGlzLl9lbGVtZW50KXtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoTnQpfV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0LnRvZ2dsZT1Cb29sZWFuKHQudG9nZ2xlKSx0LnBhcmVudD1yKHQucGFyZW50KSx0fV9nZXREaW1lbnNpb24oKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImNvbGxhcHNlLWhvcml6b250YWwiKT8id2lkdGgiOiJoZWlnaHQifV9pbml0aWFsaXplQ2hpbGRyZW4oKXtpZighdGhpcy5fY29uZmlnLnBhcmVudClyZXR1cm47Y29uc3QgdD10aGlzLl9nZXRGaXJzdExldmVsQ2hpbGRyZW4oRnQpO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKGUpO3QmJnRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhbZV0sdGhpcy5faXNTaG93bih0KSl9fV9nZXRGaXJzdExldmVsQ2hpbGRyZW4odCl7Y29uc3QgZT16LmZpbmQoanQsdGhpcy5fY29uZmlnLnBhcmVudCk7cmV0dXJuIHouZmluZCh0LHRoaXMuX2NvbmZpZy5wYXJlbnQpLmZpbHRlcigodD0+IWUuaW5jbHVkZXModCkpKX1fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHQsZSl7aWYodC5sZW5ndGgpZm9yKGNvbnN0IGkgb2YgdClpLmNsYXNzTGlzdC50b2dnbGUoImNvbGxhcHNlZCIsIWUpLGkuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixlKX1zdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpe2NvbnN0IGU9e307cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYvc2hvd3xoaWRlLy50ZXN0KHQpJiYoZS50b2dnbGU9ITEpLHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBpPUJ0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyxlKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWlbdF0pdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApO2lbdF0oKX19KSl9fU4ub24oZG9jdW1lbnQsSXQsRnQsKGZ1bmN0aW9uKHQpeygiQSI9PT10LnRhcmdldC50YWdOYW1lfHx0LmRlbGVnYXRlVGFyZ2V0JiYiQSI9PT10LmRlbGVnYXRlVGFyZ2V0LnRhZ05hbWUpJiZ0LnByZXZlbnREZWZhdWx0KCk7Zm9yKGNvbnN0IHQgb2Ygei5nZXRNdWx0aXBsZUVsZW1lbnRzRnJvbVNlbGVjdG9yKHRoaXMpKUJ0LmdldE9yQ3JlYXRlSW5zdGFuY2UodCx7dG9nZ2xlOiExfSkudG9nZ2xlKCl9KSksbShCdCk7dmFyIHp0PSJ0b3AiLFJ0PSJib3R0b20iLHF0PSJyaWdodCIsVnQ9ImxlZnQiLEt0PSJhdXRvIixRdD1benQsUnQscXQsVnRdLFh0PSJzdGFydCIsWXQ9ImVuZCIsVXQ9ImNsaXBwaW5nUGFyZW50cyIsR3Q9InZpZXdwb3J0IixKdD0icG9wcGVyIixadD0icmVmZXJlbmNlIix0ZT1RdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KFtlKyItIitYdCxlKyItIitZdF0pfSksW10pLGVlPVtdLmNvbmNhdChRdCxbS3RdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KFtlLGUrIi0iK1h0LGUrIi0iK1l0XSl9KSxbXSksaWU9ImJlZm9yZVJlYWQiLG5lPSJyZWFkIixzZT0iYWZ0ZXJSZWFkIixvZT0iYmVmb3JlTWFpbiIscmU9Im1haW4iLGFlPSJhZnRlck1haW4iLGxlPSJiZWZvcmVXcml0ZSIsY2U9IndyaXRlIixoZT0iYWZ0ZXJXcml0ZSIsZGU9W2llLG5lLHNlLG9lLHJlLGFlLGxlLGNlLGhlXTtmdW5jdGlvbiB1ZSh0KXtyZXR1cm4gdD8odC5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk6bnVsbH1mdW5jdGlvbiBmZSh0KXtpZihudWxsPT10KXJldHVybiB3aW5kb3c7aWYoIltvYmplY3QgV2luZG93XSIhPT10LnRvU3RyaW5nKCkpe3ZhciBlPXQub3duZXJEb2N1bWVudDtyZXR1cm4gZSYmZS5kZWZhdWx0Vmlld3x8d2luZG93fXJldHVybiB0fWZ1bmN0aW9uIHBlKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZmUodCkuRWxlbWVudHx8dCBpbnN0YW5jZW9mIEVsZW1lbnR9ZnVuY3Rpb24gbWUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBmZSh0KS5IVE1MRWxlbWVudHx8dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fWZ1bmN0aW9uIGdlKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgU2hhZG93Um9vdCYmKHQgaW5zdGFuY2VvZiBmZSh0KS5TaGFkb3dSb290fHx0IGluc3RhbmNlb2YgU2hhZG93Um9vdCl9Y29uc3QgX2U9e25hbWU6ImFwcGx5U3R5bGVzIixlbmFibGVkOiEwLHBoYXNlOiJ3cml0ZSIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZTtPYmplY3Qua2V5cyhlLmVsZW1lbnRzKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1lLnN0eWxlc1t0XXx8e30sbj1lLmF0dHJpYnV0ZXNbdF18fHt9LHM9ZS5lbGVtZW50c1t0XTttZShzKSYmdWUocykmJihPYmplY3QuYXNzaWduKHMuc3R5bGUsaSksT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9blt0XTshMT09PWU/cy5yZW1vdmVBdHRyaWJ1dGUodCk6cy5zZXRBdHRyaWJ1dGUodCwhMD09PWU/IiI6ZSl9KSkpfSkpfSxlZmZlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXtwb3BwZXI6e3Bvc2l0aW9uOmUub3B0aW9ucy5zdHJhdGVneSxsZWZ0OiIwIix0b3A6IjAiLG1hcmdpbjoiMCJ9LGFycm93Ontwb3NpdGlvbjoiYWJzb2x1dGUifSxyZWZlcmVuY2U6e319O3JldHVybiBPYmplY3QuYXNzaWduKGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLGkucG9wcGVyKSxlLnN0eWxlcz1pLGUuZWxlbWVudHMuYXJyb3cmJk9iamVjdC5hc3NpZ24oZS5lbGVtZW50cy5hcnJvdy5zdHlsZSxpLmFycm93KSxmdW5jdGlvbigpe09iamVjdC5rZXlzKGUuZWxlbWVudHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZWxlbWVudHNbdF0scz1lLmF0dHJpYnV0ZXNbdF18fHt9LG89T2JqZWN0LmtleXMoZS5zdHlsZXMuaGFzT3duUHJvcGVydHkodCk/ZS5zdHlsZXNbdF06aVt0XSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2VdPSIiLHR9KSx7fSk7bWUobikmJnVlKG4pJiYoT2JqZWN0LmFzc2lnbihuLnN0eWxlLG8pLE9iamVjdC5rZXlzKHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe24ucmVtb3ZlQXR0cmlidXRlKHQpfSkpKX0pKX19LHJlcXVpcmVzOlsiY29tcHV0ZVN0eWxlcyJdfTtmdW5jdGlvbiBiZSh0KXtyZXR1cm4gdC5zcGxpdCgiLSIpWzBdfXZhciB2ZT1NYXRoLm1heCx5ZT1NYXRoLm1pbix3ZT1NYXRoLnJvdW5kO2Z1bmN0aW9uIEFlKCl7dmFyIHQ9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIG51bGwhPXQmJnQuYnJhbmRzJiZBcnJheS5pc0FycmF5KHQuYnJhbmRzKT90LmJyYW5kcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJyYW5kKyIvIit0LnZlcnNpb259KSkuam9pbigiICIpOm5hdmlnYXRvci51c2VyQWdlbnR9ZnVuY3Rpb24gRWUoKXtyZXR1cm4hL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChBZSgpKX1mdW5jdGlvbiBUZSh0LGUsaSl7dm9pZCAwPT09ZSYmKGU9ITEpLHZvaWQgMD09PWkmJihpPSExKTt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9MSxvPTE7ZSYmbWUodCkmJihzPXQub2Zmc2V0V2lkdGg+MCYmd2Uobi53aWR0aCkvdC5vZmZzZXRXaWR0aHx8MSxvPXQub2Zmc2V0SGVpZ2h0PjAmJndlKG4uaGVpZ2h0KS90Lm9mZnNldEhlaWdodHx8MSk7dmFyIHI9KHBlKHQpP2ZlKHQpOndpbmRvdykudmlzdWFsVmlld3BvcnQsYT0hRWUoKSYmaSxsPShuLmxlZnQrKGEmJnI/ci5vZmZzZXRMZWZ0OjApKS9zLGM9KG4udG9wKyhhJiZyP3Iub2Zmc2V0VG9wOjApKS9vLGg9bi53aWR0aC9zLGQ9bi5oZWlnaHQvbztyZXR1cm57d2lkdGg6aCxoZWlnaHQ6ZCx0b3A6YyxyaWdodDpsK2gsYm90dG9tOmMrZCxsZWZ0OmwseDpsLHk6Y319ZnVuY3Rpb24gQ2UodCl7dmFyIGU9VGUodCksaT10Lm9mZnNldFdpZHRoLG49dC5vZmZzZXRIZWlnaHQ7cmV0dXJuIE1hdGguYWJzKGUud2lkdGgtaSk8PTEmJihpPWUud2lkdGgpLE1hdGguYWJzKGUuaGVpZ2h0LW4pPD0xJiYobj1lLmhlaWdodCkse3g6dC5vZmZzZXRMZWZ0LHk6dC5vZmZzZXRUb3Asd2lkdGg6aSxoZWlnaHQ6bn19ZnVuY3Rpb24gT2UodCxlKXt2YXIgaT1lLmdldFJvb3ROb2RlJiZlLmdldFJvb3ROb2RlKCk7aWYodC5jb250YWlucyhlKSlyZXR1cm4hMDtpZihpJiZnZShpKSl7dmFyIG49ZTtkb3tpZihuJiZ0LmlzU2FtZU5vZGUobikpcmV0dXJuITA7bj1uLnBhcmVudE5vZGV8fG4uaG9zdH13aGlsZShuKX1yZXR1cm4hMX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4gZmUodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0KX1mdW5jdGlvbiBrZSh0KXtyZXR1cm5bInRhYmxlIiwidGQiLCJ0aCJdLmluZGV4T2YodWUodCkpPj0wfWZ1bmN0aW9uIExlKHQpe3JldHVybigocGUodCk/dC5vd25lckRvY3VtZW50OnQuZG9jdW1lbnQpfHx3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBTZSh0KXtyZXR1cm4iaHRtbCI9PT11ZSh0KT90OnQuYXNzaWduZWRTbG90fHx0LnBhcmVudE5vZGV8fChnZSh0KT90Lmhvc3Q6bnVsbCl8fExlKHQpfWZ1bmN0aW9uIERlKHQpe3JldHVybiBtZSh0KSYmImZpeGVkIiE9PXhlKHQpLnBvc2l0aW9uP3Qub2Zmc2V0UGFyZW50Om51bGx9ZnVuY3Rpb24gJGUodCl7Zm9yKHZhciBlPWZlKHQpLGk9RGUodCk7aSYma2UoaSkmJiJzdGF0aWMiPT09eGUoaSkucG9zaXRpb247KWk9RGUoaSk7cmV0dXJuIGkmJigiaHRtbCI9PT11ZShpKXx8ImJvZHkiPT09dWUoaSkmJiJzdGF0aWMiPT09eGUoaSkucG9zaXRpb24pP2U6aXx8ZnVuY3Rpb24odCl7dmFyIGU9L2ZpcmVmb3gvaS50ZXN0KEFlKCkpO2lmKC9UcmlkZW50L2kudGVzdChBZSgpKSYmbWUodCkmJiJmaXhlZCI9PT14ZSh0KS5wb3NpdGlvbilyZXR1cm4gbnVsbDt2YXIgaT1TZSh0KTtmb3IoZ2UoaSkmJihpPWkuaG9zdCk7bWUoaSkmJlsiaHRtbCIsImJvZHkiXS5pbmRleE9mKHVlKGkpKTwwOyl7dmFyIG49eGUoaSk7aWYoIm5vbmUiIT09bi50cmFuc2Zvcm18fCJub25lIiE9PW4ucGVyc3BlY3RpdmV8fCJwYWludCI9PT1uLmNvbnRhaW58fC0xIT09WyJ0cmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZSJdLmluZGV4T2Yobi53aWxsQ2hhbmdlKXx8ZSYmImZpbHRlciI9PT1uLndpbGxDaGFuZ2V8fGUmJm4uZmlsdGVyJiYibm9uZSIhPT1uLmZpbHRlcilyZXR1cm4gaTtpPWkucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0odCl8fGV9ZnVuY3Rpb24gSWUodCl7cmV0dXJuWyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHQpPj0wPyJ4IjoieSJ9ZnVuY3Rpb24gTmUodCxlLGkpe3JldHVybiB2ZSh0LHllKGUsaSkpfWZ1bmN0aW9uIFBlKHQpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sdCl9ZnVuY3Rpb24gTWUodCxlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGVbaV09dCxlfSkse30pfWNvbnN0IGplPXtuYW1lOiJhcnJvdyIsZW5hYmxlZDohMCxwaGFzZToibWFpbiIsZm46ZnVuY3Rpb24odCl7dmFyIGUsaT10LnN0YXRlLG49dC5uYW1lLHM9dC5vcHRpb25zLG89aS5lbGVtZW50cy5hcnJvdyxyPWkubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLGE9YmUoaS5wbGFjZW1lbnQpLGw9SWUoYSksYz1bVnQscXRdLmluZGV4T2YoYSk+PTA/ImhlaWdodCI6IndpZHRoIjtpZihvJiZyKXt2YXIgaD1mdW5jdGlvbih0LGUpe3JldHVybiBQZSgibnVtYmVyIiE9dHlwZW9mKHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChPYmplY3QuYXNzaWduKHt9LGUucmVjdHMse3BsYWNlbWVudDplLnBsYWNlbWVudH0pKTp0KT90Ok1lKHQsUXQpKX0ocy5wYWRkaW5nLGkpLGQ9Q2UobyksdT0ieSI9PT1sP3p0OlZ0LGY9InkiPT09bD9SdDpxdCxwPWkucmVjdHMucmVmZXJlbmNlW2NdK2kucmVjdHMucmVmZXJlbmNlW2xdLXJbbF0taS5yZWN0cy5wb3BwZXJbY10sbT1yW2xdLWkucmVjdHMucmVmZXJlbmNlW2xdLGc9JGUobyksXz1nPyJ5Ij09PWw/Zy5jbGllbnRIZWlnaHR8fDA6Zy5jbGllbnRXaWR0aHx8MDowLGI9cC8yLW0vMix2PWhbdV0seT1fLWRbY10taFtmXSx3PV8vMi1kW2NdLzIrYixBPU5lKHYsdyx5KSxFPWw7aS5tb2RpZmllcnNEYXRhW25dPSgoZT17fSlbRV09QSxlLmNlbnRlck9mZnNldD1BLXcsZSl9fSxlZmZlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucy5lbGVtZW50LG49dm9pZCAwPT09aT8iW2RhdGEtcG9wcGVyLWFycm93XSI6aTtudWxsIT1uJiYoInN0cmluZyIhPXR5cGVvZiBufHwobj1lLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKG4pKSkmJk9lKGUuZWxlbWVudHMucG9wcGVyLG4pJiYoZS5lbGVtZW50cy5hcnJvdz1uKX0scmVxdWlyZXM6WyJwb3BwZXJPZmZzZXRzIl0scmVxdWlyZXNJZkV4aXN0czpbInByZXZlbnRPdmVyZmxvdyJdfTtmdW5jdGlvbiBGZSh0KXtyZXR1cm4gdC5zcGxpdCgiLSIpWzFdfXZhciBIZT17dG9wOiJhdXRvIixyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIixsZWZ0OiJhdXRvIn07ZnVuY3Rpb24gV2UodCl7dmFyIGUsaT10LnBvcHBlcixuPXQucG9wcGVyUmVjdCxzPXQucGxhY2VtZW50LG89dC52YXJpYXRpb24scj10Lm9mZnNldHMsYT10LnBvc2l0aW9uLGw9dC5ncHVBY2NlbGVyYXRpb24sYz10LmFkYXB0aXZlLGg9dC5yb3VuZE9mZnNldHMsZD10LmlzRml4ZWQsdT1yLngsZj12b2lkIDA9PT11PzA6dSxwPXIueSxtPXZvaWQgMD09PXA/MDpwLGc9ImZ1bmN0aW9uIj09dHlwZW9mIGg/aCh7eDpmLHk6bX0pOnt4OmYseTptfTtmPWcueCxtPWcueTt2YXIgXz1yLmhhc093blByb3BlcnR5KCJ4IiksYj1yLmhhc093blByb3BlcnR5KCJ5Iiksdj1WdCx5PXp0LHc9d2luZG93O2lmKGMpe3ZhciBBPSRlKGkpLEU9ImNsaWVudEhlaWdodCIsVD0iY2xpZW50V2lkdGgiO0E9PT1mZShpKSYmInN0YXRpYyIhPT14ZShBPUxlKGkpKS5wb3NpdGlvbiYmImFic29sdXRlIj09PWEmJihFPSJzY3JvbGxIZWlnaHQiLFQ9InNjcm9sbFdpZHRoIiksKHM9PT16dHx8KHM9PT1WdHx8cz09PXF0KSYmbz09PVl0KSYmKHk9UnQsbS09KGQmJkE9PT13JiZ3LnZpc3VhbFZpZXdwb3J0P3cudmlzdWFsVmlld3BvcnQuaGVpZ2h0OkFbRV0pLW4uaGVpZ2h0LG0qPWw/MTotMSkscyE9PVZ0JiYocyE9PXp0JiZzIT09UnR8fG8hPT1ZdCl8fCh2PXF0LGYtPShkJiZBPT09dyYmdy52aXN1YWxWaWV3cG9ydD93LnZpc3VhbFZpZXdwb3J0LndpZHRoOkFbVF0pLW4ud2lkdGgsZio9bD8xOi0xKX12YXIgQyxPPU9iamVjdC5hc3NpZ24oe3Bvc2l0aW9uOmF9LGMmJkhlKSx4PSEwPT09aD9mdW5jdGlvbih0LGUpe3ZhciBpPXQueCxuPXQueSxzPWUuZGV2aWNlUGl4ZWxSYXRpb3x8MTtyZXR1cm57eDp3ZShpKnMpL3N8fDAseTp3ZShuKnMpL3N8fDB9fSh7eDpmLHk6bX0sZmUoaSkpOnt4OmYseTptfTtyZXR1cm4gZj14LngsbT14LnksbD9PYmplY3QuYXNzaWduKHt9LE8sKChDPXt9KVt5XT1iPyIwIjoiIixDW3ZdPV8/IjAiOiIiLEMudHJhbnNmb3JtPSh3LmRldmljZVBpeGVsUmF0aW98fDEpPD0xPyJ0cmFuc2xhdGUoIitmKyJweCwgIittKyJweCkiOiJ0cmFuc2xhdGUzZCgiK2YrInB4LCAiK20rInB4LCAwKSIsQykpOk9iamVjdC5hc3NpZ24oe30sTywoKGU9e30pW3ldPWI/bSsicHgiOiIiLGVbdl09Xz9mKyJweCI6IiIsZS50cmFuc2Zvcm09IiIsZSkpfWNvbnN0IEJlPXtuYW1lOiJjb21wdXRlU3R5bGVzIixlbmFibGVkOiEwLHBoYXNlOiJiZWZvcmVXcml0ZSIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucyxuPWkuZ3B1QWNjZWxlcmF0aW9uLHM9dm9pZCAwPT09bnx8bixvPWkuYWRhcHRpdmUscj12b2lkIDA9PT1vfHxvLGE9aS5yb3VuZE9mZnNldHMsbD12b2lkIDA9PT1hfHxhLGM9e3BsYWNlbWVudDpiZShlLnBsYWNlbWVudCksdmFyaWF0aW9uOkZlKGUucGxhY2VtZW50KSxwb3BwZXI6ZS5lbGVtZW50cy5wb3BwZXIscG9wcGVyUmVjdDplLnJlY3RzLnBvcHBlcixncHVBY2NlbGVyYXRpb246cyxpc0ZpeGVkOiJmaXhlZCI9PT1lLm9wdGlvbnMuc3RyYXRlZ3l9O251bGwhPWUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzJiYoZS5zdHlsZXMucG9wcGVyPU9iamVjdC5hc3NpZ24oe30sZS5zdHlsZXMucG9wcGVyLFdlKE9iamVjdC5hc3NpZ24oe30sYyx7b2Zmc2V0czplLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxwb3NpdGlvbjplLm9wdGlvbnMuc3RyYXRlZ3ksYWRhcHRpdmU6cixyb3VuZE9mZnNldHM6bH0pKSkpLG51bGwhPWUubW9kaWZpZXJzRGF0YS5hcnJvdyYmKGUuc3R5bGVzLmFycm93PU9iamVjdC5hc3NpZ24oe30sZS5zdHlsZXMuYXJyb3csV2UoT2JqZWN0LmFzc2lnbih7fSxjLHtvZmZzZXRzOmUubW9kaWZpZXJzRGF0YS5hcnJvdyxwb3NpdGlvbjoiYWJzb2x1dGUiLGFkYXB0aXZlOiExLHJvdW5kT2Zmc2V0czpsfSkpKSksZS5hdHRyaWJ1dGVzLnBvcHBlcj1PYmplY3QuYXNzaWduKHt9LGUuYXR0cmlidXRlcy5wb3BwZXIseyJkYXRhLXBvcHBlci1wbGFjZW1lbnQiOmUucGxhY2VtZW50fSl9LGRhdGE6e319O3ZhciB6ZT17cGFzc2l2ZTohMH07Y29uc3QgUmU9e25hbWU6ImV2ZW50TGlzdGVuZXJzIixlbmFibGVkOiEwLHBoYXNlOiJ3cml0ZSIsZm46ZnVuY3Rpb24oKXt9LGVmZmVjdDpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5pbnN0YW5jZSxuPXQub3B0aW9ucyxzPW4uc2Nyb2xsLG89dm9pZCAwPT09c3x8cyxyPW4ucmVzaXplLGE9dm9pZCAwPT09cnx8cixsPWZlKGUuZWxlbWVudHMucG9wcGVyKSxjPVtdLmNvbmNhdChlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO3JldHVybiBvJiZjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixpLnVwZGF0ZSx6ZSl9KSksYSYmbC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGkudXBkYXRlLHplKSxmdW5jdGlvbigpe28mJmMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGkudXBkYXRlLHplKX0pKSxhJiZsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsaS51cGRhdGUsemUpfX0sZGF0YTp7fX07dmFyIHFlPXtsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQiLGJvdHRvbToidG9wIix0b3A6ImJvdHRvbSJ9O2Z1bmN0aW9uIFZlKHQpe3JldHVybiB0LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLChmdW5jdGlvbih0KXtyZXR1cm4gcWVbdF19KSl9dmFyIEtlPXtzdGFydDoiZW5kIixlbmQ6InN0YXJ0In07ZnVuY3Rpb24gUWUodCl7cmV0dXJuIHQucmVwbGFjZSgvc3RhcnR8ZW5kL2csKGZ1bmN0aW9uKHQpe3JldHVybiBLZVt0XX0pKX1mdW5jdGlvbiBYZSh0KXt2YXIgZT1mZSh0KTtyZXR1cm57c2Nyb2xsTGVmdDplLnBhZ2VYT2Zmc2V0LHNjcm9sbFRvcDplLnBhZ2VZT2Zmc2V0fX1mdW5jdGlvbiBZZSh0KXtyZXR1cm4gVGUoTGUodCkpLmxlZnQrWGUodCkuc2Nyb2xsTGVmdH1mdW5jdGlvbiBVZSh0KXt2YXIgZT14ZSh0KSxpPWUub3ZlcmZsb3csbj1lLm92ZXJmbG93WCxzPWUub3ZlcmZsb3dZO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChpK3Mrbil9ZnVuY3Rpb24gR2UodCl7cmV0dXJuWyJodG1sIiwiYm9keSIsIiNkb2N1bWVudCJdLmluZGV4T2YodWUodCkpPj0wP3Qub3duZXJEb2N1bWVudC5ib2R5Om1lKHQpJiZVZSh0KT90OkdlKFNlKHQpKX1mdW5jdGlvbiBKZSh0LGUpe3ZhciBpO3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgbj1HZSh0KSxzPW49PT0obnVsbD09KGk9dC5vd25lckRvY3VtZW50KT92b2lkIDA6aS5ib2R5KSxvPWZlKG4pLHI9cz9bb10uY29uY2F0KG8udmlzdWFsVmlld3BvcnR8fFtdLFVlKG4pP246W10pOm4sYT1lLmNvbmNhdChyKTtyZXR1cm4gcz9hOmEuY29uY2F0KEplKFNlKHIpKSl9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdCx7bGVmdDp0LngsdG9wOnQueSxyaWdodDp0LngrdC53aWR0aCxib3R0b206dC55K3QuaGVpZ2h0fSl9ZnVuY3Rpb24gdGkodCxlLGkpe3JldHVybiBlPT09R3Q/WmUoZnVuY3Rpb24odCxlKXt2YXIgaT1mZSh0KSxuPUxlKHQpLHM9aS52aXN1YWxWaWV3cG9ydCxvPW4uY2xpZW50V2lkdGgscj1uLmNsaWVudEhlaWdodCxhPTAsbD0wO2lmKHMpe289cy53aWR0aCxyPXMuaGVpZ2h0O3ZhciBjPUVlKCk7KGN8fCFjJiYiZml4ZWQiPT09ZSkmJihhPXMub2Zmc2V0TGVmdCxsPXMub2Zmc2V0VG9wKX1yZXR1cm57d2lkdGg6byxoZWlnaHQ6cix4OmErWWUodCkseTpsfX0odCxpKSk6cGUoZSk/ZnVuY3Rpb24odCxlKXt2YXIgaT1UZSh0LCExLCJmaXhlZCI9PT1lKTtyZXR1cm4gaS50b3A9aS50b3ArdC5jbGllbnRUb3AsaS5sZWZ0PWkubGVmdCt0LmNsaWVudExlZnQsaS5ib3R0b209aS50b3ArdC5jbGllbnRIZWlnaHQsaS5yaWdodD1pLmxlZnQrdC5jbGllbnRXaWR0aCxpLndpZHRoPXQuY2xpZW50V2lkdGgsaS5oZWlnaHQ9dC5jbGllbnRIZWlnaHQsaS54PWkubGVmdCxpLnk9aS50b3AsaX0oZSxpKTpaZShmdW5jdGlvbih0KXt2YXIgZSxpPUxlKHQpLG49WGUodCkscz1udWxsPT0oZT10Lm93bmVyRG9jdW1lbnQpP3ZvaWQgMDplLmJvZHksbz12ZShpLnNjcm9sbFdpZHRoLGkuY2xpZW50V2lkdGgscz9zLnNjcm9sbFdpZHRoOjAscz9zLmNsaWVudFdpZHRoOjApLHI9dmUoaS5zY3JvbGxIZWlnaHQsaS5jbGllbnRIZWlnaHQscz9zLnNjcm9sbEhlaWdodDowLHM/cy5jbGllbnRIZWlnaHQ6MCksYT0tbi5zY3JvbGxMZWZ0K1llKHQpLGw9LW4uc2Nyb2xsVG9wO3JldHVybiJydGwiPT09eGUoc3x8aSkuZGlyZWN0aW9uJiYoYSs9dmUoaS5jbGllbnRXaWR0aCxzP3MuY2xpZW50V2lkdGg6MCktbykse3dpZHRoOm8saGVpZ2h0OnIseDphLHk6bH19KExlKHQpKSl9ZnVuY3Rpb24gZWkodCl7dmFyIGUsaT10LnJlZmVyZW5jZSxuPXQuZWxlbWVudCxzPXQucGxhY2VtZW50LG89cz9iZShzKTpudWxsLHI9cz9GZShzKTpudWxsLGE9aS54K2kud2lkdGgvMi1uLndpZHRoLzIsbD1pLnkraS5oZWlnaHQvMi1uLmhlaWdodC8yO3N3aXRjaChvKXtjYXNlIHp0OmU9e3g6YSx5OmkueS1uLmhlaWdodH07YnJlYWs7Y2FzZSBSdDplPXt4OmEseTppLnkraS5oZWlnaHR9O2JyZWFrO2Nhc2UgcXQ6ZT17eDppLngraS53aWR0aCx5Omx9O2JyZWFrO2Nhc2UgVnQ6ZT17eDppLngtbi53aWR0aCx5Omx9O2JyZWFrO2RlZmF1bHQ6ZT17eDppLngseTppLnl9fXZhciBjPW8/SWUobyk6bnVsbDtpZihudWxsIT1jKXt2YXIgaD0ieSI9PT1jPyJoZWlnaHQiOiJ3aWR0aCI7c3dpdGNoKHIpe2Nhc2UgWHQ6ZVtjXT1lW2NdLShpW2hdLzItbltoXS8yKTticmVhaztjYXNlIFl0OmVbY109ZVtjXSsoaVtoXS8yLW5baF0vMil9fXJldHVybiBlfWZ1bmN0aW9uIGlpKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBpPWUsbj1pLnBsYWNlbWVudCxzPXZvaWQgMD09PW4/dC5wbGFjZW1lbnQ6bixvPWkuc3RyYXRlZ3kscj12b2lkIDA9PT1vP3Quc3RyYXRlZ3k6byxhPWkuYm91bmRhcnksbD12b2lkIDA9PT1hP1V0OmEsYz1pLnJvb3RCb3VuZGFyeSxoPXZvaWQgMD09PWM/R3Q6YyxkPWkuZWxlbWVudENvbnRleHQsdT12b2lkIDA9PT1kP0p0OmQsZj1pLmFsdEJvdW5kYXJ5LHA9dm9pZCAwIT09ZiYmZixtPWkucGFkZGluZyxnPXZvaWQgMD09PW0/MDptLF89UGUoIm51bWJlciIhPXR5cGVvZiBnP2c6TWUoZyxRdCkpLGI9dT09PUp0P1p0Okp0LHY9dC5yZWN0cy5wb3BwZXIseT10LmVsZW1lbnRzW3A/Yjp1XSx3PWZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzPSJjbGlwcGluZ1BhcmVudHMiPT09ZT9mdW5jdGlvbih0KXt2YXIgZT1KZShTZSh0KSksaT1bImFic29sdXRlIiwiZml4ZWQiXS5pbmRleE9mKHhlKHQpLnBvc2l0aW9uKT49MCYmbWUodCk/JGUodCk6dDtyZXR1cm4gcGUoaSk/ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBwZSh0KSYmT2UodCxpKSYmImJvZHkiIT09dWUodCl9KSk6W119KHQpOltdLmNvbmNhdChlKSxvPVtdLmNvbmNhdChzLFtpXSkscj1vWzBdLGE9by5yZWR1Y2UoKGZ1bmN0aW9uKGUsaSl7dmFyIHM9dGkodCxpLG4pO3JldHVybiBlLnRvcD12ZShzLnRvcCxlLnRvcCksZS5yaWdodD15ZShzLnJpZ2h0LGUucmlnaHQpLGUuYm90dG9tPXllKHMuYm90dG9tLGUuYm90dG9tKSxlLmxlZnQ9dmUocy5sZWZ0LGUubGVmdCksZX0pLHRpKHQscixuKSk7cmV0dXJuIGEud2lkdGg9YS5yaWdodC1hLmxlZnQsYS5oZWlnaHQ9YS5ib3R0b20tYS50b3AsYS54PWEubGVmdCxhLnk9YS50b3AsYX0ocGUoeSk/eTp5LmNvbnRleHRFbGVtZW50fHxMZSh0LmVsZW1lbnRzLnBvcHBlciksbCxoLHIpLEE9VGUodC5lbGVtZW50cy5yZWZlcmVuY2UpLEU9ZWkoe3JlZmVyZW5jZTpBLGVsZW1lbnQ6dixzdHJhdGVneToiYWJzb2x1dGUiLHBsYWNlbWVudDpzfSksVD1aZShPYmplY3QuYXNzaWduKHt9LHYsRSkpLEM9dT09PUp0P1Q6QSxPPXt0b3A6dy50b3AtQy50b3ArXy50b3AsYm90dG9tOkMuYm90dG9tLXcuYm90dG9tK18uYm90dG9tLGxlZnQ6dy5sZWZ0LUMubGVmdCtfLmxlZnQscmlnaHQ6Qy5yaWdodC13LnJpZ2h0K18ucmlnaHR9LHg9dC5tb2RpZmllcnNEYXRhLm9mZnNldDtpZih1PT09SnQmJngpe3ZhciBrPXhbc107T2JqZWN0LmtleXMoTykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9W3F0LFJ0XS5pbmRleE9mKHQpPj0wPzE6LTEsaT1benQsUnRdLmluZGV4T2YodCk+PTA/InkiOiJ4IjtPW3RdKz1rW2ldKmV9KSl9cmV0dXJuIE99ZnVuY3Rpb24gbmkodCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIGk9ZSxuPWkucGxhY2VtZW50LHM9aS5ib3VuZGFyeSxvPWkucm9vdEJvdW5kYXJ5LHI9aS5wYWRkaW5nLGE9aS5mbGlwVmFyaWF0aW9ucyxsPWkuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLGM9dm9pZCAwPT09bD9lZTpsLGg9RmUobiksZD1oP2E/dGU6dGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gRmUodCk9PT1ofSkpOlF0LHU9ZC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBjLmluZGV4T2YodCk+PTB9KSk7MD09PXUubGVuZ3RoJiYodT1kKTt2YXIgZj11LnJlZHVjZSgoZnVuY3Rpb24oZSxpKXtyZXR1cm4gZVtpXT1paSh0LHtwbGFjZW1lbnQ6aSxib3VuZGFyeTpzLHJvb3RCb3VuZGFyeTpvLHBhZGRpbmc6cn0pW2JlKGkpXSxlfSkse30pO3JldHVybiBPYmplY3Qua2V5cyhmKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBmW3RdLWZbZV19KSl9Y29uc3Qgc2k9e25hbWU6ImZsaXAiLGVuYWJsZWQ6ITAscGhhc2U6Im1haW4iLGZuOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsaT10Lm9wdGlvbnMsbj10Lm5hbWU7aWYoIWUubW9kaWZpZXJzRGF0YVtuXS5fc2tpcCl7Zm9yKHZhciBzPWkubWFpbkF4aXMsbz12b2lkIDA9PT1zfHxzLHI9aS5hbHRBeGlzLGE9dm9pZCAwPT09cnx8cixsPWkuZmFsbGJhY2tQbGFjZW1lbnRzLGM9aS5wYWRkaW5nLGg9aS5ib3VuZGFyeSxkPWkucm9vdEJvdW5kYXJ5LHU9aS5hbHRCb3VuZGFyeSxmPWkuZmxpcFZhcmlhdGlvbnMscD12b2lkIDA9PT1mfHxmLG09aS5hbGxvd2VkQXV0b1BsYWNlbWVudHMsZz1lLm9wdGlvbnMucGxhY2VtZW50LF89YmUoZyksYj1sfHwoXyE9PWcmJnA/ZnVuY3Rpb24odCl7aWYoYmUodCk9PT1LdClyZXR1cm5bXTt2YXIgZT1WZSh0KTtyZXR1cm5bUWUodCksZSxRZShlKV19KGcpOltWZShnKV0pLHY9W2ddLmNvbmNhdChiKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQuY29uY2F0KGJlKGkpPT09S3Q/bmkoZSx7cGxhY2VtZW50OmksYm91bmRhcnk6aCxyb290Qm91bmRhcnk6ZCxwYWRkaW5nOmMsZmxpcFZhcmlhdGlvbnM6cCxhbGxvd2VkQXV0b1BsYWNlbWVudHM6bX0pOmkpfSksW10pLHk9ZS5yZWN0cy5yZWZlcmVuY2Usdz1lLnJlY3RzLnBvcHBlcixBPW5ldyBNYXAsRT0hMCxUPXZbMF0sQz0wO0M8di5sZW5ndGg7QysrKXt2YXIgTz12W0NdLHg9YmUoTyksaz1GZShPKT09PVh0LEw9W3p0LFJ0XS5pbmRleE9mKHgpPj0wLFM9TD8id2lkdGgiOiJoZWlnaHQiLEQ9aWkoZSx7cGxhY2VtZW50Ok8sYm91bmRhcnk6aCxyb290Qm91bmRhcnk6ZCxhbHRCb3VuZGFyeTp1LHBhZGRpbmc6Y30pLCQ9TD9rP3F0OlZ0Oms/UnQ6enQ7eVtTXT53W1NdJiYoJD1WZSgkKSk7dmFyIEk9VmUoJCksTj1bXTtpZihvJiZOLnB1c2goRFt4XTw9MCksYSYmTi5wdXNoKERbJF08PTAsRFtJXTw9MCksTi5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkpe1Q9TyxFPSExO2JyZWFrfUEuc2V0KE8sTil9aWYoRSlmb3IodmFyIFA9ZnVuY3Rpb24odCl7dmFyIGU9di5maW5kKChmdW5jdGlvbihlKXt2YXIgaT1BLmdldChlKTtpZihpKXJldHVybiBpLnNsaWNlKDAsdCkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpfSkpO2lmKGUpcmV0dXJuIFQ9ZSwiYnJlYWsifSxNPXA/MzoxO00+MCYmImJyZWFrIiE9PVAoTSk7TS0tKTtlLnBsYWNlbWVudCE9PVQmJihlLm1vZGlmaWVyc0RhdGFbbl0uX3NraXA9ITAsZS5wbGFjZW1lbnQ9VCxlLnJlc2V0PSEwKX19LHJlcXVpcmVzSWZFeGlzdHM6WyJvZmZzZXQiXSxkYXRhOntfc2tpcDohMX19O2Z1bmN0aW9uIG9pKHQsZSxpKXtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e3g6MCx5OjB9KSx7dG9wOnQudG9wLWUuaGVpZ2h0LWkueSxyaWdodDp0LnJpZ2h0LWUud2lkdGgraS54LGJvdHRvbTp0LmJvdHRvbS1lLmhlaWdodCtpLnksbGVmdDp0LmxlZnQtZS53aWR0aC1pLnh9fWZ1bmN0aW9uIHJpKHQpe3JldHVyblt6dCxxdCxSdCxWdF0uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV0+PTB9KSl9Y29uc3QgYWk9e25hbWU6ImhpZGUiLGVuYWJsZWQ6ITAscGhhc2U6Im1haW4iLHJlcXVpcmVzSWZFeGlzdHM6WyJwcmV2ZW50T3ZlcmZsb3ciXSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5uYW1lLG49ZS5yZWN0cy5yZWZlcmVuY2Uscz1lLnJlY3RzLnBvcHBlcixvPWUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3cscj1paShlLHtlbGVtZW50Q29udGV4dDoicmVmZXJlbmNlIn0pLGE9aWkoZSx7YWx0Qm91bmRhcnk6ITB9KSxsPW9pKHIsbiksYz1vaShhLHMsbyksaD1yaShsKSxkPXJpKGMpO2UubW9kaWZpZXJzRGF0YVtpXT17cmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOmwscG9wcGVyRXNjYXBlT2Zmc2V0czpjLGlzUmVmZXJlbmNlSGlkZGVuOmgsaGFzUG9wcGVyRXNjYXBlZDpkfSxlLmF0dHJpYnV0ZXMucG9wcGVyPU9iamVjdC5hc3NpZ24oe30sZS5hdHRyaWJ1dGVzLnBvcHBlcix7ImRhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4iOmgsImRhdGEtcG9wcGVyLWVzY2FwZWQiOmR9KX19LGxpPXtuYW1lOiJvZmZzZXQiLGVuYWJsZWQ6ITAscGhhc2U6Im1haW4iLHJlcXVpcmVzOlsicG9wcGVyT2Zmc2V0cyJdLGZuOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsaT10Lm9wdGlvbnMsbj10Lm5hbWUscz1pLm9mZnNldCxvPXZvaWQgMD09PXM/WzAsMF06cyxyPWVlLnJlZHVjZSgoZnVuY3Rpb24odCxpKXtyZXR1cm4gdFtpXT1mdW5jdGlvbih0LGUsaSl7dmFyIG49YmUodCkscz1bVnQsenRdLmluZGV4T2Yobik+PTA/LTE6MSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2koT2JqZWN0LmFzc2lnbih7fSxlLHtwbGFjZW1lbnQ6dH0pKTppLHI9b1swXSxhPW9bMV07cmV0dXJuIHI9cnx8MCxhPShhfHwwKSpzLFtWdCxxdF0uaW5kZXhPZihuKT49MD97eDphLHk6cn06e3g6cix5OmF9fShpLGUucmVjdHMsbyksdH0pLHt9KSxhPXJbZS5wbGFjZW1lbnRdLGw9YS54LGM9YS55O251bGwhPWUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzJiYoZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCs9bCxlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55Kz1jKSxlLm1vZGlmaWVyc0RhdGFbbl09cn19LGNpPXtuYW1lOiJwb3BwZXJPZmZzZXRzIixlbmFibGVkOiEwLHBoYXNlOiJyZWFkIixmbjpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5uYW1lO2UubW9kaWZpZXJzRGF0YVtpXT1laSh7cmVmZXJlbmNlOmUucmVjdHMucmVmZXJlbmNlLGVsZW1lbnQ6ZS5yZWN0cy5wb3BwZXIsc3RyYXRlZ3k6ImFic29sdXRlIixwbGFjZW1lbnQ6ZS5wbGFjZW1lbnR9KX0sZGF0YTp7fX0saGk9e25hbWU6InByZXZlbnRPdmVyZmxvdyIsZW5hYmxlZDohMCxwaGFzZToibWFpbiIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucyxuPXQubmFtZSxzPWkubWFpbkF4aXMsbz12b2lkIDA9PT1zfHxzLHI9aS5hbHRBeGlzLGE9dm9pZCAwIT09ciYmcixsPWkuYm91bmRhcnksYz1pLnJvb3RCb3VuZGFyeSxoPWkuYWx0Qm91bmRhcnksZD1pLnBhZGRpbmcsdT1pLnRldGhlcixmPXZvaWQgMD09PXV8fHUscD1pLnRldGhlck9mZnNldCxtPXZvaWQgMD09PXA/MDpwLGc9aWkoZSx7Ym91bmRhcnk6bCxyb290Qm91bmRhcnk6YyxwYWRkaW5nOmQsYWx0Qm91bmRhcnk6aH0pLF89YmUoZS5wbGFjZW1lbnQpLGI9RmUoZS5wbGFjZW1lbnQpLHY9IWIseT1JZShfKSx3PSJ4Ij09PXk/InkiOiJ4IixBPWUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLEU9ZS5yZWN0cy5yZWZlcmVuY2UsVD1lLnJlY3RzLnBvcHBlcixDPSJmdW5jdGlvbiI9PXR5cGVvZiBtP20oT2JqZWN0LmFzc2lnbih7fSxlLnJlY3RzLHtwbGFjZW1lbnQ6ZS5wbGFjZW1lbnR9KSk6bSxPPSJudW1iZXIiPT10eXBlb2YgQz97bWFpbkF4aXM6QyxhbHRBeGlzOkN9Ok9iamVjdC5hc3NpZ24oe21haW5BeGlzOjAsYWx0QXhpczowfSxDKSx4PWUubW9kaWZpZXJzRGF0YS5vZmZzZXQ/ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtlLnBsYWNlbWVudF06bnVsbCxrPXt4OjAseTowfTtpZihBKXtpZihvKXt2YXIgTCxTPSJ5Ij09PXk/enQ6VnQsRD0ieSI9PT15P1J0OnF0LCQ9InkiPT09eT8iaGVpZ2h0Ijoid2lkdGgiLEk9QVt5XSxOPUkrZ1tTXSxQPUktZ1tEXSxNPWY/LVRbJF0vMjowLGo9Yj09PVh0P0VbJF06VFskXSxGPWI9PT1YdD8tVFskXTotRVskXSxIPWUuZWxlbWVudHMuYXJyb3csVz1mJiZIP0NlKEgpOnt3aWR0aDowLGhlaWdodDowfSxCPWUubW9kaWZpZXJzRGF0YVsiYXJyb3cjcGVyc2lzdGVudCJdP2UubW9kaWZpZXJzRGF0YVsiYXJyb3cjcGVyc2lzdGVudCJdLnBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSx6PUJbU10sUj1CW0RdLHE9TmUoMCxFWyRdLFdbJF0pLFY9dj9FWyRdLzItTS1xLXotTy5tYWluQXhpczpqLXEtei1PLm1haW5BeGlzLEs9dj8tRVskXS8yK00rcStSK08ubWFpbkF4aXM6RitxK1IrTy5tYWluQXhpcyxRPWUuZWxlbWVudHMuYXJyb3cmJiRlKGUuZWxlbWVudHMuYXJyb3cpLFg9UT8ieSI9PT15P1EuY2xpZW50VG9wfHwwOlEuY2xpZW50TGVmdHx8MDowLFk9bnVsbCE9KEw9bnVsbD09eD92b2lkIDA6eFt5XSk/TDowLFU9SStLLVksRz1OZShmP3llKE4sSStWLVktWCk6TixJLGY/dmUoUCxVKTpQKTtBW3ldPUcsa1t5XT1HLUl9aWYoYSl7dmFyIEosWj0ieCI9PT15P3p0OlZ0LHR0PSJ4Ij09PXk/UnQ6cXQsZXQ9QVt3XSxpdD0ieSI9PT13PyJoZWlnaHQiOiJ3aWR0aCIsbnQ9ZXQrZ1taXSxzdD1ldC1nW3R0XSxvdD0tMSE9PVt6dCxWdF0uaW5kZXhPZihfKSxydD1udWxsIT0oSj1udWxsPT14P3ZvaWQgMDp4W3ddKT9KOjAsYXQ9b3Q/bnQ6ZXQtRVtpdF0tVFtpdF0tcnQrTy5hbHRBeGlzLGx0PW90P2V0K0VbaXRdK1RbaXRdLXJ0LU8uYWx0QXhpczpzdCxjdD1mJiZvdD9mdW5jdGlvbih0LGUsaSl7dmFyIG49TmUodCxlLGkpO3JldHVybiBuPmk/aTpufShhdCxldCxsdCk6TmUoZj9hdDpudCxldCxmP2x0OnN0KTtBW3ddPWN0LGtbd109Y3QtZXR9ZS5tb2RpZmllcnNEYXRhW25dPWt9fSxyZXF1aXJlc0lmRXhpc3RzOlsib2Zmc2V0Il19O2Z1bmN0aW9uIGRpKHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIG4scyxvPW1lKGUpLHI9bWUoZSkmJmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT13ZShlLndpZHRoKS90Lm9mZnNldFdpZHRofHwxLG49d2UoZS5oZWlnaHQpL3Qub2Zmc2V0SGVpZ2h0fHwxO3JldHVybiAxIT09aXx8MSE9PW59KGUpLGE9TGUoZSksbD1UZSh0LHIsaSksYz17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfSxoPXt4OjAseTowfTtyZXR1cm4ob3x8IW8mJiFpKSYmKCgiYm9keSIhPT11ZShlKXx8VWUoYSkpJiYoYz0obj1lKSE9PWZlKG4pJiZtZShuKT97c2Nyb2xsTGVmdDoocz1uKS5zY3JvbGxMZWZ0LHNjcm9sbFRvcDpzLnNjcm9sbFRvcH06WGUobikpLG1lKGUpPygoaD1UZShlLCEwKSkueCs9ZS5jbGllbnRMZWZ0LGgueSs9ZS5jbGllbnRUb3ApOmEmJihoLng9WWUoYSkpKSx7eDpsLmxlZnQrYy5zY3JvbGxMZWZ0LWgueCx5OmwudG9wK2Muc2Nyb2xsVG9wLWgueSx3aWR0aDpsLndpZHRoLGhlaWdodDpsLmhlaWdodH19ZnVuY3Rpb24gdWkodCl7dmFyIGU9bmV3IE1hcCxpPW5ldyBTZXQsbj1bXTtmdW5jdGlvbiBzKHQpe2kuYWRkKHQubmFtZSksW10uY29uY2F0KHQucmVxdWlyZXN8fFtdLHQucmVxdWlyZXNJZkV4aXN0c3x8W10pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCFpLmhhcyh0KSl7dmFyIG49ZS5nZXQodCk7biYmcyhuKX19KSksbi5wdXNoKHQpfXJldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Uuc2V0KHQubmFtZSx0KX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuaGFzKHQubmFtZSl8fHModCl9KSksbn12YXIgZmk9e3BsYWNlbWVudDoiYm90dG9tIixtb2RpZmllcnM6W10sc3RyYXRlZ3k6ImFic29sdXRlIn07ZnVuY3Rpb24gcGkoKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krKyllW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4hZS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl9KSl9ZnVuY3Rpb24gbWkodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQsaT1lLmRlZmF1bHRNb2RpZmllcnMsbj12b2lkIDA9PT1pP1tdOmkscz1lLmRlZmF1bHRPcHRpb25zLG89dm9pZCAwPT09cz9maTpzO3JldHVybiBmdW5jdGlvbih0LGUsaSl7dm9pZCAwPT09aSYmKGk9byk7dmFyIHMscixhPXtwbGFjZW1lbnQ6ImJvdHRvbSIsb3JkZXJlZE1vZGlmaWVyczpbXSxvcHRpb25zOk9iamVjdC5hc3NpZ24oe30sZmksbyksbW9kaWZpZXJzRGF0YTp7fSxlbGVtZW50czp7cmVmZXJlbmNlOnQscG9wcGVyOmV9LGF0dHJpYnV0ZXM6e30sc3R5bGVzOnt9fSxsPVtdLGM9ITEsaD17c3RhdGU6YSxzZXRPcHRpb25zOmZ1bmN0aW9uKGkpe3ZhciBzPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2koYS5vcHRpb25zKTppO2QoKSxhLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7fSxvLGEub3B0aW9ucyxzKSxhLnNjcm9sbFBhcmVudHM9e3JlZmVyZW5jZTpwZSh0KT9KZSh0KTp0LmNvbnRleHRFbGVtZW50P0plKHQuY29udGV4dEVsZW1lbnQpOltdLHBvcHBlcjpKZShlKX07dmFyIHIsYyx1PWZ1bmN0aW9uKHQpe3ZhciBlPXVpKHQpO3JldHVybiBkZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIHQuY29uY2F0KGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5waGFzZT09PWl9KSkpfSksW10pfSgocj1bXS5jb25jYXQobixhLm9wdGlvbnMubW9kaWZpZXJzKSxjPXIucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPXRbZS5uYW1lXTtyZXR1cm4gdFtlLm5hbWVdPWk/T2JqZWN0LmFzc2lnbih7fSxpLGUse29wdGlvbnM6T2JqZWN0LmFzc2lnbih7fSxpLm9wdGlvbnMsZS5vcHRpb25zKSxkYXRhOk9iamVjdC5hc3NpZ24oe30saS5kYXRhLGUuZGF0YSl9KTplLHR9KSx7fSksT2JqZWN0LmtleXMoYykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gY1t0XX0pKSkpO3JldHVybiBhLm9yZGVyZWRNb2RpZmllcnM9dS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVuYWJsZWR9KSksYS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQubmFtZSxpPXQub3B0aW9ucyxuPXZvaWQgMD09PWk/e306aSxzPXQuZWZmZWN0O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgbz1zKHtzdGF0ZTphLG5hbWU6ZSxpbnN0YW5jZTpoLG9wdGlvbnM6bn0pO2wucHVzaChvfHxmdW5jdGlvbigpe30pfX0pKSxoLnVwZGF0ZSgpfSxmb3JjZVVwZGF0ZTpmdW5jdGlvbigpe2lmKCFjKXt2YXIgdD1hLmVsZW1lbnRzLGU9dC5yZWZlcmVuY2UsaT10LnBvcHBlcjtpZihwaShlLGkpKXthLnJlY3RzPXtyZWZlcmVuY2U6ZGkoZSwkZShpKSwiZml4ZWQiPT09YS5vcHRpb25zLnN0cmF0ZWd5KSxwb3BwZXI6Q2UoaSl9LGEucmVzZXQ9ITEsYS5wbGFjZW1lbnQ9YS5vcHRpb25zLnBsYWNlbWVudCxhLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGEubW9kaWZpZXJzRGF0YVt0Lm5hbWVdPU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKX0pKTtmb3IodmFyIG49MDtuPGEub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7bisrKWlmKCEwIT09YS5yZXNldCl7dmFyIHM9YS5vcmRlcmVkTW9kaWZpZXJzW25dLG89cy5mbixyPXMub3B0aW9ucyxsPXZvaWQgMD09PXI/e306cixkPXMubmFtZTsiZnVuY3Rpb24iPT10eXBlb2YgbyYmKGE9byh7c3RhdGU6YSxvcHRpb25zOmwsbmFtZTpkLGluc3RhbmNlOmh9KXx8YSl9ZWxzZSBhLnJlc2V0PSExLG49LTF9fX0sdXBkYXRlOihzPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtoLmZvcmNlVXBkYXRlKCksdChhKX0pKX0sZnVuY3Rpb24oKXtyZXR1cm4gcnx8KHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cj12b2lkIDAsdChzKCkpfSkpfSkpKSxyfSksZGVzdHJveTpmdW5jdGlvbigpe2QoKSxjPSEwfX07aWYoIXBpKHQsZSkpcmV0dXJuIGg7ZnVuY3Rpb24gZCgpe2wuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pKSxsPVtdfXJldHVybiBoLnNldE9wdGlvbnMoaSkudGhlbigoZnVuY3Rpb24odCl7IWMmJmkub25GaXJzdFVwZGF0ZSYmaS5vbkZpcnN0VXBkYXRlKHQpfSkpLGh9fXZhciBnaT1taSgpLF9pPW1pKHtkZWZhdWx0TW9kaWZpZXJzOltSZSxjaSxCZSxfZV19KSxiaT1taSh7ZGVmYXVsdE1vZGlmaWVyczpbUmUsY2ksQmUsX2UsbGksc2ksaGksamUsYWldfSk7Y29uc3Qgdmk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGFmdGVyTWFpbjphZSxhZnRlclJlYWQ6c2UsYWZ0ZXJXcml0ZTpoZSxhcHBseVN0eWxlczpfZSxhcnJvdzpqZSxhdXRvOkt0LGJhc2VQbGFjZW1lbnRzOlF0LGJlZm9yZU1haW46b2UsYmVmb3JlUmVhZDppZSxiZWZvcmVXcml0ZTpsZSxib3R0b206UnQsY2xpcHBpbmdQYXJlbnRzOlV0LGNvbXB1dGVTdHlsZXM6QmUsY3JlYXRlUG9wcGVyOmJpLGNyZWF0ZVBvcHBlckJhc2U6Z2ksY3JlYXRlUG9wcGVyTGl0ZTpfaSxkZXRlY3RPdmVyZmxvdzppaSxlbmQ6WXQsZXZlbnRMaXN0ZW5lcnM6UmUsZmxpcDpzaSxoaWRlOmFpLGxlZnQ6VnQsbWFpbjpyZSxtb2RpZmllclBoYXNlczpkZSxvZmZzZXQ6bGkscGxhY2VtZW50czplZSxwb3BwZXI6SnQscG9wcGVyR2VuZXJhdG9yOm1pLHBvcHBlck9mZnNldHM6Y2kscHJldmVudE92ZXJmbG93OmhpLHJlYWQ6bmUscmVmZXJlbmNlOlp0LHJpZ2h0OnF0LHN0YXJ0Olh0LHRvcDp6dCx2YXJpYXRpb25QbGFjZW1lbnRzOnRlLHZpZXdwb3J0Okd0LHdyaXRlOmNlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHlpPSJkcm9wZG93biIsd2k9Ii5icy5kcm9wZG93biIsQWk9Ii5kYXRhLWFwaSIsRWk9IkFycm93VXAiLFRpPSJBcnJvd0Rvd24iLENpPWBoaWRlJHt3aX1gLE9pPWBoaWRkZW4ke3dpfWAseGk9YHNob3cke3dpfWAsa2k9YHNob3duJHt3aX1gLExpPWBjbGljayR7d2l9JHtBaX1gLFNpPWBrZXlkb3duJHt3aX0ke0FpfWAsRGk9YGtleXVwJHt3aX0ke0FpfWAsJGk9InNob3ciLElpPSdbZGF0YS1icy10b2dnbGU9ImRyb3Bkb3duIl06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknLE5pPWAke0lpfS4keyRpfWAsUGk9Ii5kcm9wZG93bi1tZW51IixNaT1wKCk/InRvcC1lbmQiOiJ0b3Atc3RhcnQiLGppPXAoKT8idG9wLXN0YXJ0IjoidG9wLWVuZCIsRmk9cCgpPyJib3R0b20tZW5kIjoiYm90dG9tLXN0YXJ0IixIaT1wKCk/ImJvdHRvbS1zdGFydCI6ImJvdHRvbS1lbmQiLFdpPXAoKT8ibGVmdC1zdGFydCI6InJpZ2h0LXN0YXJ0IixCaT1wKCk/InJpZ2h0LXN0YXJ0IjoibGVmdC1zdGFydCIsemk9e2F1dG9DbG9zZTohMCxib3VuZGFyeToiY2xpcHBpbmdQYXJlbnRzIixkaXNwbGF5OiJkeW5hbWljIixvZmZzZXQ6WzAsMl0scG9wcGVyQ29uZmlnOm51bGwscmVmZXJlbmNlOiJ0b2dnbGUifSxSaT17YXV0b0Nsb3NlOiIoYm9vbGVhbnxzdHJpbmcpIixib3VuZGFyeToiKHN0cmluZ3xlbGVtZW50KSIsZGlzcGxheToic3RyaW5nIixvZmZzZXQ6IihhcnJheXxzdHJpbmd8ZnVuY3Rpb24pIixwb3BwZXJDb25maWc6IihudWxsfG9iamVjdHxmdW5jdGlvbikiLHJlZmVyZW5jZToiKHN0cmluZ3xlbGVtZW50fG9iamVjdCkifTtjbGFzcyBxaSBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMuX3BvcHBlcj1udWxsLHRoaXMuX3BhcmVudD10aGlzLl9lbGVtZW50LnBhcmVudE5vZGUsdGhpcy5fbWVudT16Lm5leHQodGhpcy5fZWxlbWVudCxQaSlbMF18fHoucHJldih0aGlzLl9lbGVtZW50LFBpKVswXXx8ei5maW5kT25lKFBpLHRoaXMuX3BhcmVudCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIHppfXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gUml9c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuIHlpfXRvZ2dsZSgpe3JldHVybiB0aGlzLl9pc1Nob3duKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9c2hvdygpe2lmKGwodGhpcy5fZWxlbWVudCl8fHRoaXMuX2lzU2hvd24oKSlyZXR1cm47Y29uc3QgdD17cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fTtpZighTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQseGksdCkuZGVmYXVsdFByZXZlbnRlZCl7aWYodGhpcy5fY3JlYXRlUG9wcGVyKCksIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJiF0aGlzLl9wYXJlbnQuY2xvc2VzdCgiLm5hdmJhci1uYXYiKSlmb3IoY29uc3QgdCBvZltdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSlOLm9uKHQsIm1vdXNlb3ZlciIsaCk7dGhpcy5fZWxlbWVudC5mb2N1cygpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy5fbWVudS5jbGFzc0xpc3QuYWRkKCRpKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoJGkpLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LGtpLHQpfX1oaWRlKCl7aWYobCh0aGlzLl9lbGVtZW50KXx8IXRoaXMuX2lzU2hvd24oKSlyZXR1cm47Y29uc3QgdD17cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fTt0aGlzLl9jb21wbGV0ZUhpZGUodCl9ZGlzcG9zZSgpe3RoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSxzdXBlci5kaXNwb3NlKCl9dXBkYXRlKCl7dGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fcG9wcGVyJiZ0aGlzLl9wb3BwZXIudXBkYXRlKCl9X2NvbXBsZXRlSGlkZSh0KXtpZighTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsQ2ksdCkuZGVmYXVsdFByZXZlbnRlZCl7aWYoIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpZm9yKGNvbnN0IHQgb2ZbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpTi5vZmYodCwibW91c2VvdmVyIixoKTt0aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fbWVudS5jbGFzc0xpc3QucmVtb3ZlKCRpKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJGkpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwiZmFsc2UiKSxGLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwicG9wcGVyIiksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsT2ksdCl9fV9nZXRDb25maWcodCl7aWYoIm9iamVjdCI9PXR5cGVvZih0PXN1cGVyLl9nZXRDb25maWcodCkpLnJlZmVyZW5jZSYmIW8odC5yZWZlcmVuY2UpJiYiZnVuY3Rpb24iIT10eXBlb2YgdC5yZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXRocm93IG5ldyBUeXBlRXJyb3IoYCR7eWkudG9VcHBlckNhc2UoKX06IE9wdGlvbiAicmVmZXJlbmNlIiBwcm92aWRlZCB0eXBlICJvYmplY3QiIHdpdGhvdXQgYSByZXF1aXJlZCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiBtZXRob2QuYCk7cmV0dXJuIHR9X2NyZWF0ZVBvcHBlcigpe2lmKHZvaWQgMD09PXZpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvb3RzdHJhcCdzIGRyb3Bkb3ducyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKSIpO2xldCB0PXRoaXMuX2VsZW1lbnQ7InBhcmVudCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP3Q9dGhpcy5fcGFyZW50Om8odGhpcy5fY29uZmlnLnJlZmVyZW5jZSk/dD1yKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpOiJvYmplY3QiPT10eXBlb2YgdGhpcy5fY29uZmlnLnJlZmVyZW5jZSYmKHQ9dGhpcy5fY29uZmlnLnJlZmVyZW5jZSk7Y29uc3QgZT10aGlzLl9nZXRQb3BwZXJDb25maWcoKTt0aGlzLl9wb3BwZXI9YmkodCx0aGlzLl9tZW51LGUpfV9pc1Nob3duKCl7cmV0dXJuIHRoaXMuX21lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKCRpKX1fZ2V0UGxhY2VtZW50KCl7Y29uc3QgdD10aGlzLl9wYXJlbnQ7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoImRyb3BlbmQiKSlyZXR1cm4gV2k7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoImRyb3BzdGFydCIpKXJldHVybiBCaTtpZih0LmNsYXNzTGlzdC5jb250YWlucygiZHJvcHVwLWNlbnRlciIpKXJldHVybiJ0b3AiO2lmKHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkcm9wZG93bi1jZW50ZXIiKSlyZXR1cm4iYm90dG9tIjtjb25zdCBlPSJlbmQiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9tZW51KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWJzLXBvc2l0aW9uIikudHJpbSgpO3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucygiZHJvcHVwIik/ZT9qaTpNaTplP0hpOkZpfV9kZXRlY3ROYXZiYXIoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2VsZW1lbnQuY2xvc2VzdCgiLm5hdmJhciIpfV9nZXRPZmZzZXQoKXtjb25zdHtvZmZzZXQ6dH09dGhpcy5fY29uZmlnO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KCIsIikubWFwKCh0PT5OdW1iZXIucGFyc2VJbnQodCwxMCkpKToiZnVuY3Rpb24iPT10eXBlb2YgdD9lPT50KGUsdGhpcy5fZWxlbWVudCk6dH1fZ2V0UG9wcGVyQ29uZmlnKCl7Y29uc3QgdD17cGxhY2VtZW50OnRoaXMuX2dldFBsYWNlbWVudCgpLG1vZGlmaWVyczpbe25hbWU6InByZXZlbnRPdmVyZmxvdyIsb3B0aW9uczp7Ym91bmRhcnk6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX0se25hbWU6Im9mZnNldCIsb3B0aW9uczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpfX1dfTtyZXR1cm4odGhpcy5faW5OYXZiYXJ8fCJzdGF0aWMiPT09dGhpcy5fY29uZmlnLmRpc3BsYXkpJiYoRi5zZXREYXRhQXR0cmlidXRlKHRoaXMuX21lbnUsInBvcHBlciIsInN0YXRpYyIpLHQubW9kaWZpZXJzPVt7bmFtZToiYXBwbHlTdHlsZXMiLGVuYWJsZWQ6ITF9XSksey4uLnQsLi4uZyh0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnLFt0XSl9fV9zZWxlY3RNZW51SXRlbSh7a2V5OnQsdGFyZ2V0OmV9KXtjb25zdCBpPXouZmluZCgiLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCkiLHRoaXMuX21lbnUpLmZpbHRlcigodD0+YSh0KSkpO2kubGVuZ3RoJiZiKGksZSx0PT09VGksIWkuaW5jbHVkZXMoZSkpLmZvY3VzKCl9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9cWkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7ZVt0XSgpfX0pKX1zdGF0aWMgY2xlYXJNZW51cyh0KXtpZigyPT09dC5idXR0b258fCJrZXl1cCI9PT10LnR5cGUmJiJUYWIiIT09dC5rZXkpcmV0dXJuO2NvbnN0IGU9ei5maW5kKE5pKTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPXFpLmdldEluc3RhbmNlKGkpO2lmKCFlfHwhMT09PWUuX2NvbmZpZy5hdXRvQ2xvc2UpY29udGludWU7Y29uc3Qgbj10LmNvbXBvc2VkUGF0aCgpLHM9bi5pbmNsdWRlcyhlLl9tZW51KTtpZihuLmluY2x1ZGVzKGUuX2VsZW1lbnQpfHwiaW5zaWRlIj09PWUuX2NvbmZpZy5hdXRvQ2xvc2UmJiFzfHwib3V0c2lkZSI9PT1lLl9jb25maWcuYXV0b0Nsb3NlJiZzKWNvbnRpbnVlO2lmKGUuX21lbnUuY29udGFpbnModC50YXJnZXQpJiYoImtleXVwIj09PXQudHlwZSYmIlRhYiI9PT10LmtleXx8L2lucHV0fHNlbGVjdHxvcHRpb258dGV4dGFyZWF8Zm9ybS9pLnRlc3QodC50YXJnZXQudGFnTmFtZSkpKWNvbnRpbnVlO2NvbnN0IG89e3JlbGF0ZWRUYXJnZXQ6ZS5fZWxlbWVudH07ImNsaWNrIj09PXQudHlwZSYmKG8uY2xpY2tFdmVudD10KSxlLl9jb21wbGV0ZUhpZGUobyl9fXN0YXRpYyBkYXRhQXBpS2V5ZG93bkhhbmRsZXIodCl7Y29uc3QgZT0vaW5wdXR8dGV4dGFyZWEvaS50ZXN0KHQudGFyZ2V0LnRhZ05hbWUpLGk9IkVzY2FwZSI9PT10LmtleSxuPVtFaSxUaV0uaW5jbHVkZXModC5rZXkpO2lmKCFuJiYhaSlyZXR1cm47aWYoZSYmIWkpcmV0dXJuO3QucHJldmVudERlZmF1bHQoKTtjb25zdCBzPXRoaXMubWF0Y2hlcyhJaSk/dGhpczp6LnByZXYodGhpcyxJaSlbMF18fHoubmV4dCh0aGlzLElpKVswXXx8ei5maW5kT25lKElpLHQuZGVsZWdhdGVUYXJnZXQucGFyZW50Tm9kZSksbz1xaS5nZXRPckNyZWF0ZUluc3RhbmNlKHMpO2lmKG4pcmV0dXJuIHQuc3RvcFByb3BhZ2F0aW9uKCksby5zaG93KCksdm9pZCBvLl9zZWxlY3RNZW51SXRlbSh0KTtvLl9pc1Nob3duKCkmJih0LnN0b3BQcm9wYWdhdGlvbigpLG8uaGlkZSgpLHMuZm9jdXMoKSl9fU4ub24oZG9jdW1lbnQsU2ksSWkscWkuZGF0YUFwaUtleWRvd25IYW5kbGVyKSxOLm9uKGRvY3VtZW50LFNpLFBpLHFpLmRhdGFBcGlLZXlkb3duSGFuZGxlciksTi5vbihkb2N1bWVudCxMaSxxaS5jbGVhck1lbnVzKSxOLm9uKGRvY3VtZW50LERpLHFpLmNsZWFyTWVudXMpLE4ub24oZG9jdW1lbnQsTGksSWksKGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxxaS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnRvZ2dsZSgpfSkpLG0ocWkpO2NvbnN0IFZpPSJiYWNrZHJvcCIsS2k9InNob3ciLFFpPWBtb3VzZWRvd24uYnMuJHtWaX1gLFhpPXtjbGFzc05hbWU6Im1vZGFsLWJhY2tkcm9wIixjbGlja0NhbGxiYWNrOm51bGwsaXNBbmltYXRlZDohMSxpc1Zpc2libGU6ITAscm9vdEVsZW1lbnQ6ImJvZHkifSxZaT17Y2xhc3NOYW1lOiJzdHJpbmciLGNsaWNrQ2FsbGJhY2s6IihmdW5jdGlvbnxudWxsKSIsaXNBbmltYXRlZDoiYm9vbGVhbiIsaXNWaXNpYmxlOiJib29sZWFuIixyb290RWxlbWVudDoiKGVsZW1lbnR8c3RyaW5nKSJ9O2NsYXNzIFVpIGV4dGVuZHMgSHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy5faXNBcHBlbmRlZD0hMSx0aGlzLl9lbGVtZW50PW51bGx9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIFhpfXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gWWl9c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuIFZpfXNob3codCl7aWYoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpcmV0dXJuIHZvaWQgZyh0KTt0aGlzLl9hcHBlbmQoKTtjb25zdCBlPXRoaXMuX2dldEVsZW1lbnQoKTt0aGlzLl9jb25maWcuaXNBbmltYXRlZCYmZChlKSxlLmNsYXNzTGlzdC5hZGQoS2kpLHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCgpPT57Zyh0KX0pKX1oaWRlKHQpe3RoaXMuX2NvbmZpZy5pc1Zpc2libGU/KHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKEtpKSx0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgoKT0+e3RoaXMuZGlzcG9zZSgpLGcodCl9KSkpOmcodCl9ZGlzcG9zZSgpe3RoaXMuX2lzQXBwZW5kZWQmJihOLm9mZih0aGlzLl9lbGVtZW50LFFpKSx0aGlzLl9lbGVtZW50LnJlbW92ZSgpLHRoaXMuX2lzQXBwZW5kZWQ9ITEpfV9nZXRFbGVtZW50KCl7aWYoIXRoaXMuX2VsZW1lbnQpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9dGhpcy5fY29uZmlnLmNsYXNzTmFtZSx0aGlzLl9jb25maWcuaXNBbmltYXRlZCYmdC5jbGFzc0xpc3QuYWRkKCJmYWRlIiksdGhpcy5fZWxlbWVudD10fXJldHVybiB0aGlzLl9lbGVtZW50fV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0LnJvb3RFbGVtZW50PXIodC5yb290RWxlbWVudCksdH1fYXBwZW5kKCl7aWYodGhpcy5faXNBcHBlbmRlZClyZXR1cm47Y29uc3QgdD10aGlzLl9nZXRFbGVtZW50KCk7dGhpcy5fY29uZmlnLnJvb3RFbGVtZW50LmFwcGVuZCh0KSxOLm9uKHQsUWksKCgpPT57Zyh0aGlzLl9jb25maWcuY2xpY2tDYWxsYmFjayl9KSksdGhpcy5faXNBcHBlbmRlZD0hMH1fZW11bGF0ZUFuaW1hdGlvbih0KXtfKHQsdGhpcy5fZ2V0RWxlbWVudCgpLHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKX19Y29uc3QgR2k9Ii5icy5mb2N1c3RyYXAiLEppPWBmb2N1c2luJHtHaX1gLFppPWBrZXlkb3duLnRhYiR7R2l9YCx0bj0iYmFja3dhcmQiLGVuPXthdXRvZm9jdXM6ITAsdHJhcEVsZW1lbnQ6bnVsbH0sbm49e2F1dG9mb2N1czoiYm9vbGVhbiIsdHJhcEVsZW1lbnQ6ImVsZW1lbnQifTtjbGFzcyBzbiBleHRlbmRzIEh7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKHQpLHRoaXMuX2lzQWN0aXZlPSExLHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb249bnVsbH1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gZW59c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBubn1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm4iZm9jdXN0cmFwIn1hY3RpdmF0ZSgpe3RoaXMuX2lzQWN0aXZlfHwodGhpcy5fY29uZmlnLmF1dG9mb2N1cyYmdGhpcy5fY29uZmlnLnRyYXBFbGVtZW50LmZvY3VzKCksTi5vZmYoZG9jdW1lbnQsR2kpLE4ub24oZG9jdW1lbnQsSmksKHQ9PnRoaXMuX2hhbmRsZUZvY3VzaW4odCkpKSxOLm9uKGRvY3VtZW50LFppLCh0PT50aGlzLl9oYW5kbGVLZXlkb3duKHQpKSksdGhpcy5faXNBY3RpdmU9ITApfWRlYWN0aXZhdGUoKXt0aGlzLl9pc0FjdGl2ZSYmKHRoaXMuX2lzQWN0aXZlPSExLE4ub2ZmKGRvY3VtZW50LEdpKSl9X2hhbmRsZUZvY3VzaW4odCl7Y29uc3R7dHJhcEVsZW1lbnQ6ZX09dGhpcy5fY29uZmlnO2lmKHQudGFyZ2V0PT09ZG9jdW1lbnR8fHQudGFyZ2V0PT09ZXx8ZS5jb250YWlucyh0LnRhcmdldCkpcmV0dXJuO2NvbnN0IGk9ei5mb2N1c2FibGVDaGlsZHJlbihlKTswPT09aS5sZW5ndGg/ZS5mb2N1cygpOnRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb249PT10bj9pW2kubGVuZ3RoLTFdLmZvY3VzKCk6aVswXS5mb2N1cygpfV9oYW5kbGVLZXlkb3duKHQpeyJUYWIiPT09dC5rZXkmJih0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uPXQuc2hpZnRLZXk/dG46ImZvcndhcmQiKX19Y29uc3Qgb249Ii5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AiLHJuPSIuc3RpY2t5LXRvcCIsYW49InBhZGRpbmctcmlnaHQiLGxuPSJtYXJnaW4tcmlnaHQiO2NsYXNzIGNue2NvbnN0cnVjdG9yKCl7dGhpcy5fZWxlbWVudD1kb2N1bWVudC5ib2R5fWdldFdpZHRoKCl7Y29uc3QgdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7cmV0dXJuIE1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoLXQpfWhpZGUoKXtjb25zdCB0PXRoaXMuZ2V0V2lkdGgoKTt0aGlzLl9kaXNhYmxlT3ZlckZsb3coKSx0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LGFuLChlPT5lK3QpKSx0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhvbixhbiwoZT0+ZSt0KSksdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMocm4sbG4sKGU9PmUtdCkpfXJlc2V0KCl7dGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCJvdmVyZmxvdyIpLHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCxhbiksdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhvbixhbiksdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhybixsbil9aXNPdmVyZmxvd2luZygpe3JldHVybiB0aGlzLmdldFdpZHRoKCk+MH1fZGlzYWJsZU92ZXJGbG93KCl7dGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodGhpcy5fZWxlbWVudCwib3ZlcmZsb3ciKSx0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifV9zZXRFbGVtZW50QXR0cmlidXRlcyh0LGUsaSl7Y29uc3Qgbj10aGlzLmdldFdpZHRoKCk7dGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayh0LCh0PT57aWYodCE9PXRoaXMuX2VsZW1lbnQmJndpbmRvdy5pbm5lcldpZHRoPnQuY2xpZW50V2lkdGgrbilyZXR1cm47dGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodCxlKTtjb25zdCBzPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoZSk7dC5zdHlsZS5zZXRQcm9wZXJ0eShlLGAke2koTnVtYmVyLnBhcnNlRmxvYXQocykpfXB4YCl9KSl9X3NhdmVJbml0aWFsQXR0cmlidXRlKHQsZSl7Y29uc3QgaT10LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSk7aSYmRi5zZXREYXRhQXR0cmlidXRlKHQsZSxpKX1fcmVzZXRFbGVtZW50QXR0cmlidXRlcyh0LGUpe3RoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2sodCwodD0+e2NvbnN0IGk9Ri5nZXREYXRhQXR0cmlidXRlKHQsZSk7bnVsbCE9PWk/KEYucmVtb3ZlRGF0YUF0dHJpYnV0ZSh0LGUpLHQuc3R5bGUuc2V0UHJvcGVydHkoZSxpKSk6dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKX0pKX1fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayh0LGUpe2lmKG8odCkpZSh0KTtlbHNlIGZvcihjb25zdCBpIG9mIHouZmluZCh0LHRoaXMuX2VsZW1lbnQpKWUoaSl9fWNvbnN0IGhuPSIuYnMubW9kYWwiLGRuPWBoaWRlJHtobn1gLHVuPWBoaWRlUHJldmVudGVkJHtobn1gLGZuPWBoaWRkZW4ke2hufWAscG49YHNob3cke2hufWAsbW49YHNob3duJHtobn1gLGduPWByZXNpemUke2hufWAsX249YGNsaWNrLmRpc21pc3Mke2hufWAsYm49YG1vdXNlZG93bi5kaXNtaXNzJHtobn1gLHZuPWBrZXlkb3duLmRpc21pc3Mke2hufWAseW49YGNsaWNrJHtobn0uZGF0YS1hcGlgLHduPSJtb2RhbC1vcGVuIixBbj0ic2hvdyIsRW49Im1vZGFsLXN0YXRpYyIsVG49e2JhY2tkcm9wOiEwLGZvY3VzOiEwLGtleWJvYXJkOiEwfSxDbj17YmFja2Ryb3A6Iihib29sZWFufHN0cmluZykiLGZvY3VzOiJib29sZWFuIixrZXlib2FyZDoiYm9vbGVhbiJ9O2NsYXNzIE9uIGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy5fZGlhbG9nPXouZmluZE9uZSgiLm1vZGFsLWRpYWxvZyIsdGhpcy5fZWxlbWVudCksdGhpcy5fYmFja2Ryb3A9dGhpcy5faW5pdGlhbGl6ZUJhY2tEcm9wKCksdGhpcy5fZm9jdXN0cmFwPXRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKSx0aGlzLl9pc1Nob3duPSExLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9zY3JvbGxCYXI9bmV3IGNuLHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIFRufXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gQ259c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuIm1vZGFsIn10b2dnbGUodCl7cmV0dXJuIHRoaXMuX2lzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KHQpfXNob3codCl7dGhpcy5faXNTaG93bnx8dGhpcy5faXNUcmFuc2l0aW9uaW5nfHxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxwbix7cmVsYXRlZFRhcmdldDp0fSkuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2lzU2hvd249ITAsdGhpcy5faXNUcmFuc2l0aW9uaW5nPSEwLHRoaXMuX3Njcm9sbEJhci5oaWRlKCksZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKHduKSx0aGlzLl9hZGp1c3REaWFsb2coKSx0aGlzLl9iYWNrZHJvcC5zaG93KCgoKT0+dGhpcy5fc2hvd0VsZW1lbnQodCkpKSl9aGlkZSgpe3RoaXMuX2lzU2hvd24mJiF0aGlzLl9pc1RyYW5zaXRpb25pbmcmJihOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxkbikuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2lzU2hvd249ITEsdGhpcy5faXNUcmFuc2l0aW9uaW5nPSEwLHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKEFuKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+dGhpcy5faGlkZU1vZGFsKCkpLHRoaXMuX2VsZW1lbnQsdGhpcy5faXNBbmltYXRlZCgpKSkpfWRpc3Bvc2UoKXtOLm9mZih3aW5kb3csaG4pLE4ub2ZmKHRoaXMuX2RpYWxvZyxobiksdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpLHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCksc3VwZXIuZGlzcG9zZSgpfWhhbmRsZVVwZGF0ZSgpe3RoaXMuX2FkanVzdERpYWxvZygpfV9pbml0aWFsaXplQmFja0Ryb3AoKXtyZXR1cm4gbmV3IFVpKHtpc1Zpc2libGU6Qm9vbGVhbih0aGlzLl9jb25maWcuYmFja2Ryb3ApLGlzQW5pbWF0ZWQ6dGhpcy5faXNBbmltYXRlZCgpfSl9X2luaXRpYWxpemVGb2N1c1RyYXAoKXtyZXR1cm4gbmV3IHNuKHt0cmFwRWxlbWVudDp0aGlzLl9lbGVtZW50fSl9X3Nob3dFbGVtZW50KHQpe2RvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fZWxlbWVudCl8fGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwhMCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJkaWFsb2ciKSx0aGlzLl9lbGVtZW50LnNjcm9sbFRvcD0wO2NvbnN0IGU9ei5maW5kT25lKCIubW9kYWwtYm9keSIsdGhpcy5fZGlhbG9nKTtlJiYoZS5zY3JvbGxUb3A9MCksZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQW4pLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5fY29uZmlnLmZvY3VzJiZ0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITEsTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsbW4se3JlbGF0ZWRUYXJnZXQ6dH0pfSksdGhpcy5fZGlhbG9nLHRoaXMuX2lzQW5pbWF0ZWQoKSl9X2FkZEV2ZW50TGlzdGVuZXJzKCl7Ti5vbih0aGlzLl9lbGVtZW50LHZuLCh0PT57IkVzY2FwZSI9PT10LmtleSYmKHRoaXMuX2NvbmZpZy5rZXlib2FyZD90aGlzLmhpZGUoKTp0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCkpfSkpLE4ub24od2luZG93LGduLCgoKT0+e3RoaXMuX2lzU2hvd24mJiF0aGlzLl9pc1RyYW5zaXRpb25pbmcmJnRoaXMuX2FkanVzdERpYWxvZygpfSkpLE4ub24odGhpcy5fZWxlbWVudCxibiwodD0+e04ub25lKHRoaXMuX2VsZW1lbnQsX24sKGU9Pnt0aGlzLl9lbGVtZW50PT09dC50YXJnZXQmJnRoaXMuX2VsZW1lbnQ9PT1lLnRhcmdldCYmKCJzdGF0aWMiIT09dGhpcy5fY29uZmlnLmJhY2tkcm9wP3RoaXMuX2NvbmZpZy5iYWNrZHJvcCYmdGhpcy5oaWRlKCk6dGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpKX0pKX0pKX1faGlkZU1vZGFsKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCEwKSx0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksdGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX2JhY2tkcm9wLmhpZGUoKCgpPT57ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKHduKSx0aGlzLl9yZXNldEFkanVzdG1lbnRzKCksdGhpcy5fc2Nyb2xsQmFyLnJlc2V0KCksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsZm4pfSkpfV9pc0FuaW1hdGVkKCl7cmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmYWRlIil9X3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKXtpZihOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx1bikuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Y29uc3QgdD10aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LGU9dGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1k7ImhpZGRlbiI9PT1lfHx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhFbil8fCh0fHwodGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChFbiksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9Pnt0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRW4pLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1k9ZX0pLHRoaXMuX2RpYWxvZyl9KSx0aGlzLl9kaWFsb2cpLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSl9X2FkanVzdERpYWxvZygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxlPXRoaXMuX3Njcm9sbEJhci5nZXRXaWR0aCgpLGk9ZT4wO2lmKGkmJiF0KXtjb25zdCB0PXAoKT8icGFkZGluZ0xlZnQiOiJwYWRkaW5nUmlnaHQiO3RoaXMuX2VsZW1lbnQuc3R5bGVbdF09YCR7ZX1weGB9aWYoIWkmJnQpe2NvbnN0IHQ9cCgpPyJwYWRkaW5nUmlnaHQiOiJwYWRkaW5nTGVmdCI7dGhpcy5fZWxlbWVudC5zdHlsZVt0XT1gJHtlfXB4YH19X3Jlc2V0QWRqdXN0bWVudHMoKXt0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0PSIiLHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PSIifXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCxlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGk9T24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09aVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7aVt0XShlKX19KSl9fU4ub24oZG9jdW1lbnQseW4sJ1tkYXRhLWJzLXRvZ2dsZT0ibW9kYWwiXScsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO1siQSIsIkFSRUEiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpJiZ0LnByZXZlbnREZWZhdWx0KCksTi5vbmUoZSxwbiwodD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8Ti5vbmUoZSxmbiwoKCk9PnthKHRoaXMpJiZ0aGlzLmZvY3VzKCl9KSl9KSk7Y29uc3QgaT16LmZpbmRPbmUoIi5tb2RhbC5zaG93Iik7aSYmT24uZ2V0SW5zdGFuY2UoaSkuaGlkZSgpLE9uLmdldE9yQ3JlYXRlSW5zdGFuY2UoZSkudG9nZ2xlKHRoaXMpfSkpLFIoT24pLG0oT24pO2NvbnN0IHhuPSIuYnMub2ZmY2FudmFzIixrbj0iLmRhdGEtYXBpIixMbj1gbG9hZCR7eG59JHtrbn1gLFNuPSJzaG93IixEbj0ic2hvd2luZyIsJG49ImhpZGluZyIsSW49Ii5vZmZjYW52YXMuc2hvdyIsTm49YHNob3cke3hufWAsUG49YHNob3duJHt4bn1gLE1uPWBoaWRlJHt4bn1gLGpuPWBoaWRlUHJldmVudGVkJHt4bn1gLEZuPWBoaWRkZW4ke3hufWAsSG49YHJlc2l6ZSR7eG59YCxXbj1gY2xpY2ske3hufSR7a259YCxCbj1ga2V5ZG93bi5kaXNtaXNzJHt4bn1gLHpuPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzY3JvbGw6ITF9LFJuPXtiYWNrZHJvcDoiKGJvb2xlYW58c3RyaW5nKSIsa2V5Ym9hcmQ6ImJvb2xlYW4iLHNjcm9sbDoiYm9vbGVhbiJ9O2NsYXNzIHFuIGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy5faXNTaG93bj0hMSx0aGlzLl9iYWNrZHJvcD10aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKSx0aGlzLl9mb2N1c3RyYXA9dGhpcy5faW5pdGlhbGl6ZUZvY3VzVHJhcCgpLHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIHpufXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gUm59c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuIm9mZmNhbnZhcyJ9dG9nZ2xlKHQpe3JldHVybiB0aGlzLl9pc1Nob3duP3RoaXMuaGlkZSgpOnRoaXMuc2hvdyh0KX1zaG93KHQpe3RoaXMuX2lzU2hvd258fE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LE5uLHtyZWxhdGVkVGFyZ2V0OnR9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5faXNTaG93bj0hMCx0aGlzLl9iYWNrZHJvcC5zaG93KCksdGhpcy5fY29uZmlnLnNjcm9sbHx8KG5ldyBjbikuaGlkZSgpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwhMCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJkaWFsb2ciKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoRG4pLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5fY29uZmlnLnNjcm9sbCYmIXRoaXMuX2NvbmZpZy5iYWNrZHJvcHx8dGhpcy5fZm9jdXN0cmFwLmFjdGl2YXRlKCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFNuKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRG4pLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LFBuLHtyZWxhdGVkVGFyZ2V0OnR9KX0pLHRoaXMuX2VsZW1lbnQsITApKX1oaWRlKCl7dGhpcy5faXNTaG93biYmKE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LE1uKS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSx0aGlzLl9lbGVtZW50LmJsdXIoKSx0aGlzLl9pc1Nob3duPSExLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgkbiksdGhpcy5fYmFja2Ryb3AuaGlkZSgpLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFNuLCRuKSx0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksdGhpcy5fY29uZmlnLnNjcm9sbHx8KG5ldyBjbikucmVzZXQoKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxGbil9KSx0aGlzLl9lbGVtZW50LCEwKSkpfWRpc3Bvc2UoKXt0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCksdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSxzdXBlci5kaXNwb3NlKCl9X2luaXRpYWxpemVCYWNrRHJvcCgpe2NvbnN0IHQ9Qm9vbGVhbih0aGlzLl9jb25maWcuYmFja2Ryb3ApO3JldHVybiBuZXcgVWkoe2NsYXNzTmFtZToib2ZmY2FudmFzLWJhY2tkcm9wIixpc1Zpc2libGU6dCxpc0FuaW1hdGVkOiEwLHJvb3RFbGVtZW50OnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSxjbGlja0NhbGxiYWNrOnQ/KCk9Pnsic3RhdGljIiE9PXRoaXMuX2NvbmZpZy5iYWNrZHJvcD90aGlzLmhpZGUoKTpOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxqbil9Om51bGx9KX1faW5pdGlhbGl6ZUZvY3VzVHJhcCgpe3JldHVybiBuZXcgc24oe3RyYXBFbGVtZW50OnRoaXMuX2VsZW1lbnR9KX1fYWRkRXZlbnRMaXN0ZW5lcnMoKXtOLm9uKHRoaXMuX2VsZW1lbnQsQm4sKHQ9PnsiRXNjYXBlIj09PXQua2V5JiYodGhpcy5fY29uZmlnLmtleWJvYXJkP3RoaXMuaGlkZSgpOk4udHJpZ2dlcih0aGlzLl9lbGVtZW50LGpuKSl9KSl9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9cW4uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XXx8dC5zdGFydHNXaXRoKCJfIil8fCJjb25zdHJ1Y3RvciI9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTtlW3RdKHRoaXMpfX0pKX19Ti5vbihkb2N1bWVudCxXbiwnW2RhdGEtYnMtdG9nZ2xlPSJvZmZjYW52YXMiXScsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO2lmKFsiQSIsIkFSRUEiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpJiZ0LnByZXZlbnREZWZhdWx0KCksbCh0aGlzKSlyZXR1cm47Ti5vbmUoZSxGbiwoKCk9PnthKHRoaXMpJiZ0aGlzLmZvY3VzKCl9KSk7Y29uc3QgaT16LmZpbmRPbmUoSW4pO2kmJmkhPT1lJiZxbi5nZXRJbnN0YW5jZShpKS5oaWRlKCkscW4uZ2V0T3JDcmVhdGVJbnN0YW5jZShlKS50b2dnbGUodGhpcyl9KSksTi5vbih3aW5kb3csTG4sKCgpPT57Zm9yKGNvbnN0IHQgb2Ygei5maW5kKEluKSlxbi5nZXRPckNyZWF0ZUluc3RhbmNlKHQpLnNob3coKX0pKSxOLm9uKHdpbmRvdyxIbiwoKCk9Pntmb3IoY29uc3QgdCBvZiB6LmZpbmQoIlthcmlhLW1vZGFsXVtjbGFzcyo9c2hvd11bY2xhc3MqPW9mZmNhbnZhcy1dIikpImZpeGVkIiE9PWdldENvbXB1dGVkU3R5bGUodCkucG9zaXRpb24mJnFuLmdldE9yQ3JlYXRlSW5zdGFuY2UodCkuaGlkZSgpfSkpLFIocW4pLG0ocW4pO2NvbnN0IFZuPXsiKiI6WyJjbGFzcyIsImRpciIsImlkIiwibGFuZyIsInJvbGUiLC9eYXJpYS1bXHctXSokL2ldLGE6WyJ0YXJnZXQiLCJocmVmIiwidGl0bGUiLCJyZWwiXSxhcmVhOltdLGI6W10sYnI6W10sY29sOltdLGNvZGU6W10sZGl2OltdLGVtOltdLGhyOltdLGgxOltdLGgyOltdLGgzOltdLGg0OltdLGg1OltdLGg2OltdLGk6W10saW1nOlsic3JjIiwic3Jjc2V0IiwiYWx0IiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCJdLGxpOltdLG9sOltdLHA6W10scHJlOltdLHM6W10sc21hbGw6W10sc3BhbjpbXSxzdWI6W10sc3VwOltdLHN0cm9uZzpbXSx1OltdLHVsOltdfSxLbj1uZXcgU2V0KFsiYmFja2dyb3VuZCIsImNpdGUiLCJocmVmIiwiaXRlbXR5cGUiLCJsb25nZGVzYyIsInBvc3RlciIsInNyYyIsInhsaW5rOmhyZWYiXSksUW49L14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjovPyNdKig/OlsvPyNdfCQpKS9pLFhuPSh0LGUpPT57Y29uc3QgaT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUuaW5jbHVkZXMoaSk/IUtuLmhhcyhpKXx8Qm9vbGVhbihRbi50ZXN0KHQubm9kZVZhbHVlKSk6ZS5maWx0ZXIoKHQ9PnQgaW5zdGFuY2VvZiBSZWdFeHApKS5zb21lKCh0PT50LnRlc3QoaSkpKX0sWW49e2FsbG93TGlzdDpWbixjb250ZW50Ont9LGV4dHJhQ2xhc3M6IiIsaHRtbDohMSxzYW5pdGl6ZTohMCxzYW5pdGl6ZUZuOm51bGwsdGVtcGxhdGU6IjxkaXY+PC9kaXY+In0sVW49e2FsbG93TGlzdDoib2JqZWN0Iixjb250ZW50OiJvYmplY3QiLGV4dHJhQ2xhc3M6IihzdHJpbmd8ZnVuY3Rpb24pIixodG1sOiJib29sZWFuIixzYW5pdGl6ZToiYm9vbGVhbiIsc2FuaXRpemVGbjoiKG51bGx8ZnVuY3Rpb24pIix0ZW1wbGF0ZToic3RyaW5nIn0sR249e2VudHJ5OiIoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb258bnVsbCkiLHNlbGVjdG9yOiIoc3RyaW5nfGVsZW1lbnQpIn07Y2xhc3MgSm4gZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyh0KX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gWW59c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBVbn1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm4iVGVtcGxhdGVGYWN0b3J5In1nZXRDb250ZW50KCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29uZmlnLmNvbnRlbnQpLm1hcCgodD0+dGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odCkpKS5maWx0ZXIoQm9vbGVhbil9aGFzQ29udGVudCgpe3JldHVybiB0aGlzLmdldENvbnRlbnQoKS5sZW5ndGg+MH1jaGFuZ2VDb250ZW50KHQpe3JldHVybiB0aGlzLl9jaGVja0NvbnRlbnQodCksdGhpcy5fY29uZmlnLmNvbnRlbnQ9ey4uLnRoaXMuX2NvbmZpZy5jb250ZW50LC4uLnR9LHRoaXN9dG9IdG1sKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmlubmVySFRNTD10aGlzLl9tYXliZVNhbml0aXplKHRoaXMuX2NvbmZpZy50ZW1wbGF0ZSk7Zm9yKGNvbnN0W2UsaV1vZiBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcuY29udGVudCkpdGhpcy5fc2V0Q29udGVudCh0LGksZSk7Y29uc3QgZT10LmNoaWxkcmVuWzBdLGk9dGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmV4dHJhQ2xhc3MpO3JldHVybiBpJiZlLmNsYXNzTGlzdC5hZGQoLi4uaS5zcGxpdCgiICIpKSxlfV90eXBlQ2hlY2tDb25maWcodCl7c3VwZXIuX3R5cGVDaGVja0NvbmZpZyh0KSx0aGlzLl9jaGVja0NvbnRlbnQodC5jb250ZW50KX1fY2hlY2tDb250ZW50KHQpe2Zvcihjb25zdFtlLGldb2YgT2JqZWN0LmVudHJpZXModCkpc3VwZXIuX3R5cGVDaGVja0NvbmZpZyh7c2VsZWN0b3I6ZSxlbnRyeTppfSxHbil9X3NldENvbnRlbnQodCxlLGkpe2NvbnN0IG49ei5maW5kT25lKGksdCk7biYmKChlPXRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGUpKT9vKGUpP3RoaXMuX3B1dEVsZW1lbnRJblRlbXBsYXRlKHIoZSksbik6dGhpcy5fY29uZmlnLmh0bWw/bi5pbm5lckhUTUw9dGhpcy5fbWF5YmVTYW5pdGl6ZShlKTpuLnRleHRDb250ZW50PWU6bi5yZW1vdmUoKSl9X21heWJlU2FuaXRpemUodCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5zYW5pdGl6ZT9mdW5jdGlvbih0LGUsaSl7aWYoIXQubGVuZ3RoKXJldHVybiB0O2lmKGkmJiJmdW5jdGlvbiI9PXR5cGVvZiBpKXJldHVybiBpKHQpO2NvbnN0IG49KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcodCwidGV4dC9odG1sIikscz1bXS5jb25jYXQoLi4ubi5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSk7Zm9yKGNvbnN0IHQgb2Ygcyl7Y29uc3QgaT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIU9iamVjdC5rZXlzKGUpLmluY2x1ZGVzKGkpKXt0LnJlbW92ZSgpO2NvbnRpbnVlfWNvbnN0IG49W10uY29uY2F0KC4uLnQuYXR0cmlidXRlcykscz1bXS5jb25jYXQoZVsiKiJdfHxbXSxlW2ldfHxbXSk7Zm9yKGNvbnN0IGUgb2YgbilYbihlLHMpfHx0LnJlbW92ZUF0dHJpYnV0ZShlLm5vZGVOYW1lKX1yZXR1cm4gbi5ib2R5LmlubmVySFRNTH0odCx0aGlzLl9jb25maWcuYWxsb3dMaXN0LHRoaXMuX2NvbmZpZy5zYW5pdGl6ZUZuKTp0fV9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0KXtyZXR1cm4gZyh0LFt0aGlzXSl9X3B1dEVsZW1lbnRJblRlbXBsYXRlKHQsZSl7aWYodGhpcy5fY29uZmlnLmh0bWwpcmV0dXJuIGUuaW5uZXJIVE1MPSIiLHZvaWQgZS5hcHBlbmQodCk7ZS50ZXh0Q29udGVudD10LnRleHRDb250ZW50fX1jb25zdCBabj1uZXcgU2V0KFsic2FuaXRpemUiLCJhbGxvd0xpc3QiLCJzYW5pdGl6ZUZuIl0pLHRzPSJmYWRlIixlcz0ic2hvdyIsaXM9Ii5tb2RhbCIsbnM9ImhpZGUuYnMubW9kYWwiLHNzPSJob3ZlciIsb3M9ImZvY3VzIixycz17QVVUTzoiYXV0byIsVE9QOiJ0b3AiLFJJR0hUOnAoKT8ibGVmdCI6InJpZ2h0IixCT1RUT006ImJvdHRvbSIsTEVGVDpwKCk/InJpZ2h0IjoibGVmdCJ9LGFzPXthbGxvd0xpc3Q6Vm4sYW5pbWF0aW9uOiEwLGJvdW5kYXJ5OiJjbGlwcGluZ1BhcmVudHMiLGNvbnRhaW5lcjohMSxjdXN0b21DbGFzczoiIixkZWxheTowLGZhbGxiYWNrUGxhY2VtZW50czpbInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdLGh0bWw6ITEsb2Zmc2V0OlswLDZdLHBsYWNlbWVudDoidG9wIixwb3BwZXJDb25maWc6bnVsbCxzYW5pdGl6ZTohMCxzYW5pdGl6ZUZuOm51bGwsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdGl0bGU6IiIsdHJpZ2dlcjoiaG92ZXIgZm9jdXMifSxscz17YWxsb3dMaXN0OiJvYmplY3QiLGFuaW1hdGlvbjoiYm9vbGVhbiIsYm91bmRhcnk6IihzdHJpbmd8ZWxlbWVudCkiLGNvbnRhaW5lcjoiKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pIixjdXN0b21DbGFzczoiKHN0cmluZ3xmdW5jdGlvbikiLGRlbGF5OiIobnVtYmVyfG9iamVjdCkiLGZhbGxiYWNrUGxhY2VtZW50czoiYXJyYXkiLGh0bWw6ImJvb2xlYW4iLG9mZnNldDoiKGFycmF5fHN0cmluZ3xmdW5jdGlvbikiLHBsYWNlbWVudDoiKHN0cmluZ3xmdW5jdGlvbikiLHBvcHBlckNvbmZpZzoiKG51bGx8b2JqZWN0fGZ1bmN0aW9uKSIsc2FuaXRpemU6ImJvb2xlYW4iLHNhbml0aXplRm46IihudWxsfGZ1bmN0aW9uKSIsc2VsZWN0b3I6IihzdHJpbmd8Ym9vbGVhbikiLHRlbXBsYXRlOiJzdHJpbmciLHRpdGxlOiIoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pIix0cmlnZ2VyOiJzdHJpbmcifTtjbGFzcyBjcyBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtpZih2b2lkIDA9PT12aSl0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAncyB0b29sdGlwcyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKSIpO3N1cGVyKHQsZSksdGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9pc0hvdmVyZWQ9bnVsbCx0aGlzLl9hY3RpdmVUcmlnZ2VyPXt9LHRoaXMuX3BvcHBlcj1udWxsLHRoaXMuX3RlbXBsYXRlRmFjdG9yeT1udWxsLHRoaXMuX25ld0NvbnRlbnQ9bnVsbCx0aGlzLnRpcD1udWxsLHRoaXMuX3NldExpc3RlbmVycygpLHRoaXMuX2NvbmZpZy5zZWxlY3Rvcnx8dGhpcy5fZml4VGl0bGUoKX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gYXN9c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBsc31zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm4idG9vbHRpcCJ9ZW5hYmxlKCl7dGhpcy5faXNFbmFibGVkPSEwfWRpc2FibGUoKXt0aGlzLl9pc0VuYWJsZWQ9ITF9dG9nZ2xlRW5hYmxlZCgpe3RoaXMuX2lzRW5hYmxlZD0hdGhpcy5faXNFbmFibGVkfXRvZ2dsZSgpe3RoaXMuX2lzRW5hYmxlZCYmKHRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2s9IXRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2ssdGhpcy5faXNTaG93bigpP3RoaXMuX2xlYXZlKCk6dGhpcy5fZW50ZXIoKSl9ZGlzcG9zZSgpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSxOLm9mZih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoaXMpLG5zLHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpLHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlIikmJnRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtb3JpZ2luYWwtdGl0bGUiKSksdGhpcy5fZGlzcG9zZVBvcHBlcigpLHN1cGVyLmRpc3Bvc2UoKX1zaG93KCl7aWYoIm5vbmUiPT09dGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5KXRocm93IG5ldyBFcnJvcigiUGxlYXNlIHVzZSBzaG93IG9uIHZpc2libGUgZWxlbWVudHMiKTtpZighdGhpcy5faXNXaXRoQ29udGVudCgpfHwhdGhpcy5faXNFbmFibGVkKXJldHVybjtjb25zdCB0PU4udHJpZ2dlcih0aGlzLl9lbGVtZW50LHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKCJzaG93IikpLGU9KGModGhpcy5fZWxlbWVudCl8fHRoaXMuX2VsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpO2lmKHQuZGVmYXVsdFByZXZlbnRlZHx8IWUpcmV0dXJuO3RoaXMuX2Rpc3Bvc2VQb3BwZXIoKTtjb25zdCBpPXRoaXMuX2dldFRpcEVsZW1lbnQoKTt0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsaS5nZXRBdHRyaWJ1dGUoImlkIikpO2NvbnN0e2NvbnRhaW5lcjpufT10aGlzLl9jb25maWc7aWYodGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0aGlzLnRpcCl8fChuLmFwcGVuZChpKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZSgiaW5zZXJ0ZWQiKSkpLHRoaXMuX3BvcHBlcj10aGlzLl9jcmVhdGVQb3BwZXIoaSksaS5jbGFzc0xpc3QuYWRkKGVzKSwib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClmb3IoY29uc3QgdCBvZltdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSlOLm9uKHQsIm1vdXNlb3ZlciIsaCk7dGhpcy5fcXVldWVDYWxsYmFjaygoKCk9PntOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZSgic2hvd24iKSksITE9PT10aGlzLl9pc0hvdmVyZWQmJnRoaXMuX2xlYXZlKCksdGhpcy5faXNIb3ZlcmVkPSExfSksdGhpcy50aXAsdGhpcy5faXNBbmltYXRlZCgpKX1oaWRlKCl7aWYodGhpcy5faXNTaG93bigpJiYhTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoImhpZGUiKSkuZGVmYXVsdFByZXZlbnRlZCl7aWYodGhpcy5fZ2V0VGlwRWxlbWVudCgpLmNsYXNzTGlzdC5yZW1vdmUoZXMpLCJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KWZvcihjb25zdCB0IG9mW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKU4ub2ZmKHQsIm1vdXNlb3ZlciIsaCk7dGhpcy5fYWN0aXZlVHJpZ2dlci5jbGljaz0hMSx0aGlzLl9hY3RpdmVUcmlnZ2VyW29zXT0hMSx0aGlzLl9hY3RpdmVUcmlnZ2VyW3NzXT0hMSx0aGlzLl9pc0hvdmVyZWQ9bnVsbCx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKXx8KHRoaXMuX2lzSG92ZXJlZHx8dGhpcy5fZGlzcG9zZVBvcHBlcigpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoImhpZGRlbiIpKSl9KSx0aGlzLnRpcCx0aGlzLl9pc0FuaW1hdGVkKCkpfX11cGRhdGUoKXt0aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci51cGRhdGUoKX1faXNXaXRoQ29udGVudCgpe3JldHVybiBCb29sZWFuKHRoaXMuX2dldFRpdGxlKCkpfV9nZXRUaXBFbGVtZW50KCl7cmV0dXJuIHRoaXMudGlwfHwodGhpcy50aXA9dGhpcy5fY3JlYXRlVGlwRWxlbWVudCh0aGlzLl9uZXdDb250ZW50fHx0aGlzLl9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSkpLHRoaXMudGlwfV9jcmVhdGVUaXBFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0VGVtcGxhdGVGYWN0b3J5KHQpLnRvSHRtbCgpO2lmKCFlKXJldHVybiBudWxsO2UuY2xhc3NMaXN0LnJlbW92ZSh0cyxlcyksZS5jbGFzc0xpc3QuYWRkKGBicy0ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXV0b2ApO2NvbnN0IGk9KHQ9Pntkb3t0Kz1NYXRoLmZsb29yKDFlNipNYXRoLnJhbmRvbSgpKX13aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSk7cmV0dXJuIHR9KSh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpLnRvU3RyaW5nKCk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJpZCIsaSksdGhpcy5faXNBbmltYXRlZCgpJiZlLmNsYXNzTGlzdC5hZGQodHMpLGV9c2V0Q29udGVudCh0KXt0aGlzLl9uZXdDb250ZW50PXQsdGhpcy5faXNTaG93bigpJiYodGhpcy5fZGlzcG9zZVBvcHBlcigpLHRoaXMuc2hvdygpKX1fZ2V0VGVtcGxhdGVGYWN0b3J5KHQpe3JldHVybiB0aGlzLl90ZW1wbGF0ZUZhY3Rvcnk/dGhpcy5fdGVtcGxhdGVGYWN0b3J5LmNoYW5nZUNvbnRlbnQodCk6dGhpcy5fdGVtcGxhdGVGYWN0b3J5PW5ldyBKbih7Li4udGhpcy5fY29uZmlnLGNvbnRlbnQ6dCxleHRyYUNsYXNzOnRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcyl9KSx0aGlzLl90ZW1wbGF0ZUZhY3Rvcnl9X2dldENvbnRlbnRGb3JUZW1wbGF0ZSgpe3JldHVybnsiLnRvb2x0aXAtaW5uZXIiOnRoaXMuX2dldFRpdGxlKCl9fV9nZXRUaXRsZSgpe3JldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcudGl0bGUpfHx0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1icy1vcmlnaW5hbC10aXRsZSIpfV9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQodCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0LmRlbGVnYXRlVGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpfV9pc0FuaW1hdGVkKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5hbmltYXRpb258fHRoaXMudGlwJiZ0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnModHMpfV9pc1Nob3duKCl7cmV0dXJuIHRoaXMudGlwJiZ0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoZXMpfV9jcmVhdGVQb3BwZXIodCl7Y29uc3QgZT1nKHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQsW3RoaXMsdCx0aGlzLl9lbGVtZW50XSksaT1yc1tlLnRvVXBwZXJDYXNlKCldO3JldHVybiBiaSh0aGlzLl9lbGVtZW50LHQsdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGkpKX1fZ2V0T2Zmc2V0KCl7Y29uc3R7b2Zmc2V0OnR9PXRoaXMuX2NvbmZpZztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgiLCIpLm1hcCgodD0+TnVtYmVyLnBhcnNlSW50KHQsMTApKSk6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZT0+dChlLHRoaXMuX2VsZW1lbnQpOnR9X3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHQpe3JldHVybiBnKHQsW3RoaXMuX2VsZW1lbnRdKX1fZ2V0UG9wcGVyQ29uZmlnKHQpe2NvbnN0IGU9e3BsYWNlbWVudDp0LG1vZGlmaWVyczpbe25hbWU6ImZsaXAiLG9wdGlvbnM6e2ZhbGxiYWNrUGxhY2VtZW50czp0aGlzLl9jb25maWcuZmFsbGJhY2tQbGFjZW1lbnRzfX0se25hbWU6Im9mZnNldCIsb3B0aW9uczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpfX0se25hbWU6InByZXZlbnRPdmVyZmxvdyIsb3B0aW9uczp7Ym91bmRhcnk6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX0se25hbWU6ImFycm93IixvcHRpb25zOntlbGVtZW50OmAuJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWFycm93YH19LHtuYW1lOiJwcmVTZXRQbGFjZW1lbnQiLGVuYWJsZWQ6ITAscGhhc2U6ImJlZm9yZU1haW4iLGZuOnQ9Pnt0aGlzLl9nZXRUaXBFbGVtZW50KCkuc2V0QXR0cmlidXRlKCJkYXRhLXBvcHBlci1wbGFjZW1lbnQiLHQuc3RhdGUucGxhY2VtZW50KX19XX07cmV0dXJuey4uLmUsLi4uZyh0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnLFtlXSl9fV9zZXRMaXN0ZW5lcnMoKXtjb25zdCB0PXRoaXMuX2NvbmZpZy50cmlnZ2VyLnNwbGl0KCIgIik7Zm9yKGNvbnN0IGUgb2YgdClpZigiY2xpY2siPT09ZSlOLm9uKHRoaXMuX2VsZW1lbnQsdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoImNsaWNrIiksdGhpcy5fY29uZmlnLnNlbGVjdG9yLCh0PT57dGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KHQpLnRvZ2dsZSgpfSkpO2Vsc2UgaWYoIm1hbnVhbCIhPT1lKXtjb25zdCB0PWU9PT1zcz90aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZSgibW91c2VlbnRlciIpOnRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKCJmb2N1c2luIiksaT1lPT09c3M/dGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoIm1vdXNlbGVhdmUiKTp0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZSgiZm9jdXNvdXQiKTtOLm9uKHRoaXMuX2VsZW1lbnQsdCx0aGlzLl9jb25maWcuc2VsZWN0b3IsKHQ9Pntjb25zdCBlPXRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldCh0KTtlLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIj09PXQudHlwZT9vczpzc109ITAsZS5fZW50ZXIoKX0pKSxOLm9uKHRoaXMuX2VsZW1lbnQsaSx0aGlzLl9jb25maWcuc2VsZWN0b3IsKHQ9Pntjb25zdCBlPXRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldCh0KTtlLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c291dCI9PT10LnR5cGU/b3M6c3NdPWUuX2VsZW1lbnQuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KSxlLl9sZWF2ZSgpfSkpfXRoaXMuX2hpZGVNb2RhbEhhbmRsZXI9KCk9Pnt0aGlzLl9lbGVtZW50JiZ0aGlzLmhpZGUoKX0sTi5vbih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoaXMpLG5zLHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpfV9maXhUaXRsZSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoInRpdGxlIik7dCYmKHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpfHx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtYnMtb3JpZ2luYWwtdGl0bGUiLHQpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpKX1fZW50ZXIoKXt0aGlzLl9pc1Nob3duKCl8fHRoaXMuX2lzSG92ZXJlZD90aGlzLl9pc0hvdmVyZWQ9ITA6KHRoaXMuX2lzSG92ZXJlZD0hMCx0aGlzLl9zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2lzSG92ZXJlZCYmdGhpcy5zaG93KCl9KSx0aGlzLl9jb25maWcuZGVsYXkuc2hvdykpfV9sZWF2ZSgpe3RoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKXx8KHRoaXMuX2lzSG92ZXJlZD0hMSx0aGlzLl9zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2lzSG92ZXJlZHx8dGhpcy5oaWRlKCl9KSx0aGlzLl9jb25maWcuZGVsYXkuaGlkZSkpfV9zZXRUaW1lb3V0KHQsZSl7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLHRoaXMuX3RpbWVvdXQ9c2V0VGltZW91dCh0LGUpfV9pc1dpdGhBY3RpdmVUcmlnZ2VyKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fYWN0aXZlVHJpZ2dlcikuaW5jbHVkZXMoITApfV9nZXRDb25maWcodCl7Y29uc3QgZT1GLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUpKVpuLmhhcyh0KSYmZGVsZXRlIGVbdF07cmV0dXJuIHQ9ey4uLmUsLi4uIm9iamVjdCI9PXR5cGVvZiB0JiZ0P3Q6e319LHQ9dGhpcy5fbWVyZ2VDb25maWdPYmoodCksdD10aGlzLl9jb25maWdBZnRlck1lcmdlKHQpLHRoaXMuX3R5cGVDaGVja0NvbmZpZyh0KSx0fV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0LmNvbnRhaW5lcj0hMT09PXQuY29udGFpbmVyP2RvY3VtZW50LmJvZHk6cih0LmNvbnRhaW5lciksIm51bWJlciI9PXR5cGVvZiB0LmRlbGF5JiYodC5kZWxheT17c2hvdzp0LmRlbGF5LGhpZGU6dC5kZWxheX0pLCJudW1iZXIiPT10eXBlb2YgdC50aXRsZSYmKHQudGl0bGU9dC50aXRsZS50b1N0cmluZygpKSwibnVtYmVyIj09dHlwZW9mIHQuY29udGVudCYmKHQuY29udGVudD10LmNvbnRlbnQudG9TdHJpbmcoKSksdH1fZ2V0RGVsZWdhdGVDb25maWcoKXtjb25zdCB0PXt9O2Zvcihjb25zdFtlLGldb2YgT2JqZWN0LmVudHJpZXModGhpcy5fY29uZmlnKSl0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZV0hPT1pJiYodFtlXT1pKTtyZXR1cm4gdC5zZWxlY3Rvcj0hMSx0LnRyaWdnZXI9Im1hbnVhbCIsdH1fZGlzcG9zZVBvcHBlcigpe3RoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpLHRoaXMudGlwJiYodGhpcy50aXAucmVtb3ZlKCksdGhpcy50aXA9bnVsbCl9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9Y3MuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7ZVt0XSgpfX0pKX19bShjcyk7Y29uc3QgaHM9ey4uLmNzLkRlZmF1bHQsY29udGVudDoiIixvZmZzZXQ6WzAsOF0scGxhY2VtZW50OiJyaWdodCIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InBvcG92ZXItYXJyb3ciPjwvZGl2PjxoMyBjbGFzcz0icG9wb3Zlci1oZWFkZXIiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1ib2R5Ij48L2Rpdj48L2Rpdj4nLHRyaWdnZXI6ImNsaWNrIn0sZHM9ey4uLmNzLkRlZmF1bHRUeXBlLGNvbnRlbnQ6IihudWxsfHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSJ9O2NsYXNzIHVzIGV4dGVuZHMgY3N7c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIGhzfXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gZHN9c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuInBvcG92ZXIifV9pc1dpdGhDb250ZW50KCl7cmV0dXJuIHRoaXMuX2dldFRpdGxlKCl8fHRoaXMuX2dldENvbnRlbnQoKX1fZ2V0Q29udGVudEZvclRlbXBsYXRlKCl7cmV0dXJueyIucG9wb3Zlci1oZWFkZXIiOnRoaXMuX2dldFRpdGxlKCksIi5wb3BvdmVyLWJvZHkiOnRoaXMuX2dldENvbnRlbnQoKX19X2dldENvbnRlbnQoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmNvbnRlbnQpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPXVzLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyx0KTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF0pdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApO2VbdF0oKX19KSl9fW0odXMpO2NvbnN0IGZzPSIuYnMuc2Nyb2xsc3B5Iixwcz1gYWN0aXZhdGUke2ZzfWAsbXM9YGNsaWNrJHtmc31gLGdzPWBsb2FkJHtmc30uZGF0YS1hcGlgLF9zPSJhY3RpdmUiLGJzPSJbaHJlZl0iLHZzPSIubmF2LWxpbmsiLHlzPWAke3ZzfSwgLm5hdi1pdGVtID4gJHt2c30sIC5saXN0LWdyb3VwLWl0ZW1gLHdzPXtvZmZzZXQ6bnVsbCxyb290TWFyZ2luOiIwcHggMHB4IC0yNSUiLHNtb290aFNjcm9sbDohMSx0YXJnZXQ6bnVsbCx0aHJlc2hvbGQ6Wy4xLC41LDFdfSxBcz17b2Zmc2V0OiIobnVtYmVyfG51bGwpIixyb290TWFyZ2luOiJzdHJpbmciLHNtb290aFNjcm9sbDoiYm9vbGVhbiIsdGFyZ2V0OiJlbGVtZW50Iix0aHJlc2hvbGQ6ImFycmF5In07Y2xhc3MgRXMgZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLl90YXJnZXRMaW5rcz1uZXcgTWFwLHRoaXMuX29ic2VydmFibGVTZWN0aW9ucz1uZXcgTWFwLHRoaXMuX3Jvb3RFbGVtZW50PSJ2aXNpYmxlIj09PWdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZP251bGw6dGhpcy5fZWxlbWVudCx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YT17dmlzaWJsZUVudHJ5VG9wOjAscGFyZW50U2Nyb2xsVG9wOjB9LHRoaXMucmVmcmVzaCgpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiB3c31zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIEFzfXN0YXRpYyBnZXQgTkFNRSgpe3JldHVybiJzY3JvbGxzcHkifXJlZnJlc2goKXt0aGlzLl9pbml0aWFsaXplVGFyZ2V0c0FuZE9ic2VydmFibGVzKCksdGhpcy5fbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKSx0aGlzLl9vYnNlcnZlcj90aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk6dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fZ2V0TmV3T2JzZXJ2ZXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMudmFsdWVzKCkpdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0KX1kaXNwb3NlKCl7dGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHN1cGVyLmRpc3Bvc2UoKX1fY29uZmlnQWZ0ZXJNZXJnZSh0KXtyZXR1cm4gdC50YXJnZXQ9cih0LnRhcmdldCl8fGRvY3VtZW50LmJvZHksdC5yb290TWFyZ2luPXQub2Zmc2V0P2Ake3Qub2Zmc2V0fXB4IDBweCAtMzAlYDp0LnJvb3RNYXJnaW4sInN0cmluZyI9PXR5cGVvZiB0LnRocmVzaG9sZCYmKHQudGhyZXNob2xkPXQudGhyZXNob2xkLnNwbGl0KCIsIikubWFwKCh0PT5OdW1iZXIucGFyc2VGbG9hdCh0KSkpKSx0fV9tYXliZUVuYWJsZVNtb290aFNjcm9sbCgpe3RoaXMuX2NvbmZpZy5zbW9vdGhTY3JvbGwmJihOLm9mZih0aGlzLl9jb25maWcudGFyZ2V0LG1zKSxOLm9uKHRoaXMuX2NvbmZpZy50YXJnZXQsbXMsYnMsKHQ9Pntjb25zdCBlPXRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5nZXQodC50YXJnZXQuaGFzaCk7aWYoZSl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9dGhpcy5fcm9vdEVsZW1lbnR8fHdpbmRvdyxuPWUub2Zmc2V0VG9wLXRoaXMuX2VsZW1lbnQub2Zmc2V0VG9wO2lmKGkuc2Nyb2xsVG8pcmV0dXJuIHZvaWQgaS5zY3JvbGxUbyh7dG9wOm4sYmVoYXZpb3I6InNtb290aCJ9KTtpLnNjcm9sbFRvcD1ufX0pKSl9X2dldE5ld09ic2VydmVyKCl7Y29uc3QgdD17cm9vdDp0aGlzLl9yb290RWxlbWVudCx0aHJlc2hvbGQ6dGhpcy5fY29uZmlnLnRocmVzaG9sZCxyb290TWFyZ2luOnRoaXMuX2NvbmZpZy5yb290TWFyZ2lufTtyZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKCh0PT50aGlzLl9vYnNlcnZlckNhbGxiYWNrKHQpKSx0KX1fb2JzZXJ2ZXJDYWxsYmFjayh0KXtjb25zdCBlPXQ9PnRoaXMuX3RhcmdldExpbmtzLmdldChgIyR7dC50YXJnZXQuaWR9YCksaT10PT57dGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnZpc2libGVFbnRyeVRvcD10LnRhcmdldC5vZmZzZXRUb3AsdGhpcy5fcHJvY2VzcyhlKHQpKX0sbj0odGhpcy5fcm9vdEVsZW1lbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuc2Nyb2xsVG9wLHM9bj49dGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnBhcmVudFNjcm9sbFRvcDt0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wPW47Zm9yKGNvbnN0IG8gb2YgdCl7aWYoIW8uaXNJbnRlcnNlY3Rpbmcpe3RoaXMuX2FjdGl2ZVRhcmdldD1udWxsLHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3MoZShvKSk7Y29udGludWV9Y29uc3QgdD1vLnRhcmdldC5vZmZzZXRUb3A+PXRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3A7aWYocyYmdCl7aWYoaShvKSwhbilyZXR1cm59ZWxzZSBzfHx0fHxpKG8pfX1faW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcygpe3RoaXMuX3RhcmdldExpbmtzPW5ldyBNYXAsdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zPW5ldyBNYXA7Y29uc3QgdD16LmZpbmQoYnMsdGhpcy5fY29uZmlnLnRhcmdldCk7Zm9yKGNvbnN0IGUgb2YgdCl7aWYoIWUuaGFzaHx8bChlKSljb250aW51ZTtjb25zdCB0PXouZmluZE9uZShkZWNvZGVVUkkoZS5oYXNoKSx0aGlzLl9lbGVtZW50KTthKHQpJiYodGhpcy5fdGFyZ2V0TGlua3Muc2V0KGRlY29kZVVSSShlLmhhc2gpLGUpLHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5zZXQoZS5oYXNoLHQpKX19X3Byb2Nlc3ModCl7dGhpcy5fYWN0aXZlVGFyZ2V0IT09dCYmKHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3ModGhpcy5fY29uZmlnLnRhcmdldCksdGhpcy5fYWN0aXZlVGFyZ2V0PXQsdC5jbGFzc0xpc3QuYWRkKF9zKSx0aGlzLl9hY3RpdmF0ZVBhcmVudHModCksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQscHMse3JlbGF0ZWRUYXJnZXQ6dH0pKX1fYWN0aXZhdGVQYXJlbnRzKHQpe2lmKHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkcm9wZG93bi1pdGVtIikpei5maW5kT25lKCIuZHJvcGRvd24tdG9nZ2xlIix0LmNsb3Nlc3QoIi5kcm9wZG93biIpKS5jbGFzc0xpc3QuYWRkKF9zKTtlbHNlIGZvcihjb25zdCBlIG9mIHoucGFyZW50cyh0LCIubmF2LCAubGlzdC1ncm91cCIpKWZvcihjb25zdCB0IG9mIHoucHJldihlLHlzKSl0LmNsYXNzTGlzdC5hZGQoX3MpfV9jbGVhckFjdGl2ZUNsYXNzKHQpe3QuY2xhc3NMaXN0LnJlbW92ZShfcyk7Y29uc3QgZT16LmZpbmQoYCR7YnN9LiR7X3N9YCx0KTtmb3IoY29uc3QgdCBvZiBlKXQuY2xhc3NMaXN0LnJlbW92ZShfcyl9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9RXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XXx8dC5zdGFydHNXaXRoKCJfIil8fCJjb25zdHJ1Y3RvciI9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTtlW3RdKCl9fSkpfX1OLm9uKHdpbmRvdyxncywoKCk9Pntmb3IoY29uc3QgdCBvZiB6LmZpbmQoJ1tkYXRhLWJzLXNweT0ic2Nyb2xsIl0nKSlFcy5nZXRPckNyZWF0ZUluc3RhbmNlKHQpfSkpLG0oRXMpO2NvbnN0IFRzPSIuYnMudGFiIixDcz1gaGlkZSR7VHN9YCxPcz1gaGlkZGVuJHtUc31gLHhzPWBzaG93JHtUc31gLGtzPWBzaG93biR7VHN9YCxMcz1gY2xpY2ske1RzfWAsU3M9YGtleWRvd24ke1RzfWAsRHM9YGxvYWQke1RzfWAsJHM9IkFycm93TGVmdCIsSXM9IkFycm93UmlnaHQiLE5zPSJBcnJvd1VwIixQcz0iQXJyb3dEb3duIixNcz0iSG9tZSIsanM9IkVuZCIsRnM9ImFjdGl2ZSIsSHM9ImZhZGUiLFdzPSJzaG93IixCcz0iLmRyb3Bkb3duLXRvZ2dsZSIsenM9YDpub3QoJHtCc30pYCxScz0nW2RhdGEtYnMtdG9nZ2xlPSJ0YWIiXSwgW2RhdGEtYnMtdG9nZ2xlPSJwaWxsIl0sIFtkYXRhLWJzLXRvZ2dsZT0ibGlzdCJdJyxxcz1gLm5hdi1saW5rJHt6c30sIC5saXN0LWdyb3VwLWl0ZW0ke3pzfSwgW3JvbGU9InRhYiJdJHt6c30sICR7UnN9YCxWcz1gLiR7RnN9W2RhdGEtYnMtdG9nZ2xlPSJ0YWIiXSwgLiR7RnN9W2RhdGEtYnMtdG9nZ2xlPSJwaWxsIl0sIC4ke0ZzfVtkYXRhLWJzLXRvZ2dsZT0ibGlzdCJdYDtjbGFzcyBLcyBleHRlbmRzIFd7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5fcGFyZW50PXRoaXMuX2VsZW1lbnQuY2xvc2VzdCgnLmxpc3QtZ3JvdXAsIC5uYXYsIFtyb2xlPSJ0YWJsaXN0Il0nKSx0aGlzLl9wYXJlbnQmJih0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlcyh0aGlzLl9wYXJlbnQsdGhpcy5fZ2V0Q2hpbGRyZW4oKSksTi5vbih0aGlzLl9lbGVtZW50LFNzLCh0PT50aGlzLl9rZXlkb3duKHQpKSkpfXN0YXRpYyBnZXQgTkFNRSgpe3JldHVybiJ0YWIifXNob3coKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQ7aWYodGhpcy5fZWxlbUlzQWN0aXZlKHQpKXJldHVybjtjb25zdCBlPXRoaXMuX2dldEFjdGl2ZUVsZW0oKSxpPWU/Ti50cmlnZ2VyKGUsQ3Mse3JlbGF0ZWRUYXJnZXQ6dH0pOm51bGw7Ti50cmlnZ2VyKHQseHMse3JlbGF0ZWRUYXJnZXQ6ZX0pLmRlZmF1bHRQcmV2ZW50ZWR8fGkmJmkuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2RlYWN0aXZhdGUoZSx0KSx0aGlzLl9hY3RpdmF0ZSh0LGUpKX1fYWN0aXZhdGUodCxlKXt0JiYodC5jbGFzc0xpc3QuYWRkKEZzKSx0aGlzLl9hY3RpdmF0ZSh6LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodCkpLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57InRhYiI9PT10LmdldEF0dHJpYnV0ZSgicm9sZSIpPyh0LnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsITApLHRoaXMuX3RvZ2dsZURyb3BEb3duKHQsITApLE4udHJpZ2dlcih0LGtzLHtyZWxhdGVkVGFyZ2V0OmV9KSk6dC5jbGFzc0xpc3QuYWRkKFdzKX0pLHQsdC5jbGFzc0xpc3QuY29udGFpbnMoSHMpKSl9X2RlYWN0aXZhdGUodCxlKXt0JiYodC5jbGFzc0xpc3QucmVtb3ZlKEZzKSx0LmJsdXIoKSx0aGlzLl9kZWFjdGl2YXRlKHouZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0KSksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9PnsidGFiIj09PXQuZ2V0QXR0cmlidXRlKCJyb2xlIik/KHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwhMSksdC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLl90b2dnbGVEcm9wRG93bih0LCExKSxOLnRyaWdnZXIodCxPcyx7cmVsYXRlZFRhcmdldDplfSkpOnQuY2xhc3NMaXN0LnJlbW92ZShXcyl9KSx0LHQuY2xhc3NMaXN0LmNvbnRhaW5zKEhzKSkpfV9rZXlkb3duKHQpe2lmKCFbJHMsSXMsTnMsUHMsTXMsanNdLmluY2x1ZGVzKHQua2V5KSlyZXR1cm47dC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10aGlzLl9nZXRDaGlsZHJlbigpLmZpbHRlcigodD0+IWwodCkpKTtsZXQgaTtpZihbTXMsanNdLmluY2x1ZGVzKHQua2V5KSlpPWVbdC5rZXk9PT1Ncz8wOmUubGVuZ3RoLTFdO2Vsc2V7Y29uc3Qgbj1bSXMsUHNdLmluY2x1ZGVzKHQua2V5KTtpPWIoZSx0LnRhcmdldCxuLCEwKX1pJiYoaS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLEtzLmdldE9yQ3JlYXRlSW5zdGFuY2UoaSkuc2hvdygpKX1fZ2V0Q2hpbGRyZW4oKXtyZXR1cm4gei5maW5kKHFzLHRoaXMuX3BhcmVudCl9X2dldEFjdGl2ZUVsZW0oKXtyZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maW5kKCh0PT50aGlzLl9lbGVtSXNBY3RpdmUodCkpKXx8bnVsbH1fc2V0SW5pdGlhbEF0dHJpYnV0ZXModCxlKXt0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0LCJyb2xlIiwidGFibGlzdCIpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKHQpfV9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQodCl7dD10aGlzLl9nZXRJbm5lckVsZW1lbnQodCk7Y29uc3QgZT10aGlzLl9lbGVtSXNBY3RpdmUodCksaT10aGlzLl9nZXRPdXRlckVsZW1lbnQodCk7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLGUpLGkhPT10JiZ0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhpLCJyb2xlIiwicHJlc2VudGF0aW9uIiksZXx8dC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0LCJyb2xlIiwidGFiIiksdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsKHQpfV9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwodCl7Y29uc3QgZT16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodCk7ZSYmKHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGUsInJvbGUiLCJ0YWJwYW5lbCIpLHQuaWQmJnRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGUsImFyaWEtbGFiZWxsZWRieSIsYCR7dC5pZH1gKSl9X3RvZ2dsZURyb3BEb3duKHQsZSl7Y29uc3QgaT10aGlzLl9nZXRPdXRlckVsZW1lbnQodCk7aWYoIWkuY2xhc3NMaXN0LmNvbnRhaW5zKCJkcm9wZG93biIpKXJldHVybjtjb25zdCBuPSh0LG4pPT57Y29uc3Qgcz16LmZpbmRPbmUodCxpKTtzJiZzLmNsYXNzTGlzdC50b2dnbGUobixlKX07bihCcyxGcyksbigiLmRyb3Bkb3duLW1lbnUiLFdzKSxpLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsZSl9X3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHQsZSxpKXt0Lmhhc0F0dHJpYnV0ZShlKXx8dC5zZXRBdHRyaWJ1dGUoZSxpKX1fZWxlbUlzQWN0aXZlKHQpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhGcyl9X2dldElubmVyRWxlbWVudCh0KXtyZXR1cm4gdC5tYXRjaGVzKHFzKT90OnouZmluZE9uZShxcyx0KX1fZ2V0T3V0ZXJFbGVtZW50KHQpe3JldHVybiB0LmNsb3Nlc3QoIi5uYXYtaXRlbSwgLmxpc3QtZ3JvdXAtaXRlbSIpfHx0fXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPUtzLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih2b2lkIDA9PT1lW3RdfHx0LnN0YXJ0c1dpdGgoIl8iKXx8ImNvbnN0cnVjdG9yIj09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApO2VbdF0oKX19KSl9fU4ub24oZG9jdW1lbnQsTHMsUnMsKGZ1bmN0aW9uKHQpe1siQSIsIkFSRUEiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpJiZ0LnByZXZlbnREZWZhdWx0KCksbCh0aGlzKXx8S3MuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS5zaG93KCl9KSksTi5vbih3aW5kb3csRHMsKCgpPT57Zm9yKGNvbnN0IHQgb2Ygei5maW5kKFZzKSlLcy5nZXRPckNyZWF0ZUluc3RhbmNlKHQpfSkpLG0oS3MpO2NvbnN0IFFzPSIuYnMudG9hc3QiLFhzPWBtb3VzZW92ZXIke1FzfWAsWXM9YG1vdXNlb3V0JHtRc31gLFVzPWBmb2N1c2luJHtRc31gLEdzPWBmb2N1c291dCR7UXN9YCxKcz1gaGlkZSR7UXN9YCxacz1gaGlkZGVuJHtRc31gLHRvPWBzaG93JHtRc31gLGVvPWBzaG93biR7UXN9YCxpbz0iaGlkZSIsbm89InNob3ciLHNvPSJzaG93aW5nIixvbz17YW5pbWF0aW9uOiJib29sZWFuIixhdXRvaGlkZToiYm9vbGVhbiIsZGVsYXk6Im51bWJlciJ9LHJvPXthbmltYXRpb246ITAsYXV0b2hpZGU6ITAsZGVsYXk6NWUzfTtjbGFzcyBhbyBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uPSExLHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb249ITEsdGhpcy5fc2V0TGlzdGVuZXJzKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIHJvfXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gb299c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuInRvYXN0In1zaG93KCl7Ti50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsdG8pLmRlZmF1bHRQcmV2ZW50ZWR8fCh0aGlzLl9jbGVhclRpbWVvdXQoKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImZhZGUiKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoaW8pLGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKG5vLHNvKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShzbyksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsZW8pLHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCl9KSx0aGlzLl9lbGVtZW50LHRoaXMuX2NvbmZpZy5hbmltYXRpb24pKX1oaWRlKCl7dGhpcy5pc1Nob3duKCkmJihOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxKcykuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChzbyksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9Pnt0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaW8pLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShzbyxubyksTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsWnMpfSksdGhpcy5fZWxlbWVudCx0aGlzLl9jb25maWcuYW5pbWF0aW9uKSkpfWRpc3Bvc2UoKXt0aGlzLl9jbGVhclRpbWVvdXQoKSx0aGlzLmlzU2hvd24oKSYmdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKG5vKSxzdXBlci5kaXNwb3NlKCl9aXNTaG93bigpe3JldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhubyl9X21heWJlU2NoZWR1bGVIaWRlKCl7dGhpcy5fY29uZmlnLmF1dG9oaWRlJiYodGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbnx8dGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbnx8KHRoaXMuX3RpbWVvdXQ9c2V0VGltZW91dCgoKCk9Pnt0aGlzLmhpZGUoKX0pLHRoaXMuX2NvbmZpZy5kZWxheSkpKX1fb25JbnRlcmFjdGlvbih0LGUpe3N3aXRjaCh0LnR5cGUpe2Nhc2UibW91c2VvdmVyIjpjYXNlIm1vdXNlb3V0Ijp0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uPWU7YnJlYWs7Y2FzZSJmb2N1c2luIjpjYXNlImZvY3Vzb3V0Ijp0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uPWV9aWYoZSlyZXR1cm4gdm9pZCB0aGlzLl9jbGVhclRpbWVvdXQoKTtjb25zdCBpPXQucmVsYXRlZFRhcmdldDt0aGlzLl9lbGVtZW50PT09aXx8dGhpcy5fZWxlbWVudC5jb250YWlucyhpKXx8dGhpcy5fbWF5YmVTY2hlZHVsZUhpZGUoKX1fc2V0TGlzdGVuZXJzKCl7Ti5vbih0aGlzLl9lbGVtZW50LFhzLCh0PT50aGlzLl9vbkludGVyYWN0aW9uKHQsITApKSksTi5vbih0aGlzLl9lbGVtZW50LFlzLCh0PT50aGlzLl9vbkludGVyYWN0aW9uKHQsITEpKSksTi5vbih0aGlzLl9lbGVtZW50LFVzLCh0PT50aGlzLl9vbkludGVyYWN0aW9uKHQsITApKSksTi5vbih0aGlzLl9lbGVtZW50LEdzLCh0PT50aGlzLl9vbkludGVyYWN0aW9uKHQsITEpKSl9X2NsZWFyVGltZW91dCgpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSx0aGlzLl90aW1lb3V0PW51bGx9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9YW8uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7dH0iYCk7ZVt0XSh0aGlzKX19KSl9fXJldHVybiBSKGFvKSxtKGFvKSx7QWxlcnQ6USxCdXR0b246WSxDYXJvdXNlbDp4dCxDb2xsYXBzZTpCdCxEcm9wZG93bjpxaSxNb2RhbDpPbixPZmZjYW52YXM6cW4sUG9wb3Zlcjp1cyxTY3JvbGxTcHk6RXMsVGFiOktzLFRvYXN0OmFvLFRvb2x0aXA6Y3N9fSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1ib290c3RyYXAuYnVuZGxlLm1pbi5qcy5tYXA="}},"time_used":44,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":31,"receive":13,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.010Z","timestamp":1785159465010,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/jquery.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 34808\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":144940,"size_decoded":35046,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (522)","md5":"273238d57b1fa8a15821f48c7ce73bff","sha1":"52cb457f2c29fcfc7ead8608dd77c79e9fd17478","sha256":"c2ebeb26757be6ba579dd4bcbc3e9ed160af6024a6a7926b7886e6083c3161cd","sha512":"5ebaa96ba81164bc065818e7ded8d495c7be01af01c74e1365f8834a6b67c7453d9b8eb2aeaf7fb8a31d218c44f6a42d8e691b572c5c5b17efd872a6dbd6a5e4","ssdeep":"3072:AU3b1ENciZqCNhcJcUd2GMuz/Frxl1Vs5:RUcmUd2GbK5","tlshash":"c4e34289b7f624369613f07d8ebfc805b17a445b2a9cdd59780c91b42f1443886fafac","first_seen":"2025-08-29T21:12:56.369624Z","last_seen":"2026-07-27T13:38:47.79498Z","times_seen":6,"resource_available":true,"data":"LyohIGpRdWVyeSB2My4wLjAgfCAoYykgalF1ZXJ5IEZvdW5kYXRpb24gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8gISBmdW5jdGlvbihhLCBiKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlICYmICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzID0gYS5kb2N1bWVudCA/IGIoYSwgITApIDogZnVuY3Rpb24oYSkgewogICAgICAgIGlmICghYS5kb2N1bWVudCkgdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7CiAgICAgICAgcmV0dXJuIGIoYSkKICAgIH0gOiBiKGEpCn0oInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBjID0gW10sCiAgICAgICAgZCA9IGEuZG9jdW1lbnQsCiAgICAgICAgZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiwKICAgICAgICBmID0gYy5zbGljZSwKICAgICAgICBnID0gYy5jb25jYXQsCiAgICAgICAgaCA9IGMucHVzaCwKICAgICAgICBpID0gYy5pbmRleE9mLAogICAgICAgIGogPSB7fSwKICAgICAgICBrID0gai50b1N0cmluZywKICAgICAgICBsID0gai5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBtID0gbC50b1N0cmluZywKICAgICAgICBuID0gbS5jYWxsKE9iamVjdCksCiAgICAgICAgbyA9IHt9OwoKICAgIGZ1bmN0aW9uIHAoYSwgYikgewogICAgICAgIGIgPSBiIHx8IGQ7CiAgICAgICAgdmFyIGMgPSBiLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICAgIGMudGV4dCA9IGEsIGIuaGVhZC5hcHBlbmRDaGlsZChjKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpCiAgICB9CiAgICB2YXIgcSA9ICIzLjAuMCIsCiAgICAgICAgciA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyByLmZuLmluaXQoYSwgYikKICAgICAgICB9LAogICAgICAgIHMgPSAvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csCiAgICAgICAgdCA9IC9eLW1zLS8sCiAgICAgICAgdSA9IC8tKFthLXpdKS9nLAogICAgICAgIHYgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiBiLnRvVXBwZXJDYXNlKCkKICAgICAgICB9OwogICAgci5mbiA9IHIucHJvdG90eXBlID0gewogICAgICAgIGpxdWVyeTogcSwKICAgICAgICBjb25zdHJ1Y3RvcjogciwKICAgICAgICBsZW5ndGg6IDAsCiAgICAgICAgdG9BcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBmLmNhbGwodGhpcykKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBhID8gMCA+IGEgPyB0aGlzW2EgKyB0aGlzLmxlbmd0aF0gOiB0aGlzW2FdIDogZi5jYWxsKHRoaXMpCiAgICAgICAgfSwKICAgICAgICBwdXNoU3RhY2s6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSByLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSwgYSk7CiAgICAgICAgICAgIHJldHVybiBiLnByZXZPYmplY3QgPSB0aGlzLCBiCiAgICAgICAgfSwKICAgICAgICBlYWNoOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiByLmVhY2godGhpcywgYSkKICAgICAgICB9LAogICAgICAgIG1hcDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soci5tYXAodGhpcywgZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgcmV0dXJuIGEuY2FsbChiLCBjLCBiKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICB9LAogICAgICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEoMCkKICAgICAgICB9LAogICAgICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lcSgtMSkKICAgICAgICB9LAogICAgICAgIGVxOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiID0gdGhpcy5sZW5ndGgsCiAgICAgICAgICAgICAgICBjID0gK2EgKyAoMCA+IGEgPyBiIDogMCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhjID49IDAgJiYgYiA+IGMgPyBbdGhpc1tjXV0gOiBbXSkKICAgICAgICB9LAogICAgICAgIGVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpCiAgICAgICAgfSwKICAgICAgICBwdXNoOiBoLAogICAgICAgIHNvcnQ6IGMuc29ydCwKICAgICAgICBzcGxpY2U6IGMuc3BsaWNlCiAgICB9LCByLmV4dGVuZCA9IHIuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEsIGIsIGMsIGQsIGUsIGYsIGcgPSBhcmd1bWVudHNbMF0gfHwge30sCiAgICAgICAgICAgIGggPSAxLAogICAgICAgICAgICBpID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgaiA9ICExOwogICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBnICYmIChqID0gZywgZyA9IGFyZ3VtZW50c1toXSB8fCB7fSwgaCsrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGcgfHwgci5pc0Z1bmN0aW9uKGcpIHx8IChnID0ge30pLCBoID09PSBpICYmIChnID0gdGhpcywgaC0tKTsgaSA+IGg7IGgrKykKICAgICAgICAgICAgaWYgKG51bGwgIT0gKGEgPSBhcmd1bWVudHNbaF0pKQogICAgICAgICAgICAgICAgZm9yIChiIGluIGEpIGMgPSBnW2JdLCBkID0gYVtiXSwgZyAhPT0gZCAmJiAoaiAmJiBkICYmIChyLmlzUGxhaW5PYmplY3QoZCkgfHwgKGUgPSByLmlzQXJyYXkoZCkpKSA/IChlID8gKGUgPSAhMSwgZiA9IGMgJiYgci5pc0FycmF5KGMpID8gYyA6IFtdKSA6IGYgPSBjICYmIHIuaXNQbGFpbk9iamVjdChjKSA/IGMgOiB7fSwgZ1tiXSA9IHIuZXh0ZW5kKGosIGYsIGQpKSA6IHZvaWQgMCAhPT0gZCAmJiAoZ1tiXSA9IGQpKTsKICAgICAgICByZXR1cm4gZwogICAgfSwgci5leHRlbmQoewogICAgICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKHEgKyBNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCAiIiksCiAgICAgICAgaXNSZWFkeTogITAsCiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGEpCiAgICAgICAgfSwKICAgICAgICBub29wOiBmdW5jdGlvbigpIHt9LAogICAgICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT09IHIudHlwZShhKQogICAgICAgIH0sCiAgICAgICAgaXNBcnJheTogQXJyYXkuaXNBcnJheSwKICAgICAgICBpc1dpbmRvdzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBhICYmIGEgPT09IGEud2luZG93CiAgICAgICAgfSwKICAgICAgICBpc051bWVyaWM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSByLnR5cGUoYSk7CiAgICAgICAgICAgIHJldHVybiAoIm51bWJlciIgPT09IGIgfHwgInN0cmluZyIgPT09IGIpICYmICFpc05hTihhIC0gcGFyc2VGbG9hdChhKSkKICAgICAgICB9LAogICAgICAgIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIsIGM7CiAgICAgICAgICAgIHJldHVybiBhICYmICJbb2JqZWN0IE9iamVjdF0iID09PSBrLmNhbGwoYSkgPyAoYiA9IGUoYSkpID8gKGMgPSBsLmNhbGwoYiwgImNvbnN0cnVjdG9yIikgJiYgYi5jb25zdHJ1Y3RvciwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYyAmJiBtLmNhbGwoYykgPT09IG4pIDogITAgOiAhMQogICAgICAgIH0sCiAgICAgICAgaXNFbXB0eU9iamVjdDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYjsKICAgICAgICAgICAgZm9yIChiIGluIGEpIHJldHVybiAhMTsKICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgfSwKICAgICAgICB0eXBlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGEgPyBhICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgYSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBhID8galtrLmNhbGwoYSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGEKICAgICAgICB9LAogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcChhKQogICAgICAgIH0sCiAgICAgICAgY2FtZWxDYXNlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhLnJlcGxhY2UodCwgIm1zLSIpLnJlcGxhY2UodSwgdikKICAgICAgICB9LAogICAgICAgIG5vZGVOYW1lOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiBhLm5vZGVOYW1lICYmIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gYi50b0xvd2VyQ2FzZSgpCiAgICAgICAgfSwKICAgICAgICBlYWNoOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjLCBkID0gMDsKICAgICAgICAgICAgaWYgKHcoYSkpIHsKICAgICAgICAgICAgICAgIGZvciAoYyA9IGEubGVuZ3RoOyBjID4gZDsgZCsrKQogICAgICAgICAgICAgICAgICAgIGlmIChiLmNhbGwoYVtkXSwgZCwgYVtkXSkgPT09ICExKSBicmVhawogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGZvciAoZCBpbiBhKQogICAgICAgICAgICAgICAgICAgIGlmIChiLmNhbGwoYVtkXSwgZCwgYVtkXSkgPT09ICExKSBicmVhazsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9LAogICAgICAgIHRyaW06IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYSA/ICIiIDogKGEgKyAiIikucmVwbGFjZShzLCAiIikKICAgICAgICB9LAogICAgICAgIG1ha2VBcnJheTogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYyA9IGIgfHwgW107CiAgICAgICAgICAgIHJldHVybiBudWxsICE9IGEgJiYgKHcoT2JqZWN0KGEpKSA/IHIubWVyZ2UoYywgInN0cmluZyIgPT0gdHlwZW9mIGEgPyBbYV0gOiBhKSA6IGguY2FsbChjLCBhKSksIGMKICAgICAgICB9LAogICAgICAgIGluQXJyYXk6IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYiA/IC0xIDogaS5jYWxsKGIsIGEsIGMpCiAgICAgICAgfSwKICAgICAgICBtZXJnZTogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICBmb3IgKHZhciBjID0gK2IubGVuZ3RoLCBkID0gMCwgZSA9IGEubGVuZ3RoOyBjID4gZDsgZCsrKSBhW2UrK10gPSBiW2RdOwogICAgICAgICAgICByZXR1cm4gYS5sZW5ndGggPSBlLCBhCiAgICAgICAgfSwKICAgICAgICBncmVwOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIGZvciAodmFyIGQsIGUgPSBbXSwgZiA9IDAsIGcgPSBhLmxlbmd0aCwgaCA9ICFjOyBnID4gZjsgZisrKSBkID0gIWIoYVtmXSwgZiksIGQgIT09IGggJiYgZS5wdXNoKGFbZl0pOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgbWFwOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlLCBmID0gMCwKICAgICAgICAgICAgICAgIGggPSBbXTsKICAgICAgICAgICAgaWYgKHcoYSkpCiAgICAgICAgICAgICAgICBmb3IgKGQgPSBhLmxlbmd0aDsgZCA+IGY7IGYrKykgZSA9IGIoYVtmXSwgZiwgYyksIG51bGwgIT0gZSAmJiBoLnB1c2goZSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoZiBpbiBhKSBlID0gYihhW2ZdLCBmLCBjKSwgbnVsbCAhPSBlICYmIGgucHVzaChlKTsKICAgICAgICAgICAgcmV0dXJuIGcuYXBwbHkoW10sIGgpCiAgICAgICAgfSwKICAgICAgICBndWlkOiAxLAogICAgICAgIHByb3h5OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjLCBkLCBlOwogICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGIgJiYgKGMgPSBhW2JdLCBiID0gYSwgYSA9IGMpLCByLmlzRnVuY3Rpb24oYSkgPyAoZCA9IGYuY2FsbChhcmd1bWVudHMsIDIpLCBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5hcHBseShiIHx8IHRoaXMsIGQuY29uY2F0KGYuY2FsbChhcmd1bWVudHMpKSkKICAgICAgICAgICAgfSwgZS5ndWlkID0gYS5ndWlkID0gYS5ndWlkIHx8IHIuZ3VpZCsrLCBlKSA6IHZvaWQgMAogICAgICAgIH0sCiAgICAgICAgbm93OiBEYXRlLm5vdywKICAgICAgICBzdXBwb3J0OiBvCiAgICB9KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmIChyLmZuW1N5bWJvbC5pdGVyYXRvcl0gPSBjW1N5bWJvbC5pdGVyYXRvcl0pLCByLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgalsiW29iamVjdCAiICsgYiArICJdIl0gPSBiLnRvTG93ZXJDYXNlKCkKICAgIH0pOwoKICAgIGZ1bmN0aW9uIHcoYSkgewogICAgICAgIHZhciBiID0gISFhICYmICJsZW5ndGgiIGluIGEgJiYgYS5sZW5ndGgsCiAgICAgICAgICAgIGMgPSByLnR5cGUoYSk7CiAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT09IGMgfHwgci5pc1dpbmRvdyhhKSA/ICExIDogImFycmF5IiA9PT0gYyB8fCAwID09PSBiIHx8ICJudW1iZXIiID09IHR5cGVvZiBiICYmIGIgPiAwICYmIGIgLSAxIGluIGEKICAgIH0KICAgIHZhciB4ID0gZnVuY3Rpb24oYSkgewogICAgICAgIHZhciBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCByLCBzLCB0LCB1ID0gInNpenpsZSIgKyAxICogbmV3IERhdGUsCiAgICAgICAgICAgIHYgPSBhLmRvY3VtZW50LAogICAgICAgICAgICB3ID0gMCwKICAgICAgICAgICAgeCA9IDAsCiAgICAgICAgICAgIHkgPSBoYSgpLAogICAgICAgICAgICB6ID0gaGEoKSwKICAgICAgICAgICAgQSA9IGhhKCksCiAgICAgICAgICAgIEIgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYiAmJiAobCA9ICEwKSwgMAogICAgICAgICAgICB9LAogICAgICAgICAgICBDID0ge30uaGFzT3duUHJvcGVydHksCiAgICAgICAgICAgIEQgPSBbXSwKICAgICAgICAgICAgRSA9IEQucG9wLAogICAgICAgICAgICBGID0gRC5wdXNoLAogICAgICAgICAgICBHID0gRC5wdXNoLAogICAgICAgICAgICBIID0gRC5zbGljZSwKICAgICAgICAgICAgSSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwLCBkID0gYS5sZW5ndGg7IGQgPiBjOyBjKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKGFbY10gPT09IGIpIHJldHVybiBjOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEogPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLAogICAgICAgICAgICBLID0gIltcXHgyMFxcdFxcclxcblxcZl0iLAogICAgICAgICAgICBMID0gIig/OlxcXFwufFtcXHctXXxbXlx4MDAtXFx4YTBdKSsiLAogICAgICAgICAgICBNID0gIlxcWyIgKyBLICsgIiooIiArIEwgKyAiKSg/OiIgKyBLICsgIiooWypeJHwhfl0/PSkiICsgSyArICIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIgKyBMICsgIikpfCkiICsgSyArICIqXFxdIiwKICAgICAgICAgICAgTiA9ICI6KCIgKyBMICsgIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgTSArICIpKil8LiopXFwpfCkiLAogICAgICAgICAgICBPID0gbmV3IFJlZ0V4cChLICsgIisiLCAiZyIpLAogICAgICAgICAgICBQID0gbmV3IFJlZ0V4cCgiXiIgKyBLICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyBLICsgIiskIiwgImciKSwKICAgICAgICAgICAgUSA9IG5ldyBSZWdFeHAoIl4iICsgSyArICIqLCIgKyBLICsgIioiKSwKICAgICAgICAgICAgUiA9IG5ldyBSZWdFeHAoIl4iICsgSyArICIqKFs+K35dfCIgKyBLICsgIikiICsgSyArICIqIiksCiAgICAgICAgICAgIFMgPSBuZXcgUmVnRXhwKCI9IiArIEsgKyAiKihbXlxcXSdcIl0qPykiICsgSyArICIqXFxdIiwgImciKSwKICAgICAgICAgICAgVCA9IG5ldyBSZWdFeHAoTiksCiAgICAgICAgICAgIFUgPSBuZXcgUmVnRXhwKCJeIiArIEwgKyAiJCIpLAogICAgICAgICAgICBWID0gewogICAgICAgICAgICAgICAgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBMICsgIikiKSwKICAgICAgICAgICAgICAgIENMQVNTOiBuZXcgUmVnRXhwKCJeXFwuKCIgKyBMICsgIikiKSwKICAgICAgICAgICAgICAgIFRBRzogbmV3IFJlZ0V4cCgiXigiICsgTCArICJ8WypdKSIpLAogICAgICAgICAgICAgICAgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyBNKSwKICAgICAgICAgICAgICAgIFBTRVVETzogbmV3IFJlZ0V4cCgiXiIgKyBOKSwKICAgICAgICAgICAgICAgIENISUxEOiBuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgSyArICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIEsgKyAiKig/OihbKy1dfCkiICsgSyArICIqKFxcZCspfCkpIiArIEsgKyAiKlxcKXwpIiwgImkiKSwKICAgICAgICAgICAgICAgIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgSiArICIpJCIsICJpIiksCiAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IG5ldyBSZWdFeHAoIl4iICsgSyArICIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsgSyArICIqKCg/Oi1cXGQpP1xcZCopIiArIEsgKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCiAgICAgICAgICAgIFggPSAvXmhcZCQvaSwKICAgICAgICAgICAgWSA9IC9eW157XStce1xzKlxbbmF0aXZlIFx3LywKICAgICAgICAgICAgWiA9IC9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sCiAgICAgICAgICAgICQgPSAvWyt+XS8sCiAgICAgICAgICAgIF8gPSBuZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iICsgSyArICI/fCgiICsgSyArICIpfC4pIiwgImlnIiksCiAgICAgICAgICAgIGFhID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgdmFyIGQgPSAiMHgiICsgYiAtIDY1NTM2OwogICAgICAgICAgICAgICAgcmV0dXJuIGQgIT09IGQgfHwgYyA/IGIgOiAwID4gZCA/IFN0cmluZy5mcm9tQ2hhckNvZGUoZCArIDY1NTM2KSA6IFN0cmluZy5mcm9tQ2hhckNvZGUoZCA+PiAxMCB8IDU1Mjk2LCAxMDIzICYgZCB8IDU2MzIwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBiYSA9IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2csCiAgICAgICAgICAgIGNhID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgcmV0dXJuIGIgPyAiXHgwMCIgPT09IGEgPyAiXHVmZmZkIiA6IGEuc2xpY2UoMCwgLTEpICsgIlxcIiArIGEuY2hhckNvZGVBdChhLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBhCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZWEgPSB0YShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5kaXNhYmxlZCA9PT0gITAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICBuZXh0OiAibGVnZW5kIgogICAgICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICBHLmFwcGx5KEQgPSBILmNhbGwodi5jaGlsZE5vZGVzKSwgdi5jaGlsZE5vZGVzKSwgRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZQogICAgICAgIH0gY2F0Y2ggKGZhKSB7CiAgICAgICAgICAgIEcgPSB7CiAgICAgICAgICAgICAgICBhcHBseTogRC5sZW5ndGggPyBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgRi5hcHBseShhLCBILmNhbGwoYikpCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gYS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChhW2MrK10gPSBiW2QrK10pOwogICAgICAgICAgICAgICAgICAgIGEubGVuZ3RoID0gYyAtIDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2EoYSwgYiwgZCwgZSkgewogICAgICAgICAgICB2YXIgZiwgaCwgaiwgaywgbCwgbywgciwgcyA9IGIgJiYgYi5vd25lckRvY3VtZW50LAogICAgICAgICAgICAgICAgdyA9IGIgPyBiLm5vZGVUeXBlIDogOTsKICAgICAgICAgICAgaWYgKGQgPSBkIHx8IFtdLCAic3RyaW5nIiAhPSB0eXBlb2YgYSB8fCAhYSB8fCAxICE9PSB3ICYmIDkgIT09IHcgJiYgMTEgIT09IHcpIHJldHVybiBkOwogICAgICAgICAgICBpZiAoIWUgJiYgKChiID8gYi5vd25lckRvY3VtZW50IHx8IGIgOiB2KSAhPT0gbiAmJiBtKGIpLCBiID0gYiB8fCBuLCBwKSkgewogICAgICAgICAgICAgICAgaWYgKDExICE9PSB3ICYmIChsID0gWi5leGVjKGEpKSkKICAgICAgICAgICAgICAgICAgICBpZiAoZiA9IGxbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDkgPT09IHcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGogPSBiLmdldEVsZW1lbnRCeUlkKGYpKSkgcmV0dXJuIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoai5pZCA9PT0gZikgcmV0dXJuIGQucHVzaChqKSwgZAogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMgJiYgKGogPSBzLmdldEVsZW1lbnRCeUlkKGYpKSAmJiB0KGIsIGopICYmIGouaWQgPT09IGYpIHJldHVybiBkLnB1c2goaiksIGQKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobFsyXSkgcmV0dXJuIEcuYXBwbHkoZCwgYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiA9IGxbM10pICYmIGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpIHJldHVybiBHLmFwcGx5KGQsIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksIGQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYy5xc2EgJiYgIUFbYSArICIgIl0gJiYgKCFxIHx8ICFxLnRlc3QoYSkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgIT09IHcpIHMgPSBiLCByID0gYTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgib2JqZWN0IiAhPT0gYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIChrID0gYi5nZXRBdHRyaWJ1dGUoImlkIikpID8gayA9IGsucmVwbGFjZShiYSwgY2EpOiBiLnNldEF0dHJpYnV0ZSgiaWQiLCBrID0gdSksIG8gPSBnKGEpLCBoID0gby5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChoLS0pIG9baF0gPSAiIyIgKyBrICsgIiAiICsgc2Eob1toXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvLmpvaW4oIiwiKSwgcyA9ICQudGVzdChhKSAmJiBxYShiLnBhcmVudE5vZGUpIHx8IGIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHLmFwcGx5KGQsIHMucXVlcnlTZWxlY3RvckFsbChyKSksIGQKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh4KSB7fSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgayA9PT0gdSAmJiBiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaShhLnJlcGxhY2UoUCwgIiQxIiksIGIsIGQsIGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoYSgpIHsKICAgICAgICAgICAgdmFyIGEgPSBbXTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGIoYywgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEucHVzaChjICsgIiAiKSA+IGQuY2FjaGVMZW5ndGggJiYgZGVsZXRlIGJbYS5zaGlmdCgpXSwgYltjICsgIiAiXSA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaWEoYSkgewogICAgICAgICAgICByZXR1cm4gYVt1XSA9ICEwLCBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqYShhKSB7CiAgICAgICAgICAgIHZhciBiID0gbi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuICEhYShiKQogICAgICAgICAgICB9IGNhdGNoIChjKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIGIucGFyZW50Tm9kZSAmJiBiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksIGIgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGthKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMgPSBhLnNwbGl0KCJ8IiksCiAgICAgICAgICAgICAgICBlID0gYy5sZW5ndGg7CiAgICAgICAgICAgIHdoaWxlIChlLS0pIGQuYXR0ckhhbmRsZVtjW2VdXSA9IGIKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxhKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMgPSBiICYmIGEsCiAgICAgICAgICAgICAgICBkID0gYyAmJiAxID09PSBhLm5vZGVUeXBlICYmIDEgPT09IGIubm9kZVR5cGUgJiYgYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7CiAgICAgICAgICAgIGlmIChkKSByZXR1cm4gZDsKICAgICAgICAgICAgaWYgKGMpCiAgICAgICAgICAgICAgICB3aGlsZSAoYyA9IGMubmV4dFNpYmxpbmcpCiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09IGIpIHJldHVybiAtMTsKICAgICAgICAgICAgcmV0dXJuIGEgPyAxIDogLTEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1hKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuICJpbnB1dCIgPT09IGMgJiYgYi50eXBlID09PSBhCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG5hKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuICgiaW5wdXQiID09PSBjIHx8ICJidXR0b24iID09PSBjKSAmJiBiLnR5cGUgPT09IGEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb2EoYSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgcmV0dXJuICJsYWJlbCIgaW4gYiAmJiBiLmRpc2FibGVkID09PSBhIHx8ICJmb3JtIiBpbiBiICYmIGIuZGlzYWJsZWQgPT09IGEgfHwgImZvcm0iIGluIGIgJiYgYi5kaXNhYmxlZCA9PT0gITEgJiYgKGIuaXNEaXNhYmxlZCA9PT0gYSB8fCBiLmlzRGlzYWJsZWQgIT09ICFhICYmICgibGFiZWwiIGluIGIgfHwgIWVhKGIpKSAhPT0gYSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcGEoYSkgewogICAgICAgICAgICByZXR1cm4gaWEoZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgcmV0dXJuIGIgPSArYiwgaWEoZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBmID0gYShbXSwgYy5sZW5ndGgsIGIpLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gZi5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGctLSkgY1tlID0gZltnXV0gJiYgKGNbZV0gPSAhKGRbZV0gPSBjW2VdKSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBxYShhKSB7CiAgICAgICAgICAgIHJldHVybiBhICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lICYmIGEKICAgICAgICB9CiAgICAgICAgYyA9IGdhLnN1cHBvcnQgPSB7fSwgZiA9IGdhLmlzWE1MID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiA9IGEgJiYgKGEub3duZXJEb2N1bWVudCB8fCBhKS5kb2N1bWVudEVsZW1lbnQ7CiAgICAgICAgICAgIHJldHVybiBiID8gIkhUTUwiICE9PSBiLm5vZGVOYW1lIDogITEKICAgICAgICB9LCBtID0gZ2Euc2V0RG9jdW1lbnQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiLCBlLCBnID0gYSA/IGEub3duZXJEb2N1bWVudCB8fCBhIDogdjsKICAgICAgICAgICAgcmV0dXJuIGcgIT09IG4gJiYgOSA9PT0gZy5ub2RlVHlwZSAmJiBnLmRvY3VtZW50RWxlbWVudCA/IChuID0gZywgbyA9IG4uZG9jdW1lbnRFbGVtZW50LCBwID0gIWYobiksIHYgIT09IG4gJiYgKGUgPSBuLmRlZmF1bHRWaWV3KSAmJiBlLnRvcCAhPT0gZSAmJiAoZS5hZGRFdmVudExpc3RlbmVyID8gZS5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLCBkYSwgITEpIDogZS5hdHRhY2hFdmVudCAmJiBlLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsIGRhKSksIGMuYXR0cmlidXRlcyA9IGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmNsYXNzTmFtZSA9ICJpIiwgIWEuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKQogICAgICAgICAgICB9KSwgYy5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCAhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aAogICAgICAgICAgICB9KSwgYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gWS50ZXN0KG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksIGMuZ2V0QnlJZCA9IGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvLmFwcGVuZENoaWxkKGEpLmlkID0gdSwgIW4uZ2V0RWxlbWVudHNCeU5hbWUgfHwgIW4uZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RoCiAgICAgICAgICAgIH0pLCBjLmdldEJ5SWQgPyAoZC5maW5kLklEID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgaWYgKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkICYmIHApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGIuZ2V0RWxlbWVudEJ5SWQoYSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMgPyBbY10gOiBbXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBkLmZpbHRlci5JRCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHZhciBiID0gYS5yZXBsYWNlKF8sIGFhKTsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpID09PSBiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pIDogKGRlbGV0ZSBkLmZpbmQuSUQsIGQuZmlsdGVyLklEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdmFyIGIgPSBhLnJlcGxhY2UoXywgYWEpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUgJiYgYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBjICYmIGMudmFsdWUgPT09IGIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGQuZmluZC5UQUcgPSBjLmdldEVsZW1lbnRzQnlUYWdOYW1lID8gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lID8gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSA6IGMucXNhID8gYi5xdWVyeVNlbGVjdG9yQWxsKGEpIDogdm9pZCAwCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICB2YXIgYywgZCA9IFtdLAogICAgICAgICAgICAgICAgICAgIGUgPSAwLAogICAgICAgICAgICAgICAgICAgIGYgPSBiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOwogICAgICAgICAgICAgICAgaWYgKCIqIiA9PT0gYSkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlIChjID0gZltlKytdKSAxID09PSBjLm5vZGVUeXBlICYmIGQucHVzaChjKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICAgICAgfSwgZC5maW5kLkNMQVNTID0gYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIHAgPyBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSkgOiB2b2lkIDAKICAgICAgICAgICAgfSwgciA9IFtdLCBxID0gW10sIChjLnFzYSA9IFkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSAmJiAoamEoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgby5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyB1ICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyB1ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgcS5wdXNoKCJbKl4kXT0iICsgSyArICIqKD86Jyd8XCJcIikiKSwgYS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IHEucHVzaCgiXFxbIiArIEsgKyAiKig/OnZhbHVlfCIgKyBKICsgIikiKSwgYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyB1ICsgIi1dIikubGVuZ3RoIHx8IHEucHVzaCgifj0iKSwgYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aCB8fCBxLnB1c2goIjpjaGVja2VkIiksIGEucXVlcnlTZWxlY3RvckFsbCgiYSMiICsgdSArICIrKiIpLmxlbmd0aCB8fCBxLnB1c2goIi4jLitbK35dIikKICAgICAgICAgICAgfSksIGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIGEuaW5uZXJIVE1MID0gIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7CiAgICAgICAgICAgICAgICB2YXIgYiA9IG4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAgICAgICAgIGIuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImhpZGRlbiIpLCBhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsICJEIiksIGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGggJiYgcS5wdXNoKCJuYW1lIiArIEsgKyAiKlsqXiR8IX5dPz0iKSwgMiAhPT0gYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCAmJiBxLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBvLmFwcGVuZENoaWxkKGEpLmRpc2FibGVkID0gITAsIDIgIT09IGEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoICYmIHEucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiksIGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLCBxLnB1c2goIiwuKjoiKQogICAgICAgICAgICB9KSksIChjLm1hdGNoZXNTZWxlY3RvciA9IFkudGVzdChzID0gby5tYXRjaGVzIHx8IG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IG8ubW96TWF0Y2hlc1NlbGVjdG9yIHx8IG8ub01hdGNoZXNTZWxlY3RvciB8fCBvLm1zTWF0Y2hlc1NlbGVjdG9yKSkgJiYgamEoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgYy5kaXNjb25uZWN0ZWRNYXRjaCA9IHMuY2FsbChhLCAiKiIpLCBzLmNhbGwoYSwgIltzIT0nJ106eCIpLCByLnB1c2goIiE9IiwgTikKICAgICAgICAgICAgfSksIHEgPSBxLmxlbmd0aCAmJiBuZXcgUmVnRXhwKHEuam9pbigifCIpKSwgciA9IHIubGVuZ3RoICYmIG5ldyBSZWdFeHAoci5qb2luKCJ8IikpLCBiID0gWS50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLCB0ID0gYiB8fCBZLnRlc3Qoby5jb250YWlucykgPyBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IDkgPT09IGEubm9kZVR5cGUgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsCiAgICAgICAgICAgICAgICAgICAgZCA9IGIgJiYgYi5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IGQgfHwgISghZCB8fCAxICE9PSBkLm5vZGVUeXBlIHx8ICEoYy5jb250YWlucyA/IGMuY29udGFpbnMoZCkgOiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uICYmIDE2ICYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IGIucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT09IGEpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9LCBCID0gYiA/IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gbCA9ICEwLCAwOwogICAgICAgICAgICAgICAgdmFyIGQgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uOwogICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBkIDogKGQgPSAoYS5vd25lckRvY3VtZW50IHx8IGEpID09PSAoYi5vd25lckRvY3VtZW50IHx8IGIpID8gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSA6IDEsIDEgJiBkIHx8ICFjLnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpID09PSBkID8gYSA9PT0gbiB8fCBhLm93bmVyRG9jdW1lbnQgPT09IHYgJiYgdCh2LCBhKSA/IC0xIDogYiA9PT0gbiB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHYgJiYgdCh2LCBiKSA/IDEgOiBrID8gSShrLCBhKSAtIEkoaywgYikgOiAwIDogNCAmIGQgPyAtMSA6IDEpCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICBpZiAoYSA9PT0gYikgcmV0dXJuIGwgPSAhMCwgMDsKICAgICAgICAgICAgICAgIHZhciBjLCBkID0gMCwKICAgICAgICAgICAgICAgICAgICBlID0gYS5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgIGYgPSBiLnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgZyA9IFthXSwKICAgICAgICAgICAgICAgICAgICBoID0gW2JdOwogICAgICAgICAgICAgICAgaWYgKCFlIHx8ICFmKSByZXR1cm4gYSA9PT0gbiA/IC0xIDogYiA9PT0gbiA/IDEgOiBlID8gLTEgOiBmID8gMSA6IGsgPyBJKGssIGEpIC0gSShrLCBiKSA6IDA7CiAgICAgICAgICAgICAgICBpZiAoZSA9PT0gZikgcmV0dXJuIGxhKGEsIGIpOwogICAgICAgICAgICAgICAgYyA9IGE7CiAgICAgICAgICAgICAgICB3aGlsZSAoYyA9IGMucGFyZW50Tm9kZSkgZy51bnNoaWZ0KGMpOwogICAgICAgICAgICAgICAgYyA9IGI7CiAgICAgICAgICAgICAgICB3aGlsZSAoYyA9IGMucGFyZW50Tm9kZSkgaC51bnNoaWZ0KGMpOwogICAgICAgICAgICAgICAgd2hpbGUgKGdbZF0gPT09IGhbZF0pIGQrKzsKICAgICAgICAgICAgICAgIHJldHVybiBkID8gbGEoZ1tkXSwgaFtkXSkgOiBnW2RdID09PSB2ID8gLTEgOiBoW2RdID09PSB2ID8gMSA6IDAKICAgICAgICAgICAgfSwgbikgOiBuCiAgICAgICAgfSwgZ2EubWF0Y2hlcyA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIGdhKGEsIG51bGwsIG51bGwsIGIpCiAgICAgICAgfSwgZ2EubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICBpZiAoKGEub3duZXJEb2N1bWVudCB8fCBhKSAhPT0gbiAmJiBtKGEpLCBiID0gYi5yZXBsYWNlKFMsICI9JyQxJ10iKSwgYy5tYXRjaGVzU2VsZWN0b3IgJiYgcCAmJiAhQVtiICsgIiAiXSAmJiAoIXIgfHwgIXIudGVzdChiKSkgJiYgKCFxIHx8ICFxLnRlc3QoYikpKSB0cnkgewogICAgICAgICAgICAgICAgdmFyIGQgPSBzLmNhbGwoYSwgYik7CiAgICAgICAgICAgICAgICBpZiAoZCB8fCBjLmRpc2Nvbm5lY3RlZE1hdGNoIHx8IGEuZG9jdW1lbnQgJiYgMTEgIT09IGEuZG9jdW1lbnQubm9kZVR5cGUpIHJldHVybiBkCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIHJldHVybiBnYShiLCBuLCBudWxsLCBbYV0pLmxlbmd0aCA+IDAKICAgICAgICB9LCBnYS5jb250YWlucyA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIChhLm93bmVyRG9jdW1lbnQgfHwgYSkgIT09IG4gJiYgbShhKSwgdChhLCBiKQogICAgICAgIH0sIGdhLmF0dHIgPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIChhLm93bmVyRG9jdW1lbnQgfHwgYSkgIT09IG4gJiYgbShhKTsKICAgICAgICAgICAgdmFyIGUgPSBkLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSwKICAgICAgICAgICAgICAgIGYgPSBlICYmIEMuY2FsbChkLmF0dHJIYW5kbGUsIGIudG9Mb3dlckNhc2UoKSkgPyBlKGEsIGIsICFwKSA6IHZvaWQgMDsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gZiA/IGYgOiBjLmF0dHJpYnV0ZXMgfHwgIXAgPyBhLmdldEF0dHJpYnV0ZShiKSA6IChmID0gYS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSAmJiBmLnNwZWNpZmllZCA/IGYudmFsdWUgOiBudWxsCiAgICAgICAgfSwgZ2EuZXNjYXBlID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gKGEgKyAiIikucmVwbGFjZShiYSwgY2EpCiAgICAgICAgfSwgZ2EuZXJyb3IgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiArIGEpCiAgICAgICAgfSwgZ2EudW5pcXVlU29ydCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIsIGQgPSBbXSwKICAgICAgICAgICAgICAgIGUgPSAwLAogICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgIGlmIChsID0gIWMuZGV0ZWN0RHVwbGljYXRlcywgayA9ICFjLnNvcnRTdGFibGUgJiYgYS5zbGljZSgwKSwgYS5zb3J0KEIpLCBsKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IGFbZisrXSkgYiA9PT0gYVtmXSAmJiAoZSA9IGQucHVzaChmKSk7CiAgICAgICAgICAgICAgICB3aGlsZSAoZS0tKSBhLnNwbGljZShkW2VdLCAxKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBrID0gbnVsbCwgYQogICAgICAgIH0sIGUgPSBnYS5nZXRUZXh0ID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiwgYyA9ICIiLAogICAgICAgICAgICAgICAgZCA9IDAsCiAgICAgICAgICAgICAgICBmID0gYS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgIGlmICgxID09PSBmIHx8IDkgPT09IGYgfHwgMTEgPT09IGYpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGEudGV4dENvbnRlbnQpIHJldHVybiBhLnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IGEuZmlyc3RDaGlsZDsgYTsgYSA9IGEubmV4dFNpYmxpbmcpIGMgKz0gZShhKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgzID09PSBmIHx8IDQgPT09IGYpIHJldHVybiBhLm5vZGVWYWx1ZQogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHdoaWxlIChiID0gYVtkKytdKSBjICs9IGUoYik7CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgfSwgZCA9IGdhLnNlbGVjdG9ycyA9IHsKICAgICAgICAgICAgY2FjaGVMZW5ndGg6IDUwLAogICAgICAgICAgICBjcmVhdGVQc2V1ZG86IGlhLAogICAgICAgICAgICBtYXRjaDogViwKICAgICAgICAgICAgYXR0ckhhbmRsZToge30sCiAgICAgICAgICAgIGZpbmQ6IHt9LAogICAgICAgICAgICByZWxhdGl2ZTogewogICAgICAgICAgICAgICAgIj4iOiB7CiAgICAgICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIiAiOiB7CiAgICAgICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiKyI6IHsKICAgICAgICAgICAgICAgICAgICBkaXI6ICJwcmV2aW91c1NpYmxpbmciLAogICAgICAgICAgICAgICAgICAgIGZpcnN0OiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJ+IjogewogICAgICAgICAgICAgICAgICAgIGRpcjogInByZXZpb3VzU2libGluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJlRmlsdGVyOiB7CiAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFbMV0gPSBhWzFdLnJlcGxhY2UoXywgYWEpLCBhWzNdID0gKGFbM10gfHwgYVs0XSB8fCBhWzVdIHx8ICIiKS5yZXBsYWNlKF8sIGFhKSwgIn49IiA9PT0gYVsyXSAmJiAoYVszXSA9ICIgIiArIGFbM10gKyAiICIpLCBhLnNsaWNlKDAsIDQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ0hJTEQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYVsxXSA9IGFbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGFbMV0uc2xpY2UoMCwgMykgPyAoYVszXSB8fCBnYS5lcnJvcihhWzBdKSwgYVs0XSA9ICsoYVs0XSA/IGFbNV0gKyAoYVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBhWzNdIHx8ICJvZGQiID09PSBhWzNdKSksIGFbNV0gPSArKGFbN10gKyBhWzhdIHx8ICJvZGQiID09PSBhWzNdKSkgOiBhWzNdICYmIGdhLmVycm9yKGFbMF0pLCBhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgUFNFVURPOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIsIGMgPSAhYVs2XSAmJiBhWzJdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBWLkNISUxELnRlc3QoYVswXSkgPyBudWxsIDogKGFbM10gPyBhWzJdID0gYVs0XSB8fCBhWzVdIHx8ICIiIDogYyAmJiBULnRlc3QoYykgJiYgKGIgPSBnKGMsICEwKSkgJiYgKGIgPSBjLmluZGV4T2YoIikiLCBjLmxlbmd0aCAtIGIpIC0gYy5sZW5ndGgpICYmIChhWzBdID0gYVswXS5zbGljZSgwLCBiKSwgYVsyXSA9IGMuc2xpY2UoMCwgYikpLCBhLnNsaWNlKDAsIDMpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgICAgIFRBRzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5yZXBsYWNlKF8sIGFhKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiKiIgPT09IGEgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEubm9kZU5hbWUgJiYgYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENMQVNTOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB5W2EgKyAiICJdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBiIHx8IChiID0gbmV3IFJlZ0V4cCgiKF58IiArIEsgKyAiKSIgKyBhICsgIigiICsgSyArICJ8JCkiKSkgJiYgeShhLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnRlc3QoInN0cmluZyIgPT0gdHlwZW9mIGEuY2xhc3NOYW1lICYmIGEuY2xhc3NOYW1lIHx8ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBhLmdldEF0dHJpYnV0ZSAmJiBhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIikKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGdhLmF0dHIoZCwgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUgPyAiIT0iID09PSBiIDogYiA/IChlICs9ICIiLCAiPSIgPT09IGIgPyBlID09PSBjIDogIiE9IiA9PT0gYiA/IGUgIT09IGMgOiAiXj0iID09PSBiID8gYyAmJiAwID09PSBlLmluZGV4T2YoYykgOiAiKj0iID09PSBiID8gYyAmJiBlLmluZGV4T2YoYykgPiAtMSA6ICIkPSIgPT09IGIgPyBjICYmIGUuc2xpY2UoLWMubGVuZ3RoKSA9PT0gYyA6ICJ+PSIgPT09IGIgPyAoIiAiICsgZS5yZXBsYWNlKE8sICIgIikgKyAiICIpLmluZGV4T2YoYykgPiAtMSA6ICJ8PSIgPT09IGIgPyBlID09PSBjIHx8IGUuc2xpY2UoMCwgYy5sZW5ndGggKyAxKSA9PT0gYyArICItIiA6ICExKSA6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbihhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSAibnRoIiAhPT0gYS5zbGljZSgwLCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICJsYXN0IiAhPT0gYS5zbGljZSgtNCksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSAib2YtdHlwZSIgPT09IGI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IGQgJiYgMCA9PT0gZSA/IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhYS5wYXJlbnROb2RlCiAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGIsIGMsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGosIGssIGwsIG0sIG4sIG8sIHAgPSBmICE9PSBnID8gIm5leHRTaWJsaW5nIiA6ICJwcmV2aW91c1NpYmxpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGIucGFyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBoICYmIGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhaSAmJiAhaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChtID0gbVtwXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID8gbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSByIDogMSA9PT0gbS5ub2RlVHlwZSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcCA9ICJvbmx5IiA9PT0gYSAmJiAhbyAmJiAibmV4dFNpYmxpbmciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPSBbZyA/IHEuZmlyc3RDaGlsZCA6IHEubGFzdENoaWxkXSwgZyAmJiBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHEsIGwgPSBtW3VdIHx8IChtW3VdID0ge30pLCBrID0gbFttLnVuaXF1ZUlEXSB8fCAobFttLnVuaXF1ZUlEXSA9IHt9KSwgaiA9IGtbYV0gfHwgW10sIG4gPSBqWzBdID09PSB3ICYmIGpbMV0sIHQgPSBuICYmIGpbMl0sIG0gPSBuICYmIHEuY2hpbGROb2Rlc1tuXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobSA9ICsrbiAmJiBtICYmIG1bcF0gfHwgKHQgPSBuID0gMCkgfHwgby5wb3AoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IG0ubm9kZVR5cGUgJiYgKyt0ICYmIG0gPT09IGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtbYV0gPSBbdywgbiwgdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMgJiYgKG0gPSBiLCBsID0gbVt1XSB8fCAobVt1XSA9IHt9KSwgayA9IGxbbS51bmlxdWVJRF0gfHwgKGxbbS51bmlxdWVJRF0gPSB7fSksIGogPSBrW2FdIHx8IFtdLCBuID0galswXSA9PT0gdyAmJiBqWzFdLCB0ID0gbiksIHQgPT09ICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChtID0gKytuICYmIG0gJiYgbVtwXSB8fCAodCA9IG4gPSAwKSB8fCBvLnBvcCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggPyBtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHIgOiAxID09PSBtLm5vZGVUeXBlKSAmJiArK3QgJiYgKHMgJiYgKGwgPSBtW3VdIHx8IChtW3VdID0ge30pLCBrID0gbFttLnVuaXF1ZUlEXSB8fCAobFttLnVuaXF1ZUlEXSA9IHt9KSwga1thXSA9IFt3LCB0XSksIG0gPT09IGIpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IC09IGUsIHQgPT09IGQgfHwgdCAlIGQgPT09IDAgJiYgdCAvIGQgPj0gMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFBTRVVETzogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIHZhciBjLCBlID0gZC5wc2V1ZG9zW2FdIHx8IGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldIHx8IGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIgKyBhKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVt1XSA/IGUoYikgOiBlLmxlbmd0aCA+IDEgPyAoYyA9IFthLCBhLCAiIiwgYl0sIGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpID8gaWEoZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCwgZiA9IGUoYSwgYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZi5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChnLS0pIGQgPSBJKGEsIGZbZ10pLCBhW2RdID0gIShjW2RdID0gZltnXSkKICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoYSwgMCwgYykKICAgICAgICAgICAgICAgICAgICB9KSA6IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHNldWRvczogewogICAgICAgICAgICAgICAgbm90OiBpYShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gaChhLnJlcGxhY2UoUCwgIiQxIikpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBkW3VdID8gaWEoZnVuY3Rpb24oYSwgYiwgYywgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiwgZyA9IGQoYSwgbnVsbCwgZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGEubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaC0tKShmID0gZ1toXSkgJiYgKGFbaF0gPSAhKGJbaF0gPSBmKSkKICAgICAgICAgICAgICAgICAgICB9KSA6IGZ1bmN0aW9uKGEsIGUsIGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbMF0gPSBhLCBkKGIsIG51bGwsIGYsIGMpLCBiWzBdID0gbnVsbCwgIWMucG9wKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGhhczogaWEoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnYShhLCBiKS5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBjb250YWluczogaWEoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gYS5yZXBsYWNlKF8sIGFhKSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiLnRleHRDb250ZW50IHx8IGIuaW5uZXJUZXh0IHx8IGUoYikpLmluZGV4T2YoYSkgPiAtMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGxhbmc6IGlhKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gVS50ZXN0KGEgfHwgIiIpIHx8IGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiICsgYSksIGEgPSBhLnJlcGxhY2UoXywgYWEpLnRvTG93ZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IHAgPyBiLmxhbmcgOiBiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCBiLmdldEF0dHJpYnV0ZSgibGFuZyIpKSByZXR1cm4gYyA9IGMudG9Mb3dlckNhc2UoKSwgYyA9PT0gYSB8fCAwID09PSBjLmluZGV4T2YoYSArICItIik7IHdoaWxlICgoYiA9IGIucGFyZW50Tm9kZSkgJiYgMSA9PT0gYi5ub2RlVHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEubG9jYXRpb24gJiYgYS5sb2NhdGlvbi5oYXNoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBjICYmIGMuc2xpY2UoMSkgPT09IGIuaWQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByb290OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IG8KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmb2N1czogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhID09PSBuLmFjdGl2ZUVsZW1lbnQgJiYgKCFuLmhhc0ZvY3VzIHx8IG4uaGFzRm9jdXMoKSkgJiYgISEoYS50eXBlIHx8IGEuaHJlZiB8fCB+YS50YWJJbmRleCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbmFibGVkOiBvYSghMSksCiAgICAgICAgICAgICAgICBkaXNhYmxlZDogb2EoITApLAogICAgICAgICAgICAgICAgY2hlY2tlZDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSBiICYmICEhYS5jaGVja2VkIHx8ICJvcHRpb24iID09PSBiICYmICEhYS5zZWxlY3RlZAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucGFyZW50Tm9kZSAmJiBhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgYS5zZWxlY3RlZCA9PT0gITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IGEuZmlyc3RDaGlsZDsgYTsgYSA9IGEubmV4dFNpYmxpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLm5vZGVUeXBlIDwgNikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBhcmVudDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhZC5wc2V1ZG9zLmVtcHR5KGEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGVhZGVyOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJ1dHRvbjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSBiICYmICJidXR0b24iID09PSBhLnR5cGUgfHwgImJ1dHRvbiIgPT09IGIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnB1dCIgPT09IGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGEudHlwZSAmJiAobnVsbCA9PSAoYiA9IGEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8ICJ0ZXh0IiA9PT0gYi50b0xvd2VyQ2FzZSgpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcnN0OiBwYShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzBdCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGxhc3Q6IHBhKGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2IgLSAxXQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBlcTogcGEoZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbMCA+IGMgPyBjICsgYiA6IGNdCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGV2ZW46IHBhKGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYiA+IGM7IGMgKz0gMikgYS5wdXNoKGMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIG9kZDogcGEoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAxOyBiID4gYzsgYyArPSAyKSBhLnB1c2goYyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgbHQ6IHBhKGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gMCA+IGMgPyBjICsgYiA6IGM7IC0tZCA+PSAwOykgYS5wdXNoKGQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGd0OiBwYShmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDAgPiBjID8gYyArIGIgOiBjOyArK2QgPCBiOykgYS5wdXNoKGQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSwgZC5wc2V1ZG9zLm50aCA9IGQucHNldWRvcy5lcTsKICAgICAgICBmb3IgKGIgaW4gewogICAgICAgICAgICAgICAgcmFkaW86ICEwLAogICAgICAgICAgICAgICAgY2hlY2tib3g6ICEwLAogICAgICAgICAgICAgICAgZmlsZTogITAsCiAgICAgICAgICAgICAgICBwYXNzd29yZDogITAsCiAgICAgICAgICAgICAgICBpbWFnZTogITAKICAgICAgICAgICAgfSkgZC5wc2V1ZG9zW2JdID0gbWEoYik7CiAgICAgICAgZm9yIChiIGluIHsKICAgICAgICAgICAgICAgIHN1Ym1pdDogITAsCiAgICAgICAgICAgICAgICByZXNldDogITAKICAgICAgICAgICAgfSkgZC5wc2V1ZG9zW2JdID0gbmEoYik7CgogICAgICAgIGZ1bmN0aW9uIHJhKCkge30KICAgICAgICByYS5wcm90b3R5cGUgPSBkLmZpbHRlcnMgPSBkLnBzZXVkb3MsIGQuc2V0RmlsdGVycyA9IG5ldyByYSwgZyA9IGdhLnRva2VuaXplID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYywgZSwgZiwgZywgaCwgaSwgaiwgayA9IHpbYSArICIgIl07CiAgICAgICAgICAgIGlmIChrKSByZXR1cm4gYiA/IDAgOiBrLnNsaWNlKDApOwogICAgICAgICAgICBoID0gYSwgaSA9IFtdLCBqID0gZC5wcmVGaWx0ZXI7CiAgICAgICAgICAgIHdoaWxlIChoKSB7CiAgICAgICAgICAgICAgICBjICYmICEoZSA9IFEuZXhlYyhoKSkgfHwgKGUgJiYgKGggPSBoLnNsaWNlKGVbMF0ubGVuZ3RoKSB8fCBoKSwgaS5wdXNoKGYgPSBbXSkpLCBjID0gITEsIChlID0gUi5leGVjKGgpKSAmJiAoYyA9IGUuc2hpZnQoKSwgZi5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYywKICAgICAgICAgICAgICAgICAgICB0eXBlOiBlWzBdLnJlcGxhY2UoUCwgIiAiKQogICAgICAgICAgICAgICAgfSksIGggPSBoLnNsaWNlKGMubGVuZ3RoKSk7CiAgICAgICAgICAgICAgICBmb3IgKGcgaW4gZC5maWx0ZXIpICEoZSA9IFZbZ10uZXhlYyhoKSkgfHwgaltnXSAmJiAhKGUgPSBqW2ddKGUpKSB8fCAoYyA9IGUuc2hpZnQoKSwgZi5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYywKICAgICAgICAgICAgICAgICAgICB0eXBlOiBnLAogICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IGUKICAgICAgICAgICAgICAgIH0pLCBoID0gaC5zbGljZShjLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgaWYgKCFjKSBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBiID8gaC5sZW5ndGggOiBoID8gZ2EuZXJyb3IoYSkgOiB6KGEsIGkpLnNsaWNlKDApCiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gc2EoYSkgewogICAgICAgICAgICBmb3IgKHZhciBiID0gMCwgYyA9IGEubGVuZ3RoLCBkID0gIiI7IGMgPiBiOyBiKyspIGQgKz0gYVtiXS52YWx1ZTsKICAgICAgICAgICAgcmV0dXJuIGQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRhKGEsIGIsIGMpIHsKICAgICAgICAgICAgdmFyIGQgPSBiLmRpciwKICAgICAgICAgICAgICAgIGUgPSBiLm5leHQsCiAgICAgICAgICAgICAgICBmID0gZSB8fCBkLAogICAgICAgICAgICAgICAgZyA9IGMgJiYgInBhcmVudE5vZGUiID09PSBmLAogICAgICAgICAgICAgICAgaCA9IHgrKzsKICAgICAgICAgICAgcmV0dXJuIGIuZmlyc3QgPyBmdW5jdGlvbihiLCBjLCBlKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IGJbZF0pCiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGIubm9kZVR5cGUgfHwgZykgcmV0dXJuIGEoYiwgYywgZSkKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGIsIGMsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBqLCBrLCBsLCBtID0gW3csIGhdOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IGJbZF0pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoMSA9PT0gYi5ub2RlVHlwZSB8fCBnKSAmJiBhKGIsIGMsIGkpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChiID0gYltkXSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGIubm9kZVR5cGUgfHwgZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gYlt1XSB8fCAoYlt1XSA9IHt9KSwgayA9IGxbYi51bmlxdWVJRF0gfHwgKGxbYi51bmlxdWVJRF0gPSB7fSksIGUgJiYgZSA9PT0gYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSBiID0gYltkXSB8fCBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqID0ga1tmXSkgJiYgalswXSA9PT0gdyAmJiBqWzFdID09PSBoKSByZXR1cm4gbVsyXSA9IGpbMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtbZl0gPSBtLCBtWzJdID0gYShiLCBjLCBpKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHVhKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGEubGVuZ3RoID4gMSA/IGZ1bmN0aW9uKGIsIGMsIGQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gYS5sZW5ndGg7CiAgICAgICAgICAgICAgICB3aGlsZSAoZS0tKQogICAgICAgICAgICAgICAgICAgIGlmICghYVtlXShiLCBjLCBkKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0gOiBhWzBdCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2YShhLCBiLCBjKSB7CiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwLCBlID0gYi5sZW5ndGg7IGUgPiBkOyBkKyspIGdhKGEsIGJbZF0sIGMpOwogICAgICAgICAgICByZXR1cm4gYwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2EoYSwgYiwgYywgZCwgZSkgewogICAgICAgICAgICBmb3IgKHZhciBmLCBnID0gW10sIGggPSAwLCBpID0gYS5sZW5ndGgsIGogPSBudWxsICE9IGI7IGkgPiBoOyBoKyspKGYgPSBhW2hdKSAmJiAoYyAmJiAhYyhmLCBkLCBlKSB8fCAoZy5wdXNoKGYpLCBqICYmIGIucHVzaChoKSkpOwogICAgICAgICAgICByZXR1cm4gZwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geGEoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgICAgICByZXR1cm4gZCAmJiAhZFt1XSAmJiAoZCA9IHhhKGQpKSwgZSAmJiAhZVt1XSAmJiAoZSA9IHhhKGUsIGYpKSwgaWEoZnVuY3Rpb24oZiwgZywgaCwgaSkgewogICAgICAgICAgICAgICAgdmFyIGosIGssIGwsIG0gPSBbXSwKICAgICAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgbyA9IGcubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIHAgPSBmIHx8IHZhKGIgfHwgIioiLCBoLm5vZGVUeXBlID8gW2hdIDogaCwgW10pLAogICAgICAgICAgICAgICAgICAgIHEgPSAhYSB8fCAhZiAmJiBiID8gcCA6IHdhKHAsIG0sIGEsIGgsIGkpLAogICAgICAgICAgICAgICAgICAgIHIgPSBjID8gZSB8fCAoZiA/IGEgOiBvIHx8IGQpID8gW10gOiBnIDogcTsKICAgICAgICAgICAgICAgIGlmIChjICYmIGMocSwgciwgaCwgaSksIGQpIHsKICAgICAgICAgICAgICAgICAgICBqID0gd2EociwgbiksIGQoaiwgW10sIGgsIGkpLCBrID0gai5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGstLSkobCA9IGpba10pICYmIChyW25ba11dID0gIShxW25ba11dID0gbCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgIGlmIChlIHx8IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBbXSwgayA9IHIubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGstLSkobCA9IHJba10pICYmIGoucHVzaChxW2tdID0gbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlKG51bGwsIHIgPSBbXSwgaiwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrID0gci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChrLS0pKGwgPSByW2tdKSAmJiAoaiA9IGUgPyBJKGYsIGwpIDogbVtrXSkgPiAtMSAmJiAoZltqXSA9ICEoZ1tqXSA9IGwpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSByID0gd2EociA9PT0gZyA/IHIuc3BsaWNlKG8sIHIubGVuZ3RoKSA6IHIpLCBlID8gZShudWxsLCBnLCByLCBpKSA6IEcuYXBwbHkoZywgcikKICAgICAgICAgICAgfSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHlhKGEpIHsKICAgICAgICAgICAgZm9yICh2YXIgYiwgYywgZSwgZiA9IGEubGVuZ3RoLCBnID0gZC5yZWxhdGl2ZVthWzBdLnR5cGVdLCBoID0gZyB8fCBkLnJlbGF0aXZlWyIgIl0sIGkgPSBnID8gMSA6IDAsIGsgPSB0YShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IGIKICAgICAgICAgICAgICAgIH0sIGgsICEwKSwgbCA9IHRhKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gSShiLCBhKSA+IC0xCiAgICAgICAgICAgICAgICB9LCBoLCAhMCksIG0gPSBbZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gIWcgJiYgKGQgfHwgYyAhPT0gaikgfHwgKChiID0gYykubm9kZVR5cGUgPyBrKGEsIGMsIGQpIDogbChhLCBjLCBkKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIgPSBudWxsLCBlCiAgICAgICAgICAgICAgICB9XTsgZiA+IGk7IGkrKykKICAgICAgICAgICAgICAgIGlmIChjID0gZC5yZWxhdGl2ZVthW2ldLnR5cGVdKSBtID0gW3RhKHVhKG0pLCBjKV07CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYyA9IGQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCwgYVtpXS5tYXRjaGVzKSwgY1t1XSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSArK2k7IGYgPiBlOyBlKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhhKGkgPiAxICYmIHVhKG0pLCBpID4gMSAmJiBzYShhLnNsaWNlKDAsIGkgLSAxKS5jb25jYXQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICIgIiA9PT0gYVtpIC0gMl0udHlwZSA/ICIqIiA6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5yZXBsYWNlKFAsICIkMSIpLCBjLCBlID4gaSAmJiB5YShhLnNsaWNlKGksIGUpKSwgZiA+IGUgJiYgeWEoYSA9IGEuc2xpY2UoZSkpLCBmID4gZSAmJiBzYShhKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbS5wdXNoKGMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB1YShtKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gemEoYSwgYikgewogICAgICAgICAgICB2YXIgYyA9IGIubGVuZ3RoID4gMCwKICAgICAgICAgICAgICAgIGUgPSBhLmxlbmd0aCA+IDAsCiAgICAgICAgICAgICAgICBmID0gZnVuY3Rpb24oZiwgZywgaCwgaSwgaykgewogICAgICAgICAgICAgICAgICAgIHZhciBsLCBvLCBxLCByID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGYgJiYgW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGosCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBmIHx8IGUgJiYgZC5maW5kLlRBRygiKiIsIGspLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdyArPSBudWxsID09IHYgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgeiA9IHgubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAoayAmJiAoaiA9IGcgPT09IG4gfHwgZyB8fCBrKTsgcyAhPT0geiAmJiBudWxsICE9IChsID0geFtzXSk7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMCwgZyB8fCBsLm93bmVyRG9jdW1lbnQgPT09IG4gfHwgKG0obCksIGggPSAhcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocSA9IGFbbysrXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocShsLCBnIHx8IG4sIGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucHVzaChsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrICYmICh3ID0geSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjICYmICgobCA9ICFxICYmIGwpICYmIHItLSwgZiAmJiB0LnB1c2gobCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChyICs9IHMsIGMgJiYgcyAhPT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHEgPSBiW28rK10pIHEodCwgdSwgZywgaCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMtLSkgdFtzXSB8fCB1W3NdIHx8ICh1W3NdID0gRS5jYWxsKGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB3YSh1KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEcuYXBwbHkoaSwgdSksIGsgJiYgIWYgJiYgdS5sZW5ndGggPiAwICYmIHIgKyBiLmxlbmd0aCA+IDEgJiYgZ2EudW5pcXVlU29ydChpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gayAmJiAodyA9IHksIGogPSB2KSwgdAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGMgPyBpYShmKSA6IGYKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGggPSBnYS5jb21waWxlID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYywgZCA9IFtdLAogICAgICAgICAgICAgICAgZSA9IFtdLAogICAgICAgICAgICAgICAgZiA9IEFbYSArICIgIl07CiAgICAgICAgICAgIGlmICghZikgewogICAgICAgICAgICAgICAgYiB8fCAoYiA9IGcoYSkpLCBjID0gYi5sZW5ndGg7CiAgICAgICAgICAgICAgICB3aGlsZSAoYy0tKSBmID0geWEoYltjXSksIGZbdV0gPyBkLnB1c2goZikgOiBlLnB1c2goZik7CiAgICAgICAgICAgICAgICBmID0gQShhLCB6YShlLCBkKSksIGYuc2VsZWN0b3IgPSBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICB9LCBpID0gZ2Euc2VsZWN0ID0gZnVuY3Rpb24oYSwgYiwgZSwgZikgewogICAgICAgICAgICB2YXIgaSwgaiwgaywgbCwgbSwgbiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGEgJiYgYSwKICAgICAgICAgICAgICAgIG8gPSAhZiAmJiBnKGEgPSBuLnNlbGVjdG9yIHx8IGEpOwogICAgICAgICAgICBpZiAoZSA9IGUgfHwgW10sIDEgPT09IG8ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBpZiAoaiA9IG9bMF0gPSBvWzBdLnNsaWNlKDApLCBqLmxlbmd0aCA+IDIgJiYgIklEIiA9PT0gKGsgPSBqWzBdKS50eXBlICYmIGMuZ2V0QnlJZCAmJiA5ID09PSBiLm5vZGVUeXBlICYmIHAgJiYgZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGIgPSAoZC5maW5kLklEKGsubWF0Y2hlc1swXS5yZXBsYWNlKF8sIGFhKSwgYikgfHwgW10pWzBdLCAhYikgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgbiAmJiAoYiA9IGIucGFyZW50Tm9kZSksIGEgPSBhLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gVi5uZWVkc0NvbnRleHQudGVzdChhKSA/IDAgOiBqLmxlbmd0aDsKICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoayA9IGpbaV0sIGQucmVsYXRpdmVbbCA9IGsudHlwZV0pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGlmICgobSA9IGQuZmluZFtsXSkgJiYgKGYgPSBtKGsubWF0Y2hlc1swXS5yZXBsYWNlKF8sIGFhKSwgJC50ZXN0KGpbMF0udHlwZSkgJiYgcWEoYi5wYXJlbnROb2RlKSB8fCBiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGouc3BsaWNlKGksIDEpLCBhID0gZi5sZW5ndGggJiYgc2EoaiksICFhKSByZXR1cm4gRy5hcHBseShlLCBmKSwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChuIHx8IGgoYSwgbykpKGYsIGIsICFwLCBlLCAhYiB8fCAkLnRlc3QoYSkgJiYgcWEoYi5wYXJlbnROb2RlKSB8fCBiKSwgZQogICAgICAgIH0sIGMuc29ydFN0YWJsZSA9IHUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigiIikgPT09IHUsIGMuZGV0ZWN0RHVwbGljYXRlcyA9ICEhbCwgbSgpLCBjLnNvcnREZXRhY2hlZCA9IGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIDEgJiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSkKICAgICAgICB9KSwgamEoZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gYS5pbm5lckhUTUwgPSAiPGEgaHJlZj0nIyc+PC9hPiIsICIjIiA9PT0gYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpCiAgICAgICAgfSkgfHwga2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLCBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiBjID8gdm9pZCAwIDogYS5nZXRBdHRyaWJ1dGUoYiwgInR5cGUiID09PSBiLnRvTG93ZXJDYXNlKCkgPyAxIDogMikKICAgICAgICB9KSwgYy5hdHRyaWJ1dGVzICYmIGphKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGEuaW5uZXJIVE1MID0gIjxpbnB1dC8+IiwgYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCAiIiksICIiID09PSBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpCiAgICAgICAgfSkgfHwga2EoInZhbHVlIiwgZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4gYyB8fCAiaW5wdXQiICE9PSBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPyB2b2lkIDAgOiBhLmRlZmF1bHRWYWx1ZQogICAgICAgIH0pLCBqYShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpCiAgICAgICAgfSkgfHwga2EoSiwgZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICB2YXIgZDsKICAgICAgICAgICAgcmV0dXJuIGMgPyB2b2lkIDAgOiBhW2JdID09PSAhMCA/IGIudG9Mb3dlckNhc2UoKSA6IChkID0gYS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSAmJiBkLnNwZWNpZmllZCA/IGQudmFsdWUgOiBudWxsCiAgICAgICAgfSksIGdhCiAgICB9KGEpOwogICAgci5maW5kID0geCwgci5leHByID0geC5zZWxlY3RvcnMsIHIuZXhwclsiOiJdID0gci5leHByLnBzZXVkb3MsIHIudW5pcXVlU29ydCA9IHIudW5pcXVlID0geC51bmlxdWVTb3J0LCByLnRleHQgPSB4LmdldFRleHQsIHIuaXNYTUxEb2MgPSB4LmlzWE1MLCByLmNvbnRhaW5zID0geC5jb250YWlucywgci5lc2NhcGVTZWxlY3RvciA9IHguZXNjYXBlOwogICAgdmFyIHkgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkID0gW10sCiAgICAgICAgICAgICAgICBlID0gdm9pZCAwICE9PSBjOwogICAgICAgICAgICB3aGlsZSAoKGEgPSBhW2JdKSAmJiA5ICE9PSBhLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgaWYgKDEgPT09IGEubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiByKGEpLmlzKGMpKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBkLnB1c2goYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGQKICAgICAgICB9LAogICAgICAgIHogPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIGZvciAodmFyIGMgPSBbXTsgYTsgYSA9IGEubmV4dFNpYmxpbmcpIDEgPT09IGEubm9kZVR5cGUgJiYgYSAhPT0gYiAmJiBjLnB1c2goYSk7CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgfSwKICAgICAgICBBID0gci5leHByLm1hdGNoLm5lZWRzQ29udGV4dCwKICAgICAgICBCID0gL148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2ksCiAgICAgICAgQyA9IC9eLlteOiNcW1wuLF0qJC87CgogICAgZnVuY3Rpb24gRChhLCBiLCBjKSB7CiAgICAgICAgaWYgKHIuaXNGdW5jdGlvbihiKSkgcmV0dXJuIHIuZ3JlcChhLCBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgIHJldHVybiAhIWIuY2FsbChhLCBkLCBhKSAhPT0gYwogICAgICAgIH0pOwogICAgICAgIGlmIChiLm5vZGVUeXBlKSByZXR1cm4gci5ncmVwKGEsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGEgPT09IGIgIT09IGMKICAgICAgICB9KTsKICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGIpIHsKICAgICAgICAgICAgaWYgKEMudGVzdChiKSkgcmV0dXJuIHIuZmlsdGVyKGIsIGEsIGMpOwogICAgICAgICAgICBiID0gci5maWx0ZXIoYiwgYSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHIuZ3JlcChhLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBpLmNhbGwoYiwgYSkgPiAtMSAhPT0gYyAmJiAxID09PSBhLm5vZGVUeXBlCiAgICAgICAgfSkKICAgIH0KICAgIHIuZmlsdGVyID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgIHZhciBkID0gYlswXTsKICAgICAgICByZXR1cm4gYyAmJiAoYSA9ICI6bm90KCIgKyBhICsgIikiKSwgMSA9PT0gYi5sZW5ndGggJiYgMSA9PT0gZC5ub2RlVHlwZSA/IHIuZmluZC5tYXRjaGVzU2VsZWN0b3IoZCwgYSkgPyBbZF0gOiBbXSA6IHIuZmluZC5tYXRjaGVzKGEsIHIuZ3JlcChiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiAxID09PSBhLm5vZGVUeXBlCiAgICAgICAgfSkpCiAgICB9LCByLmZuLmV4dGVuZCh7CiAgICAgICAgZmluZDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiwgYywgZCA9IHRoaXMubGVuZ3RoLAogICAgICAgICAgICAgICAgZSA9IHRoaXM7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgYSkgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIoYSkuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yIChiID0gMDsgZCA+IGI7IGIrKykKICAgICAgICAgICAgICAgICAgICBpZiAoci5jb250YWlucyhlW2JdLCB0aGlzKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZm9yIChjID0gdGhpcy5wdXNoU3RhY2soW10pLCBiID0gMDsgZCA+IGI7IGIrKykgci5maW5kKGEsIGVbYl0sIGMpOwogICAgICAgICAgICByZXR1cm4gZCA+IDEgPyByLnVuaXF1ZVNvcnQoYykgOiBjCiAgICAgICAgfSwKICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKEQodGhpcywgYSB8fCBbXSwgITEpKQogICAgICAgIH0sCiAgICAgICAgbm90OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsIGEgfHwgW10sICEwKSkKICAgICAgICB9LAogICAgICAgIGlzOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiAhIUQodGhpcywgInN0cmluZyIgPT0gdHlwZW9mIGEgJiYgQS50ZXN0KGEpID8gcihhKSA6IGEgfHwgW10sICExKS5sZW5ndGgKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBFLCBGID0gL14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLywKICAgICAgICBHID0gci5mbi5pbml0ID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICB2YXIgZSwgZjsKICAgICAgICAgICAgaWYgKCFhKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgaWYgKGMgPSBjIHx8IEUsICJzdHJpbmciID09IHR5cGVvZiBhKSB7CiAgICAgICAgICAgICAgICBpZiAoZSA9ICI8IiA9PT0gYVswXSAmJiAiPiIgPT09IGFbYS5sZW5ndGggLSAxXSAmJiBhLmxlbmd0aCA+PSAzID8gW251bGwsIGEsIG51bGxdIDogRi5leGVjKGEpLCAhZSB8fCAhZVsxXSAmJiBiKSByZXR1cm4gIWIgfHwgYi5qcXVlcnkgPyAoYiB8fCBjKS5maW5kKGEpIDogdGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpOwogICAgICAgICAgICAgICAgaWYgKGVbMV0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYiA9IGIgaW5zdGFuY2VvZiByID8gYlswXSA6IGIsIHIubWVyZ2UodGhpcywgci5wYXJzZUhUTUwoZVsxXSwgYiAmJiBiLm5vZGVUeXBlID8gYi5vd25lckRvY3VtZW50IHx8IGIgOiBkLCAhMCkpLCBCLnRlc3QoZVsxXSkgJiYgci5pc1BsYWluT2JqZWN0KGIpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgaW4gYikgci5pc0Z1bmN0aW9uKHRoaXNbZV0pID8gdGhpc1tlXShiW2VdKSA6IHRoaXMuYXR0cihlLCBiW2VdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGYgPSBkLmdldEVsZW1lbnRCeUlkKGVbMl0pLCBmICYmICh0aGlzWzBdID0gZiwgdGhpcy5sZW5ndGggPSAxKSwgdGhpcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhLm5vZGVUeXBlID8gKHRoaXNbMF0gPSBhLCB0aGlzLmxlbmd0aCA9IDEsIHRoaXMpIDogci5pc0Z1bmN0aW9uKGEpID8gdm9pZCAwICE9PSBjLnJlYWR5ID8gYy5yZWFkeShhKSA6IGEocikgOiByLm1ha2VBcnJheShhLCB0aGlzKQogICAgICAgIH07CiAgICBHLnByb3RvdHlwZSA9IHIuZm4sIEUgPSByKGQpOwogICAgdmFyIEggPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywKICAgICAgICBJID0gewogICAgICAgICAgICBjaGlsZHJlbjogITAsCiAgICAgICAgICAgIGNvbnRlbnRzOiAhMCwKICAgICAgICAgICAgbmV4dDogITAsCiAgICAgICAgICAgIHByZXY6ICEwCiAgICAgICAgfTsKICAgIHIuZm4uZXh0ZW5kKHsKICAgICAgICBoYXM6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSByKGEsIHRoaXMpLAogICAgICAgICAgICAgICAgYyA9IGIubGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMDsgYyA+IGE7IGErKykKICAgICAgICAgICAgICAgICAgICBpZiAoci5jb250YWlucyh0aGlzLCBiW2FdKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBjbG9zZXN0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjLCBkID0gMCwKICAgICAgICAgICAgICAgIGUgPSB0aGlzLmxlbmd0aCwKICAgICAgICAgICAgICAgIGYgPSBbXSwKICAgICAgICAgICAgICAgIGcgPSAic3RyaW5nIiAhPSB0eXBlb2YgYSAmJiByKGEpOwogICAgICAgICAgICBpZiAoIUEudGVzdChhKSkKICAgICAgICAgICAgICAgIGZvciAoOyBlID4gZDsgZCsrKQogICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IHRoaXNbZF07IGMgJiYgYyAhPT0gYjsgYyA9IGMucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMubm9kZVR5cGUgPCAxMSAmJiAoZyA/IGcuaW5kZXgoYykgPiAtMSA6IDEgPT09IGMubm9kZVR5cGUgJiYgci5maW5kLm1hdGNoZXNTZWxlY3RvcihjLCBhKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYucHVzaChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoID4gMSA/IHIudW5pcXVlU29ydChmKSA6IGYpCiAgICAgICAgfSwKICAgICAgICBpbmRleDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gYSA/ICJzdHJpbmciID09IHR5cGVvZiBhID8gaS5jYWxsKHIoYSksIHRoaXNbMF0pIDogaS5jYWxsKHRoaXMsIGEuanF1ZXJ5ID8gYVswXSA6IGEpIDogdGhpc1swXSAmJiB0aGlzWzBdLnBhcmVudE5vZGUgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xCiAgICAgICAgfSwKICAgICAgICBhZGQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCksIHIoYSwgYikpKSkKICAgICAgICB9LAogICAgICAgIGFkZEJhY2s6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG51bGwgPT0gYSA/IHRoaXMucHJldk9iamVjdCA6IHRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpCiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gSihhLCBiKSB7CiAgICAgICAgd2hpbGUgKChhID0gYVtiXSkgJiYgMSAhPT0gYS5ub2RlVHlwZSk7CiAgICAgICAgcmV0dXJuIGEKICAgIH0KICAgIHIuZWFjaCh7CiAgICAgICAgcGFyZW50OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiID0gYS5wYXJlbnROb2RlOwogICAgICAgICAgICByZXR1cm4gYiAmJiAxMSAhPT0gYi5ub2RlVHlwZSA/IGIgOiBudWxsCiAgICAgICAgfSwKICAgICAgICBwYXJlbnRzOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB5KGEsICJwYXJlbnROb2RlIikKICAgICAgICB9LAogICAgICAgIHBhcmVudHNVbnRpbDogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4geShhLCAicGFyZW50Tm9kZSIsIGMpCiAgICAgICAgfSwKICAgICAgICBuZXh0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBKKGEsICJuZXh0U2libGluZyIpCiAgICAgICAgfSwKICAgICAgICBwcmV2OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBKKGEsICJwcmV2aW91c1NpYmxpbmciKQogICAgICAgIH0sCiAgICAgICAgbmV4dEFsbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4geShhLCAibmV4dFNpYmxpbmciKQogICAgICAgIH0sCiAgICAgICAgcHJldkFsbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4geShhLCAicHJldmlvdXNTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIG5leHRVbnRpbDogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4geShhLCAibmV4dFNpYmxpbmciLCBjKQogICAgICAgIH0sCiAgICAgICAgcHJldlVudGlsOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiB5KGEsICJwcmV2aW91c1NpYmxpbmciLCBjKQogICAgICAgIH0sCiAgICAgICAgc2libGluZ3M6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHooKGEucGFyZW50Tm9kZSB8fCB7fSkuZmlyc3RDaGlsZCwgYSkKICAgICAgICB9LAogICAgICAgIGNoaWxkcmVuOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB6KGEuZmlyc3RDaGlsZCkKICAgICAgICB9LAogICAgICAgIGNvbnRlbnRzOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhLmNvbnRlbnREb2N1bWVudCB8fCByLm1lcmdlKFtdLCBhLmNoaWxkTm9kZXMpCiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgIHIuZm5bYV0gPSBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgIHZhciBlID0gci5tYXAodGhpcywgYiwgYyk7CiAgICAgICAgICAgIHJldHVybiAiVW50aWwiICE9PSBhLnNsaWNlKC01KSAmJiAoZCA9IGMpLCBkICYmICJzdHJpbmciID09IHR5cGVvZiBkICYmIChlID0gci5maWx0ZXIoZCwgZSkpLCB0aGlzLmxlbmd0aCA+IDEgJiYgKElbYV0gfHwgci51bmlxdWVTb3J0KGUpLCBILnRlc3QoYSkgJiYgZS5yZXZlcnNlKCkpLCB0aGlzLnB1c2hTdGFjayhlKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEsgPSAvXFMrL2c7CgogICAgZnVuY3Rpb24gTChhKSB7CiAgICAgICAgdmFyIGIgPSB7fTsKICAgICAgICByZXR1cm4gci5lYWNoKGEubWF0Y2goSykgfHwgW10sIGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgYltjXSA9ICEwCiAgICAgICAgfSksIGIKICAgIH0KICAgIHIuQ2FsbGJhY2tzID0gZnVuY3Rpb24oYSkgewogICAgICAgIGEgPSAic3RyaW5nIiA9PSB0eXBlb2YgYSA/IEwoYSkgOiByLmV4dGVuZCh7fSwgYSk7CiAgICAgICAgdmFyIGIsIGMsIGQsIGUsIGYgPSBbXSwKICAgICAgICAgICAgZyA9IFtdLAogICAgICAgICAgICBoID0gLTEsCiAgICAgICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAoZSA9IGEub25jZSwgZCA9IGIgPSAhMDsgZy5sZW5ndGg7IGggPSAtMSkgewogICAgICAgICAgICAgICAgICAgIGMgPSBnLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCsraCA8IGYubGVuZ3RoKSBmW2hdLmFwcGx5KGNbMF0sIGNbMV0pID09PSAhMSAmJiBhLnN0b3BPbkZhbHNlICYmIChoID0gZi5sZW5ndGgsIGMgPSAhMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEubWVtb3J5IHx8IChjID0gITEpLCBiID0gITEsIGUgJiYgKGYgPSBjID8gW10gOiAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaiA9IHsKICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgJiYgKGMgJiYgIWIgJiYgKGggPSBmLmxlbmd0aCAtIDEsIGcucHVzaChjKSksIGZ1bmN0aW9uIGQoYikgewogICAgICAgICAgICAgICAgICAgICAgICByLmVhY2goYiwgZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5pc0Z1bmN0aW9uKGMpID8gYS51bmlxdWUgJiYgai5oYXMoYykgfHwgZi5wdXNoKGMpIDogYyAmJiBjLmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gci50eXBlKGMpICYmIGQoYykKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KGFyZ3VtZW50cyksIGMgJiYgIWIgJiYgaSgpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZWFjaChhcmd1bWVudHMsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGM7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9IHIuaW5BcnJheShiLCBmLCBjKSkgPiAtMSkgZi5zcGxpY2UoYywgMSksIGggPj0gYyAmJiBoLS0KICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhID8gci5pbkFycmF5KGEsIGYpID4gLTEgOiBmLmxlbmd0aCA+IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgJiYgKGYgPSBbXSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGcgPSBbXSwgZiA9IGMgPSAiIiwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWYKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IGcgPSBbXSwgYyB8fCBiIHx8IChmID0gYyA9ICIiKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgfHwgKGMgPSBjIHx8IFtdLCBjID0gW2EsIGMuc2xpY2UgPyBjLnNsaWNlKCkgOiBjXSwgZy5wdXNoKGMpLCBiIHx8IGkoKSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXJlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gai5maXJlV2l0aCh0aGlzLCBhcmd1bWVudHMpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmlyZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICByZXR1cm4gagogICAgfTsKCiAgICBmdW5jdGlvbiBNKGEpIHsKICAgICAgICByZXR1cm4gYQogICAgfQoKICAgIGZ1bmN0aW9uIE4oYSkgewogICAgICAgIHRocm93IGEKICAgIH0KCiAgICBmdW5jdGlvbiBPKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZDsKICAgICAgICB0cnkgewogICAgICAgICAgICBhICYmIHIuaXNGdW5jdGlvbihkID0gYS5wcm9taXNlKSA/IGQuY2FsbChhKS5kb25lKGIpLmZhaWwoYykgOiBhICYmIHIuaXNGdW5jdGlvbihkID0gYS50aGVuKSA/IGQuY2FsbChhLCBiLCBjKSA6IGIuY2FsbCh2b2lkIDAsIGEpCiAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICBjLmNhbGwodm9pZCAwLCBhKQogICAgICAgIH0KICAgIH0KICAgIHIuZXh0ZW5kKHsKICAgICAgICBEZWZlcnJlZDogZnVuY3Rpb24oYikgewogICAgICAgICAgICB2YXIgYyA9IFsKICAgICAgICAgICAgICAgICAgICBbIm5vdGlmeSIsICJwcm9ncmVzcyIsIHIuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgci5DYWxsYmFja3MoIm1lbW9yeSIpLCAyXSwKICAgICAgICAgICAgICAgICAgICBbInJlc29sdmUiLCAiZG9uZSIsIHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCByLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMCwgInJlc29sdmVkIl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZWplY3QiLCAiZmFpbCIsIHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCByLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgMSwgInJlamVjdGVkIl0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBkID0gInBlbmRpbmciLAogICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhbHdheXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiY2F0Y2giOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnRoZW4obnVsbCwgYSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBpcGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuRGVmZXJyZWQoZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5lYWNoKGMsIGZ1bmN0aW9uKGMsIGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHIuaXNGdW5jdGlvbihhW2RbNF1dKSAmJiBhW2RbNF1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZbZFsxXV0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZSAmJiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgJiYgci5pc0Z1bmN0aW9uKGEucHJvbWlzZSkgPyBhLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpIDogYltkWzBdICsgIldpdGgiXSh0aGlzLCBlID8gW2FdIDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYSA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSkucHJvbWlzZSgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbihiLCBkLCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoYiwgYywgZCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEsIGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmID4gYikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGQuYXBwbHkoaCwgaSksIGEgPT09IGMucHJvbWlzZSgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gYSAmJiAoIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYSkgJiYgYS50aGVuLCByLmlzRnVuY3Rpb24oaikgPyBlID8gai5jYWxsKGEsIGcoZiwgYywgTSwgZSksIGcoZiwgYywgTiwgZSkpIDogKGYrKywgai5jYWxsKGEsIGcoZiwgYywgTSwgZSksIGcoZiwgYywgTiwgZSksIGcoZiwgYywgTSwgYy5ub3RpZnlXaXRoKSkpIDogKGQgIT09IE0gJiYgKGggPSB2b2lkIDAsIGkgPSBbYV0pLCAoZSB8fCBjLnJlc29sdmVXaXRoKShoLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGUgPyBqIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGooKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayAmJiByLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soYSwgay5zdGFja1RyYWNlKSwgYiArIDEgPj0gZiAmJiAoZCAhPT0gTiAmJiAoaCA9IHZvaWQgMCwgaSA9IFthXSksIGMucmVqZWN0V2l0aChoLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID8gaygpIDogKHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICYmIChrLnN0YWNrVHJhY2UgPSByLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSwgYS5zZXRUaW1lb3V0KGspKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMF1bM10uYWRkKGcoMCwgYSwgci5pc0Z1bmN0aW9uKGUpID8gZSA6IE0sIGEubm90aWZ5V2l0aCkpLCBjWzFdWzNdLmFkZChnKDAsIGEsIHIuaXNGdW5jdGlvbihiKSA/IGIgOiBNKSksIGNbMl1bM10uYWRkKGcoMCwgYSwgci5pc0Z1bmN0aW9uKGQpID8gZCA6IE4pKQogICAgICAgICAgICAgICAgICAgICAgICB9KS5wcm9taXNlKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gYSA/IHIuZXh0ZW5kKGEsIGUpIDogZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmID0ge307CiAgICAgICAgICAgIHJldHVybiByLmVhY2goYywgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgdmFyIGcgPSBiWzJdLAogICAgICAgICAgICAgICAgICAgIGggPSBiWzVdOwogICAgICAgICAgICAgICAgZVtiWzFdXSA9IGcuYWRkLCBoICYmIGcuYWRkKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGQgPSBoCiAgICAgICAgICAgICAgICB9LCBjWzMgLSBhXVsyXS5kaXNhYmxlLCBjWzBdWzJdLmxvY2spLCBnLmFkZChiWzNdLmZpcmUpLCBmW2JbMF1dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZbYlswXSArICJXaXRoIl0odGhpcyA9PT0gZiA/IHZvaWQgMCA6IHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sIGZbYlswXSArICJXaXRoIl0gPSBnLmZpcmVXaXRoCiAgICAgICAgICAgIH0pLCBlLnByb21pc2UoZiksIGIgJiYgYi5jYWxsKGYsIGYpLCBmCiAgICAgICAgfSwKICAgICAgICB3aGVuOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgIGMgPSBiLAogICAgICAgICAgICAgICAgZCA9IEFycmF5KGMpLAogICAgICAgICAgICAgICAgZSA9IGYuY2FsbChhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgZyA9IHIuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZFthXSA9IHRoaXMsIGVbYV0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGYuY2FsbChhcmd1bWVudHMpIDogYywgLS1iIHx8IGcucmVzb2x2ZVdpdGgoZCwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoMSA+PSBiICYmIChPKGEsIGcuZG9uZShoKGMpKS5yZXNvbHZlLCBnLnJlamVjdCksICJwZW5kaW5nIiA9PT0gZy5zdGF0ZSgpIHx8IHIuaXNGdW5jdGlvbihlW2NdICYmIGVbY10udGhlbikpKSByZXR1cm4gZy50aGVuKCk7CiAgICAgICAgICAgIHdoaWxlIChjLS0pIE8oZVtjXSwgaChjKSwgZy5yZWplY3QpOwogICAgICAgICAgICByZXR1cm4gZy5wcm9taXNlKCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBQID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87CiAgICByLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgYS5jb25zb2xlICYmIGEuY29uc29sZS53YXJuICYmIGIgJiYgUC50ZXN0KGIubmFtZSkgJiYgYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBiLm1lc3NhZ2UsIGIuc3RhY2ssIGMpCiAgICB9OwogICAgdmFyIFEgPSByLkRlZmVycmVkKCk7CiAgICByLmZuLnJlYWR5ID0gZnVuY3Rpb24oYSkgewogICAgICAgIHJldHVybiBRLnRoZW4oYSksIHRoaXMKICAgIH0sIHIuZXh0ZW5kKHsKICAgICAgICBpc1JlYWR5OiAhMSwKICAgICAgICByZWFkeVdhaXQ6IDEsCiAgICAgICAgaG9sZFJlYWR5OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGEgPyByLnJlYWR5V2FpdCsrIDogci5yZWFkeSghMCkKICAgICAgICB9LAogICAgICAgIHJlYWR5OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIChhID09PSAhMCA/IC0tci5yZWFkeVdhaXQgOiByLmlzUmVhZHkpIHx8IChyLmlzUmVhZHkgPSAhMCwgYSAhPT0gITAgJiYgLS1yLnJlYWR5V2FpdCA+IDAgfHwgUS5yZXNvbHZlV2l0aChkLCBbcl0pKQogICAgICAgIH0KICAgIH0pLCByLnJlYWR5LnRoZW4gPSBRLnRoZW47CgogICAgZnVuY3Rpb24gUigpIHsKICAgICAgICBkLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBSKSwgYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIiwgUiksIHIucmVhZHkoKQogICAgfQogICAgImNvbXBsZXRlIiA9PT0gZC5yZWFkeVN0YXRlIHx8ICJsb2FkaW5nIiAhPT0gZC5yZWFkeVN0YXRlICYmICFkLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCA/IGEuc2V0VGltZW91dChyLnJlYWR5KSA6IChkLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBSKSwgYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgUikpOwogICAgdmFyIFMgPSBmdW5jdGlvbihhLCBiLCBjLCBkLCBlLCBmLCBnKSB7CiAgICAgICAgICAgIHZhciBoID0gMCwKICAgICAgICAgICAgICAgIGkgPSBhLmxlbmd0aCwKICAgICAgICAgICAgICAgIGogPSBudWxsID09IGM7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gci50eXBlKGMpKSB7CiAgICAgICAgICAgICAgICBlID0gITA7CiAgICAgICAgICAgICAgICBmb3IgKGggaW4gYykgUyhhLCBiLCBoLCBjW2hdLCAhMCwgZiwgZykKICAgICAgICAgICAgfSBlbHNlIGlmICh2b2lkIDAgIT09IGQgJiYgKGUgPSAhMCwgci5pc0Z1bmN0aW9uKGQpIHx8IChnID0gITApLCBqICYmIChnID8gKGIuY2FsbChhLCBkKSwgYiA9IG51bGwpIDogKGogPSBiLCBiID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqLmNhbGwocihhKSwgYykKICAgICAgICAgICAgICAgIH0pKSwgYikpCiAgICAgICAgICAgICAgICBmb3IgKDsgaSA+IGg7IGgrKykgYihhW2hdLCBjLCBnID8gZCA6IGQuY2FsbChhW2hdLCBoLCBiKGFbaF0sIGMpKSk7CiAgICAgICAgICAgIHJldHVybiBlID8gYSA6IGogPyBiLmNhbGwoYSkgOiBpID8gYihhWzBdLCBjKSA6IGYKICAgICAgICB9LAogICAgICAgIFQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiAxID09PSBhLm5vZGVUeXBlIHx8IDkgPT09IGEubm9kZVR5cGUgfHwgISthLm5vZGVUeXBlCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBVKCkgewogICAgICAgIHRoaXMuZXhwYW5kbyA9IHIuZXhwYW5kbyArIFUudWlkKysKICAgIH0KICAgIFUudWlkID0gMSwgVS5wcm90b3R5cGUgPSB7CiAgICAgICAgY2FjaGU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSBhW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiBiIHx8IChiID0ge30sIFQoYSkgJiYgKGEubm9kZVR5cGUgPyBhW3RoaXMuZXhwYW5kb10gPSBiIDogT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIHRoaXMuZXhwYW5kbywgewogICAgICAgICAgICAgICAgdmFsdWU6IGIsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0pKSksIGIKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICB2YXIgZCwgZSA9IHRoaXMuY2FjaGUoYSk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYikgZVtyLmNhbWVsQ2FzZShiKV0gPSBjOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKGQgaW4gYikgZVtyLmNhbWVsQ2FzZShkKV0gPSBiW2RdOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgZ2V0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGIgPyB0aGlzLmNhY2hlKGEpIDogYVt0aGlzLmV4cGFuZG9dICYmIGFbdGhpcy5leHBhbmRvXVtyLmNhbWVsQ2FzZShiKV0KICAgICAgICB9LAogICAgICAgIGFjY2VzczogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBiIHx8IGIgJiYgInN0cmluZyIgPT0gdHlwZW9mIGIgJiYgdm9pZCAwID09PSBjID8gdGhpcy5nZXQoYSwgYikgOiAodGhpcy5zZXQoYSwgYiwgYyksIHZvaWQgMCAhPT0gYyA/IGMgOiBiKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjLCBkID0gYVt0aGlzLmV4cGFuZG9dOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBkKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBiKSB7CiAgICAgICAgICAgICAgICAgICAgci5pc0FycmF5KGIpID8gYiA9IGIubWFwKHIuY2FtZWxDYXNlKSA6IChiID0gci5jYW1lbENhc2UoYiksIGIgPSBiIGluIGQgPyBbYl0gOiBiLm1hdGNoKEspIHx8IFtdKSwgYyA9IGIubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChjLS0pIGRlbGV0ZSBkW2JbY11dCiAgICAgICAgICAgICAgICB9KHZvaWQgMCA9PT0gYiB8fCByLmlzRW1wdHlPYmplY3QoZCkpICYmIChhLm5vZGVUeXBlID8gYVt0aGlzLmV4cGFuZG9dID0gdm9pZCAwIDogZGVsZXRlIGFbdGhpcy5leHBhbmRvXSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaGFzRGF0YTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiA9IGFbdGhpcy5leHBhbmRvXTsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gYiAmJiAhci5pc0VtcHR5T2JqZWN0KGIpCiAgICAgICAgfQogICAgfTsKICAgIHZhciBWID0gbmV3IFUsCiAgICAgICAgVyA9IG5ldyBVLAogICAgICAgIFggPSAvXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLAogICAgICAgIFkgPSAvW0EtWl0vZzsKCiAgICBmdW5jdGlvbiBaKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZDsKICAgICAgICBpZiAodm9pZCAwID09PSBjICYmIDEgPT09IGEubm9kZVR5cGUpCiAgICAgICAgICAgIGlmIChkID0gImRhdGEtIiArIGIucmVwbGFjZShZLCAiLSQmIikudG9Mb3dlckNhc2UoKSwgYyA9IGEuZ2V0QXR0cmlidXRlKGQpLCAic3RyaW5nIiA9PSB0eXBlb2YgYykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBjID0gInRydWUiID09PSBjID8gITAgOiAiZmFsc2UiID09PSBjID8gITEgOiAibnVsbCIgPT09IGMgPyBudWxsIDogK2MgKyAiIiA9PT0gYyA/ICtjIDogWC50ZXN0KGMpID8gSlNPTi5wYXJzZShjKSA6IGMKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICBXLnNldChhLCBiLCBjKQogICAgICAgICAgICB9IGVsc2UgYyA9IHZvaWQgMDsKICAgICAgICByZXR1cm4gYwogICAgfQogICAgci5leHRlbmQoewogICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIFcuaGFzRGF0YShhKSB8fCBWLmhhc0RhdGEoYSkKICAgICAgICB9LAogICAgICAgIGRhdGE6IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgcmV0dXJuIFcuYWNjZXNzKGEsIGIsIGMpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVEYXRhOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIFcucmVtb3ZlKGEsIGIpCiAgICAgICAgfSwKICAgICAgICBfZGF0YTogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4gVi5hY2Nlc3MoYSwgYiwgYykKICAgICAgICB9LAogICAgICAgIF9yZW1vdmVEYXRhOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIFYucmVtb3ZlKGEsIGIpCiAgICAgICAgfQogICAgfSksIHIuZm4uZXh0ZW5kKHsKICAgICAgICBkYXRhOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjLCBkLCBlLCBmID0gdGhpc1swXSwKICAgICAgICAgICAgICAgIGcgPSBmICYmIGYuYXR0cmlidXRlczsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoICYmIChlID0gVy5nZXQoZiksIDEgPT09IGYubm9kZVR5cGUgJiYgIVYuZ2V0KGYsICJoYXNEYXRhQXR0cnMiKSkpIHsKICAgICAgICAgICAgICAgICAgICBjID0gZy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMtLSkgZ1tjXSAmJiAoZCA9IGdbY10ubmFtZSwgMCA9PT0gZC5pbmRleE9mKCJkYXRhLSIpICYmIChkID0gci5jYW1lbENhc2UoZC5zbGljZSg1KSksIFooZiwgZCwgZVtkXSkpKTsKICAgICAgICAgICAgICAgICAgICBWLnNldChmLCAiaGFzRGF0YUF0dHJzIiwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgYSA/IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFcuc2V0KHRoaXMsIGEpCiAgICAgICAgICAgIH0pIDogUyh0aGlzLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICB2YXIgYzsKICAgICAgICAgICAgICAgIGlmIChmICYmIHZvaWQgMCA9PT0gYikgewogICAgICAgICAgICAgICAgICAgIGlmIChjID0gVy5nZXQoZiwgYSksIHZvaWQgMCAhPT0gYykgcmV0dXJuIGM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBaKGYsIGEpLCB2b2lkIDAgIT09IGMpIHJldHVybiBjCiAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFcuc2V0KHRoaXMsIGEsIGIpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCBudWxsLCBiLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgITApCiAgICAgICAgfSwKICAgICAgICByZW1vdmVEYXRhOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBXLnJlbW92ZSh0aGlzLCBhKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0pLCByLmV4dGVuZCh7CiAgICAgICAgcXVldWU6IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgdmFyIGQ7CiAgICAgICAgICAgIHJldHVybiBhID8gKGIgPSAoYiB8fCAiZngiKSArICJxdWV1ZSIsIGQgPSBWLmdldChhLCBiKSwgYyAmJiAoIWQgfHwgci5pc0FycmF5KGMpID8gZCA9IFYuYWNjZXNzKGEsIGIsIHIubWFrZUFycmF5KGMpKSA6IGQucHVzaChjKSksIGQgfHwgW10pIDogdm9pZCAwCiAgICAgICAgfSwKICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIGIgPSBiIHx8ICJmeCI7CiAgICAgICAgICAgIHZhciBjID0gci5xdWV1ZShhLCBiKSwKICAgICAgICAgICAgICAgIGQgPSBjLmxlbmd0aCwKICAgICAgICAgICAgICAgIGUgPSBjLnNoaWZ0KCksCiAgICAgICAgICAgICAgICBmID0gci5fcXVldWVIb29rcyhhLCBiKSwKICAgICAgICAgICAgICAgIGcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByLmRlcXVldWUoYSwgYikKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICJpbnByb2dyZXNzIiA9PT0gZSAmJiAoZSA9IGMuc2hpZnQoKSwgZC0tKSwgZSAmJiAoImZ4IiA9PT0gYiAmJiBjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSwgZGVsZXRlIGYuc3RvcCwgZS5jYWxsKGEsIGcsIGYpKSwgIWQgJiYgZiAmJiBmLmVtcHR5LmZpcmUoKQogICAgICAgIH0sCiAgICAgICAgX3F1ZXVlSG9va3M6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMgPSBiICsgInF1ZXVlSG9va3MiOwogICAgICAgICAgICByZXR1cm4gVi5nZXQoYSwgYykgfHwgVi5hY2Nlc3MoYSwgYywgewogICAgICAgICAgICAgICAgZW1wdHk6IHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBWLnJlbW92ZShhLCBbYiArICJxdWV1ZSIsIGNdKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgci5mbi5leHRlbmQoewogICAgICAgIHF1ZXVlOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjID0gMjsKICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBhICYmIChiID0gYSwgYSA9ICJmeCIsIGMtLSksIGFyZ3VtZW50cy5sZW5ndGggPCBjID8gci5xdWV1ZSh0aGlzWzBdLCBhKSA6IHZvaWQgMCA9PT0gYiA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IHIucXVldWUodGhpcywgYSwgYik7CiAgICAgICAgICAgICAgICByLl9xdWV1ZUhvb2tzKHRoaXMsIGEpLCAiZngiID09PSBhICYmICJpbnByb2dyZXNzIiAhPT0gY1swXSAmJiByLmRlcXVldWUodGhpcywgYSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHIuZGVxdWV1ZSh0aGlzLCBhKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZShhIHx8ICJmeCIsIFtdKQogICAgICAgIH0sCiAgICAgICAgcHJvbWlzZTogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYywgZCA9IDEsCiAgICAgICAgICAgICAgICBlID0gci5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgZiA9IHRoaXMsCiAgICAgICAgICAgICAgICBnID0gdGhpcy5sZW5ndGgsCiAgICAgICAgICAgICAgICBoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgLS1kIHx8IGUucmVzb2x2ZVdpdGgoZiwgW2ZdKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgInN0cmluZyIgIT0gdHlwZW9mIGEgJiYgKGIgPSBhLCBhID0gdm9pZCAwKSwgYSA9IGEgfHwgImZ4IjsKICAgICAgICAgICAgd2hpbGUgKGctLSkgYyA9IFYuZ2V0KGZbZ10sIGEgKyAicXVldWVIb29rcyIpLCBjICYmIGMuZW1wdHkgJiYgKGQrKywgYy5lbXB0eS5hZGQoaCkpOwogICAgICAgICAgICByZXR1cm4gaCgpLCBlLnByb21pc2UoYikKICAgICAgICB9CiAgICB9KTsKICAgIHZhciAkID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsCiAgICAgICAgXyA9IG5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIiArICQgKyAiKShbYS16JV0qKSQiLCAiaSIpLAogICAgICAgIGFhID0gWyJUb3AiLCAiUmlnaHQiLCAiQm90dG9tIiwgIkxlZnQiXSwKICAgICAgICBiYSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIGEgPSBiIHx8IGEsICJub25lIiA9PT0gYS5zdHlsZS5kaXNwbGF5IHx8ICIiID09PSBhLnN0eWxlLmRpc3BsYXkgJiYgci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsIGEpICYmICJub25lIiA9PT0gci5jc3MoYSwgImRpc3BsYXkiKQogICAgICAgIH0sCiAgICAgICAgY2EgPSBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgIHZhciBlLCBmLCBnID0ge307CiAgICAgICAgICAgIGZvciAoZiBpbiBiKSBnW2ZdID0gYS5zdHlsZVtmXSwgYS5zdHlsZVtmXSA9IGJbZl07CiAgICAgICAgICAgIGUgPSBjLmFwcGx5KGEsIGQgfHwgW10pOwogICAgICAgICAgICBmb3IgKGYgaW4gYikgYS5zdHlsZVtmXSA9IGdbZl07CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBkYShhLCBiLCBjLCBkKSB7CiAgICAgICAgdmFyIGUsIGYgPSAxLAogICAgICAgICAgICBnID0gMjAsCiAgICAgICAgICAgIGggPSBkID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZC5jdXIoKQogICAgICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gci5jc3MoYSwgYiwgIiIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGkgPSBoKCksCiAgICAgICAgICAgIGogPSBjICYmIGNbM10gfHwgKHIuY3NzTnVtYmVyW2JdID8gIiIgOiAicHgiKSwKICAgICAgICAgICAgayA9IChyLmNzc051bWJlcltiXSB8fCAicHgiICE9PSBqICYmICtpKSAmJiBfLmV4ZWMoci5jc3MoYSwgYikpOwogICAgICAgIGlmIChrICYmIGtbM10gIT09IGopIHsKICAgICAgICAgICAgaiA9IGogfHwga1szXSwgYyA9IGMgfHwgW10sIGsgPSAraSB8fCAxOwogICAgICAgICAgICBkbyBmID0gZiB8fCAiLjUiLCBrIC89IGYsIHIuc3R5bGUoYSwgYiwgayArIGopOyB3aGlsZSAoZiAhPT0gKGYgPSBoKCkgLyBpKSAmJiAxICE9PSBmICYmIC0tZykKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGMgJiYgKGsgPSArayB8fCAraSB8fCAwLCBlID0gY1sxXSA/IGsgKyAoY1sxXSArIDEpICogY1syXSA6ICtjWzJdLCBkICYmIChkLnVuaXQgPSBqLCBkLnN0YXJ0ID0gaywgZC5lbmQgPSBlKSksIGUKICAgIH0KICAgIHZhciBlYSA9IHt9OwoKICAgIGZ1bmN0aW9uIGZhKGEpIHsKICAgICAgICB2YXIgYiwgYyA9IGEub3duZXJEb2N1bWVudCwKICAgICAgICAgICAgZCA9IGEubm9kZU5hbWUsCiAgICAgICAgICAgIGUgPSBlYVtkXTsKICAgICAgICByZXR1cm4gZSA/IGUgOiAoYiA9IGMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLCBlID0gci5jc3MoYiwgImRpc3BsYXkiKSwgYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLCAibm9uZSIgPT09IGUgJiYgKGUgPSAiYmxvY2siKSwgZWFbZF0gPSBlLCBlKQogICAgfQoKICAgIGZ1bmN0aW9uIGdhKGEsIGIpIHsKICAgICAgICBmb3IgKHZhciBjLCBkLCBlID0gW10sIGYgPSAwLCBnID0gYS5sZW5ndGg7IGcgPiBmOyBmKyspIGQgPSBhW2ZdLCBkLnN0eWxlICYmIChjID0gZC5zdHlsZS5kaXNwbGF5LCBiID8gKCJub25lIiA9PT0gYyAmJiAoZVtmXSA9IFYuZ2V0KGQsICJkaXNwbGF5IikgfHwgbnVsbCwgZVtmXSB8fCAoZC5zdHlsZS5kaXNwbGF5ID0gIiIpKSwgIiIgPT09IGQuc3R5bGUuZGlzcGxheSAmJiBiYShkKSAmJiAoZVtmXSA9IGZhKGQpKSkgOiAibm9uZSIgIT09IGMgJiYgKGVbZl0gPSAibm9uZSIsIFYuc2V0KGQsICJkaXNwbGF5IiwgYykpKTsKICAgICAgICBmb3IgKGYgPSAwOyBnID4gZjsgZisrKSBudWxsICE9IGVbZl0gJiYgKGFbZl0uc3R5bGUuZGlzcGxheSA9IGVbZl0pOwogICAgICAgIHJldHVybiBhCiAgICB9CiAgICByLmZuLmV4dGVuZCh7CiAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBnYSh0aGlzLCAhMCkKICAgICAgICB9LAogICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZ2EodGhpcykKICAgICAgICB9LAogICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gImJvb2xlYW4iID09IHR5cGVvZiBhID8gYSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCkgOiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBiYSh0aGlzKSA/IHIodGhpcykuc2hvdygpIDogcih0aGlzKS5oaWRlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBoYSA9IC9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLAogICAgICAgIGlhID0gLzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ksCiAgICAgICAgamEgPSAvXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksCiAgICAgICAga2EgPSB7CiAgICAgICAgICAgIG9wdGlvbjogWzEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiJdLAogICAgICAgICAgICB0aGVhZDogWzEsICI8dGFibGU+IiwgIjwvdGFibGU+Il0sCiAgICAgICAgICAgIGNvbDogWzIsICI8dGFibGU+PGNvbGdyb3VwPiIsICI8L2NvbGdyb3VwPjwvdGFibGU+Il0sCiAgICAgICAgICAgIHRyOiBbMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iXSwKICAgICAgICAgICAgdGQ6IFszLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLAogICAgICAgICAgICBfZGVmYXVsdDogWzAsICIiLCAiIl0KICAgICAgICB9OwogICAga2Eub3B0Z3JvdXAgPSBrYS5vcHRpb24sIGthLnRib2R5ID0ga2EudGZvb3QgPSBrYS5jb2xncm91cCA9IGthLmNhcHRpb24gPSBrYS50aGVhZCwga2EudGggPSBrYS50ZDsKCiAgICBmdW5jdGlvbiBsYShhLCBiKSB7CiAgICAgICAgdmFyIGMgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiB8fCAiKiIpIDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCA/IGEucXVlcnlTZWxlY3RvckFsbChiIHx8ICIqIikgOiBbXTsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSBiIHx8IGIgJiYgci5ub2RlTmFtZShhLCBiKSA/IHIubWVyZ2UoW2FdLCBjKSA6IGMKICAgIH0KCiAgICBmdW5jdGlvbiBtYShhLCBiKSB7CiAgICAgICAgZm9yICh2YXIgYyA9IDAsIGQgPSBhLmxlbmd0aDsgZCA+IGM7IGMrKykgVi5zZXQoYVtjXSwgImdsb2JhbEV2YWwiLCAhYiB8fCBWLmdldChiW2NdLCAiZ2xvYmFsRXZhbCIpKQogICAgfQogICAgdmFyIG5hID0gLzx8JiM/XHcrOy87CgogICAgZnVuY3Rpb24gb2EoYSwgYiwgYywgZCwgZSkgewogICAgICAgIGZvciAodmFyIGYsIGcsIGgsIGksIGosIGssIGwgPSBiLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgbSA9IFtdLCBuID0gMCwgbyA9IGEubGVuZ3RoOyBvID4gbjsgbisrKQogICAgICAgICAgICBpZiAoZiA9IGFbbl0sIGYgfHwgMCA9PT0gZikKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gci50eXBlKGYpKSByLm1lcmdlKG0sIGYubm9kZVR5cGUgPyBbZl0gOiBmKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hLnRlc3QoZikpIHsKICAgICAgICAgICAgZyA9IGcgfHwgbC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgaCA9IChpYS5leGVjKGYpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpLCBpID0ga2FbaF0gfHwga2EuX2RlZmF1bHQsIGcuaW5uZXJIVE1MID0gaVsxXSArIHIuaHRtbFByZWZpbHRlcihmKSArIGlbMl0sIGsgPSBpWzBdOwogICAgICAgICAgICB3aGlsZSAoay0tKSBnID0gZy5sYXN0Q2hpbGQ7CiAgICAgICAgICAgIHIubWVyZ2UobSwgZy5jaGlsZE5vZGVzKSwgZyA9IGwuZmlyc3RDaGlsZCwgZy50ZXh0Q29udGVudCA9ICIiCiAgICAgICAgfSBlbHNlIG0ucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTsKICAgICAgICBsLnRleHRDb250ZW50ID0gIiIsIG4gPSAwOwogICAgICAgIHdoaWxlIChmID0gbVtuKytdKQogICAgICAgICAgICBpZiAoZCAmJiByLmluQXJyYXkoZiwgZCkgPiAtMSkgZSAmJiBlLnB1c2goZik7CiAgICAgICAgICAgIGVsc2UgaWYgKGogPSByLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCwgZiksIGcgPSBsYShsLmFwcGVuZENoaWxkKGYpLCAic2NyaXB0IiksIGogJiYgbWEoZyksIGMpIHsKICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgIHdoaWxlIChmID0gZ1trKytdKSBqYS50ZXN0KGYudHlwZSB8fCAiIikgJiYgYy5wdXNoKGYpCiAgICAgICAgfQogICAgICAgIHJldHVybiBsCiAgICB9ISBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYSA9IGQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLAogICAgICAgICAgICBiID0gYS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwKICAgICAgICAgICAgYyA9IGQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBjLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCBjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsICJjaGVja2VkIiksIGMuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgYi5hcHBlbmRDaGlsZChjKSwgby5jaGVja0Nsb25lID0gYi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIGIuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCBvLm5vQ2xvbmVDaGVja2VkID0gISFiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZQogICAgfSgpOwogICAgdmFyIHBhID0gZC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgcWEgPSAvXmtleS8sCiAgICAgICAgcmEgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sCiAgICAgICAgc2EgPSAvXihbXi5dKikoPzpcLiguKyl8KS87CgogICAgZnVuY3Rpb24gdGEoKSB7CiAgICAgICAgcmV0dXJuICEwCiAgICB9CgogICAgZnVuY3Rpb24gdWEoKSB7CiAgICAgICAgcmV0dXJuICExCiAgICB9CgogICAgZnVuY3Rpb24gdmEoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIGQuYWN0aXZlRWxlbWVudAogICAgICAgIH0gY2F0Y2ggKGEpIHt9CiAgICB9CgogICAgZnVuY3Rpb24gd2EoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIHZhciBnLCBoOwogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgYikgewogICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgYyAmJiAoZCA9IGQgfHwgYywgYyA9IHZvaWQgMCk7CiAgICAgICAgICAgIGZvciAoaCBpbiBiKSB3YShhLCBoLCBjLCBkLCBiW2hdLCBmKTsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9CiAgICAgICAgaWYgKG51bGwgPT0gZCAmJiBudWxsID09IGUgPyAoZSA9IGMsIGQgPSBjID0gdm9pZCAwKSA6IG51bGwgPT0gZSAmJiAoInN0cmluZyIgPT0gdHlwZW9mIGMgPyAoZSA9IGQsIGQgPSB2b2lkIDApIDogKGUgPSBkLCBkID0gYywgYyA9IHZvaWQgMCkpLCBlID09PSAhMSkgZSA9IHVhOwogICAgICAgIGVsc2UgaWYgKCFlKSByZXR1cm4gYTsKICAgICAgICByZXR1cm4gMSA9PT0gZiAmJiAoZyA9IGUsIGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiByKCkub2ZmKGEpLCBnLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCBlLmd1aWQgPSBnLmd1aWQgfHwgKGcuZ3VpZCA9IHIuZ3VpZCsrKSksIGEuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgci5ldmVudC5hZGQodGhpcywgYiwgZSwgZCwgYykKICAgICAgICB9KQogICAgfQogICAgci5ldmVudCA9IHsKICAgICAgICBnbG9iYWw6IHt9LAogICAgICAgIGFkZDogZnVuY3Rpb24oYSwgYiwgYywgZCwgZSkgewogICAgICAgICAgICB2YXIgZiwgZywgaCwgaSwgaiwgaywgbCwgbSwgbiwgbywgcCwgcSA9IFYuZ2V0KGEpOwogICAgICAgICAgICBpZiAocSkgewogICAgICAgICAgICAgICAgYy5oYW5kbGVyICYmIChmID0gYywgYyA9IGYuaGFuZGxlciwgZSA9IGYuc2VsZWN0b3IpLCBlICYmIHIuZmluZC5tYXRjaGVzU2VsZWN0b3IocGEsIGUpLCBjLmd1aWQgfHwgKGMuZ3VpZCA9IHIuZ3VpZCsrKSwgKGkgPSBxLmV2ZW50cykgfHwgKGkgPSBxLmV2ZW50cyA9IHt9KSwgKGcgPSBxLmhhbmRsZSkgfHwgKGcgPSBxLmhhbmRsZSA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHIgJiYgci5ldmVudC50cmlnZ2VyZWQgIT09IGIudHlwZSA/IHIuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSwgYXJndW1lbnRzKSA6IHZvaWQgMAogICAgICAgICAgICAgICAgfSksIGIgPSAoYiB8fCAiIikubWF0Y2goSykgfHwgWyIiXSwgaiA9IGIubGVuZ3RoOwogICAgICAgICAgICAgICAgd2hpbGUgKGotLSkgaCA9IHNhLmV4ZWMoYltqXSkgfHwgW10sIG4gPSBwID0gaFsxXSwgbyA9IChoWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgbiAmJiAobCA9IHIuZXZlbnQuc3BlY2lhbFtuXSB8fCB7fSwgbiA9IChlID8gbC5kZWxlZ2F0ZVR5cGUgOiBsLmJpbmRUeXBlKSB8fCBuLCBsID0gci5ldmVudC5zcGVjaWFsW25dIHx8IHt9LCBrID0gci5leHRlbmQoewogICAgICAgICAgICAgICAgICAgIHR5cGU6IG4sCiAgICAgICAgICAgICAgICAgICAgb3JpZ1R5cGU6IHAsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogZCwKICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBjLAogICAgICAgICAgICAgICAgICAgIGd1aWQ6IGMuZ3VpZCwKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogZSwKICAgICAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IGUgJiYgci5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLAogICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogby5qb2luKCIuIikKICAgICAgICAgICAgICAgIH0sIGYpLCAobSA9IGlbbl0pIHx8IChtID0gaVtuXSA9IFtdLCBtLmRlbGVnYXRlQ291bnQgPSAwLCBsLnNldHVwICYmIGwuc2V0dXAuY2FsbChhLCBkLCBvLCBnKSAhPT0gITEgfHwgYS5hZGRFdmVudExpc3RlbmVyICYmIGEuYWRkRXZlbnRMaXN0ZW5lcihuLCBnKSksIGwuYWRkICYmIChsLmFkZC5jYWxsKGEsIGspLCBrLmhhbmRsZXIuZ3VpZCB8fCAoay5oYW5kbGVyLmd1aWQgPSBjLmd1aWQpKSwgZSA/IG0uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLCAwLCBrKSA6IG0ucHVzaChrKSwgci5ldmVudC5nbG9iYWxbbl0gPSAhMCkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgICAgIHZhciBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxID0gVi5oYXNEYXRhKGEpICYmIFYuZ2V0KGEpOwogICAgICAgICAgICBpZiAocSAmJiAoaSA9IHEuZXZlbnRzKSkgewogICAgICAgICAgICAgICAgYiA9IChiIHx8ICIiKS5tYXRjaChLKSB8fCBbIiJdLCBqID0gYi5sZW5ndGg7CiAgICAgICAgICAgICAgICB3aGlsZSAoai0tKQogICAgICAgICAgICAgICAgICAgIGlmIChoID0gc2EuZXhlYyhiW2pdKSB8fCBbXSwgbiA9IHAgPSBoWzFdLCBvID0gKGhbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLmV2ZW50LnNwZWNpYWxbbl0gfHwge30sIG4gPSAoZCA/IGwuZGVsZWdhdGVUeXBlIDogbC5iaW5kVHlwZSkgfHwgbiwgbSA9IGlbbl0gfHwgW10sIGggPSBoWzJdICYmIG5ldyBSZWdFeHAoIihefFxcLikiICsgby5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpLCBnID0gZiA9IG0ubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZi0tKSBrID0gbVtmXSwgIWUgJiYgcCAhPT0gay5vcmlnVHlwZSB8fCBjICYmIGMuZ3VpZCAhPT0gay5ndWlkIHx8IGggJiYgIWgudGVzdChrLm5hbWVzcGFjZSkgfHwgZCAmJiBkICE9PSBrLnNlbGVjdG9yICYmICgiKioiICE9PSBkIHx8ICFrLnNlbGVjdG9yKSB8fCAobS5zcGxpY2UoZiwgMSksIGsuc2VsZWN0b3IgJiYgbS5kZWxlZ2F0ZUNvdW50LS0sIGwucmVtb3ZlICYmIGwucmVtb3ZlLmNhbGwoYSwgaykpOwogICAgICAgICAgICAgICAgICAgICAgICBnICYmICFtLmxlbmd0aCAmJiAobC50ZWFyZG93biAmJiBsLnRlYXJkb3duLmNhbGwoYSwgbywgcS5oYW5kbGUpICE9PSAhMSB8fCByLnJlbW92ZUV2ZW50KGEsIG4sIHEuaGFuZGxlKSwgZGVsZXRlIGlbbl0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiBpbiBpKSByLmV2ZW50LnJlbW92ZShhLCBuICsgYltqXSwgYywgZCwgITApOwogICAgICAgICAgICAgICAgci5pc0VtcHR5T2JqZWN0KGkpICYmIFYucmVtb3ZlKGEsICJoYW5kbGUgZXZlbnRzIikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSByLmV2ZW50LmZpeChhKSwKICAgICAgICAgICAgICAgIGMsIGQsIGUsIGYsIGcsIGgsIGkgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksCiAgICAgICAgICAgICAgICBqID0gKFYuZ2V0KHRoaXMsICJldmVudHMiKSB8fCB7fSlbYi50eXBlXSB8fCBbXSwKICAgICAgICAgICAgICAgIGsgPSByLmV2ZW50LnNwZWNpYWxbYi50eXBlXSB8fCB7fTsKICAgICAgICAgICAgZm9yIChpWzBdID0gYiwgYyA9IDE7IGMgPCBhcmd1bWVudHMubGVuZ3RoOyBjKyspIGlbY10gPSBhcmd1bWVudHNbY107CiAgICAgICAgICAgIGlmIChiLmRlbGVnYXRlVGFyZ2V0ID0gdGhpcywgIWsucHJlRGlzcGF0Y2ggfHwgay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIGIpICE9PSAhMSkgewogICAgICAgICAgICAgICAgaCA9IHIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLCBiLCBqKSwgYyA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoKGYgPSBoW2MrK10pICYmICFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICBiLmN1cnJlbnRUYXJnZXQgPSBmLmVsZW0sIGQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgoZyA9IGYuaGFuZGxlcnNbZCsrXSkgJiYgIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkgYi5ybmFtZXNwYWNlICYmICFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSkgfHwgKGIuaGFuZGxlT2JqID0gZywgYi5kYXRhID0gZy5kYXRhLCBlID0gKChyLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV0gfHwge30pLmhhbmRsZSB8fCBnLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSwgaSksIHZvaWQgMCAhPT0gZSAmJiAoYi5yZXN1bHQgPSBlKSA9PT0gITEgJiYgKGIucHJldmVudERlZmF1bHQoKSwgYi5zdG9wUHJvcGFnYXRpb24oKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gay5wb3N0RGlzcGF0Y2ggJiYgay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLCBiKSwgYi5yZXN1bHQKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaGFuZGxlcnM6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMsIGQsIGUsIGYsIGcgPSBbXSwKICAgICAgICAgICAgICAgIGggPSBiLmRlbGVnYXRlQ291bnQsCiAgICAgICAgICAgICAgICBpID0gYS50YXJnZXQ7CiAgICAgICAgICAgIGlmIChoICYmIGkubm9kZVR5cGUgJiYgKCJjbGljayIgIT09IGEudHlwZSB8fCBpc05hTihhLmJ1dHRvbikgfHwgYS5idXR0b24gPCAxKSkKICAgICAgICAgICAgICAgIGZvciAoOyBpICE9PSB0aGlzOyBpID0gaS5wYXJlbnROb2RlIHx8IHRoaXMpCiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGkubm9kZVR5cGUgJiYgKGkuZGlzYWJsZWQgIT09ICEwIHx8ICJjbGljayIgIT09IGEudHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChkID0gW10sIGMgPSAwOyBoID4gYzsgYysrKSBmID0gYltjXSwgZSA9IGYuc2VsZWN0b3IgKyAiICIsIHZvaWQgMCA9PT0gZFtlXSAmJiAoZFtlXSA9IGYubmVlZHNDb250ZXh0ID8gcihlLCB0aGlzKS5pbmRleChpKSA+IC0xIDogci5maW5kKGUsIHRoaXMsIG51bGwsIFtpXSkubGVuZ3RoKSwgZFtlXSAmJiBkLnB1c2goZik7CiAgICAgICAgICAgICAgICAgICAgICAgIGQubGVuZ3RoICYmIGcucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IGQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoIDwgYi5sZW5ndGggJiYgZy5wdXNoKHsKICAgICAgICAgICAgICAgIGVsZW06IHRoaXMsCiAgICAgICAgICAgICAgICBoYW5kbGVyczogYi5zbGljZShoKQogICAgICAgICAgICB9KSwgZwogICAgICAgIH0sCiAgICAgICAgYWRkUHJvcDogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoci5FdmVudC5wcm90b3R5cGUsIGEsIHsKICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogci5pc0Z1bmN0aW9uKGIpID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudCA/IGIodGhpcy5vcmlnaW5hbEV2ZW50KSA6IHZvaWQgMAogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnQgPyB0aGlzLm9yaWdpbmFsRXZlbnRbYV0gOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgYSwgewogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBmaXg6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIGFbci5leHBhbmRvXSA/IGEgOiBuZXcgci5FdmVudChhKQogICAgICAgIH0sCiAgICAgICAgc3BlY2lhbDogewogICAgICAgICAgICBsb2FkOiB7CiAgICAgICAgICAgICAgICBub0J1YmJsZTogITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZm9jdXM6IHsKICAgICAgICAgICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzICE9PSB2YSgpICYmIHRoaXMuZm9jdXMgPyAodGhpcy5mb2N1cygpLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICJmb2N1c2luIgogICAgICAgICAgICB9LAogICAgICAgICAgICBibHVyOiB7CiAgICAgICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcyA9PT0gdmEoKSAmJiB0aGlzLmJsdXIgPyAodGhpcy5ibHVyKCksICExKSA6IHZvaWQgMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogImZvY3Vzb3V0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGljazogewogICAgICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjaGVja2JveCIgPT09IHRoaXMudHlwZSAmJiB0aGlzLmNsaWNrICYmIHIubm9kZU5hbWUodGhpcywgImlucHV0IikgPyAodGhpcy5jbGljaygpLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfZGVmYXVsdDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByLm5vZGVOYW1lKGEudGFyZ2V0LCAiYSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJlZm9yZXVubG9hZDogewogICAgICAgICAgICAgICAgcG9zdERpc3BhdGNoOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBhLnJlc3VsdCAmJiBhLm9yaWdpbmFsRXZlbnQgJiYgKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGEucmVzdWx0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgci5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICBhLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsIGMpCiAgICB9LCByLkV2ZW50ID0gZnVuY3Rpb24oYSwgYikgewogICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudCA/IChhICYmIGEudHlwZSA/ICh0aGlzLm9yaWdpbmFsRXZlbnQgPSBhLCB0aGlzLnR5cGUgPSBhLnR5cGUsIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gYS5kZWZhdWx0UHJldmVudGVkIHx8IHZvaWQgMCA9PT0gYS5kZWZhdWx0UHJldmVudGVkICYmIGEucmV0dXJuVmFsdWUgPT09ICExID8gdGEgOiB1YSwgdGhpcy50YXJnZXQgPSBhLnRhcmdldCAmJiAzID09PSBhLnRhcmdldC5ub2RlVHlwZSA/IGEudGFyZ2V0LnBhcmVudE5vZGUgOiBhLnRhcmdldCwgdGhpcy5jdXJyZW50VGFyZ2V0ID0gYS5jdXJyZW50VGFyZ2V0LCB0aGlzLnJlbGF0ZWRUYXJnZXQgPSBhLnJlbGF0ZWRUYXJnZXQpIDogdGhpcy50eXBlID0gYSwgYiAmJiByLmV4dGVuZCh0aGlzLCBiKSwgdGhpcy50aW1lU3RhbXAgPSBhICYmIGEudGltZVN0YW1wIHx8IHIubm93KCksIHZvaWQodGhpc1tyLmV4cGFuZG9dID0gITApKSA6IG5ldyByLkV2ZW50KGEsIGIpCiAgICB9LCByLkV2ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3Rvcjogci5FdmVudCwKICAgICAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6IHVhLAogICAgICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiB1YSwKICAgICAgICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogdWEsCiAgICAgICAgaXNTaW11bGF0ZWQ6ICExLAogICAgICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGEgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gdGEsIGEgJiYgIXRoaXMuaXNTaW11bGF0ZWQgJiYgYS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgfSwKICAgICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYSA9IHRoaXMub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHRhLCBhICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGEuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9LAogICAgICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogICAgICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGEsIGEgJiYgIXRoaXMuaXNTaW11bGF0ZWQgJiYgYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgdGhpcy5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgIH0KICAgIH0sIHIuZWFjaCh7CiAgICAgICAgYWx0S2V5OiAhMCwKICAgICAgICBidWJibGVzOiAhMCwKICAgICAgICBjYW5jZWxhYmxlOiAhMCwKICAgICAgICBjaGFuZ2VkVG91Y2hlczogITAsCiAgICAgICAgY3RybEtleTogITAsCiAgICAgICAgZGV0YWlsOiAhMCwKICAgICAgICBldmVudFBoYXNlOiAhMCwKICAgICAgICBtZXRhS2V5OiAhMCwKICAgICAgICBwYWdlWDogITAsCiAgICAgICAgcGFnZVk6ICEwLAogICAgICAgIHNoaWZ0S2V5OiAhMCwKICAgICAgICB2aWV3OiAhMCwKICAgICAgICAiY2hhciI6ICEwLAogICAgICAgIGNoYXJDb2RlOiAhMCwKICAgICAgICBrZXk6ICEwLAogICAgICAgIGtleUNvZGU6ICEwLAogICAgICAgIGJ1dHRvbjogITAsCiAgICAgICAgYnV0dG9uczogITAsCiAgICAgICAgY2xpZW50WDogITAsCiAgICAgICAgY2xpZW50WTogITAsCiAgICAgICAgb2Zmc2V0WDogITAsCiAgICAgICAgb2Zmc2V0WTogITAsCiAgICAgICAgcG9pbnRlcklkOiAhMCwKICAgICAgICBwb2ludGVyVHlwZTogITAsCiAgICAgICAgc2NyZWVuWDogITAsCiAgICAgICAgc2NyZWVuWTogITAsCiAgICAgICAgdGFyZ2V0VG91Y2hlczogITAsCiAgICAgICAgdG9FbGVtZW50OiAhMCwKICAgICAgICB0b3VjaGVzOiAhMCwKICAgICAgICB3aGljaDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiA9IGEuYnV0dG9uOwogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBhLndoaWNoICYmIHFhLnRlc3QoYS50eXBlKSA/IG51bGwgIT0gYS5jaGFyQ29kZSA/IGEuY2hhckNvZGUgOiBhLmtleUNvZGUgOiAhYS53aGljaCAmJiB2b2lkIDAgIT09IGIgJiYgcmEudGVzdChhLnR5cGUpID8gMSAmIGIgPyAxIDogMiAmIGIgPyAzIDogNCAmIGIgPyAyIDogMCA6IGEud2hpY2gKICAgICAgICB9CiAgICB9LCByLmV2ZW50LmFkZFByb3ApLCByLmVhY2goewogICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAogICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91dCIsCiAgICAgICAgcG9pbnRlcmVudGVyOiAicG9pbnRlcm92ZXIiLAogICAgICAgIHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiCiAgICB9LCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgci5ldmVudC5zcGVjaWFsW2FdID0gewogICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6IGIsCiAgICAgICAgICAgIGJpbmRUeXBlOiBiLAogICAgICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHZhciBjLCBkID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBlID0gYS5yZWxhdGVkVGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIGYgPSBhLmhhbmRsZU9iajsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIChlID09PSBkIHx8IHIuY29udGFpbnMoZCwgZSkpIHx8IChhLnR5cGUgPSBmLm9yaWdUeXBlLCBjID0gZi5oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIGEudHlwZSA9IGIpLCBjCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgci5mbi5leHRlbmQoewogICAgICAgIG9uOiBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgIHJldHVybiB3YSh0aGlzLCBhLCBiLCBjLCBkKQogICAgICAgIH0sCiAgICAgICAgb25lOiBmdW5jdGlvbihhLCBiLCBjLCBkKSB7CiAgICAgICAgICAgIHJldHVybiB3YSh0aGlzLCBhLCBiLCBjLCBkLCAxKQogICAgICAgIH0sCiAgICAgICAgb2ZmOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlOwogICAgICAgICAgICBpZiAoYSAmJiBhLnByZXZlbnREZWZhdWx0ICYmIGEuaGFuZGxlT2JqKSByZXR1cm4gZCA9IGEuaGFuZGxlT2JqLCByKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZSA/IGQub3JpZ1R5cGUgKyAiLiIgKyBkLm5hbWVzcGFjZSA6IGQub3JpZ1R5cGUsIGQuc2VsZWN0b3IsIGQuaGFuZGxlciksIHRoaXM7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgYSkgewogICAgICAgICAgICAgICAgZm9yIChlIGluIGEpIHRoaXMub2ZmKGUsIGIsIGFbZV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYiAhPT0gITEgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgYiB8fCAoYyA9IGIsIGIgPSB2b2lkIDApLCBjID09PSAhMSAmJiAoYyA9IHVhKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgci5ldmVudC5yZW1vdmUodGhpcywgYSwgYywgYikKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciB4YSA9IC88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSwKICAgICAgICB5YSA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLAogICAgICAgIHphID0gL2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksCiAgICAgICAgQWEgPSAvXnRydWVcLyguKikvLAogICAgICAgIEJhID0gL15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nOwoKICAgIGZ1bmN0aW9uIENhKGEsIGIpIHsKICAgICAgICByZXR1cm4gci5ub2RlTmFtZShhLCAidGFibGUiKSAmJiByLm5vZGVOYW1lKDExICE9PSBiLm5vZGVUeXBlID8gYiA6IGIuZmlyc3RDaGlsZCwgInRyIikgPyBhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdIHx8IGEgOiBhCiAgICB9CgogICAgZnVuY3Rpb24gRGEoYSkgewogICAgICAgIHJldHVybiBhLnR5cGUgPSAobnVsbCAhPT0gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkgKyAiLyIgKyBhLnR5cGUsIGEKICAgIH0KCiAgICBmdW5jdGlvbiBFYShhKSB7CiAgICAgICAgdmFyIGIgPSBBYS5leGVjKGEudHlwZSk7CiAgICAgICAgcmV0dXJuIGIgPyBhLnR5cGUgPSBiWzFdIDogYS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSwgYQogICAgfQoKICAgIGZ1bmN0aW9uIEZhKGEsIGIpIHsKICAgICAgICB2YXIgYywgZCwgZSwgZiwgZywgaCwgaSwgajsKICAgICAgICBpZiAoMSA9PT0gYi5ub2RlVHlwZSkgewogICAgICAgICAgICBpZiAoVi5oYXNEYXRhKGEpICYmIChmID0gVi5hY2Nlc3MoYSksIGcgPSBWLnNldChiLCBmKSwgaiA9IGYuZXZlbnRzKSkgewogICAgICAgICAgICAgICAgZGVsZXRlIGcuaGFuZGxlLCBnLmV2ZW50cyA9IHt9OwogICAgICAgICAgICAgICAgZm9yIChlIGluIGopCiAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gMCwgZCA9IGpbZV0ubGVuZ3RoOyBkID4gYzsgYysrKSByLmV2ZW50LmFkZChiLCBlLCBqW2VdW2NdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIFcuaGFzRGF0YShhKSAmJiAoaCA9IFcuYWNjZXNzKGEpLCBpID0gci5leHRlbmQoe30sIGgpLCBXLnNldChiLCBpKSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gR2EoYSwgYikgewogICAgICAgIHZhciBjID0gYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICJpbnB1dCIgPT09IGMgJiYgaGEudGVzdChhLnR5cGUpID8gYi5jaGVja2VkID0gYS5jaGVja2VkIDogImlucHV0IiAhPT0gYyAmJiAidGV4dGFyZWEiICE9PSBjIHx8IChiLmRlZmF1bHRWYWx1ZSA9IGEuZGVmYXVsdFZhbHVlKQogICAgfQoKICAgIGZ1bmN0aW9uIEhhKGEsIGIsIGMsIGQpIHsKICAgICAgICBiID0gZy5hcHBseShbXSwgYik7CiAgICAgICAgdmFyIGUsIGYsIGgsIGksIGosIGssIGwgPSAwLAogICAgICAgICAgICBtID0gYS5sZW5ndGgsCiAgICAgICAgICAgIG4gPSBtIC0gMSwKICAgICAgICAgICAgcSA9IGJbMF0sCiAgICAgICAgICAgIHMgPSByLmlzRnVuY3Rpb24ocSk7CiAgICAgICAgaWYgKHMgfHwgbSA+IDEgJiYgInN0cmluZyIgPT0gdHlwZW9mIHEgJiYgIW8uY2hlY2tDbG9uZSAmJiB6YS50ZXN0KHEpKSByZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIGYgPSBhLmVxKGUpOwogICAgICAgICAgICBzICYmIChiWzBdID0gcS5jYWxsKHRoaXMsIGUsIGYuaHRtbCgpKSksIEhhKGYsIGIsIGMsIGQpCiAgICAgICAgfSk7CiAgICAgICAgaWYgKG0gJiYgKGUgPSBvYShiLCBhWzBdLm93bmVyRG9jdW1lbnQsICExLCBhLCBkKSwgZiA9IGUuZmlyc3RDaGlsZCwgMSA9PT0gZS5jaGlsZE5vZGVzLmxlbmd0aCAmJiAoZSA9IGYpLCBmIHx8IGQpKSB7CiAgICAgICAgICAgIGZvciAoaCA9IHIubWFwKGxhKGUsICJzY3JpcHQiKSwgRGEpLCBpID0gaC5sZW5ndGg7IG0gPiBsOyBsKyspIGogPSBlLCBsICE9PSBuICYmIChqID0gci5jbG9uZShqLCAhMCwgITApLCBpICYmIHIubWVyZ2UoaCwgbGEoaiwgInNjcmlwdCIpKSksIGMuY2FsbChhW2xdLCBqLCBsKTsKICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICBmb3IgKGsgPSBoW2gubGVuZ3RoIC0gMV0ub3duZXJEb2N1bWVudCwgci5tYXAoaCwgRWEpLCBsID0gMDsgaSA+IGw7IGwrKykgaiA9IGhbbF0sIGphLnRlc3Qoai50eXBlIHx8ICIiKSAmJiAhVi5hY2Nlc3MoaiwgImdsb2JhbEV2YWwiKSAmJiByLmNvbnRhaW5zKGssIGopICYmIChqLnNyYyA/IHIuX2V2YWxVcmwgJiYgci5fZXZhbFVybChqLnNyYykgOiBwKGoudGV4dENvbnRlbnQucmVwbGFjZShCYSwgIiIpLCBrKSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGEKICAgIH0KCiAgICBmdW5jdGlvbiBJYShhLCBiLCBjKSB7CiAgICAgICAgZm9yICh2YXIgZCwgZSA9IGIgPyByLmZpbHRlcihiLCBhKSA6IGEsIGYgPSAwOyBudWxsICE9IChkID0gZVtmXSk7IGYrKykgYyB8fCAxICE9PSBkLm5vZGVUeXBlIHx8IHIuY2xlYW5EYXRhKGxhKGQpKSwgZC5wYXJlbnROb2RlICYmIChjICYmIHIuY29udGFpbnMoZC5vd25lckRvY3VtZW50LCBkKSAmJiBtYShsYShkLCAic2NyaXB0IikpLCBkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkpOwogICAgICAgIHJldHVybiBhCiAgICB9CiAgICByLmV4dGVuZCh7CiAgICAgICAgaHRtbFByZWZpbHRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gYS5yZXBsYWNlKHhhLCAiPCQxPjwvJDI+IikKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlLCBmLCBnLCBoID0gYS5jbG9uZU5vZGUoITApLAogICAgICAgICAgICAgICAgaSA9IHIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LCBhKTsKICAgICAgICAgICAgaWYgKCEoby5ub0Nsb25lQ2hlY2tlZCB8fCAxICE9PSBhLm5vZGVUeXBlICYmIDExICE9PSBhLm5vZGVUeXBlIHx8IHIuaXNYTUxEb2MoYSkpKQogICAgICAgICAgICAgICAgZm9yIChnID0gbGEoaCksIGYgPSBsYShhKSwgZCA9IDAsIGUgPSBmLmxlbmd0aDsgZSA+IGQ7IGQrKykgR2EoZltkXSwgZ1tkXSk7CiAgICAgICAgICAgIGlmIChiKQogICAgICAgICAgICAgICAgaWYgKGMpCiAgICAgICAgICAgICAgICAgICAgZm9yIChmID0gZiB8fCBsYShhKSwgZyA9IGcgfHwgbGEoaCksIGQgPSAwLCBlID0gZi5sZW5ndGg7IGUgPiBkOyBkKyspIEZhKGZbZF0sIGdbZF0pOwogICAgICAgICAgICAgICAgZWxzZSBGYShhLCBoKTsKICAgICAgICAgICAgcmV0dXJuIGcgPSBsYShoLCAic2NyaXB0IiksIGcubGVuZ3RoID4gMCAmJiBtYShnLCAhaSAmJiBsYShhLCAic2NyaXB0IikpLCBoCiAgICAgICAgfSwKICAgICAgICBjbGVhbkRhdGE6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgZm9yICh2YXIgYiwgYywgZCwgZSA9IHIuZXZlbnQuc3BlY2lhbCwgZiA9IDA7IHZvaWQgMCAhPT0gKGMgPSBhW2ZdKTsgZisrKQogICAgICAgICAgICAgICAgaWYgKFQoYykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYiA9IGNbVi5leHBhbmRvXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5ldmVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQgaW4gYi5ldmVudHMpIGVbZF0gPyByLmV2ZW50LnJlbW92ZShjLCBkKSA6IHIucmVtb3ZlRXZlbnQoYywgZCwgYi5oYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICAgICBjW1YuZXhwYW5kb10gPSB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY1tXLmV4cGFuZG9dICYmIChjW1cuZXhwYW5kb10gPSB2b2lkIDApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksIHIuZm4uZXh0ZW5kKHsKICAgICAgICBkZXRhY2g6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIElhKHRoaXMsIGEsICEwKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBJYSh0aGlzLCBhKQogICAgICAgIH0sCiAgICAgICAgdGV4dDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gUyh0aGlzLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBhID8gci50ZXh0KHRoaXMpIDogdGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gYSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sIG51bGwsIGEsIGFyZ3VtZW50cy5sZW5ndGgpCiAgICAgICAgfSwKICAgICAgICBhcHBlbmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gSGEodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdGhpcy5ub2RlVHlwZSB8fCAxMSA9PT0gdGhpcy5ub2RlVHlwZSB8fCA5ID09PSB0aGlzLm5vZGVUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBDYSh0aGlzLCBhKTsKICAgICAgICAgICAgICAgICAgICBiLmFwcGVuZENoaWxkKGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEhhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgaWYgKDEgPT09IHRoaXMubm9kZVR5cGUgfHwgMTEgPT09IHRoaXMubm9kZVR5cGUgfHwgOSA9PT0gdGhpcy5ub2RlVHlwZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBiID0gQ2EodGhpcywgYSk7CiAgICAgICAgICAgICAgICAgICAgYi5pbnNlcnRCZWZvcmUoYSwgYi5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgYmVmb3JlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEhhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgdGhpcykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGFmdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEhhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgdGhpcy5uZXh0U2libGluZykKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgYSwgYiA9IDA7IG51bGwgIT0gKGEgPSB0aGlzW2JdKTsgYisrKSAxID09PSBhLm5vZGVUeXBlICYmIChyLmNsZWFuRGF0YShsYShhLCAhMSkpLCBhLnRleHRDb250ZW50ID0gIiIpOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIGEgPSBudWxsID09IGEgPyAhMSA6IGEsIGIgPSBudWxsID09IGIgPyBhIDogYiwgdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gci5jbG9uZSh0aGlzLCBhLCBiKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgaHRtbDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gUyh0aGlzLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXNbMF0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYSAmJiAxID09PSBiLm5vZGVUeXBlKSByZXR1cm4gYi5pbm5lckhUTUw7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGEgJiYgIXlhLnRlc3QoYSkgJiYgIWthWyhpYS5leGVjKGEpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkgewogICAgICAgICAgICAgICAgICAgIGEgPSByLmh0bWxQcmVmaWx0ZXIoYSk7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGQgPiBjOyBjKyspIGIgPSB0aGlzW2NdIHx8IHt9LCAxID09PSBiLm5vZGVUeXBlICYmIChyLmNsZWFuRGF0YShsYShiLCAhMSkpLCBiLmlubmVySFRNTCA9IGEpOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gMAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiICYmIHRoaXMuZW1wdHkoKS5hcHBlbmQoYSkKICAgICAgICAgICAgfSwgbnVsbCwgYSwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGEgPSBbXTsKICAgICAgICAgICAgcmV0dXJuIEhhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICByLmluQXJyYXkodGhpcywgYSkgPCAwICYmIChyLmNsZWFuRGF0YShsYSh0aGlzKSksIGMgJiYgYy5yZXBsYWNlQ2hpbGQoYiwgdGhpcykpCiAgICAgICAgICAgIH0sIGEpCiAgICAgICAgfQogICAgfSksIHIuZWFjaCh7CiAgICAgICAgYXBwZW5kVG86ICJhcHBlbmQiLAogICAgICAgIHByZXBlbmRUbzogInByZXBlbmQiLAogICAgICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIsCiAgICAgICAgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsCiAgICAgICAgcmVwbGFjZUFsbDogInJlcGxhY2VXaXRoIgogICAgfSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgIHIuZm5bYV0gPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGZvciAodmFyIGMsIGQgPSBbXSwgZSA9IHIoYSksIGYgPSBlLmxlbmd0aCAtIDEsIGcgPSAwOyBmID49IGc7IGcrKykgYyA9IGcgPT09IGYgPyB0aGlzIDogdGhpcy5jbG9uZSghMCksIHIoZVtnXSlbYl0oYyksIGguYXBwbHkoZCwgYy5nZXQoKSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhkKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIEphID0gL15tYXJnaW4vLAogICAgICAgIEthID0gbmV3IFJlZ0V4cCgiXigiICsgJCArICIpKD8hcHgpW2EteiVdKyQiLCAiaSIpLAogICAgICAgIExhID0gZnVuY3Rpb24oYikgewogICAgICAgICAgICB2YXIgYyA9IGIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsKICAgICAgICAgICAgcmV0dXJuIGMgJiYgYy5vcGVuZXIgfHwgKGMgPSBhKSwgYy5nZXRDb21wdXRlZFN0eWxlKGIpCiAgICAgICAgfTsKICAgICEgZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gYigpIHsKICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgIGkuc3R5bGUuY3NzVGV4dCA9ICJib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3RvcDoxJTt3aWR0aDo1MCUiLCBpLmlubmVySFRNTCA9ICIiLCBwYS5hcHBlbmRDaGlsZChoKTsKICAgICAgICAgICAgICAgIHZhciBiID0gYS5nZXRDb21wdXRlZFN0eWxlKGkpOwogICAgICAgICAgICAgICAgYyA9ICIxJSIgIT09IGIudG9wLCBnID0gIjJweCIgPT09IGIubWFyZ2luTGVmdCwgZSA9ICI0cHgiID09PSBiLndpZHRoLCBpLnN0eWxlLm1hcmdpblJpZ2h0ID0gIjUwJSIsIGYgPSAiNHB4IiA9PT0gYi5tYXJnaW5SaWdodCwgcGEucmVtb3ZlQ2hpbGQoaCksIGkgPSBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIGMsIGUsIGYsIGcsIGggPSBkLmNyZWF0ZUVsZW1lbnQoImRpdiIpLAogICAgICAgICAgICBpID0gZC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICBpLnN0eWxlICYmIChpLnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IiwgaS5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiIsIG8uY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCwgaC5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIiwgaC5hcHBlbmRDaGlsZChpKSwgci5leHRlbmQobywgewogICAgICAgICAgICBwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBiKCksIGMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGIoKSwgZQogICAgICAgICAgICB9LAogICAgICAgICAgICBwaXhlbE1hcmdpblJpZ2h0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBiKCksIGYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBiKCksIGcKICAgICAgICAgICAgfQogICAgICAgIH0pKQogICAgfSgpOwoKICAgIGZ1bmN0aW9uIE1hKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZCwgZSwgZiwgZywgaCA9IGEuc3R5bGU7CiAgICAgICAgcmV0dXJuIGMgPSBjIHx8IExhKGEpLCBjICYmIChnID0gYy5nZXRQcm9wZXJ0eVZhbHVlKGIpIHx8IGNbYl0sICIiICE9PSBnIHx8IHIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LCBhKSB8fCAoZyA9IHIuc3R5bGUoYSwgYikpLCAhby5waXhlbE1hcmdpblJpZ2h0KCkgJiYgS2EudGVzdChnKSAmJiBKYS50ZXN0KGIpICYmIChkID0gaC53aWR0aCwgZSA9IGgubWluV2lkdGgsIGYgPSBoLm1heFdpZHRoLCBoLm1pbldpZHRoID0gaC5tYXhXaWR0aCA9IGgud2lkdGggPSBnLCBnID0gYy53aWR0aCwgaC53aWR0aCA9IGQsIGgubWluV2lkdGggPSBlLCBoLm1heFdpZHRoID0gZikpLCB2b2lkIDAgIT09IGcgPyBnICsgIiIgOiBnCiAgICB9CgogICAgZnVuY3Rpb24gTmEoYSwgYikgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSgpID8gdm9pZCBkZWxldGUgdGhpcy5nZXQgOiAodGhpcy5nZXQgPSBiKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB2YXIgT2EgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sCiAgICAgICAgUGEgPSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICB2aXNpYmlsaXR5OiAiaGlkZGVuIiwKICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgIH0sCiAgICAgICAgUWEgPSB7CiAgICAgICAgICAgIGxldHRlclNwYWNpbmc6ICIwIiwKICAgICAgICAgICAgZm9udFdlaWdodDogIjQwMCIKICAgICAgICB9LAogICAgICAgIFJhID0gWyJXZWJraXQiLCAiTW96IiwgIm1zIl0sCiAgICAgICAgU2EgPSBkLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlOwoKICAgIGZ1bmN0aW9uIFRhKGEpIHsKICAgICAgICBpZiAoYSBpbiBTYSkgcmV0dXJuIGE7CiAgICAgICAgdmFyIGIgPSBhWzBdLnRvVXBwZXJDYXNlKCkgKyBhLnNsaWNlKDEpLAogICAgICAgICAgICBjID0gUmEubGVuZ3RoOwogICAgICAgIHdoaWxlIChjLS0pCiAgICAgICAgICAgIGlmIChhID0gUmFbY10gKyBiLCBhIGluIFNhKSByZXR1cm4gYQogICAgfQoKICAgIGZ1bmN0aW9uIFVhKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZCA9IF8uZXhlYyhiKTsKICAgICAgICByZXR1cm4gZCA/IE1hdGgubWF4KDAsIGRbMl0gLSAoYyB8fCAwKSkgKyAoZFszXSB8fCAicHgiKSA6IGIKICAgIH0KCiAgICBmdW5jdGlvbiBWYShhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgZm9yICh2YXIgZiA9IGMgPT09IChkID8gImJvcmRlciIgOiAiY29udGVudCIpID8gNCA6ICJ3aWR0aCIgPT09IGIgPyAxIDogMCwgZyA9IDA7IDQgPiBmOyBmICs9IDIpICJtYXJnaW4iID09PSBjICYmIChnICs9IHIuY3NzKGEsIGMgKyBhYVtmXSwgITAsIGUpKSwgZCA/ICgiY29udGVudCIgPT09IGMgJiYgKGcgLT0gci5jc3MoYSwgInBhZGRpbmciICsgYWFbZl0sICEwLCBlKSksICJtYXJnaW4iICE9PSBjICYmIChnIC09IHIuY3NzKGEsICJib3JkZXIiICsgYWFbZl0gKyAiV2lkdGgiLCAhMCwgZSkpKSA6IChnICs9IHIuY3NzKGEsICJwYWRkaW5nIiArIGFhW2ZdLCAhMCwgZSksICJwYWRkaW5nIiAhPT0gYyAmJiAoZyArPSByLmNzcyhhLCAiYm9yZGVyIiArIGFhW2ZdICsgIldpZHRoIiwgITAsIGUpKSk7CiAgICAgICAgcmV0dXJuIGcKICAgIH0KCiAgICBmdW5jdGlvbiBXYShhLCBiLCBjKSB7CiAgICAgICAgdmFyIGQsIGUgPSAhMCwKICAgICAgICAgICAgZiA9IExhKGEpLAogICAgICAgICAgICBnID0gImJvcmRlci1ib3giID09PSByLmNzcyhhLCAiYm94U2l6aW5nIiwgITEsIGYpOwogICAgICAgIGlmIChhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIChkID0gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtiXSksIDAgPj0gZCB8fCBudWxsID09IGQpIHsKICAgICAgICAgICAgaWYgKGQgPSBNYShhLCBiLCBmKSwgKDAgPiBkIHx8IG51bGwgPT0gZCkgJiYgKGQgPSBhLnN0eWxlW2JdKSwgS2EudGVzdChkKSkgcmV0dXJuIGQ7CiAgICAgICAgICAgIGUgPSBnICYmIChvLmJveFNpemluZ1JlbGlhYmxlKCkgfHwgZCA9PT0gYS5zdHlsZVtiXSksIGQgPSBwYXJzZUZsb2F0KGQpIHx8IDAKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGQgKyBWYShhLCBiLCBjIHx8IChnID8gImJvcmRlciIgOiAiY29udGVudCIpLCBlLCBmKSArICJweCIKICAgIH0KICAgIHIuZXh0ZW5kKHsKICAgICAgICBjc3NIb29rczogewogICAgICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IE1hKGEsICJvcGFjaXR5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0gYyA/ICIxIiA6IGMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNzc051bWJlcjogewogICAgICAgICAgICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogITAsCiAgICAgICAgICAgIGNvbHVtbkNvdW50OiAhMCwKICAgICAgICAgICAgZmlsbE9wYWNpdHk6ICEwLAogICAgICAgICAgICBmbGV4R3JvdzogITAsCiAgICAgICAgICAgIGZsZXhTaHJpbms6ICEwLAogICAgICAgICAgICBmb250V2VpZ2h0OiAhMCwKICAgICAgICAgICAgbGluZUhlaWdodDogITAsCiAgICAgICAgICAgIG9wYWNpdHk6ICEwLAogICAgICAgICAgICBvcmRlcjogITAsCiAgICAgICAgICAgIG9ycGhhbnM6ICEwLAogICAgICAgICAgICB3aWRvd3M6ICEwLAogICAgICAgICAgICB6SW5kZXg6ICEwLAogICAgICAgICAgICB6b29tOiAhMAogICAgICAgIH0sCiAgICAgICAgY3NzUHJvcHM6IHsKICAgICAgICAgICAgImZsb2F0IjogImNzc0Zsb2F0IgogICAgICAgIH0sCiAgICAgICAgc3R5bGU6IGZ1bmN0aW9uKGEsIGIsIGMsIGQpIHsKICAgICAgICAgICAgaWYgKGEgJiYgMyAhPT0gYS5ub2RlVHlwZSAmJiA4ICE9PSBhLm5vZGVUeXBlICYmIGEuc3R5bGUpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBmLCBnLCBoID0gci5jYW1lbENhc2UoYiksCiAgICAgICAgICAgICAgICAgICAgaSA9IGEuc3R5bGU7CiAgICAgICAgICAgICAgICByZXR1cm4gYiA9IHIuY3NzUHJvcHNbaF0gfHwgKHIuY3NzUHJvcHNbaF0gPSBUYShoKSB8fCBoKSwgZyA9IHIuY3NzSG9va3NbYl0gfHwgci5jc3NIb29rc1toXSwgdm9pZCAwID09PSBjID8gZyAmJiAiZ2V0IiBpbiBnICYmIHZvaWQgMCAhPT0gKGUgPSBnLmdldChhLCAhMSwgZCkpID8gZSA6IGlbYl0gOiAoZiA9IHR5cGVvZiBjLCAic3RyaW5nIiA9PT0gZiAmJiAoZSA9IF8uZXhlYyhjKSkgJiYgZVsxXSAmJiAoYyA9IGRhKGEsIGIsIGUpLCBmID0gIm51bWJlciIpLCBudWxsICE9IGMgJiYgYyA9PT0gYyAmJiAoIm51bWJlciIgPT09IGYgJiYgKGMgKz0gZSAmJiBlWzNdIHx8IChyLmNzc051bWJlcltoXSA/ICIiIDogInB4IikpLCBvLmNsZWFyQ2xvbmVTdHlsZSB8fCAiIiAhPT0gYyB8fCAwICE9PSBiLmluZGV4T2YoImJhY2tncm91bmQiKSB8fCAoaVtiXSA9ICJpbmhlcml0IiksIGcgJiYgInNldCIgaW4gZyAmJiB2b2lkIDAgPT09IChjID0gZy5zZXQoYSwgYywgZCkpIHx8IChpW2JdID0gYykpLCB2b2lkIDApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNzczogZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgICAgICB2YXIgZSwgZiwgZywgaCA9IHIuY2FtZWxDYXNlKGIpOwogICAgICAgICAgICByZXR1cm4gYiA9IHIuY3NzUHJvcHNbaF0gfHwgKHIuY3NzUHJvcHNbaF0gPSBUYShoKSB8fCBoKSwgZyA9IHIuY3NzSG9va3NbYl0gfHwgci5jc3NIb29rc1toXSwgZyAmJiAiZ2V0IiBpbiBnICYmIChlID0gZy5nZXQoYSwgITAsIGMpKSwgdm9pZCAwID09PSBlICYmIChlID0gTWEoYSwgYiwgZCkpLCAibm9ybWFsIiA9PT0gZSAmJiBiIGluIFFhICYmIChlID0gUWFbYl0pLCAiIiA9PT0gYyB8fCBjID8gKGYgPSBwYXJzZUZsb2F0KGUpLCBjID09PSAhMCB8fCBpc0Zpbml0ZShmKSA/IGYgfHwgMCA6IGUpIDogZQogICAgICAgIH0KICAgIH0pLCByLmVhY2goWyJoZWlnaHQiLCAid2lkdGgiXSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgIHIuY3NzSG9va3NbYl0gPSB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMgPyAhT2EudGVzdChyLmNzcyhhLCAiZGlzcGxheSIpKSB8fCBhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICYmIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPyBXYShhLCBiLCBkKSA6IGNhKGEsIFBhLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2EoYSwgYiwgZCkKICAgICAgICAgICAgICAgIH0pIDogdm9pZCAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oYSwgYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUsIGYgPSBkICYmIExhKGEpLAogICAgICAgICAgICAgICAgICAgIGcgPSBkICYmIFZhKGEsIGIsIGQsICJib3JkZXItYm94IiA9PT0gci5jc3MoYSwgImJveFNpemluZyIsICExLCBmKSwgZik7CiAgICAgICAgICAgICAgICByZXR1cm4gZyAmJiAoZSA9IF8uZXhlYyhjKSkgJiYgInB4IiAhPT0gKGVbM10gfHwgInB4IikgJiYgKGEuc3R5bGVbYl0gPSBjLCBjID0gci5jc3MoYSwgYikpLCBVYShhLCBjLCBnKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksIHIuY3NzSG9va3MubWFyZ2luTGVmdCA9IE5hKG8ucmVsaWFibGVNYXJnaW5MZWZ0LCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIgPyAocGFyc2VGbG9hdChNYShhLCAibWFyZ2luTGVmdCIpKSB8fCBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBjYShhLCB7CiAgICAgICAgICAgIG1hcmdpbkxlZnQ6IDAKICAgICAgICB9LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdAogICAgICAgIH0pKSArICJweCIgOiB2b2lkIDAKICAgIH0pLCByLmVhY2goewogICAgICAgIG1hcmdpbjogIiIsCiAgICAgICAgcGFkZGluZzogIiIsCiAgICAgICAgYm9yZGVyOiAiV2lkdGgiCiAgICB9LCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgci5jc3NIb29rc1thICsgYl0gPSB7CiAgICAgICAgICAgIGV4cGFuZDogZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDAsIGUgPSB7fSwgZiA9ICJzdHJpbmciID09IHR5cGVvZiBjID8gYy5zcGxpdCgiICIpIDogW2NdOyA0ID4gZDsgZCsrKSBlW2EgKyBhYVtkXSArIGJdID0gZltkXSB8fCBmW2QgLSAyXSB8fCBmWzBdOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfQogICAgICAgIH0sIEphLnRlc3QoYSkgfHwgKHIuY3NzSG9va3NbYSArIGJdLnNldCA9IFVhKQogICAgfSksIHIuZm4uZXh0ZW5kKHsKICAgICAgICBjc3M6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIFModGhpcywgZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICAgICAgdmFyIGQsIGUsIGYgPSB7fSwKICAgICAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgICAgIGlmIChyLmlzQXJyYXkoYikpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGQgPSBMYShhKSwgZSA9IGIubGVuZ3RoOyBlID4gZzsgZysrKSBmW2JbZ11dID0gci5jc3MoYSwgYltnXSwgITEsIGQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBjID8gci5zdHlsZShhLCBiLCBjKSA6IHIuY3NzKGEsIGIpCiAgICAgICAgICAgIH0sIGEsIGIsIGFyZ3VtZW50cy5sZW5ndGggPiAxKQogICAgICAgIH0KICAgIH0pOwoKICAgIGZ1bmN0aW9uIFhhKGEsIGIsIGMsIGQsIGUpIHsKICAgICAgICByZXR1cm4gbmV3IFhhLnByb3RvdHlwZS5pbml0KGEsIGIsIGMsIGQsIGUpCiAgICB9CiAgICByLlR3ZWVuID0gWGEsIFhhLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogWGEsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgICAgICB0aGlzLmVsZW0gPSBhLCB0aGlzLnByb3AgPSBjLCB0aGlzLmVhc2luZyA9IGUgfHwgci5lYXNpbmcuX2RlZmF1bHQsIHRoaXMub3B0aW9ucyA9IGIsIHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCksIHRoaXMuZW5kID0gZCwgdGhpcy51bml0ID0gZiB8fCAoci5jc3NOdW1iZXJbY10gPyAiIiA6ICJweCIpCiAgICAgICAgfSwKICAgICAgICBjdXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYSA9IFhhLnByb3BIb29rc1t0aGlzLnByb3BdOwogICAgICAgICAgICByZXR1cm4gYSAmJiBhLmdldCA/IGEuZ2V0KHRoaXMpIDogWGEucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKQogICAgICAgIH0sCiAgICAgICAgcnVuOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiLCBjID0gWGEucHJvcEhvb2tzW3RoaXMucHJvcF07CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24gPyB0aGlzLnBvcyA9IGIgPSByLmVhc2luZ1t0aGlzLmVhc2luZ10oYSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogYSwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IHRoaXMucG9zID0gYiA9IGEsIHRoaXMubm93ID0gKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiBiICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwgYyAmJiBjLnNldCA/IGMuc2V0KHRoaXMpIDogWGEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSwgdGhpcwogICAgICAgIH0KICAgIH0sIFhhLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFhhLnByb3RvdHlwZSwgWGEucHJvcEhvb2tzID0gewogICAgICAgIF9kZWZhdWx0OiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdmFyIGI7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAhPT0gYS5lbGVtLm5vZGVUeXBlIHx8IG51bGwgIT0gYS5lbGVtW2EucHJvcF0gJiYgbnVsbCA9PSBhLmVsZW0uc3R5bGVbYS5wcm9wXSA/IGEuZWxlbVthLnByb3BdIDogKGIgPSByLmNzcyhhLmVsZW0sIGEucHJvcCwgIiIpLCBiICYmICJhdXRvIiAhPT0gYiA/IGIgOiAwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHIuZnguc3RlcFthLnByb3BdID8gci5meC5zdGVwW2EucHJvcF0oYSkgOiAxICE9PSBhLmVsZW0ubm9kZVR5cGUgfHwgbnVsbCA9PSBhLmVsZW0uc3R5bGVbci5jc3NQcm9wc1thLnByb3BdXSAmJiAhci5jc3NIb29rc1thLnByb3BdID8gYS5lbGVtW2EucHJvcF0gPSBhLm5vdyA6IHIuc3R5bGUoYS5lbGVtLCBhLnByb3AsIGEubm93ICsgYS51bml0KQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgWGEucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFhhLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0gewogICAgICAgIHNldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICBhLmVsZW0ubm9kZVR5cGUgJiYgYS5lbGVtLnBhcmVudE5vZGUgJiYgKGEuZWxlbVthLnByb3BdID0gYS5ub3cpCiAgICAgICAgfQogICAgfSwgci5lYXNpbmcgPSB7CiAgICAgICAgbGluZWFyOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgfSwKICAgICAgICBzd2luZzogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhhICogTWF0aC5QSSkgLyAyCiAgICAgICAgfSwKICAgICAgICBfZGVmYXVsdDogInN3aW5nIgogICAgfSwgci5meCA9IFhhLnByb3RvdHlwZS5pbml0LCByLmZ4LnN0ZXAgPSB7fTsKICAgIHZhciBZYSwgWmEsICRhID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLAogICAgICAgIF9hID0gL3F1ZXVlSG9va3MkLzsKCiAgICBmdW5jdGlvbiBhYigpIHsKICAgICAgICBaYSAmJiAoYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYWIpLCByLmZ4LnRpY2soKSkKICAgIH0KCiAgICBmdW5jdGlvbiBiYigpIHsKICAgICAgICByZXR1cm4gYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBZYSA9IHZvaWQgMAogICAgICAgIH0pLCBZYSA9IHIubm93KCkKICAgIH0KCiAgICBmdW5jdGlvbiBjYihhLCBiKSB7CiAgICAgICAgdmFyIGMsIGQgPSAwLAogICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgaGVpZ2h0OiBhCiAgICAgICAgICAgIH07CiAgICAgICAgZm9yIChiID0gYiA/IDEgOiAwOyA0ID4gZDsgZCArPSAyIC0gYikgYyA9IGFhW2RdLCBlWyJtYXJnaW4iICsgY10gPSBlWyJwYWRkaW5nIiArIGNdID0gYTsKICAgICAgICByZXR1cm4gYiAmJiAoZS5vcGFjaXR5ID0gZS53aWR0aCA9IGEpLCBlCiAgICB9CgogICAgZnVuY3Rpb24gZGIoYSwgYiwgYykgewogICAgICAgIGZvciAodmFyIGQsIGUgPSAoZ2IudHdlZW5lcnNbYl0gfHwgW10pLmNvbmNhdChnYi50d2VlbmVyc1siKiJdKSwgZiA9IDAsIGcgPSBlLmxlbmd0aDsgZyA+IGY7IGYrKykKICAgICAgICAgICAgaWYgKGQgPSBlW2ZdLmNhbGwoYywgYiwgYSkpIHJldHVybiBkCiAgICB9CgogICAgZnVuY3Rpb24gZWIoYSwgYiwgYykgewogICAgICAgIHZhciBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsID0gIndpZHRoIiBpbiBiIHx8ICJoZWlnaHQiIGluIGIsCiAgICAgICAgICAgIG0gPSB0aGlzLAogICAgICAgICAgICBuID0ge30sCiAgICAgICAgICAgIG8gPSBhLnN0eWxlLAogICAgICAgICAgICBwID0gYS5ub2RlVHlwZSAmJiBiYShhKSwKICAgICAgICAgICAgcSA9IFYuZ2V0KGEsICJmeHNob3ciKTsKICAgICAgICBjLnF1ZXVlIHx8IChnID0gci5fcXVldWVIb29rcyhhLCAiZngiKSwgbnVsbCA9PSBnLnVucXVldWVkICYmIChnLnVucXVldWVkID0gMCwgaCA9IGcuZW1wdHkuZmlyZSwgZy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGcudW5xdWV1ZWQgfHwgaCgpCiAgICAgICAgfSksIGcudW5xdWV1ZWQrKywgbS5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG0uYWx3YXlzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZy51bnF1ZXVlZC0tLCByLnF1ZXVlKGEsICJmeCIpLmxlbmd0aCB8fCBnLmVtcHR5LmZpcmUoKQogICAgICAgICAgICB9KQogICAgICAgIH0pKTsKICAgICAgICBmb3IgKGQgaW4gYikKICAgICAgICAgICAgaWYgKGUgPSBiW2RdLCAkYS50ZXN0KGUpKSB7CiAgICAgICAgICAgICAgICBpZiAoZGVsZXRlIGJbZF0sIGYgPSBmIHx8ICJ0b2dnbGUiID09PSBlLCBlID09PSAocCA/ICJoaWRlIiA6ICJzaG93IikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoInNob3ciICE9PSBlIHx8ICFxIHx8IHZvaWQgMCA9PT0gcVtkXSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgcCA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuW2RdID0gcSAmJiBxW2RdIHx8IHIuc3R5bGUoYSwgZCkKICAgICAgICAgICAgfQogICAgICAgIGlmIChpID0gIXIuaXNFbXB0eU9iamVjdChiKSwgaSB8fCAhci5pc0VtcHR5T2JqZWN0KG4pKSB7CiAgICAgICAgICAgIGwgJiYgMSA9PT0gYS5ub2RlVHlwZSAmJiAoYy5vdmVyZmxvdyA9IFtvLm92ZXJmbG93LCBvLm92ZXJmbG93WCwgby5vdmVyZmxvd1ldLCBqID0gcSAmJiBxLmRpc3BsYXksIG51bGwgPT0gaiAmJiAoaiA9IFYuZ2V0KGEsICJkaXNwbGF5IikpLCBrID0gci5jc3MoYSwgImRpc3BsYXkiKSwgIm5vbmUiID09PSBrICYmIChqID8gayA9IGogOiAoZ2EoW2FdLCAhMCksIGogPSBhLnN0eWxlLmRpc3BsYXkgfHwgaiwgayA9IHIuY3NzKGEsICJkaXNwbGF5IiksIGdhKFthXSkpKSwgKCJpbmxpbmUiID09PSBrIHx8ICJpbmxpbmUtYmxvY2siID09PSBrICYmIG51bGwgIT0gaikgJiYgIm5vbmUiID09PSByLmNzcyhhLCAiZmxvYXQiKSAmJiAoaSB8fCAobS5kb25lKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgby5kaXNwbGF5ID0gagogICAgICAgICAgICB9KSwgbnVsbCA9PSBqICYmIChrID0gby5kaXNwbGF5LCBqID0gIm5vbmUiID09PSBrID8gIiIgOiBrKSksIG8uZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksIGMub3ZlcmZsb3cgJiYgKG8ub3ZlcmZsb3cgPSAiaGlkZGVuIiwgbS5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBvLm92ZXJmbG93ID0gYy5vdmVyZmxvd1swXSwgby5vdmVyZmxvd1ggPSBjLm92ZXJmbG93WzFdLCBvLm92ZXJmbG93WSA9IGMub3ZlcmZsb3dbMl0KICAgICAgICAgICAgfSkpLCBpID0gITE7CiAgICAgICAgICAgIGZvciAoZCBpbiBuKSBpIHx8IChxID8gImhpZGRlbiIgaW4gcSAmJiAocCA9IHEuaGlkZGVuKSA6IHEgPSBWLmFjY2VzcyhhLCAiZnhzaG93IiwgewogICAgICAgICAgICAgICAgZGlzcGxheTogagogICAgICAgICAgICB9KSwgZiAmJiAocS5oaWRkZW4gPSAhcCksIHAgJiYgZ2EoW2FdLCAhMCksIG0uZG9uZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHAgfHwgZ2EoW2FdKSwgVi5yZW1vdmUoYSwgImZ4c2hvdyIpOwogICAgICAgICAgICAgICAgZm9yIChkIGluIG4pIHIuc3R5bGUoYSwgZCwgbltkXSkKICAgICAgICAgICAgfSkpLCBpID0gZGIocCA/IHFbZF0gOiAwLCBkLCBtKSwgZCBpbiBxIHx8IChxW2RdID0gaS5zdGFydCwgcCAmJiAoaS5lbmQgPSBpLnN0YXJ0LCBpLnN0YXJ0ID0gMCkpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGZiKGEsIGIpIHsKICAgICAgICB2YXIgYywgZCwgZSwgZiwgZzsKICAgICAgICBmb3IgKGMgaW4gYSkKICAgICAgICAgICAgaWYgKGQgPSByLmNhbWVsQ2FzZShjKSwgZSA9IGJbZF0sIGYgPSBhW2NdLCByLmlzQXJyYXkoZikgJiYgKGUgPSBmWzFdLCBmID0gYVtjXSA9IGZbMF0pLCBjICE9PSBkICYmIChhW2RdID0gZiwgZGVsZXRlIGFbY10pLCBnID0gci5jc3NIb29rc1tkXSwgZyAmJiAiZXhwYW5kIiBpbiBnKSB7CiAgICAgICAgICAgICAgICBmID0gZy5leHBhbmQoZiksIGRlbGV0ZSBhW2RdOwogICAgICAgICAgICAgICAgZm9yIChjIGluIGYpIGMgaW4gYSB8fCAoYVtjXSA9IGZbY10sIGJbY10gPSBlKQogICAgICAgICAgICB9IGVsc2UgYltkXSA9IGUKICAgIH0KCiAgICBmdW5jdGlvbiBnYihhLCBiLCBjKSB7CiAgICAgICAgdmFyIGQsIGUsIGYgPSAwLAogICAgICAgICAgICBnID0gZ2IucHJlZmlsdGVycy5sZW5ndGgsCiAgICAgICAgICAgIGggPSByLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZGVsZXRlIGkuZWxlbQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGIgPSBZYSB8fCBiYigpLCBjID0gTWF0aC5tYXgoMCwgai5zdGFydFRpbWUgKyBqLmR1cmF0aW9uIC0gYiksIGQgPSBjIC8gai5kdXJhdGlvbiB8fCAwLCBmID0gMSAtIGQsIGcgPSAwLCBpID0gai50d2VlbnMubGVuZ3RoOyBpID4gZzsgZysrKSBqLnR3ZWVuc1tnXS5ydW4oZik7CiAgICAgICAgICAgICAgICByZXR1cm4gaC5ub3RpZnlXaXRoKGEsIFtqLCBmLCBjXSksIDEgPiBmICYmIGkgPyBjIDogKGgucmVzb2x2ZVdpdGgoYSwgW2pdKSwgITEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGogPSBoLnByb21pc2UoewogICAgICAgICAgICAgICAgZWxlbTogYSwKICAgICAgICAgICAgICAgIHByb3BzOiByLmV4dGVuZCh7fSwgYiksCiAgICAgICAgICAgICAgICBvcHRzOiByLmV4dGVuZCghMCwgewogICAgICAgICAgICAgICAgICAgIHNwZWNpYWxFYXNpbmc6IHt9LAogICAgICAgICAgICAgICAgICAgIGVhc2luZzogci5lYXNpbmcuX2RlZmF1bHQKICAgICAgICAgICAgICAgIH0sIGMpLAogICAgICAgICAgICAgICAgb3JpZ2luYWxQcm9wZXJ0aWVzOiBiLAogICAgICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zOiBjLAogICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBZYSB8fCBiYigpLAogICAgICAgICAgICAgICAgZHVyYXRpb246IGMuZHVyYXRpb24sCiAgICAgICAgICAgICAgICB0d2VlbnM6IFtdLAogICAgICAgICAgICAgICAgY3JlYXRlVHdlZW46IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHIuVHdlZW4oYSwgai5vcHRzLCBiLCBjLCBqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXSB8fCBqLm9wdHMuZWFzaW5nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gai50d2VlbnMucHVzaChkKSwgZAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBiID8gai50d2VlbnMubGVuZ3RoIDogMDsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gITA7IGQgPiBjOyBjKyspIGoudHdlZW5zW2NdLnJ1bigxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiA/IChoLm5vdGlmeVdpdGgoYSwgW2osIDEsIDBdKSwgaC5yZXNvbHZlV2l0aChhLCBbaiwgYl0pKSA6IGgucmVqZWN0V2l0aChhLCBbaiwgYl0pLCB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBrID0gai5wcm9wczsKICAgICAgICBmb3IgKGZiKGssIGoub3B0cy5zcGVjaWFsRWFzaW5nKTsgZyA+IGY7IGYrKykKICAgICAgICAgICAgaWYgKGQgPSBnYi5wcmVmaWx0ZXJzW2ZdLmNhbGwoaiwgYSwgaywgai5vcHRzKSkgcmV0dXJuIHIuaXNGdW5jdGlvbihkLnN0b3ApICYmIChyLl9xdWV1ZUhvb2tzKGouZWxlbSwgai5vcHRzLnF1ZXVlKS5zdG9wID0gci5wcm94eShkLnN0b3AsIGQpKSwgZDsKICAgICAgICByZXR1cm4gci5tYXAoaywgZGIsIGopLCByLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSAmJiBqLm9wdHMuc3RhcnQuY2FsbChhLCBqKSwgci5meC50aW1lcihyLmV4dGVuZChpLCB7CiAgICAgICAgICAgIGVsZW06IGEsCiAgICAgICAgICAgIGFuaW06IGosCiAgICAgICAgICAgIHF1ZXVlOiBqLm9wdHMucXVldWUKICAgICAgICB9KSksIGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLCBqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKQogICAgfQogICAgci5BbmltYXRpb24gPSByLmV4dGVuZChnYiwgewogICAgICAgICAgICB0d2VlbmVyczogewogICAgICAgICAgICAgICAgIioiOiBbZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5jcmVhdGVUd2VlbihhLCBiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGEoYy5lbGVtLCBhLCBfLmV4ZWMoYiksIGMpLCBjCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9LAogICAgICAgICAgICB0d2VlbmVyOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICByLmlzRnVuY3Rpb24oYSkgPyAoYiA9IGEsIGEgPSBbIioiXSkgOiBhID0gYS5tYXRjaChLKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGMsIGQgPSAwLCBlID0gYS5sZW5ndGg7IGUgPiBkOyBkKyspIGMgPSBhW2RdLCBnYi50d2VlbmVyc1tjXSA9IGdiLnR3ZWVuZXJzW2NdIHx8IFtdLCBnYi50d2VlbmVyc1tjXS51bnNoaWZ0KGIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZWZpbHRlcnM6IFtlYl0sCiAgICAgICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgYiA/IGdiLnByZWZpbHRlcnMudW5zaGlmdChhKSA6IGdiLnByZWZpbHRlcnMucHVzaChhKQogICAgICAgICAgICB9CiAgICAgICAgfSksIHIuc3BlZWQgPSBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBlID0gYSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgYSA/IHIuZXh0ZW5kKHt9LCBhKSA6IHsKICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjIHx8ICFjICYmIGIgfHwgci5pc0Z1bmN0aW9uKGEpICYmIGEsCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogYSwKICAgICAgICAgICAgICAgIGVhc2luZzogYyAmJiBiIHx8IGIgJiYgIXIuaXNGdW5jdGlvbihiKSAmJiBiCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiByLmZ4Lm9mZiB8fCBkLmhpZGRlbiA/IGUuZHVyYXRpb24gPSAwIDogZS5kdXJhdGlvbiA9ICJudW1iZXIiID09IHR5cGVvZiBlLmR1cmF0aW9uID8gZS5kdXJhdGlvbiA6IGUuZHVyYXRpb24gaW4gci5meC5zcGVlZHMgPyByLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXSA6IHIuZnguc3BlZWRzLl9kZWZhdWx0LCBudWxsICE9IGUucXVldWUgJiYgZS5xdWV1ZSAhPT0gITAgfHwgKGUucXVldWUgPSAiZngiKSwgZS5vbGQgPSBlLmNvbXBsZXRlLCBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByLmlzRnVuY3Rpb24oZS5vbGQpICYmIGUub2xkLmNhbGwodGhpcyksIGUucXVldWUgJiYgci5kZXF1ZXVlKHRoaXMsIGUucXVldWUpCiAgICAgICAgICAgIH0sIGUKICAgICAgICB9LCByLmZuLmV4dGVuZCh7CiAgICAgICAgICAgIGZhZGVUbzogZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGJhKS5jc3MoIm9wYWNpdHkiLCAwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogYgogICAgICAgICAgICAgICAgfSwgYSwgYywgZCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYW5pbWF0ZTogZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSByLmlzRW1wdHlPYmplY3QoYSksCiAgICAgICAgICAgICAgICAgICAgZiA9IHIuc3BlZWQoYiwgYywgZCksCiAgICAgICAgICAgICAgICAgICAgZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdiKHRoaXMsIHIuZXh0ZW5kKHt9LCBhKSwgZik7CiAgICAgICAgICAgICAgICAgICAgICAgIChlIHx8IFYuZ2V0KHRoaXMsICJmaW5pc2giKSkgJiYgYi5zdG9wKCEwKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gZy5maW5pc2ggPSBnLCBlIHx8IGYucXVldWUgPT09ICExID8gdGhpcy5lYWNoKGcpIDogdGhpcy5xdWV1ZShmLnF1ZXVlLCBnKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdG9wOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuc3RvcDsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgYS5zdG9wLCBiKGMpCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBhICYmIChjID0gYiwgYiA9IGEsIGEgPSB2b2lkIDApLCBiICYmIGEgIT09ICExICYmIHRoaXMucXVldWUoYSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYiA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gbnVsbCAhPSBhICYmIGEgKyAicXVldWVIb29rcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLnRpbWVycywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IFYuZ2V0KHRoaXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSBnW2VdICYmIGdbZV0uc3RvcCAmJiBkKGdbZV0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlIGluIGcpIGdbZV0gJiYgZ1tlXS5zdG9wICYmIF9hLnRlc3QoZSkgJiYgZChnW2VdKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSBmLmxlbmd0aDsgZS0tOykgZltlXS5lbGVtICE9PSB0aGlzIHx8IG51bGwgIT0gYSAmJiBmW2VdLnF1ZXVlICE9PSBhIHx8IChmW2VdLmFuaW0uc3RvcChjKSwgYiA9ICExLCBmLnNwbGljZShlLCAxKSk7CiAgICAgICAgICAgICAgICAgICAgIWIgJiYgYyB8fCByLmRlcXVldWUodGhpcywgYSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpbmlzaDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEgIT09ICExICYmIChhID0gYSB8fCAiZngiKSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBiLCBjID0gVi5nZXQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2EgKyAicXVldWUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGNbYSArICJxdWV1ZUhvb2tzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLnRpbWVycywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGQgPyBkLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjLmZpbmlzaCA9ICEwLCByLnF1ZXVlKHRoaXMsIGEsIFtdKSwgZSAmJiBlLnN0b3AgJiYgZS5zdG9wLmNhbGwodGhpcywgITApLCBiID0gZi5sZW5ndGg7IGItLTspIGZbYl0uZWxlbSA9PT0gdGhpcyAmJiBmW2JdLnF1ZXVlID09PSBhICYmIChmW2JdLmFuaW0uc3RvcCghMCksIGYuc3BsaWNlKGIsIDEpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGIgPSAwOyBnID4gYjsgYisrKSBkW2JdICYmIGRbYl0uZmluaXNoICYmIGRbYl0uZmluaXNoLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGMuZmluaXNoCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSksIHIuZWFjaChbInRvZ2dsZSIsICJzaG93IiwgImhpZGUiXSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYyA9IHIuZm5bYl07CiAgICAgICAgICAgIHIuZm5bYl0gPSBmdW5jdGlvbihhLCBkLCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBhIHx8ICJib29sZWFuIiA9PSB0eXBlb2YgYSA/IGMuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXMuYW5pbWF0ZShjYihiLCAhMCksIGEsIGQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgci5lYWNoKHsKICAgICAgICAgICAgc2xpZGVEb3duOiBjYigic2hvdyIpLAogICAgICAgICAgICBzbGlkZVVwOiBjYigiaGlkZSIpLAogICAgICAgICAgICBzbGlkZVRvZ2dsZTogY2IoInRvZ2dsZSIpLAogICAgICAgICAgICBmYWRlSW46IHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6ICJzaG93IgogICAgICAgICAgICB9LAogICAgICAgICAgICBmYWRlT3V0OiB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAiaGlkZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmFkZVRvZ2dsZTogewogICAgICAgICAgICAgICAgb3BhY2l0eTogInRvZ2dsZSIKICAgICAgICAgICAgfQogICAgICAgIH0sIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgci5mblthXSA9IGZ1bmN0aW9uKGEsIGMsIGQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoYiwgYSwgYywgZCkKICAgICAgICAgICAgfQogICAgICAgIH0pLCByLnRpbWVycyA9IFtdLCByLmZ4LnRpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGEsIGIgPSAwLAogICAgICAgICAgICAgICAgYyA9IHIudGltZXJzOwogICAgICAgICAgICBmb3IgKFlhID0gci5ub3coKTsgYiA8IGMubGVuZ3RoOyBiKyspIGEgPSBjW2JdLCBhKCkgfHwgY1tiXSAhPT0gYSB8fCBjLnNwbGljZShiLS0sIDEpOwogICAgICAgICAgICBjLmxlbmd0aCB8fCByLmZ4LnN0b3AoKSwgWWEgPSB2b2lkIDAKICAgICAgICB9LCByLmZ4LnRpbWVyID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICByLnRpbWVycy5wdXNoKGEpLCBhKCkgPyByLmZ4LnN0YXJ0KCkgOiByLnRpbWVycy5wb3AoKQogICAgICAgIH0sIHIuZnguaW50ZXJ2YWwgPSAxMywgci5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBaYSB8fCAoWmEgPSBhLnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IGEucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFiKSA6IGEuc2V0SW50ZXJ2YWwoci5meC50aWNrLCByLmZ4LmludGVydmFsKSkKICAgICAgICB9LCByLmZ4LnN0b3AgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYS5jYW5jZWxBbmltYXRpb25GcmFtZSA/IGEuY2FuY2VsQW5pbWF0aW9uRnJhbWUoWmEpIDogYS5jbGVhckludGVydmFsKFphKSwgWmEgPSBudWxsCiAgICAgICAgfSwgci5meC5zcGVlZHMgPSB7CiAgICAgICAgICAgIHNsb3c6IDYwMCwKICAgICAgICAgICAgZmFzdDogMjAwLAogICAgICAgICAgICBfZGVmYXVsdDogNDAwCiAgICAgICAgfSwgci5mbi5kZWxheSA9IGZ1bmN0aW9uKGIsIGMpIHsKICAgICAgICAgICAgcmV0dXJuIGIgPSByLmZ4ID8gci5meC5zcGVlZHNbYl0gfHwgYiA6IGIsIGMgPSBjIHx8ICJmeCIsIHRoaXMucXVldWUoYywgZnVuY3Rpb24oYywgZCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhLnNldFRpbWVvdXQoYywgYik7CiAgICAgICAgICAgICAgICBkLnN0b3AgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBhLmNsZWFyVGltZW91dChlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLAogICAgICAgICAgICAgICAgYiA9IGQuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksCiAgICAgICAgICAgICAgICBjID0gYi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTsKICAgICAgICAgICAgYS50eXBlID0gImNoZWNrYm94Iiwgby5jaGVja09uID0gIiIgIT09IGEudmFsdWUsIG8ub3B0U2VsZWN0ZWQgPSBjLnNlbGVjdGVkLCBhID0gZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLCBhLnZhbHVlID0gInQiLCBhLnR5cGUgPSAicmFkaW8iLCBvLnJhZGlvVmFsdWUgPSAidCIgPT09IGEudmFsdWUKICAgICAgICB9KCk7CiAgICB2YXIgaGIsIGliID0gci5leHByLmF0dHJIYW5kbGU7CiAgICByLmZuLmV4dGVuZCh7CiAgICAgICAgYXR0cjogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gUyh0aGlzLCByLmF0dHIsIGEsIGIsIGFyZ3VtZW50cy5sZW5ndGggPiAxKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgci5yZW1vdmVBdHRyKHRoaXMsIGEpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIHIuZXh0ZW5kKHsKICAgICAgICBhdHRyOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlLCBmID0gYS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IGYgJiYgOCAhPT0gZiAmJiAyICE9PSBmKSByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIGEuZ2V0QXR0cmlidXRlID8gci5wcm9wKGEsIGIsIGMpIDogKDEgPT09IGYgJiYgci5pc1hNTERvYyhhKSB8fCAoZSA9IHIuYXR0ckhvb2tzW2IudG9Mb3dlckNhc2UoKV0gfHwgKHIuZXhwci5tYXRjaC5ib29sLnRlc3QoYikgPyBoYiA6IHZvaWQgMCkpLCB2b2lkIDAgIT09IGMgPyBudWxsID09PSBjID8gdm9pZCByLnJlbW92ZUF0dHIoYSwgYikgOiBlICYmICJzZXQiIGluIGUgJiYgdm9pZCAwICE9PSAoZCA9IGUuc2V0KGEsIGMsIGIpKSA/IGQgOiAoYS5zZXRBdHRyaWJ1dGUoYiwgYyArICIiKSwgYykgOiBlICYmICJnZXQiIGluIGUgJiYgbnVsbCAhPT0gKGQgPSBlLmdldChhLCBiKSkgPyBkIDogKGQgPSByLmZpbmQuYXR0cihhLCBiKSwgbnVsbCA9PSBkID8gdm9pZCAwIDogZCkpCiAgICAgICAgfSwKICAgICAgICBhdHRySG9va3M6IHsKICAgICAgICAgICAgdHlwZTogewogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFvLnJhZGlvVmFsdWUgJiYgInJhZGlvIiA9PT0gYiAmJiByLm5vZGVOYW1lKGEsICJpbnB1dCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgYiksIGMgJiYgKGEudmFsdWUgPSBjKSwgYgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYywgZCA9IDAsCiAgICAgICAgICAgICAgICBlID0gYiAmJiBiLm1hdGNoKEspOwogICAgICAgICAgICBpZiAoZSAmJiAxID09PSBhLm5vZGVUeXBlKQogICAgICAgICAgICAgICAgd2hpbGUgKGMgPSBlW2QrK10pIGEucmVtb3ZlQXR0cmlidXRlKGMpOwogICAgICAgIH0KICAgIH0pLCBoYiA9IHsKICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEsIGIsIGMpIHsKICAgICAgICAgICAgcmV0dXJuIGIgPT09ICExID8gci5yZW1vdmVBdHRyKGEsIGMpIDogYS5zZXRBdHRyaWJ1dGUoYywgYyksIGMKICAgICAgICB9CiAgICB9LCByLmVhY2goci5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IGliW2JdIHx8IHIuZmluZC5hdHRyOwogICAgICAgIGliW2JdID0gZnVuY3Rpb24oYSwgYiwgZCkgewogICAgICAgICAgICB2YXIgZSwgZiwgZyA9IGIudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIGQgfHwgKGYgPSBpYltnXSwgaWJbZ10gPSBlLCBlID0gbnVsbCAhPSBjKGEsIGIsIGQpID8gZyA6IG51bGwsIGliW2ddID0gZiksIGUKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBqYiA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksCiAgICAgICAga2IgPSAvXig/OmF8YXJlYSkkL2k7CiAgICByLmZuLmV4dGVuZCh7CiAgICAgICAgcHJvcDogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gUyh0aGlzLCByLnByb3AsIGEsIGIsIGFyZ3VtZW50cy5sZW5ndGggPiAxKQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlUHJvcDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNbci5wcm9wRml4W2FdIHx8IGFdCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIHIuZXh0ZW5kKHsKICAgICAgICBwcm9wOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlLCBmID0gYS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IGYgJiYgOCAhPT0gZiAmJiAyICE9PSBmKSByZXR1cm4gMSA9PT0gZiAmJiByLmlzWE1MRG9jKGEpIHx8IChiID0gci5wcm9wRml4W2JdIHx8IGIsIGUgPSByLnByb3BIb29rc1tiXSksIHZvaWQgMCAhPT0gYyA/IGUgJiYgInNldCIgaW4gZSAmJiB2b2lkIDAgIT09IChkID0gZS5zZXQoYSwgYywgYikpID8gZCA6IGFbYl0gPSBjIDogZSAmJiAiZ2V0IiBpbiBlICYmIG51bGwgIT09IChkID0gZS5nZXQoYSwgYikpID8gZCA6IGFbYl0KICAgICAgICB9LAogICAgICAgIHByb3BIb29rczogewogICAgICAgICAgICB0YWJJbmRleDogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSByLmZpbmQuYXR0cihhLCAidGFiaW5kZXgiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiA/IHBhcnNlSW50KGIsIDEwKSA6IGpiLnRlc3QoYS5ub2RlTmFtZSkgfHwga2IudGVzdChhLm5vZGVOYW1lKSAmJiBhLmhyZWYgPyAwIDogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvcEZpeDogewogICAgICAgICAgICAiZm9yIjogImh0bWxGb3IiLAogICAgICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1lIgogICAgICAgIH0KICAgIH0pLCBvLm9wdFNlbGVjdGVkIHx8IChyLnByb3BIb29rcy5zZWxlY3RlZCA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSBhLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHJldHVybiBiICYmIGIucGFyZW50Tm9kZSAmJiBiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbAogICAgICAgIH0sCiAgICAgICAgc2V0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiID0gYS5wYXJlbnROb2RlOwogICAgICAgICAgICBiICYmIChiLnNlbGVjdGVkSW5kZXgsIGIucGFyZW50Tm9kZSAmJiBiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkKICAgICAgICB9CiAgICB9KSwgci5lYWNoKFsidGFiSW5kZXgiLCAicmVhZE9ubHkiLCAibWF4TGVuZ3RoIiwgImNlbGxTcGFjaW5nIiwgImNlbGxQYWRkaW5nIiwgInJvd1NwYW4iLCAiY29sU3BhbiIsICJ1c2VNYXAiLCAiZnJhbWVCb3JkZXIiLCAiY29udGVudEVkaXRhYmxlIl0sIGZ1bmN0aW9uKCkgewogICAgICAgIHIucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldID0gdGhpcwogICAgfSk7CiAgICB2YXIgbGIgPSAvW1x0XHJcblxmXS9nOwoKICAgIGZ1bmN0aW9uIG1iKGEpIHsKICAgICAgICByZXR1cm4gYS5nZXRBdHRyaWJ1dGUgJiYgYS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIKICAgIH0KICAgIHIuZm4uZXh0ZW5kKHsKICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiwgYywgZCwgZSwgZiwgZywgaCwgaSA9IDA7CiAgICAgICAgICAgIGlmIChyLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgcih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcywgYiwgbWIodGhpcykpKQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBhICYmIGEpIHsKICAgICAgICAgICAgICAgIGIgPSBhLm1hdGNoKEspIHx8IFtdOwogICAgICAgICAgICAgICAgd2hpbGUgKGMgPSB0aGlzW2krK10pCiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBtYihjKSwgZCA9IDEgPT09IGMubm9kZVR5cGUgJiYgKCIgIiArIGUgKyAiICIpLnJlcGxhY2UobGIsICIgIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChmID0gYltnKytdKSBkLmluZGV4T2YoIiAiICsgZiArICIgIikgPCAwICYmIChkICs9IGYgKyAiICIpOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gci50cmltKGQpLCBlICE9PSBoICYmIGMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiwgYywgZCwgZSwgZiwgZywgaCwgaSA9IDA7CiAgICAgICAgICAgIGlmIChyLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgcih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcywgYiwgbWIodGhpcykpKQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsICIiKTsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBhICYmIGEpIHsKICAgICAgICAgICAgICAgIGIgPSBhLm1hdGNoKEspIHx8IFtdOwogICAgICAgICAgICAgICAgd2hpbGUgKGMgPSB0aGlzW2krK10pCiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBtYihjKSwgZCA9IDEgPT09IGMubm9kZVR5cGUgJiYgKCIgIiArIGUgKyAiICIpLnJlcGxhY2UobGIsICIgIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChmID0gYltnKytdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGQuaW5kZXhPZigiICIgKyBmICsgIiAiKSA+IC0xKSBkID0gZC5yZXBsYWNlKCIgIiArIGYgKyAiICIsICIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSByLnRyaW0oZCksIGUgIT09IGggJiYgYy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgaCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHZhciBjID0gdHlwZW9mIGE7CiAgICAgICAgICAgIHJldHVybiAiYm9vbGVhbiIgPT0gdHlwZW9mIGIgJiYgInN0cmluZyIgPT09IGMgPyBiID8gdGhpcy5hZGRDbGFzcyhhKSA6IHRoaXMucmVtb3ZlQ2xhc3MoYSkgOiByLmlzRnVuY3Rpb24oYSkgPyB0aGlzLmVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgcih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcywgYywgbWIodGhpcyksIGIpLCBiKQogICAgICAgICAgICB9KSA6IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBiLCBkLCBlLCBmOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09PSBjKSB7CiAgICAgICAgICAgICAgICAgICAgZCA9IDAsIGUgPSByKHRoaXMpLCBmID0gYS5tYXRjaChLKSB8fCBbXTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IGZbZCsrXSkgZS5oYXNDbGFzcyhiKSA/IGUucmVtb3ZlQ2xhc3MoYikgOiBlLmFkZENsYXNzKGIpCiAgICAgICAgICAgICAgICB9IGVsc2Ugdm9pZCAwICE9PSBhICYmICJib29sZWFuIiAhPT0gYyB8fCAoYiA9IG1iKHRoaXMpLCBiICYmIFYuc2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgYiksIHRoaXMuc2V0QXR0cmlidXRlICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGIgfHwgYSA9PT0gITEgPyAiIiA6IFYuZ2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIpKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIsIGMsIGQgPSAwOwogICAgICAgICAgICBiID0gIiAiICsgYSArICIgIjsKICAgICAgICAgICAgd2hpbGUgKGMgPSB0aGlzW2QrK10pCiAgICAgICAgICAgICAgICBpZiAoMSA9PT0gYy5ub2RlVHlwZSAmJiAoIiAiICsgbWIoYykgKyAiICIpLnJlcGxhY2UobGIsICIgIikuaW5kZXhPZihiKSA+IC0xKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIG5iID0gL1xyL2csCiAgICAgICAgb2IgPSAvW1x4MjBcdFxyXG5cZl0rL2c7CiAgICByLmZuLmV4dGVuZCh7CiAgICAgICAgdmFsOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHZhciBiLCBjLCBkLCBlID0gdGhpc1swXTsgewogICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkID0gci5pc0Z1bmN0aW9uKGEpLCB0aGlzLmVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICAgIDEgPT09IHRoaXMubm9kZVR5cGUgJiYgKGUgPSBkID8gYS5jYWxsKHRoaXMsIGMsIHIodGhpcykudmFsKCkpIDogYSwgbnVsbCA9PSBlID8gZSA9ICIiIDogIm51bWJlciIgPT0gdHlwZW9mIGUgPyBlICs9ICIiIDogci5pc0FycmF5KGUpICYmIChlID0gci5tYXAoZSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBhID8gIiIgOiBhICsgIiIKICAgICAgICAgICAgICAgICAgICB9KSksIGIgPSByLnZhbEhvb2tzW3RoaXMudHlwZV0gfHwgci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLCBiICYmICJzZXQiIGluIGIgJiYgdm9pZCAwICE9PSBiLnNldCh0aGlzLCBlLCAidmFsdWUiKSB8fCAodGhpcy52YWx1ZSA9IGUpKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAoZSkgcmV0dXJuIGIgPSByLnZhbEhvb2tzW2UudHlwZV0gfHwgci52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLCBiICYmICJnZXQiIGluIGIgJiYgdm9pZCAwICE9PSAoYyA9IGIuZ2V0KGUsICJ2YWx1ZSIpKSA/IGMgOiAoYyA9IGUudmFsdWUsICJzdHJpbmciID09IHR5cGVvZiBjID8gYy5yZXBsYWNlKG5iLCAiIikgOiBudWxsID09IGMgPyAiIiA6IGMpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgci5leHRlbmQoewogICAgICAgIHZhbEhvb2tzOiB7CiAgICAgICAgICAgIG9wdGlvbjogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSByLmZpbmQuYXR0cihhLCAidmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBiID8gYiA6IHIudHJpbShyLnRleHQoYSkpLnJlcGxhY2Uob2IsICIgIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2VsZWN0OiB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBiLCBjLCBkID0gYS5vcHRpb25zLCBlID0gYS5zZWxlY3RlZEluZGV4LCBmID0gInNlbGVjdC1vbmUiID09PSBhLnR5cGUsIGcgPSBmID8gbnVsbCA6IFtdLCBoID0gZiA/IGUgKyAxIDogZC5sZW5ndGgsIGkgPSAwID4gZSA/IGggOiBmID8gZSA6IDA7IGggPiBpOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID0gZFtpXSwgKGMuc2VsZWN0ZWQgfHwgaSA9PT0gZSkgJiYgIWMuZGlzYWJsZWQgJiYgKCFjLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIXIubm9kZU5hbWUoYy5wYXJlbnROb2RlLCAib3B0Z3JvdXAiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiID0gcihjKS52YWwoKSwgZikgcmV0dXJuIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLnB1c2goYikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBnCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMsIGQsIGUgPSBhLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLm1ha2VBcnJheShiKSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChnLS0pIGQgPSBlW2ddLCAoZC5zZWxlY3RlZCA9IHIuaW5BcnJheShyLnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksIGYpID4gLTEpICYmIChjID0gITApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBjIHx8IChhLnNlbGVjdGVkSW5kZXggPSAtMSksIGYKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCByLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbigpIHsKICAgICAgICByLnZhbEhvb2tzW3RoaXNdID0gewogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIHJldHVybiByLmlzQXJyYXkoYikgPyBhLmNoZWNrZWQgPSByLmluQXJyYXkocihhKS52YWwoKSwgYikgPiAtMSA6IHZvaWQgMAogICAgICAgICAgICB9CiAgICAgICAgfSwgby5jaGVja09uIHx8IChyLnZhbEhvb2tzW3RoaXNdLmdldCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpID8gIm9uIiA6IGEudmFsdWUKICAgICAgICB9KQogICAgfSk7CiAgICB2YXIgcGIgPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87CiAgICByLmV4dGVuZChyLmV2ZW50LCB7CiAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oYiwgYywgZSwgZikgewogICAgICAgICAgICB2YXIgZywgaCwgaSwgaiwgaywgbSwgbiwgbyA9IFtlIHx8IGRdLAogICAgICAgICAgICAgICAgcCA9IGwuY2FsbChiLCAidHlwZSIpID8gYi50eXBlIDogYiwKICAgICAgICAgICAgICAgIHEgPSBsLmNhbGwoYiwgIm5hbWVzcGFjZSIpID8gYi5uYW1lc3BhY2Uuc3BsaXQoIi4iKSA6IFtdOwogICAgICAgICAgICBpZiAoaCA9IGkgPSBlID0gZSB8fCBkLCAzICE9PSBlLm5vZGVUeXBlICYmIDggIT09IGUubm9kZVR5cGUgJiYgIXBiLnRlc3QocCArIHIuZXZlbnQudHJpZ2dlcmVkKSAmJiAocC5pbmRleE9mKCIuIikgPiAtMSAmJiAocSA9IHAuc3BsaXQoIi4iKSwgcCA9IHEuc2hpZnQoKSwgcS5zb3J0KCkpLCBrID0gcC5pbmRleE9mKCI6IikgPCAwICYmICJvbiIgKyBwLCBiID0gYltyLmV4cGFuZG9dID8gYiA6IG5ldyByLkV2ZW50KHAsICJvYmplY3QiID09IHR5cGVvZiBiICYmIGIpLCBiLmlzVHJpZ2dlciA9IGYgPyAyIDogMywgYi5uYW1lc3BhY2UgPSBxLmpvaW4oIi4iKSwgYi5ybmFtZXNwYWNlID0gYi5uYW1lc3BhY2UgPyBuZXcgUmVnRXhwKCIoXnxcXC4pIiArIHEuam9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSA6IG51bGwsIGIucmVzdWx0ID0gdm9pZCAwLCBiLnRhcmdldCB8fCAoYi50YXJnZXQgPSBlKSwgYyA9IG51bGwgPT0gYyA/IFtiXSA6IHIubWFrZUFycmF5KGMsIFtiXSksIG4gPSByLmV2ZW50LnNwZWNpYWxbcF0gfHwge30sIGYgfHwgIW4udHJpZ2dlciB8fCBuLnRyaWdnZXIuYXBwbHkoZSwgYykgIT09ICExKSkgewogICAgICAgICAgICAgICAgaWYgKCFmICYmICFuLm5vQnViYmxlICYmICFyLmlzV2luZG93KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gbi5kZWxlZ2F0ZVR5cGUgfHwgcCwgcGIudGVzdChqICsgcCkgfHwgKGggPSBoLnBhcmVudE5vZGUpOyBoOyBoID0gaC5wYXJlbnROb2RlKSBvLnB1c2goaCksIGkgPSBoOwogICAgICAgICAgICAgICAgICAgIGkgPT09IChlLm93bmVyRG9jdW1lbnQgfHwgZCkgJiYgby5wdXNoKGkuZGVmYXVsdFZpZXcgfHwgaS5wYXJlbnRXaW5kb3cgfHwgYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKChoID0gb1tnKytdKSAmJiAhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSBiLnR5cGUgPSBnID4gMSA/IGogOiBuLmJpbmRUeXBlIHx8IHAsIG0gPSAoVi5nZXQoaCwgImV2ZW50cyIpIHx8IHt9KVtiLnR5cGVdICYmIFYuZ2V0KGgsICJoYW5kbGUiKSwgbSAmJiBtLmFwcGx5KGgsIGMpLCBtID0gayAmJiBoW2tdLCBtICYmIG0uYXBwbHkgJiYgVChoKSAmJiAoYi5yZXN1bHQgPSBtLmFwcGx5KGgsIGMpLCBiLnJlc3VsdCA9PT0gITEgJiYgYi5wcmV2ZW50RGVmYXVsdCgpKTsKICAgICAgICAgICAgICAgIHJldHVybiBiLnR5cGUgPSBwLCBmIHx8IGIuaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgbi5fZGVmYXVsdCAmJiBuLl9kZWZhdWx0LmFwcGx5KG8ucG9wKCksIGMpICE9PSAhMSB8fCAhVChlKSB8fCBrICYmIHIuaXNGdW5jdGlvbihlW3BdKSAmJiAhci5pc1dpbmRvdyhlKSAmJiAoaSA9IGVba10sIGkgJiYgKGVba10gPSBudWxsKSwgci5ldmVudC50cmlnZ2VyZWQgPSBwLCBlW3BdKCksIHIuZXZlbnQudHJpZ2dlcmVkID0gdm9pZCAwLCBpICYmIChlW2tdID0gaSkpLCBiLnJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzaW11bGF0ZTogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICB2YXIgZCA9IHIuZXh0ZW5kKG5ldyByLkV2ZW50LCBjLCB7CiAgICAgICAgICAgICAgICB0eXBlOiBhLAogICAgICAgICAgICAgICAgaXNTaW11bGF0ZWQ6ICEwCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByLmV2ZW50LnRyaWdnZXIoZCwgbnVsbCwgYikKICAgICAgICB9CiAgICB9KSwgci5mbi5leHRlbmQoewogICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHIuZXZlbnQudHJpZ2dlcihhLCBiLCB0aGlzKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMgPSB0aGlzWzBdOwogICAgICAgICAgICByZXR1cm4gYyA/IHIuZXZlbnQudHJpZ2dlcihhLCBiLCBjLCAhMCkgOiB2b2lkIDAKICAgICAgICB9CiAgICB9KSwgci5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgci5mbltiXSA9IGZ1bmN0aW9uKGEsIGMpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gdGhpcy5vbihiLCBudWxsLCBhLCBjKSA6IHRoaXMudHJpZ2dlcihiKQogICAgICAgIH0KICAgIH0pLCByLmZuLmV4dGVuZCh7CiAgICAgICAgaG92ZXI6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGIgfHwgYSkKICAgICAgICB9CiAgICB9KSwgby5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gYSwgby5mb2N1c2luIHx8IHIuZWFjaCh7CiAgICAgICAgZm9jdXM6ICJmb2N1c2luIiwKICAgICAgICBibHVyOiAiZm9jdXNvdXQiCiAgICB9LCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgdmFyIGMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHIuZXZlbnQuc2ltdWxhdGUoYiwgYS50YXJnZXQsIHIuZXZlbnQuZml4KGEpKQogICAgICAgIH07CiAgICAgICAgci5ldmVudC5zcGVjaWFsW2JdID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIGUgPSBWLmFjY2VzcyhkLCBiKTsKICAgICAgICAgICAgICAgIGUgfHwgZC5hZGRFdmVudExpc3RlbmVyKGEsIGMsICEwKSwgVi5hY2Nlc3MoZCwgYiwgKGUgfHwgMCkgKyAxKQogICAgICAgICAgICB9LAogICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIGUgPSBWLmFjY2VzcyhkLCBiKSAtIDE7CiAgICAgICAgICAgICAgICBlID8gVi5hY2Nlc3MoZCwgYiwgZSkgOiAoZC5yZW1vdmVFdmVudExpc3RlbmVyKGEsIGMsICEwKSwgVi5yZW1vdmUoZCwgYikpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBxYiA9IGEubG9jYXRpb24sCiAgICAgICAgcmIgPSByLm5vdygpLAogICAgICAgIHNiID0gL1w/LzsKICAgIHIucGFyc2VYTUwgPSBmdW5jdGlvbihiKSB7CiAgICAgICAgdmFyIGM7CiAgICAgICAgaWYgKCFiIHx8ICJzdHJpbmciICE9IHR5cGVvZiBiKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkgewogICAgICAgICAgICBjID0gKG5ldyBhLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGIsICJ0ZXh0L3htbCIpCiAgICAgICAgfSBjYXRjaCAoZCkgewogICAgICAgICAgICBjID0gdm9pZCAwCiAgICAgICAgfQogICAgICAgIHJldHVybiBjICYmICFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCB8fCByLmVycm9yKCJJbnZhbGlkIFhNTDogIiArIGIpLCBjCiAgICB9OwogICAgdmFyIHRiID0gL1xbXF0kLywKICAgICAgICB1YiA9IC9ccj9cbi9nLAogICAgICAgIHZiID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLAogICAgICAgIHdiID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOwoKICAgIGZ1bmN0aW9uIHhiKGEsIGIsIGMsIGQpIHsKICAgICAgICB2YXIgZTsKICAgICAgICBpZiAoci5pc0FycmF5KGIpKSByLmVhY2goYiwgZnVuY3Rpb24oYiwgZSkgewogICAgICAgICAgICBjIHx8IHRiLnRlc3QoYSkgPyBkKGEsIGUpIDogeGIoYSArICJbIiArICgib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBudWxsICE9IGUgPyBiIDogIiIpICsgIl0iLCBlLCBjLCBkKQogICAgICAgIH0pOwogICAgICAgIGVsc2UgaWYgKGMgfHwgIm9iamVjdCIgIT09IHIudHlwZShiKSkgZChhLCBiKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGZvciAoZSBpbiBiKSB4YihhICsgIlsiICsgZSArICJdIiwgYltlXSwgYywgZCkKICAgIH0KICAgIHIucGFyYW0gPSBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgdmFyIGMsIGQgPSBbXSwKICAgICAgICAgICAgZSA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gci5pc0Z1bmN0aW9uKGIpID8gYigpIDogYjsKICAgICAgICAgICAgICAgIGRbZC5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGEpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KG51bGwgPT0gYyA/ICIiIDogYykKICAgICAgICAgICAgfTsKICAgICAgICBpZiAoci5pc0FycmF5KGEpIHx8IGEuanF1ZXJ5ICYmICFyLmlzUGxhaW5PYmplY3QoYSkpIHIuZWFjaChhLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZSh0aGlzLm5hbWUsIHRoaXMudmFsdWUpCiAgICAgICAgfSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKGMgaW4gYSkgeGIoYywgYVtjXSwgYiwgZSk7CiAgICAgICAgcmV0dXJuIGQuam9pbigiJiIpCiAgICB9LCByLmZuLmV4dGVuZCh7CiAgICAgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHIucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQogICAgICAgIH0sCiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHIucHJvcCh0aGlzLCAiZWxlbWVudHMiKTsKICAgICAgICAgICAgICAgIHJldHVybiBhID8gci5tYWtlQXJyYXkoYSkgOiB0aGlzCiAgICAgICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSAmJiAhcih0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgd2IudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAhdmIudGVzdChhKSAmJiAodGhpcy5jaGVja2VkIHx8ICFoYS50ZXN0KGEpKQogICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgdmFyIGMgPSByKHRoaXMpLnZhbCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYyA/IG51bGwgOiByLmlzQXJyYXkoYykgPyByLm1hcChjLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYS5yZXBsYWNlKHViLCAiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkgOiB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogYi5uYW1lLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjLnJlcGxhY2UodWIsICJcclxuIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuZ2V0KCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciB5YiA9IC8lMjAvZywKICAgICAgICB6YiA9IC8jLiokLywKICAgICAgICBBYiA9IC8oWz8mXSlfPVteJl0qLywKICAgICAgICBCYiA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sCiAgICAgICAgQ2IgPSAvXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKICAgICAgICBEYiA9IC9eKD86R0VUfEhFQUQpJC8sCiAgICAgICAgRWIgPSAvXlwvXC8vLAogICAgICAgIEZiID0ge30sCiAgICAgICAgR2IgPSB7fSwKICAgICAgICBIYiA9ICIqLyIuY29uY2F0KCIqIiksCiAgICAgICAgSWIgPSBkLmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgIEliLmhyZWYgPSBxYi5ocmVmOwoKICAgIGZ1bmN0aW9uIEpiKGEpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAic3RyaW5nIiAhPSB0eXBlb2YgYiAmJiAoYyA9IGIsIGIgPSAiKiIpOwogICAgICAgICAgICB2YXIgZCwgZSA9IDAsCiAgICAgICAgICAgICAgICBmID0gYi50b0xvd2VyQ2FzZSgpLm1hdGNoKEspIHx8IFtdOwogICAgICAgICAgICBpZiAoci5pc0Z1bmN0aW9uKGMpKQogICAgICAgICAgICAgICAgd2hpbGUgKGQgPSBmW2UrK10pICIrIiA9PT0gZFswXSA/IChkID0gZC5zbGljZSgxKSB8fCAiKiIsIChhW2RdID0gYVtkXSB8fCBbXSkudW5zaGlmdChjKSkgOiAoYVtkXSA9IGFbZF0gfHwgW10pLnB1c2goYykKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gS2IoYSwgYiwgYywgZCkgewogICAgICAgIHZhciBlID0ge30sCiAgICAgICAgICAgIGYgPSBhID09PSBHYjsKCiAgICAgICAgZnVuY3Rpb24gZyhoKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICByZXR1cm4gZVtoXSA9ICEwLCByLmVhY2goYVtoXSB8fCBbXSwgZnVuY3Rpb24oYSwgaCkgewogICAgICAgICAgICAgICAgdmFyIGogPSBoKGIsIGMsIGQpOwogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBqIHx8IGYgfHwgZVtqXSA/IGYgPyAhKGkgPSBqKSA6IHZvaWQgMCA6IChiLmRhdGFUeXBlcy51bnNoaWZ0KGopLCBnKGopLCAhMSkKICAgICAgICAgICAgfSksIGkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGcoYi5kYXRhVHlwZXNbMF0pIHx8ICFlWyIqIl0gJiYgZygiKiIpCiAgICB9CgogICAgZnVuY3Rpb24gTGIoYSwgYikgewogICAgICAgIHZhciBjLCBkLCBlID0gci5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307CiAgICAgICAgZm9yIChjIGluIGIpIHZvaWQgMCAhPT0gYltjXSAmJiAoKGVbY10gPyBhIDogZCB8fCAoZCA9IHt9KSlbY10gPSBiW2NdKTsKICAgICAgICByZXR1cm4gZCAmJiByLmV4dGVuZCghMCwgYSwgZCksIGEKICAgIH0KCiAgICBmdW5jdGlvbiBNYihhLCBiLCBjKSB7CiAgICAgICAgdmFyIGQsIGUsIGYsIGcsIGggPSBhLmNvbnRlbnRzLAogICAgICAgICAgICBpID0gYS5kYXRhVHlwZXM7CiAgICAgICAgd2hpbGUgKCIqIiA9PT0gaVswXSkgaS5zaGlmdCgpLCB2b2lkIDAgPT09IGQgJiYgKGQgPSBhLm1pbWVUeXBlIHx8IGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTsKICAgICAgICBpZiAoZCkKICAgICAgICAgICAgZm9yIChlIGluIGgpCiAgICAgICAgICAgICAgICBpZiAoaFtlXSAmJiBoW2VdLnRlc3QoZCkpIHsKICAgICAgICAgICAgICAgICAgICBpLnVuc2hpZnQoZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICBpZiAoaVswXSBpbiBjKSBmID0gaVswXTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yIChlIGluIGMpIHsKICAgICAgICAgICAgICAgIGlmICghaVswXSB8fCBhLmNvbnZlcnRlcnNbZSArICIgIiArIGlbMF1dKSB7CiAgICAgICAgICAgICAgICAgICAgZiA9IGU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGcgfHwgKGcgPSBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGYgPSBmIHx8IGcKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGYgPyAoZiAhPT0gaVswXSAmJiBpLnVuc2hpZnQoZiksIGNbZl0pIDogdm9pZCAwCiAgICB9CgogICAgZnVuY3Rpb24gTmIoYSwgYiwgYywgZCkgewogICAgICAgIHZhciBlLCBmLCBnLCBoLCBpLCBqID0ge30sCiAgICAgICAgICAgIGsgPSBhLmRhdGFUeXBlcy5zbGljZSgpOwogICAgICAgIGlmIChrWzFdKQogICAgICAgICAgICBmb3IgKGcgaW4gYS5jb252ZXJ0ZXJzKSBqW2cudG9Mb3dlckNhc2UoKV0gPSBhLmNvbnZlcnRlcnNbZ107CiAgICAgICAgZiA9IGsuc2hpZnQoKTsKICAgICAgICB3aGlsZSAoZikKICAgICAgICAgICAgaWYgKGEucmVzcG9uc2VGaWVsZHNbZl0gJiYgKGNbYS5yZXNwb25zZUZpZWxkc1tmXV0gPSBiKSwgIWkgJiYgZCAmJiBhLmRhdGFGaWx0ZXIgJiYgKGIgPSBhLmRhdGFGaWx0ZXIoYiwgYS5kYXRhVHlwZSkpLCBpID0gZiwgZiA9IGsuc2hpZnQoKSkKICAgICAgICAgICAgICAgIGlmICgiKiIgPT09IGYpIGYgPSBpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoIioiICE9PSBpICYmIGkgIT09IGYpIHsKICAgICAgICAgICAgaWYgKGcgPSBqW2kgKyAiICIgKyBmXSB8fCBqWyIqICIgKyBmXSwgIWcpCiAgICAgICAgICAgICAgICBmb3IgKGUgaW4gaikKICAgICAgICAgICAgICAgICAgICBpZiAoaCA9IGUuc3BsaXQoIiAiKSwgaFsxXSA9PT0gZiAmJiAoZyA9IGpbaSArICIgIiArIGhbMF1dIHx8IGpbIiogIiArIGhbMF1dKSkgewogICAgICAgICAgICAgICAgICAgICAgICBnID09PSAhMCA/IGcgPSBqW2VdIDogaltlXSAhPT0gITAgJiYgKGYgPSBoWzBdLCBrLnVuc2hpZnQoaFsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGcgIT09ICEwKQogICAgICAgICAgICAgICAgaWYgKGcgJiYgYVsidGhyb3dzIl0pIGIgPSBnKGIpOwogICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgIGIgPSBnKGIpCiAgICAgICAgICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJwYXJzZXJlcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBnID8gbCA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIGkgKyAiIHRvICIgKyBmCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gewogICAgICAgICAgICBzdGF0ZTogInN1Y2Nlc3MiLAogICAgICAgICAgICBkYXRhOiBiCiAgICAgICAgfQogICAgfQogICAgci5leHRlbmQoewogICAgICAgIGFjdGl2ZTogMCwKICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAogICAgICAgIGV0YWc6IHt9LAogICAgICAgIGFqYXhTZXR0aW5nczogewogICAgICAgICAgICB1cmw6IHFiLmhyZWYsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBpc0xvY2FsOiBDYi50ZXN0KHFiLnByb3RvY29sKSwKICAgICAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICAgICAgcHJvY2Vzc0RhdGE6ICEwLAogICAgICAgICAgICBhc3luYzogITAsCiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IiwKICAgICAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICAgICAgIioiOiBIYiwKICAgICAgICAgICAgICAgIHRleHQ6ICJ0ZXh0L3BsYWluIiwKICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0bWwiLAogICAgICAgICAgICAgICAgeG1sOiAiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsCiAgICAgICAgICAgICAgICBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBjb250ZW50czogewogICAgICAgICAgICAgICAgeG1sOiAvXGJ4bWxcYi8sCiAgICAgICAgICAgICAgICBodG1sOiAvXGJodG1sLywKICAgICAgICAgICAgICAgIGpzb246IC9cYmpzb25cYi8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzcG9uc2VGaWVsZHM6IHsKICAgICAgICAgICAgICAgIHhtbDogInJlc3BvbnNlWE1MIiwKICAgICAgICAgICAgICAgIHRleHQ6ICJyZXNwb25zZVRleHQiLAogICAgICAgICAgICAgICAganNvbjogInJlc3BvbnNlSlNPTiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAgICAgIiogdGV4dCI6IFN0cmluZywKICAgICAgICAgICAgICAgICJ0ZXh0IGh0bWwiOiAhMCwKICAgICAgICAgICAgICAgICJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLAogICAgICAgICAgICAgICAgInRleHQgeG1sIjogci5wYXJzZVhNTAogICAgICAgICAgICB9LAogICAgICAgICAgICBmbGF0T3B0aW9uczogewogICAgICAgICAgICAgICAgdXJsOiAhMCwKICAgICAgICAgICAgICAgIGNvbnRleHQ6ICEwCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGFqYXhTZXR1cDogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gYiA/IExiKExiKGEsIHIuYWpheFNldHRpbmdzKSwgYikgOiBMYihyLmFqYXhTZXR0aW5ncywgYSkKICAgICAgICB9LAogICAgICAgIGFqYXhQcmVmaWx0ZXI6IEpiKEZiKSwKICAgICAgICBhamF4VHJhbnNwb3J0OiBKYihHYiksCiAgICAgICAgYWpheDogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgYiAmJiAoYyA9IGIsIGIgPSB2b2lkIDApLCBjID0gYyB8fCB7fTsKICAgICAgICAgICAgdmFyIGUsIGYsIGcsIGgsIGksIGosIGssIGwsIG0sIG4sIG8gPSByLmFqYXhTZXR1cCh7fSwgYyksCiAgICAgICAgICAgICAgICBwID0gby5jb250ZXh0IHx8IG8sCiAgICAgICAgICAgICAgICBxID0gby5jb250ZXh0ICYmIChwLm5vZGVUeXBlIHx8IHAuanF1ZXJ5KSA/IHIocCkgOiByLmV2ZW50LAogICAgICAgICAgICAgICAgcyA9IHIuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIHQgPSByLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwKICAgICAgICAgICAgICAgIHUgPSBvLnN0YXR1c0NvZGUgfHwge30sCiAgICAgICAgICAgICAgICB2ID0ge30sCiAgICAgICAgICAgICAgICB3ID0ge30sCiAgICAgICAgICAgICAgICB4ID0gImNhbmNlbGVkIiwKICAgICAgICAgICAgICAgIHkgPSB7CiAgICAgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogMCwKICAgICAgICAgICAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYiA9IEJiLmV4ZWMoZykpIGhbYlsxXS50b0xvd2VyQ2FzZSgpXSA9IGJbMl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBoW2EudG9Mb3dlckNhc2UoKV0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBiID8gbnVsbCA6IGIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrID8gZyA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gayAmJiAoYSA9IHdbYS50b0xvd2VyQ2FzZSgpXSA9IHdbYS50b0xvd2VyQ2FzZSgpXSB8fCBhLCB2W2FdID0gYiksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gayAmJiAoby5taW1lVHlwZSA9IGEpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrKSB5LmFsd2F5cyhhW3kuc3RhdHVzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChiIGluIGEpIHVbYl0gPSBbdVtiXSwgYVtiXV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEgfHwgeDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5hYm9ydChiKSwgQSgwLCBiKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmIChzLnByb21pc2UoeSksIG8udXJsID0gKChiIHx8IG8udXJsIHx8IHFiLmhyZWYpICsgIiIpLnJlcGxhY2UoRWIsIHFiLnByb3RvY29sICsgIi8vIiksIG8udHlwZSA9IGMubWV0aG9kIHx8IGMudHlwZSB8fCBvLm1ldGhvZCB8fCBvLnR5cGUsIG8uZGF0YVR5cGVzID0gKG8uZGF0YVR5cGUgfHwgIioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEspIHx8IFsiIl0sIG51bGwgPT0gby5jcm9zc0RvbWFpbikgewogICAgICAgICAgICAgICAgaiA9IGQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBqLmhyZWYgPSBvLnVybCwgai5ocmVmID0gai5ocmVmLCBvLmNyb3NzRG9tYWluID0gSWIucHJvdG9jb2wgKyAiLy8iICsgSWIuaG9zdCAhPSBqLnByb3RvY29sICsgIi8vIiArIGouaG9zdAogICAgICAgICAgICAgICAgfSBjYXRjaCAoeikgewogICAgICAgICAgICAgICAgICAgIG8uY3Jvc3NEb21haW4gPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChvLmRhdGEgJiYgby5wcm9jZXNzRGF0YSAmJiAic3RyaW5nIiAhPSB0eXBlb2Ygby5kYXRhICYmIChvLmRhdGEgPSByLnBhcmFtKG8uZGF0YSwgby50cmFkaXRpb25hbCkpLCBLYihGYiwgbywgYywgeSksIGspIHJldHVybiB5OwogICAgICAgICAgICBsID0gci5ldmVudCAmJiBvLmdsb2JhbCwgbCAmJiAwID09PSByLmFjdGl2ZSsrICYmIHIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksIG8udHlwZSA9IG8udHlwZS50b1VwcGVyQ2FzZSgpLCBvLmhhc0NvbnRlbnQgPSAhRGIudGVzdChvLnR5cGUpLCBmID0gby51cmwucmVwbGFjZSh6YiwgIiIpLCBvLmhhc0NvbnRlbnQgPyBvLmRhdGEgJiYgby5wcm9jZXNzRGF0YSAmJiAwID09PSAoby5jb250ZW50VHlwZSB8fCAiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgJiYgKG8uZGF0YSA9IG8uZGF0YS5yZXBsYWNlKHliLCAiKyIpKSA6IChuID0gby51cmwuc2xpY2UoZi5sZW5ndGgpLCBvLmRhdGEgJiYgKGYgKz0gKHNiLnRlc3QoZikgPyAiJiIgOiAiPyIpICsgby5kYXRhLCBkZWxldGUgby5kYXRhKSwgby5jYWNoZSA9PT0gITEgJiYgKGYgPSBmLnJlcGxhY2UoQWIsICIiKSwgbiA9IChzYi50ZXN0KGYpID8gIiYiIDogIj8iKSArICJfPSIgKyByYisrICsgbiksIG8udXJsID0gZiArIG4pLCBvLmlmTW9kaWZpZWQgJiYgKHIubGFzdE1vZGlmaWVkW2ZdICYmIHkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCByLmxhc3RNb2RpZmllZFtmXSksIHIuZXRhZ1tmXSAmJiB5LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLCByLmV0YWdbZl0pKSwgKG8uZGF0YSAmJiBvLmhhc0NvbnRlbnQgJiYgby5jb250ZW50VHlwZSAhPT0gITEgfHwgYy5jb250ZW50VHlwZSkgJiYgeS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBvLmNvbnRlbnRUeXBlKSwgeS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCBvLmRhdGFUeXBlc1swXSAmJiBvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1dID8gby5hY2NlcHRzW28uZGF0YVR5cGVzWzBdXSArICgiKiIgIT09IG8uZGF0YVR5cGVzWzBdID8gIiwgIiArIEhiICsgIjsgcT0wLjAxIiA6ICIiKSA6IG8uYWNjZXB0c1siKiJdKTsKICAgICAgICAgICAgZm9yIChtIGluIG8uaGVhZGVycykgeS5zZXRSZXF1ZXN0SGVhZGVyKG0sIG8uaGVhZGVyc1ttXSk7CiAgICAgICAgICAgIGlmIChvLmJlZm9yZVNlbmQgJiYgKG8uYmVmb3JlU2VuZC5jYWxsKHAsIHksIG8pID09PSAhMSB8fCBrKSkgcmV0dXJuIHkuYWJvcnQoKTsKICAgICAgICAgICAgaWYgKHggPSAiYWJvcnQiLCB0LmFkZChvLmNvbXBsZXRlKSwgeS5kb25lKG8uc3VjY2VzcyksIHkuZmFpbChvLmVycm9yKSwgZSA9IEtiKEdiLCBvLCBjLCB5KSkgewogICAgICAgICAgICAgICAgaWYgKHkucmVhZHlTdGF0ZSA9IDEsIGwgJiYgcS50cmlnZ2VyKCJhamF4U2VuZCIsIFt5LCBvXSksIGspIHJldHVybiB5OwogICAgICAgICAgICAgICAgby5hc3luYyAmJiBvLnRpbWVvdXQgPiAwICYmIChpID0gYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHkuYWJvcnQoInRpbWVvdXQiKQogICAgICAgICAgICAgICAgfSwgby50aW1lb3V0KSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGsgPSAhMSwgZS5zZW5kKHYsIEEpCiAgICAgICAgICAgICAgICB9IGNhdGNoICh6KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGspIHRocm93IHo7CiAgICAgICAgICAgICAgICAgICAgQSgtMSwgeikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIEEoLTEsICJObyBUcmFuc3BvcnQiKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIEEoYiwgYywgZCwgaCkgewogICAgICAgICAgICAgICAgdmFyIGosIG0sIG4sIHYsIHcsIHggPSBjOwogICAgICAgICAgICAgICAgayB8fCAoayA9ICEwLCBpICYmIGEuY2xlYXJUaW1lb3V0KGkpLCBlID0gdm9pZCAwLCBnID0gaCB8fCAiIiwgeS5yZWFkeVN0YXRlID0gYiA+IDAgPyA0IDogMCwgaiA9IGIgPj0gMjAwICYmIDMwMCA+IGIgfHwgMzA0ID09PSBiLCBkICYmICh2ID0gTWIobywgeSwgZCkpLCB2ID0gTmIobywgdiwgeSwgaiksIGogPyAoby5pZk1vZGlmaWVkICYmICh3ID0geS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLCB3ICYmIChyLmxhc3RNb2RpZmllZFtmXSA9IHcpLCB3ID0geS5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpLCB3ICYmIChyLmV0YWdbZl0gPSB3KSksIDIwNCA9PT0gYiB8fCAiSEVBRCIgPT09IG8udHlwZSA/IHggPSAibm9jb250ZW50IiA6IDMwNCA9PT0gYiA/IHggPSAibm90bW9kaWZpZWQiIDogKHggPSB2LnN0YXRlLCBtID0gdi5kYXRhLCBuID0gdi5lcnJvciwgaiA9ICFuKSkgOiAobiA9IHgsICFiICYmIHggfHwgKHggPSAiZXJyb3IiLCAwID4gYiAmJiAoYiA9IDApKSksIHkuc3RhdHVzID0gYiwgeS5zdGF0dXNUZXh0ID0gKGMgfHwgeCkgKyAiIiwgaiA/IHMucmVzb2x2ZVdpdGgocCwgW20sIHgsIHldKSA6IHMucmVqZWN0V2l0aChwLCBbeSwgeCwgbl0pLCB5LnN0YXR1c0NvZGUodSksIHUgPSB2b2lkIDAsIGwgJiYgcS50cmlnZ2VyKGogPyAiYWpheFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsIFt5LCBvLCBqID8gbSA6IG5dKSwgdC5maXJlV2l0aChwLCBbeSwgeF0pLCBsICYmIChxLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsIFt5LCBvXSksIC0tci5hY3RpdmUgfHwgci5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geQogICAgICAgIH0sCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4gci5nZXQoYSwgYiwgYywgImpzb24iKQogICAgICAgIH0sCiAgICAgICAgZ2V0U2NyaXB0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiByLmdldChhLCB2b2lkIDAsIGIsICJzY3JpcHQiKQogICAgICAgIH0KICAgIH0pLCByLmVhY2goWyJnZXQiLCAicG9zdCJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgcltiXSA9IGZ1bmN0aW9uKGEsIGMsIGQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHIuaXNGdW5jdGlvbihjKSAmJiAoZSA9IGUgfHwgZCwgZCA9IGMsIGMgPSB2b2lkIDApLCByLmFqYXgoci5leHRlbmQoewogICAgICAgICAgICAgICAgdXJsOiBhLAogICAgICAgICAgICAgICAgdHlwZTogYiwKICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBlLAogICAgICAgICAgICAgICAgZGF0YTogYywKICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGQKICAgICAgICAgICAgfSwgci5pc1BsYWluT2JqZWN0KGEpICYmIGEpKQogICAgICAgIH0KICAgIH0pLCByLl9ldmFsVXJsID0gZnVuY3Rpb24oYSkgewogICAgICAgIHJldHVybiByLmFqYXgoewogICAgICAgICAgICB1cmw6IGEsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGNhY2hlOiAhMCwKICAgICAgICAgICAgYXN5bmM6ICExLAogICAgICAgICAgICBnbG9iYWw6ICExLAogICAgICAgICAgICAidGhyb3dzIjogITAKICAgICAgICB9KQogICAgfSwgci5mbi5leHRlbmQoewogICAgICAgIHdyYXBBbGw6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGI7CiAgICAgICAgICAgIHJldHVybiB0aGlzWzBdICYmIChyLmlzRnVuY3Rpb24oYSkgJiYgKGEgPSBhLmNhbGwodGhpc1swXSkpLCBiID0gcihhLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSwgdGhpc1swXS5wYXJlbnROb2RlICYmIGIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLCBiLm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICAgICAgICAgIHdoaWxlIChhLmZpcnN0RWxlbWVudENoaWxkKSBhID0gYS5maXJzdEVsZW1lbnRDaGlsZDsKICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgIH0pLmFwcGVuZCh0aGlzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIHdyYXBJbm5lcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gci5pc0Z1bmN0aW9uKGEpID8gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgIHIodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLCBiKSkKICAgICAgICAgICAgfSkgOiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IHIodGhpcyksCiAgICAgICAgICAgICAgICAgICAgYyA9IGIuY29udGVudHMoKTsKICAgICAgICAgICAgICAgIGMubGVuZ3RoID8gYy53cmFwQWxsKGEpIDogYi5hcHBlbmQoYSkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIHdyYXA6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSByLmlzRnVuY3Rpb24oYSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgcih0aGlzKS53cmFwQWxsKGIgPyBhLmNhbGwodGhpcywgYykgOiBhKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgdW53cmFwOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpCiAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgfQogICAgfSksIHIuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICByZXR1cm4gIXIuZXhwci5wc2V1ZG9zLnZpc2libGUoYSkKICAgIH0sIHIuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgcmV0dXJuICEhKGEub2Zmc2V0V2lkdGggfHwgYS5vZmZzZXRIZWlnaHQgfHwgYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkKICAgIH0sIHIuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgYS5YTUxIdHRwUmVxdWVzdAogICAgICAgIH0gY2F0Y2ggKGIpIHt9CiAgICB9OwogICAgdmFyIE9iID0gewogICAgICAgICAgICAwOiAyMDAsCiAgICAgICAgICAgIDEyMjM6IDIwNAogICAgICAgIH0sCiAgICAgICAgUGIgPSByLmFqYXhTZXR0aW5ncy54aHIoKTsKICAgIG8uY29ycyA9ICEhUGIgJiYgIndpdGhDcmVkZW50aWFscyIgaW4gUGIsIG8uYWpheCA9IFBiID0gISFQYiwgci5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpIHsKICAgICAgICB2YXIgYywgZDsKICAgICAgICByZXR1cm4gby5jb3JzIHx8IFBiICYmICFiLmNyb3NzRG9tYWluID8gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihlLCBmKSB7CiAgICAgICAgICAgICAgICB2YXIgZywgaCA9IGIueGhyKCk7CiAgICAgICAgICAgICAgICBpZiAoaC5vcGVuKGIudHlwZSwgYi51cmwsIGIuYXN5bmMsIGIudXNlcm5hbWUsIGIucGFzc3dvcmQpLCBiLnhockZpZWxkcykKICAgICAgICAgICAgICAgICAgICBmb3IgKGcgaW4gYi54aHJGaWVsZHMpIGhbZ10gPSBiLnhockZpZWxkc1tnXTsKICAgICAgICAgICAgICAgIGIubWltZVR5cGUgJiYgaC5vdmVycmlkZU1pbWVUeXBlICYmIGgub3ZlcnJpZGVNaW1lVHlwZShiLm1pbWVUeXBlKSwgYi5jcm9zc0RvbWFpbiB8fCBlWyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGVbIlgtUmVxdWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVxdWVzdCIpOwogICAgICAgICAgICAgICAgZm9yIChnIGluIGUpIGguc2V0UmVxdWVzdEhlYWRlcihnLCBlW2ddKTsKICAgICAgICAgICAgICAgIGMgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjICYmIChjID0gZCA9IGgub25sb2FkID0gaC5vbmVycm9yID0gaC5vbmFib3J0ID0gaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsLCAiYWJvcnQiID09PSBhID8gaC5hYm9ydCgpIDogImVycm9yIiA9PT0gYSA/ICJudW1iZXIiICE9IHR5cGVvZiBoLnN0YXR1cyA/IGYoMCwgImVycm9yIikgOiBmKGguc3RhdHVzLCBoLnN0YXR1c1RleHQpIDogZihPYltoLnN0YXR1c10gfHwgaC5zdGF0dXMsIGguc3RhdHVzVGV4dCwgInRleHQiICE9PSAoaC5yZXNwb25zZVR5cGUgfHwgInRleHQiKSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgaC5yZXNwb25zZVRleHQgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnk6IGgucmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGgucmVzcG9uc2VUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIGgub25sb2FkID0gYygpLCBkID0gaC5vbmVycm9yID0gYygiZXJyb3IiKSwgdm9pZCAwICE9PSBoLm9uYWJvcnQgPyBoLm9uYWJvcnQgPSBkIDogaC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICA0ID09PSBoLnJlYWR5U3RhdGUgJiYgYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjICYmIGQoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCBjID0gYygiYWJvcnQiKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgaC5zZW5kKGIuaGFzQ29udGVudCAmJiBiLmRhdGEgfHwgbnVsbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYykgdGhyb3cgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjICYmIGMoKQogICAgICAgICAgICB9CiAgICAgICAgfSA6IHZvaWQgMAogICAgfSksIHIuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKSB7CiAgICAgICAgYS5jcm9zc0RvbWFpbiAmJiAoYS5jb250ZW50cy5zY3JpcHQgPSAhMSkKICAgIH0pLCByLmFqYXhTZXR1cCh7CiAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKICAgICAgICB9LAogICAgICAgIGNvbnRlbnRzOiB7CiAgICAgICAgICAgIHNjcmlwdDogL1xiKD86amF2YXxlY21hKXNjcmlwdFxiLwogICAgICAgIH0sCiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gci5nbG9iYWxFdmFsKGEpLCBhCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgci5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgdm9pZCAwID09PSBhLmNhY2hlICYmIChhLmNhY2hlID0gITEpLCBhLmNyb3NzRG9tYWluICYmIChhLnR5cGUgPSAiR0VUIikKICAgIH0pLCByLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICBpZiAoYS5jcm9zc0RvbWFpbikgewogICAgICAgICAgICB2YXIgYiwgYzsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKGUsIGYpIHsKICAgICAgICAgICAgICAgICAgICBiID0gcigiPHNjcmlwdD4iKS5wcm9wKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldDogYS5zY3JpcHRDaGFyc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGEudXJsCiAgICAgICAgICAgICAgICAgICAgfSkub24oImxvYWQgZXJyb3IiLCBjID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICBiLnJlbW92ZSgpLCBjID0gbnVsbCwgYSAmJiBmKCJlcnJvciIgPT09IGEudHlwZSA/IDQwNCA6IDIwMCwgYS50eXBlKQogICAgICAgICAgICAgICAgICAgIH0pLCBkLmhlYWQuYXBwZW5kQ2hpbGQoYlswXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYyAmJiBjKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFFiID0gW10sCiAgICAgICAgUmIgPSAvKD0pXD8oPz0mfCQpfFw/XD8vOwogICAgci5hamF4U2V0dXAoewogICAgICAgIGpzb25wOiAiY2FsbGJhY2siLAogICAgICAgIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYSA9IFFiLnBvcCgpIHx8IHIuZXhwYW5kbyArICJfIiArIHJiKys7CiAgICAgICAgICAgIHJldHVybiB0aGlzW2FdID0gITAsIGEKICAgICAgICB9CiAgICB9KSwgci5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIiwgZnVuY3Rpb24oYiwgYywgZCkgewogICAgICAgIHZhciBlLCBmLCBnLCBoID0gYi5qc29ucCAhPT0gITEgJiYgKFJiLnRlc3QoYi51cmwpID8gInVybCIgOiAic3RyaW5nIiA9PSB0eXBlb2YgYi5kYXRhICYmIDAgPT09IChiLmNvbnRlbnRUeXBlIHx8ICIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSAmJiBSYi50ZXN0KGIuZGF0YSkgJiYgImRhdGEiKTsKICAgICAgICByZXR1cm4gaCB8fCAianNvbnAiID09PSBiLmRhdGFUeXBlc1swXSA/IChlID0gYi5qc29ucENhbGxiYWNrID0gci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjaykgPyBiLmpzb25wQ2FsbGJhY2soKSA6IGIuanNvbnBDYWxsYmFjaywgaCA/IGJbaF0gPSBiW2hdLnJlcGxhY2UoUmIsICIkMSIgKyBlKSA6IGIuanNvbnAgIT09ICExICYmIChiLnVybCArPSAoc2IudGVzdChiLnVybCkgPyAiJiIgOiAiPyIpICsgYi5qc29ucCArICI9IiArIGUpLCBiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGcgfHwgci5lcnJvcihlICsgIiB3YXMgbm90IGNhbGxlZCIpLCBnWzBdCiAgICAgICAgfSwgYi5kYXRhVHlwZXNbMF0gPSAianNvbiIsIGYgPSBhW2VdLCBhW2VdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGcgPSBhcmd1bWVudHMKICAgICAgICB9LCBkLmFsd2F5cyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBmID8gcihhKS5yZW1vdmVQcm9wKGUpIDogYVtlXSA9IGYsIGJbZV0gJiYgKGIuanNvbnBDYWxsYmFjayA9IGMuanNvbnBDYWxsYmFjaywgUWIucHVzaChlKSksIGcgJiYgci5pc0Z1bmN0aW9uKGYpICYmIGYoZ1swXSksIGcgPSBmID0gdm9pZCAwCiAgICAgICAgfSksICJzY3JpcHQiKSA6IHZvaWQgMAogICAgfSksIG8uY3JlYXRlSFRNTERvY3VtZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSBkLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTsKICAgICAgICByZXR1cm4gYS5pbm5lckhUTUwgPSAiPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLCAyID09PSBhLmNoaWxkTm9kZXMubGVuZ3RoCiAgICB9KCksIHIucGFyc2VIVE1MID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgYSkgcmV0dXJuIFtdOwogICAgICAgICJib29sZWFuIiA9PSB0eXBlb2YgYiAmJiAoYyA9IGIsIGIgPSAhMSk7CiAgICAgICAgdmFyIGUsIGYsIGc7CiAgICAgICAgcmV0dXJuIGIgfHwgKG8uY3JlYXRlSFRNTERvY3VtZW50ID8gKGIgPSBkLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIiksIGUgPSBiLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSwgZS5ocmVmID0gZC5sb2NhdGlvbi5ocmVmLCBiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpIDogYiA9IGQpLCBmID0gQi5leGVjKGEpLCBnID0gIWMgJiYgW10sIGYgPyBbYi5jcmVhdGVFbGVtZW50KGZbMV0pXSA6IChmID0gb2EoW2FdLCBiLCBnKSwgZyAmJiBnLmxlbmd0aCAmJiByKGcpLnJlbW92ZSgpLCByLm1lcmdlKFtdLCBmLmNoaWxkTm9kZXMpKQogICAgfSwgci5mbi5sb2FkID0gZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgIHZhciBkLCBlLCBmLCBnID0gdGhpcywKICAgICAgICAgICAgaCA9IGEuaW5kZXhPZigiICIpOwogICAgICAgIHJldHVybiBoID4gLTEgJiYgKGQgPSByLnRyaW0oYS5zbGljZShoKSksIGEgPSBhLnNsaWNlKDAsIGgpKSwgci5pc0Z1bmN0aW9uKGIpID8gKGMgPSBiLCBiID0gdm9pZCAwKSA6IGIgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGIgJiYgKGUgPSAiUE9TVCIpLCBnLmxlbmd0aCA+IDAgJiYgci5hamF4KHsKICAgICAgICAgICAgdXJsOiBhLAogICAgICAgICAgICB0eXBlOiBlIHx8ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgICAgICBkYXRhOiBiCiAgICAgICAgfSkuZG9uZShmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGYgPSBhcmd1bWVudHMsIGcuaHRtbChkID8gcigiPGRpdj4iKS5hcHBlbmQoci5wYXJzZUhUTUwoYSkpLmZpbmQoZCkgOiBhKQogICAgICAgIH0pLmFsd2F5cyhjICYmIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgZy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYy5hcHBseSh0aGlzLCBmIHx8IFthLnJlc3BvbnNlVGV4dCwgYiwgYV0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSksIHRoaXMKICAgIH0sIHIuZWFjaChbImFqYXhTdGFydCIsICJhamF4U3RvcCIsICJhamF4Q29tcGxldGUiLCAiYWpheEVycm9yIiwgImFqYXhTdWNjZXNzIiwgImFqYXhTZW5kIl0sIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICByLmZuW2JdID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbihiLCBhKQogICAgICAgIH0KICAgIH0pLCByLmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICByZXR1cm4gci5ncmVwKHIudGltZXJzLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIHJldHVybiBhID09PSBiLmVsZW0KICAgICAgICB9KS5sZW5ndGgKICAgIH07CgogICAgZnVuY3Rpb24gU2IoYSkgewogICAgICAgIHJldHVybiByLmlzV2luZG93KGEpID8gYSA6IDkgPT09IGEubm9kZVR5cGUgJiYgYS5kZWZhdWx0VmlldwogICAgfQogICAgci5vZmZzZXQgPSB7CiAgICAgICAgc2V0T2Zmc2V0OiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHZhciBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrID0gci5jc3MoYSwgInBvc2l0aW9uIiksCiAgICAgICAgICAgICAgICBsID0gcihhKSwKICAgICAgICAgICAgICAgIG0gPSB7fTsKICAgICAgICAgICAgInN0YXRpYyIgPT09IGsgJiYgKGEuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgaCA9IGwub2Zmc2V0KCksIGYgPSByLmNzcyhhLCAidG9wIiksIGkgPSByLmNzcyhhLCAibGVmdCIpLCBqID0gKCJhYnNvbHV0ZSIgPT09IGsgfHwgImZpeGVkIiA9PT0gaykgJiYgKGYgKyBpKS5pbmRleE9mKCJhdXRvIikgPiAtMSwgaiA/IChkID0gbC5wb3NpdGlvbigpLCBnID0gZC50b3AsIGUgPSBkLmxlZnQpIDogKGcgPSBwYXJzZUZsb2F0KGYpIHx8IDAsIGUgPSBwYXJzZUZsb2F0KGkpIHx8IDApLCByLmlzRnVuY3Rpb24oYikgJiYgKGIgPSBiLmNhbGwoYSwgYywgci5leHRlbmQoe30sIGgpKSksIG51bGwgIT0gYi50b3AgJiYgKG0udG9wID0gYi50b3AgLSBoLnRvcCArIGcpLCBudWxsICE9IGIubGVmdCAmJiAobS5sZWZ0ID0gYi5sZWZ0IC0gaC5sZWZ0ICsgZSksICJ1c2luZyIgaW4gYiA/IGIudXNpbmcuY2FsbChhLCBtKSA6IGwuY3NzKG0pCiAgICAgICAgfQogICAgfSwgci5mbi5leHRlbmQoewogICAgICAgIG9mZnNldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHZvaWQgMCA9PT0gYSA/IHRoaXMgOiB0aGlzLmVhY2goZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIGEsIGIpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgYiwgYywgZCwgZSwgZiA9IHRoaXNbMF07CiAgICAgICAgICAgIGlmIChmKSByZXR1cm4gZi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA/IChkID0gZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgZC53aWR0aCB8fCBkLmhlaWdodCA/IChlID0gZi5vd25lckRvY3VtZW50LCBjID0gU2IoZSksIGIgPSBlLmRvY3VtZW50RWxlbWVudCwgewogICAgICAgICAgICAgICAgdG9wOiBkLnRvcCArIGMucGFnZVlPZmZzZXQgLSBiLmNsaWVudFRvcCwKICAgICAgICAgICAgICAgIGxlZnQ6IGQubGVmdCArIGMucGFnZVhPZmZzZXQgLSBiLmNsaWVudExlZnQKICAgICAgICAgICAgfSkgOiBkKSA6IHsKICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpc1swXSkgewogICAgICAgICAgICAgICAgdmFyIGEsIGIsIGMgPSB0aGlzWzBdLAogICAgICAgICAgICAgICAgICAgIGQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gImZpeGVkIiA9PT0gci5jc3MoYywgInBvc2l0aW9uIikgPyBiID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IChhID0gdGhpcy5vZmZzZXRQYXJlbnQoKSwgYiA9IHRoaXMub2Zmc2V0KCksIHIubm9kZU5hbWUoYVswXSwgImh0bWwiKSB8fCAoZCA9IGEub2Zmc2V0KCkpLCBkID0gewogICAgICAgICAgICAgICAgICAgIHRvcDogZC50b3AgKyByLmNzcyhhWzBdLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogZC5sZWZ0ICsgci5jc3MoYVswXSwgImJvcmRlckxlZnRXaWR0aCIsICEwKQogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IGIudG9wIC0gZC50b3AgLSByLmNzcyhjLCAibWFyZ2luVG9wIiwgITApLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGIubGVmdCAtIGQubGVmdCAtIHIuY3NzKGMsICJtYXJnaW5MZWZ0IiwgITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICB3aGlsZSAoYSAmJiAic3RhdGljIiA9PT0gci5jc3MoYSwgInBvc2l0aW9uIikpIGEgPSBhLm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgIHJldHVybiBhIHx8IHBhCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgfSksIHIuZWFjaCh7CiAgICAgICAgc2Nyb2xsTGVmdDogInBhZ2VYT2Zmc2V0IiwKICAgICAgICBzY3JvbGxUb3A6ICJwYWdlWU9mZnNldCIKICAgIH0sIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYyA9ICJwYWdlWU9mZnNldCIgPT09IGI7CiAgICAgICAgci5mblthXSA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgcmV0dXJuIFModGhpcywgZnVuY3Rpb24oYSwgZCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGYgPSBTYihhKTsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyBmID8gZltiXSA6IGFbZF0gOiB2b2lkKGYgPyBmLnNjcm9sbFRvKGMgPyBmLnBhZ2VYT2Zmc2V0IDogZSwgYyA/IGUgOiBmLnBhZ2VZT2Zmc2V0KSA6IGFbZF0gPSBlKQogICAgICAgICAgICB9LCBhLCBkLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0KICAgIH0pLCByLmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgci5jc3NIb29rc1tiXSA9IE5hKG8ucGl4ZWxQb3NpdGlvbiwgZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICByZXR1cm4gYyA/IChjID0gTWEoYSwgYiksIEthLnRlc3QoYykgPyByKGEpLnBvc2l0aW9uKClbYl0gKyAicHgiIDogYykgOiB2b2lkIDAKICAgICAgICB9KQogICAgfSksIHIuZWFjaCh7CiAgICAgICAgSGVpZ2h0OiAiaGVpZ2h0IiwKICAgICAgICBXaWR0aDogIndpZHRoIgogICAgfSwgZnVuY3Rpb24oYSwgYikgewogICAgICAgIHIuZWFjaCh7CiAgICAgICAgICAgIHBhZGRpbmc6ICJpbm5lciIgKyBhLAogICAgICAgICAgICBjb250ZW50OiBiLAogICAgICAgICAgICAiIjogIm91dGVyIiArIGEKICAgICAgICB9LCBmdW5jdGlvbihjLCBkKSB7CiAgICAgICAgICAgIHIuZm5bZF0gPSBmdW5jdGlvbihlLCBmKSB7CiAgICAgICAgICAgICAgICB2YXIgZyA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKGMgfHwgImJvb2xlYW4iICE9IHR5cGVvZiBlKSwKICAgICAgICAgICAgICAgICAgICBoID0gYyB8fCAoZSA9PT0gITAgfHwgZiA9PT0gITAgPyAibWFyZ2luIiA6ICJib3JkZXIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBTKHRoaXMsIGZ1bmN0aW9uKGIsIGMsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5pc1dpbmRvdyhiKSA/IDAgPT09IGQuaW5kZXhPZigib3V0ZXIiKSA/IGJbImlubmVyIiArIGFdIDogYi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBhXSA6IDkgPT09IGIubm9kZVR5cGUgPyAoZiA9IGIuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heChiLmJvZHlbInNjcm9sbCIgKyBhXSwgZlsic2Nyb2xsIiArIGFdLCBiLmJvZHlbIm9mZnNldCIgKyBhXSwgZlsib2Zmc2V0IiArIGFdLCBmWyJjbGllbnQiICsgYV0pKSA6IHZvaWQgMCA9PT0gZSA/IHIuY3NzKGIsIGMsIGgpIDogci5zdHlsZShiLCBjLCBlLCBoKQogICAgICAgICAgICAgICAgfSwgYiwgZyA/IGUgOiB2b2lkIDAsIGcpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfSksIHIuZm4uZXh0ZW5kKHsKICAgICAgICBiaW5kOiBmdW5jdGlvbihhLCBiLCBjKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKGEsIG51bGwsIGIsIGMpCiAgICAgICAgfSwKICAgICAgICB1bmJpbmQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub2ZmKGEsIG51bGwsIGIpCiAgICAgICAgfSwKICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oYSwgYiwgYywgZCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbihiLCBhLCBjLCBkKQogICAgICAgIH0sCiAgICAgICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24oYSwgYiwgYykgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMub2ZmKGEsICIqKiIpIDogdGhpcy5vZmYoYiwgYSB8fCAiKioiLCBjKQogICAgICAgIH0KICAgIH0pLCByLnBhcnNlSlNPTiA9IEpTT04ucGFyc2UsICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiByCiAgICB9KTsKICAgIHZhciBUYiA9IGEualF1ZXJ5LAogICAgICAgIFViID0gYS4kOwogICAgcmV0dXJuIHIubm9Db25mbGljdCA9IGZ1bmN0aW9uKGIpIHsKICAgICAgICByZXR1cm4gYS4kID09PSByICYmIChhLiQgPSBVYiksIGIgJiYgYS5qUXVlcnkgPT09IHIgJiYgKGEualF1ZXJ5ID0gVGIpLCByCiAgICB9LCBiIHx8IChhLmpRdWVyeSA9IGEuJCA9IHIpLCByCn0pOw=="}},"time_used":35,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":22,"receive":13,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_choose_shape01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.060Z","timestamp":1785159465060,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_choose_shape01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3900\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3900,"size_decoded":4165,"mime_type":"image/png","magic":"PNG image data, 59 x 59, 8-bit/color RGBA, non-interlaced","md5":"6d3b7521ea9a03ed2b32665b9f42de1a","sha1":"39c90e28ba51c8015dba2d4d5d4eff40388e1f40","sha256":"eb37a988932f07a8177abff7836809fb4d095a92d481b70c5822b7f36be4588c","sha512":"9b9f2c5a36a608c88e561f2c9f7ddd4d7236a061e9819af04572ba06bb3afe529f65170b3b8024c934d6c9cde2e09abeca3e366b0e6682ea5f8527b9904b540f","ssdeep":"","tlshash":"f9815c5c7d3858a67296b98cc1f0485cd5fec9054ab198385f008725c6333af2bd95bf","first_seen":"2025-04-12T15:34:26.843871Z","last_seen":"2026-07-27T13:38:47.788835Z","times_seen":13,"resource_available":false,"data":"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"}},"time_used":74,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":65,"receive":9,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.079Z","timestamp":1785159465079,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 6661\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":6661,"size_decoded":6926,"mime_type":"image/png","magic":"PNG image data, 521 x 383, 8-bit/color RGBA, non-interlaced","md5":"6ed3e85d667ff831c1a1f2b187abfc56","sha1":"412aa3ba64260e7f603906e6bd22b8e2f3c73247","sha256":"c5edf0ab1bd48fe1ebfa63bdbaf74130796524f34d7836cd7e2cdbd991408221","sha512":"d8ed3904c566b8defc8d59c5d1cac9ae5d5ca51f00aae431b3ceebd144f30916fffa892eb029f2c630cf9d930e5f48459e9abacbc65c5102d797ccd46e8fc96f","ssdeep":"192:9tzS2jE2G03PO9kXt4FozuS5wCEaZ875G43LSYu4LNP4BljK:9tm2Y2zoQdlDZK5GQu4xajK","tlshash":"89d1cff106557298f396a64813caaeb3d6c37131a595fe09362cb8f4290fb833de0474","first_seen":"2025-10-13T02:30:07.72125Z","last_seen":"2026-07-27T13:38:47.756675Z","times_seen":11,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAgkAAAF/CAYAAADD8Vq5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABmaSURBVHgB7d0NbpRXti7gvb8qFxCcblsK5Ea6UjsjaBhBnBGEjAAygpARQEYQMoKQEXQygpARHJ8RxC1dKWroK3wS08Zl17dP7YIytin/18/38zxSqLJdgchB1Mtaa68dAwCNtrPz+1p+HAwGK53UWTnxhd2wmR9u3PhkM8BQDADUWg4Bnb3OepniStFNf08hrsQQ77z5aloLl5HC1vAdYvPNY9pMZfrn8PlGGcut6/uvN+Lqp1uBxhMSAGoivfxt5XX3+p1Ydu/kMBBCsX7pEHB1GzlApFT+OgoPg3LjxqoKRNMICQAVlUNBv/PBeizSeoidz4afuhMqLIW0OXxb2Uj74df9zu6z5eX/uxGoNSEBoEJ2/vx9vSi6n8UUhsFg+E+N5dAwfJN5NhiEX8Ng8EyloX6EBIAFy8GgE+O9EDr3h38qr4SmSsPAUKYfBYb6EBIAFqA1weAkAkMtCAkAc9L6YHCCFMJP5SD9fOMvt58GKkVIAJihPHy4Wyw/KDrhi7rPGMzawQxDf/Ct6kI1CAkAMzAaQIzFgxiKL1QNLiM9HZSDH298+MmzwMIICQBTomowExuDQfpeK2IxhASAKxrtM+gtfx1TeKhqMBu5FVEOwrfCwnwJCQCXdNBSiMX9wFwIC/MlJABc0JtTCt1HWgqLIyzMh5AAcE7CQfWMjk/2979xGmI2hASAM+z+8a97sSi+Fg6qLD11dHL6hASAE/T/eP4gdMKj4R+Va4HK04KYPiEB4BjhoN5GYaE/+FxV4eqKAMBIDgf9V89/C534g4BQXzHEtU6v+9vuqxePAleikgC0noHE5lJVuBqVBKC1cjjob7/4pVN0fxEQmklV4WpUEoDWUTloJ1WFixMSgNYQDhjaGgzSN05AnI+QADTezsvf1zpL3R+EAw6k8GRpr/ttXF3dCpxISAAaK4eDYql47G4FJtF+OJuQADSOWxm5gK00KL+69pePfwq8R0gAGkM44LJSCI+v3bz1beAIIQGoPeGAaciXRfX63a/MKbwjJAC19nr7xcMihEfCAdNgTuEoIQGoJfcrMCuCwjtCAlArwgFzsjUo97+88eEnz0KLCQlALViExEIU8UHvxkc/hpYSEoBKEw5YtDaffBASgEoSDqiStgYFIQGoFDMHVFUbg4KQACzcwZ6DkB4IB1RZ24KCkAAsjCVI1FGbgoKQAMzdm1sZ48MQOveFA+qoLUFBSADmxjAiTdKGoCAkADOVWwq7xfKDohvydc13AjTIfhp888Hy/3kSGkpIAGbiTdUg3tNSoPEavHBJSACm5t0phTAMB6oGtEc/pbvLy7c3QsMICcCV5GCw17l5b/i3qftmDWixrUF//27TLoUSEoALy8Hgdff6nU4xbCWkYUtBOwEaeXukkACcy0HFoBM+EwxgshwUev2lu3F1dSs0gJAAnOjgZEInfBHyjIFgAGdL4Vlv+dbnoQGEBOCIfCqhKLqfxRTWzRjAJaXwZBgUvgk1JyRAy+3s/L4W+917sRvGwUC1AKagCTsUhARomRwKOnud9dFsQSjWh3/lWQvATAzK/c9vfPjJs1BTQgI03LhSUHTT34UCmK+6n3gQEqBBxkcTY9m9o30AlbHRu3nrbqghIQFq6nAgUCWAiqvpIKOQADWQWwbFXnEnpWJNIICaquEdD0ICVEiuDrxaWlrrlb07oSjvhNAZBgL7CaAhare6WUiABThSGegM1lLs/C2GeEd1ABpvY6nf/bwuGxmFBJiRw1WBFNNaLOLfQg4CKaypDECL1Wg+QUiAKxhXBIZVgJVReyAWfxUEgLPUZX+CkACnyCFgMBisHK4GpGEg0BoArmhr2Hb4tOptByGB1hodIbx+fWVcCThoCaQ4rAIM/xECgFmqwUVQQgKNdbgKUKa4kgcED9oBuT0gBAALVvX7HYQEakkVAGiISh+LFBKopMMhYHxMUBUAaKQKtx2EBBbm+K4AJwOAtqpq20FIYGYO7wkYzQR009+dDACYqJKnHYQEruz4vQKCAMBlpKe9m7e/ChUiJHBuOQx09jrrtgcCzEbVliwJCbzn/RsHhQGAeUghbV67efvTUBFCQsuNqwN5pfDokqEU1oUBgMVJZfnttQ8/fhwqQEhokTxI2O98sB6LtO4KYoDKqszuBCGhwba3/9+d7uDa+puWQbFukBCgLqoxxCgkNMRo+VD3+p2i6H42ahmoEgDUWhWGGIWEGtv58/d1oQCgoSqwiVFIqJE8ZBj73XuxGz4zYAjQfGlQfnntLx//FBZESKi4XC3oxHgvxO4XZgoA2mXRRyKFhIrJswV7nZv3Qid8FlIOB6oFAG22yCORQkIF5GCwWyw/KDphWC0wWwDAEQu716EbWIiDikER7+/FsF4EAJhopd/tPxw+Pg5zppIwZ6MZg6JzXysBgAtYSDVBJWEOtref31mK8YuYwsODYCCeAXB+C6kmeKuakSNzBnG0xwAArmLu1QSVhCnbefn7WtHr3t8bVg0K7QQApmfu1QSVhCl5s8+g+0jVAIAZmms1QSXhCg6fUBAOAJiDld2l3QfDxydhDlQSLmF05XJv+esjg4gAMAfz3MIoJFyAcABAFczrhkgh4RyEAwAqZU43RAoJpxAOAKiqeVQTbAM+Qf+P5w/2lpZ/i/moiYAAQMV0YudemDGVhGPerk3+bvituRMAoLpmfhxSJeGtvASpv/3il07R/UVAAKAGxsuVZqb1lQRzBwDU2Fbv5q3VMCOtDglvWws/DL8NawEAamiWA4ytbDfk1sLuqxf/eNtaWAsAUFOjKwFmpHWVhNfbLx4Ok9EjrQUAmmKp312dxQBjayoJ48HEIobvBAQAmmRWA4ytqCTs/vGve7EofhAOAGiomQwwNrqSMDq58J8X38VO8Q8BAYAGW8nD+GHKGhsStl8+v7PXu/lfIR9tBICG6xSd+2HKGhkS8nBirxf/y8kFANoj3ksvX061at6okDBqL7z69w+j4UQAaJeV3aXdB2GKGhMS8umFUXshpAcBAFqoCJ0vwhQ14nTDaHNi7BpOBKD1prkzofaVhDx/MNqcKCAAQJhmy6HWISEfbzR/AADvTLPlUMt2Qx5Q3Ftazu2F9QAAHDGtlkPtKglvBxR/ERAAYLJptRxqFRJyQOj0OvnmxjsBAJhoWi2H2rQbDgWEtQAAnGoaLYdaVBLyimUBAQDObxoth8qHhBwQektRQACAC5hGy6HS7YaDgGAHAgBc2FVbDpWtJAgIAHA1e529e+EKKhkSBAQAmIJO+CxcQeXaDQICAEzNVu/mrdVwSZWqJAgIADBVK/kSxHBJlQkJeQ+CgAAA01WEYj1cUjdUwLtFSQICAExTjMWl5xIWPpNgkyIAzNZlj0IutN2Qb3MUEABgti57FHKhIWF0m2OIawEAmJ1LHoVcWEjo/+fFd25zBIC5WA+XsJCQsLvz/x+FFB4GAGAO4trOzu9r4YLmHhJeb794GMvycQAA5iYO4oXnEuYaEvJJhuEv+CgAAHNVxOLv4YLmFhIOjjpalgQAC1DhSsIwIPzDSQYAWJiVi84lzCUkjAYVnWQAgIW66FzCzNcy9/94/iAYVASAhbvoXMJMKwl5DmH4X/RdAACqYP0iL55pSDCoCABVEtfSy5fnfl+eWUh4O4ewFgCAyuh3+uvnfe1MQsLOn7+vW5gEANUTi7h+3tdOPSSM9iEUnR8CAFBB8dzDi1MPCcVS8VibAQAqKoZzrySYakjIxx1jLO4HAKCqVra3n58rKEwtJIyOO3bcywAAVdcN5fp5Xje1kKDNAAD1cN6lSlMJCbt//OueNgMA1MX5rkqIYQr6r57/pooAAPWx1O+uxtXVrdNec+VKgqVJAFA/r5b21s56zZVCQh5WtDQJAOrnPMOLVwoJb4YVAYC6Oc/w4qWvit7588V6jMGwIgDU0tnDi5euJHSKZPUyANTX2lkvuFRIyJsVDSsCQK2t7Oz8vnbaCy5XSbBZEQBqr7PXWT/t6xcOCaoIANAQxemXPV28kqCKAACNUKa0dtrXLxQSVBEAoDmKIp56DPJCa5mtXwaAZjltPfO5KwmqCADQPKetZz5/u8EsAgA0Tq88eXjxXBsX83bFcI6lCwBAzZxywuFclYSOKgIANNJpJxzODAn5pseQwnoAABrntBMOZ4YENz0CQJPFtfTy5cqkr5wZEmKMnwUAoLFOOuFwakhw7BEAmu+kEw6nVxK68X4AABotxcnDiyeGBAOLANAOsYh/m/T5E0NCXOreCwBAC8SLtRuKmL4OAEAbrE365MSQ0N9+fsfAIgC0xsqkY5ATQ0JKSasBAFpk0jHIiSEhFsUXAQBojUnHIN8LCaNTDeHkyx4AgOaZdAzyvZDQ6XTWAwDQKpOOQb7fbrBACQBaKJ7dbghJqwEA2iedfrph588X68OHlQAAtMz7t0EWRz8o1wMA0Eqvr78+OSTETuFaaABoqWKvODJycHQmwYVOANBaMcTJlYS38wgAQFsVYXIlIUanGgCg1WL46+EPD4UEQ4sA0G7xhEpCKP4WAIAWO7orIY6f9F+9SAEAaLXezVsH2WBUSTC0CABkOzujix5HRiGhSNGWRQAgdPfD2vj5m5mEOHCyAQAIKXXWxs+Ltz8KCQBASDGtjZ+PQoKTDQBAFot4kAnGRyDXAgDQemWZVsfPi7fXQhpcBABCUbzrLhR7S3trAQBg5N1CpWLg+CMAcCCujZ8VnfRuihEAYLxQqSgLlQQA4J3BoDPKBkVMpZAAABxYKt90GYoQ41oAAHgrhjddhiIAABwy3rpYHN6sBAAQo0oCADBJDH/ND0ICAHDEeDWzkAAAHDFezSwkAADHJDMJAMDJhAQA4Ji4ln8UEgCA96SXL1eEBADgPa+vvxYSAIDJilSmfwYAgEO6+2FNJQEAmKiIIWwFAIBDUuqsFSklIQEAeE+RYiEkAADvKYpSJQEAOCrFtFYMYtwMAADHFKG7vxkAAI4prr++rt0AABwRY1wp4upqDgmCAgDwTgx/HS9T2gwAAIeMQkIKpdXMAMARo5AQkxMOAMBRb9oNZdgIAACHFG9/FBIAgANlmVZHIWFpb2kzAAC8VYS48mYmwTFIAOCY8RHIfMLh1wAA8NZBSHDCAQA47CAkOOEAABx2EBIGS4NnAQDgrYOQcOPGJ5vB8CIA8FZx+APDiwDA2NGQkIpnAQAgvBcSDC8CACEnhN+OhITr+90cEswlAABHKwmjzYtRNQEAOBYSsmHLwfAiAPB+SCjL8CwAAK33Xki48eGtZ8FcAgC0Wwr/U0z+vH0JANBmKaWtySHBvgQAaL2JIeHaXvdpAABabWJIeHsU8lkAAFopprhZnPRFRyEBoN1ODAmOQgJAe6VwwuBilo9CDqsJ/wwAQOsUsTw5JIzE8DQAAK10akjQcgCAdtrvhs1TQ8Jo+6JTDgDQSsVZL3DKAQDa58aNTzbjWS9KL1+u7PX2XwYAoDV6N2/FMysJFisBQNukzfzjmSEhK8vwcwAAWiKOboM+V0h4e5eD66MBoA3K9D/54VwhYdRySOnHAAA0XhnS+SsJ2SDFnwIA0HhFEUcHFs4dEuxMAIB2SGUaXctw7pCQGWAEgOZL8YLthswAIwA0XyzjZn68UEjIA4wphO8DANBY+QbI0WO4oF6/+yQAAI2VL3fKjxcOCW+rCWYTAKCh8r0N+fHCISEry6CaAADNdDB7eKmQ4DgkADTW5vjJpUJCNhiEbwMA0CxvVzJnlw4JqgkA0EBF+O3d0ytQTQCAZhlvW8yuFBLeVBPeLFwAAOovpnfv61cKCSNlqZoAAA0R42Bz/PzKIaG3fPupagIANMN4kVJ29UpCppoAAI0wXqSUTSUkjKoJIWwEAKDOjryXT6eSMDQowzcBAKivQzsSsqmFBHsTAKDm4owqCZm9CQBQX2UoNw9/PNWQoJoAAPXVSWl2lYRMNQEA6mk3drYOfxzDDOxuP38aY7wfAIDa6N28dSQXTL2SMPpF9pYehkP3UQMAlffeKoOZhIS4urqVQvg+AAC1UJblP49/biYhIev1u0+sawaAeojzqiSMfrFcTdi3YAkAaiHNMSRk1/7y0U+ORAJA9e0V71f/Z3K64bCdnZdrnXL/twAAVNbxkw3ZTCsJ2Y0bq5sp2J0AAJVVpl8nfXrmISEzxAgAFVYUEyv+cwkJeYhxMEhfBQCgcsq0/9+TPj+XkJC51wEAqun4nQ1jcwsJ2SB2czXBJkYAqJDu/vXFh4Q8xFhGQ4wAUCEbeSxg0hfmGhKy6x/ceqLtAADVMGkd89jcQ0Km7QAAFRHTs5O+tJCQoO0AANVw0tBiNvONi6fp/+fFLyGF9QAALMRSv7tamZmEw7QdAGChThxazBYaErQdAGCB0uR1zGMLDQmZ0w4AsBipPHloMVt4SMi0HQBg/sql3sZpX69ESMhth0FK3wQAYC5SjJv5/fe011QiJGQ3lm8/Hf4Xfx8AgJlLg8F/n/WayoSEbGmv89iV0gAwB/H0eYSsUiEhH8Pol+WXAQCYqf1QPDvrNZUKCdny8u2NMgbzCQAwO1v5/fasF1UuJGSORQLA7JRl+et5XlfJkJCNjkWaTwCAqUsx/nSe11U2JIyORQ7SVwEAmKpBCGe2GrLKhoTsxoe3nplPAIDpyfsRzjOPkFU6JGTmEwBgemI6/3tq5UNCtrTb/dJ8AgBc3SCdb2gxq0VIOLQ/wf0OAHAVnaVn531pLUJC9nZ/gmulAeCyyvTrWfc1HFabkJCN5hPc7wAAl5LC2auYD6tVSMh6yx89NMgIABdXhPLZRV4fQw3t7Lxc66TBLyGltQAAnCkffbz2wUefXuTfqV0lIcv9FIOMAHB+Fzn6OFbLkJDlQcZBShYtAcA5pMHg53BBtQ0J2Y3l209TcOIBAM7SG/SehQuqdUjIrt289Til9GMAACYqy/LnvHMoXFDtQ0LW21t6GM55WQUAtM15b308rhEhIaejQWF1MwBMdIEti4c1IiRko6ulY+fz4MQDALxzwS2LhzUmJGSjoFCGLwMAMDKI4Wm4pEaFhOzGh7eeDVL6KgAAl241ZI0LCZmjkQAQrtRqyBoZErJ8NNJlUAC02VVaDVkt7264iN3t509jjPcDALTMUr+7epn9CGONrSSMXVu+/SDYoQBA68SnVwkIWeNDQjZMUvlopKAAQGvEcu/K24gb324Yc700AG1xmWuhJ2lFJSE7WLZkKyMADXeZa6En/jyhZVQUAGi6QdH99CpHH8daU0kYy9+0flnmrYzWNwPQPFfcjXBY60JCtrx8e6OfknseAGicq+5GOKyVISETFABooK3re0uXuhZ6ktaGhCwHhTSI7nkAoCHiT1fdjXBYq0NCdu0vH/3kQigAmqCfyqleR9C60w0n2dl+/qAT4w8BAOppo3fz1t0wRa2vJIzlmyNVFACoq+F72NQvNVRJOEZFAYC6mdaGxeNUEo5RUQCgbqa1YfG9nzcwkYoCAHUxrQ2Lx6kknEBFAYB6iE9nERBGP3PgVNvbz+/0Yvxl+HQlAEDFzKqKkKkknMFmRgAqa4r3NEwiJJzDQVBwzTQAFZJSehJmSLvhAlwzDUBVzOrY42EqCReQSzqD2FFRAGDhyrL8NsyYSsIlqCgAsEjzqCJkKgmXcFBRCGEjAMCczaOKkKkkXEF6+XKl39v/YfhNvBcAYA7mVUXIVBKuIN/Zfe3mrS+H/8emfqkGAEwyrypCppIwJbuvXjwefjMfBQCYkXlWETKVhCkZVhQepxDmlu4AaJ95VhEylYQpczEUALMw7ypCppIwZfliqH5Kd+1SAGCa5l1FyFQSZsQuBQCmZRFVhEwlYUbsUgBgavYH34QFUEmYg/72v5+EmL4OAHBBqSx/vvbhxwvZx6OSMAe95Y8eOvkAwGWU3d7DsCBCwpzkI5JlDAspFwFQV/Fpbl+HBdFumLPt7ed3ekXxDwONAJwmDyuWsfP5IkOCSsKcLS/f3nDdNABnGgx+XGRAyFQSFmR0OdTS3pMY4/0AAIcs6sjjcSoJCzK6HGr59gMDjQAct4jFSZOoJFTA7h//vhc7Ka9yXgkAtFx82rv50VehAoSEirChEYDh2/LWoOjcXfQswph2Q0Xk3xBLu527KaUfAwCtlMrB91UJCJlKQgXtvnrxePg/5lEAoDWqMqx4mEpCBeXFS4MyOCYJ0CLlm/t+KkVIqKgbH956Zp8CQDuksvy2Sm2GMe2GGtB+AGiuKrYZxlQSaiC3H0JK+TjMVgCgUYpBqsRxx0mEhJroLd9+Oii6d7UfAJojtxmWhu3lUFHaDTXU3/73kxDT1wGA2qpym2FMJaGGessfPRy1H1QVAGqriqcZjhMSamrUfnjzG2wjAFArVT3NcJx2QwM4/QBQIzFs9D64dTfUgEpCA+TTD/2UDDUCVFyeQxjE7pehJoSEhlhevr2R2w/ufgCorrImbYYx7YYG6m8/fxCK4pEbJQGqI88hXPvw48ehRoSEhnpz9fT+DyGF9QDAQtXhuOMk2g0NlctZvQ9ufZ5C+DYAsDA5INThuOMkKgkt8KaqMPhF+wFg/lIov7x28+OfQg2pJLTAm6rCR5+qKgDM12gOoaYBIVNJaBlVBYD5SCH+dO3mR7U57jiJSkLLqCoAzF6eQ+h90Kns7Y7npZLQYqoKANM3HlSs0z6Ek6gktNi4qlDG8M3ww60AwJXtlZ0vmxAQMiGBcP2DW08GRfeubY0AV1Om8M3y8mpjLt7TbuAI2xoBLqeOGxXP8r8tRSjRZ6z2AwAAAABJRU5ErkJggg=="}},"time_used":69,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":64,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.564Z","timestamp":1785159465564,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 433651\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-08-04T06:29:09.415181Z","times_seen":252335,"resource_available":false,"data":"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"}},"time_used":92,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":23,"receive":44,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.570Z","timestamp":1785159465570,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 433651\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-08-04T06:29:09.415181Z","times_seen":252335,"resource_available":false,"data":"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"}},"time_used":94,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":41,"receive":29,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/apexcharts.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.016Z","timestamp":1785159465016,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/apexcharts.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 149039\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":949099,"size_decoded":149278,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (361)","md5":"c8ce483c57f4d8715d278153f8db5b71","sha1":"72dbefaf622131731ad22e7c89dc4ac38165d3d8","sha256":"bddb11a069fd0bbae6d83ed7cc4b7c49c97e2000b132649fef89e592b44ad1da","sha512":"f109836ce352891c86c098d8e6b3099f092ac1720cd6c6be6f50a1a1ef77321a2702600dd83f8ac9ca644a760082a6fe036dabe52c32fb0349e84d2ed7f4c9c3","ssdeep":"24576:tbh3tHEjN0Cv4lthOUNJ9GoVY2Tdtk1lbz1BP9wbj7H8XvR/QfTKbXgWmnEBb9Co:tbh3tHEjN0Cv4lthOUpGoVY2Tdtk1lbn","tlshash":"3f15730bdbe62976d503b12d9d2f9906a271954b1e4dec187e4c90a01f5c82c93faff8","first_seen":"2026-02-09T00:02:08.772768Z","last_seen":"2026-07-27T13:38:47.780716Z","times_seen":5,"resource_available":true,"data":"LyohCiAqIEFwZXhDaGFydHMgdjMuMzUuMQogKiAoYykgMjAxOC0yMDIyIEFwZXhDaGFydHMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KISBmdW5jdGlvbih0LCBlKSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgPSBlKCkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShlKSA6ICh0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGdsb2JhbFRoaXMgPyBnbG9iYWxUaGlzIDogdCB8fCBzZWxmKS5BcGV4Q2hhcnRzID0gZSgpCn0odGhpcywgKGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIHQodCwgZSkgewogICAgICAgIHZhciBpID0gT2JqZWN0LmtleXModCk7CiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsKICAgICAgICAgICAgdmFyIGEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpOwogICAgICAgICAgICBlICYmIChhID0gYS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIGUpLmVudW1lcmFibGUKICAgICAgICAgICAgfSkpKSwgaS5wdXNoLmFwcGx5KGksIGEpCiAgICAgICAgfQogICAgICAgIHJldHVybiBpCiAgICB9CgogICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGEgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OwogICAgICAgICAgICBpICUgMiA/IHQoT2JqZWN0KGEpLCAhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgbyhlLCB0LCBhW3RdKQogICAgICAgICAgICB9KSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGEpKSA6IHQoT2JqZWN0KGEpKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLCB0KSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgICAgIHJldHVybiBlCiAgICB9CgogICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgcmV0dXJuIChpID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdAogICAgICAgIH0gOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiB0LmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgdCAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIHQKICAgICAgICB9KSh0KQogICAgfQoKICAgIGZ1bmN0aW9uIGEodCwgZSkgewogICAgICAgIGlmICghKHQgaW5zdGFuY2VvZiBlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIikKICAgIH0KCiAgICBmdW5jdGlvbiBzKHQsIGUpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGEgPSBlW2ldOwogICAgICAgICAgICBhLmVudW1lcmFibGUgPSBhLmVudW1lcmFibGUgfHwgITEsIGEuY29uZmlndXJhYmxlID0gITAsICJ2YWx1ZSIgaW4gYSAmJiAoYS53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGEua2V5LCBhKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByKHQsIGUsIGkpIHsKICAgICAgICByZXR1cm4gZSAmJiBzKHQucHJvdG90eXBlLCBlKSwgaSAmJiBzKHQsIGkpLCB0CiAgICB9CgogICAgZnVuY3Rpb24gbyh0LCBlLCBpKSB7CiAgICAgICAgcmV0dXJuIGUgaW4gdCA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBlLCB7CiAgICAgICAgICAgIHZhbHVlOiBpLAogICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgfSkgOiB0W2VdID0gaSwgdAogICAgfQoKICAgIGZ1bmN0aW9uIG4odCwgZSkgewogICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7CiAgICAgICAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHsKICAgICAgICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICAgICAgICAgIHZhbHVlOiB0LAogICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICB9CiAgICAgICAgfSksIGUgJiYgaCh0LCBlKQogICAgfQoKICAgIGZ1bmN0aW9uIGwodCkgewogICAgICAgIHJldHVybiAobCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KQogICAgICAgIH0pKHQpCiAgICB9CgogICAgZnVuY3Rpb24gaCh0LCBlKSB7CiAgICAgICAgcmV0dXJuIChoID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdAogICAgICAgIH0pKHQsIGUpCiAgICB9CgogICAgZnVuY3Rpb24gYyh0LCBlKSB7CiAgICAgICAgaWYgKGUgJiYgKCJvYmplY3QiID09IHR5cGVvZiBlIHx8ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTsKICAgICAgICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpOwogICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSh0KQogICAgfQoKICAgIGZ1bmN0aW9uIGQodCkgewogICAgICAgIHZhciBlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgUmVmbGVjdCB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIFByb3h5KSByZXR1cm4gITA7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCAoZnVuY3Rpb24oKSB7fSkpKSwgITAKICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgIH0KICAgICAgICB9KCk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSwgYSA9IGwodCk7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IGwodGhpcykuY29uc3RydWN0b3I7CiAgICAgICAgICAgICAgICBpID0gUmVmbGVjdC5jb25zdHJ1Y3QoYSwgYXJndW1lbnRzLCBzKQogICAgICAgICAgICB9IGVsc2UgaSA9IGEuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgcmV0dXJuIGModGhpcywgaSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZyh0LCBlKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiB0CiAgICAgICAgfSh0KSB8fCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBpID0gbnVsbCA9PSB0ID8gbnVsbCA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgdFtTeW1ib2wuaXRlcmF0b3JdIHx8IHRbIkBAaXRlcmF0b3IiXTsKICAgICAgICAgICAgaWYgKG51bGwgPT0gaSkgcmV0dXJuOwogICAgICAgICAgICB2YXIgYSwgcywgciA9IFtdLAogICAgICAgICAgICAgICAgbyA9ICEwLAogICAgICAgICAgICAgICAgbiA9ICExOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZm9yIChpID0gaS5jYWxsKHQpOyAhKG8gPSAoYSA9IGkubmV4dCgpKS5kb25lKSAmJiAoci5wdXNoKGEudmFsdWUpLCAhZSB8fCByLmxlbmd0aCAhPT0gZSk7IG8gPSAhMCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgIG4gPSAhMCwgcyA9IHQKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgbyB8fCBudWxsID09IGkucmV0dXJuIHx8IGkucmV0dXJuKCkKICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHRocm93IHMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0odCwgZSkgfHwgZih0LCBlKSB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKQogICAgICAgIH0oKQogICAgfQoKICAgIGZ1bmN0aW9uIHUodCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gcCh0KQogICAgICAgIH0odCkgfHwgZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHRbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHRbIkBAaXRlcmF0b3IiXSkgcmV0dXJuIEFycmF5LmZyb20odCkKICAgICAgICB9KHQpIHx8IGYodCkgfHwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpCiAgICAgICAgfSgpCiAgICB9CgogICAgZnVuY3Rpb24gZih0LCBlKSB7CiAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiB0KSByZXR1cm4gcCh0LCBlKTsKICAgICAgICAgICAgdmFyIGkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwgLTEpOwogICAgICAgICAgICByZXR1cm4gIk9iamVjdCIgPT09IGkgJiYgdC5jb25zdHJ1Y3RvciAmJiAoaSA9IHQuY29uc3RydWN0b3IubmFtZSksICJNYXAiID09PSBpIHx8ICJTZXQiID09PSBpID8gQXJyYXkuZnJvbSh0KSA6ICJBcmd1bWVudHMiID09PSBpIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpID8gcCh0LCBlKSA6IHZvaWQgMAogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBwKHQsIGUpIHsKICAgICAgICAobnVsbCA9PSBlIHx8IGUgPiB0Lmxlbmd0aCkgJiYgKGUgPSB0Lmxlbmd0aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGEgPSBuZXcgQXJyYXkoZSk7IGkgPCBlOyBpKyspIGFbaV0gPSB0W2ldOwogICAgICAgIHJldHVybiBhCiAgICB9CiAgICB2YXIgeCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KCkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJzaGFkZVJHQkNvbG9yIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnNwbGl0KCIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0IDwgMCA/IDAgOiAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0IDwgMCA/IC0xICogdCA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludChpWzBdLnNsaWNlKDQpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBwYXJzZUludChpWzFdLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBwYXJzZUludChpWzJdLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyZ2IoIiArIChNYXRoLnJvdW5kKChhIC0gcikgKiBzKSArIHIpICsgIiwiICsgKE1hdGgucm91bmQoKGEgLSBvKSAqIHMpICsgbykgKyAiLCIgKyAoTWF0aC5yb3VuZCgoYSAtIG4pICogcykgKyBuKSArICIpIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzaGFkZUhleENvbG9yIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZUludChlLnNsaWNlKDEpLCAxNiksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0IDwgMCA/IDAgOiAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0IDwgMCA/IC0xICogdCA6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpID4+IDE2LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaSA+PiA4ICYgMjU1LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMjU1ICYgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiMiICsgKDE2Nzc3MjE2ICsgNjU1MzYgKiAoTWF0aC5yb3VuZCgoYSAtIHIpICogcykgKyByKSArIDI1NiAqIChNYXRoLnJvdW5kKChhIC0gbykgKiBzKSArIG8pICsgKE1hdGgucm91bmQoKGEgLSBuKSAqIHMpICsgbikpLnRvU3RyaW5nKDE2KS5zbGljZSgxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzaGFkZUNvbG9yIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaXNDb2xvckhleChpKSA/IHRoaXMuc2hhZGVIZXhDb2xvcihlLCBpKSA6IHRoaXMuc2hhZGVSR0JDb2xvcihlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSwgW3sKICAgICAgICAgICAgICAgIGtleTogImJpbmQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFwcGx5KGUsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzT2JqZWN0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgIm9iamVjdCIgPT09IGkodCkgJiYgIUFycmF5LmlzQXJyYXkodCkgJiYgbnVsbCAhPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSA9PT0gIltvYmplY3QgIiArIHQgKyAiXSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibGlzdFRvQXJyYXkiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCB0Lmxlbmd0aDsgZSsrKSBpW2VdID0gdFtlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiAhPSB0eXBlb2YgT2JqZWN0LmFzc2lnbiAmJiAoT2JqZWN0LmFzc2lnbiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBPYmplY3QodCksIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiBhKSBhLmhhc093blByb3BlcnR5KHMpICYmIChlW3NdID0gYVtzXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gT2JqZWN0LmFzc2lnbih7fSwgdCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNPYmplY3QodCkgJiYgdGhpcy5pc09iamVjdChlKSAmJiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuaXNPYmplY3QoZVtzXSkgJiYgcyBpbiB0ID8gYVtzXSA9IGkuZXh0ZW5kKHRbc10sIGVbc10pIDogT2JqZWN0LmFzc2lnbihhLCBvKHt9LCBzLCBlW3NdKSkKICAgICAgICAgICAgICAgICAgICB9KSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZXh0ZW5kQXJyYXkiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2godC5leHRlbmQoaSwgZSkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlID0gYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb250aE1vZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICUgMTIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2xvbmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodC5pcygiQXJyYXkiLCBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gW10sIHMgPSAwOyBzIDwgZS5sZW5ndGg7IHMrKykgYVtzXSA9IHRoaXMuY2xvbmUoZVtzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0LmlzKCJOdWxsIiwgZSkpIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmlzKCJEYXRlIiwgZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gaShlKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIGUpIGUuaGFzT3duUHJvcGVydHkobykgJiYgKHJbb10gPSB0aGlzLmNsb25lKGVbb10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibG9nMTAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5sb2codCkgLyBNYXRoLkxOMTAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicm91bmRUb0Jhc2UxMCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZzEwKHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicm91bmRUb0Jhc2UiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5wb3coZSwgTWF0aC5mbG9vcihNYXRoLmxvZyh0KSAvIE1hdGgubG9nKGUpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicGFyc2VOdW1iZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gdCA/IHQgOiBwYXJzZUZsb2F0KHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJhbmRvbUlkIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKyAxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm5vRXhwb25lbnRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBTdHJpbmcodCkuc3BsaXQoL1tlRV0vKTsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZS5sZW5ndGgpIHJldHVybiBlWzBdOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0IDwgMCA/ICItIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZVswXS5yZXBsYWNlKCIuIiwgIiIpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gTnVtYmVyKGVbMV0pICsgMTsKICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gYSArICIwLiI7IHIrKzspIGkgKz0gIjAiOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSArIHMucmVwbGFjZSgvXi0vLCAiIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yIChyIC09IHMubGVuZ3RoOyByLS07KSBpICs9ICIwIjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyArIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0RGltZW5zaW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0LCBudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY2xpZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jbGllbnRXaWR0aDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAtPSBwYXJzZUZsb2F0KGUucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KGUucGFkZGluZ0JvdHRvbSksIFthIC09IHBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkgKyBwYXJzZUZsb2F0KGUucGFkZGluZ1JpZ2h0KSwgaV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBlLnJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IGUuYm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0LmNsaWVudFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQuY2xpZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICB4OiBlLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUudG9wCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRMYXJnZXN0U3RyaW5nRnJvbUFyciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlKSAmJiAoZSA9IGUucmVkdWNlKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggPiBlLmxlbmd0aCA/IHQgOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIHQubGVuZ3RoID4gZS5sZW5ndGggPyB0IDogZQogICAgICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoZXhUb1JnYmEiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAiIzk5OTk5OSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IC42OwogICAgICAgICAgICAgICAgICAgICIjIiAhPT0gdC5zdWJzdHJpbmcoMCwgMSkgJiYgKHQgPSAiIzk5OTk5OSIpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5yZXBsYWNlKCIjIiwgIiIpOwogICAgICAgICAgICAgICAgICAgIGkgPSBpLm1hdGNoKG5ldyBSZWdFeHAoIigueyIgKyBpLmxlbmd0aCAvIDMgKyAifSkiLCAiZyIpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IGkubGVuZ3RoOyBhKyspIGlbYV0gPSBwYXJzZUludCgxID09PSBpW2FdLmxlbmd0aCA/IGlbYV0gKyBpW2FdIDogaVthXSwgMTYpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IGUgJiYgaS5wdXNoKGUpLCAicmdiYSgiICsgaS5qb2luKCIsIikgKyAiKSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0T3BhY2l0eUZyb21SR0JBIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9eLiosKC4rKVwpLywgIiQxIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJnYjJoZXgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHQgPSB0Lm1hdGNoKC9ecmdiYT9bXHMrXT9cKFtccytdPyhcZCspW1xzK10/LFtccytdPyhcZCspW1xzK10/LFtccytdPyhcZCspW1xzK10/L2kpKSAmJiA0ID09PSB0Lmxlbmd0aCA/ICIjIiArICgiMCIgKyBwYXJzZUludCh0WzFdLCAxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikgKyAoIjAiICsgcGFyc2VJbnQodFsyXSwgMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpICsgKCIwIiArIHBhcnNlSW50KHRbM10sIDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSA6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzQ29sb3JIZXgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKXwoXiNbMC05QS1GXXs4fSQpL2kudGVzdCh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRQb2x5Z29uUG9zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCBhID0gMiAqIE1hdGguUEkgLyBlLCBzID0gMDsgcyA8IGU7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICByLnggPSB0ICogTWF0aC5zaW4ocyAqIGEpLCByLnkgPSAtdCAqIE1hdGguY29zKHMgKiBhKSwgaS5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBvbGFyVG9DYXJ0ZXNpYW4iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IChhIC0gOTApICogTWF0aC5QSSAvIDE4MDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0ICsgaSAqIE1hdGguY29zKHMpLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlICsgaSAqIE1hdGguc2luKHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJlc2NhcGVTdHJpbmciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogIngiLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC50b1N0cmluZygpLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPSBpLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpX3wrXC09Pzs6JyIsLjw+e31bXF1cXC9dL2dpLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJuZWdUb1plcm8iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA8IDAgPyAwIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlSW5kZXhJbkFycmF5IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gdC5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBpIC0gdC5sZW5ndGggKyAxOyBhLS07KSB0LnB1c2godm9pZCAwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpY2UoaSwgMCwgdC5zcGxpY2UoZSwgMSlbMF0pLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4dHJhY3ROdW1iZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL1teXGQuXSovZywgIiIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJmaW5kQW5jZXN0b3IiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsKICAgICAgICAgICAgICAgICAgICAgICAgKHQgPSB0LnBhcmVudEVsZW1lbnQpICYmICF0LmNsYXNzTGlzdC5jb250YWlucyhlKTspOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldEVMc3R5bGVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBlKSBlLmhhc093blByb3BlcnR5KGkpICYmICh0LnN0eWxlLmtleSA9IGVbaV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzTnVtYmVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc05hTih0KSAmJiBwYXJzZUZsb2F0KE51bWJlcih0KSkgPT09IHQgJiYgIWlzTmFOKHBhcnNlSW50KHQsIDEwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNGbG9hdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodCkgPT09IHQgJiYgdCAlIDEgIT0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc1NhZmFyaSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNGaXJlZm94IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKSA+IC0xCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzSUUxMSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikgfHwgd2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIlRyaWRlbnQvIikgPiAtMSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImlzSUUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0LmluZGV4T2YoIk1TSUUgIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPiAwKSByZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcoZSArIDUsIHQuaW5kZXhPZigiLiIsIGUpKSwgMTApOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmluZGV4T2YoIlRyaWRlbnQvIikgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5pbmRleE9mKCJydjoiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGkgKyAzLCB0LmluZGV4T2YoIi4iLCBpKSksIDEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuaW5kZXhPZigiRWRnZS8iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA+IDAgJiYgcGFyc2VJbnQodC5zdWJzdHJpbmcoYSArIDUsIHQuaW5kZXhPZigiLiIsIGEpKSwgMTApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBiID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMuc2V0RWFzaW5nRnVuY3Rpb25zKCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAic2V0RWFzaW5nRnVuY3Rpb25zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudy5nbG9iYWxzLmVhc2luZykgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lYXNpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmVhciI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICItIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVhc2VpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICI8IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVhc2VvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAiPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlYXNlaW5vdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAiPD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic3dpbmciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gMS43MDE1ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0IC09IDEpICogdCAqICgoZSArIDEpICogdCArIGUpICsgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3VuY2UiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDwgMSAvIDIuNzUgPyA3LjU2MjUgKiB0ICogdCA6IHQgPCAyIC8gMi43NSA/IDcuNTYyNSAqICh0IC09IDEuNSAvIDIuNzUpICogdCArIC43NSA6IHQgPCAyLjUgLyAyLjc1ID8gNy41NjI1ICogKHQgLT0gMi4yNSAvIDIuNzUpICogdCArIC45Mzc1IDogNy41NjI1ICogKHQgLT0gMi42MjUgLyAyLjc1KSAqIHQgKyAuOTg0Mzc1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImVsYXN0aWMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID09PSAhIXQgPyB0IDogTWF0aC5wb3coMiwgLTEwICogdCkgKiBNYXRoLnNpbigodCAtIC4wNzUpICogKDIgKiBNYXRoLlBJKSAvIC4zKSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gIjw+IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudy5nbG9iYWxzLmVhc2luZyA9IHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFuaW1hdGVMaW5lIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhbmltYXRlTWFya2VyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgZSB8fCAoZSA9IDApLCB0LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICByOiBlLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlCiAgICAgICAgICAgICAgICAgICAgfSkuYW5pbWF0ZShhLCBzKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgcjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KS5hZnRlckFsbCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIoKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhbmltYXRlQ2lyY2xlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgcjogZS5yLAogICAgICAgICAgICAgICAgICAgICAgICBjeDogZS5jeCwKICAgICAgICAgICAgICAgICAgICAgICAgY3k6IGUuY3kKICAgICAgICAgICAgICAgICAgICB9KS5hbmltYXRlKGEsIHMpLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICByOiBpLnIsCiAgICAgICAgICAgICAgICAgICAgICAgIGN4OiBpLmN4LAogICAgICAgICAgICAgICAgICAgICAgICBjeTogaS5jeQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFuaW1hdGVSZWN0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKS5hZnRlckFsbCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYW5pbWF0ZVBhdGhzR3JhZHVhbGx5IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmVsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmZpbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnBhdGhGcm9tLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5wYXRoVG8sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnNwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5kZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgaC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQgJiYgKGMgPSBoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkpLCBoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCAmJiBoLmdsb2JhbHMuZGF0YUNoYW5nZWQgJiYgImJhciIgIT09IGguY29uZmlnLmNoYXJ0LnR5cGUgJiYgKGMgPSAwKSwgdGhpcy5tb3JwaFNWRyhlLCBpLCBhLCAibGluZSIgIT09IGguY29uZmlnLmNoYXJ0LnR5cGUgfHwgaC5nbG9iYWxzLmNvbWJvQ2hhcnRzID8gcyA6ICJzdHJva2UiLCByLCBvLCBuLCBsICogYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2hvd0RlbGF5ZWRFbGVtZW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5lbC5jbGFzc0xpc3QucmVtb3ZlKCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYW5pbWF0aW9uQ29tcGxldGVkIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkIHx8IChlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQgPSAhMCwgdGhpcy5zaG93RGVsYXllZEVsZW1lbnRzKCksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5hbmltYXRpb25FbmQgJiYgZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCh0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgdzogZQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3JwaFNWRyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgciwgbywgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBzIHx8IChzID0gdC5hdHRyKCJwYXRoRnJvbSIpKSwgciB8fCAociA9IHQuYXR0cigicGF0aFRvIikpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJhZGFyIiA9PT0gaC5jb25maWcuY2hhcnQudHlwZSAmJiAobyA9IDEpLCAiTSAwICIuY29uY2F0KGguZ2xvYmFscy5ncmlkSGVpZ2h0KQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgKCFzIHx8IHMuaW5kZXhPZigidW5kZWZpbmVkIikgPiAtMSB8fCBzLmluZGV4T2YoIk5hTiIpID4gLTEpICYmIChzID0gYygpKSwgKCFyIHx8IHIuaW5kZXhPZigidW5kZWZpbmVkIikgPiAtMSB8fCByLmluZGV4T2YoIk5hTiIpID4gLTEpICYmIChyID0gYygpKSwgaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUgfHwgKG8gPSAxKSwgdC5wbG90KHMpLmFuaW1hdGUoMSwgaC5nbG9iYWxzLmVhc2luZywgbikucGxvdChzKS5hbmltYXRlKG8sIGguZ2xvYmFscy5lYXNpbmcsIG4pLnBsb3QocikuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB4LmlzTnVtYmVyKGkpID8gaSA9PT0gaC5nbG9iYWxzLnNlcmllc1toLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoIC0gMiAmJiBoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSAmJiBsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KSA6ICJub25lIiAhPT0gYSAmJiBoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSAmJiAoIWguZ2xvYmFscy5jb21ib0NoYXJ0cyAmJiBlID09PSBoLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCAtIDEgfHwgaC5nbG9iYWxzLmNvbWJvQ2hhcnRzKSAmJiBsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KSwgbC5zaG93RGVsYXllZEVsZW1lbnRzKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXREZWZhdWx0RmlsdGVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdC51bmZpbHRlcighMCksIChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoIjEyMCUiLCAiMTgwJSIsICItNSUiLCAiLTQwJSIpLCAibm9uZSIgIT09IGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyID8gdGhpcy5hcHBseUZpbHRlcih0LCBlLCBpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlLCBpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci52YWx1ZSkgOiBpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQgJiYgdGhpcy5kcm9wU2hhZG93KHQsIGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZE5vcm1hbEZpbHRlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCAmJiAhdC5ub2RlLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1tYXJrZXIiKSAmJiB0aGlzLmRyb3BTaGFkb3codCwgaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdywgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkTGlnaHRlbkZpbHRlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuaW50ZW5zaXR5OwogICAgICAgICAgICAgICAgICAgIHQudW5maWx0ZXIoITApOwogICAgICAgICAgICAgICAgICAgIG5ldyB3aW5kb3cuU1ZHLkZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB0LmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIChpLmVuYWJsZWQgPyBhLmFkZFNoYWRvdyh0LCBlLCBpKSA6IHQpLmNvbXBvbmVudFRyYW5zZmVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3BlOiAxLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJjZXB0OiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKCJmaWx0ZXJVbml0cyIsICJ1c2VyU3BhY2VPblVzZSIpLCB0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGREYXJrZW5GaWx0ZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmludGVuc2l0eTsKICAgICAgICAgICAgICAgICAgICB0LnVuZmlsdGVyKCEwKTsKICAgICAgICAgICAgICAgICAgICBuZXcgd2luZG93LlNWRy5GaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBzLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAoaS5lbmFibGVkID8gYS5hZGRTaGFkb3codCwgZSwgaSkgOiB0KS5jb21wb25lbnRUcmFuc2Zlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2I6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG9wZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZSgiZmlsdGVyVW5pdHMiLCAidXNlclNwYWNlT25Vc2UiKSwgdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYXBwbHlGaWx0ZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogLjU7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm5vbmUiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGROb3JtYWxGaWx0ZXIodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGlnaHRlbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIodCwgZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVuc2l0eTogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGFya2VuIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGFya2VuRmlsdGVyKHQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnNpdHk6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRTaGFkb3ciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkuYmx1ciwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkudG9wLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuZmxvb2QoQXJyYXkuaXNBcnJheShvKSA/IG9bZV0gOiBvLCBuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSwgImluIikub2Zmc2V0KHIsIHMpLmdhdXNzaWFuQmx1cihhKS5tZXJnZSh0LnNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYmxlbmQodC5zb3VyY2UsIGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyb3BTaGFkb3ciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUudG9wLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS5ibHVyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGUubm9Vc2VyU3BhY2VPblVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC51bmZpbHRlcighMCksIHguaXNJRSgpICYmICJyYWRpYWxCYXIiID09PSBoLmNvbmZpZy5jaGFydC50eXBlIHx8IChvID0gQXJyYXkuaXNBcnJheShvKSA/IG9baV0gOiBvLCB0LmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB4LmlzU2FmYXJpKCkgfHwgeC5pc0ZpcmVmb3goKSB8fCB4LmlzSUUoKSA/IHQuZmxvb2QobywgbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsICJpbiIpLm9mZnNldChzLCBhKS5nYXVzc2lhbkJsdXIocikgOiB0LmZsb29kKG8sIG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLCAiaW4iKS5vZmZzZXQocywgYSkuZ2F1c3NpYW5CbHVyKHIpLm1lcmdlKHQuc291cmNlKSwgdC5ibGVuZCh0LnNvdXJjZSwgZSkKICAgICAgICAgICAgICAgICAgICB9KSksIGwgfHwgdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZSgiZmlsdGVyVW5pdHMiLCAidXNlclNwYWNlT25Vc2UiKSwgdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFNlbGVjdGlvbkZpbHRlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGEuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbZV0gJiYgYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXS5pbmRleE9mKGkpID4gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5ub2RlLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICJub25lIiAhPT0gcyAmJiB0aGlzLmFwcGx5RmlsdGVyKHQsIGUsIHMudHlwZSwgcy52YWx1ZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9zY2FsZUZpbHRlclNpemUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBlKSBlLmhhc093blByb3BlcnR5KGkpICYmIHQuc2V0QXR0cmlidXRlKGksIGVbaV0pCiAgICAgICAgICAgICAgICAgICAgfSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMjAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogIjIwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICB4OiAiLTUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6ICItNTAlIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0xpbmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzRdID8gYXJndW1lbnRzWzRdIDogIiNhOGE4YTgiLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNV0gPyBhcmd1bWVudHNbNV0gOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDYgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNl0gPyBhcmd1bWVudHNbNl0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbN10gPyBhcmd1bWVudHNbN10gOiAiYnV0dCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS1kYXNoYXJyYXkiOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLWxpbmVjYXAiOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdSZWN0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzRdID8gYXJndW1lbnRzWzRdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzVdID8gYXJndW1lbnRzWzVdIDogIiNmZWZlZmUiLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDYgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNl0gPyBhcmd1bWVudHNbNl0gOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbN10gPyBhcmd1bWVudHNbN10gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYXJndW1lbnRzLmxlbmd0aCA+IDggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbOF0gPyBhcmd1bWVudHNbOF0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbOV0gPyBhcmd1bWVudHNbOV0gOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBkID0gYy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpID4gMCA/IGkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEgPiAwID8gYSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICByeTogcywKICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogbywKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IG51bGwgIT09IG4gPyBuIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBudWxsICE9PSBsID8gbCA6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS1kYXNoYXJyYXkiOiBoCiAgICAgICAgICAgICAgICAgICAgfSksIGQubm9kZS5zZXRBdHRyaWJ1dGUoImZpbGwiLCByKSwgZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3UG9seWdvbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiAiI2UxZTFlMSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbih0KS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLXdpZHRoIjogaQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3Q2lyY2xlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdCA8IDAgJiYgKHQgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkuZ2xvYmFscy5kb20uUGFwZXIuY2lyY2xlKDIgKiB0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiBhLmF0dHIoZSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1BhdGgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHZvaWQgMCA9PT0gZSA/ICIiIDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuc3Ryb2tlLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdm9pZCAwID09PSBhID8gIiNhOGE4YTgiIDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgPT09IHIgPyAxIDogciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZmlsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuZmlsbE9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB2b2lkIDAgPT09IGwgPyAxIDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHQuc3Ryb2tlT3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHZvaWQgMCA9PT0gYyA/IDEgOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC5jbGFzc2VzLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5zdHJva2VMaW5lY2FwLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdm9pZCAwID09PSB1ID8gbnVsbCA6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0LnN0cm9rZURhc2hBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHZvaWQgMCA9PT0gcCA/IDAgOiBwLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBmICYmIChmID0gYi5jb25maWcuc3Ryb2tlLmxpbmVDYXApLCAoaS5pbmRleE9mKCJ1bmRlZmluZWQiKSA+IC0xIHx8IGkuaW5kZXhPZigiTmFOIikgPiAtMSkgJiYgKGkgPSAiTSAwICIuY29uY2F0KGIuZ2xvYmFscy5ncmlkSGVpZ2h0KSksIGIuZ2xvYmFscy5kb20uUGFwZXIucGF0aChpKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgImZpbGwtb3BhY2l0eSI6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogcywKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS1vcGFjaXR5IjogZCwKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS1saW5lY2FwIjogZiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2UtZGFzaGFycmF5IjogeCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGcKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJncm91cCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmdsb2JhbHMuZG9tLlBhcGVyLmdyb3VwKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHQgJiYgaS5hdHRyKHQpLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm1vdmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFsiTSIsIHQsIGVdLmpvaW4oIiAiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJsaW5lIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09PSBpID8gYSA9IFsiTCIsIHQsIGVdLmpvaW4oIiAiKSA6ICJIIiA9PT0gaSA/IGEgPSBbIkgiLCB0XS5qb2luKCIgIikgOiAiViIgPT09IGkgJiYgKGEgPSBbIlYiLCBlXS5qb2luKCIgIikpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImN1cnZlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBbIkMiLCB0LCBlLCBpLCBhLCBzLCByXS5qb2luKCIgIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicXVhZHJhdGljQ3VydmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJRIiwgdCwgZSwgaSwgYV0uam9pbigiICIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFyYyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgciwgbykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbN10gJiYgYXJndW1lbnRzWzddLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gIkEiOwogICAgICAgICAgICAgICAgICAgIG4gJiYgKGwgPSAiYSIpOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gW2wsIHQsIGUsIGksIGEsIHMsIHIsIG9dLmpvaW4oIiAiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJyZW5kZXJQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBhID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnBhdGhGcm9tLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5wYXRoVG8sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnN0cm9rZSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LnN0cm9rZUxpbmVjYXAsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmZpbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LmFuaW1hdGlvbkRlbGF5LAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC5pbml0aWFsU3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LmRhdGFDaGFuZ2VTcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQuY2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdC5zaG91bGRDbGlwVG9HcmlkLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gdm9pZCAwID09PSBwIHx8IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0LmJpbmRFdmVudHNPblBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdm9pZCAwID09PSBtIHx8IG0sCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB0LmRyYXdTaGFkb3csCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB2b2lkIDAgPT09IHcgfHwgdywKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgUyA9IG5ldyB2KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IG5ldyBiKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICBQID0gTCAmJiB0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICBNID0gISEoTCAmJiAhQS5nbG9iYWxzLnJlc2l6ZWQgfHwgUCAmJiBBLmdsb2JhbHMuZGF0YUNoYW5nZWQgJiYgQS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpOwogICAgICAgICAgICAgICAgICAgIE0gPyBpID0gciA6IChpID0gbywgQS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkID0gITApOwogICAgICAgICAgICAgICAgICAgIHZhciBUID0gQS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgSSA9IDA7CiAgICAgICAgICAgICAgICAgICAgSSA9IEFycmF5LmlzQXJyYXkoVCkgPyBUW3NdIDogQS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheTsKICAgICAgICAgICAgICAgICAgICB2YXIgeiA9IHRoaXMuZHJhd1BhdGgoewogICAgICAgICAgICAgICAgICAgICAgICBkOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBsLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NlczogZiwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlRGFzaEFycmF5OiBJCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHouYXR0cigiaW5kZXgiLCBzKSwgeCAmJiB6LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaXAtcGF0aCI6ICJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KEEuZ2xvYmFscy5jdWlkLCAiKSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAibm9uZSIgIT09IEEuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnR5cGUpIFMuZ2V0RGVmYXVsdEZpbHRlcih6LCBzKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQgJiYgayAmJiAoIUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzIHx8IEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzICYmIC0xICE9PSBBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgWCA9IEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIFMuZHJvcFNoYWRvdyh6LCBYLCBzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB5ICYmICh6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLCB6KSksIHoubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsIHopKSwgei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsIHopKSksIHouYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhUbzogbywKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IHIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgRSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IHosCiAgICAgICAgICAgICAgICAgICAgICAgIGo6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhUbzogbywKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogYywKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBkCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIUwgfHwgQS5nbG9iYWxzLnJlc2l6ZWQgfHwgQS5nbG9iYWxzLmRhdGFDaGFuZ2VkID8gIUEuZ2xvYmFscy5yZXNpemVkICYmIEEuZ2xvYmFscy5kYXRhQ2hhbmdlZCB8fCBDLnNob3dEZWxheWVkRWxlbWVudHMoKSA6IEMuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KGUoZSh7fSwgRSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiBnCiAgICAgICAgICAgICAgICAgICAgfSkpLCBBLmdsb2JhbHMuZGF0YUNoYW5nZWQgJiYgUCAmJiBNICYmIEMuYW5pbWF0ZVBhdGhzR3JhZHVhbGx5KGUoZSh7fSwgRSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiB1CiAgICAgICAgICAgICAgICAgICAgfSkpLCB6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdQYXR0ZXJuIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6ICIjYThhOGE4IiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzRdID8gYXJndW1lbnRzWzRdIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIuZ2xvYmFscy5kb20uUGFwZXIucGF0dGVybihlLCBpLCAoZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvcml6b250YWxMaW5lcyIgPT09IHQgPyByLmxpbmUoMCwgMCwgaSwgMCkuc3Ryb2tlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogcyArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogInZlcnRpY2FsTGluZXMiID09PSB0ID8gci5saW5lKDAsIDAsIDAsIGUpLnN0cm9rZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICJzbGFudGVkTGluZXMiID09PSB0ID8gci5saW5lKDAsIDAsIGUsIGkpLnN0cm9rZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogInNxdWFyZXMiID09PSB0ID8gci5yZWN0KGUsIGkpLmZpbGwoIm5vbmUiKS5zdHJva2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICJjaXJjbGVzIiA9PT0gdCAmJiByLmNpcmNsZShlKS5maWxsKCJub25lIikuc3Ryb2tlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdHcmFkaWVudCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBvID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNV0gPyBhcmd1bWVudHNbNV0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDYgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNl0gPyBhcmd1bWVudHNbNl0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYXJndW1lbnRzLmxlbmd0aCA+IDcgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbN10gPyBhcmd1bWVudHNbN10gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gYXJndW1lbnRzLmxlbmd0aCA+IDggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbOF0gPyBhcmd1bWVudHNbOF0gOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoIDwgOSAmJiAwID09PSBlLmluZGV4T2YoIiMiKSAmJiAoZSA9IHguaGV4VG9SZ2JhKGUsIGEpKSwgaS5sZW5ndGggPCA5ICYmIDAgPT09IGkuaW5kZXhPZigiIyIpICYmIChpID0geC5oZXhUb1JnYmEoaSwgcykpOwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIChkID0gdm9pZCAwICE9PSBuWzBdID8gblswXSAvIDEwMCA6IDAsIGcgPSB2b2lkIDAgIT09IG5bMV0gPyBuWzFdIC8gMTAwIDogMSwgdSA9IHZvaWQgMCAhPT0gblsyXSA/IG5bMl0gLyAxMDAgOiAxLCBmID0gdm9pZCAwICE9PSBuWzNdID8gblszXSAvIDEwMCA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgIHZhciBwID0gISgiZG9udXQiICE9PSBjLmNvbmZpZy5jaGFydC50eXBlICYmICJwaWUiICE9PSBjLmNvbmZpZy5jaGFydC50eXBlICYmICJwb2xhckFyZWEiICE9PSBjLmNvbmZpZy5jaGFydC50eXBlICYmICJidWJibGUiICE9PSBjLmNvbmZpZy5jaGFydC50eXBlKTsKICAgICAgICAgICAgICAgICAgICBpZiAociA9IG51bGwgPT09IGwgfHwgMCA9PT0gbC5sZW5ndGggPyBjLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KHAgPyAicmFkaWFsIiA6ICJsaW5lYXIiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hdChkLCBlLCBhKSwgdC5hdChnLCBpLCBzKSwgdC5hdCh1LCBpLCBzKSwgbnVsbCAhPT0gZiAmJiB0LmF0KGYsIGUsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGMuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQocCA/ICJyYWRpYWwiIDogImxpbmVhciIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShsW2hdKSA/IGxbaF0gOiBsKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hdChlLm9mZnNldCAvIDEwMCwgZS5jb2xvciwgZS5vcGFjaXR5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGMuZ2xvYmFscy5ncmlkV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGMuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgImJ1YmJsZSIgIT09IGMuY29uZmlnLmNoYXJ0LnR5cGUgPyByLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRVbml0czogInVzZXJTcGFjZU9uVXNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4OiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogci5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4OiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5OiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IC44LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZng6IC4yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnk6IC4yCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJ2ZXJ0aWNhbCIgPT09IHQgPyByLmZyb20oMCwgMCkudG8oMCwgMSkgOiAiZGlhZ29uYWwiID09PSB0ID8gci5mcm9tKDAsIDApLnRvKDEsIDEpIDogImhvcml6b250YWwiID09PSB0ID8gci5mcm9tKDAsIDEpLnRvKDEsIDEpIDogImRpYWdvbmFsMiIgPT09IHQgJiYgci5mcm9tKDEsIDApLnRvKDAsIDEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFRleHRCYXNlZE9uTWF4V2lkdGgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQudGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQubWF4V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5nZXRUZXh0UmVjdHMoZSwgYSwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLndpZHRoIC8gZS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLmZsb29yKGkgLyBvKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA8IHIud2lkdGggPyBlLnNsaWNlKDAsIG4gLSAzKSArICIuLi4iIDogZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3VGV4dCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQudGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQudGV4dEFuY2hvciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmZvcmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHQub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQubWF4V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LmNzc0NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdm9pZCAwID09PSB1ID8gIiIgOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdC5pc1BsYWluVGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHZvaWQgMCA9PT0gcCB8fCBwLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gciAmJiAociA9ICIiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHI7CiAgICAgICAgICAgICAgICAgICAgbyB8fCAobyA9ICJzdGFydCIpLCBjICYmIGMubGVuZ3RoIHx8IChjID0gYi5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSwgbCA9IGwgfHwgYi5jb25maWcuY2hhcnQuZm9udEZhbWlseSwgaCA9IGggfHwgInJlZ3VsYXIiOwogICAgICAgICAgICAgICAgICAgIHZhciBtLCB5ID0gewogICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogZywKICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IG4gPSBuIHx8ICIxMXB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogbAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocikgPyBtID0gYi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgci5sZW5ndGg7IGErKykgZyAmJiAodiA9IGkuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHJbYV0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgeSkpKSwgMCA9PT0gYSA/IHQudHNwYW4odikgOiB0LnRzcGFuKHYpLm5ld0xpbmUoKQogICAgICAgICAgICAgICAgICAgIH0pKSA6IChnICYmICh2ID0gdGhpcy5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKGUoewogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiByCiAgICAgICAgICAgICAgICAgICAgfSwgeSkpKSwgbSA9IHggPyBiLmdsb2JhbHMuZG9tLlBhcGVyLnBsYWluKHIpIDogYi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnRzcGFuKHYpCiAgICAgICAgICAgICAgICAgICAgfSkpKSwgbS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogcywKICAgICAgICAgICAgICAgICAgICAgICAgInRleHQtYW5jaG9yIjogbywKICAgICAgICAgICAgICAgICAgICAgICAgImRvbWluYW50LWJhc2VsaW5lIjogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAiZm9udC1zaXplIjogbiwKICAgICAgICAgICAgICAgICAgICAgICAgImZvbnQtZmFtaWx5IjogbCwKICAgICAgICAgICAgICAgICAgICAgICAgImZvbnQtd2VpZ2h0IjogaCwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogYywKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXRleHQgIiArIGYKICAgICAgICAgICAgICAgICAgICB9KSwgbS5ub2RlLnN0eWxlLmZvbnRGYW1pbHkgPSBsLCBtLm5vZGUuc3R5bGUub3BhY2l0eSA9IGQsIG0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd01hcmtlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHQgPSB0IHx8IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLnBTaXplIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmICgic3F1YXJlIiA9PT0gaS5zaGFwZSB8fCAicmVjdCIgPT09IGkuc2hhcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB2b2lkIDAgPT09IGkucFJhZGl1cyA/IGEgLyAyIDogaS5wUmFkaXVzOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBlICYmIGEgfHwgKGEgPSAwLCByID0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gMS4yICogYSArIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5kcmF3UmVjdChvLCBvLCBvLCBvLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQgLSBvIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUgLSBvIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogaS5jbGFzcyA/IGkuY2xhc3MgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGkucG9pbnRGaWxsQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsbC1vcGFjaXR5IjogaS5wb2ludEZpbGxPcGFjaXR5ID8gaS5wb2ludEZpbGxPcGFjaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogaS5wb2ludFN0cm9rZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IGkucG9pbnRTdHJva2VXaWR0aCA/IGkucG9pbnRTdHJva2VXaWR0aCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLW9wYWNpdHkiOiBpLnBvaW50U3Ryb2tlT3BhY2l0eSA/IGkucG9pbnRTdHJva2VPcGFjaXR5IDogMQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgcyA9IG4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgImNpcmNsZSIgIT09IGkuc2hhcGUgJiYgaS5zaGFwZSB8fCAoeC5pc051bWJlcihlKSB8fCAoYSA9IDAsIGUgPSAwKSwgcyA9IHRoaXMuZHJhd0NpcmNsZShhLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICBjeTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGkuY2xhc3MgPyBpLmNsYXNzIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogaS5wb2ludFN0cm9rZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBpLnBvaW50RmlsbENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAiZmlsbC1vcGFjaXR5IjogaS5wb2ludEZpbGxPcGFjaXR5ID8gaS5wb2ludEZpbGxPcGFjaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IGkucG9pbnRTdHJva2VXaWR0aCA/IGkucG9pbnRTdHJva2VXaWR0aCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2Utb3BhY2l0eSI6IGkucG9pbnRTdHJva2VPcGFjaXR5ID8gaS5wb2ludFN0cm9rZU9wYWNpdHkgOiAxCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBhdGhNb3VzZUVudGVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgdih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJpbmRleCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJqIiksIDEwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXIgJiYgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXIoZSwgdGhpcy5jdHgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJkYXRhUG9pbnRNb3VzZUVudGVyIiwgW2UsIHRoaXMuY3R4LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogaQogICAgICAgICAgICAgICAgICAgICAgICB9XSksICgibm9uZSIgPT09IGkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUgfHwgInRydWUiICE9PSB0Lm5vZGUuZ2V0QXR0cmlidXRlKCJzZWxlY3RlZCIpKSAmJiAibm9uZSIgIT09IGkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSAmJiAhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyOwogICAgICAgICAgICAgICAgICAgICAgICBhLmFwcGx5RmlsdGVyKHQsIHMsIG8udHlwZSwgby52YWx1ZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBhdGhNb3VzZUxlYXZlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgdih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJpbmRleCIpLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKCJqIiksIDEwKTsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZSAmJiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZShlLCB0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudCgiZGF0YVBvaW50TW91c2VMZWF2ZSIsIFtlLCB0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGkKICAgICAgICAgICAgICAgICAgICB9XSksICJub25lIiAhPT0gaS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSAmJiAidHJ1ZSIgPT09IHQubm9kZS5nZXRBdHRyaWJ1dGUoInNlbGVjdGVkIikgfHwgIm5vbmUiICE9PSBpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUgJiYgYS5nZXREZWZhdWx0RmlsdGVyKHQsIHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBhdGhNb3VzZURvd24iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyB2KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoImluZGV4IiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoImoiKSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gImZhbHNlIjsKICAgICAgICAgICAgICAgICAgICBpZiAoInRydWUiID09PSB0Lm5vZGUuZ2V0QXR0cmlidXRlKCJzZWxlY3RlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm5vZGUuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsICJmYWxzZSIpLCBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2YocikgPiAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnNwbGljZShuLCAxKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmFsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uICYmIGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBpLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGgiKS5tZW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiLmFwZXhjaGFydHMtc2VyaWVzIGNpcmNsZSwgLmFwZXhjaGFydHMtc2VyaWVzIHJlY3QiKS5tZW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubm9kZS5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgImZhbHNlIiksIGEuZ2V0RGVmYXVsdEZpbHRlcih0LCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhsKSwgYyhoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQubm9kZS5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIiwgInRydWUiKSwgbyA9ICJ0cnVlIiwgdm9pZCAwID09PSBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdICYmIChpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdID0gW10pLCBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnB1c2gocikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0cnVlIiA9PT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm5vbmUiICE9PSBkKSBhLmFwcGx5RmlsdGVyKHQsIHMsIGQudHlwZSwgZC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJub25lIiAhPT0gaS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlciAmJiAhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gaS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuYXBwbHlGaWx0ZXIodCwgcywgZy50eXBlLCBnLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgibm9uZSIgIT09IGkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgibm9uZSIgPT09IGkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSB8fCBpLmdsb2JhbHMuaXNUb3VjaERldmljZSkgYS5nZXREZWZhdWx0RmlsdGVyKHQsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBpLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5hcHBseUZpbHRlcih0LCBzLCBnLnR5cGUsIGcudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50U2VsZWN0aW9uICYmIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24oZSwgdGhpcy5jdHgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhUG9pbnRzOiBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGkKICAgICAgICAgICAgICAgICAgICB9KSwgZSAmJiB0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJkYXRhUG9pbnRTZWxlY3Rpb24iLCBbZSwgdGhpcy5jdHgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhUG9pbnRzOiBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGkKICAgICAgICAgICAgICAgICAgICB9XSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicm90YXRlQXJvdW5kQ2VudGVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB7fTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmdldEJCb3ggJiYgKGUgPSB0LmdldEJCb3goKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54ICsgZS53aWR0aCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUueSArIGUuaGVpZ2h0IC8gMgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0VGV4dFJlY3RzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzRdKSB8fCBhcmd1bWVudHNbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IC0yMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAtMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJzdGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgYSAmJiBvLmF0dHIoInRyYW5zZm9ybSIsIGEpLCByLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG8uYmJveCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzIHx8IChuID0gby5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSwgby5yZW1vdmUoKSwgewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbi53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuLmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicGxhY2VUZXh0V2l0aEVsbGlwc2lzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoICYmICh0LnRleHRDb250ZW50ID0gZSwgZS5sZW5ndGggPiAwICYmIHQuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPj0gaSAvIDEuMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IGUubGVuZ3RoIC0gMzsgYSA+IDA7IGEgLT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmdldFN1YlN0cmluZ0xlbmd0aCgwLCBhKSA8PSBpIC8gMS4xKSByZXR1cm4gdm9pZCh0LnRleHRDb250ZW50ID0gZS5zdWJzdHJpbmcoMCwgYSkgKyAiLi4uIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHQudGV4dENvbnRlbnQgPSAiLiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dLCBbewogICAgICAgICAgICAgICAga2V5OiAic2V0QXR0cnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUpIGUuaGFzT3duUHJvcGVydHkoaSkgJiYgdC5zZXRBdHRyaWJ1dGUoaSwgZVtpXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTdGFja2VkU2VyaWVzVG90YWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmdsb2JhbHMuc2VyaWVzW3QuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMCwgcyA9IDA7IHMgPCB0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsgcysrKSB2b2lkIDAgIT09IHQuZ2xvYmFscy5zZXJpZXNbc11baV0gJiYgKGEgKz0gdC5nbG9iYWxzLnNlcmllc1tzXVtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaChhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHMgPSBlLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFNlcmllc1RvdGFsQnlJbmRleCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgPyB0aGlzLncuY29uZmlnLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyBlCiAgICAgICAgICAgICAgICAgICAgfSksIDApIDogdGhpcy53Lmdsb2JhbHMuc2VyaWVzW3RdLnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUKICAgICAgICAgICAgICAgICAgICB9KSwgMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNTZXJpZXNOdWxsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gKG51bGwgPT09IHQgPyB0aGlzLncuY29uZmlnLnNlcmllcy5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHQKICAgICAgICAgICAgICAgICAgICB9KSkgOiB0aGlzLncuY29uZmlnLnNlcmllc1t0XS5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gdAogICAgICAgICAgICAgICAgICAgIH0pKSkubGVuZ3RoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNlcmllc0hhdmVTYW1lVmFsdWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5ldmVyeSgoZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9PT0gaVswXQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRDYXRlZ29yeUxhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgJiYgKGkgPSB0Lm1hcCgoZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcih0IC0gZS5nbG9iYWxzLm1pblggKyAxKQogICAgICAgICAgICAgICAgICAgIH0pKSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0TGFyZ2VzdFNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXggPSB0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9KSkuaW5kZXhPZihNYXRoLm1heC5hcHBseShNYXRoLCB0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9KSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRMYXJnZXN0TWFya2VyU2l6ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmdsb2JhbHMubWFya2Vycy5zaXplLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGgubWF4KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlICYmIHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoICYmIHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlID0gTWF0aC5tYXgoZSwgdC5zaXplKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZSA+IDAgJiYgKGUgKz0gdC5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0ICsgMSksIHQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplID0gZSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTZXJpZXNUb3RhbHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMgPSB0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCB0Lmxlbmd0aDsgYSsrKSBpICs9IHRbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaSArPSB0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTZXJpZXNUb3RhbHNYUmFuZ2UiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGEsIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IDAsIG8gPSAwOyBvIDwgYS5sZW5ndGg7IG8rKykgaS5nbG9iYWxzLnNlcmllc1hbc11bb10gPiB0ICYmIGkuZ2xvYmFscy5zZXJpZXNYW3NdW29dIDwgZSAmJiAociArPSBhW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0UGVyY2VudFNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLnNlcmllc1BlcmNlbnQgPSB0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgZS5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHNbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgKG8gPSAxMDAgKiBlW3NdIC8gciksIGEucHVzaChvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IDEwMCAqIGUgLyB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldENhbGN1bGF0ZWRSYXRpb3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBlLCBpLCBhLCBzID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IC4xLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAocy55UmFuZ2UgPSBbXSwgcy5pc011bHRpcGxlWUF4aXMpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgcy5taW5ZQXJyLmxlbmd0aDsgYysrKSBzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWUFycltjXSAtIHMubWF4WUFycltjXSkpLCBuLnB1c2goMCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWSAtIHMubWF4WSkpOwogICAgICAgICAgICAgICAgICAgIHMueFJhbmdlID0gTWF0aC5hYnMocy5tYXhYIC0gcy5taW5YKSwgcy56UmFuZ2UgPSBNYXRoLmFicyhzLm1heFogLSBzLm1pblopOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgcy55UmFuZ2UubGVuZ3RoOyBkKyspIHIucHVzaChzLnlSYW5nZVtkXSAvIHMuZ3JpZEhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBzLnhSYW5nZSAvIHMuZ3JpZFdpZHRoLCBpID0gTWF0aC5hYnMocy5pbml0aWFsTWF4WCAtIHMuaW5pdGlhbE1pblgpIC8gcy5ncmlkV2lkdGgsIHQgPSBzLnlSYW5nZSAvIHMuZ3JpZFdpZHRoLCBhID0gcy54UmFuZ2UgLyBzLmdyaWRIZWlnaHQsIChvID0gcy56UmFuZ2UgLyBzLmdyaWRIZWlnaHQgKiAxNikgfHwgKG8gPSAxKSwgcy5taW5ZICE9PSBOdW1iZXIuTUlOX1ZBTFVFICYmIDAgIT09IE1hdGguYWJzKHMubWluWSkgJiYgKHMuaGFzTmVncyA9ICEwKSwgcy5pc011bHRpcGxlWUF4aXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IHIubGVuZ3RoOyBnKyspIG4ucHVzaCgtcy5taW5ZQXJyW2ddIC8gcltnXSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbi5wdXNoKC1zLm1pblkgLyByWzBdKSwgcy5taW5ZICE9PSBOdW1iZXIuTUlOX1ZBTFVFICYmIDAgIT09IE1hdGguYWJzKHMubWluWSkgJiYgKGwgPSAtcy5taW5ZIC8gdCwgaCA9IHMubWluWCAvIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlSYXRpbzogciwKICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRZUmF0aW86IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHpSYXRpbzogbywKICAgICAgICAgICAgICAgICAgICAgICAgeFJhdGlvOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsWFJhdGlvOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnRlZFhSYXRpbzogYSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUxpbmVJbnZlcnRlZFk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VMaW5lWTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUxpbmVYOiBoCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRMb2dTZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuZ2xvYmFscy5zZXJpZXNMb2cgPSB0Lm1hcCgoZnVuY3Rpb24odCwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5jb25maWcueWF4aXNbYV0gJiYgaS5jb25maWcueWF4aXNbYV0ubG9nYXJpdGhtaWMgPyB0Lm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgPyBudWxsIDogZS5nZXRMb2dWYWwoaS5jb25maWcueWF4aXNbYV0ubG9nQmFzZSwgdCwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogdAogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5nbG9iYWxzLmludmFsaWRMb2dTY2FsZSA/IHQgOiBpLmdsb2JhbHMuc2VyaWVzTG9nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEJhc2VMb2ciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5sb2coZSkgLyBNYXRoLmxvZyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRMb2dWYWwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gZSkgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAwID09PSBhLmdsb2JhbHMubWluWUFycltpXSA/IC0xIDogdGhpcy5nZXRCYXNlTG9nKHQsIGEuZ2xvYmFscy5taW5ZQXJyW2ldKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICgwID09PSBhLmdsb2JhbHMubWF4WUFycltpXSA/IDAgOiB0aGlzLmdldEJhc2VMb2codCwgYS5nbG9iYWxzLm1heFlBcnJbaV0pKSAtIHM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAxID8gZSAvIHIgOiAodGhpcy5nZXRCYXNlTG9nKHQsIGUpIC0gcykgLyByCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldExvZ1lSYXRpb3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncuZ2xvYmFsczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS55TG9nUmF0aW8gPSB0LnNsaWNlKCksIGEubG9nWVJhbmdlID0gYS55UmFuZ2UubWFwKChmdW5jdGlvbih0LCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy55YXhpc1tzXSAmJiBlLncuY29uZmlnLnlheGlzW3NdLmxvZ2FyaXRobWljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IC1OdW1iZXIuTUFYX1ZBTFVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBOdW1iZXIuTUlOX1ZBTFVFOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuc2VyaWVzTG9nLmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5jb25maWcueWF4aXNbZV0gJiYgaS5jb25maWcueWF4aXNbZV0ubG9nYXJpdGhtaWMgJiYgKG8gPSBNYXRoLm1heCh0LCBvKSwgbiA9IE1hdGgubWluKHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByID0gTWF0aC5wb3coYS55UmFuZ2Vbc10sIE1hdGguYWJzKG4gLSBvKSAvIGEueVJhbmdlW3NdKSwgYS55TG9nUmF0aW9bc10gPSByIC8gYS5ncmlkSGVpZ2h0LCByCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGEuaW52YWxpZExvZ1NjYWxlID8gdC5zbGljZSgpIDogYS55TG9nUmF0aW8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0sIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJjaGVja0NvbWJvU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCAmJiB2b2lkIDAgIT09IHRbMF0udHlwZSAmJiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgImJhciIgIT09IHQudHlwZSAmJiAiY29sdW1uIiAhPT0gdC50eXBlICYmICJjYW5kbGVzdGljayIgIT09IHQudHlwZSAmJiAiYm94UGxvdCIgIT09IHQudHlwZSB8fCBpKyssIHZvaWQgMCAhPT0gdC50eXBlICYmIGErKwogICAgICAgICAgICAgICAgICAgIH0pKSwgYSA+IDAgJiYgKGUgPSAhMCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29tYm9CYXJDb3VudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgY29tYm9DaGFydHM6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4dGVuZEFycmF5UHJvcHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS55YXhpcyAmJiAoZSA9IHQuZXh0ZW5kWUF4aXMoZSwgaSkpLCBlLmFubm90YXRpb25zICYmIChlLmFubm90YXRpb25zLnlheGlzICYmIChlID0gdC5leHRlbmRZQXhpc0Fubm90YXRpb25zKGUpKSwgZS5hbm5vdGF0aW9ucy54YXhpcyAmJiAoZSA9IHQuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyhlKSksIGUuYW5ub3RhdGlvbnMucG9pbnRzICYmIChlID0gdC5leHRlbmRQb2ludEFubm90YXRpb25zKGUpKSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMuYW5ub0N0eCA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAic2V0T3JpZW50YXRpb25zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ2ZXJ0aWNhbCIgPT09IHQubGFiZWwub3JpZW50YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudWxsICE9PSBlID8gZSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9JyIuY29uY2F0KGEsICInXSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCJ4IiwgcGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZSgieCIpKSAtIHIuaGVpZ2h0ICsgNCksICJ0b3AiID09PSB0LmxhYmVsLnBvc2l0aW9uID8gcy5zZXRBdHRyaWJ1dGUoInkiLCBwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKCJ5IikpICsgci53aWR0aCkgOiBzLnNldEF0dHJpYnV0ZSgieSIsIHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoInkiKSkgLSByLndpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLnJvdGF0ZUFyb3VuZENlbnRlcihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gby54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvLnk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTAgIi5jb25jYXQobiwgIiAiKS5jb25jYXQobCwgIikiKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkQmFja2dyb3VuZFRvQW5ubyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICghdCB8fCB2b2lkIDAgPT09IGUubGFiZWwudGV4dCB8fCB2b2lkIDAgIT09IGUubGFiZWwudGV4dCAmJiAhU3RyaW5nKGUubGFiZWwudGV4dCkudHJpbSgpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWdyaWQiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUubGFiZWwuc3R5bGUucGFkZGluZy50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICJ2ZXJ0aWNhbCIgPT09IGUubGFiZWwub3JpZW50YXRpb24gJiYgKG4gPSBlLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCwgbCA9IGUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCwgciA9IGUubGFiZWwuc3R5bGUucGFkZGluZy50b3AsIG8gPSBlLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHMubGVmdCAtIGEubGVmdCAtIHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLnRvcCAtIGEudG9wIC0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChoIC0gaS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLCBjLCBzLndpZHRoICsgciArIG8sIHMuaGVpZ2h0ICsgbiArIGwsIGUubGFiZWwuYm9yZGVyUmFkaXVzLCBlLmxhYmVsLnN0eWxlLmJhY2tncm91bmQsIDEsIGUubGFiZWwuYm9yZGVyV2lkdGgsIGUubGFiZWwuYm9yZGVyQ29sb3IsIDApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlkICYmIGQubm9kZS5jbGFzc0xpc3QuYWRkKGUuaWQpLCBkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFubm90YXRpb25zQmFja2dyb3VuZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy0iLmNvbmNhdChzLCAiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLSIpLmNvbmNhdChzLCAiLWFubm90YXRpb24tbGFiZWxbcmVsPSciKS5jb25jYXQoYSwgIiddIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIucGFyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuYWRkQmFja2dyb3VuZFRvQW5ubyhyLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICYmIChvLmluc2VydEJlZm9yZShuLm5vZGUsIHIpLCBpLmxhYmVsLm1vdXNlRW50ZXIgJiYgbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCBpLmxhYmVsLm1vdXNlRW50ZXIuYmluZCh0LCBpKSksIGkubGFiZWwubW91c2VMZWF2ZSAmJiBuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIGkubGFiZWwubW91c2VMZWF2ZS5iaW5kKHQsIGkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSh0LCBlLCAieGF4aXMiKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkodCwgZSwgInlheGlzIikKICAgICAgICAgICAgICAgICAgICB9KSksIGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSh0LCBlLCAicG9pbnQiKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRZMVkyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSAieTEiID09PSB0ID8gZS55IDogZS55MiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbm5vQ3R4LmludmVydEF4aXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBzLmdsb2JhbHMubGFiZWxzLmluZGV4T2YoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAociA9IHMuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBzLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKCIgKyAociArIDEpICsgIikiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiAoaSA9IHBhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoInkiKSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLmxvZ2FyaXRobWljKSBuID0gKGEgPSBuZXcgeSh0aGlzLmFubm9DdHguY3R4KS5nZXRMb2dWYWwoYSwgZS55QXhpc0luZGV4KSkgLyBzLmdsb2JhbHMueUxvZ1JhdGlvW2UueUF4aXNJbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbiA9IChhIC0gcy5nbG9iYWxzLm1pbllBcnJbZS55QXhpc0luZGV4XSkgLyAocy5nbG9iYWxzLnlSYW5nZVtlLnlBeGlzSW5kZXhdIC8gcy5nbG9iYWxzLmdyaWRIZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gcy5nbG9iYWxzLmdyaWRIZWlnaHQgLSBuLCBzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdICYmIHMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ucmV2ZXJzZWQgJiYgKGkgPSBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRYMVgyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyA/IGkuZ2xvYmFscy5taW5ZIDogaS5nbG9iYWxzLm1pblgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyA/IGkuZ2xvYmFscy5tYXhZIDogaS5nbG9iYWxzLm1heFgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyA/IGkuZ2xvYmFscy55UmFuZ2VbMF0gOiBpLmdsb2JhbHMueFJhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gKGUueCAtIGEpIC8gKHIgLyBpLmdsb2JhbHMuZ3JpZFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMgJiYgKG8gPSAocyAtIGUueCkgLyAociAvIGkuZ2xvYmFscy5ncmlkV2lkdGgpKSwgImNhdGVnb3J5IiAhPT0gaS5jb25maWcueGF4aXMudHlwZSAmJiAhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljIHx8IHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzIHx8IGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWMgfHwgKG8gPSB0aGlzLmdldFN0cmluZ1goZS54KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAoZS54MiAtIGEpIC8gKHIgLyBpLmdsb2JhbHMuZ3JpZFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzICYmIChuID0gKHMgLSBlLngyKSAvIChyIC8gaS5nbG9iYWxzLmdyaWRXaWR0aCkpLCAiY2F0ZWdvcnkiICE9PSBpLmNvbmZpZy54YXhpcy50eXBlICYmICFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgfHwgdGhpcy5hbm5vQ3R4LmludmVydEF4aXMgfHwgaS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpYyB8fCAobiA9IHRoaXMuZ2V0U3RyaW5nWChlLngyKSksICJ4MSIgPT09IHQgPyBvIDogbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTdHJpbmdYIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0OwogICAgICAgICAgICAgICAgICAgIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiBlLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMubGVuZ3RoICYmICh0ID0gZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YodCkgKyAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoIiArIChhICsgMSkgKyAiKSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzICYmIChpID0gcGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZSgieCIpKSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGsgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMuYW5ub0N0eCA9IGUsIHRoaXMuaW52ZXJ0QXhpcyA9IHRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLCB0aGlzLmhlbHBlcnMgPSBuZXcgdyh0aGlzLmFubm9DdHgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImFkZFhheGlzQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5oZWxwZXJzLmdldFgxWDIoIngxIiwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmxhYmVsLnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnN0cm9rZURhc2hBcnJheTsKICAgICAgICAgICAgICAgICAgICBpZiAoeC5pc051bWJlcihyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gdC54MiB8fCB2b2lkIDAgPT09IHQueDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKHIgKyB0Lm9mZnNldFgsIDAgKyB0Lm9mZnNldFksIHIgKyB0Lm9mZnNldFgsIHMuZ2xvYmFscy5ncmlkSGVpZ2h0ICsgdC5vZmZzZXRZLCB0LmJvcmRlckNvbG9yLCBuLCB0LmJvcmRlcldpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuYXBwZW5kQ2hpbGQobC5ub2RlKSwgdC5pZCAmJiBsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gdGhpcy5oZWxwZXJzLmdldFgxWDIoIngyIiwgdCkpIDwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYSwgYSA9IGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KHIgKyB0Lm9mZnNldFgsIDAgKyB0Lm9mZnNldFksIGEgLSByLCBzLmdsb2JhbHMuZ3JpZEhlaWdodCArIHQub2Zmc2V0WSwgMCwgdC5maWxsQ29sb3IsIHQub3BhY2l0eSwgMSwgdC5ib3JkZXJDb2xvciwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3QiKSwgYy5hdHRyKCJjbGlwLXBhdGgiLCAidXJsKCNncmlkUmVjdE1hc2siLmNvbmNhdChzLmdsb2JhbHMuY3VpZCwgIikiKSksIGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSwgdC5pZCAmJiBjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gInRvcCIgPT09IHQubGFiZWwucG9zaXRpb24gPyA0IDogcy5nbG9iYWxzLmdyaWRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhvLCBwYXJzZUZsb2F0KHQubGFiZWwuc3R5bGUuZm9udFNpemUpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHIgKyB0LmxhYmVsLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZCArIHQubGFiZWwub2Zmc2V0WSAtICgidmVydGljYWwiID09PSB0LmxhYmVsLm9yaWVudGF0aW9uID8gInRvcCIgPT09IHQubGFiZWwucG9zaXRpb24gPyBnLndpZHRoIC8gMiAtIDEyIDogLWcud2lkdGggLyAyIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiB0LmxhYmVsLnRleHRBbmNob3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHQubGFiZWwuc3R5bGUuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHQubGFiZWwuc3R5bGUuZm9udFdlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IHQubGFiZWwuc3R5bGUuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwgIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcywgIiAiKS5jb25jYXQodC5pZCA/IHQuaWQgOiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB1LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLmFwcGVuZENoaWxkKHUubm9kZSksIHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyh0LCBpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1hBeGlzQW5ub3RhdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy54YXhpcy5tYXAoKGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGRYYXhpc0Fubm90YXRpb24oZSwgaS5ub2RlLCBhKQogICAgICAgICAgICAgICAgICAgIH0pKSwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5hbm5vQ3R4ID0gZSwgdGhpcy5oZWxwZXJzID0gbmV3IHcodGhpcy5hbm5vQ3R4KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRZYXhpc0Fubm90YXRpb24iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSwgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuc3Ryb2tlRGFzaEFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5oZWxwZXJzLmdldFkxWTIoInkxIiwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmxhYmVsLnRleHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IHQueTIgfHwgdm9pZCAwID09PSB0LnkyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDAgKyB0Lm9mZnNldFgsIG8gKyB0Lm9mZnNldFksIHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLCBvICsgdC5vZmZzZXRZLCB0LmJvcmRlckNvbG9yLCByLCB0LmJvcmRlcldpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5hcHBlbmRDaGlsZChsLm5vZGUpLCB0LmlkICYmIGwubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gdGhpcy5oZWxwZXJzLmdldFkxWTIoInkyIiwgdCkpID4gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEsIGEgPSBoCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoMCArIHQub2Zmc2V0WCwgYSArIHQub2Zmc2V0WSwgdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksIG8gLSBhLCAwLCB0LmZpbGxDb2xvciwgdC5vcGFjaXR5LCAxLCB0LmJvcmRlckNvbG9yLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgYy5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0IiksIGMuYXR0cigiY2xpcC1wYXRoIiwgInVybCgjZ3JpZFJlY3RNYXNrIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsICIpIikpLCBlLmFwcGVuZENoaWxkKGMubm9kZSksIHQuaWQgJiYgYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSAicmlnaHQiID09PSB0LmxhYmVsLnBvc2l0aW9uID8gcy5nbG9iYWxzLmdyaWRXaWR0aCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZCArIHQubGFiZWwub2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IChudWxsICE9IGEgPyBhIDogbykgKyB0LmxhYmVsLm9mZnNldFkgLSAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6IHQubGFiZWwudGV4dEFuY2hvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiB0LmxhYmVsLnN0eWxlLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogdC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiB0LmxhYmVsLnN0eWxlLmNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwgIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcywgIiAiKS5jb25jYXQodC5pZCA/IHQuaWQgOiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBpCiAgICAgICAgICAgICAgICAgICAgfSksIGUuYXBwZW5kQ2hpbGQoZy5ub2RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuZ3JpZFdpZHRoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAodC53aWR0aC5pbmRleE9mKCIlIikgPiAtMSA/IGUuZ2xvYmFscy5ncmlkV2lkdGggKiBwYXJzZUludCh0LndpZHRoLCAxMCkgLyAxMDAgOiBwYXJzZUludCh0LndpZHRoLCAxMCkpICsgdC5vZmZzZXRYCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdZQXhpc0Fubm90YXRpb25zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYWRkWWF4aXNBbm5vdGF0aW9uKGUsIGkubm9kZSwgYSkKICAgICAgICAgICAgICAgICAgICB9KSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMuYW5ub0N0eCA9IGUsIHRoaXMuaGVscGVycyA9IG5ldyB3KHRoaXMuYW5ub0N0eCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiYWRkUG9pbnRBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5oZWxwZXJzLmdldFgxWDIoIngxIiwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLmhlbHBlcnMuZ2V0WTFZMigieTEiLCB0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoeC5pc051bWJlcihhKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwU2l6ZTogdC5tYXJrZXIuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFN0cm9rZVdpZHRoOiB0Lm1hcmtlci5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludEZpbGxDb2xvcjogdC5tYXJrZXIuZmlsbENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U3Ryb2tlQ29sb3I6IHQubWFya2VyLnN0cm9rZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiB0Lm1hcmtlci5zaGFwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmFkaXVzOiB0Lm1hcmtlci5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyICIuY29uY2F0KHQubWFya2VyLmNzc0NsYXNzLCAiICIpLmNvbmNhdCh0LmlkID8gdC5pZCA6ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihhICsgdC5tYXJrZXIub2Zmc2V0WCwgcyArIHQubWFya2VyLm9mZnNldFksIHIpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmFwcGVuZENoaWxkKG8ubm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5sYWJlbC50ZXh0ID8gdC5sYWJlbC50ZXh0IDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhICsgdC5sYWJlbC5vZmZzZXRYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMgKyB0LmxhYmVsLm9mZnNldFkgLSB0Lm1hcmtlci5zaXplIC0gcGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKSAvIDEuNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6IHQubGFiZWwudGV4dEFuY2hvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogdC5sYWJlbC5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogdC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVDb2xvcjogdC5sYWJlbC5zdHlsZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCAiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLCAiICIpLmNvbmNhdCh0LmlkID8gdC5pZCA6ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuYXBwZW5kQ2hpbGQobC5ub2RlKSwgdC5jdXN0b21TVkcuU1ZHKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgIiArIHQuY3VzdG9tU1ZHLmNzc0NsYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIuY29uY2F0KGEgKyB0LmN1c3RvbVNWRy5vZmZzZXRYLCAiLCAiKS5jb25jYXQocyArIHQuY3VzdG9tU1ZHLm9mZnNldFksICIpIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBoLm5vZGUuaW5uZXJIVE1MID0gdC5jdXN0b21TVkcuU1ZHLCBlLmFwcGVuZENoaWxkKGgubm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pbWFnZS5wYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHQuaW1hZ2Uud2lkdGggPyB0LmltYWdlLndpZHRoIDogMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHQuaW1hZ2UuaGVpZ2h0ID8gdC5pbWFnZS5oZWlnaHQgOiAyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmFubm9DdHguYWRkSW1hZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEgKyB0LmltYWdlLm9mZnNldFggLSBjIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBzICsgdC5pbWFnZS5vZmZzZXRZIC0gZCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHQuaW1hZ2UucGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbzogIi5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0Lm1vdXNlRW50ZXIgJiYgby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCB0Lm1vdXNlRW50ZXIuYmluZCh0aGlzLCB0KSksIHQubW91c2VMZWF2ZSAmJiBvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHQubW91c2VMZWF2ZS5iaW5kKHRoaXMsIHQpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1BvaW50QW5ub3RhdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuYWRkUG9pbnRBbm5vdGF0aW9uKGUsIGkubm9kZSwgYSkKICAgICAgICAgICAgICAgICAgICB9KSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpOwogICAgdmFyIEMgPSB7CiAgICAgICAgICAgIG5hbWU6ICJlbiIsCiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIG1vbnRoczogWyJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIl0sCiAgICAgICAgICAgICAgICBzaG9ydE1vbnRoczogWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyJdLAogICAgICAgICAgICAgICAgZGF5czogWyJTdW5kYXkiLCAiTW9uZGF5IiwgIlR1ZXNkYXkiLCAiV2VkbmVzZGF5IiwgIlRodXJzZGF5IiwgIkZyaWRheSIsICJTYXR1cmRheSJdLAogICAgICAgICAgICAgICAgc2hvcnREYXlzOiBbIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCJdLAogICAgICAgICAgICAgICAgdG9vbGJhcjogewogICAgICAgICAgICAgICAgICAgIGV4cG9ydFRvU1ZHOiAiRG93bmxvYWQgU1ZHIiwKICAgICAgICAgICAgICAgICAgICBleHBvcnRUb1BORzogIkRvd25sb2FkIFBORyIsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0VG9DU1Y6ICJEb3dubG9hZCBDU1YiLAogICAgICAgICAgICAgICAgICAgIG1lbnU6ICJNZW51IiwKICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb246ICJTZWxlY3Rpb24iLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblpvb206ICJTZWxlY3Rpb24gWm9vbSIsCiAgICAgICAgICAgICAgICAgICAgem9vbUluOiAiWm9vbSBJbiIsCiAgICAgICAgICAgICAgICAgICAgem9vbU91dDogIlpvb20gT3V0IiwKICAgICAgICAgICAgICAgICAgICBwYW46ICJQYW5uaW5nIiwKICAgICAgICAgICAgICAgICAgICByZXNldDogIlJlc2V0IFpvb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIEwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMueUF4aXMgPSB7CiAgICAgICAgICAgICAgICAgICAgc2hvdzogITAsCiAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5czogITEsCiAgICAgICAgICAgICAgICAgICAgc2hvd0Zvck51bGxTZXJpZXM6ICEwLAogICAgICAgICAgICAgICAgICAgIHNlcmllc05hbWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBvcHBvc2l0ZTogITEsCiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIGxvZ2FyaXRobWljOiAhMSwKICAgICAgICAgICAgICAgICAgICBsb2dCYXNlOiAxMCwKICAgICAgICAgICAgICAgICAgICB0aWNrQW1vdW50OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgZm9yY2VOaWNlU2NhbGU6ICExLAogICAgICAgICAgICAgICAgICAgIG1heDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIG1pbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICBkZWNpbWFsc0luRmxvYXQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTYwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTFweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGF4aXNCb3JkZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAiI2UwZTBlMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBheGlzVGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAiI2UwZTBlMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2LAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aXRsZTogewogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogLTkwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTFweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA5MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY3Jvc3NoYWlyczogewogICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJmcm9udCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICIjYjZiNmI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaEFycmF5OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvaW50QW5ub3RhdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICBpZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogbnVsbCwKICAgICAgICAgICAgICAgICAgICB5QXhpc0luZGV4OiAwLAogICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiAwLAogICAgICAgICAgICAgICAgICAgIG1vdXNlRW50ZXI6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBtb3VzZUxlYXZlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgbWFya2VyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICIjMzMzIiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU6ICJjaXJjbGUiLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICIjYzJjMmMyIiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMiwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFbnRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUxlYXZlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMXB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY3VzdG9tU1ZHOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNWRzogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbWFnZTogewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHRoaXMueUF4aXNBbm5vdGF0aW9uID0gewogICAgICAgICAgICAgICAgICAgIGlkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICB5MjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IDEsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAiI2MyYzJjMiIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICIjYzJjMmMyIiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuMywKICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICB5QXhpc0luZGV4OiAwLAogICAgICAgICAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiI2MyYzJjMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogImVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtMywKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFbnRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUxlYXZlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMXB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHRoaXMueEF4aXNBbm5vdGF0aW9uID0gewogICAgICAgICAgICAgICAgICAgIGlkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICB4MjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IDEsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAiI2MyYzJjMiIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICIjYzJjMmMyIiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuMywKICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICIjYzJjMmMyIiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMiwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb246ICJ2ZXJ0aWNhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFbnRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUxlYXZlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMXB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHRoaXMudGV4dCA9IHsKICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgdGV4dDogIiIsCiAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogInN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEzcHgiLAogICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG86ICIuYXBleGNoYXJ0cy1hbm5vdGF0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiI2MyYzJjMiIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAwLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiA0LAogICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogNCwKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAyLAogICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaW5pdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiZnJvbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IFt0aGlzLnlBeGlzQW5ub3RhdGlvbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogW3RoaXMueEF4aXNBbm5vdGF0aW9uXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50czogW3RoaXMucG9pbnRBbm5vdGF0aW9uXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZXM6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiAiZWFzZWlub3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogODAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGVHcmFkdWFsbHk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDE1MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNBbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiAzNTAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogInRyYW5zcGFyZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM6IFtDXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMb2NhbGU6ICJlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wU2hhZG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZE9uU2VyaWVzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1cjogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC4zNQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkVuZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZU1vdW50OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91bnRlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlTW92ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlTGVhdmU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRDbGljazogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50U2VsZWN0aW9uOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50TW91c2VFbnRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludE1vdXNlTGVhdmU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVab29tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlUmVzZXRab29tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbWVkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZWQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicnVzaFNjcm9sbGVkOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6ICIjMzczZDNmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6ICJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SGVpZ2h0T2Zmc2V0OiAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZHJhd09uUGFyZW50UmVzaXplOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZHJhd09uV2luZG93UmVzaXplOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAieCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMyNDI5MmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMyNDI5MmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaEFycmF5OiAzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFya2xpbmU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NjYWxlWWF4aXM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja1R5cGU6ICJub3JtYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29taW46ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tb3V0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21JY29uczogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3Y6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWxpbWl0ZXI6ICIsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNhdGVnb3J5OiAiY2F0ZWdvcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVmFsdWU6ICJ2YWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHQpLnRvRGF0ZVN0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NlbGVjdGVkOiAiem9vbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvU2NhbGVZYXhpczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbWVkQXJlYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiM5MENBRjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMwRDQ3QTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBwbG90T3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxUbzogIm9yaWdpbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogIjcwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiAiNzAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlQmFyT3ZlcmxhcDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VCYXJHcm91cFJvd3M6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQmFyQ29sb3JzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEJhck9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRCYXJSYWRpdXM6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhJdGVtczogMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlT3ZlcmZsb3dpbmdMYWJlbHM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogImhvcml6b250YWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1YmJsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkJ1YmJsZVJhZGl1czogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJ1YmJsZVJhZGl1czogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGxlc3RpY2s6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXB3YXJkOiAiIzAwQjc0NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd253YXJkOiAiI0VGNDAzQyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpY2s6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRmlsbENvbG9yOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hQbG90OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyOiAiIzAwRTM5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyOiAiIzAwOEZGQiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhdG1hcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTaGFkZXM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlSW50ZW5zaXR5OiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlTmVnYXRpdmVTaGFkZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUZpbGxDb2xvckFzU3Ryb2tlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNjYWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVyc2U6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZW1hcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVNoYWRlczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVJbnRlbnNpdHk6IC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlTmVnYXRpdmVTaGFkZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRmlsbENvbG9yQXNTdHJva2U6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2NhbGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJzZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpYWxCYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlT3JkZXI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGU6IDM2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sbG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogIjUwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlV2lkdGg6IDE1MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VIZWlnaHQ6IDE1MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlQ2xpcHBlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiZnJvbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wU2hhZG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyOiAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC41CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFuZ2xlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICIjZjJmMmYyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6ICI5NyUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdXI6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjE2cHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjE0cHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyAiJSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICJUb3RhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjE2cHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCkgLyB0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCArICIlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVNjYWxlOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFuZ2xlOiAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kT25DbGljazogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkFuZ2xlVG9TaG93TGFiZWw6IDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb251dDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAiNjUlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogInRyYW5zcGFyZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjE2cHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA2MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIyMHB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5czogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICJUb3RhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxNnB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xhckFyZWE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICIjZThlOGU4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bva2VzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb2xvcnM6ICIjZThlOGU4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9seWdvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUNvbG9yczogIiNlOGU4ZTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3JDb2xvcnM6ICIjZThlOGU4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZE9uU2VyaWVzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gdCA/IHQgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1cjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjQ1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjQ1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzb2xpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC44NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGU6ICJkYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiaG9yaXpvbnRhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVJbnRlbnNpdHk6IC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50VG9Db2xvcnM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlQ29sb3JzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5RnJvbTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5VG86IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCA1MCwgMTAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclN0b3BzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAic3F1YXJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVjYXN0RGF0YVBvaW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaEFycmF5OiA0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICIjZTBlMGUwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYmFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0ZvclNpbmdsZVNlcmllczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm9yTnVsbFNlcmllczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm9yWmVyb1NlcmllczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsQWxpZ246ICJjZW50ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJzZU9yZGVyOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBIb3ZlckZvcm1hdHRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogLTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUxlZ2VuZEl0ZW1zOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVNlcmllc0NvbG9yczogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUNvbG9yOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21IVE1MOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1NYXJnaW46IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtQ2xpY2s6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVEYXRhU2VyaWVzOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSXRlbUhvdmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0RGF0YVNlcmllczogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JldGU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3JzOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6IC45LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlRGFzaEFycmF5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZTogImNpcmNsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EYmxDbGljazogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd051bGxEYXRhUG9pbnRzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVPZmZzZXQ6IDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbm9EYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTRweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGlnaHRlbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAuMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJkYXJrZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogLjUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTRweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogOTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDMwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmc6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VydmU6ICJzbW9vdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNhcDogImJ1dHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hBcnJheTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic29saWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC44NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZTogImRhcmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiaG9yaXpvbnRhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlSW50ZW5zaXR5OiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRUb0NvbG9yczogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlQ29sb3JzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eUZyb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlUbzogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCA1MCwgMTAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTdG9wczogW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZE9uU2VyaWVzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93Q3Vyc29yOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlT3JkZXI6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU2VyaWVzQ29sb3I6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU6ICJsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EYXRhc2V0SG92ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHREYXRhU2VyaWVzOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJkZCBNTU0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyB0ICsgIjogIiA6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgejogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAiU2l6ZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcnM6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImZsZXgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInRvcFJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJjYXRlZ29yeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZENhdFRvTnVtZXJpYzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ3cml0ZUNhdGVnb3JpZXM6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogLTQ1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZUFsd2F5czogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RHVwbGljYXRlczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMnB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lVVRDOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZUZvcm1hdHRlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiAieXl5eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiAiTU1NICd5eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheTogImRkIE1NTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6ICJISDptbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogIkhIOm1tOnNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiAiSEg6bW06c3MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aXNCb3JkZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiNlMGUwZTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aXNUaWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAiI2UwZTBlMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tQbGFjZW1lbnQ6ICJvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxzSW5GbG9hdDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDkwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NoYWlyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYmFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAiI2I2YjZiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoQXJyYXk6IDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInNvbGlkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICIjQjFCOUM0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yRnJvbTogIiNEOEUzRjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JUbzogIiNCRUQxRTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCAxMDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eUZyb206IC40LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVRvOiAuNQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wU2hhZG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdXI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC40CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHZvaWQgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IHRoaXMueUF4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAibGlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZTogInBhbGV0dGUxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm9jaHJvbWU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIiMwMDhGRkIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlVG86ICJsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVJbnRlbnNpdHk6IC42NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgUCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53LCB0aGlzLmdyYXBoaWNzID0gbmV3IG0odGhpcy5jdHgpLCB0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgKHRoaXMuaW52ZXJ0QXhpcyA9ICEwKSwgdGhpcy5oZWxwZXJzID0gbmV3IHcodGhpcyksIHRoaXMueEF4aXNBbm5vdGF0aW9ucyA9IG5ldyBrKHRoaXMpLCB0aGlzLnlBeGlzQW5ub3RhdGlvbnMgPSBuZXcgQSh0aGlzKSwgdGhpcy5wb2ludHNBbm5vdGF0aW9ucyA9IG5ldyBTKHRoaXMpLCB0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgdGhpcy53LmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCAmJiAodGhpcy5pbnZlcnNlZFJldmVyc2VkQXhpcyA9ICEwKSwgdGhpcy54RGl2aXNpb24gPSB0aGlzLncuZ2xvYmFscy5ncmlkV2lkdGggLyB0aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXdBeGVzQW5ub3RhdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMuYXhpc0NoYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy55QXhpc0Fubm90YXRpb25zLmRyYXdZQXhpc0Fubm90YXRpb25zKCksIGkgPSB0aGlzLnhBeGlzQW5ub3RhdGlvbnMuZHJhd1hBeGlzQW5ub3RhdGlvbnMoKSwgYSA9IHRoaXMucG9pbnRzQW5ub3RhdGlvbnMuZHJhd1BvaW50QW5ub3RhdGlvbnMoKSwgcyA9IHQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCwgciA9IFtlLCBpLCBhXSwgbyA9IFtpLm5vZGUsIGUubm9kZSwgYS5ub2RlXSwgbiA9IDA7IG4gPCAzOyBuKyspIHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHJbbl0pLCAhcyB8fCB0Lmdsb2JhbHMucmVzaXplZCB8fCB0Lmdsb2JhbHMuZGF0YUNoYW5nZWQgfHwgInNjYXR0ZXIiICE9PSB0LmNvbmZpZy5jaGFydC50eXBlICYmICJidWJibGUiICE9PSB0LmNvbmZpZy5jaGFydC50eXBlICYmIHQuZ2xvYmFscy5kYXRhUG9pbnRzID4gMSAmJiBvW25dLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4iKSwgdC5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiBvW25dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVscGVycy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0ltYWdlQW5ub3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB0aGlzLncuY29uZmlnLmFubm90YXRpb25zLmltYWdlcy5tYXAoKGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGRJbWFnZShlLCBpKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3VGV4dEFubm9zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy50ZXh0cy5tYXAoKGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGRUZXh0KGUsIGkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZFhheGlzQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24odCwgZSwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkWWF4aXNBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbih0LCBlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRQb2ludEFubm90YXRpb24iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50c0Fubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbih0LCBlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRUZXh0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnRleHRBbmNob3IsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmZvcmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmNzc0NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0LmJvcmRlcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5zdHJva2VEYXNoQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0LmJvcmRlclJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQuYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0LmFwcGVuZFRvLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdm9pZCAwID09PSB4ID8gIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zIiA6IHgsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB0LnBhZGRpbmdMZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICBtID0gdm9pZCAwID09PSB2ID8gNCA6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0LnBhZGRpbmdSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHZvaWQgMCA9PT0geSA/IDQgOiB5LAogICAgICAgICAgICAgICAgICAgICAgICBrID0gdC5wYWRkaW5nQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICBBID0gdm9pZCAwID09PSBrID8gMiA6IGssCiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSB0LnBhZGRpbmdUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSB2b2lkIDAgPT09IFMgPyAyIDogUywKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IHRoaXMuZ3JhcGhpY3MuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogciB8fCAic3RhcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IG4gfHwgIjEycHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogaCB8fCAicmVndWxhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBsIHx8IEwuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IG8gfHwgTC5jb25maWcuY2hhcnQuZm9yZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6IGMKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBMLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGIpOwogICAgICAgICAgICAgICAgICAgIE0gJiYgTS5hcHBlbmRDaGlsZChQLm5vZGUpOwogICAgICAgICAgICAgICAgICAgIHZhciBUID0gUC5iYm94KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSB0aGlzLmdyYXBoaWNzLmRyYXdSZWN0KFQueCAtIG0sIFQueSAtIEMsIFQud2lkdGggKyBtICsgdywgVC5oZWlnaHQgKyBBICsgQywgZiwgZCB8fCAidHJhbnNwYXJlbnQiLCAxLCBnLCBwLCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgTS5pbnNlcnRCZWZvcmUoSS5ub2RlLCBQLm5vZGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRJbWFnZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdm9pZCAwID09PSBzID8gMCA6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG8gPyAwIDogbywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB2b2lkIDAgPT09IGwgPyAyMCA6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHZvaWQgMCA9PT0gYyA/IDIwIDogYywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQuYXBwZW5kVG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDAgPT09IGcgPyAiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnMiIDogZywKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGkuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYSk7CiAgICAgICAgICAgICAgICAgICAgZi5zaXplKGgsIGQpLm1vdmUociwgbik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBpLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKHUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICYmIHAuYXBwZW5kQ2hpbGQoZi5ub2RlKSwgZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaFRvTWVtb3J5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAieGF4aXMiLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWV0aG9kOiBpLmFkZFhheGlzQW5ub3RhdGlvbgogICAgICAgICAgICAgICAgICAgIH0pLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwdXNoVG9NZW1vcnk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ5YXhpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZXRob2Q6IGkuYWRkWWF4aXNBbm5vdGF0aW9uCiAgICAgICAgICAgICAgICAgICAgfSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0aGlzLmludmVydEF4aXMgJiYgKHRoaXMuaW52ZXJ0QXhpcyA9IGkudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCksIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwdXNoVG9NZW1vcnk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJwb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZXRob2Q6IGkuYWRkUG9pbnRBbm5vdGF0aW9uCiAgICAgICAgICAgICAgICAgICAgfSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkQW5ub3RhdGlvbkV4dGVybmFsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQucHVzaFRvTWVtb3J5LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5jb250ZXh0TWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8udywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHMsICItYW5ub3RhdGlvbnMiKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLmNoaWxkTm9kZXMubGVuZ3RoICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyBMLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gT2JqZWN0LmFzc2lnbih7fSwgInhheGlzIiA9PT0gcyA/IGMueEF4aXNBbm5vdGF0aW9uIDogInlheGlzIiA9PT0gcyA/IGMueUF4aXNBbm5vdGF0aW9uIDogYy5wb2ludEFubm90YXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBnID0geC5leHRlbmQoZCwgZSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInhheGlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKGcsIGwsIGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInlheGlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKGcsIGwsIGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKGcsIGwsIGgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtIi5jb25jYXQocywgIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy0iKS5jb25jYXQocywgIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nIikuY29uY2F0KGgsICInXSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuaGVscGVycy5hZGRCYWNrZ3JvdW5kVG9Bbm5vKHUsIGcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmICYmIGwuaW5zZXJ0QmVmb3JlKGYubm9kZSwgdSksIGkgJiYgbi5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBvLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogZy5pZCA/IGcuaWQgOiB4LnJhbmRvbUlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogciwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICJhZGRBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBlCiAgICAgICAgICAgICAgICAgICAgfSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2xlYXJBbm5vdGF0aW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9ucyIpOwogICAgICAgICAgICAgICAgICAgIGUuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgImFkZFRleHQiICE9PSB0LmxhYmVsICYmICJhZGRBbm5vdGF0aW9uIiAhPT0gdC5sYWJlbCB8fCBlLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKGksIDEpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpID0geC5saXN0VG9BcnJheShpKSwgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdC5maXJzdENoaWxkOykgdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJlbW92ZUFubm90YXRpb24iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iLmNvbmNhdChlKSk7CiAgICAgICAgICAgICAgICAgICAgYSAmJiAoaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmlkID09PSBlICYmIGkuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UoYSwgMSkKICAgICAgICAgICAgICAgICAgICB9KSksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHQpCiAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgTSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53LCB0aGlzLm9wdHMgPSBudWxsLCB0aGlzLnNlcmllc0luZGV4ID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJjbGlwcGVkSW1nQXJlYSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwYXJzZUludChlLmdsb2JhbHMuZ3JpZFdpZHRoLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwYXJzZUludChlLmdsb2JhbHMuZ3JpZEhlaWdodCwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYSA+IHMgPyBhIDogcywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQud2lkdGggJiYgdm9pZCAwID09PSB0LmhlaWdodCA/IHZvaWQgMCAhPT0gaS5maWxsLmltYWdlLndpZHRoICYmIHZvaWQgMCAhPT0gaS5maWxsLmltYWdlLmhlaWdodCA/IChuID0gaS5maWxsLmltYWdlLndpZHRoICsgMSwgbCA9IGkuZmlsbC5pbWFnZS5oZWlnaHQpIDogKG4gPSByICsgMSwgbCA9IHIpIDogKG4gPSB0LndpZHRoLCBsID0gdC5oZWlnaHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUywgInBhdHRlcm4iKTsKICAgICAgICAgICAgICAgICAgICBtLnNldEF0dHJzKGgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHQucGF0dGVybklELAogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuVW5pdHM6IHQucGF0dGVyblVuaXRzID8gdC5wYXR0ZXJuVW5pdHMgOiAidXNlclNwYWNlT25Vc2UiLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbiArICJweCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbCArICJweCIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsICJpbWFnZSIpOwogICAgICAgICAgICAgICAgICAgIGguYXBwZW5kQ2hpbGQoYyksIGMuc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluaywgImhyZWYiLCBvKSwgbS5zZXRBdHRycyhjLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4gKyAicHgiLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGwgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSksIGMuc3R5bGUub3BhY2l0eSA9IHQub3BhY2l0eSwgZS5nbG9iYWxzLmRvbS5lbERlZnMubm9kZS5hcHBlbmRDaGlsZChoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTZXJpZXNJbmRleCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoImJhciIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgfHwgInJhbmdlQmFyIiA9PT0gZS5jb25maWcuY2hhcnQudHlwZSkgJiYgZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkIHx8ICJoZWF0bWFwIiA9PT0gZS5jb25maWcuY2hhcnQudHlwZSB8fCAidHJlZW1hcCIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgPyB0aGlzLnNlcmllc0luZGV4ID0gdC5zZXJpZXNOdW1iZXIgOiB0aGlzLnNlcmllc0luZGV4ID0gdC5zZXJpZXNOdW1iZXIgJSBlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCwgdGhpcy5zZXJpZXNJbmRleAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJmaWxsUGF0aCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0cyA9IHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIHMsIHIgPSB0aGlzLncuY29uZmlnOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzSW5kZXggPSB0aGlzLmdldFNlcmllc0luZGV4KHQpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdICYmIChvID0gZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8gJiYgKG8gPSBvKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IHRoaXMuc2VyaWVzSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiB0LmRhdGFQb2ludEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogZQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuZ2V0RmlsbFR5cGUodGhpcy5zZXJpZXNJbmRleCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBBcnJheS5pc0FycmF5KHIuZmlsbC5vcGFjaXR5KSA/IHIuZmlsbC5vcGFjaXR5W3RoaXMuc2VyaWVzSW5kZXhdIDogci5maWxsLm9wYWNpdHk7CiAgICAgICAgICAgICAgICAgICAgdC5jb2xvciAmJiAobyA9IHQuY29sb3IpOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gbzsKICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IG8uaW5kZXhPZigicmdiIikgPyBvLmxlbmd0aCA8IDkgJiYgKGggPSB4LmhleFRvUmdiYShvLCBsKSkgOiBvLmluZGV4T2YoInJnYmEiKSA+IC0xICYmIChsID0geC5nZXRPcGFjaXR5RnJvbVJHQkEobykpLCB0Lm9wYWNpdHkgJiYgKGwgPSB0Lm9wYWNpdHkpLCAicGF0dGVybiIgPT09IG4gJiYgKGEgPSB0aGlzLmhhbmRsZVBhdHRlcm5GaWxsKGEsIG8sIGwsIGgpKSwgImdyYWRpZW50IiA9PT0gbiAmJiAocyA9IHRoaXMuaGFuZGxlR3JhZGllbnRGaWxsKG8sIGwsIHRoaXMuc2VyaWVzSW5kZXgpKSwgImltYWdlIiA9PT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHIuZmlsbC5pbWFnZS5zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5wYXR0ZXJuSUQgPyB0LnBhdHRlcm5JRCA6ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaXBwZWRJbWdBcmVhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogQXJyYXkuaXNBcnJheShjKSA/IHQuc2VyaWVzTnVtYmVyIDwgYy5sZW5ndGggPyBjW3Quc2VyaWVzTnVtYmVyXSA6IGNbMF0gOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQud2lkdGggPyB0LndpZHRoIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LmhlaWdodCA/IHQuaGVpZ2h0IDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVyblVuaXRzOiB0LnBhdHRlcm5Vbml0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5JRDogInBhdHRlcm4iLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyICsgMSkuY29uY2F0KGQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpID0gInVybCgjcGF0dGVybiIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIgKyAxKS5jb25jYXQoZCwgIikiKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpID0gImdyYWRpZW50IiA9PT0gbiA/IHMgOiAicGF0dGVybiIgPT09IG4gPyBhIDogaDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5zb2xpZCAmJiAoaSA9IGgpLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEZpbGxUeXBlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZS5jb25maWcuZmlsbC50eXBlKSA/IGUuY29uZmlnLmZpbGwudHlwZVt0XSA6IGUuY29uZmlnLmZpbGwudHlwZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRGaWxsQ29sb3JzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5vcHRzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZ2xvYmFscy5jb21ib0NoYXJ0cyA/ICJsaW5lIiA9PT0gdC5jb25maWcuc2VyaWVzW3RoaXMuc2VyaWVzSW5kZXhdLnR5cGUgPyBBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKSA/IGEgPSB0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyA6IGEucHVzaCh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycykgOiBBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycykgPyBhID0gdC5nbG9iYWxzLmZpbGwuY29sb3JzIDogYS5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycykgOiAibGluZSIgPT09IGUuY2hhcnQudHlwZSA/IEFycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpID8gYSA9IHQuZ2xvYmFscy5zdHJva2UuY29sb3JzIDogYS5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKSA6IEFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKSA/IGEgPSB0Lmdsb2JhbHMuZmlsbC5jb2xvcnMgOiBhLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKSwgdm9pZCAwICE9PSBpLmZpbGxDb2xvcnMgJiYgKGEgPSBbXSwgQXJyYXkuaXNBcnJheShpLmZpbGxDb2xvcnMpID8gYSA9IGkuZmlsbENvbG9ycy5zbGljZSgpIDogYS5wdXNoKGkuZmlsbENvbG9ycykpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVBhdHRlcm5GaWxsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5vcHRzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSBzLmZpbGwucGF0dGVybi5zdHJva2VXaWR0aCA/IEFycmF5LmlzQXJyYXkocy5zdHJva2Uud2lkdGgpID8gcy5zdHJva2Uud2lkdGhbdGhpcy5zZXJpZXNJbmRleF0gOiBzLnN0cm9rZS53aWR0aCA6IEFycmF5LmlzQXJyYXkocy5maWxsLnBhdHRlcm4uc3Ryb2tlV2lkdGgpID8gcy5maWxsLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF0gOiBzLmZpbGwucGF0dGVybi5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGU7CiAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShzLmZpbGwucGF0dGVybi5zdHlsZSkgPyB0ID0gdm9pZCAwICE9PSBzLmZpbGwucGF0dGVybi5zdHlsZVtyLnNlcmllc051bWJlcl0gPyBvLmRyYXdQYXR0ZXJuKHMuZmlsbC5wYXR0ZXJuLnN0eWxlW3Iuc2VyaWVzTnVtYmVyXSwgcy5maWxsLnBhdHRlcm4ud2lkdGgsIHMuZmlsbC5wYXR0ZXJuLmhlaWdodCwgbCwgbiwgaSkgOiBhIDogdCA9IG8uZHJhd1BhdHRlcm4ocy5maWxsLnBhdHRlcm4uc3R5bGUsIHMuZmlsbC5wYXR0ZXJuLndpZHRoLCBzLmZpbGwucGF0dGVybi5oZWlnaHQsIGwsIG4sIGkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUdyYWRpZW50RmlsbCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhLCBzID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMub3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyB4LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcy5maWxsLmdyYWRpZW50LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdm9pZCAwID09PSBzLmZpbGwuZ3JhZGllbnQub3BhY2l0eUZyb20gPyBlIDogQXJyYXkuaXNBcnJheShzLmZpbGwuZ3JhZGllbnQub3BhY2l0eUZyb20pID8gcy5maWxsLmdyYWRpZW50Lm9wYWNpdHlGcm9tW2ldIDogcy5maWxsLmdyYWRpZW50Lm9wYWNpdHlGcm9tOwogICAgICAgICAgICAgICAgICAgIGguaW5kZXhPZigicmdiYSIpID4gLTEgJiYgKGMgPSB4LmdldE9wYWNpdHlGcm9tUkdCQShoKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB2b2lkIDAgPT09IHMuZmlsbC5ncmFkaWVudC5vcGFjaXR5VG8gPyBlIDogQXJyYXkuaXNBcnJheShzLmZpbGwuZ3JhZGllbnQub3BhY2l0eVRvKSA/IHMuZmlsbC5ncmFkaWVudC5vcGFjaXR5VG9baV0gOiBzLmZpbGwuZ3JhZGllbnQub3BhY2l0eVRvOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHMuZmlsbC5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzIHx8IDAgPT09IHMuZmlsbC5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzLmxlbmd0aCkgYSA9ICJkYXJrIiA9PT0gcy5maWxsLmdyYWRpZW50LnNoYWRlID8gbi5zaGFkZUNvbG9yKC0xICogcGFyc2VGbG9hdChzLmZpbGwuZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLCB0LmluZGV4T2YoInJnYiIpID4gLTEgPyB4LnJnYjJoZXgodCkgOiB0KSA6IG4uc2hhZGVDb2xvcihwYXJzZUZsb2F0KHMuZmlsbC5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksIHQuaW5kZXhPZigicmdiIikgPiAtMSA/IHgucmdiMmhleCh0KSA6IHQpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHMuZmlsbC5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW3Iuc2VyaWVzTnVtYmVyXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHMuZmlsbC5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW3Iuc2VyaWVzTnVtYmVyXTsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGcsIGcuaW5kZXhPZigicmdiYSIpID4gLTEgJiYgKGQgPSB4LmdldE9wYWNpdHlGcm9tUkdCQShnKSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuZmlsbC5ncmFkaWVudC5pbnZlcnNlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGEsIGEgPSB1CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmluZGV4T2YoInJnYiIpID4gLTEgJiYgKGggPSB4LnJnYjJoZXgoaCkpLCBhLmluZGV4T2YoInJnYiIpID4gLTEgJiYgKGEgPSB4LnJnYjJoZXgoYSkpLCBvLmRyYXdHcmFkaWVudChsLCBoLCBhLCBjLCBkLCByLnNpemUsIHMuZmlsbC5ncmFkaWVudC5zdG9wcywgcy5maWxsLmdyYWRpZW50LmNvbG9yU3RvcHMsIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBUID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgaSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAic2V0R2xvYmFsTWFya2VyU2l6ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUgPSBBcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSkgPyB0LmNvbmZpZy5tYXJrZXJzLnNpemUgOiBbdC5jb25maWcubWFya2Vycy5zaXplXSwgdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aCA8IHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDw9IHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyBlKyspIHZvaWQgMCA9PT0gdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXSAmJiB0Lmdsb2JhbHMubWFya2Vycy5zaXplLnB1c2godC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVswXSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC5nbG9iYWxzLm1hcmtlcnMuc2l6ZSA9IHQuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY29uZmlnLm1hcmtlcnMuc2l6ZQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwbG90Q2hhcnRNYXJrZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s0XSAmJiBhcmd1bWVudHNbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlICYmIG8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmICgoby5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXSA+IDAgfHwgciB8fCBkKSAmJiAoaCA9IGMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHIgfHwgZCA/ICIiIDogImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5hdHRyKCJjbGlwLXBhdGgiLCAidXJsKCNncmlkUmVjdE1hcmtlck1hc2siLmNvbmNhdChvLmdsb2JhbHMuY3VpZCwgIikiKSksIEFycmF5LmlzQXJyYXkobC54KSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IDA7IGcgPCBsLngubGVuZ3RoOyBnKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGkgJiYgMCA9PT0gZyAmJiAodSA9IDApLCAxID09PSBpICYmIDEgPT09IGcgJiYgKHUgPSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gImFwZXhjaGFydHMtbWFya2VyIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIiAhPT0gby5jb25maWcuY2hhcnQudHlwZSAmJiAiYXJlYSIgIT09IG8uY29uZmlnLmNoYXJ0LnR5cGUgfHwgby5nbG9iYWxzLmNvbWJvQ2hhcnRzIHx8IG8uY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0IHx8IChmICs9ICIgbm8tcG9pbnRlci1ldmVudHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gQXJyYXkuaXNBcnJheShvLmNvbmZpZy5tYXJrZXJzLnNpemUpID8gby5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtlXSA+IDAgOiBvLmNvbmZpZy5tYXJrZXJzLnNpemUgPiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgfHwgciB8fCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5pc051bWJlcihsLnlbZ10pID8gZiArPSAiIHciLmNvbmNhdCh4LnJhbmRvbUlkKCkpIDogZiA9ICJhcGV4Y2hhcnRzLW51bGxwb2ludCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLmdldE1hcmtlckNvbmZpZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XSAmJiAoby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yICYmIChiLnBvaW50RmlsbENvbG9yID0gby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yKSwgby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3IgJiYgKGIucG9pbnRTdHJva2VDb2xvciA9IG8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yKSksIGEgJiYgKGIucFNpemUgPSBhKSwgKHMgPSBjLmRyYXdNYXJrZXIobC54W2ddLCBsLnlbZ10sIGIpKS5hdHRyKCJyZWwiLCB1KSwgcy5hdHRyKCJqIiwgdSksIHMuYXR0cigiaW5kZXgiLCBlKSwgcy5ub2RlLnNldEF0dHJpYnV0ZSgiZGVmYXVsdC1tYXJrZXItc2l6ZSIsIGIucFNpemUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gbmV3IHYodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkuc2V0U2VsZWN0aW9uRmlsdGVyKHMsIGUsIHUpLCB0aGlzLmFkZEV2ZW50cyhzKSwgaCAmJiBoLmFkZChzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHZvaWQgMCA9PT0gby5nbG9iYWxzLnBvaW50c0FycmF5W2VdICYmIChvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0gPSBbXSksIG8uZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtsLnhbZ10sIGwueVtnXV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRNYXJrZXJDb25maWciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuY3NzQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNlcmllc0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5kYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHZvaWQgMCA9PT0gYSA/IG51bGwgOiBhLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5maW5pc2hSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgPT09IHIgPyBudWxsIDogciwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuZ2V0TWFya2VyU3R5bGUoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbi5jb25maWcubWFya2VyczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gcyAmJiBjLmRpc2NyZXRlLmxlbmd0aCAmJiBjLmRpc2NyZXRlLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNlcmllc0luZGV4ID09PSBpICYmIHQuZGF0YVBvaW50SW5kZXggPT09IHMgJiYgKGwucG9pbnRTdHJva2VDb2xvciA9IHQuc3Ryb2tlQ29sb3IsIGwucG9pbnRGaWxsQ29sb3IgPSB0LmZpbGxDb2xvciwgaCA9IHQuc2l6ZSwgbC5wb2ludFNoYXBlID0gdC5zaGFwZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcFNpemU6IG51bGwgPT09IG8gPyBoIDogbywKICAgICAgICAgICAgICAgICAgICAgICAgcFJhZGl1czogYy5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBBcnJheS5pc0FycmF5KGMud2lkdGgpID8gYy53aWR0aFtpXSA6IGMud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogQXJyYXkuaXNBcnJheShjLmhlaWdodCkgPyBjLmhlaWdodFtpXSA6IGMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludFN0cm9rZVdpZHRoOiBBcnJheS5pc0FycmF5KGMuc3Ryb2tlV2lkdGgpID8gYy5zdHJva2VXaWR0aFtpXSA6IGMuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U3Ryb2tlQ29sb3I6IGwucG9pbnRTdHJva2VDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRGaWxsQ29sb3I6IGwucG9pbnRGaWxsQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiBsLnBvaW50U2hhcGUgfHwgKEFycmF5LmlzQXJyYXkoYy5zaGFwZSkgPyBjLnNoYXBlW2ldIDogYy5zaGFwZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludFN0cm9rZU9wYWNpdHk6IEFycmF5LmlzQXJyYXkoYy5zdHJva2VPcGFjaXR5KSA/IGMuc3Ryb2tlT3BhY2l0eVtpXSA6IGMuc3Ryb2tlT3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHJva2VEYXNoQXJyYXk6IEFycmF5LmlzQXJyYXkoYy5zdHJva2VEYXNoQXJyYXkpID8gYy5zdHJva2VEYXNoQXJyYXlbaV0gOiBjLnN0cm9rZURhc2hBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRGaWxsT3BhY2l0eTogQXJyYXkuaXNBcnJheShjLmZpbGxPcGFjaXR5KSA/IGMuZmlsbE9wYWNpdHlbaV0gOiBjLmZpbGxPcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkRXZlbnRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCBpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcy5jdHgsIHQpKSwgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCBpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcy5jdHgsIHQpKSwgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LCB0KSksIHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGUuY29uZmlnLm1hcmtlcnMub25DbGljayksIHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIGUuY29uZmlnLm1hcmtlcnMub25EYmxDbGljayksIHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsIHQpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0TWFya2VyU3R5bGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuY29uZmlnLm1hcmtlcnMuc3Ryb2tlQ29sb3IgfHwgZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHJva2VDb2xvcjogQXJyYXkuaXNBcnJheShhKSA/IGFbdF0gOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludEZpbGxDb2xvcjogQXJyYXkuaXNBcnJheShpKSA/IGlbdF0gOiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgSSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53LCB0aGlzLmluaXRpYWxBbmltID0gdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsIHRoaXMuZHluYW1pY0FuaW0gPSB0aGlzLmluaXRpYWxBbmltICYmIHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhdyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLnBvaW50c1BvcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkuelJhdGlvLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gaS5lbFBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLSIuY29uY2F0KGEuY29uZmlnLmNoYXJ0LnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGlmIChoLmF0dHIoImNsaXAtcGF0aCIsICJ1cmwoI2dyaWRSZWN0TWFya2VyTWFzayIuY29uY2F0KGEuZ2xvYmFscy5jdWlkLCAiKSIpKSwgQXJyYXkuaXNBcnJheShvLngpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IG8ueC5sZW5ndGg7IGMrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBlICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSBlICYmIDAgPT09IGMgJiYgKGQgPSAwKSwgMCA9PT0gZSAmJiAxID09PSBjICYmIChkID0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAhPT0gMSAvIDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYS5nbG9iYWxzLnNlcmllc1pbcl1bZF0gLyBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gYS5jb25maWcucGxvdE9wdGlvbnMuYnViYmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubWluQnViYmxlUmFkaXVzICYmIGYgPCBwLm1pbkJ1YmJsZVJhZGl1cyAmJiAoZiA9IHAubWluQnViYmxlUmFkaXVzKSwgcC5tYXhCdWJibGVSYWRpdXMgJiYgZiA+IHAubWF4QnViYmxlUmFkaXVzICYmIChmID0gcC5tYXhCdWJibGVSYWRpdXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQgfHwgKHUgPSBmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gby54W2NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBvLnlbY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA9IHUgfHwgMCwgbnVsbCAhPT0gYiAmJiB2b2lkIDAgIT09IGEuZ2xvYmFscy5zZXJpZXNbcl1bZF0gfHwgKGcgPSAhMSksIGcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHRoaXMuZHJhd1BvaW50KHgsIGIsIHUsIGYsIHIsIGQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguYWRkKHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmFkZChoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdQb2ludCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgciwgbykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyBiKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyB2KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBNKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG5ldyBUKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGcuZ2V0TWFya2VyQ29uZmlnKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiYXBleGNoYXJ0cy1tYXJrZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFJhZGl1czogImJ1YmJsZSIgPT09IG4uY29uZmlnLmNoYXJ0LnR5cGUgfHwgbi5nbG9iYWxzLmNvbWJvQ2hhcnRzICYmIG4uY29uZmlnLnNlcmllc1tzXSAmJiAiYnViYmxlIiA9PT0gbi5jb25maWcuc2VyaWVzW3NdLnR5cGUgPyBhIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBhID0gZi5wU2l6ZTsKICAgICAgICAgICAgICAgICAgICB2YXIgcCwgeCA9IGQuZmlsbFBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiByLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZi5wb2ludEZpbGxDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVyblVuaXRzOiAib2JqZWN0Qm91bmRpbmdCb3giLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbi5nbG9iYWxzLnNlcmllc1tzXVtvXQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGlmICgiY2lyY2xlIiA9PT0gZi5zaGFwZSA/IHAgPSB1LmRyYXdDaXJjbGUoaSkgOiAic3F1YXJlIiAhPT0gZi5zaGFwZSAmJiAicmVjdCIgIT09IGYuc2hhcGUgfHwgKHAgPSB1LmRyYXdSZWN0KDAsIDAsIGYud2lkdGggLSBmLnBvaW50U3Ryb2tlV2lkdGggLyAyLCBmLmhlaWdodCAtIGYucG9pbnRTdHJva2VXaWR0aCAvIDIsIGYucFJhZGl1cykpLCBuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXSAmJiBuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3IgJiYgKHggPSBuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3IpLCBwLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdCAtIGYud2lkdGggLyAyIC0gZi5wb2ludFN0cm9rZVdpZHRoIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUgLSBmLmhlaWdodCAvIDIgLSBmLnBvaW50U3Ryb2tlV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3g6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsbC1vcGFjaXR5IjogZi5wb2ludEZpbGxPcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBmLnBvaW50U3Ryb2tlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IGYucG9pbnRTdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2UtZGFzaGFycmF5IjogZi5wb2ludFN0cm9rZURhc2hBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2Utb3BhY2l0eSI6IGYucG9pbnRTdHJva2VPcGFjaXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICBjLmRyb3BTaGFkb3cocCwgeSwgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxBbmltIHx8IG4uZ2xvYmFscy5kYXRhQ2hhbmdlZCB8fCBuLmdsb2JhbHMucmVzaXplZCkgbi5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gbi5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZDsKICAgICAgICAgICAgICAgICAgICAgICAgaC5hbmltYXRlTWFya2VyKHAsIDAsICJjaXJjbGUiID09PSBmLnNoYXBlID8gYSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBmLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBmLmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICB9LCB3LCBuLmdsb2JhbHMuZWFzaW5nLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5hbmltYXRpb25Db21wbGV0ZWQocCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobi5nbG9iYWxzLmRhdGFDaGFuZ2VkICYmICJjaXJjbGUiID09PSBmLnNoYXBlKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5keW5hbWljQW5pbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGssIEEsIFMsIEMsIEwgPSBuLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IChDID0gbi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10gJiYgbi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc11bb10pICYmIChrID0gQy54LCBBID0gQy55LCBTID0gdm9pZCAwICE9PSBDLnIgPyBDLnIgOiBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIFAgPSAwOyBQIDwgbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7IFArKykgbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tQXS5pbmRleCA9PT0gcyAmJiAoTCA9IDEsIGEgPSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHQgJiYgMCA9PT0gZSAmJiAoYSA9IDApLCBoLmFuaW1hdGVDaXJjbGUocCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4OiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5OiBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IFMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBMLCBuLmdsb2JhbHMuZWFzaW5nKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgcC5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogciwKICAgICAgICAgICAgICAgICAgICAgICAgajogciwKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0LW1hcmtlci1zaXplIjogYQogICAgICAgICAgICAgICAgICAgIH0pLCBjLnNldFNlbGVjdGlvbkZpbHRlcihwLCBzLCByKSwgZy5hZGRFdmVudHMocCksIHAubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLW1hcmtlciIpLCBwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNlbnRlclRleHRJbkJ1YmJsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQgKz0gcGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwgMTApIC8gNAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHogPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkYXRhTGFiZWxzQ29ycmVjdGlvbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgciwgbykgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGksIG8pLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gaC53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGguaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIGUgPCAwICYmIChlID0gMCksIGUgPiBuLmdsb2JhbHMuZ3JpZEhlaWdodCArIGQgJiYgKGUgPSBuLmdsb2JhbHMuZ3JpZEhlaWdodCArIGQgLyAyKSwgdm9pZCAwID09PSBuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdICYmIChuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdID0gW10pLCBuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLmxlbmd0aCAtIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDAgIT09IG4uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXSA/IG4uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXVtuLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0ubGVuZ3RoIC0gMV0gOiAwOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bZ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW3VdOwogICAgICAgICAgICAgICAgICAgICAgICAodCA+IGYueCArIGYud2lkdGggKyAyIHx8IGUgPiBmLnkgKyBmLmhlaWdodCArIDIgfHwgdCArIGMgPCBmLngpICYmIChsID0gITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCA9PT0gcyB8fCByKSAmJiAobCA9ICEwKSwgewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UmVjdHM6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRyYXduZXh0TGFiZWw6IGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdEYXRhTGFiZWwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s0XSA/IGFyZ3VtZW50c1s0XSA6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmNvbmZpZy5kYXRhTGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoIW4uZW5hYmxlZCB8fCAhQXJyYXkuaXNBcnJheSh0LngpKSByZXR1cm4gZDsKICAgICAgICAgICAgICAgICAgICBkID0gby5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1kYXRhLWxhYmVscyIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IHQueC5sZW5ndGg7IGcrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSB0LnhbZ10gKyBuLm9mZnNldFgsIGggPSB0LnlbZ10gKyBuLm9mZnNldFkgKyBzLCAhaXNOYU4obCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGkgJiYgMCA9PT0gZyAmJiAoYyA9IDApLCAxID09PSBpICYmIDEgPT09IGcgJiYgKGMgPSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gci5nbG9iYWxzLnNlcmllc1tlXVtjXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogYS5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImJ1YmJsZSIgPT09IHIuY29uZmlnLmNoYXJ0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gcCh1ID0gci5nbG9iYWxzLnNlcmllc1pbZV1bY10pLCBoID0gdC55W2ddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gbmV3IEkodGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0geC5jZW50ZXJUZXh0SW5CdWJibGUoaCwgZSwgYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGIueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHZvaWQgMCAhPT0gdSAmJiAoZiA9IHAodSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbG90RGF0YUxhYmVsc1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0Q29ycmVjdGlvbjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc0NvbmZpZzogci5jb25maWcuZGF0YUxhYmVscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBsb3REYXRhTGFiZWxzVGV4dCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC50ZXh0QW5jaG9yLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHQucGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5kYXRhTGFiZWxzQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuYWx3YXlzRHJhd0RhdGFMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQub2Zmc2V0Q29ycmVjdGlvbjsKICAgICAgICAgICAgICAgICAgICBpZiAoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSAmJiBlLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHIpIDwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXduZXh0TGFiZWw6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJlY3RzOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGYgJiYgKHAgPSB0aGlzLmRhdGFMYWJlbHNDb3JyZWN0aW9uKGEsIHMsIG4sIHIsIG8sIHUsIHBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsIDEwKSkpLCBlLmdsb2JhbHMuem9vbWVkIHx8IChhID0gcC54LCBzID0gcC55KSwgcC50ZXh0UmVjdHMgJiYgKGEgPCAtMTAgLSBwLnRleHRSZWN0cy53aWR0aCB8fCBhID4gZS5nbG9iYWxzLmdyaWRXaWR0aCArIHAudGV4dFJlY3RzLndpZHRoICsgMTApICYmIChuID0gIiIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IGUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgKCgiYmFyIiA9PT0gZS5jb25maWcuY2hhcnQudHlwZSB8fCAicmFuZ2VCYXIiID09PSBlLmNvbmZpZy5jaGFydC50eXBlKSAmJiBlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQgfHwgZS5jb25maWcuZGF0YUxhYmVscy5kaXN0cmlidXRlZCkgJiYgKHggPSBlLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbb10pLCAiZnVuY3Rpb24iID09IHR5cGVvZiB4ICYmICh4ID0geCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IGUuZ2xvYmFscy5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogZQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGcgJiYgKHggPSBnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBkLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gZC5vZmZzZXRZOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImJhciIgIT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgJiYgInJhbmdlQmFyIiAhPT0gZS5jb25maWcuY2hhcnQudHlwZSB8fCAoYiA9IDAsIHkgPSAwKSwgcC5kcmF3bmV4dExhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGkuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYSArIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogcyArIHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6IGwgfHwgZC50ZXh0QW5jaG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGggfHwgZC5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBkLnN0eWxlLmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogZC5zdHlsZS5mb250V2VpZ2h0IHx8ICJub3JtYWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZGF0YWxhYmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3g6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5OiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGQuZHJvcFNoYWRvdy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBkLmRyb3BTaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3codywgaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYWRkKHcpLCB2b2lkIDAgPT09IGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXSAmJiAoZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdID0gW10pLCBlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl0ucHVzaChvKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEucGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEucGFkZGluZyAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgbSh0aGlzLmN0eCkuZHJhd1JlY3QoZS54IC0gcywgZS55IC0gciAvIDIsIG8gKyAyICogcywgbiArIHIsIGEuYm9yZGVyUmFkaXVzLCAidHJhbnNwYXJlbnQiID09PSBpLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kID8gIiNmZmYiIDogaS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCwgYS5vcGFjaXR5LCBhLmJvcmRlcldpZHRoLCBhLmJvcmRlckNvbG9yKTsKICAgICAgICAgICAgICAgICAgICBhLmRyb3BTaGFkb3cuZW5hYmxlZCAmJiBuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyhsLCBhLmRyb3BTaGFkb3cpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRhdGFMYWJlbHNCYWNrZ3JvdW5kIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAoImJ1YmJsZSIgIT09IHQuY29uZmlnLmNoYXJ0LnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHQiKSwgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGVbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEuZ2V0QkJveCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMud2lkdGggJiYgcy5oZWlnaHQgJiYgKHIgPSB0aGlzLmFkZEJhY2tncm91bmRUb0RhdGFMYWJlbChhLCBzKSksIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIubm9kZSwgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBhLmdldEF0dHJpYnV0ZSgiZmlsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCAmJiAhdC5nbG9iYWxzLnJlc2l6ZWQgJiYgIXQuZ2xvYmFscy5kYXRhQ2hhbmdlZCA/IHIuYW5pbWF0ZSgpLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiByLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGEuc2V0QXR0cmlidXRlKCJmaWxsIiwgdC5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmZvcmVDb2xvcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJicmluZ0ZvcndhcmQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLncsIGUgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIiksIGkgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkIiksIGEgPSAwOyBhIDwgZS5sZW5ndGg7IGErKykgaSAmJiBpLmluc2VydEJlZm9yZShlW2FdLCBpLm5leHRTaWJsaW5nKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgWCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5iYXJDdHggPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUJhckRhdGFMYWJlbHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LnNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC5iYXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHQuYmFyWVBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC52aXNpYmxlU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5yZW5kZXJlZFBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBuZXcgbSh0aGlzLmJhckN0eC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gQXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkgPyB0aGlzLmJhckN0eC5zdHJva2VXaWR0aFtuXSA6IHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gZSArIHBhcnNlRmxvYXQoYyAqIGcpLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gaSArIHBhcnNlRmxvYXQoaCAqIGcpOwogICAgICAgICAgICAgICAgICAgIGYuZ2xvYmFscy5pc1hOdW1lcmljICYmICFmLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIChiID0gZSArIHBhcnNlRmxvYXQoYyAqIChnICsgMSkpLCB2ID0gaSArIHBhcnNlRmxvYXQoaCAqIChnICsgMSkpIC0geCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBlLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gaSwKICAgICAgICAgICAgICAgICAgICAgICAgayA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBBID0gZi5jb25maWcuZGF0YUxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgUyA9IHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVsczsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGQgJiYgdGhpcy5iYXJDdHguaXNSYW5nZUJhciAmJiAodiA9IGQsIHcgPSBkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgQyA9IEEub2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IEEub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKGYuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgTSA9IHRoaXMuYmFyQ3R4LnNlcmllc1tyXVtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IHAuZ2V0VGV4dFJlY3RzKGYuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKE0pLCBwYXJzZUZsb2F0KEEuc3R5bGUuZm9udFNpemUpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgaTogciwKICAgICAgICAgICAgICAgICAgICAgICAgajogbywKICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWRQYXRoOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBiY3g6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJjeTogdiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBoLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aDogYywKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJlY3RzOiBQLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogeCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc1g6IHksCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNZOiB3LAogICAgICAgICAgICAgICAgICAgICAgICBiYXJEYXRhTGFiZWxzQ29uZmlnOiBTLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZYOiBDLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZZOiBMCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gayA9IHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCA/IHRoaXMuY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvbihUKSA6IHRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihUKSwgdS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgY3k6IGsuYmN5LAogICAgICAgICAgICAgICAgICAgICAgICBjeDogay5iY3gsCiAgICAgICAgICAgICAgICAgICAgICAgIGo6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbDogbFtyXVtvXSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBoLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aDogYwogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGsuZGF0YUxhYmVsc1gsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGsuZGF0YUxhYmVsc1ksCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbDogdGhpcy5iYXJDdHguaXNSYW5nZUJhciA/IFthLCBzXSA6IGxbcl1bb10sCiAgICAgICAgICAgICAgICAgICAgICAgIGk6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGo6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSZWN0czogUCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc0NvbmZpZzogQQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNhbGN1bGF0ZUNvbHVtbnNEYXRhTGFiZWxzUG9zaXRpb24iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuYmN4LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5iYXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC50ZXh0UmVjdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmRhdGFMYWJlbHNZLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5iYXJEYXRhTGFiZWxzQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQub2ZmWCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQub2ZmWTsKICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5hYnMobCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSAidmVydGljYWwiID09PSBpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbjsKICAgICAgICAgICAgICAgICAgICBvIC09IGcgLyAyOwogICAgICAgICAgICAgICAgICAgIHZhciB4ID0gaS5nbG9iYWxzLmdyaWRXaWR0aCAvIGkuZ2xvYmFscy5kYXRhUG9pbnRzOwogICAgICAgICAgICAgICAgICAgIGlmIChlID0gaS5nbG9iYWxzLmlzWE51bWVyaWMgPyBvIC0gbiAvIDIgKyB1IDogbyAtIHggKyBuIC8gMiArIHUsIHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgKyBoLmhlaWdodCAvIDIgLSBnIC8gMiAtIDIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLmJhckN0eC5zZXJpZXNbYV1bc10gPCAwLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gcjsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQgJiYgKHYgPSByIC0gbCArIChiID8gMiAqIGwgOiAwKSwgciAtPSBsKSwgZC5wb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjZW50ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHAgPyBiID8gdiArIGwgLyAyICsgZiA6IHYgKyBsIC8gMiAtIGYgOiBiID8gdiAtIGwgLyAyICsgaC5oZWlnaHQgLyAyICsgZiA6IHYgKyBsIC8gMiArIGguaGVpZ2h0IC8gMiAtIGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm90dG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwID8gYiA/IHYgKyBsICsgZiA6IHYgKyBsIC0gZiA6IGIgPyB2IC0gbCArIGguaGVpZ2h0ICsgZyArIGYgOiB2ICsgbCAtIGguaGVpZ2h0IC8gMiArIGcgLSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcCA/IGIgPyB2ICsgZiA6IHYgLSBmIDogYiA/IHYgLSBoLmhlaWdodCAvIDIgLSBmIDogdiArIGguaGVpZ2h0ICsgZgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5jb25maWcuY2hhcnQuc3RhY2tlZCB8fCAoYyA8IDAgPyBjID0gMCArIGcgOiBjICsgaC5oZWlnaHQgLyAzID4gaS5nbG9iYWxzLmdyaWRIZWlnaHQgJiYgKGMgPSBpLmdsb2JhbHMuZ3JpZEhlaWdodCAtIGcpKSwgewogICAgICAgICAgICAgICAgICAgICAgICBiY3g6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGJjeTogciwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc1g6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNZOiBjCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmJjeSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5iYXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQudGV4dFJlY3RzLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC5kYXRhTGFiZWxzWCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LmJhckRhdGFMYWJlbHNDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0Lm9mZlgsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0Lm9mZlksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlLmdsb2JhbHMuZ3JpZEhlaWdodCAvIGUuZ2xvYmFscy5kYXRhUG9pbnRzOwogICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLmFicyhuKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IHIgLSAodGhpcy5iYXJDdHguaXNSYW5nZUJhciA/IDAgOiBmKSArIG8gLyAyICsgbC5oZWlnaHQgLyAyICsgdSAtIDMsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0aGlzLmJhckN0eC5zZXJpZXNbYV1bc10gPCAwLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gaTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQgJiYgKGIgPSBpICsgbiAtICh4ID8gMiAqIG4gOiAwKSwgaSA9IGUuZ2xvYmFscy5ncmlkV2lkdGggLSBuKSwgZC5wb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjZW50ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHggPyBiICsgbiAvIDIgLSBnIDogTWF0aC5tYXgobC53aWR0aCAvIDIsIGIgLSBuIC8gMikgKyBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0geCA/IGIgKyBuIC0gYyAtIE1hdGgucm91bmQobC53aWR0aCAvIDIpIC0gZyA6IGIgLSBuICsgYyArIE1hdGgucm91bmQobC53aWR0aCAvIDIpICsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b3AiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHggPyBiIC0gYyArIE1hdGgucm91bmQobC53aWR0aCAvIDIpIC0gZyA6IGIgLSBjIC0gTWF0aC5yb3VuZChsLndpZHRoIC8gMikgKyBnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy5jaGFydC5zdGFja2VkIHx8IChoIDwgMCA/IGggPSBoICsgbC53aWR0aCArIGMgOiBoICsgbC53aWR0aCAvIDIgPiBlLmdsb2JhbHMuZ3JpZFdpZHRoICYmIChoID0gZS5nbG9iYWxzLmdyaWRXaWR0aCAtIGwud2lkdGggLSBjKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmN4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICBiY3k6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNYOiBoLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzWTogcAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQudGV4dFJlY3RzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5iYXJIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC5kYXRhTGFiZWxzQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBnID0gInJvdGF0ZSgwKSI7CiAgICAgICAgICAgICAgICAgICAgInZlcnRpY2FsIiA9PT0gZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24gJiYgKGcgPSAicm90YXRlKC05MCwgIi5jb25jYXQoaSwgIiwgIikuY29uY2F0KGEsICIpIikpOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbmV3IHoodGhpcy5iYXJDdHguY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBjLmZvcm1hdHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHIpID4gLTE7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMuZW5hYmxlZCAmJiAhYikgewogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZi5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZGF0YS1sYWJlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHMgJiYgKHYgPSBwKHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBkLmdsb2JhbHMuc2VyaWVzW3JdW29dIDwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5wb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2ZXJ0aWNhbCIgPT09IGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uICYmICgidG9wIiA9PT0gdyAmJiAoYy50ZXh0QW5jaG9yID0geSA/ICJlbmQiIDogInN0YXJ0IiksICJjZW50ZXIiID09PSB3ICYmIChjLnRleHRBbmNob3IgPSAibWlkZGxlIiksICJib3R0b20iID09PSB3ICYmIChjLnRleHRBbmNob3IgPSB5ID8gImVuZCIgOiAic3RhcnQiKSksIHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXIgJiYgdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscykgaCA8IGYuZ2V0VGV4dFJlY3RzKHYsIHBhcnNlRmxvYXQoYy5zdHlsZS5mb250U2l6ZSkpLndpZHRoICYmICh2ID0gIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBkLmNvbmZpZy5jaGFydC5zdGFja2VkICYmIHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMgJiYgKHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCA/IG4ud2lkdGggLyAxLjYgPiBNYXRoLmFicyhoKSAmJiAodiA9ICIiKSA6IG4uaGVpZ2h0IC8gMS42ID4gTWF0aC5hYnMobCkgJiYgKHYgPSAiIikpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgayA9IGUoe30sIGMpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckN0eC5pc0hvcml6b250YWwgJiYgcyA8IDAgJiYgKCJzdGFydCIgPT09IGMudGV4dEFuY2hvciA/IGsudGV4dEFuY2hvciA9ICJlbmQiIDogImVuZCIgPT09IGMudGV4dEFuY2hvciAmJiAoay50ZXh0QW5jaG9yID0gInN0YXJ0IikpLCB1LnBsb3REYXRhTGFiZWxzVGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgajogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNDb25maWc6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHdheXNEcmF3RGF0YUxhYmVsOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldENvcnJlY3Rpb246ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBFID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyA9ICJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIgogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRBbGxTZXJpZXNFbHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMtc2VyaWVzIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0U2VyaWVzQnlOYW1lIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtaW5uZXIgLmFwZXhjaGFydHMtc2VyaWVzW3Nlcmllc05hbWU9JyIuY29uY2F0KHguZXNjYXBlU3RyaW5nKHQpLCAiJ10iKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNTZXJpZXNIaWRkZW4iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0U2VyaWVzQnlOYW1lKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gcGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksIDEwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBpc0hpZGRlbjogZS5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCIpLAogICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudzsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgaS5sZW5ndGg7IGErKykgaVthXS5pbmRleCA9PT0gZSAmJiB0Lm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYShpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzKSwgYShpLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ0b2dnbGVTZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuaXNTZXJpZXNIaWRkZW4odCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsIGUuaXNIaWRkZW4pLCBlLmlzSGlkZGVuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNob3dTZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuaXNTZXJpZXNIaWRkZW4odCk7CiAgICAgICAgICAgICAgICAgICAgZS5pc0hpZGRlbiAmJiB0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGlkZVNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5pc1Nlcmllc0hpZGRlbih0KTsKICAgICAgICAgICAgICAgICAgICBlLmlzSGlkZGVuIHx8IHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJyZXNldFNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdKSB8fCBhcmd1bWVudHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdKSB8fCBhcmd1bWVudHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdKSB8fCBhcmd1bWVudHNbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB4LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsU2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICBhLmdsb2JhbHMucHJldmlvdXNQYXRocyA9IFtdLCBpID8gKGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMgPSBbXSwgYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyA9IFtdLCBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcyA9IFtdLCBhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcyA9IFtdKSA6IHMgPSB0aGlzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHMpLCBhLmNvbmZpZy5zZXJpZXMgPSBzLCB0ICYmIChlICYmIChhLmdsb2JhbHMuem9vbWVkID0gITEsIHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksIHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLCBhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImVtcHR5Q29sbGFwc2VkU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMudywgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpID4gLTEgJiYgKHRbaV0uZGF0YSA9IFtdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ0b2dnbGVTZXJpZXNPbkhvdmVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgZSB8fCAoZSA9IHQudGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVscyIpOwogICAgICAgICAgICAgICAgICAgIGlmICgibW91c2Vtb3ZlIiA9PT0gdC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoInJlbCIpLCAxMCkgLSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgaS5nbG9iYWxzLmF4aXNDaGFydHMgfHwgInJhZGlhbEJhciIgPT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgPyBpLmdsb2JhbHMuYXhpc0NoYXJ0cyA/IChyID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpyZWFsSW5kZXg9JyIuY29uY2F0KHMsICInXSIpKSwgbyA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHNbZGF0YVxcOnJlYWxJbmRleD0nIi5jb25jYXQocywgIiddIikpKSA6IHIgPSBpLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSciLmNvbmNhdChzICsgMSwgIiddIikpIDogciA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIuY29uY2F0KHMgKyAxLCAiJ10gcGF0aCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBhLmxlbmd0aDsgbisrKSBhW25dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gciAmJiAoaS5nbG9iYWxzLmF4aXNDaGFydHMgfHwgci5wYXJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSwgci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksIG51bGwgIT09IG8gJiYgby5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcykpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgibW91c2VvdXQiID09PSB0LnR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgYS5sZW5ndGg7IGwrKykgYVtsXS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IHMubGVuZ3RoOyBlKyspIHNbZV0uY2xhc3NMaXN0W3RdKGkubGVnZW5kSW5hY3RpdmVDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoIm1vdXNlbW92ZSIgPT09IHQudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCJyZWwiKSwgMTApIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgcigiYWRkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCBzLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gcGFyc2VJbnQoc1tlXS5nZXRBdHRyaWJ1dGUoInZhbCIpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPj0gdC5mcm9tICYmIGEgPD0gdC50byAmJiBzW2VdLmNsYXNzTGlzdC5yZW1vdmUoaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tvXSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIm1vdXNlb3V0IiA9PT0gdC50eXBlICYmIHIoInJlbW92ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdICYmIGFyZ3VtZW50c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogImFzYyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy5zZXJpZXMubGVuZ3RoID4gMSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGkuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIChzID0gImJhciIgPT09IGkuY29uZmlnLnNlcmllc1thXS50eXBlIHx8ICJjb2x1bW4iID09PSBpLmNvbmZpZy5zZXJpZXNbYV0udHlwZSksIGUuZGF0YSAmJiBlLmRhdGEubGVuZ3RoID4gMCAmJiAhcyA/IGEgOiAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByID0gImFzYyIgPT09IGUgPyAwIDogcy5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzYyIgPT09IGUgPyByIDwgcy5sZW5ndGggOiByID49IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjIiA9PT0gZSA/IHIrKyA6IHItLSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gc1tyXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBzW3JdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0UHJldmlvdXNQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnc7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gZVtpXS5jaGlsZE5vZGVzLCByID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogZVtpXS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8gPSAwOyBvIDwgcy5sZW5ndGg7IG8rKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzW29dLmhhc0F0dHJpYnV0ZSgicGF0aFRvIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHNbb10uZ2V0QXR0cmlidXRlKCJwYXRoVG8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnBhdGhzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMucHJldmlvdXNQYXRocyA9IFtdOwogICAgICAgICAgICAgICAgICAgIFsibGluZSIsICJhcmVhIiwgImJhciIsICJyYW5nZWJhciIsICJjYW5kbGVzdGljayIsICJyYWRhciJdLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IChhID0gaSwgdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtIi5jb25jYXQoYSwgIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzIikpKSwgciA9IDA7IHIgPCBzLmxlbmd0aDsgcisrKSBlKHMsIHIsIGkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoImJ1YmJsZSIpLCB0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoInNjYXR0ZXIiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsICIgLmFwZXhjaGFydHMtc2VyaWVzIikpOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsICIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpyZWFsSW5kZXg9JyIpLmNvbmNhdChlLCAiJ10gcmVjdCIpKSwgYSA9IFtdLCBzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpW3RdLmdldEF0dHJpYnV0ZShlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcGFyc2VGbG9hdChlKCJ4IikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBwYXJzZUZsb2F0KGUoInkiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJzZUZsb2F0KGUoIndpZHRoIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcnNlRmxvYXQoZSgiaGVpZ2h0IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaVt0XS5nZXRBdHRyaWJ1dGUoImNvbG9yIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgcyhyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzID0gMDsgcyA8IGkubGVuZ3RoOyBzKyspIGEocyk7CiAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLmF4aXNDaGFydHMgfHwgKHQuZ2xvYmFscy5wcmV2aW91c1BhdGhzID0gdC5nbG9iYWxzLnNlcmllcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtIi5jb25jYXQodCwgIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzIikpOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgaS5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLSIuY29uY2F0KHQsICItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFw6cmVhbEluZGV4PSciKS5jb25jYXQoYSwgIiddIGNpcmNsZSIpKSwgciA9IFtdLCBvID0gMDsgbyA8IHMubGVuZ3RoOyBvKyspIHIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogc1tvXS5nZXRBdHRyaWJ1dGUoImN4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogc1tvXS5nZXRBdHRyaWJ1dGUoImN5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogc1tvXS5nZXRBdHRyaWJ1dGUoInIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2xlYXJQcmV2aW91c1BhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMucHJldmlvdXNQYXRocyA9IFtdLCB0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkID0gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlTm9EYXRhIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuY29uZmlnLm5vRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2xvYmFscy5zdmdXaWR0aCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lmdsb2JhbHMuc3ZnSGVpZ2h0IC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICJtaWRkbGUiOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMubm9EYXRhID0gITAsIHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZCA9ICEwLCAibGVmdCIgPT09IGUuYWxpZ24gPyAoYSA9IDEwLCByID0gInN0YXJ0IikgOiAicmlnaHQiID09PSBlLmFsaWduICYmIChhID0gdC5nbG9iYWxzLnN2Z1dpZHRoIC0gMTAsIHIgPSAiZW5kIiksICJ0b3AiID09PSBlLnZlcnRpY2FsQWxpZ24gPyBzID0gNTAgOiAiYm90dG9tIiA9PT0gZS52ZXJ0aWNhbEFsaWduICYmIChzID0gdC5nbG9iYWxzLnN2Z0hlaWdodCAtIDUwKSwgYSArPSBlLm9mZnNldFgsIHMgPSBzICsgcGFyc2VJbnQoZS5zdHlsZS5mb250U2l6ZSwgMTApICsgMiArIGUub2Zmc2V0WSwgdm9pZCAwICE9PSBlLnRleHQgJiYgIiIgIT09IGUudGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGkuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlLnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGUuc3R5bGUuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBlLnN0eWxlLmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IGUuc3R5bGUuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXRleHQtbm9kYXRhIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLmRvbS5QYXBlci5hZGQobykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy53LCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwID09PSB0W2ldLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgdFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoOyBhKyspIHRbaV0ucHVzaCgwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYXNBbGxTZXJpZXNFcXVhbFgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAhMCwgZSA9IHRoaXMudywgaSA9IHRoaXMuZmlsdGVyZWRTZXJpZXNYKCksIGEgPSAwOyBhIDwgaS5sZW5ndGggLSAxOyBhKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpW2FdWzBdICE9PSBpW2EgKyAxXVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYID0gdCwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJmaWx0ZXJlZFNlcmllc1giLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGVuZ3RoID4gMCA/IHQgOiBbXQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgWSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5iYXJDdHggPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImluaXRWYXJpYWJsZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckN0eC5zZXJpZXMgPSB0LCB0aGlzLmJhckN0eC50b3RhbEl0ZW1zID0gMCwgdGhpcy5iYXJDdHguc2VyaWVzTGVuID0gMCwgdGhpcy5iYXJDdHgudmlzaWJsZUkgPSAtMSwgdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zID0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0W2ldLmxlbmd0aCA+IDAgJiYgKHRoaXMuYmFyQ3R4LnNlcmllc0xlbiA9IHRoaXMuYmFyQ3R4LnNlcmllc0xlbiArIDEsIHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXMgKz0gdFtpXS5sZW5ndGgpLCBlLmdsb2JhbHMuaXNYTnVtZXJpYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgdFtpXS5sZW5ndGg7IGErKykgZS5nbG9iYWxzLnNlcmllc1hbaV1bYV0gPiBlLmdsb2JhbHMubWluWCAmJiBlLmdsb2JhbHMuc2VyaWVzWFtpXVthXSA8IGUuZ2xvYmFscy5tYXhYICYmIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcysrOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcyA9IGUuZ2xvYmFscy5kYXRhUG9pbnRzOwogICAgICAgICAgICAgICAgICAgIDAgPT09IHRoaXMuYmFyQ3R4LnNlcmllc0xlbiAmJiAodGhpcy5iYXJDdHguc2VyaWVzTGVuID0gMSksIHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcyA9IFtdLCB0aGlzLmJhckN0eC5yYWRpdXNPblNlcmllc051bWJlciA9IHQubGVuZ3RoIC0gMSwgZS5nbG9iYWxzLmNvbWJvQ2hhcnRzIHx8IHRoaXMuY2hlY2taZXJvU2VyaWVzKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaW5pdGlhbFBvc2l0aW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGUsIGksIGEsIHMsIHIsIG8sIG4sIGwgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLmdsb2JhbHMuZGF0YVBvaW50czsKICAgICAgICAgICAgICAgICAgICB0aGlzLmJhckN0eC5pc1JhbmdlQmFyICYmIChoID0gbC5nbG9iYWxzLmxhYmVscy5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5iYXJDdHguc2VyaWVzTGVuOwogICAgICAgICAgICAgICAgICAgIGlmIChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MgJiYgKGMgPSAxKSwgdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKSBzID0gKGkgPSBsLmdsb2JhbHMuZ3JpZEhlaWdodCAvIGgpIC8gYywgbC5nbG9iYWxzLmlzWE51bWVyaWMgJiYgKHMgPSAoaSA9IGwuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gdGhpcy5iYXJDdHgudG90YWxJdGVtcykgLyB0aGlzLmJhckN0eC5zZXJpZXNMZW4pLCBzID0gcyAqIHBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LCAxMCkgLyAxMDAsIG4gPSB0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWSArIGwuZ2xvYmFscy5wYWRIb3Jpem9udGFsICsgKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQgPyBsLmdsb2JhbHMuZ3JpZFdpZHRoIDogMCkgLSAodGhpcy5iYXJDdHguaXNSZXZlcnNlZCA/IDIgKiB0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWSA6IDApLCBlID0gKGkgLSBzICogdGhpcy5iYXJDdHguc2VyaWVzTGVuKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gbC5nbG9iYWxzLmdyaWRXaWR0aCAvIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcywgbC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljICYmIChhID0gbC5nbG9iYWxzLmdyaWRXaWR0aCAvIGwuZ2xvYmFscy5kYXRhUG9pbnRzKSwgciA9IGEgLyB0aGlzLmJhckN0eC5zZXJpZXNMZW4gKiBwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLCAxMCkgLyAxMDAsIGwuZ2xvYmFscy5pc1hOdW1lcmljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuYmFyQ3R4LnhSYXRpbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAoZCA9IHRoaXMuYmFyQ3R4LmluaXRpYWxYUmF0aW8pLCBsLmdsb2JhbHMubWluWERpZmYgJiYgLjUgIT09IGwuZ2xvYmFscy5taW5YRGlmZiAmJiBsLmdsb2JhbHMubWluWERpZmYgLyBkID4gMCAmJiAoYSA9IGwuZ2xvYmFscy5taW5YRGlmZiAvIGQpLCAociA9IGEgLyB0aGlzLmJhckN0eC5zZXJpZXNMZW4gKiBwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLCAxMCkgLyAxMDApIDwgMSAmJiAociA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGwuZ2xvYmFscy5ncmlkSGVpZ2h0IC0gdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdIC0gKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQgPyBsLmdsb2JhbHMuZ3JpZEhlaWdodCA6IDApICsgKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQgPyAyICogdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdIDogMCksIHQgPSBsLmdsb2JhbHMucGFkSG9yaXpvbnRhbCArIChhIC0gciAqIHRoaXMuYmFyQ3R4LnNlcmllc0xlbikgLyAyCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHlEaXZpc2lvbjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgeERpdmlzaW9uOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiByLAogICAgICAgICAgICAgICAgICAgICAgICB6ZXJvSDogbywKICAgICAgICAgICAgICAgICAgICAgICAgemVyb1c6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFBhdGhGaWxsQ29sb3IiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBNKHRoaXMuYmFyQ3R4LmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZCA/IGkgOiBlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5sZW5ndGggPiAwICYmIHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdFtlXVtpXSA+PSBhLmZyb20gJiYgdFtlXVtpXSA8PSBhLnRvICYmIChvID0gYS5jb2xvcikKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldICYmIHMuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciAmJiAobyA9IHMuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciksIHIuZmlsbFBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQgPyBuIDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBvLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdFtlXVtpXQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFN0cm9rZVdpZHRoIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXSB8fCBudWxsID09PSB0aGlzLmJhckN0eC5zZXJpZXNbdF1bZV0gPyB0aGlzLmJhckN0eC5pc051bGxWYWx1ZSA9ICEwIDogdGhpcy5iYXJDdHguaXNOdWxsVmFsdWUgPSAhMSwgcy5jb25maWcuc3Ryb2tlLnNob3cgJiYgKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlIHx8IChhID0gQXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkgPyB0aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXSA6IHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYmFyQmFja2dyb3VuZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC54MSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnkxLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55MiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZWxTZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuZXcgbSh0aGlzLmJhckN0eC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbmV3IEUodGhpcy5iYXJDdHguY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCA+IDAgJiYgYyA9PT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICBlID49IHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoICYmIChlICU9IHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzW2VdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGguZHJhd1JlY3Qodm9pZCAwICE9PSBhID8gYSA6IDAsIHZvaWQgMCAhPT0gciA/IHIgOiAwLCB2b2lkIDAgIT09IHMgPyBzIDogbC5nbG9iYWxzLmdyaWRXaWR0aCwgdm9pZCAwICE9PSBvID8gbyA6IGwuZ2xvYmFscy5ncmlkSGVpZ2h0LCB0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyUmFkaXVzLCBkLCB0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyT3BhY2l0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uYWRkKGcpLCBnLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldENvbHVtblBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5iYXJYUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnlSYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LncsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuZXcgbSh0aGlzLmJhckN0eC5jdHgpOwogICAgICAgICAgICAgICAgICAgIChvID0gQXJyYXkuaXNBcnJheShvKSA/IG9bbF0gOiBvKSB8fCAobyA9IDApOwogICAgICAgICAgICAgICAgICAgIHZhciB1ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlSYXRpbzogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuZ2V0Um91bmRlZEJhcnMoZCwgdSwgbiwgaCwgYyksCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gaSArIGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnLm1vdmUocCwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBnLm1vdmUocCwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBnLmxpbmUoeCAtIG8sIHMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGggPiAwICYmICh2ID0gdGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGwsIGMsICExKSksIGIgPSBiICsgZy5saW5lKHAsIGYueTIpICsgZi5wYXRoV2l0aFJhZGl1cyArIGcubGluZSh4IC0gbywgZi55MikgKyB5ICsgeSArICJ6IiwgdiA9IHYgKyBnLmxpbmUocCwgcykgKyB5ICsgeSArIHkgKyB5ICsgeSArIGcubGluZShwLCBzKSwgZC5jb25maWcuY2hhcnQuc3RhY2tlZCAmJiAodGhpcy5iYXJDdHgueUFycmoucHVzaChmLnkyKSwgdGhpcy5iYXJDdHgueUFycmpGLnB1c2goTWF0aC5hYnMocyAtIGYueTIpKSwgdGhpcy5iYXJDdHgueUFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pKSwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IGIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tOiB2CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRCYXJwYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5iYXJZUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmJhckhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LngyLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LncsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuZXcgbSh0aGlzLmJhckN0eC5jdHgpOwogICAgICAgICAgICAgICAgICAgIChyID0gQXJyYXkuaXNBcnJheShyKSA/IHJbbl0gOiByKSB8fCAociA9IDApOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmdldFJvdW5kZWRCYXJzKGMsIGcsIG8sIGwsIGgpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gZC5tb3ZlKGEsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gZC5tb3ZlKGEsIGUpOwogICAgICAgICAgICAgICAgICAgIGMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aCA+IDAgJiYgKHAgPSB0aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobiwgaCwgITEpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlICsgaSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGQubGluZShhLCBiIC0gcik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgPSBmICsgZC5saW5lKHUueDIsIHgpICsgdS5wYXRoV2l0aFJhZGl1cyArIGQubGluZSh1LngyLCBiIC0gcikgKyB2ICsgdiArICJ6IiwgcCA9IHAgKyBkLmxpbmUoYSwgeCkgKyB2ICsgdiArIHYgKyB2ICsgdiArIGQubGluZShhLCB4KSwgYy5jb25maWcuY2hhcnQuc3RhY2tlZCAmJiAodGhpcy5iYXJDdHgueEFycmoucHVzaCh1LngyKSwgdGhpcy5iYXJDdHgueEFycmpGLnB1c2goTWF0aC5hYnMoYSAtIHUueDIpKSwgdGhpcy5iYXJDdHgueEFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbbF1baF0pKSwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IGYsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tOiBwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRSb3VuZGVkQmFycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gbmV3IG0odGhpcy5iYXJDdHguY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gQXJyYXkuaXNBcnJheShuKTsKICAgICAgICAgICAgICAgICAgICBsID8gbyA9IG5bYSA+IG4ubGVuZ3RoIC0gMSA/IG4ubGVuZ3RoIC0gMSA6IGFdIDogbyA9IG47CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uZmlnLmNoYXJ0LnN0YWNrZWQgJiYgaS5sZW5ndGggPiAxICYmIGEgIT09IHRoaXMuYmFyQ3R4LnJhZGl1c09uU2VyaWVzTnVtYmVyICYmICFsICYmIChvID0gMCksIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUueDI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhlLngxIC0gZS54MikgPCBvICYmIChvID0gTWF0aC5hYnMoZS54MSAtIGUueDIpKSwgdm9pZCAwICE9PSBpW2FdW3NdIHx8IG51bGwgIT09IGlbYV1bc10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5iYXJDdHguaXNSZXZlcnNlZCA/IGlbYV1bc10gPiAwIDogaVthXVtzXSA8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkICYmIChvICo9IC0xKSwgYyAtPSBvLCBoID0gci5xdWFkcmF0aWNDdXJ2ZShjICsgbywgZS5iYXJZUG9zaXRpb24sIGMgKyBvLCBlLmJhcllQb3NpdGlvbiArIChkID8gLTEgKiBvIDogbykpICsgci5saW5lKGMgKyBvLCBlLmJhcllQb3NpdGlvbiArIGUuYmFySGVpZ2h0IC0gZS5zdHJva2VXaWR0aCAtIChkID8gLTEgKiBvIDogbykpICsgci5xdWFkcmF0aWNDdXJ2ZShjICsgbywgZS5iYXJZUG9zaXRpb24gKyBlLmJhckhlaWdodCAtIGUuc3Ryb2tlV2lkdGgsIGMsIGUuYmFyWVBvc2l0aW9uICsgZS5iYXJIZWlnaHQgLSBlLnN0cm9rZVdpZHRoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoV2l0aFJhZGl1czogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUueTI7CiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGUueTEgLSBlLnkyKSA8IG8gJiYgKG8gPSBNYXRoLmFicyhlLnkxIC0gZS55MikpLCB2b2lkIDAgIT09IGlbYV1bc10gfHwgbnVsbCAhPT0gaVthXVtzXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGlbYV1bc10gPCAwOwogICAgICAgICAgICAgICAgICAgICAgICBmICYmIChvICo9IC0xKSwgdSArPSBvLCBnID0gci5xdWFkcmF0aWNDdXJ2ZShlLmJhclhQb3NpdGlvbiwgdSAtIG8sIGUuYmFyWFBvc2l0aW9uICsgKGYgPyAtMSAqIG8gOiBvKSwgdSAtIG8pICsgci5saW5lKGUuYmFyWFBvc2l0aW9uICsgZS5iYXJXaWR0aCAtIGUuc3Ryb2tlV2lkdGggLSAoZiA/IC0xICogbyA6IG8pLCB1IC0gbykgKyByLnF1YWRyYXRpY0N1cnZlKGUuYmFyWFBvc2l0aW9uICsgZS5iYXJXaWR0aCAtIGUuc3Ryb2tlV2lkdGgsIHUgLSBvLCBlLmJhclhQb3NpdGlvbiArIGUuYmFyV2lkdGggLSBlLnN0cm9rZVdpZHRoLCB1KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoV2l0aFJhZGl1czogZywKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IHUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNoZWNrWmVyb1NlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0LnNlcmllcywgaSA9IHRoaXMudywgYSA9IDA7IGEgPCBlLmxlbmd0aDsgYSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwLCByID0gMDsgciA8IGVbaS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDsgcisrKSBzICs9IGVbYV1bcl07CiAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHMgJiYgdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzLnB1c2goYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IGUubGVuZ3RoIC0gMTsgbyA+PSAwOyBvLS0pIHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcy5pbmRleE9mKG8pID4gLTEgJiYgbyA9PT0gdGhpcy5yYWRpdXNPblNlcmllc051bWJlciAmJiAodGhpcy5iYXJDdHgucmFkaXVzT25TZXJpZXNOdW1iZXIgLT0gMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IGUubGVuZ3RoIC0gMTsgbiA+PSAwOyBuLS0pIGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodGhpcy5iYXJDdHgucmFkaXVzT25TZXJpZXNOdW1iZXIpID4gLTEgJiYgKHRoaXMuYmFyQ3R4LnJhZGl1c09uU2VyaWVzTnVtYmVyIC09IDEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFhGb3JWYWx1ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gIShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSkgfHwgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaSA/IGUgOiBudWxsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgKGEgPSBlICsgdCAvIHRoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvIC0gMiAqICh0aGlzLmJhckN0eC5pc1JldmVyc2VkID8gdCAvIHRoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvIDogMCkpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFlGb3JWYWx1ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gIShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSkgfHwgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaSA/IGUgOiBudWxsOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgKGEgPSBlIC0gdCAvIHRoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XSArIDIgKiAodGhpcy5iYXJDdHguaXNSZXZlcnNlZCA/IHQgLyB0aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF0gOiAwKSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0R29hbFZhbHVlcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV0gJiYgbi5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdICYmIEFycmF5LmlzQXJyYXkobi5nbG9iYWxzLnNlcmllc0dvYWxzW2FdW3NdKSAmJiBuLmdsb2JhbHMuc2VyaWVzR29hbHNbYV1bc10uZm9yRWFjaCgoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICAgICAgbC5wdXNoKChvKHMgPSB7fSwgdCwgIngiID09PSB0ID8gci5nZXRYRm9yVmFsdWUoYS52YWx1ZSwgZSwgITEpIDogci5nZXRZRm9yVmFsdWUoYS52YWx1ZSwgaSwgITEpKSwgbyhzLCAiYXR0cnMiLCBhKSwgcykpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdHb2FsTGluZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5iYXJYUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmJhcllQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ29hbFgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmdvYWxZLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5iYXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbmV3IG0odGhpcy5iYXJDdHguY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYXBleGNoYXJ0cy1iYXItZ29hbHMtZ3JvdXBzIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCA/IEFycmF5LmlzQXJyYXkoYSkgJiYgYS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwICE9PSB0LmF0dHJzLnN0cm9rZUhlaWdodCA/IHQuYXR0cnMuc3Ryb2tlSGVpZ2h0IDogbyAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaSArIGUgKyBvIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4uZHJhd0xpbmUodC54LCBhIC0gMiAqIGUsIHQueCwgYSwgdC5hdHRycy5zdHJva2VDb2xvciA/IHQuYXR0cnMuc3Ryb2tlQ29sb3IgOiB2b2lkIDAsIHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LCB0LmF0dHJzLnN0cm9rZVdpZHRoID8gdC5hdHRycy5zdHJva2VXaWR0aCA6IDIsIHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksIGwuYWRkKGgpCiAgICAgICAgICAgICAgICAgICAgfSkpIDogQXJyYXkuaXNBcnJheShzKSAmJiBzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB2b2lkIDAgIT09IHQuYXR0cnMuc3Ryb2tlV2lkdGggPyB0LmF0dHJzLnN0cm9rZVdpZHRoIDogciAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZSArIGkgKyByIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4uZHJhd0xpbmUoYSAtIDIgKiBpLCB0LnksIGEsIHQueSwgdC5hdHRycy5zdHJva2VDb2xvciA/IHQuYXR0cnMuc3Ryb2tlQ29sb3IgOiB2b2lkIDAsIHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LCB0LmF0dHJzLnN0cm9rZUhlaWdodCA/IHQuYXR0cnMuc3Ryb2tlSGVpZ2h0IDogMiwgdC5hdHRycy5zdHJva2VMaW5lQ2FwKSwgbC5hZGQoaCkKICAgICAgICAgICAgICAgICAgICB9KSksIGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIEYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBpKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudzsKICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy53OwogICAgICAgICAgICAgICAgdGhpcy5iYXJPcHRpb25zID0gcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLCB0aGlzLmlzSG9yaXpvbnRhbCA9IHRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLCB0aGlzLnN0cm9rZVdpZHRoID0gcy5jb25maWcuc3Ryb2tlLndpZHRoLCB0aGlzLmlzTnVsbFZhbHVlID0gITEsIHRoaXMuaXNSYW5nZUJhciA9IHMuZ2xvYmFscy5zZXJpZXNSYW5nZUJhci5sZW5ndGggJiYgdGhpcy5pc0hvcml6b250YWwsIHRoaXMueHlSYXRpb3MgPSBpLCBudWxsICE9PSB0aGlzLnh5UmF0aW9zICYmICh0aGlzLnhSYXRpbyA9IGkueFJhdGlvLCB0aGlzLmluaXRpYWxYUmF0aW8gPSBpLmluaXRpYWxYUmF0aW8sIHRoaXMueVJhdGlvID0gaS55UmF0aW8sIHRoaXMuaW52ZXJ0ZWRYUmF0aW8gPSBpLmludmVydGVkWFJhdGlvLCB0aGlzLmludmVydGVkWVJhdGlvID0gaS5pbnZlcnRlZFlSYXRpbywgdGhpcy5iYXNlTGluZVkgPSBpLmJhc2VMaW5lWSwgdGhpcy5iYXNlTGluZUludmVydGVkWSA9IGkuYmFzZUxpbmVJbnZlcnRlZFkpLCB0aGlzLnlheGlzSW5kZXggPSAwLCB0aGlzLnNlcmllc0xlbiA9IDAsIHRoaXMuYmFySGVscGVycyA9IG5ldyBZKHRoaXMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyB5KHRoaXMuY3R4LCBhKTsKICAgICAgICAgICAgICAgICAgICB0ID0gci5nZXRMb2dTZXJpZXModCksIHRoaXMuc2VyaWVzID0gdCwgdGhpcy55UmF0aW8gPSByLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLCB0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzIgogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGEuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCAmJiB0aGlzLnRvdGFsSXRlbXMgPiB0aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5tYXhJdGVtcyAmJiBjb25zb2xlLndhcm4oIldBUk5JTkc6IERhdGFMYWJlbHMgYXJlIGVuYWJsZWQgYnV0IHRoZXJlIGFyZSB0b28gbWFueSB0byBkaXNwbGF5LiBUaGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZSB3aGVuIHJlbmRlcmluZy4iKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMCwgbCA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrLCBsKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGgsIGMsIGQsIGcsIHUgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGEuZ2xvYmFscy5jb21ib0NoYXJ0cyA/IGlbbl0gOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogbiArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW3ZdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpyZWFsSW5kZXgiOiB2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModywgdiksIHRbbl0ubGVuZ3RoID4gMCAmJiAodGhpcy52aXNpYmxlSSA9IHRoaXMudmlzaWJsZUkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueVJhdGlvLmxlbmd0aCA+IDEgJiYgKHRoaXMueWF4aXNJbmRleCA9IHYpLCB0aGlzLmlzUmV2ZXJzZWQgPSBhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdICYmIGEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBTID0gdGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IFMueSwgayA9IFMuYmFySGVpZ2h0LCBjID0gUy55RGl2aXNpb24sIGcgPSBTLnplcm9XLCB1ID0gUy54LCBBID0gUy5iYXJXaWR0aCwgaCA9IFMueERpdmlzaW9uLCBkID0gUy56ZXJvSCwgdGhpcy5ob3Jpem9udGFsIHx8IGIucHVzaCh1ICsgQSAvIDIpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBDID0gcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOnJlYWxJbmRleCI6IHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBMID0gcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogInBvaW50ZXItZXZlbnRzOiBub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFAgPSAwOyBQIDwgYS5nbG9iYWxzLmRhdGFQb2ludHM7IFArKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE0gPSB0aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobiwgUCwgdiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYzogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxTZXJpZXM6IHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hvcml6b250YWwgPyAoVCA9IHRoaXMuZHJhd0JhclBhdGhzKGUoZSh7fSwgSSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9XOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlEaXZpc2lvbjogYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBBID0gdGhpcy5zZXJpZXNbbl1bUF0gLyB0aGlzLmludmVydGVkWVJhdGlvKSA6IChUID0gdGhpcy5kcmF3Q29sdW1uUGF0aHMoZShlKHt9LCBJKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4RGl2aXNpb246IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb0g6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgayA9IHRoaXMuc2VyaWVzW25dW1BdIC8gdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeiA9IHRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogVC5iYXJYUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyWVBvc2l0aW9uOiBULmJhcllQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2FsWDogVC5nb2FsWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2FsWTogVC5nb2FsWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeiAmJiBMLmFkZCh6KSwgZiA9IFQueSwgdSA9IFQueCwgUCA+IDAgJiYgYi5wdXNoKHUgKyBBIC8gMiksIHAucHVzaChmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBYID0gdGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCwgbiwgUCwgdik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclNlcmllcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGaWxsOiBYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogVC5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IFQucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YUxhYmVsc1dyYXA6IEMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxHb2Fsc01hcmtlcnM6IEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVNlcmllczogdGhpcy52aXNpYmxlSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiYmFyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XSA9IGIsIGEuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdID0gcCwgby5hZGQodykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVuZGVyU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQucGF0aEZpbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmxpbmVGaWxsLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHQuZWxTZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0LnkxLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC55MiwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gdC5iYXJIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gdC5iYXJZUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0LmVsRGF0YUxhYmVsc1dyYXAsCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB0LmVsR29hbHNNYXJrZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gdC52aXNpYmxlU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBBID0gdC50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBTID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBDID0gbmV3IG0odGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgIGEgfHwgKGEgPSB0aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQgPyBTLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tzXSA6IFMuZ2xvYmFscy5zdHJva2UuY29sb3JzW2VdKSwgUy5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10gJiYgUy5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3IgJiYgKGEgPSBTLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciksIHRoaXMuaXNOdWxsVmFsdWUgJiYgKGkgPSAibm9uZSIpOwogICAgICAgICAgICAgICAgICAgIHZhciBMID0gcyAvIFMuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSAqIChTLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkIC8gUy5nbG9iYWxzLmRhdGFQb2ludHMpIC8gMi40LAogICAgICAgICAgICAgICAgICAgICAgICBQID0gQy5yZW5kZXJQYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgajogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lQ2FwOiBTLmNvbmZpZy5zdHJva2UubGluZUNhcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25EZWxheTogTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTcGVlZDogUy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDaGFuZ2VTcGVlZDogUy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYXBleGNoYXJ0cy0iLmNvbmNhdChBLCAiLWFyZWEiKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBQLmF0dHIoImNsaXAtcGF0aCIsICJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KFMuZ2xvYmFscy5jdWlkLCAiKSIpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgTSA9IFMuY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50czsKICAgICAgICAgICAgICAgICAgICBNLmNvdW50ID4gMCAmJiBzID49IFMuZ2xvYmFscy5kYXRhUG9pbnRzIC0gTS5jb3VudCAmJiAoUC5ub2RlLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIsIE0uZGFzaEFycmF5KSwgUC5ub2RlLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIiwgTS5zdHJva2VXaWR0aCksIFAubm9kZS5zZXRBdHRyaWJ1dGUoImZpbGwtb3BhY2l0eSIsIE0uZmlsbE9wYWNpdHkpKSwgdm9pZCAwICE9PSBnICYmIHZvaWQgMCAhPT0gdSAmJiAoUC5hdHRyKCJkYXRhLXJhbmdlLXkxIiwgZyksIFAuYXR0cigiZGF0YS1yYW5nZS15MiIsIHUpKSwgbmV3IHYodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihQLCBlLCBzKSwgaC5hZGQoUCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIFQgPSBuZXcgWCh0aGlzKS5oYW5kbGVCYXJEYXRhTGFiZWxzKHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogYywKICAgICAgICAgICAgICAgICAgICAgICAgeTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBzLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBwLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aDogeCwKICAgICAgICAgICAgICAgICAgICAgICAgYmFyWVBvc2l0aW9uOiBiLAogICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlZFBhdGg6IFAsCiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVTZXJpZXM6IGsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gVCAmJiB5LmFkZChUKSwgaC5hZGQoeSksIHcgJiYgaC5hZGQodyksIGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0JhclBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmluZGV4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmJhckhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lnplcm9XLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC55RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LmVsU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gZS5pLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gZS5qOwogICAgICAgICAgICAgICAgICAgIGguZ2xvYmFscy5pc1hOdW1lcmljICYmIChvID0gKGguZ2xvYmFscy5zZXJpZXNYW2NdW2RdIC0gaC5nbG9iYWxzLm1pblgpIC8gdGhpcy5pbnZlcnRlZFhSYXRpbyAtIGkpOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gbyArIGkgKiB0aGlzLnZpc2libGVJOwogICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2NdW2RdLCBzKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhcllQb3NpdGlvbjogZywKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICB4MTogcywKICAgICAgICAgICAgICAgICAgICAgICAgeDI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGUucmVhbEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBpOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBkLAogICAgICAgICAgICAgICAgICAgICAgICB3OiBoCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguZ2xvYmFscy5pc1hOdW1lcmljIHx8IChvICs9IG4pLCB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGo6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGk6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIHkxOiBnIC0gaSAqIHRoaXMudmlzaWJsZUksCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBpICogdGhpcy5zZXJpZXNMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBsCiAgICAgICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiB1LnBhdGhUbywKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IHUucGF0aEZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGdvYWxYOiB0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcygieCIsIHMsIG51bGwsIGMsIGQpLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IGcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdDb2x1bW5QYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pbmRleGVzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC56ZXJvSCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LmVsU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBjID0gZS5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLmksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlLmosCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlLmJjOwogICAgICAgICAgICAgICAgICAgIGlmIChoLmdsb2JhbHMuaXNYTnVtZXJpYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgIGguZ2xvYmFscy5zZXJpZXNYW2NdLmxlbmd0aCB8fCAoZiA9IGguZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4KSwgaSA9IChoLmdsb2JhbHMuc2VyaWVzWFtmXVtnXSAtIGguZ2xvYmFscy5taW5YKSAvIHRoaXMueFJhdGlvIC0gciAqIHRoaXMuc2VyaWVzTGVuIC8gMgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGkgKyByICogdGhpcy52aXNpYmxlSTsKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5iYXJIZWxwZXJzLmdldFlGb3JWYWx1ZSh0aGlzLnNlcmllc1tkXVtnXSwgbyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB0aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoewogICAgICAgICAgICAgICAgICAgICAgICBiYXJYUG9zaXRpb246IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiByLAogICAgICAgICAgICAgICAgICAgICAgICB5MTogbywKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGUucmVhbEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBpOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBnLAogICAgICAgICAgICAgICAgICAgICAgICB3OiBoCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguZ2xvYmFscy5pc1hOdW1lcmljIHx8IChpICs9IHMpLCB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGJjOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBqOiBnLAogICAgICAgICAgICAgICAgICAgICAgICBpOiBkLAogICAgICAgICAgICAgICAgICAgICAgICB4MTogcCAtIG4gLyAyIC0gciAqIHRoaXMudmlzaWJsZUksCiAgICAgICAgICAgICAgICAgICAgICAgIHgyOiByICogdGhpcy5zZXJpZXNMZW4gKyBuIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgZWxTZXJpZXM6IGwKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IHgucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogeC5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZ29hbFk6IHRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKCJ5IiwgbnVsbCwgbywgZCwgZyksCiAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogcAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0UHJldmlvdXNQYXRoIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgYSA9IHRoaXMudywgcyA9IDA7IHMgPCBhLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdOwogICAgICAgICAgICAgICAgICAgICAgICByLnBhdGhzICYmIHIucGF0aHMubGVuZ3RoID4gMCAmJiBwYXJzZUludChyLnJlYWxJbmRleCwgMTApID09PSBwYXJzZUludCh0LCAxMCkgJiYgdm9pZCAwICE9PSBhLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXSAmJiAoaSA9IGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW2VdLmQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBSID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMubW9udGhzMzEgPSBbMSwgMywgNSwgNywgOCwgMTAsIDEyXSwgdGhpcy5tb250aHMzMCA9IFsyLCA0LCA2LCA5LCAxMV0sIHRoaXMuZGF5c0NudE9mWWVhciA9IFswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNF0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaXNWYWxpZERhdGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzTmFOKHRoaXMucGFyc2VEYXRlKHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRUaW1lU3RhbXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZS5wYXJzZSh0KSA/IHRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDID8gbmV3IERhdGUobmV3IERhdGUodCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMjUpKS5nZXRUaW1lKCkgOiBuZXcgRGF0ZSh0KS5nZXRUaW1lKCkgOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldERhdGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEMgPyBuZXcgRGF0ZShuZXcgRGF0ZSh0KS50b1VUQ1N0cmluZygpKSA6IG5ldyBEYXRlKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBhcnNlRGF0ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gRGF0ZS5wYXJzZSh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGUpKSByZXR1cm4gdGhpcy5nZXRUaW1lU3RhbXAodCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBEYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLCAiLyIpLnJlcGxhY2UoL1thLXpdKy9naSwgIiAiKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPSB0aGlzLmdldFRpbWVTdGFtcChpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwYXJzZURhdGVXaXRoVGltZXpvbmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZywgIi8iKS5yZXBsYWNlKC9bYS16XSsvZ2ksICIgIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImZvcm1hdERhdGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudy5nbG9iYWxzLmxvY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gWyJcMCJdLmNvbmNhdCh1KGkubW9udGhzKSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbIlx4MDEiXS5jb25jYXQodShpLnNob3J0TW9udGhzKSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBbIlx4MDIiXS5jb25jYXQodShpLmRheXMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFsiXHgwMyJdLmNvbmNhdCh1KGkuc2hvcnREYXlzKSk7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwodCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gZSB8fCAyOyBpLmxlbmd0aCA8IGU7KSBpID0gIjAiICsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBhID8gdC5nZXRVVENGdWxsWWVhcigpIDogdC5nZXRGdWxsWWVhcigpOwogICAgICAgICAgICAgICAgICAgIGUgPSAoZSA9IChlID0gZS5yZXBsYWNlKC8oXnxbXlxcXSl5eXl5Ky9nLCAiJDEiICsgaCkpLnJlcGxhY2UoLyhefFteXFxdKXl5L2csICIkMSIgKyBoLnRvU3RyaW5nKCkuc3Vic3RyKDIsIDIpKSkucmVwbGFjZSgvKF58W15cXF0peS9nLCAiJDEiICsgaCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAoYSA/IHQuZ2V0VVRDTW9udGgoKSA6IHQuZ2V0TW9udGgoKSkgKyAxOwogICAgICAgICAgICAgICAgICAgIGUgPSAoZSA9IChlID0gKGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKU1NTU0rL2csICIkMSIgKyBzWzBdKSkucmVwbGFjZSgvKF58W15cXF0pTU1NL2csICIkMSIgKyByWzBdKSkucmVwbGFjZSgvKF58W15cXF0pTU0vZywgIiQxIiArIGwoYykpKS5yZXBsYWNlKC8oXnxbXlxcXSlNL2csICIkMSIgKyBjKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEgPyB0LmdldFVUQ0RhdGUoKSA6IHQuZ2V0RGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIGUgPSAoZSA9IChlID0gKGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKWRkZGQrL2csICIkMSIgKyBvWzBdKSkucmVwbGFjZSgvKF58W15cXF0pZGRkL2csICIkMSIgKyBuWzBdKSkucmVwbGFjZSgvKF58W15cXF0pZGQvZywgIiQxIiArIGwoZCkpKS5yZXBsYWNlKC8oXnxbXlxcXSlkL2csICIkMSIgKyBkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGEgPyB0LmdldFVUQ0hvdXJzKCkgOiB0LmdldEhvdXJzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBnID4gMTIgPyBnIC0gMTIgOiAwID09PSBnID8gMTIgOiBnOwogICAgICAgICAgICAgICAgICAgIGUgPSAoZSA9IChlID0gKGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKUhIKy9nLCAiJDEiICsgbChnKSkpLnJlcGxhY2UoLyhefFteXFxdKUgvZywgIiQxIiArIGcpKS5yZXBsYWNlKC8oXnxbXlxcXSloaCsvZywgIiQxIiArIGwoZikpKS5yZXBsYWNlKC8oXnxbXlxcXSloL2csICIkMSIgKyBmKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGEgPyB0LmdldFVUQ01pbnV0ZXMoKSA6IHQuZ2V0TWludXRlcygpOwogICAgICAgICAgICAgICAgICAgIGUgPSAoZSA9IGUucmVwbGFjZSgvKF58W15cXF0pbW0rL2csICIkMSIgKyBsKHApKSkucmVwbGFjZSgvKF58W15cXF0pbS9nLCAiJDEiICsgcCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBhID8gdC5nZXRVVENTZWNvbmRzKCkgOiB0LmdldFNlY29uZHMoKTsKICAgICAgICAgICAgICAgICAgICBlID0gKGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKXNzKy9nLCAiJDEiICsgbCh4KSkpLnJlcGxhY2UoLyhefFteXFxdKXMvZywgIiQxIiArIHgpOwogICAgICAgICAgICAgICAgICAgIHZhciBiID0gYSA/IHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgOiB0LmdldE1pbGxpc2Vjb25kcygpOwogICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKWZmZisvZywgIiQxIiArIGwoYiwgMykpLCBiID0gTWF0aC5yb3VuZChiIC8gMTApLCBlID0gZS5yZXBsYWNlKC8oXnxbXlxcXSlmZi9nLCAiJDEiICsgbChiKSksIGIgPSBNYXRoLnJvdW5kKGIgLyAxMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBnIDwgMTIgPyAiQU0iIDogIlBNIjsKICAgICAgICAgICAgICAgICAgICBlID0gKGUgPSAoZSA9IGUucmVwbGFjZSgvKF58W15cXF0pZi9nLCAiJDEiICsgYikpLnJlcGxhY2UoLyhefFteXFxdKVRUKy9nLCAiJDEiICsgdikpLnJlcGxhY2UoLyhefFteXFxdKVQvZywgIiQxIiArIHYuY2hhckF0KDApKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IHYudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICBlID0gKGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKXR0Ky9nLCAiJDEiICsgbSkpLnJlcGxhY2UoLyhefFteXFxdKXQvZywgIiQxIiArIG0uY2hhckF0KDApKTsKICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IC10LmdldFRpbWV6b25lT2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBhIHx8ICF5ID8gIloiIDogeSA+IDAgPyAiKyIgOiAiLSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gKHkgPSBNYXRoLmFicyh5KSkgJSA2MDsKICAgICAgICAgICAgICAgICAgICAgICAgdyArPSBsKE1hdGguZmxvb3IoeSAvIDYwKSkgKyAiOiIgKyBsKGspCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UoLyhefFteXFxdKUsvZywgIiQxIiArIHcpOwogICAgICAgICAgICAgICAgICAgIHZhciBBID0gKGEgPyB0LmdldFVUQ0RheSgpIDogdC5nZXREYXkoKSkgKyAxOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID0gKGUgPSAoZSA9IChlID0gKGUgPSBlLnJlcGxhY2UobmV3IFJlZ0V4cChvWzBdLCAiZyIpLCBvW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKG5bMF0sICJnIiksIG5bQV0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoc1swXSwgImciKSwgc1tjXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChyWzBdLCAiZyIpLCByW2NdKSkucmVwbGFjZSgvXFwoLikvZywgIiQxIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0VGltZVVuaXRzZnJvbVRpbWVzdGFtcCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gYS5jb25maWcueGF4aXMubWluICYmICh0ID0gYS5jb25maWcueGF4aXMubWluKSwgdm9pZCAwICE9PSBhLmNvbmZpZy54YXhpcy5tYXggJiYgKGUgPSBhLmNvbmZpZy54YXhpcy5tYXgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy5nZXREYXRlKHQpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5nZXREYXRlKGUpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5mb3JtYXREYXRlKHMsICJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZiIpLnNwbGl0KCIgIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmZvcm1hdERhdGUociwgInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmIikuc3BsaXQoIiAiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBtaW5NaWxsaXNlY29uZDogcGFyc2VJbnQob1s2XSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhNaWxsaXNlY29uZDogcGFyc2VJbnQobls2XSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5TZWNvbmQ6IHBhcnNlSW50KG9bNV0sIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2Vjb25kOiBwYXJzZUludChuWzVdLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1pbnV0ZTogcGFyc2VJbnQob1s0XSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhNaW51dGU6IHBhcnNlSW50KG5bNF0sIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWluSG91cjogcGFyc2VJbnQob1szXSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhIb3VyOiBwYXJzZUludChuWzNdLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IHBhcnNlSW50KG9bMl0sIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogcGFyc2VJbnQoblsyXSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5Nb250aDogcGFyc2VJbnQob1sxXSwgMTApIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4TW9udGg6IHBhcnNlSW50KG5bMV0sIDEwKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pblllYXI6IHBhcnNlSW50KG9bMF0sIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4WWVhcjogcGFyc2VJbnQoblswXSwgMTApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc0xlYXBZZWFyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJSA0ID09IDAgJiYgdCAlIDEwMCAhPSAwIHx8IHQgJSA0MDAgPT0gMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV0ZXJtaW5lRGF5c09mTW9udGhzKHQsIGUpIC0gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkZXRlcm1pbmVEYXlzT2ZZZWFyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAzNjU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNMZWFwWWVhcih0KSAmJiAoZSA9IDM2NiksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5kYXlzQ250T2ZZZWFyW2VdICsgaTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA+IDEgJiYgdGhpcy5pc0xlYXBZZWFyKCkgJiYgYSsrLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRldGVybWluZURheXNPZk1vbnRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gMzA7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0ID0geC5tb250aE1vZCh0KSwgITApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCkgPiAtMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgPT09IHQgJiYgKGkgPSB0aGlzLmlzTGVhcFllYXIoZSkgPyAyOSA6IDI4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMubW9udGhzMzEuaW5kZXhPZih0KSA+IC0xOgogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDMxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBIID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBuKHMsIHQpOwogICAgICAgICAgICB2YXIgaSA9IGQocyk7CgogICAgICAgICAgICBmdW5jdGlvbiBzKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcywgcyksIGkuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHMsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZUJhck9wdGlvbnMgPSB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLCB0aGlzLnNlcmllcyA9IHQsIHRoaXMuc2VyaWVzUmFuZ2VTdGFydCA9IGEuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LCB0aGlzLnNlcmllc1JhbmdlRW5kID0gYS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLCB0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvID0gMDsgbyA8IHQubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGwsIGgsIGMgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhLmdsb2JhbHMuY29tYm9DaGFydHMgPyBpW29dIDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBzLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtc2VyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOYW1lOiB4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbdV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogbyArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGYsIHUpLCB0W29dLmxlbmd0aCA+IDAgJiYgKHRoaXMudmlzaWJsZUkgPSB0aGlzLnZpc2libGVJICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnlSYXRpby5sZW5ndGggPiAxICYmICh0aGlzLnlheGlzSW5kZXggPSB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB0aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpOwogICAgICAgICAgICAgICAgICAgICAgICBkID0gdi55LCBoID0gdi56ZXJvVywgYyA9IHYueCwgYiA9IHYuYmFyV2lkdGgsIG4gPSB2LnhEaXZpc2lvbiwgbCA9IHYuemVyb0g7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSBzLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZGF0YWxhYmVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHcgPSBzLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2VycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICJwb2ludGVyLWV2ZW50czogbm9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBrID0gMDsgayA8IGEuZ2xvYmFscy5kYXRhUG9pbnRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBID0gdGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG8sIGssIHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSB0aGlzLnNlcmllc1JhbmdlU3RhcnRbb11ba10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHRoaXMuc2VyaWVzUmFuZ2VFbmRbb11ba10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID0gdi55RGl2aXNpb24sIHAgPSB2LmJhckhlaWdodCwgdGhpcy5pc0hvcml6b250YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gZCArIHAgKiB0aGlzLnZpc2libGVJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBUID0gdGhpcy5zZXJpZXNMZW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzICYmIChUID0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSAoZyAtIHAgKiBUKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYS5jb25maWcuc2VyaWVzW29dLmRhdGFba10pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmNvbmZpZy5zZXJpZXNbb10uZGF0YVtrXS54KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ID0gdGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnR5OiBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeURpdmlzaW9uOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFBvc2l0aW9uczogdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHouYmFySGVpZ2h0LCBQID0gei5iYXJZUG9zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChMID0gdGhpcy5kcmF3UmFuZ2VCYXJQYXRocyhlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9XOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5RGl2aXNpb246IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiBTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogQwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE0pKSkuYmFyV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwID0gKEwgPSB0aGlzLmRyYXdSYW5nZUNvbHVtblBhdGhzKGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvSDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4RGl2aXNpb246IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE0pKSkuYmFySGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFggPSB0aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJYUG9zaXRpb246IEwuYmFyWFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcllQb3NpdGlvbjogUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2FsWDogTC5nb2FsWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2FsWTogTC5nb2FsWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWCAmJiB3LmFkZChYKSwgZCA9IEwueSwgYyA9IEwueDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gdGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCwgbywgaywgdSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IGEuZ2xvYmFscy5zdHJva2UuY29sb3JzW3VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJTZXJpZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRmlsbDogRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lRmlsbDogWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiBTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tOiBMLnBhdGhGcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhUbzogTC5wYXRoVG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxTZXJpZXM6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhTGFiZWxzV3JhcDogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbEdvYWxzTWFya2VyczogdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlU2VyaWVzOiB0aGlzLnZpc2libGVJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJyYW5nZWJhciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgci5hZGQoZikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmJhcllQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuc3J0eSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmluaXRQb3NpdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLnJhbmdlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLngsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBsLmdsb2JhbHMubGFiZWxzLmluZGV4T2YoZCksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBsLmdsb2JhbHMuc2VyaWVzUmFuZ2VCYXJbZV0uZmluZEluZGV4KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC54ID09PSBkICYmIHQub3ZlcmxhcHMubGVuZ3RoID4gMAogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSBsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MgPyBzICsgbyAqIGcgOiBzICsgciAqIHRoaXMudmlzaWJsZUkgKyBvICogZywgdSA+IC0xICYmICFsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwICYmIChoID0gbC5nbG9iYWxzLnNlcmllc1JhbmdlQmFyW2VdW3VdLm92ZXJsYXBzKS5pbmRleE9mKGMpID4gLTEgJiYgKGEgPSAociA9IG4uYmFySGVpZ2h0IC8gaC5sZW5ndGgpICogdGhpcy52aXNpYmxlSSArIG8gKiAoMTAwIC0gcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhckhlaWdodCwgMTApKSAvIDEwMCAvIDIgKyByICogKHRoaXMudmlzaWJsZUkgKyBoLmluZGV4T2YoYykpICsgbyAqIGcpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhcllQb3NpdGlvbjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3UmFuZ2VDb2x1bW5QYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pbmRleGVzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54OwogICAgICAgICAgICAgICAgICAgIHQuc3Ryb2tlV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0LnhEaXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuYmFyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0Lnplcm9ILAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5pLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5qLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUucmVhbEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5nZXRSYW5nZVZhbHVlKGMsIGwpLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gTWF0aC5taW4oZC5zdGFydCwgZC5lbmQpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5tYXgoZC5zdGFydCwgZC5lbmQpOwogICAgICAgICAgICAgICAgICAgIG8uZ2xvYmFscy5pc1hOdW1lcmljICYmIChpID0gKG8uZ2xvYmFscy5zZXJpZXNYW25dW2xdIC0gby5nbG9iYWxzLm1pblgpIC8gdGhpcy54UmF0aW8gLSBzIC8gMik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBpICsgcyAqIHRoaXMudmlzaWJsZUk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0aGlzLnNlcmllc1tuXVtsXSB8fCBudWxsID09PSB0aGlzLnNlcmllc1tuXVtsXSA/IGcgPSByIDogKGcgPSByIC0gZyAvIGgsIHUgPSByIC0gdSAvIGgpOwogICAgICAgICAgICAgICAgICAgIHZhciBwID0gTWF0aC5hYnModSAtIGcpLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gdGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiB0aGlzLnN0cm9rZVdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllc1JhbmdlRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBlLnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5nbG9iYWxzLmlzWE51bWVyaWMgfHwgKGkgKz0gYSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiB4LnBhdGhUbywKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IHgucGF0aEZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgZ29hbFk6IHRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKCJ5IiwgbnVsbCwgciwgbiwgbCksCiAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogZgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1JhbmdlQmFyUGF0aHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaW5kZXhlcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC55RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmJhckhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuYmFyWVBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC56ZXJvVywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwgKyBhIC8gdGhpcy5pbnZlcnRlZFlSYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGwgKyBzIC8gdGhpcy5pbnZlcnRlZFlSYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IE1hdGguYWJzKGQgLSBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJZUG9zaXRpb246IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHRoaXMuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzUmFuZ2VFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBlLnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogZS5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBlLmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBoCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmdsb2JhbHMuaXNYTnVtZXJpYyB8fCAoaSArPSByKSwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IHUucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogdS5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGdvYWxYOiB0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcygieCIsIGwsIG51bGwsIGUucmVhbEluZGV4LCBlLmopLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRSYW5nZVZhbHVlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGkuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3RdW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0VG9vbHRpcFZhbHVlcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNlcmllc0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5kYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC53LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gby5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvLmdsb2JhbHMubGFiZWxzW2FdLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gby5jb25maWcuc2VyaWVzW2ldLm5hbWUgPyBvLmNvbmZpZy5zZXJpZXNbaV0ubmFtZSA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gby5jb25maWcudG9vbHRpcC55LmZvcm1hdHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG8uY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZyAmJiAoYyA9IGcoYywgdSkpLCBOdW1iZXIuaXNGaW5pdGUocykgJiYgTnVtYmVyLmlzRmluaXRlKHIpICYmIChuID0gcywgbCA9IHIsIG8uY29uZmlnLnNlcmllc1tpXS5kYXRhW2FdLnggJiYgKGggPSBvLmNvbmZpZy5zZXJpZXNbaV0uZGF0YVthXS54ICsgIjoiKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZCAmJiAoaCA9IGQoaCwgdSkpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBvLmdsb2JhbHMuY29sb3JzW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGF0ZXRpbWUiID09PSBvLmNvbmZpZy54YXhpcy50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG5ldyBSKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGIuZm9ybWF0RGF0ZShiLmdldERhdGUobiksIG8uY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpLCBwID0gYi5mb3JtYXREYXRlKGIuZ2V0RGF0ZShsKSwgby5jb25maWcudG9vbHRpcC54LmZvcm1hdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGYgPSBuLCBwID0gbDsKICAgICAgICAgICAgICAgICAgICBlbHNlIGYgPSBvLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKG4pLCBwID0gby5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihsKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydFZhbDogZiwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kVmFsOiBwLAogICAgICAgICAgICAgICAgICAgICAgICB5bGFiZWw6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB4LAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOYW1lOiBjCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJidWlsZEN1c3RvbVRvb2x0aXBIVE1MIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5zZXJpZXNOYW1lOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIj48ZGl2PiA8c3BhbiBjbGFzcz0ic2VyaWVzLW5hbWUiIHN0eWxlPSJjb2xvcjogJyArIGUgKyAnIj4nICsgKGkgfHwgIiIpICsgJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz0iY2F0ZWdvcnkiPicgKyB0LnlsYWJlbCArICcgPC9zcGFuPiA8c3BhbiBjbGFzcz0idmFsdWUgc3RhcnQtdmFsdWUiPicgKyB0LnN0YXJ0ICsgJzwvc3Bhbj4gPHNwYW4gY2xhc3M9InNlcGFyYXRvciI+LTwvc3Bhbj4gPHNwYW4gY2xhc3M9InZhbHVlIGVuZC12YWx1ZSI+JyArIHQuZW5kICsgIjwvc3Bhbj48L2Rpdj48L2Rpdj4iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgcwogICAgICAgIH0oRiksCiAgICAgICAgRCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMub3B0cyA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAibGluZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJzd2luZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnZlOiAic3RyYWlnaHQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVPZmZzZXQ6IDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzaGFpcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzcGFya2xpbmUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdHMueWF4aXNbMF0uc2hvdyA9ICExLCB0aGlzLm9wdHMueWF4aXNbMF0udGl0bGUudGV4dCA9ICIiLCB0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93ID0gITEsIHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdyA9ICExLCB0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmcgPSAhMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5leHRlbmQodCwgewogICAgICAgICAgICAgICAgICAgICAgICBncmlkOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlzQm9yZGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlzVGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJiYXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6ICJzd2luZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJjZW50ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVDYXA6ICJyb3VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogLjg1CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiAic3F1YXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0OiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja1BsYWNlbWVudDogImJldHdlZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NoYWlyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiYmFyV2lkdGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYmFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZ3JhZGllbnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wU2hhZG93OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNhbmRsZXN0aWNrIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjMzMzIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnNlcmllc0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5kYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUudzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLCBpLCBhLCBbIk9wZW4iLCAiSGlnaCIsICIiLCAiTG93IiwgIkNsb3NlIl0sICJjYW5kbGVzdGljayIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzaGFpcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJib3hQbG90IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljQW5pbWF0aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbIiMyNDI5MmUiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnNlcmllc0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5kYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUudzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLCBpLCBhLCBbIk1pbmltdW0iLCAiUTEiLCAiTWVkaWFuIiwgIlEzIiwgIk1heGltdW0iXSwgImJveFBsb3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcnM6ICIjMTExIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NoYWlyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJhbmdlQmFyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNhcDogInNxdWFyZSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiY2VudGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN0eDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuc2VyaWVzSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmRhdGFQb2ludEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS53LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gcy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVthXSAtIHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd0N1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b206IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC53LmNvbmZpZy5wbG90T3B0aW9ucyAmJiB0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhciAmJiB0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsID8gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBIKHQuY3R4LCBudWxsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmdldFRvb2x0aXBWYWx1ZXModCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLnNlcmllc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaS55bGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5zdGFydFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBpLmVuZFZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYnVpbGRDdXN0b21Ub29sdGlwSFRNTCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc05hbWU6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bGFiZWw6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCkgOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IEgodC5jdHgsIG51bGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2V0VG9vbHRpcFZhbHVlcyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuc2VyaWVzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLnlsYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkuZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5idWlsZEN1c3RvbVRvb2x0aXBIVE1MKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlsYWJlbDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja1BsYWNlbWVudDogImJldHdlZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3NoYWlyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYXJlYSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic29saWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVyc2VDb2xvcnM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZTogImxpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInZlcnRpY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eUZyb206IC42NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVRvOiAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCAxMDAsIDEwMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJncmFkaWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVyc2VDb2xvcnM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlOiAibGlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJ2ZXJ0aWNhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eUZyb206IC42NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5VG86IC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BzOiBbMCwgMTAwLCAxMDBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVPZmZzZXQ6IDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93Q3Vyc29yOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJicnVzaCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmV4dGVuZCh0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NlbGVjdGVkOiAic2VsZWN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInN0YWNrZWQxMDAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LmRhdGFMYWJlbHMgPSB0LmRhdGFMYWJlbHMgfHwge30sIHQuZGF0YUxhYmVscy5mb3JtYXR0ZXIgPSB0LmRhdGFMYWJlbHMuZm9ybWF0dGVyIHx8IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnlheGlzW2ldLm1pbiA9IDAsIHQueWF4aXNbaV0ubWF4ID0gMTAwCiAgICAgICAgICAgICAgICAgICAgfSkpLCAiYmFyIiA9PT0gdC5jaGFydC50eXBlICYmICh0LmRhdGFMYWJlbHMuZm9ybWF0dGVyID0gZSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgdCAmJiB0ID8gdC50b0ZpeGVkKDApICsgIiUiIDogdAogICAgICAgICAgICAgICAgICAgIH0pLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNvbnZlcnRDYXRUb051bWVyaWMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgPSAhMCwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB0LnhheGlzLnR5cGUgPSAibnVtZXJpYyIsIHQueGF4aXMubGFiZWxzID0gdC54YXhpcy5sYWJlbHMgfHwge30sIHQueGF4aXMubGFiZWxzLmZvcm1hdHRlciA9IHQueGF4aXMubGFiZWxzLmZvcm1hdHRlciB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmlzTnVtYmVyKHQpID8gTWF0aC5mbG9vcih0KSA6IHQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54YXhpcy5jYXRlZ29yaWVzICYmIHQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGggPyB0LnhheGlzLmNhdGVnb3JpZXMgOiB0LmxhYmVsczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiBpLmxlbmd0aCAmJiAocyA9IGkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHQpID8gdCA6IFN0cmluZyh0KQogICAgICAgICAgICAgICAgICAgIH0pKSksIHMgJiYgcy5sZW5ndGggJiYgKHQueGF4aXMubGFiZWxzLmZvcm1hdHRlciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguaXNOdW1iZXIodCkgPyBhKHNbTWF0aC5mbG9vcih0KSAtIDFdKSA6IGEodCkKICAgICAgICAgICAgICAgICAgICB9KSwgdC54YXhpcy5jYXRlZ29yaWVzID0gW10sIHQubGFiZWxzID0gW10sIHQueGF4aXMudGlja0Ftb3VudCA9IHQueGF4aXMudGlja0Ftb3VudCB8fCAiZGF0YVBvaW50cyIsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYnViYmxlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdDogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzaGFpcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic29saWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZTogImxpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZUludGVuc2l0eTogLjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlGcm9tOiAuNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5VG86IC44CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNjYXR0ZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZU9mZnNldDogMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoZWF0bWFwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IFsiI2ZmZiJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd0N1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZTogInNxdWFyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBncmlkOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInRyZWVtYXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbIiNmZmYiXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCAxMDBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd0N1cnNvcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzaGFpcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwaWUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnV0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudG9GaXhlZCgxKSArICIlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbIiNmZmYiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGU6ICJsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHM6IFswLCAxMDBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiAiZGFyayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU2VyaWVzQ29sb3I6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZG9udXQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudG9GaXhlZCgxKSArICIlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbIiNmZmYiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BTaGFkb3c6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogWyIjZmZmIl0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGU6ICJsaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVJbnRlbnNpdHk6IC4zNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wczogWzgwLCAxMDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlGcm9tOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlUbzogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogImRhcmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFNlcmllc0NvbG9yOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBvbGFyQXJlYSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50ID0gdGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQgPyB0aGlzLm9wdHMueWF4aXNbMF0udGlja0Ftb3VudCA6IDYsIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50b0ZpeGVkKDEpICsgIiUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC43CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiAiZGFyayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU2VyaWVzQ29sb3I6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmFkYXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFkgPSB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFkgPyB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFkgOiA2LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjExcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogMQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuMgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0OiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd0N1cnNvcjogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbIiNhOGE4YTgiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMXB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zc2hhaXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmFkaWFsQmFyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNBbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiA4MDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGU6ICJkYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZUludGVuc2l0eTogLjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJzZUNvbG9yczogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImRpYWdvbmFsMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eUZyb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVRvOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BzOiBbNzAsIDk4LCAxMDBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTZXJpZXNDb2xvcjogITAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2dldEJveFRvb2x0aXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEsIHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2ldLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1baV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2ldLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1baV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY29uZmlnLnNlcmllc1tlXS50eXBlICYmIHQuY29uZmlnLnNlcmllc1tlXS50eXBlICE9PSBzID8gJzxkaXYgY2xhc3M9ImFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXAiPlxuICAgICAgICAgICcuY29uY2F0KHQuY29uZmlnLnNlcmllc1tlXS5uYW1lID8gdC5jb25maWcuc2VyaWVzW2VdLm5hbWUgOiAic2VyaWVzLSIgKyAoZSArIDEpLCAiOiA8c3Ryb25nPiIpLmNvbmNhdCh0Lmdsb2JhbHMuc2VyaWVzW2VdW2ldLCAiPC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PiIpIDogJzxkaXYgY2xhc3M9ImFwZXhjaGFydHMtdG9vbHRpcC1ib3ggYXBleGNoYXJ0cy10b29sdGlwLScuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsICciPicpICsgIjxkaXY+Ii5jb25jYXQoYVswXSwgJzogPHNwYW4gY2xhc3M9InZhbHVlIj4nKSArIHIgKyAiPC9zcGFuPjwvZGl2PiIgKyAiPGRpdj4iLmNvbmNhdChhWzFdLCAnOiA8c3BhbiBjbGFzcz0idmFsdWUiPicpICsgbyArICI8L3NwYW4+PC9kaXY+IiArIChuID8gIjxkaXY+Ii5jb25jYXQoYVsyXSwgJzogPHNwYW4gY2xhc3M9InZhbHVlIj4nKSArIG4gKyAiPC9zcGFuPjwvZGl2PiIgOiAiIikgKyAiPGRpdj4iLmNvbmNhdChhWzNdLCAnOiA8c3BhbiBjbGFzcz0idmFsdWUiPicpICsgbCArICI8L3NwYW4+PC9kaXY+IiArICI8ZGl2PiIuY29uY2F0KGFbNF0sICc6IDxzcGFuIGNsYXNzPSJ2YWx1ZSI+JykgKyBoICsgIjwvc3Bhbj48L2Rpdj48L2Rpdj4iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBOID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5vcHRzID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnJlc3BvbnNpdmVPdmVycmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMub3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBMLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IEQoYSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydFR5cGUgPSBhLmNoYXJ0LnR5cGUsICJoaXN0b2dyYW0iID09PSB0aGlzLmNoYXJ0VHlwZSAmJiAoYS5jaGFydC50eXBlID0gImJhciIsIGEgPSB4LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogIjk5Ljk5JSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIGEpKSwgYSA9IHRoaXMuZXh0ZW5kWUF4aXMoYSksIGEgPSB0aGlzLmV4dGVuZEFubm90YXRpb25zKGEpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gcy5pbml0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSAmJiAib2JqZWN0IiA9PT0gaShhKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBsID0gLTEgIT09IFsibGluZSIsICJhcmVhIiwgImJhciIsICJjYW5kbGVzdGljayIsICJib3hQbG90IiwgInJhbmdlQmFyIiwgImhpc3RvZ3JhbSIsICJidWJibGUiLCAic2NhdHRlciIsICJoZWF0bWFwIiwgInRyZWVtYXAiLCAicGllIiwgInBvbGFyQXJlYSIsICJkb251dCIsICJyYWRhciIsICJyYWRpYWxCYXIiXS5pbmRleE9mKGEuY2hhcnQudHlwZSkgPyByW2EuY2hhcnQudHlwZV0oKSA6IHIubGluZSgpLCBhLmNoYXJ0LmJydXNoICYmIGEuY2hhcnQuYnJ1c2guZW5hYmxlZCAmJiAobCA9IHIuYnJ1c2gobCkpLCBhLmNoYXJ0LnN0YWNrZWQgJiYgIjEwMCUiID09PSBhLmNoYXJ0LnN0YWNrVHlwZSAmJiAoYSA9IHIuc3RhY2tlZDEwMChhKSksIHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUod2luZG93LkFwZXgpLCB0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGEpLCBhLnhheGlzID0gYS54YXhpcyB8fCB3aW5kb3cuQXBleC54YXhpcyB8fCB7fSwgZSB8fCAoYS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgPSAhMSksICgoYSA9IHRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSwgbCwgYSkpLmNoYXJ0LnNwYXJrbGluZSAmJiBhLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkIHx8IHdpbmRvdy5BcGV4LmNoYXJ0ICYmIHdpbmRvdy5BcGV4LmNoYXJ0LnNwYXJrbGluZSAmJiB3aW5kb3cuQXBleC5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCkgJiYgKGwgPSByLnNwYXJrbGluZShsKSksIG4gPSB4LmV4dGVuZChvLCBsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHguZXh0ZW5kKG4sIHdpbmRvdy5BcGV4KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9IHguZXh0ZW5kKGgsIGEpLCBvID0gdGhpcy5oYW5kbGVVc2VySW5wdXRFcnJvcnMobykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gbmV3IEQoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAoImJhciIgPT09IHQgfHwgImJveFBsb3QiID09PSB0KSAmJiBpLnBsb3RPcHRpb25zICYmIGkucGxvdE9wdGlvbnMuYmFyICYmIGkucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAicGllIiA9PT0gdCB8fCAicG9sYXJBcmVhIiA9PT0gdCB8fCAiZG9udXQiID09PSB0IHx8ICJyYWRhciIgPT09IHQgfHwgInJhZGlhbEJhciIgPT09IHQgfHwgImhlYXRtYXAiID09PSB0LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gImRhdGV0aW1lIiAhPT0gaS54YXhpcy50eXBlICYmICJudW1lcmljIiAhPT0gaS54YXhpcy50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS54YXhpcy50aWNrUGxhY2VtZW50ID8gaS54YXhpcy50aWNrUGxhY2VtZW50IDogZS54YXhpcyAmJiBlLnhheGlzLnRpY2tQbGFjZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgfHwgciB8fCAhbyB8fCAiYmV0d2VlbiIgPT09IG4gfHwgKGkgPSBhLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4dGVuZFlBeGlzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuZXcgTDsKICAgICAgICAgICAgICAgICAgICAodm9pZCAwID09PSB0LnlheGlzIHx8ICF0LnlheGlzIHx8IEFycmF5LmlzQXJyYXkodC55YXhpcykgJiYgMCA9PT0gdC55YXhpcy5sZW5ndGgpICYmICh0LnlheGlzID0ge30pLCB0LnlheGlzLmNvbnN0cnVjdG9yICE9PSBBcnJheSAmJiB3aW5kb3cuQXBleC55YXhpcyAmJiB3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkgJiYgKHQueWF4aXMgPSB4LmV4dGVuZCh0LnlheGlzLCB3aW5kb3cuQXBleC55YXhpcykpLCB0LnlheGlzLmNvbnN0cnVjdG9yICE9PSBBcnJheSA/IHQueWF4aXMgPSBbeC5leHRlbmQoaS55QXhpcywgdC55YXhpcyldIDogdC55YXhpcyA9IHguZXh0ZW5kQXJyYXkodC55YXhpcywgaS55QXhpcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAhMTsKICAgICAgICAgICAgICAgICAgICB0LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5sb2dhcml0aG1pYyAmJiAoYSA9ICEwKQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHQuc2VyaWVzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICFzICYmIChzID0gZS5jb25maWcuc2VyaWVzKSwgYSAmJiBzLmxlbmd0aCAhPT0gdC55YXhpcy5sZW5ndGggJiYgcy5sZW5ndGggJiYgKHQueWF4aXMgPSBzLm1hcCgoZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5uYW1lIHx8IChzW2FdLm5hbWUgPSAic2VyaWVzLSIuY29uY2F0KGEgKyAxKSksIHQueWF4aXNbYV0pIHJldHVybiB0LnlheGlzW2FdLnNlcmllc05hbWUgPSBzW2FdLm5hbWUsIHQueWF4aXNbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0geC5leHRlbmQoaS55QXhpcywgdC55YXhpc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLnNob3cgPSAhMSwgcgogICAgICAgICAgICAgICAgICAgIH0pKSksIGEgJiYgcy5sZW5ndGggPiAxICYmIHMubGVuZ3RoICE9PSB0LnlheGlzLmxlbmd0aCAmJiBjb25zb2xlLndhcm4oIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlcy4gUGxlYXNlIG1ha2Ugc3VyZSB0byBlcXVhbGl6ZSBib3RoLiIpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4dGVuZEFubm90YXRpb25zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdC5hbm5vdGF0aW9ucyAmJiAodC5hbm5vdGF0aW9ucyA9IHt9LCB0LmFubm90YXRpb25zLnlheGlzID0gW10sIHQuYW5ub3RhdGlvbnMueGF4aXMgPSBbXSwgdC5hbm5vdGF0aW9ucy5wb2ludHMgPSBbXSksIHQgPSB0aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCksIHQgPSB0aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnModCksIHQgPSB0aGlzLmV4dGVuZFBvaW50QW5ub3RhdGlvbnModCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IEw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXMgPSB4LmV4dGVuZEFycmF5KHZvaWQgMCAhPT0gdC5hbm5vdGF0aW9ucy55YXhpcyA/IHQuYW5ub3RhdGlvbnMueWF4aXMgOiBbXSwgZS55QXhpc0Fubm90YXRpb24pLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4dGVuZFhBeGlzQW5ub3RhdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBMOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFubm90YXRpb25zLnhheGlzID0geC5leHRlbmRBcnJheSh2b2lkIDAgIT09IHQuYW5ub3RhdGlvbnMueGF4aXMgPyB0LmFubm90YXRpb25zLnhheGlzIDogW10sIGUueEF4aXNBbm5vdGF0aW9uKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJleHRlbmRQb2ludEFubm90YXRpb25zIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgTDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5hbm5vdGF0aW9ucy5wb2ludHMgPSB4LmV4dGVuZEFycmF5KHZvaWQgMCAhPT0gdC5hbm5vdGF0aW9ucy5wb2ludHMgPyB0LmFubm90YXRpb25zLnBvaW50cyA6IFtdLCBlLnBvaW50QW5ub3RhdGlvbiksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2hlY2tGb3JEYXJrVGhlbWUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnRoZW1lICYmICJkYXJrIiA9PT0gdC50aGVtZS5tb2RlICYmICh0LnRvb2x0aXAgfHwgKHQudG9vbHRpcCA9IHt9KSwgImxpZ2h0IiAhPT0gdC50b29sdGlwLnRoZW1lICYmICh0LnRvb2x0aXAudGhlbWUgPSAiZGFyayIpLCB0LmNoYXJ0LmZvcmVDb2xvciB8fCAodC5jaGFydC5mb3JlQ29sb3IgPSAiI2Y2ZjdmOCIpLCB0LmNoYXJ0LmJhY2tncm91bmQgfHwgKHQuY2hhcnQuYmFja2dyb3VuZCA9ICIjNDI0MjQyIiksIHQudGhlbWUucGFsZXR0ZSB8fCAodC50aGVtZS5wYWxldHRlID0gInBhbGV0dGU0IikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVVzZXJJbnB1dEVycm9ycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdDsKICAgICAgICAgICAgICAgICAgICBpZiAoZS50b29sdGlwLnNoYXJlZCAmJiBlLnRvb2x0aXAuaW50ZXJzZWN0KSB0aHJvdyBuZXcgRXJyb3IoInRvb2x0aXAuc2hhcmVkIGNhbm5vdCBiZSBlbmFibGVkIHdoZW4gdG9vbHRpcC5pbnRlcnNlY3QgaXMgdHJ1ZS4gVHVybiBvZmYgYW55IG90aGVyIG9wdGlvbiBieSBzZXR0aW5nIGl0IHRvIGZhbHNlLiIpOwogICAgICAgICAgICAgICAgICAgIGlmICgiYmFyIiA9PT0gZS5jaGFydC50eXBlICYmIGUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUueWF4aXMubGVuZ3RoID4gMSkgdGhyb3cgbmV3IEVycm9yKCJNdWx0aXBsZSBZIEF4aXMgZm9yIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIFN3aXRjaCB0byBjb2x1bW4gY2hhcnQgYnkgc2V0dGluZyBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD1mYWxzZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnlheGlzWzBdLnJldmVyc2VkICYmIChlLnlheGlzWzBdLm9wcG9zaXRlID0gITApLCBlLnhheGlzLnRvb2x0aXAuZW5hYmxlZCA9ICExLCBlLnlheGlzWzBdLnRvb2x0aXAuZW5hYmxlZCA9ICExLCBlLmNoYXJ0Lnpvb20uZW5hYmxlZCA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiYmFyIiAhPT0gZS5jaGFydC50eXBlICYmICJyYW5nZUJhciIgIT09IGUuY2hhcnQudHlwZSB8fCBlLnRvb2x0aXAuc2hhcmVkICYmICJiYXJXaWR0aCIgPT09IGUueGF4aXMuY3Jvc3NoYWlycy53aWR0aCAmJiBlLnNlcmllcy5sZW5ndGggPiAxICYmIChlLnhheGlzLmNyb3NzaGFpcnMud2lkdGggPSAidGlja1dpZHRoIiksICJjYW5kbGVzdGljayIgIT09IGUuY2hhcnQudHlwZSAmJiAiYm94UGxvdCIgIT09IGUuY2hhcnQudHlwZSB8fCBlLnlheGlzWzBdLnJldmVyc2VkICYmIChjb25zb2xlLndhcm4oIlJldmVyc2VkIHktYXhpcyBpbiAiLmNvbmNhdChlLmNoYXJ0LnR5cGUsICIgY2hhcnQgaXMgbm90IHN1cHBvcnRlZC4iKSksIGUueWF4aXNbMF0ucmV2ZXJzZWQgPSAhMSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIE8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaW5pdEdsb2JhbFZhcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LnNlcmllcyA9IFtdLCB0LnNlcmllc0NhbmRsZU8gPSBbXSwgdC5zZXJpZXNDYW5kbGVIID0gW10sIHQuc2VyaWVzQ2FuZGxlTSA9IFtdLCB0LnNlcmllc0NhbmRsZUwgPSBbXSwgdC5zZXJpZXNDYW5kbGVDID0gW10sIHQuc2VyaWVzUmFuZ2VTdGFydCA9IFtdLCB0LnNlcmllc1JhbmdlRW5kID0gW10sIHQuc2VyaWVzUmFuZ2VCYXIgPSBbXSwgdC5zZXJpZXNQZXJjZW50ID0gW10sIHQuc2VyaWVzR29hbHMgPSBbXSwgdC5zZXJpZXNYID0gW10sIHQuc2VyaWVzWiA9IFtdLCB0LnNlcmllc05hbWVzID0gW10sIHQuc2VyaWVzVG90YWxzID0gW10sIHQuc2VyaWVzTG9nID0gW10sIHQuc2VyaWVzQ29sb3JzID0gW10sIHQuc3RhY2tlZFNlcmllc1RvdGFscyA9IFtdLCB0LnNlcmllc1h2YWx1ZXMgPSBbXSwgdC5zZXJpZXNZdmFsdWVzID0gW10sIHQubGFiZWxzID0gW10sIHQuaGFzR3JvdXBzID0gITEsIHQuZ3JvdXBzID0gW10sIHQuY2F0ZWdvcnlMYWJlbHMgPSBbXSwgdC50aW1lc2NhbGVMYWJlbHMgPSBbXSwgdC5ub0xhYmVsc1Byb3ZpZGVkID0gITEsIHQucmVzaXplVGltZXIgPSBudWxsLCB0LnNlbGVjdGlvblJlc2l6ZVRpbWVyID0gbnVsbCwgdC5kZWxheWVkRWxlbWVudHMgPSBbXSwgdC5wb2ludHNBcnJheSA9IFtdLCB0LmRhdGFMYWJlbHNSZWN0cyA9IFtdLCB0LmlzWE51bWVyaWMgPSAhMSwgdC54YXhpc0xhYmVsc0NvdW50ID0gMCwgdC5za2lwTGFzdFRpbWVsaW5lbGFiZWwgPSAhMSwgdC5za2lwRmlyc3RUaW1lbGluZWxhYmVsID0gITEsIHQuaXNEYXRhWFlaID0gITEsIHQuaXNNdWx0aUxpbmVYID0gITEsIHQuaXNNdWx0aXBsZVlBeGlzID0gITEsIHQubWF4WSA9IC1OdW1iZXIuTUFYX1ZBTFVFLCB0Lm1pblkgPSBOdW1iZXIuTUlOX1ZBTFVFLCB0Lm1pbllBcnIgPSBbXSwgdC5tYXhZQXJyID0gW10sIHQubWF4WCA9IC1OdW1iZXIuTUFYX1ZBTFVFLCB0Lm1pblggPSBOdW1iZXIuTUFYX1ZBTFVFLCB0LmluaXRpYWxNYXhYID0gLU51bWJlci5NQVhfVkFMVUUsIHQuaW5pdGlhbE1pblggPSBOdW1iZXIuTUFYX1ZBTFVFLCB0Lm1heERhdGUgPSAwLCB0Lm1pbkRhdGUgPSBOdW1iZXIuTUFYX1ZBTFVFLCB0Lm1pblogPSBOdW1iZXIuTUFYX1ZBTFVFLCB0Lm1heFogPSAtTnVtYmVyLk1BWF9WQUxVRSwgdC5taW5YRGlmZiA9IE51bWJlci5NQVhfVkFMVUUsIHQueUF4aXNTY2FsZSA9IFtdLCB0LnhBeGlzU2NhbGUgPSBudWxsLCB0LnhBeGlzVGlja3NQb3NpdGlvbnMgPSBbXSwgdC55TGFiZWxzQ29vcmRzID0gW10sIHQueVRpdGxlQ29vcmRzID0gW10sIHQuYmFyUGFkRm9yTnVtZXJpY0F4aXMgPSAwLCB0LnBhZEhvcml6b250YWwgPSAwLCB0LnhSYW5nZSA9IDAsIHQueVJhbmdlID0gW10sIHQuelJhbmdlID0gMCwgdC5kYXRhUG9pbnRzID0gMCwgdC54VGlja0Ftb3VudCA9IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2xvYmFsVmFycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0SUQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGN1aWQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlTW91bnQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91bnRlZDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrZWQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludFNlbGVjdGlvbjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tZWQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZWQ6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFg6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFk6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yczogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICByYWRhclBvbHlnb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogdC5tYXJrZXJzLnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZXN0U2l6ZTogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25FbmRlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hEZXZpY2U6ICJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgaXNEaXJ0eTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXhlY0NhbGxlZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxDb25maWc6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTZXJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsYXN0WEF4aXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsYXN0WUF4aXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5TZXJpZXM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzY2FsZUxhYmVsczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG5vTGFiZWxzUHJvdmlkZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBhbGxTZXJpZXNDb2xsYXBzZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWRTZXJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWRTZXJpZXNJbmRpY2VzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHJpc2luZ1NlcmllczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtYXRYTnVtZXJpYzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkU2VyaWVzSW5kZXg6IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlZERhdGFQb2ludEluZGV4OiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhUG9pbnRzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZ29sZGVuUGFkZGluZzogMzUsCiAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRMb2dTY2FsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZVlBeGlzSW5kZXhlczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzU2FtZVNjYWxlSW5kaWNlczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHNJbkFycmF5SW5kZXg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlhbFNpemU6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICB6b29tRW5hYmxlZDogInpvb20iID09PSB0LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkICYmIHQuY2hhcnQudG9vbGJhci50b29scy56b29tICYmIHQuY2hhcnQuem9vbS5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICBwYW5FbmFibGVkOiAicGFuIiA9PT0gdC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCAmJiB0LmNoYXJ0LnRvb2xiYXIudG9vbHMucGFuLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmFibGVkOiAic2VsZWN0aW9uIiA9PT0gdC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCAmJiB0LmNoYXJ0LnRvb2xiYXIudG9vbHMuc2VsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICB5YXhpczogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbW91c2Vkb3duOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENsaWVudFBvc2l0aW9uOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVhSYW5nZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICB5VmFsdWVEZWNpbWFsOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTlM6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z1dpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzdmdIZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vRGF0YTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kc1RvRXhlYzogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQW5pbWF0ZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNraXBMYXN0VGltZWxpbmVsYWJlbDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNraXBGaXJzdFRpbWVsaW5lbGFiZWw6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxheWVkRWxlbWVudHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBheGlzQ2hhcnRzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgaXNEYXRhWFlaOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVRpbWVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBjb21ib0NoYXJ0czogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDaGFuZ2VkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNQYXRoczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFNlcmllc0hhc0VxdWFsWDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0FycmF5OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc1JlY3RzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBoYXNOdWxsVmFsdWVzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB6b29tZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBncmlkV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRIZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZVhMYWJlbHM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TGFiZWxzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgeExhYmVsRm9ybWF0dGVyOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHlMYWJlbEZvcm1hdHRlcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB4YXhpc1Rvb2x0aXBGb3JtYXR0ZXI6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHRLZXlGb3JtYXR0ZXI6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHRWYWw6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHRaRm9ybWF0dGVyOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIExJTkVfSEVJR0hUX1JBVElPOiAxLjYxOCwKICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXNMYWJlbHNIZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHhBeGlzTGFiZWxzV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzTGFiZWxzV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVZQXhpc1g6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB5QXhpc1dpZHRoczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVhBeGlzWTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlWEF4aXNYOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdsb2JhbFZhcnModCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnMoZSksIGUuaW5pdGlhbENvbmZpZyA9IHguZXh0ZW5kKHt9LCB0KSwgZS5pbml0aWFsU2VyaWVzID0geC5jbG9uZSh0LnNlcmllcyksIGUubGFzdFhBeGlzID0geC5jbG9uZShlLmluaXRpYWxDb25maWcueGF4aXMpLCBlLmxhc3RZQXhpcyA9IHguY2xvbmUoZS5pbml0aWFsQ29uZmlnLnlheGlzKSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgVyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMub3B0cyA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaW5pdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgTih0aGlzLm9wdHMpLmluaXQoewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaXZlT3ZlcnJpZGU6ICExCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzOiAobmV3IE8pLmluaXQodCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBCID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMudHdvRFNlcmllcyA9IFtdLCB0aGlzLnRocmVlRFNlcmllcyA9IFtdLCB0aGlzLnR3b0RTZXJpZXNYID0gW10sIHRoaXMuc2VyaWVzR29hbHMgPSBbXSwgdGhpcy5jb3JlVXRpbHMgPSBuZXcgeSh0aGlzLmN0eCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaXNNdWx0aUZvcm1hdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGb3JtYXRYWSgpIHx8IHRoaXMuaXNGb3JtYXQyREFycmF5KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNGb3JtYXRYWSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gbmV3IEUodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVNlcmllc0luZGV4ID0gZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLCB2b2lkIDAgIT09IHRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSAmJiB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoID4gMCAmJiBudWxsICE9PSB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0gJiYgdm9pZCAwICE9PSB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0ueCAmJiBudWxsICE9PSB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0pIHJldHVybiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc0Zvcm1hdDJEQXJyYXkiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG5ldyBFKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVTZXJpZXNJbmRleCA9IGUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSwgdm9pZCAwICE9PSB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEgJiYgdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSB0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0gJiYgbnVsbCAhPT0gdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdICYmIHRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHJldHVybiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVGb3JtYXQyREFycmF5IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMudy5jb25maWcsIGEgPSB0aGlzLncuZ2xvYmFscywgcyA9ICJib3hQbG90IiA9PT0gaS5jaGFydC50eXBlIHx8ICJib3hQbG90IiA9PT0gaS5zZXJpZXNbZV0udHlwZSwgciA9IDA7IHIgPCB0W2VdLmRhdGEubGVuZ3RoOyByKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRbZV0uZGF0YVtyXVsxXSAmJiAoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbcl1bMV0pICYmIDQgPT09IHRbZV0uZGF0YVtyXVsxXS5sZW5ndGggJiYgIXMgPyB0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXVszXSkpIDogdFtlXS5kYXRhW3JdLmxlbmd0aCA+PSA1ID8gdGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bNF0pKSA6IHRoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzFdKSksIGEuZGF0YUZvcm1hdFhOdW1lcmljID0gITApLCAiZGF0ZXRpbWUiID09PSBpLnhheGlzLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IERhdGUodFtlXS5kYXRhW3JdWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgRGF0ZShvKS5nZXRUaW1lKCksIHRoaXMudHdvRFNlcmllc1gucHVzaChvKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbZV0uZGF0YVtyXVswXSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0W2VdLmRhdGEubGVuZ3RoOyBuKyspIHZvaWQgMCAhPT0gdFtlXS5kYXRhW25dWzJdICYmICh0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtuXVsyXSksIGEuaXNEYXRhWFlaID0gITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUZvcm1hdFhZIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgUih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlOwogICAgICAgICAgICAgICAgICAgIGEuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpID4gLTEgJiYgKHIgPSB0aGlzLmFjdGl2ZVNlcmllc0luZGV4KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IHRbZV0uZGF0YS5sZW5ndGg7IG8rKykgdm9pZCAwICE9PSB0W2VdLmRhdGFbb10ueSAmJiAoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10ueSkgPyB0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55W3RbZV0uZGF0YVtvXS55Lmxlbmd0aCAtIDFdKSkgOiB0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55KSkpLCB2b2lkIDAgIT09IHRbZV0uZGF0YVtvXS5nb2FscyAmJiBBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtvXS5nb2FscykgPyAodm9pZCAwID09PSB0aGlzLnNlcmllc0dvYWxzW2VdICYmICh0aGlzLnNlcmllc0dvYWxzW2VdID0gW10pLCB0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2godFtlXS5kYXRhW29dLmdvYWxzKSkgOiAodm9pZCAwID09PSB0aGlzLnNlcmllc0dvYWxzW2VdICYmICh0aGlzLnNlcmllc0dvYWxzW2VdID0gW10pLCB0aGlzLnNlcmllc0dvYWxzW2VdLnB1c2gobnVsbCkpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdFtyXS5kYXRhLmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gInN0cmluZyIgPT0gdHlwZW9mIHRbcl0uZGF0YVtuXS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IEFycmF5LmlzQXJyYXkodFtyXS5kYXRhW25dLngpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICFoICYmICEhcy5pc1ZhbGlkRGF0ZSh0W3JdLmRhdGFbbl0ueC50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgfHwgYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIHx8IGkueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhLmlzQmFySG9yaXpvbnRhbCAmJiBhLmlzUmFuZ2VEYXRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRldGltZSIgIT09IGkueGF4aXMudHlwZSB8fCBkID8gKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5ID0gITAsIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpIDogdGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKHRbcl0uZGF0YVtuXS54KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAiZGF0ZXRpbWUiID09PSBpLnhheGlzLnR5cGUgPyB0aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSkpIDogKGEuZGF0YUZvcm1hdFhOdW1lcmljID0gITAsIGEuaXNYTnVtZXJpYyA9ICEwLCB0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdCh0W3JdLmRhdGFbbl0ueCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBoID8gKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5ID0gITAsIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpIDogKGEuaXNYTnVtZXJpYyA9ICEwLCBhLmRhdGFGb3JtYXRYTnVtZXJpYyA9ICEwLCB0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodFtlXS5kYXRhWzBdICYmIHZvaWQgMCAhPT0gdFtlXS5kYXRhWzBdLnopIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IDA7IGcgPCB0W2VdLmRhdGEubGVuZ3RoOyBnKyspIHRoaXMudGhyZWVEU2VyaWVzLnB1c2godFtlXS5kYXRhW2ddLnopOwogICAgICAgICAgICAgICAgICAgICAgICBhLmlzRGF0YVhZWiA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVSYW5nZURhdGEiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCkgPyBhID0gdGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoImFycmF5IiwgdCwgZSkgOiB0aGlzLmlzRm9ybWF0WFkoKSAmJiAoYSA9IHRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KCJ4eSIsIHQsIGUpKSwgaS5zZXJpZXNSYW5nZVN0YXJ0LnB1c2goYS5zdGFydCksIGkuc2VyaWVzUmFuZ2VFbmQucHVzaChhLmVuZCksIGkuc2VyaWVzUmFuZ2VCYXIucHVzaChhLnJhbmdlVW5pcXVlcyksIGkuc2VyaWVzUmFuZ2VCYXIuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0ICYmIHQuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC55LmZvckVhY2goKGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IHQueS5sZW5ndGg7IGErKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS55MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS55MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55W2FdLnkxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA8PSB0LnlbYV0ueTIgJiYgbyA8PSByICYmICh0Lm92ZXJsYXBzLmluZGV4T2YoZS5yYW5nZU5hbWUpIDwgMCAmJiB0Lm92ZXJsYXBzLnB1c2goZS5yYW5nZU5hbWUpLCB0Lm92ZXJsYXBzLmluZGV4T2YodC55W2FdLnJhbmdlTmFtZSkgPCAwICYmIHQub3ZlcmxhcHMucHVzaCh0LnlbYV0ucmFuZ2VOYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKSwgYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVDYW5kbGVTdGlja0JveERhdGEiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGb3JtYXQyREFycmF5KCkgPyBhID0gdGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoImFycmF5IiwgdCwgZSkgOiB0aGlzLmlzRm9ybWF0WFkoKSAmJiAoYSA9IHRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KCJ4eSIsIHQsIGUpKSwgaS5zZXJpZXNDYW5kbGVPW2VdID0gYS5vLCBpLnNlcmllc0NhbmRsZUhbZV0gPSBhLmgsIGkuc2VyaWVzQ2FuZGxlTVtlXSA9IGEubSwgaS5zZXJpZXNDYW5kbGVMW2VdID0gYS5sLCBpLnNlcmllc0NhbmRsZUNbZV0gPSBhLmMsIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlUmFuZ2VEYXRhRm9ybWF0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZVtpXS5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IGkuZmluZEluZGV4KChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUueCA9PT0gdC54CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLm1hcCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJQbGVhc2UgcHJvdmlkZSBbU3RhcnQsIEVuZF0gdmFsdWVzIGluIHZhbGlkIGZvcm1hdC4gUmVhZCBtb3JlIGh0dHBzOi8vYXBleGNoYXJ0cy5jb20vZG9jcy9zZXJpZXMvI3JhbmdlY2hhcnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyBFKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpOwogICAgICAgICAgICAgICAgICAgIGlmICgiYXJyYXkiID09PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgyICE9PSBlW25dLmRhdGFbMF1bMV0ubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3Iobyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgZVtpXS5kYXRhLmxlbmd0aDsgbCsrKSBhLnB1c2goZVtpXS5kYXRhW2xdWzFdWzBdKSwgcy5wdXNoKGVbaV0uZGF0YVtsXVsxXVsxXSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJ4eSIgPT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDIgIT09IGVbbl0uZGF0YVswXS55Lmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKG8pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBoID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0geC5yYW5kb21JZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZVtpXS5kYXRhW3RdLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MTogZVtpXS5kYXRhW3RdLnlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogZVtpXS5kYXRhW3RdLnlbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZU5hbWU6IG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2ldLmRhdGFbdF0ucmFuZ2VOYW1lID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHIuZmluZEluZGV4KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnggPT09IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcltoXS55LnB1c2gobCksIGEucHVzaChsLnkxKSwgcy5wdXNoKGwueTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjID0gMDsgYyA8IGVbaV0uZGF0YS5sZW5ndGg7IGMrKykgaChjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBzLAogICAgICAgICAgICAgICAgICAgICAgICByYW5nZVVuaXF1ZXM6IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gImJveFBsb3QiID09PSBhLmNvbmZpZy5jaGFydC50eXBlIHx8ICJib3hQbG90IiA9PT0gYS5jb25maWcuc2VyaWVzW2ldLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmICgiYXJyYXkiID09PSB0KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiA2ID09PSBlW2ldLmRhdGFbMF0ubGVuZ3RoIHx8ICFzICYmIDUgPT09IGVbaV0uZGF0YVswXS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGVbaV0uZGF0YS5sZW5ndGg7IGMrKykgci5wdXNoKGVbaV0uZGF0YVtjXVsxXSksIG8ucHVzaChlW2ldLmRhdGFbY11bMl0pLCBzID8gKG4ucHVzaChlW2ldLmRhdGFbY11bM10pLCBsLnB1c2goZVtpXS5kYXRhW2NdWzRdKSwgaC5wdXNoKGVbaV0uZGF0YVtjXVs1XSkpIDogKGwucHVzaChlW2ldLmRhdGFbY11bM10pLCBoLnB1c2goZVtpXS5kYXRhW2NdWzRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZVtpXS5kYXRhLmxlbmd0aDsgZCsrKSBBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtkXVsxXSkgJiYgKHIucHVzaChlW2ldLmRhdGFbZF1bMV1bMF0pLCBvLnB1c2goZVtpXS5kYXRhW2RdWzFdWzFdKSwgcyA/IChuLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSwgbC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSksIGgucHVzaChlW2ldLmRhdGFbZF1bMV1bNF0pKSA6IChsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSwgaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSkpKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgieHkiID09PSB0KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IGVbaV0uZGF0YS5sZW5ndGg7IGcrKykgQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZ10ueSkgJiYgKHIucHVzaChlW2ldLmRhdGFbZ10ueVswXSksIG8ucHVzaChlW2ldLmRhdGFbZ10ueVsxXSksIHMgPyAobi5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSwgbC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSwgaC5wdXNoKGVbaV0uZGF0YVtnXS55WzRdKSkgOiAobC5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSwgaC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG86IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIG06IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGw6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGM6IGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInBhcnNlRGF0YUF4aXNDaGFydHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHRoaXMuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IFIoaSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmxhYmVscy5sZW5ndGggPiAwID8gYS5sYWJlbHMuc2xpY2UoKSA6IGEueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIHMuaXNSYW5nZUJhciA9ICJyYW5nZUJhciIgPT09IGEuY2hhcnQudHlwZSAmJiBzLmlzQmFySG9yaXpvbnRhbCwgcy5oYXNHcm91cHMgPSAiY2F0ZWdvcnkiID09PSBhLnhheGlzLnR5cGUgJiYgYS54YXhpcy5ncm91cC5ncm91cHMubGVuZ3RoID4gMCwgcy5oYXNHcm91cHMgJiYgKHMuZ3JvdXBzID0gYS54YXhpcy5ncm91cC5ncm91cHMpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgby5sZW5ndGg7IHQrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIG9bdF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLmlzVmFsaWREYXRlKG9bdF0pKSB0aHJvdyBuZXcgRXJyb3IoIllvdSBoYXZlIHByb3ZpZGVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUudHdvRFNlcmllc1gucHVzaChyLnBhcnNlRGF0ZShvW3RdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZS50d29EU2VyaWVzWC5wdXNoKG9bdF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGwgPSAwOyBsIDwgdC5sZW5ndGg7IGwrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50d29EU2VyaWVzID0gW10sIHRoaXMudHdvRFNlcmllc1ggPSBbXSwgdGhpcy50aHJlZURTZXJpZXMgPSBbXSwgdm9pZCAwID09PSB0W2xdLmRhdGEpIHJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicmFuZ2VCYXIiICE9PSBhLmNoYXJ0LnR5cGUgJiYgInJhbmdlQXJlYSIgIT09IGEuY2hhcnQudHlwZSAmJiAicmFuZ2VCYXIiICE9PSB0W2xdLnR5cGUgJiYgInJhbmdlQXJlYSIgIT09IHRbbF0udHlwZSB8fCAocy5pc1JhbmdlRGF0YSA9ICEwLCB0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LCBsKSksIHRoaXMuaXNNdWx0aUZvcm1hdCgpKSB0aGlzLmlzRm9ybWF0MkRBcnJheSgpID8gdGhpcy5oYW5kbGVGb3JtYXQyREFycmF5KHQsIGwpIDogdGhpcy5pc0Zvcm1hdFhZKCkgJiYgdGhpcy5oYW5kbGVGb3JtYXRYWSh0LCBsKSwgImNhbmRsZXN0aWNrIiAhPT0gYS5jaGFydC50eXBlICYmICJjYW5kbGVzdGljayIgIT09IHRbbF0udHlwZSAmJiAiYm94UGxvdCIgIT09IGEuY2hhcnQudHlwZSAmJiAiYm94UGxvdCIgIT09IHRbbF0udHlwZSB8fCB0aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YSh0LCBsKSwgcy5zZXJpZXMucHVzaCh0aGlzLnR3b0RTZXJpZXMpLCBzLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpLCBzLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSwgcy5zZXJpZXNHb2FscyA9IHRoaXMuc2VyaWVzR29hbHMsIGwgIT09IHRoaXMuYWN0aXZlU2VyaWVzSW5kZXggfHwgdGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnkgfHwgKHMuaXNYTnVtZXJpYyA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0ZXRpbWUiID09PSBhLnhheGlzLnR5cGUgPyAocy5pc1hOdW1lcmljID0gITAsIG4oKSwgcy5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpIDogIm51bWVyaWMiID09PSBhLnhheGlzLnR5cGUgJiYgKHMuaXNYTnVtZXJpYyA9ICEwLCBvLmxlbmd0aCA+IDAgJiYgKHRoaXMudHdvRFNlcmllc1ggPSBvLCBzLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSkpLCBzLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0W2xdLmRhdGEubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgucGFyc2VOdW1iZXIodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VyaWVzLnB1c2goaCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksIHZvaWQgMCAhPT0gdFtsXS5uYW1lID8gcy5zZXJpZXNOYW1lcy5wdXNoKHRbbF0ubmFtZSkgOiBzLnNlcmllc05hbWVzLnB1c2goInNlcmllcy0iICsgcGFyc2VJbnQobCArIDEsIDEwKSksIHZvaWQgMCAhPT0gdFtsXS5jb2xvciA/IHMuc2VyaWVzQ29sb3JzLnB1c2godFtsXS5jb2xvcikgOiBzLnNlcmllc0NvbG9ycy5wdXNoKHZvaWQgMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwYXJzZURhdGFOb25BeGlzQ2hhcnRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudy5jb25maWc7CiAgICAgICAgICAgICAgICAgICAgZS5zZXJpZXMgPSB0LnNsaWNlKCksIGUuc2VyaWVzTmFtZXMgPSBpLmxhYmVscy5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgZS5zZXJpZXMubGVuZ3RoOyBhKyspIHZvaWQgMCA9PT0gZS5zZXJpZXNOYW1lc1thXSAmJiBlLnNlcmllc05hbWVzLnB1c2goInNlcmllcy0iICsgKGEgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVFeHRlcm5hbExhYmVsc0RhdGEiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudy5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLncuZ2xvYmFsczsKICAgICAgICAgICAgICAgICAgICBpZiAoZS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDApIGkubGFiZWxzID0gZS54YXhpcy5jYXRlZ29yaWVzOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUubGFiZWxzLmxlbmd0aCA+IDApIGkubGFiZWxzID0gZS5sYWJlbHMuc2xpY2UoKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5sYWJlbHMgPSBpLmxhYmVsc1swXSwgaS5zZXJpZXNSYW5nZUJhci5sZW5ndGggJiYgKGkuc2VyaWVzUmFuZ2VCYXIubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkubGFiZWxzLmluZGV4T2YodC54KSA8IDAgJiYgdC54ICYmIGkubGFiZWxzLnB1c2godC54KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLmxhYmVscyA9IGkubGFiZWxzLmZpbHRlcigoZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmluZGV4T2YodCkgPT09IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKSBuZXcgRChlKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoZSwgdGhpcy5jdHgsIGkuc2VyaWVzWFswXSksIHRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHModCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZ2VuZXJhdGVFeHRlcm5hbExhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLncuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuYXhpc0NoYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zZXJpZXMubGVuZ3RoID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRm9ybWF0WFkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gaS5zZXJpZXMubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS54ID09PSB0LngKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgPT09IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIgPSBzLnJlZHVjZSgoZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFbdF0ubGVuZ3RoID4gZS5sZW5ndGggPyB0IDogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCksIG8gPSAwOyBvIDwgc1tyXS5sZW5ndGg7IG8rKykgYS5wdXNoKG8gKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoOyBuKyspIGEucHVzaChuICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2VyaWVzWCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IHQubGVuZ3RoOyBsKyspIGUuc2VyaWVzWC5wdXNoKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmlzWE51bWVyaWMgPSAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gYS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuYXhpc0NoYXJ0cyA/IFtdIDogZS5zZXJpZXMubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBoID0gMDsgaCA8IHQubGVuZ3RoOyBoKyspIGUuc2VyaWVzWC5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUubGFiZWxzID0gYSwgaS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgJiYgKGUuY2F0ZWdvcnlMYWJlbHMgPSBhLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKHQpCiAgICAgICAgICAgICAgICAgICAgfSkpKSwgZS5ub0xhYmVsc1Byb3ZpZGVkID0gITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicGFyc2VEYXRhIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuZ2xvYmFsczsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLCB0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeSA9ICExLCB0aGlzLmN0eC5jb3JlLnJlc2V0R2xvYmFscygpLCB0aGlzLmN0eC5jb3JlLmlzTXVsdGlwbGVZKCksIGEuYXhpc0NoYXJ0cyA/IHRoaXMucGFyc2VEYXRhQXhpc0NoYXJ0cyh0KSA6IHRoaXMucGFyc2VEYXRhTm9uQXhpc0NoYXJ0cyh0KSwgdGhpcy5jb3JlVXRpbHMuZ2V0TGFyZ2VzdFNlcmllcygpLCAiYmFyIiA9PT0gaS5jaGFydC50eXBlICYmIGkuY2hhcnQuc3RhY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBFKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5zZXJpZXMgPSBzLnNldE51bGxTZXJpZXNUb1plcm9WYWx1ZXMoYS5zZXJpZXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFscygpLCBhLmF4aXNDaGFydHMgJiYgdGhpcy5jb3JlVXRpbHMuZ2V0U3RhY2tlZFNlcmllc1RvdGFscygpLCB0aGlzLmNvcmVVdGlscy5nZXRQZXJjZW50U2VyaWVzKCksIGEuZGF0YUZvcm1hdFhOdW1lcmljIHx8IGEuaXNYTnVtZXJpYyAmJiAoIm51bWVyaWMiICE9PSBpLnhheGlzLnR5cGUgfHwgMCAhPT0gaS5sYWJlbHMubGVuZ3RoIHx8IDAgIT09IGkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgpIHx8IHRoaXMuaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhKHQpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSB0aGlzLmNvcmVVdGlscy5nZXRDYXRlZ29yeUxhYmVscyhhLmxhYmVscyksIG8gPSAwOyBvIDwgci5sZW5ndGg7IG8rKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocltvXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuaXNNdWx0aUxpbmVYID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcyA9IGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubWFwKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMgJiYgIWUuY29uZmlnLmNoYXJ0LnN0YWNrZWQpIHJldHVybiBpLmluZGV4CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBWID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMudG9vbHRpcEtleUZvcm1hdCA9ICJkZCBNTU0iCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogInhMYWJlbEZvcm1hdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICgiZGF0ZXRpbWUiID09PSBzLmNvbmZpZy54YXhpcy50eXBlICYmIHZvaWQgMCA9PT0gcy5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciAmJiB2b2lkIDAgPT09IHMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgUih0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLmZvcm1hdERhdGUoci5nZXREYXRlKGUpLCBzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdChlLCBpLCBhKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkZWZhdWx0R2VuZXJhbEZvcm1hdHRlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9KSkgOiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRlZmF1bHRZRm9ybWF0dGVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguaXNOdW1iZXIodCkgJiYgKHQgPSAwICE9PSBhLmdsb2JhbHMueVZhbHVlRGVjaW1hbCA/IHQudG9GaXhlZCh2b2lkIDAgIT09IGUuZGVjaW1hbHNJbkZsb2F0ID8gZS5kZWNpbWFsc0luRmxvYXQgOiBhLmdsb2JhbHMueVZhbHVlRGVjaW1hbCkgOiBhLmdsb2JhbHMubWF4WUFycltpXSAtIGEuZ2xvYmFscy5taW5ZQXJyW2ldIDwgNSA/IHQudG9GaXhlZCgxKSA6IHQudG9GaXhlZCgwKSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0TGFiZWxGb3JtYXR0ZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKQogICAgICAgICAgICAgICAgICAgIH0sIGUuZ2xvYmFscy50dFpGb3JtYXR0ZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgfSwgZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSkKICAgICAgICAgICAgICAgICAgICB9LCB2b2lkIDAgIT09IGUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIgPyBlLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyID0gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciA6IGUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmlzTnVtYmVyKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAibnVtZXJpYyIgPT09IGUuY29uZmlnLnhheGlzLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5pc051bWJlcihlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpKSByZXR1cm4gdC50b0ZpeGVkKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmdsb2JhbHMubWF4WCAtIGUuZ2xvYmFscy5taW5YOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID4gMCAmJiBpIDwgMTAwID8gdC50b0ZpeGVkKDEpIDogdC50b0ZpeGVkKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLm1heFkgLSBlLmdsb2JhbHMubWluWUFyciA8IDQpIHJldHVybiB0LnRvRml4ZWQoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50b0ZpeGVkKDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9LCAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyID8gZS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyID0gZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlciA6IGUuZ2xvYmFscy50dEtleUZvcm1hdHRlciA9IGUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyICYmIChlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyID0gZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLCAoQXJyYXkuaXNBcnJheShlLmNvbmZpZy50b29sdGlwLnkpIHx8IHZvaWQgMCAhPT0gZS5jb25maWcudG9vbHRpcC55LmZvcm1hdHRlcikgJiYgKGUuZ2xvYmFscy50dFZhbCA9IGUuY29uZmlnLnRvb2x0aXAueSksIHZvaWQgMCAhPT0gZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciAmJiAoZS5nbG9iYWxzLnR0WkZvcm1hdHRlciA9IGUuY29uZmlnLnRvb2x0aXAuei5mb3JtYXR0ZXIpLCB2b2lkIDAgIT09IGUuY29uZmlnLmxlZ2VuZC5mb3JtYXR0ZXIgJiYgKGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIgPSBlLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyKSwgZS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGkubGFiZWxzLmZvcm1hdHRlciA/IGUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdID0gaS5sYWJlbHMuZm9ybWF0dGVyIDogZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV0gPSBmdW5jdGlvbihzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5nbG9iYWxzLnh5Q2hhcnRzID8gQXJyYXkuaXNBcnJheShzKSA/IHMubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZGVmYXVsdFlGb3JtYXR0ZXIoZSwgaSwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHQuZGVmYXVsdFlGb3JtYXR0ZXIocywgaSwgYSkgOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIGUuZ2xvYmFscwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoZWF0bWFwTGFiZWxGb3JtYXR0ZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAoImhlYXRtYXAiID09PSB0LmNvbmZpZy5jaGFydC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdCA9IHQuZ2xvYmFscy5zZXJpZXNOYW1lcy5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZ2xvYmFscy5zZXJpZXNOYW1lcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCA+IGUubGVuZ3RoID8gdCA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4ID0gZSwgdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbiA9IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBHID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZ2V0TGFiZWwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzRdID8gYXJndW1lbnRzWzRdIDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s1XSA/IGFyZ3VtZW50c1s1XSA6ICIxMnB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDYgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNl0pIHx8IGFyZ3VtZW50c1s2XSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHZvaWQgMCA9PT0gdFthXSA/ICIiIDogdFthXSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gbi5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbmV3IFYodGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gbDsKICAgICAgICAgICAgICAgICAgICBvICYmIChoID0gdS54TGFiZWxGb3JtYXQoYywgbCwgZiwgewogICAgICAgICAgICAgICAgICAgICAgICBpOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0dGVyOiBuZXcgUih0aGlzLmN0eCkuZm9ybWF0RGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogbgogICAgICAgICAgICAgICAgICAgIH0pLCB2b2lkIDAgIT09IGQgJiYgKGggPSBkKGwsIHRbYV0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgaTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdHRlcjogbmV3IFIodGhpcy5jdHgpLmZvcm1hdERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IG4KICAgICAgICAgICAgICAgICAgICB9KSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBwID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb250aCIgPT09IHQudW5pdCA/IGkgPSAieWVhciIgOiAiZGF5IiA9PT0gdC51bml0ID8gaSA9ICJtb250aCIgOiAiaG91ciIgPT09IHQudW5pdCA/IGkgPSAiZGF5IiA6ICJtaW51dGUiID09PSB0LnVuaXQgJiYgKGkgPSAiaG91ciIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaSA9PT0gdAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgZS5sZW5ndGggPiAwID8gKGcgPSBwKGVbYV0udW5pdCksIGkgPSBlW2FdLnBvc2l0aW9uLCBoID0gZVthXS52YWx1ZSkgOiAiZGF0ZXRpbWUiID09PSBuLmNvbmZpZy54YXhpcy50eXBlICYmIHZvaWQgMCA9PT0gZCAmJiAoaCA9ICIiKSwgdm9pZCAwID09PSBoICYmIChoID0gIiIpLCBoID0gQXJyYXkuaXNBcnJheShoKSA/IGggOiBoLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB7fTsKICAgICAgICAgICAgICAgICAgICBiID0gbi5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgJiYgbyA/IHguZ2V0VGV4dFJlY3RzKGgsIHBhcnNlSW50KHIsIDEwKSwgbnVsbCwgInJvdGF0ZSgiLmNvbmNhdChuLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLCAiIDAgMCkiKSwgITEpIDogeC5nZXRUZXh0UmVjdHMoaCwgcGFyc2VJbnQociwgMTApKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9ICFuLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMgJiYgdGhpcy5jdHgudGltZVNjYWxlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhQXJyYXkuaXNBcnJheShoKSAmJiAoMCA9PT0gaC5pbmRleE9mKCJOYU4iKSB8fCAwID09PSBoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiaW52YWxpZCIpIHx8IGgudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJpbmZpbml0eSIpID49IDAgfHwgcy5pbmRleE9mKGgpID49IDAgJiYgdikgJiYgKGggPSAiIiksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJlY3Q6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzQm9sZDogZwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2hlY2tMYWJlbEJhc2VkT25UaWNrYW1vdW50IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmNvbmZpZy54YXhpcy50aWNrQW1vdW50OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZGF0YVBvaW50cyIgPT09IHMgJiYgKHMgPSBNYXRoLnJvdW5kKGEuZ2xvYmFscy5ncmlkV2lkdGggLyAxMjApKSwgcyA+IGkgfHwgdCAlIE1hdGgucm91bmQoaSAvIChzICsgMSkpID09IDAgfHwgKGUudGV4dCA9ICIiKSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHQgJiYgci5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwgJiYgKGUudGV4dCA9ICIiKSwgdCA9PT0gaSAtIDEgJiYgci5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCAmJiAoZS50ZXh0ID0gIiIpLCByLmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzICYmIGEubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHNbcy5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgZS54IDwgby50ZXh0UmVjdC53aWR0aCAvIChyLmdsb2JhbHMucm90YXRlWExhYmVscyA/IE1hdGguYWJzKHIuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpIC8gMTIgOiAxLjAxKSArIG8ueCAmJiAoZS50ZXh0ID0gIiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNoZWNrRm9yUmV2ZXJzZWRMYWJlbHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5jb25maWcueWF4aXNbdF0gJiYgaS5jb25maWcueWF4aXNbdF0ucmV2ZXJzZWQgJiYgZS5yZXZlcnNlKCksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNZQXhpc0hpZGRlbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IHkodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhZS5jb25maWcueWF4aXNbdF0uc2hvdyB8fCAhZS5jb25maWcueWF4aXNbdF0uc2hvd0Zvck51bGxTZXJpZXMgJiYgaS5pc1Nlcmllc051bGwodCkgJiYgLTEgPT09IGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0WUF4aXNGb3JlQ29sb3IiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KSAmJiBpLmdsb2JhbHMueUF4aXNTY2FsZVtlXSAmJiB0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnModCwgaS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ucmVzdWx0Lmxlbmd0aCwgITEpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdZQXhpc1RpY2tzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuLmdsb2JhbHMudHJhbnNsYXRlWTsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5zaG93ICYmIGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICEwID09PSBuLmNvbmZpZy55YXhpc1tzXS5vcHBvc2l0ZSAmJiAodCArPSBhLndpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IGU7IGMgPj0gMDsgYy0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGggKyBlIC8gMTAgKyBuLmNvbmZpZy55YXhpc1tzXS5sYWJlbHMub2Zmc2V0WSAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIChkID0gciAqIGMpLCAiaGVhdG1hcCIgPT09IG4uY29uZmlnLmNoYXJ0LnR5cGUgJiYgKGQgKz0gciAvIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBsLmRyYXdMaW5lKHQgKyBpLm9mZnNldFggLSBhLndpZHRoICsgYS5vZmZzZXRYLCBkICsgYS5vZmZzZXRZLCB0ICsgaS5vZmZzZXRYICsgYS5vZmZzZXRYLCBkICsgYS5vZmZzZXRZLCBhLmNvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uYWRkKGcpLCBoICs9IHIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGogPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJzY2FsZVN2Z05vZGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLCAid2lkdGgiKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBwYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlTlMobnVsbCwgImhlaWdodCIpKTsKICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsICJ3aWR0aCIsIGkgKiBlKSwgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiaGVpZ2h0IiwgYSAqIGUpLCB0LnNldEF0dHJpYnV0ZU5TKG51bGwsICJ2aWV3Qm94IiwgIjAgMCAiICsgaSArICIgIiArIGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImZpeFN2Z1N0cmluZ0ZvckllMTEiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXguaXNJRTExKCkpIHJldHVybiB0LnJlcGxhY2UoLyZuYnNwOy9nLCAiJiMxNjA7Iik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5yZXBsYWNlKC94bWxucz0iaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnIi9nLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIgPT09ICsrZSA/ICd4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c3ZnanM9Imh0dHA6Ly9zdmdqcy5kZXYiJyA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID0gKGkgPSBpLnJlcGxhY2UoL3htbG5zOk5TXGQrPSIiL2csICIiKSkucmVwbGFjZSgvTlNcZCs6KFx3Kzpcdys9IikvZywgIiQxIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0U3ZnU3RyaW5nIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuc3ZnKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKDEgIT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZS5jbG9uZU5vZGUoITApOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjYWxlU3ZnTm9kZShpLCB0KSwgZSA9IChuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZml4U3ZnU3RyaW5nRm9ySWUxMShlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjbGVhbnVwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMteGNyb3NzaGFpcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFwZXhjaGFydHMteWNyb3NzaGFpcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXpvb20tcmVjdCwgLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QiKTsKICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIDApCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlICYmIGVbMF0gJiYgKGVbMF0uc2V0QXR0cmlidXRlKCJ4IiwgLTUwMCksIGVbMF0uc2V0QXR0cmlidXRlKCJ4MSIsIC01MDApLCBlWzBdLnNldEF0dHJpYnV0ZSgieDIiLCAtNTAwKSksIGkgJiYgaVswXSAmJiAoaVswXS5zZXRBdHRyaWJ1dGUoInkiLCAtMTAwKSwgaVswXS5zZXRBdHRyaWJ1dGUoInkxIiwgLTEwMCksIGlbMF0uc2V0QXR0cmlidXRlKCJ5MiIsIC0xMDApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzdmdVcmwiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYW51cCgpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXRTdmdTdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG5ldyBCbG9iKFt0XSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCIKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZGF0YVVSSSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlLncsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdCA/IHQuc2NhbGUgfHwgdC53aWR0aCAvIGEuZ2xvYmFscy5zdmdXaWR0aCA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xlYW51cCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICAgICAgICAgICAgICAgICAgICByLndpZHRoID0gYS5nbG9iYWxzLnN2Z1dpZHRoICogcywgci5oZWlnaHQgPSBwYXJzZUludChhLmdsb2JhbHMuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQsIDEwKSAqIHM7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gInRyYW5zcGFyZW50IiA9PT0gYS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCA/ICIjZmZmIiA6IGEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gci5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICAgICAgICAgICAgICBuLmZpbGxTdHlsZSA9IG8sIG4uZmlsbFJlY3QoMCwgMCwgci53aWR0aCAqIHMsIHIuaGVpZ2h0ICogcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gZS5nZXRTdmdTdHJpbmcocyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuY2FudmcgJiYgeC5pc0lFMTEoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB3aW5kb3cuY2FudmcuQ2FudmcuZnJvbVN0cmluZyhuLCBsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2xlYXI6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZURpbWVuc2lvbnM6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguc3RhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gci5tc1RvQmxvYigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5zdG9wKCksIGkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2I6IGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICJkYXRhOmltYWdlL3N2Zyt4bWwsIiArIGVuY29kZVVSSUNvbXBvbmVudChsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbmV3IEltYWdlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5jcm9zc09yaWdpbiA9ICJhbm9ueW1vdXMiLCBnLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmRyYXdJbWFnZShnLCAwLCAwKSwgci5tc1RvQmxvYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHIubXNUb0Jsb2IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSByLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nVVJJOiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZy5zcmMgPSBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZXhwb3J0VG9TVkciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckRvd25sb2FkKHRoaXMuc3ZnVXJsKCksIHRoaXMudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuc3ZnLmZpbGVuYW1lLCAiLnN2ZyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImV4cG9ydFRvUG5nIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhVVJJKCkudGhlbigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuaW1nVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuYmxvYjsKICAgICAgICAgICAgICAgICAgICAgICAgYSA/IG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGEsIHQudy5nbG9iYWxzLmNoYXJ0SUQgKyAiLnBuZyIpIDogdC50cmlnZ2VyRG93bmxvYWQoaSwgdC53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5wbmcuZmlsZW5hbWUsICIucG5nIikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZXhwb3J0VG9DU1YiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuY29sdW1uRGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5saW5lRGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdm9pZCAwID09PSBzID8gIlxuIiA6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgQih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuZXcgRyh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uZ2xvYmFscy5heGlzQ2hhcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjYXRlZ29yeSIgPT09IG8uY29uZmlnLnhheGlzLnR5cGUgfHwgby5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBvLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IEUoZS5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhvLmdsb2JhbHMubGFiZWxzW3RdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkgPSBkLmdldExhYmVsKG8uZ2xvYmFscy5sYWJlbHMsIG8uZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsIDAsIHQpLnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGV0aW1lIiA9PT0gby5jb25maWcueGF4aXMudHlwZSAmJiAoby5jb25maWcueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGggPyBpID0gby5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t0XSA6IG8uY29uZmlnLmxhYmVscy5sZW5ndGggJiYgKGkgPSBvLmNvbmZpZy5sYWJlbHNbdF0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkgPSBvLmNvbmZpZy5sYWJlbHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShpKSAmJiAoaSA9IGkuam9pbigiICIpKSwgeC5pc051bWJlcihpKSA/IGkgOiBpLnNwbGl0KGEpLmpvaW4oIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgbi5wdXNoKG8uY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJDYXRlZ29yeSksIGkubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5uYW1lID8gdC5uYW1lIDogInNlcmllcy0iLmNvbmNhdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5nbG9iYWxzLmF4aXNDaGFydHMgJiYgbi5wdXNoKGkuc3BsaXQoYSkuam9pbigiIikgPyBpLnNwbGl0KGEpLmpvaW4oIiIpIDogInNlcmllcy0iLmNvbmNhdChlKSkKICAgICAgICAgICAgICAgICAgICB9KSksIG8uZ2xvYmFscy5heGlzQ2hhcnRzIHx8IChuLnB1c2goby5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlclZhbHVlKSwgbC5wdXNoKG4uam9pbihhKSkpLCBpLm1hcCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBvLmdsb2JhbHMuYXhpc0NoYXJ0cyA/IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmxlbmd0aCAmJiAwID09PSBlICYmIGwucHVzaChuLmpvaW4oYSkpLCB0LmRhdGEgJiYgdC5kYXRhLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHQuZGF0YS5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZyhzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgfHwgKGMuaXNGb3JtYXRYWSgpID8gciA9IGlbZV0uZGF0YVtzXS54IDogYy5pc0Zvcm1hdDJEQXJyYXkoKSAmJiAociA9IGlbZV0uZGF0YVtzXSA/IGlbZV0uZGF0YVtzXVswXSA6ICIiKSksIDAgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucHVzaCgoZCA9IHIsICJkYXRldGltZSIgPT09IG8uY29uZmlnLnhheGlzLnR5cGUgJiYgU3RyaW5nKGQpLmxlbmd0aCA+PSAxMCA/IG8uY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKHIpIDogeC5pc051bWJlcihyKSA/IHIgOiByLnNwbGl0KGEpLmpvaW4oIiIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBoID0gMDsgaCA8IG8uZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyBoKyspIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzW2hdW3NdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCJjYW5kbGVzdGljayIgPT09IG8uY29uZmlnLmNoYXJ0LnR5cGUgfHwgdC50eXBlICYmICJjYW5kbGVzdGljayIgPT09IHQudHlwZSkgJiYgKG4ucG9wKCksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtzXSkpLCAoImJveFBsb3QiID09PSBvLmNvbmZpZy5jaGFydC50eXBlIHx8IHQudHlwZSAmJiAiYm94UGxvdCIgPT09IHQudHlwZSkgJiYgKG4ucG9wKCksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFtlXVtzXSksIG4ucHVzaChvLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtzXSkpLCAicmFuZ2VCYXIiID09PSBvLmNvbmZpZy5jaGFydC50eXBlICYmIChuLnBvcCgpLCBuLnB1c2goby5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbZV1bc10pLCBuLnB1c2goby5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW2VdW3NdKSksIG4ubGVuZ3RoICYmIGwucHVzaChuLmpvaW4oYSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBlKSA6ICgobiA9IFtdKS5wdXNoKG8uZ2xvYmFscy5sYWJlbHNbZV0uc3BsaXQoYSkuam9pbigiIikpLCBuLnB1c2goby5nbG9iYWxzLnNlcmllc1tlXSksIGwucHVzaChuLmpvaW4oYSkpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgaCArPSBsLmpvaW4ociksIHRoaXMudHJpZ2dlckRvd25sb2FkKCJkYXRhOnRleHQvY3N2OyBjaGFyc2V0PXV0Zi04LCIgKyBlbmNvZGVVUklDb21wb25lbnQoIlx1ZmVmZiIgKyBoKSwgby5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmZpbGVuYW1lLCAiLmNzdiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInRyaWdnZXJEb3dubG9hZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgICAgICAgICAgICAgIGEuaHJlZiA9IHQsIGEuZG93bmxvYWQgPSAoZSB8fCB0aGlzLncuZ2xvYmFscy5jaGFydElEKSArIGksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGEuY2xpY2soKSwgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgXyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53OwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICB0aGlzLmF4ZXNVdGlscyA9IG5ldyBHKGUpLCB0aGlzLnhheGlzTGFiZWxzID0gaS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLCBpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aCA+IDAgJiYgIWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgKHRoaXMueGF4aXNMYWJlbHMgPSBpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpLCBpLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzICYmICh0aGlzLnhheGlzTGFiZWxzID0gaS5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyksIHRoaXMuZHJhd25MYWJlbHMgPSBbXSwgdGhpcy5kcmF3bkxhYmVsc1JlY3RzID0gW10sICJ0b3AiID09PSBpLmNvbmZpZy54YXhpcy5wb3NpdGlvbiA/IHRoaXMub2ZmWSA9IDAgOiB0aGlzLm9mZlkgPSBpLmdsb2JhbHMuZ3JpZEhlaWdodCArIDEsIHRoaXMub2ZmWSA9IHRoaXMub2ZmWSArIGkuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WSwgdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCA9ICJiYXIiID09PSBpLmNvbmZpZy5jaGFydC50eXBlICYmIGkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLCB0aGlzLnhheGlzRm9udFNpemUgPSBpLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsIHRoaXMueGF4aXNGb250RmFtaWx5ID0gaS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksIHRoaXMueGF4aXNGb3JlQ29sb3JzID0gaS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycywgdGhpcy54YXhpc0JvcmRlcldpZHRoID0gaS5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCwgdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbCAmJiAodGhpcy54YXhpc0JvcmRlcldpZHRoID0gaS5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlci53aWR0aC50b1N0cmluZygpKSwgdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoIiUiKSA+IC0xID8gdGhpcy54YXhpc0JvcmRlcldpZHRoID0gaS5nbG9iYWxzLmdyaWRXaWR0aCAqIHBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwgMTApIC8gMTAwIDogdGhpcy54YXhpc0JvcmRlcldpZHRoID0gcGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLCAxMCksIHRoaXMueGF4aXNCb3JkZXJIZWlnaHQgPSBpLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLmhlaWdodCwgdGhpcy55YXhpcyA9IGkuY29uZmlnLnlheGlzWzBdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXdYYXhpcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy14YXhpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICJ0cmFuc2xhdGUoIi5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WCwgIiwgIikuY29uY2F0KHQuY29uZmlnLnhheGlzLm9mZnNldFksICIpIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgiLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLCAiLCAiKS5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSwgIikiKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpLmFkZChhKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gW10sIHIgPSAwOyByIDwgdGhpcy54YXhpc0xhYmVscy5sZW5ndGg7IHIrKykgcy5wdXNoKHRoaXMueGF4aXNMYWJlbHNbcl0pOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITAsIGUsIGEsIHMsIHQuZ2xvYmFscy5pc1hOdW1lcmljLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0Lmdsb2JhbHMuaGFzR3JvdXBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5nbG9iYWxzLmdyb3VwczsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG8ubGVuZ3RoOyBuKyspIHMucHVzaChvW25dLnRpdGxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUgJiYgKGwueGF4aXNGb250U2l6ZSA9IHQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLCBsLnhheGlzRm9udEZhbWlseSA9IHQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksIGwueGF4aXNGb3JlQ29sb3JzID0gdC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLCBsLmZvbnRXZWlnaHQgPSB0LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LCBsLmNzc0NsYXNzID0gdC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLCB0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITEsIGUsIGEsIHMsICExLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9bdF0uY29scyAqIGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBlLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMteGF4aXMtdGl0bGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0Lmdsb2JhbHMuZ3JpZFdpZHRoIC8gMiArIHQuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdGhpcy5vZmZZICsgcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpICsgdC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0ICsgdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiB0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiB0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCAiICsgdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBoLmFkZChjKSwgaS5hZGQoaCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHQuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlLmRyYXdMaW5lKHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsICsgdC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRYIC0gZCwgdGhpcy5vZmZZLCB0aGlzLnhheGlzQm9yZGVyV2lkdGggKyBkLCB0aGlzLm9mZlksIHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsIDAsIHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpLmFkZChnKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3WEF4aXNMYWJlbEFuZEdyb3VwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYXJndW1lbnRzLmxlbmd0aCA+IDYgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNl0gPyBhcmd1bWVudHNbNl0gOiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBsLnhheGlzRm9udFNpemUgfHwgdGhpcy54YXhpc0ZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC54YXhpc0ZvbnRGYW1pbHkgfHwgdGhpcy54YXhpc0ZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBsLnhheGlzRm9yZUNvbG9ycyB8fCB0aGlzLnhheGlzRm9yZUNvbG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGwuZm9udFdlaWdodCB8fCBkLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGwuY3NzQ2xhc3MgfHwgZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gZC5nbG9iYWxzLnBhZEhvcml6b250YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBhLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9ICJjYXRlZ29yeSIgPT09IGQuY29uZmlnLnhheGlzLnR5cGUgPyBkLmdsb2JhbHMuZGF0YVBvaW50cyA6IHY7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBtID4gMSA/IG0gLSAxIDogbTsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGQuZ2xvYmFscy5ncmlkV2lkdGggLyB5LCBiID0gYiArIHIoMCwgbykgLyAyICsgZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgbyA9IGQuZ2xvYmFscy5ncmlkV2lkdGggLyBtLCBiID0gYiArIHIoMCwgbykgKyBkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB3ID0gZnVuY3Rpb24ocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBiIC0gcihzLCBvKSAvIDIgKyBkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHMgJiYgMSA9PT0gdiAmJiBvIC8gMiA9PT0gYiAmJiAxID09PSBtICYmIChsID0gZC5nbG9iYWxzLmdyaWRXaWR0aCAvIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBuLmF4ZXNVdGlscy5nZXRMYWJlbChhLCBkLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLCBsLCBzLCBoLCBnLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdsb2JhbHMucm90YXRlWExhYmVscyAmJiB0ICYmICh3ID0gMjIpLCB0IHx8ICh3ID0gdyArIHBhcnNlRmxvYXQoZykgKyAoZC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0IC0gZC5nbG9iYWxzLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQpICsgKGQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzID8gMTAgOiAwKSksIHkgPSB2b2lkIDAgIT09IGQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQgJiYgImRhdGFQb2ludHMiICE9PSBkLmNvbmZpZy54YXhpcy50aWNrQW1vdW50ICYmICJkYXRldGltZSIgIT09IGQuY29uZmlnLnhheGlzLnR5cGUgPyBuLmF4ZXNVdGlscy5jaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnQocywgeSwgdikgOiBuLmF4ZXNVdGlscy5jaGVja0Zvck92ZXJmbG93aW5nTGFiZWxzKHMsIHksIHYsIGgsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgeS50ZXh0ICYmIGQuZ2xvYmFscy54YXhpc0xhYmVsc0NvdW50KyssIGQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBlLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBuLm9mZlkgKyBkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSArIHcgLSAoInRvcCIgPT09IGQuY29uZmlnLnhheGlzLnBvc2l0aW9uID8gZC5nbG9iYWxzLnhBeGlzSGVpZ2h0ICsgZC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCAtIDIgOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogeS50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogeS5pc0JvbGQgPyA2MDAgOiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBBcnJheS5pc0FycmF5KGYpID8gdCAmJiBkLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgPyBmW2QuZ2xvYmFscy5taW5YICsgcyAtIDFdIDogZltzXSA6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxhaW5UZXh0OiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICh0ID8gImFwZXhjaGFydHMteGF4aXMtbGFiZWwgIiA6ICJhcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsICIpICsgeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmFkZChrKSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhkLmdsb2JhbHMuU1ZHTlMsICJ0aXRsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnRleHRDb250ZW50ID0gQXJyYXkuaXNBcnJheSh5LnRleHQpID8geS50ZXh0LmpvaW4oIiAiKSA6IHkudGV4dCwgay5ub2RlLmFwcGVuZENoaWxkKEEpLCAiIiAhPT0geS50ZXh0ICYmIChoLnB1c2goeS50ZXh0KSwgYy5wdXNoKHkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPCB2IC0gMSAmJiAoYiArPSByKHMgKyAxLCBvKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgayA9IDA7IGsgPD0gdiAtIDE7IGsrKykgdyhrKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3WGF4aXNJbnZlcnNlZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBpLCBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlID8gcy5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy15YXhpcyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgiICsgbyArICIsIDApIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBuLmFkZChsKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmIChzLmNvbmZpZy55YXhpc1t0XS5zaG93KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoOyBjKyspIGgucHVzaCh0aGlzLnhheGlzTGFiZWxzW2NdKTsKICAgICAgICAgICAgICAgICAgICBlID0gcy5nbG9iYWxzLmdyaWRIZWlnaHQgLyBoLmxlbmd0aCwgaSA9IC1lIC8gMi4yOwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gcy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBzLmNvbmZpZy55YXhpc1swXS5sYWJlbHM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGcuc2hvdykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IGZ1bmN0aW9uKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHZvaWQgMCA9PT0gaFtvXSA/ICIiIDogaFtvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZChuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYS5heGVzVXRpbHMuZ2V0WUF4aXNGb3JlQ29sb3IoZy5zdHlsZS5jb2xvcnMsIHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KG4pICYmICh1ID0gbi5sZW5ndGggLyAyICogcGFyc2VJbnQoZy5zdHlsZS5mb250U2l6ZSwgMTApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHIuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBnLm9mZnNldFggLSAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaSArIGUgKyBnLm9mZnNldFkgLSB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiBhLnlheGlzLm9wcG9zaXRlID8gInN0YXJ0IiA6ICJlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IEFycmF5LmlzQXJyYXkoYykgPyBjW29dIDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGcuc3R5bGUuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IGcuc3R5bGUuZm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogZy5zdHlsZS5mb250V2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYWluVGV4dDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCAiICsgZy5zdHlsZS5jc3NDbGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYWRkKGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHMuZ2xvYmFscy5TVkdOUywgInRpdGxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudGV4dENvbnRlbnQgPSBBcnJheS5pc0FycmF5KG4pID8gbi5qb2luKCIgIikgOiBuLCBmLm5vZGUuYXBwZW5kQ2hpbGQocCksIDAgIT09IHMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByLnJvdGF0ZUFyb3VuZENlbnRlcihmLm5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLm5vZGUuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAicm90YXRlKCIuY29uY2F0KHMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsICIgMCAiKS5jb25jYXQoeC55LCAiKSIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGYgPSAwOyBmIDw9IGgubGVuZ3RoIC0gMTsgZisrKSB1KGYpOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMteWF4aXMtdGl0bGUgYXBleGNoYXJ0cy14YXhpcy10aXRsZS1pbnZlcnNlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIgKyBvICsgIiwgMCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSByLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzLmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVDb2xvcjogcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCAiICsgcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY3NzQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBwLmFkZCh4KSwgbi5hZGQocCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAwOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwgJiYgcy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGUgJiYgKGIgPSBzLmdsb2JhbHMuZ3JpZFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHMuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHYuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHIuZHJhd0xpbmUocy5nbG9iYWxzLnBhZEhvcml6b250YWwgKyB2Lm9mZnNldFggKyBiLCAxICsgdi5vZmZzZXRZLCBzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCArIHYub2Zmc2V0WCArIGIsIHMuZ2xvYmFscy5ncmlkSGVpZ2h0ICsgdi5vZmZzZXRZLCB2LmNvbG9yLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5hZGQoeSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcy5zaG93ICYmIHRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKGIsIGgubGVuZ3RoLCBzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLCBzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3MsIDAsIGUsIG4pLCBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdYYXhpc1RpY2tzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0OwogICAgICAgICAgICAgICAgICAgIGlmICghKHQgPCAwIHx8IHQgLSAyID4gYS5nbG9iYWxzLmdyaWRXaWR0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLm9mZlkgKyBhLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBlICsgciArIGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQsICJ0b3AiID09PSBhLmNvbmZpZy54YXhpcy5wb3NpdGlvbiAmJiAoZSA9IHIgLSBhLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KSwgYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IG0odGhpcy5jdHgpLmRyYXdMaW5lKHQgKyBhLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCwgciArIGEuY29uZmlnLnhheGlzLm9mZnNldFksIHMgKyBhLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WCwgZSArIGEuY29uZmlnLnhheGlzLm9mZnNldFksIGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmFkZChvKSwgby5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMteGF4aXMtdGljayIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFhBeGlzVGlja3NQb3NpdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnhheGlzTGFiZWxzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgaTsgcysrKSBhID0gdGhpcy54YXhpc0xhYmVsc1tzXS5wb3NpdGlvbiwgZS5wdXNoKGEpOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGksIG8gPSAwOyBvIDwgcjsgbysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMuaXNYTnVtZXJpYyAmJiAiYmFyIiAhPT0gdC5jb25maWcuY2hhcnQudHlwZSAmJiAobiAtPSAxKSwgYSArPSB0Lmdsb2JhbHMuZ3JpZFdpZHRoIC8gbiwgZS5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ4QXhpc0xhYmVsQ29ycmVjdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyIpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIHRleHQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWcgdGV4dCB0c3BhbiIpOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMucm90YXRlWExhYmVscyB8fCB0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGEubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5yb3RhdGVBcm91bmRDZW50ZXIoYVtvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnkgPSBuLnkgLSAxLCBuLnggPSBuLnggKyAxLCBhW29dLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInJvdGF0ZSgiLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLCAiICIpLmNvbmNhdChuLngsICIgIikuY29uY2F0KG4ueSwgIikiKSksIGFbb10uc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsICIuY29uY2F0KC0xMCwgIikiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGFbb10uY2hpbGROb2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY29uZmlnLnhheGlzLmxhYmVscy50cmltICYmIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwgKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhpLCBpLnRleHRDb250ZW50LCB0Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQgLSAoImJvdHRvbSIgPT09IHQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiA/IDIwIDogMTApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAhIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHQuZ2xvYmFscy5ncmlkV2lkdGggLyAodC5nbG9iYWxzLmxhYmVscy5sZW5ndGggKyAxKSwgcyA9IDA7IHMgPCBhLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhW3NdLmNoaWxkTm9kZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0gJiYgImRhdGV0aW1lIiAhPT0gdC5jb25maWcueGF4aXMudHlwZSAmJiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHQsIHQudGV4dENvbnRlbnQsIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0oKTsKICAgICAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gc1tzLmxlbmd0aCAtIDFdLmdldEJCb3goKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzWzBdLmdldEJCb3goKTsKICAgICAgICAgICAgICAgICAgICAgICAgaC54IDwgLTIwICYmIHNbcy5sZW5ndGggLSAxXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbcy5sZW5ndGggLSAxXSksIGMueCArIGMud2lkdGggPiB0Lmdsb2JhbHMuZ3JpZFdpZHRoICYmICF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIHNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCByLmxlbmd0aDsgZCsrKSBlLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhyW2RdLCByW2RdLnRleHRDb250ZW50LCB0LmNvbmZpZy55YXhpc1swXS5sYWJlbHMubWF4V2lkdGggLSAodC5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCA/IDIgKiBwYXJzZUZsb2F0KHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKSA6IDApIC0gMTUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgVSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53OwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICB0aGlzLnhheGlzTGFiZWxzID0gaS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLCB0aGlzLmF4ZXNVdGlscyA9IG5ldyBHKGUpLCB0aGlzLmlzUmFuZ2VCYXIgPSBpLmdsb2JhbHMuc2VyaWVzUmFuZ2VCYXIubGVuZ3RoLCBpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aCA+IDAgJiYgKHRoaXMueGF4aXNMYWJlbHMgPSBpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXdHcmlkQXJlYSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gdCAmJiAodCA9IGkuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZ3JpZCIKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLCAxLCBlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwgZS5nbG9iYWxzLmdyaWRIZWlnaHQsICJ0cmFuc3BhcmVudCIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwgZS5nbG9iYWxzLmdyaWRIZWlnaHQsIGUuZ2xvYmFscy5ncmlkV2lkdGgsIGUuZ2xvYmFscy5ncmlkSGVpZ2h0LCAidHJhbnNwYXJlbnQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5hZGQocyksIHQuYWRkKGEpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdHcmlkIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmF4aXNDaGFydHMgJiYgKHQgPSB0aGlzLnJlbmRlckdyaWQoKSwgdGhpcy5kcmF3R3JpZEFyZWEodC5lbCkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZUdyaWRNYXNrIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IEFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKSA/IDAgOiB0LmNvbmZpZy5zdHJva2Uud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5tYXgocywgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBhID0gcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlLmRvbS5lbEdyaWRSZWN0TWFzayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLCAiY2xpcFBhdGgiKSwgZS5kb20uZWxHcmlkUmVjdE1hc2suc2V0QXR0cmlidXRlKCJpZCIsICJncmlkUmVjdE1hc2siLmNvbmNhdChlLmN1aWQpKSwgZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUywgImNsaXBQYXRoIiksIGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLnNldEF0dHJpYnV0ZSgiaWQiLCAiZ3JpZFJlY3RNYXJrZXJNYXNrIi5jb25jYXQoZS5jdWlkKSksIGUuZG9tLmVsRm9yZWNhc3RNYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsICJjbGlwUGF0aCIpLCBlLmRvbS5lbEZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoImlkIiwgImZvcmVjYXN0TWFzayIuY29uY2F0KGUuY3VpZCkpLCBlLmRvbS5lbE5vbkZvcmVjYXN0TWFzayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLCAiY2xpcFBhdGgiKSwgZS5kb20uZWxOb25Gb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKCJpZCIsICJub25Gb3JlY2FzdE1hc2siLmNvbmNhdChlLmN1aWQpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuY29uZmlnLmNoYXJ0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICAoImJhciIgPT09IHIgfHwgInJhbmdlQmFyIiA9PT0gciB8fCAiY2FuZGxlc3RpY2siID09PSByIHx8ICJib3hQbG90IiA9PT0gciB8fCB0Lmdsb2JhbHMuY29tYm9CYXJDb3VudCA+IDApICYmIHQuZ2xvYmFscy5pc1hOdW1lcmljICYmICF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIChvID0gdC5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQsIG4gPSB0LmNvbmZpZy5ncmlkLnBhZGRpbmcucmlnaHQsIGUuYmFyUGFkRm9yTnVtZXJpY0F4aXMgPiBvICYmIChvID0gZS5iYXJQYWRGb3JOdW1lcmljQXhpcywgbiA9IGUuYmFyUGFkRm9yTnVtZXJpY0F4aXMpKSwgZS5kb20uZWxHcmlkUmVjdCA9IGkuZHJhd1JlY3QoLWEgLyAyIC0gbyAtIDIsIC1hIC8gMiwgZS5ncmlkV2lkdGggKyBhICsgbiArIG8gKyA0LCBlLmdyaWRIZWlnaHQgKyBhLCAwLCAiI2ZmZiIpOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gdC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUgKyAxOwogICAgICAgICAgICAgICAgICAgIGUuZG9tLmVsR3JpZFJlY3RNYXJrZXIgPSBpLmRyYXdSZWN0KDIgKiAtbCwgMiAqIC1sLCBlLmdyaWRXaWR0aCArIDQgKiBsLCBlLmdyaWRIZWlnaHQgKyA0ICogbCwgMCwgIiNmZmYiKSwgZS5kb20uZWxHcmlkUmVjdE1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdC5ub2RlKSwgZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hcmtlci5ub2RlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGUuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCJkZWZzIik7CiAgICAgICAgICAgICAgICAgICAgaC5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFzayksIGguYXBwZW5kQ2hpbGQoZS5kb20uZWxGb3JlY2FzdE1hc2spLCBoLmFwcGVuZENoaWxkKGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrKSwgaC5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzaykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2RyYXdHcmlkTGluZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnkxLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54MiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQueTIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LnhDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICghKDAgPT09IGUgJiYgbC5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwgfHwgZSA9PT0gbyAtIDEgJiYgbC5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCAmJiAhbC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciB8fCAicmFkYXIiID09PSBsLmNvbmZpZy5jaGFydC50eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3cgJiYgdGhpcy5fZHJhd0dyaWRMaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLmdsb2JhbHMuaGFzR3JvdXBzICYmICJiZXR3ZWVuIiA9PT0gbC5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBsLmdsb2JhbHMuZ3JvdXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gMCwgZyA9IDA7IGQgPCBlICYmIGcgPCBjLmxlbmd0aDsgZysrKSBkICs9IGNbZ10uY29sczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID09PSBlICYmIChoID0gLjYgKiBsLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IF8odGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKGksIGgsIHRoaXMuZWxnKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2RyYXdHcmlkTGluZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC54MSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LngyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC55MiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQucGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gci5ub2RlLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbCIpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gby5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBvLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgbSh0aGlzKS5kcmF3TGluZShlIC0gKG4gPyBoIDogMCksIGksIGEgKyAobiA/IGggOiAwKSwgcywgby5jb25maWcuZ3JpZC5ib3JkZXJDb2xvciwgbCk7CiAgICAgICAgICAgICAgICAgICAgYy5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtZ3JpZGxpbmUiKSwgci5hZGQoYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2RyYXdHcmlkQmFuZFJlY3QiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuYywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQueDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnkxLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54MiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQueTIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJjb2x1bW4iICE9PSBvIHx8ICJkYXRldGltZSIgIT09IG4uY29uZmlnLnhheGlzLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBuLmNvbmZpZy5ncmlkW29dLmNvbG9yc1tlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBsLmRyYXdSZWN0KGkgLSAoInJvdyIgPT09IG8gPyBoIDogMCksIGEsIHMgKyAoInJvdyIgPT09IG8gPyAyICogaCA6IDApLCByLCAwLCBjLCBuLmNvbmZpZy5ncmlkW29dLm9wYWNpdHkpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZy5hZGQoZCksIGQuYXR0cigiY2xpcC1wYXRoIiwgInVybCgjZ3JpZFJlY3RNYXNrIi5jb25jYXQobi5nbG9iYWxzLmN1aWQsICIpIikpLCBkLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1ncmlkLSIuY29uY2F0KG8pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2RyYXdYWUxpbmVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnRpY2tBbW91bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyB8fCBzLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IHMuZ2xvYmFscy5wYWRIb3Jpem9udGFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHMuZ2xvYmFscy5ncmlkSGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICBzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aCA/IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSB0LnhDLCBzID0gdC54MSwgciA9IHQueTEsIG8gPSB0LngyLCBuID0gdC55MiwgbCA9IDA7IGwgPCBhOyBsKyspIHMgPSBlLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLCBvID0gZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbiwgZS5fZHJhd0dyaWRMaW5lcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Q291bnQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBlLmVsZ3JpZExpbmVzVgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4QzogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogKHMuZ2xvYmFscy5pc1hOdW1lcmljICYmIChpID0gcy5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksIHMuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAoaSA9IHMuZ2xvYmFscy54YXhpc0xhYmVsc0NvdW50KSwgZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0LnhDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LngxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LnkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LngyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LnkyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gcy5jb25maWcueGF4aXMudGlja0Ftb3VudCAmJiAiZGF0YVBvaW50cyIgIT09IHMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQgJiYgIm9uIiA9PT0gcy5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCkgcy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtdGV4dC5hcGV4Y2hhcnRzLXhheGlzLWxhYmVsIHRzcGFuOm5vdCg6ZW1wdHkpIikuZm9yRWFjaCgoZnVuY3Rpb24odCwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdC5nZXRCQm94KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fZHJhd0dyaWRMaW5lcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBzLnggKyBzLndpZHRoIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiBzLnggKyBzLndpZHRoIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhDb3VudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBlLmVsZ3JpZExpbmVzVgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IDA7IGggPCBhICsgKHMuZ2xvYmFscy5pc1hOdW1lcmljID8gMCA6IDEpOyBoKyspIDAgPT09IGggJiYgMSA9PT0gYSAmJiAxID09PSBzLmdsb2JhbHMuZGF0YVBvaW50cyAmJiAobiA9IHIgPSBzLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMiksIGUuX2RyYXdHcmlkTGluZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeENvdW50OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGUuZWxncmlkTGluZXNWCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG4gPSByICs9IHMuZ2xvYmFscy5ncmlkV2lkdGggLyAocy5nbG9iYWxzLmlzWE51bWVyaWMgPyBhIC0gMSA6IGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeEM6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogbgogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLmdsb2JhbHMuZ3JpZFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGEgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmFuZ2VCYXIgJiYgKGQgPSBzLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGcgPSAwOyBnIDwgZCArICh0aGlzLmlzUmFuZ2VCYXIgPyAxIDogMCk7IGcrKykgdGhpcy5fZHJhd0dyaWRMaW5lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLmVsZ3JpZExpbmVzSAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgaCA9IGwgKz0gcy5nbG9iYWxzLmdyaWRIZWlnaHQgLyAodGhpcy5pc1JhbmdlQmFyID8gZCA6IGEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZHJhd0ludmVydGVkWFlMaW5lcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC54Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyB8fCBpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgcyA9IGkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLCByID0gaS5nbG9iYWxzLmdyaWRIZWlnaHQsIG8gPSAwOyBvIDwgZSArIDE7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93ICYmIHRoaXMuX2RyYXdHcmlkTGluZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDE6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLmVsZ3JpZExpbmVzVgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG5ldyBfKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhzLCAwLCB0aGlzLmVsZyksIGEgPSBzID0gcyArIGkuZ2xvYmFscy5ncmlkV2lkdGggLyBlICsgLjMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCBsID0gMCwgaCA9IGkuZ2xvYmFscy5ncmlkV2lkdGgsIGMgPSAwOyBjIDwgaS5nbG9iYWxzLmRhdGFQb2ludHMgKyAxOyBjKyspIHRoaXMuX2RyYXdHcmlkTGluZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDI6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogdGhpcy5lbGdyaWRMaW5lc0gKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGwgPSBuICs9IGkuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gaS5nbG9iYWxzLmRhdGFQb2ludHMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVuZGVyR3JpZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGcgPSBlLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWdyaWQiCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuZWxncmlkTGluZXNIID0gZS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbCIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lbGdyaWRMaW5lc1YgPSBlLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbCIKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNIKSwgdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNWKSwgdC5jb25maWcuZ3JpZC5zaG93IHx8ICh0aGlzLmVsZ3JpZExpbmVzVi5oaWRlKCksIHRoaXMuZWxncmlkTGluZXNILmhpZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSwgYSA9IHQuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aCA/IHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5sZW5ndGggLSAxIDogNSwgcyA9IDA7IHMgPCB0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCAmJiAodm9pZCAwICE9PSB0Lmdsb2JhbHMueUF4aXNTY2FsZVtzXSAmJiAoYSA9IHQuZ2xvYmFscy55QXhpc1NjYWxlW3NdLnJlc3VsdC5sZW5ndGggLSAxKSwgIShhID4gMikpOyBzKyspOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCB8fCB0aGlzLmlzUmFuZ2VCYXIgPyAoaSA9IHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLCB0aGlzLmlzUmFuZ2VCYXIgJiYgKGEgPSB0Lmdsb2JhbHMubGFiZWxzLmxlbmd0aCwgdC5jb25maWcueGF4aXMudGlja0Ftb3VudCAmJiB0LmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyICYmIChpID0gdC5jb25maWcueGF4aXMudGlja0Ftb3VudCkpLCB0aGlzLl9kcmF3WFlMaW5lcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHhDb3VudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgdGlja0Ftb3VudDogYQogICAgICAgICAgICAgICAgICAgIH0pKSA6IChpID0gYSwgYSA9IHQuZ2xvYmFscy54VGlja0Ftb3VudCwgdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHhDb3VudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgdGlja0Ftb3VudDogYQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5kcmF3R3JpZEJhbmRzKGksIGEpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsOiB0aGlzLmVsZywKICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXNUaWNrV2lkdGg6IHQuZ2xvYmFscy5ncmlkV2lkdGggLyBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3R3JpZEJhbmRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaS5jb25maWcuZ3JpZC5yb3cuY29sb3JzICYmIGkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMCwgcyA9IGkuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gZSwgciA9IGkuZ2xvYmFscy5ncmlkV2lkdGgsIG8gPSAwLCBuID0gMDsgbyA8IGU7IG8rKywgbisrKSBuID49IGkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGggJiYgKG4gPSAwKSwgdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDE6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAicm93IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYSArPSBpLmdsb2JhbHMuZ3JpZEhlaWdodCAvIGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzICYmIGkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCB8fCAiY2F0ZWdvcnkiICE9PSBpLmNvbmZpZy54YXhpcy50eXBlICYmICFpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgPyB0IDogdCAtIDEsIGggPSBpLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwgYyA9IGkuZ2xvYmFscy5wYWRIb3Jpem9udGFsICsgaS5nbG9iYWxzLmdyaWRXaWR0aCAvIGwsIGQgPSBpLmdsb2JhbHMuZ3JpZEhlaWdodCwgZyA9IDAsIHUgPSAwOyBnIDwgdDsgZysrLCB1KyspIHUgPj0gaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aCAmJiAodSA9IDApLCB0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDI6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MjogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJjb2x1bW4iCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBoICs9IGkuZ2xvYmFscy5ncmlkV2lkdGggLyBsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBxID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAibmljZVNjYWxlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgPyBhcmd1bWVudHNbNF0gOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBNYXRoLmFicyhlIC0gdCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJkYXRhUG9pbnRzIiA9PT0gKGkgPSB0aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSwgYSwgbykpICYmIChpID0gci5nbG9iYWxzLmRhdGFQb2ludHMgLSAxKSwgdCA9PT0gTnVtYmVyLk1JTl9WQUxVRSAmJiAwID09PSBlIHx8ICF4LmlzTnVtYmVyKHQpICYmICF4LmlzTnVtYmVyKGUpIHx8IHQgPT09IE51bWJlci5NSU5fVkFMVUUgJiYgZSA9PT0gLU51bWJlci5NQVhfVkFMVUUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDAsIGUgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMubGluZWFyU2NhbGUodCwgZSwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPiBlID8gKGNvbnNvbGUud2FybigiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heCIpLCBlID0gdCArIC4xKSA6IHQgPT09IGUgJiYgKHQgPSAwID09PSB0ID8gMCA6IHQgLSAuNSwgZSA9IDAgPT09IGUgPyAyIDogZSArIC41KTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IFtdOwogICAgICAgICAgICAgICAgICAgIG8gPCAxICYmIHMgJiYgKCJjYW5kbGVzdGljayIgPT09IHIuY29uZmlnLmNoYXJ0LnR5cGUgfHwgImNhbmRsZXN0aWNrIiA9PT0gci5jb25maWcuc2VyaWVzW2FdLnR5cGUgfHwgImJveFBsb3QiID09PSByLmNvbmZpZy5jaGFydC50eXBlIHx8ICJib3hQbG90IiA9PT0gci5jb25maWcuc2VyaWVzW2FdLnR5cGUgfHwgci5nbG9iYWxzLmlzUmFuZ2VEYXRhKSAmJiAoZSAqPSAxLjAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGkgKyAxOwogICAgICAgICAgICAgICAgICAgIGggPCAyID8gaCA9IDIgOiBoID4gMiAmJiAoaCAtPSAyKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG8gLyBoLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gTWF0aC5mbG9vcih4LmxvZzEwKGMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IE1hdGgucG93KDEwLCBkKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IE1hdGgucm91bmQoYyAvIGcpOwogICAgICAgICAgICAgICAgICAgIHUgPCAxICYmICh1ID0gMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSB1ICogZywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGYgKiBNYXRoLmZsb29yKHQgLyBmKSwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGYgKiBNYXRoLmNlaWwoZSAvIGYpLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gcDsKICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiBvID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbC5wdXNoKHYpLCAhKCh2ICs9IGYpID4gYik7KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pY2VNaW46IGxbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWF4OiBsW2wubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgKGwgPSBbXSkucHVzaChtKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gTWF0aC5hYnMoZSAtIHQpIC8gaSwgdyA9IDA7IHcgPD0gaTsgdysrKSBtICs9IHksIGwucHVzaChtKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbFtsLmxlbmd0aCAtIDJdID49IGUgJiYgbC5wb3AoKSwgewogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIG5pY2VNaW46IGxbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG5pY2VNYXg6IGxbbC5sZW5ndGggLSAxXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibGluZWFyU2NhbGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMyA/IGFyZ3VtZW50c1szXSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguYWJzKGUgLSB0KTsKICAgICAgICAgICAgICAgICAgICAiZGF0YVBvaW50cyIgPT09IChpID0gdGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksIGEsIHMpKSAmJiAoaSA9IHRoaXMudy5nbG9iYWxzLmRhdGFQb2ludHMgLSAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHMgLyBpOwogICAgICAgICAgICAgICAgICAgIGkgPT09IE51bWJlci5NQVhfVkFMVUUgJiYgKGkgPSAxMCwgciA9IDEpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBbXSwgbiA9IHQ7IGkgPj0gMDspIG8ucHVzaChuKSwgbiArPSByLCBpIC09IDE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBvLAogICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWluOiBvWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWF4OiBvW28ubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImxvZ2FyaXRobWljU2NhbGVOaWNlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgZSA8PSAwICYmIChlID0gTWF0aC5tYXgodCwgaSkpLCB0IDw9IDAgJiYgKHQgPSBNYXRoLm1pbihlLCBpKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IFtdLCBzID0gTWF0aC5jZWlsKE1hdGgubG9nKGUpIC8gTWF0aC5sb2coaSkgKyAxKSwgciA9IE1hdGguZmxvb3IoTWF0aC5sb2codCkgLyBNYXRoLmxvZyhpKSk7IHIgPCBzOyByKyspIGEucHVzaChNYXRoLnBvdyhpLCByKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWluOiBhWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWF4OiBhW2EubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImxvZ2FyaXRobWljU2NhbGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBlIDw9IDAgJiYgKGUgPSBNYXRoLm1heCh0LCBpKSksIHQgPD0gMCAmJiAodCA9IE1hdGgubWluKGUsIGkpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gW10sIHMgPSBNYXRoLmxvZyhlKSAvIE1hdGgubG9nKGkpLCByID0gTWF0aC5sb2codCkgLyBNYXRoLmxvZyhpKSwgbyA9IHMgLSByLCBuID0gTWF0aC5yb3VuZChvKSwgbCA9IG8gLyBuLCBoID0gMCwgYyA9IHI7IGggPCBuOyBoKyssIGMgKz0gbCkgYS5wdXNoKE1hdGgucG93KGksIGMpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wdXNoKE1hdGgucG93KGksIHMpKSwgewogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIG5pY2VNaW46IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5pY2VNYXg6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZSAmJiB0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXIgJiYgdm9pZCAwID09PSB0aGlzLncuY29uZmlnLnlheGlzW2VdLnRpY2tBbW91bnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXIoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHguaXNOdW1iZXIoTnVtYmVyKHMpKSAmJiAheC5pc0Zsb2F0KHMpICYmIChhID0gTWF0aC5jZWlsKGkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA8IHQgPyBhIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXRZU2NhbGVGb3JJbmRleCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLncuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYS5pc0Jhckhvcml6b250YWwgPyBzLnhheGlzIDogcy55YXhpc1t0XTsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGEueUF4aXNTY2FsZVt0XSAmJiAoYS55QXhpc1NjYWxlW3RdID0gW10pOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gTWF0aC5hYnMoaSAtIGUpOwogICAgICAgICAgICAgICAgICAgIGlmIChyLmxvZ2FyaXRobWljICYmIG8gPD0gNSAmJiAoYS5pbnZhbGlkTG9nU2NhbGUgPSAhMCksIHIubG9nYXJpdGhtaWMgJiYgbyA+IDUpIGEuYWxsU2VyaWVzQ29sbGFwc2VkID0gITEsIGEueUF4aXNTY2FsZVt0XSA9IHRoaXMubG9nYXJpdGhtaWNTY2FsZShlLCBpLCByLmxvZ0Jhc2UpLCBhLnlBeGlzU2NhbGVbdF0gPSByLmZvcmNlTmljZVNjYWxlID8gdGhpcy5sb2dhcml0aG1pY1NjYWxlTmljZShlLCBpLCByLmxvZ0Jhc2UpIDogdGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsIGksIHIubG9nQmFzZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSAhPT0gLU51bWJlci5NQVhfVkFMVUUgJiYgeC5pc051bWJlcihpKSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuYWxsU2VyaWVzQ29sbGFwc2VkID0gITEsIHZvaWQgMCA9PT0gci5taW4gJiYgdm9pZCAwID09PSByLm1heCB8fCByLmZvcmNlTmljZVNjYWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHZvaWQgMCA9PT0gcy55YXhpc1t0XS5tYXggJiYgdm9pZCAwID09PSBzLnlheGlzW3RdLm1pbiB8fCBzLnlheGlzW3RdLmZvcmNlTmljZVNjYWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS55QXhpc1NjYWxlW3RdID0gdGhpcy5uaWNlU2NhbGUoZSwgaSwgci50aWNrQW1vdW50ID8gci50aWNrQW1vdW50IDogbyA8IDUgJiYgbyA+IDEgPyBvICsgMSA6IDUsIHQsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhLnlBeGlzU2NhbGVbdF0gPSB0aGlzLmxpbmVhclNjYWxlKGUsIGksIHIudGlja0Ftb3VudCwgdCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBhLnlBeGlzU2NhbGVbdF0gPSB0aGlzLmxpbmVhclNjYWxlKDAsIDUsIDUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFhTY2FsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5jb25maWcueGF4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBNYXRoLmFicyhlIC0gdCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgIT09IC1OdW1iZXIuTUFYX1ZBTFVFICYmIHguaXNOdW1iZXIoZSkgPyBhLnhBeGlzU2NhbGUgPSB0aGlzLmxpbmVhclNjYWxlKHQsIGUsIHMudGlja0Ftb3VudCA/IHMudGlja0Ftb3VudCA6IHIgPCA1ICYmIHIgPiAxID8gciArIDEgOiA1LCAwKSA6IGEueEF4aXNTY2FsZSA9IHRoaXMubGluZWFyU2NhbGUoMCwgNSwgNSksIGEueEF4aXNTY2FsZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXRNdWx0aXBsZVlTY2FsZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUubWluWUFyci5jb25jYXQoW10pLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5tYXhZQXJyLmNvbmNhdChbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBpLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Lm5hbWUgPT09IGUuc2VyaWVzTmFtZSAmJiAobiA9IGksIG8gIT09IGkgPyByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbWlsYXJJbmRleDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RXhpc3RzOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGFbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gc1tuXTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRZU2NhbGVGb3JJbmRleChvLCBsLCBoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5zYW1lU2NhbGVJbk11bHRpcGxlQXhlcyhhLCBzLCByKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzYW1lU2NhbGVJbk11bHRpcGxlQXhlcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudy5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmFscmVhZHlFeGlzdHMgJiYgKHZvaWQgMCA9PT0gb1t0LmluZGV4XSAmJiAob1t0LmluZGV4XSA9IFtdKSwgb1t0LmluZGV4XS5wdXNoKHQuaW5kZXgpLCBvW3QuaW5kZXhdLnB1c2godC5zaW1pbGFySW5kZXgpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgci55QXhpc1NhbWVTY2FsZUluZGljZXMgPSBvLCBvLmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5mb3JFYWNoKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IGEgJiYgKHMgPSB0LCByID0gaSwgcy5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT09IHIuaW5kZXhPZih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKS5sZW5ndGggPiAwICYmIChvW2VdID0gb1tlXS5jb25jYXQob1thXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG8ubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZpbHRlcigoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaW5kZXhPZihlKSA9PT0gaQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNvcnQoKQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBvID0gby5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhdAogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4uc2xpY2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIGwgPSBsLmZpbHRlcigoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5pbmRleE9mKEpTT04uc3RyaW5naWZ5KHQpKSA9PT0gZQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gW107CiAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwuZm9yRWFjaCgoZnVuY3Rpb24oYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5pbmRleE9mKGkpID4gLTEgJiYgKHZvaWQgMCA9PT0gY1tzXSAmJiAoY1tzXSA9IFtdLCBkW3NdID0gW10pLCBjW3NdLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGRbc10ucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlW2ldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLCBOdW1iZXIuTUlOX1ZBTFVFKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgLU51bWJlci5NQVhfVkFMVUUpOwogICAgICAgICAgICAgICAgICAgIGMuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdbZV0gPSBNYXRoLm1pbih0LnZhbHVlLCBnW2VdKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSksIGQuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVbZV0gPSBNYXRoLm1heCh0LnZhbHVlLCB1W2VdKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBkLmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZ1tpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY2hhcnQuc3RhY2tlZCAmJiAobiA9IDAsIHQuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudmFsdWUgIT09IC1OdW1iZXIuTUFYX1ZBTFVFICYmIChuICs9IHQudmFsdWUpLCBvICE9PSBOdW1iZXIuTUlOX1ZBTFVFICYmIChvICs9IGNbaV1bZV0udmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCB0LmZvckVhY2goKGZ1bmN0aW9uKGksIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0W2xdLmtleSA9PT0gZSAmJiAodm9pZCAwICE9PSBzLnlheGlzW2VdLm1pbiAmJiAobyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMueWF4aXNbZV0ubWluID8gcy55YXhpc1tlXS5taW4oci5taW5ZKSA6IHMueWF4aXNbZV0ubWluKSwgdm9pZCAwICE9PSBzLnlheGlzW2VdLm1heCAmJiAobiA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIHMueWF4aXNbZV0ubWF4ID8gcy55YXhpc1tlXS5tYXgoci5tYXhZKSA6IHMueWF4aXNbZV0ubWF4KSwgYS5zZXRZU2NhbGVGb3JJbmRleChlLCBvLCBuKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYXV0b1NjYWxlWSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHQgfHwgKHQgPSB0aGlzKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQudzsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyB8fCBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCkgcmV0dXJuIGNvbnNvbGUud2FybigiYXV0b1NjYWxlWWF4aXMgaXMgbm90IHN1cHBvcnRlZCBpbiBhIG11bHRpLXlheGlzIGNoYXJ0LiIpLCBlOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gYS5nbG9iYWxzLnNlcmllc1hbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhLmNvbmZpZy5jaGFydC5zdGFja2VkOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIGwgPSAwOyBsIDwgcy5sZW5ndGg7IGwrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzW2xdID49IGkueGF4aXMubWluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGgsIGMsIGQgPSBhLmdsb2JhbHMubWluWUFycltvXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBhLmdsb2JhbHMubWF4WUFycltvXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsczsKICAgICAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihvLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG9bbl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID8gKGYgPSB1W25dLCBoID0gYyA9IGYsIHUuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNbZV0gPD0gaS54YXhpcy5tYXggJiYgc1tlXSA+PSBpLnhheGlzLm1pbiAmJiAodCA+IGMgJiYgbnVsbCAhPT0gdCAmJiAoYyA9IHQpLCBvW2VdIDwgaCAmJiBudWxsICE9PSBvW2VdICYmIChoID0gb1tlXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpIDogKGggPSBjID0gZiwgby5mb3JFYWNoKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbZV0gPD0gaS54YXhpcy5tYXggJiYgc1tlXSA+PSBpLnhheGlzLm1pbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB0ICYmIChyID0gTWF0aC5taW4oaVtlXSwgciksIG8gPSBNYXRoLm1heChpW2VdLCBvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBvID4gYyAmJiBudWxsICE9PSBvICYmIChjID0gbyksIHIgPCBoICYmIG51bGwgIT09IHIgJiYgKGggPSByKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIHZvaWQgMCA9PT0gaCAmJiB2b2lkIDAgPT09IGMgJiYgKGggPSBkLCBjID0gZyksIChjICo9IGMgPCAwID8gLjkgOiAxLjEpIDwgMCAmJiBjIDwgZyAmJiAoYyA9IGcpLCAoaCAqPSBoIDwgMCA/IDEuMSA6IC45KSA8IDAgJiYgaCA+IGQgJiYgKGggPSBkKSwgZS5sZW5ndGggPiAxID8gKGVbbF0ubWluID0gdm9pZCAwID09PSB0Lm1pbiA/IGggOiB0Lm1pbiwgZVtsXS5tYXggPSB2b2lkIDAgPT09IHQubWF4ID8gYyA6IHQubWF4KSA6IChlWzBdLm1pbiA9IHZvaWQgMCA9PT0gdC5taW4gPyBoIDogdC5taW4sIGVbMF0ubWF4ID0gdm9pZCAwID09PSB0Lm1heCA/IGMgOiB0Lm1heCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBaID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMuc2NhbGVzID0gbmV3IHEoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiaW5pdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRZUmFuZ2UoKSwgdGhpcy5zZXRYUmFuZ2UoKSwgdGhpcy5zZXRaUmFuZ2UoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRNaW5ZTWF4WSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBOdW1iZXIuTUFYX1ZBTFVFLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiAtTnVtYmVyLk1BWF9WQUxVRSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudy5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IC1OdW1iZXIuTUFYX1ZBTFVFLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gTnVtYmVyLk1JTl9WQUxVRTsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSBhICYmIChhID0gdCArIDEpOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gci5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbDsKICAgICAgICAgICAgICAgICAgICAiY2FuZGxlc3RpY2siID09PSBzLmNoYXJ0LnR5cGUgPyAoaCA9IHIuc2VyaWVzQ2FuZGxlTCwgYyA9IHIuc2VyaWVzQ2FuZGxlSCkgOiAiYm94UGxvdCIgPT09IHMuY2hhcnQudHlwZSA/IChoID0gci5zZXJpZXNDYW5kbGVPLCBjID0gci5zZXJpZXNDYW5kbGVDKSA6IHIuaXNSYW5nZURhdGEgJiYgKGggPSByLnNlcmllc1JhbmdlU3RhcnQsIGMgPSByLnNlcmllc1JhbmdlRW5kKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBkID0gdDsgZCA8IGE7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICByLmRhdGFQb2ludHMgPSBNYXRoLm1heChyLmRhdGFQb2ludHMsIGxbZF0ubGVuZ3RoKSwgci5jYXRlZ29yeUxhYmVscy5sZW5ndGggJiYgKHIuZGF0YVBvaW50cyA9IHIuY2F0ZWdvcnlMYWJlbHMuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IHIuc2VyaWVzW2RdLmxlbmd0aDsgZysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGxbZF1bZ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB1ICYmIHguaXNOdW1iZXIodSkgPyAodm9pZCAwICE9PSBjW2RdW2ddICYmIChvID0gTWF0aC5tYXgobywgY1tkXVtnXSksIGUgPSBNYXRoLm1pbihlLCBjW2RdW2ddKSksIHZvaWQgMCAhPT0gaFtkXVtnXSAmJiAoZSA9IE1hdGgubWluKGUsIGhbZF1bZ10pLCBpID0gTWF0aC5tYXgoaSwgaFtkXVtnXSkpLCAiY2FuZGxlc3RpY2siICE9PSB0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUgJiYgImJveFBsb3QiICE9PSB0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUgfHwgKHZvaWQgMCAhPT0gci5zZXJpZXNDYW5kbGVDW2RdW2ddICYmIChvID0gTWF0aC5tYXgobywgci5zZXJpZXNDYW5kbGVPW2RdW2ddKSwgbyA9IE1hdGgubWF4KG8sIHIuc2VyaWVzQ2FuZGxlSFtkXVtnXSksIG8gPSBNYXRoLm1heChvLCByLnNlcmllc0NhbmRsZUxbZF1bZ10pLCBvID0gTWF0aC5tYXgobywgci5zZXJpZXNDYW5kbGVDW2RdW2ddKSwgImJveFBsb3QiID09PSB0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUgJiYgKG8gPSBNYXRoLm1heChvLCByLnNlcmllc0NhbmRsZU1bZF1bZ10pKSksICFzLnNlcmllc1tkXS50eXBlIHx8ICJjYW5kbGVzdGljayIgPT09IHMuc2VyaWVzW2RdLnR5cGUgJiYgImJveFBsb3QiID09PSBzLnNlcmllc1tkXS50eXBlIHx8IChvID0gTWF0aC5tYXgobywgci5zZXJpZXNbZF1bZ10pLCBlID0gTWF0aC5taW4oZSwgci5zZXJpZXNbZF1bZ10pKSwgaSA9IG8pLCByLnNlcmllc0dvYWxzW2RdICYmIHIuc2VyaWVzR29hbHNbZF1bZ10gJiYgQXJyYXkuaXNBcnJheShyLnNlcmllc0dvYWxzW2RdW2ddKSAmJiByLnNlcmllc0dvYWxzW2RdW2ddLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICE9PSBOdW1iZXIuTUlOX1ZBTFVFICYmIChuID0gTWF0aC5taW4obiwgdC52YWx1ZSksIGUgPSBuKSwgbyA9IE1hdGgubWF4KG8sIHQudmFsdWUpLCBpID0gbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB4LmlzRmxvYXQodSkgJiYgKHUgPSB4Lm5vRXhwb25lbnRzKHUpLCByLnlWYWx1ZURlY2ltYWwgPSBNYXRoLm1heChyLnlWYWx1ZURlY2ltYWwsIHUudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzFdLmxlbmd0aCkpLCBuID4gaFtkXVtnXSAmJiBoW2RdW2ddIDwgMCAmJiAobiA9IGhbZF1bZ10pKSA6IHIuaGFzTnVsbFZhbHVlcyA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJyYW5nZUJhciIgPT09IHMuY2hhcnQudHlwZSAmJiByLnNlcmllc1JhbmdlU3RhcnQubGVuZ3RoICYmIHIuaXNCYXJIb3Jpem9udGFsICYmIChuID0gZSksICJiYXIiID09PSBzLmNoYXJ0LnR5cGUgJiYgKG4gPCAwICYmIG8gPCAwICYmIChvID0gMCksIG4gPT09IE51bWJlci5NSU5fVkFMVUUgJiYgKG4gPSAwKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluWTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4WTogbywKICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXN0WTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdFk6IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFlSYW5nZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudy5jb25maWc7CiAgICAgICAgICAgICAgICAgICAgdC5tYXhZID0gLU51bWJlci5NQVhfVkFMVUUsIHQubWluWSA9IE51bWJlci5NSU5fVkFMVUU7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBOdW1iZXIuTUFYX1ZBTFVFOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmlzTXVsdGlwbGVZQXhpcykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCB0LnNlcmllcy5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmdldE1pbllNYXhZKGEsIGksIG51bGwsIGEgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubWluWUFyci5wdXNoKHMubWluWSksIHQubWF4WUFyci5wdXNoKHMubWF4WSksIGkgPSBzLmxvd2VzdFkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5nZXRNaW5ZTWF4WSgwLCBpLCBudWxsLCB0LnNlcmllcy5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lm1pblkgPSByLm1pblksIHQubWF4WSA9IHIubWF4WSwgaSA9IHIubG93ZXN0WSwgZS5jaGFydC5zdGFja2VkICYmIHRoaXMuX3NldFN0YWNrZWRNaW5NYXgoKSwgKCJsaW5lIiA9PT0gZS5jaGFydC50eXBlIHx8ICJhcmVhIiA9PT0gZS5jaGFydC50eXBlIHx8ICJjYW5kbGVzdGljayIgPT09IGUuY2hhcnQudHlwZSB8fCAiYm94UGxvdCIgPT09IGUuY2hhcnQudHlwZSB8fCAicmFuZ2VCYXIiID09PSBlLmNoYXJ0LnR5cGUgJiYgIXQuaXNCYXJIb3Jpem9udGFsKSAmJiB0Lm1pblkgPT09IE51bWJlci5NSU5fVkFMVUUgJiYgaSAhPT0gLU51bWJlci5NQVhfVkFMVUUgJiYgaSAhPT0gdC5tYXhZKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdC5tYXhZIC0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgKGkgPj0gMCAmJiBpIDw9IDEwIHx8IHZvaWQgMCAhPT0gZS55YXhpc1swXS5taW4gfHwgdm9pZCAwICE9PSBlLnlheGlzWzBdLm1heCkgJiYgKG8gPSAwKSwgdC5taW5ZID0gaSAtIDUgKiBvIC8gMTAwLCBpID4gMCAmJiB0Lm1pblkgPCAwICYmICh0Lm1pblkgPSAwKSwgdC5tYXhZID0gdC5tYXhZICsgNSAqIG8gLyAxMDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGUueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLm1heCAmJiAoIm51bWJlciIgPT0gdHlwZW9mIGUubWF4ID8gdC5tYXhZQXJyW2ldID0gZS5tYXggOiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLm1heCAmJiAodC5tYXhZQXJyW2ldID0gZS5tYXgodC5pc011bHRpcGxlWUF4aXMgPyB0Lm1heFlBcnJbaV0gOiB0Lm1heFkpKSwgdC5tYXhZID0gdC5tYXhZQXJyW2ldKSwgdm9pZCAwICE9PSBlLm1pbiAmJiAoIm51bWJlciIgPT0gdHlwZW9mIGUubWluID8gdC5taW5ZQXJyW2ldID0gZS5taW4gOiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLm1pbiAmJiAodC5taW5ZQXJyW2ldID0gZS5taW4odC5pc011bHRpcGxlWUF4aXMgPyB0Lm1pbllBcnJbaV0gPT09IE51bWJlci5NSU5fVkFMVUUgPyAwIDogdC5taW5ZQXJyW2ldIDogdC5taW5ZKSksIHQubWluWSA9IHQubWluWUFycltpXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0LmlzQmFySG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgICAgICAgICBbIm1pbiIsICJtYXgiXS5mb3JFYWNoKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUueGF4aXNbaV0gJiYgIm51bWJlciIgPT0gdHlwZW9mIGUueGF4aXNbaV0gJiYgKCJtaW4iID09PSBpID8gdC5taW5ZID0gZS54YXhpc1tpXSA6IHQubWF4WSA9IGUueGF4aXNbaV0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pc011bHRpcGxlWUF4aXMgPyAodGhpcy5zY2FsZXMuc2V0TXVsdGlwbGVZU2NhbGVzKCksIHQubWluWSA9IGksIHQueUF4aXNTY2FsZS5mb3JFYWNoKChmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQubWluWUFycltpXSA9IGUubmljZU1pbiwgdC5tYXhZQXJyW2ldID0gZS5uaWNlTWF4CiAgICAgICAgICAgICAgICAgICAgfSkpKSA6ICh0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLCB0Lm1pblksIHQubWF4WSksIHQubWluWSA9IHQueUF4aXNTY2FsZVswXS5uaWNlTWluLCB0Lm1heFkgPSB0LnlBeGlzU2NhbGVbMF0ubmljZU1heCwgdC5taW5ZQXJyWzBdID0gdC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sIHQubWF4WUFyclswXSA9IHQueUF4aXNTY2FsZVswXS5uaWNlTWF4KSwgewogICAgICAgICAgICAgICAgICAgICAgICBtaW5ZOiB0Lm1pblksCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFk6IHQubWF4WSwKICAgICAgICAgICAgICAgICAgICAgICAgbWluWUFycjogdC5taW5ZQXJyLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhZQXJyOiB0Lm1heFlBcnIsCiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGlzU2NhbGU6IHQueUF4aXNTY2FsZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0WFJhbmdlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJudW1lcmljIiA9PT0gZS54YXhpcy50eXBlIHx8ICJkYXRldGltZSIgPT09IGUueGF4aXMudHlwZSB8fCAiY2F0ZWdvcnkiID09PSBlLnhheGlzLnR5cGUgJiYgIXQubm9MYWJlbHNQcm92aWRlZCB8fCB0Lm5vTGFiZWxzUHJvdmlkZWQgfHwgdC5pc1hOdW1lcmljOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmlzWE51bWVyaWMgJiYgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IHQuc2VyaWVzLmxlbmd0aDsgZSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmxhYmVsc1tlXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0LmxhYmVsc1tlXS5sZW5ndGg7IGkrKykgbnVsbCAhPT0gdC5sYWJlbHNbZV1baV0gJiYgeC5pc051bWJlcih0LmxhYmVsc1tlXVtpXSkgJiYgKHQubWF4WCA9IE1hdGgubWF4KHQubWF4WCwgdC5sYWJlbHNbZV1baV0pLCB0LmluaXRpYWxNYXhYID0gTWF0aC5tYXgodC5tYXhYLCB0LmxhYmVsc1tlXVtpXSksIHQubWluWCA9IE1hdGgubWluKHQubWluWCwgdC5sYWJlbHNbZV1baV0pLCB0LmluaXRpYWxNaW5YID0gTWF0aC5taW4odC5taW5YLCB0LmxhYmVsc1tlXVtpXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwgdC5ub0xhYmVsc1Byb3ZpZGVkICYmIDAgPT09IGUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGggJiYgKHQubWF4WCA9IHQubGFiZWxzW3QubGFiZWxzLmxlbmd0aCAtIDFdLCB0LmluaXRpYWxNYXhYID0gdC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoIC0gMV0sIHQubWluWCA9IDEsIHQuaW5pdGlhbE1pblggPSAxKSwgdC5pc1hOdW1lcmljIHx8IHQubm9MYWJlbHNQcm92aWRlZCB8fCB0LmRhdGFGb3JtYXRYTnVtZXJpYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZS54YXhpcy50aWNrQW1vdW50ID8gKGEgPSBNYXRoLnJvdW5kKHQuc3ZnV2lkdGggLyAxNTApLCAibnVtZXJpYyIgPT09IGUueGF4aXMudHlwZSAmJiB0LmRhdGFQb2ludHMgPCAzMCAmJiAoYSA9IHQuZGF0YVBvaW50cyAtIDEpLCBhID4gdC5kYXRhUG9pbnRzICYmIDAgIT09IHQuZGF0YVBvaW50cyAmJiAoYSA9IHQuZGF0YVBvaW50cyAtIDEpKSA6ICJkYXRhUG9pbnRzIiA9PT0gZS54YXhpcy50aWNrQW1vdW50ID8gKHQuc2VyaWVzLmxlbmd0aCA+IDEgJiYgKGEgPSB0LnNlcmllc1t0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCAtIDEpLCB0LmlzWE51bWVyaWMgJiYgKGEgPSB0Lm1heFggLSB0Lm1pblggLSAxKSkgOiBhID0gZS54YXhpcy50aWNrQW1vdW50LCB0LnhUaWNrQW1vdW50ID0gYSwgdm9pZCAwICE9PSBlLnhheGlzLm1heCAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZS54YXhpcy5tYXggJiYgKHQubWF4WCA9IGUueGF4aXMubWF4KSwgdm9pZCAwICE9PSBlLnhheGlzLm1pbiAmJiAibnVtYmVyIiA9PSB0eXBlb2YgZS54YXhpcy5taW4gJiYgKHQubWluWCA9IGUueGF4aXMubWluKSwgdm9pZCAwICE9PSBlLnhheGlzLnJhbmdlICYmICh0Lm1pblggPSB0Lm1heFggLSBlLnhheGlzLnJhbmdlKSwgdC5taW5YICE9PSBOdW1iZXIuTUFYX1ZBTFVFICYmIHQubWF4WCAhPT0gLU51bWJlci5NQVhfVkFMVUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgJiYgIXQuZGF0YUZvcm1hdFhOdW1lcmljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IFtdLCByID0gdC5taW5YIC0gMTsgciA8IHQubWF4WDsgcisrKSBzLnB1c2gociArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQueEF4aXNTY2FsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWluOiBzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWNlTWF4OiBzW3MubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC54QXhpc1NjYWxlID0gdGhpcy5zY2FsZXMuc2V0WFNjYWxlKHQubWluWCwgdC5tYXhYKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0LnhBeGlzU2NhbGUgPSB0aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLCBhLCBhKSwgdC5ub0xhYmVsc1Byb3ZpZGVkICYmIHQubGFiZWxzLmxlbmd0aCA+IDAgJiYgKHQueEF4aXNTY2FsZSA9IHRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsIHQubGFiZWxzLmxlbmd0aCwgYSAtIDEpLCB0LnNlcmllc1ggPSB0LmxhYmVscy5zbGljZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSAmJiAodC5sYWJlbHMgPSB0LnhBeGlzU2NhbGUucmVzdWx0LnNsaWNlKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlzQmFySG9yaXpvbnRhbCAmJiB0LmxhYmVscy5sZW5ndGggJiYgKHQueFRpY2tBbW91bnQgPSB0LmxhYmVscy5sZW5ndGgpLCB0aGlzLl9oYW5kbGVTaW5nbGVEYXRhUG9pbnQoKSwgdGhpcy5fZ2V0TWluWERpZmYoKSwgewogICAgICAgICAgICAgICAgICAgICAgICBtaW5YOiB0Lm1pblgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFg6IHQubWF4WAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0WlJhbmdlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudy5nbG9iYWxzOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmlzRGF0YVhZWikKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCB0LnNlcmllcy5sZW5ndGg7IGUrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQuc2VyaWVzWltlXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQuc2VyaWVzWltlXS5sZW5ndGg7IGkrKykgbnVsbCAhPT0gdC5zZXJpZXNaW2VdW2ldICYmIHguaXNOdW1iZXIodC5zZXJpZXNaW2VdW2ldKSAmJiAodC5tYXhaID0gTWF0aC5tYXgodC5tYXhaLCB0LnNlcmllc1pbZV1baV0pLCB0Lm1pblogPSBNYXRoLm1pbih0Lm1pblosIHQuc2VyaWVzWltlXVtpXSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9oYW5kbGVTaW5nbGVEYXRhUG9pbnQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncuY29uZmlnOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lm1pblggPT09IHQubWF4WCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5ldyBSKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJkYXRldGltZSIgPT09IGUueGF4aXMudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLmdldERhdGUodC5taW5YKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDID8gYS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpIC0gMikgOiBhLnNldERhdGUoYS5nZXREYXRlKCkgLSAyKSwgdC5taW5YID0gbmV3IERhdGUoYSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBpLmdldERhdGUodC5tYXhYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDID8gcy5zZXRVVENEYXRlKHMuZ2V0VVRDRGF0ZSgpICsgMikgOiBzLnNldERhdGUocy5nZXREYXRlKCkgKyAyKSwgdC5tYXhYID0gbmV3IERhdGUocykuZ2V0VGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSgibnVtZXJpYyIgPT09IGUueGF4aXMudHlwZSB8fCAiY2F0ZWdvcnkiID09PSBlLnhheGlzLnR5cGUgJiYgIXQubm9MYWJlbHNQcm92aWRlZCkgJiYgKHQubWluWCA9IHQubWluWCAtIDIsIHQuaW5pdGlhbE1pblggPSB0Lm1pblgsIHQubWF4WCA9IHQubWF4WCArIDIsIHQuaW5pdGlhbE1heFggPSB0Lm1heFgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZ2V0TWluWERpZmYiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHM7CiAgICAgICAgICAgICAgICAgICAgdC5pc1hOdW1lcmljICYmIHQuc2VyaWVzWC5mb3JFYWNoKChmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IGUubGVuZ3RoICYmIGUucHVzaCh0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XVt0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGggLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBhLnNvcnQoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IC0gZQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGEuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlIC0gYVtpIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA+IDAgJiYgKHQubWluWERpZmYgPSBNYXRoLm1pbihzLCB0Lm1pblhEaWZmKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAxICE9PSB0LmRhdGFQb2ludHMgJiYgdC5taW5YRGlmZiAhPT0gTnVtYmVyLk1BWF9WQUxVRSB8fCAodC5taW5YRGlmZiA9IC41KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfc2V0U3RhY2tlZE1pbk1heCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2VyaWVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCB0LnNlcmllc1t0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDsgYSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDAsIHIgPSAwLCBvID0gMDsgbyA8IHQuc2VyaWVzLmxlbmd0aDsgbysrKSBudWxsICE9PSB0LnNlcmllc1tvXVthXSAmJiB4LmlzTnVtYmVyKHQuc2VyaWVzW29dW2FdKSAmJiAodC5zZXJpZXNbb11bYV0gPiAwID8gcyA9IHMgKyBwYXJzZUZsb2F0KHQuc2VyaWVzW29dW2FdKSArIDFlLTQgOiByICs9IHBhcnNlRmxvYXQodC5zZXJpZXNbb11bYV0pKSwgbyA9PT0gdC5zZXJpZXMubGVuZ3RoIC0gMSAmJiAoZS5wdXNoKHMpLCBpLnB1c2gocikpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgdC5tYXhZID0gTWF0aC5tYXgodC5tYXhZLCBlW25dKSwgdC5taW5ZID0gTWF0aC5taW4odC5taW5ZLCBpW25dKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgJCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53OwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICB0aGlzLnhheGlzRm9udFNpemUgPSBpLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsIHRoaXMuYXhpc0ZvbnRGYW1pbHkgPSBpLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSwgdGhpcy54YXhpc0ZvcmVDb2xvcnMgPSBpLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLCB0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsID0gImJhciIgPT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgJiYgaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsIHRoaXMueEF4aXNvZmZYID0gMCwgImJvdHRvbSIgPT09IGkuY29uZmlnLnhheGlzLnBvc2l0aW9uICYmICh0aGlzLnhBeGlzb2ZmWCA9IGkuZ2xvYmFscy5ncmlkSGVpZ2h0KSwgdGhpcy5kcmF3bkxhYmVscyA9IFtdLCB0aGlzLmF4ZXNVdGlscyA9IG5ldyBHKGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXdZYXhpcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzLmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzLmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy15YXhpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICJ0cmFuc2xhdGUoIiArIGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0gKyAiLCAwKSIKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4odCkpIHJldHVybiBsOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gYS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIgogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGwuYWRkKGgpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gaS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aCAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpLmdsb2JhbHMuZ3JpZEhlaWdodCAvIGMsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBpLmdsb2JhbHMudHJhbnNsYXRlWSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gaS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHModCwgZik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSAiIjsKICAgICAgICAgICAgICAgICAgICBpZiAoaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnNob3cpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSBmdW5jdGlvbihsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBmW2xdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB1KHgsIGwsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUgJiYgMCAhPT0gaS5jb25maWcueWF4aXMubGVuZ3RoICYmIChiICo9IC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGUuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHMuY29sb3JzLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGEuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGcgKyBjIC8gMTAgKyBpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMub2Zmc2V0WSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogaS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUgPyAic3RhcnQiIDogImVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5tYXhXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVDb2xvcjogQXJyYXkuaXNBcnJheSh2KSA/IHZbbF0gOiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQbGFpblRleHQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsICIgKyBzLmNzc0NsYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPT09IGMgJiYgKHAgPSBtKSwgaC5hZGQobSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLCAidGl0bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeS50ZXh0Q29udGVudCA9IEFycmF5LmlzQXJyYXkoeCkgPyB4LmpvaW4oIiAiKSA6IHgsIG0ubm9kZS5hcHBlbmRDaGlsZCh5KSwgMCAhPT0gaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGEucm90YXRlQXJvdW5kQ2VudGVyKHAubm9kZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gYS5yb3RhdGVBcm91bmRDZW50ZXIobS5ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5ub2RlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInJvdGF0ZSgiLmNvbmNhdChpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlLCAiICIpLmNvbmNhdCh3LngsICIgIikuY29uY2F0KGsueSwgIikiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyArPSBkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiID0gYzsgYiA+PSAwOyBiLS0pIHgoYik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IGEuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy15YXhpcy10aXRsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlICYmICh5ID0gaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gYS5kcmF3VGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaS5nbG9iYWxzLmdyaWRIZWlnaHQgLyAyICsgaS5nbG9iYWxzLnRyYW5zbGF0ZVkgKyBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgIiArIGkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmNzc0NsYXNzCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2LmFkZCh3KSwgbC5hZGQodikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBpLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBBID0gMzEgKyBrLm9mZnNldFg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlICYmIChBID0gLTMxIC0gay5vZmZzZXRYKSwgay5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBTID0gYS5kcmF3TGluZShBLCBpLmdsb2JhbHMudHJhbnNsYXRlWSArIGsub2Zmc2V0WSAtIDIsIEEsIGkuZ2xvYmFscy5ncmlkSGVpZ2h0ICsgaS5nbG9iYWxzLnRyYW5zbGF0ZVkgKyBrLm9mZnNldFkgKyAyLCBrLmNvbG9yLCAwLCBrLndpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbC5hZGQoUykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcy5zaG93ICYmIHRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKEEsIGMsIGssIGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcywgdCwgZCwgbCksIGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1lheGlzSW52ZXJzZWQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXhheGlzIGFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICJ0cmFuc2xhdGUoIi5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCwgIiwgIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksICIpIikKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgYS5hZGQocyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuZ2xvYmFscy5ncmlkV2lkdGggLyByICsgLjEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBvICsgZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzOwogICAgICAgICAgICAgICAgICAgIGMubGVuZ3RoID4gMCAmJiAodGhpcy54YXhpc0xhYmVscyA9IGMuc2xpY2UoKSwgciA9IChoID0gYy5zbGljZSgpKS5sZW5ndGgpLCBoID0gdGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LCBoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IGQgPyAwIDogcjsgZCA/IGcgPCBkIDogZyA+PSAwOyBkID8gZysrIDogZy0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGhbZ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbCh1LCBnLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gZS5nbG9iYWxzLmdyaWRXaWR0aCArIGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsIC0gKG4gLSBvICsgZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmF4ZXNVdGlscy5nZXRMYWJlbChoLCBjLCBmLCBnLCB0aGlzLmRyYXduTGFiZWxzLCB0aGlzLnhheGlzRm9udFNpemUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBwLngsIHUgPSBwLnRleHQsIHRoaXMuZHJhd25MYWJlbHMucHVzaChwLnRleHQpLCAwID09PSBnICYmIGUuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsICYmICh1ID0gIiIpLCBnID09PSBoLmxlbmd0aCAtIDEgJiYgZS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCAmJiAodSA9ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBpLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHRoaXMueEF4aXNvZmZYICsgZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkgKyAzMCAtICgidG9wIiA9PT0gZS5jb25maWcueGF4aXMucG9zaXRpb24gPyBlLmdsb2JhbHMueEF4aXNIZWlnaHQgKyBlLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0IC0gMiA6IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogIm1pZGRsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKSA/IHRoaXMueGF4aXNGb3JlQ29sb3JzW3RdIDogdGhpcy54YXhpc0ZvcmVDb2xvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHRoaXMueGF4aXNGb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB0aGlzLnhheGlzRm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYWluVGV4dDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6ICJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsICIgKyBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hZGQoeCksIHgudHNwYW4odSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsICJ0aXRsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi50ZXh0Q29udGVudCA9IHUsIHgubm9kZS5hcHBlbmRDaGlsZChiKSwgbiArPSBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnZlcnNlZFlBeGlzVGl0bGVUZXh0KGEpLCB0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIoYSksIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaW52ZXJzZWRZQXhpc0JvcmRlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5jb25maWcueGF4aXMuYXhpc0JvcmRlcjsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgImJhciIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgJiYgZS5nbG9iYWxzLmlzWE51bWVyaWMgJiYgKHMgLT0gMTUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwgKyBzICsgYS5vZmZzZXRYLCB0aGlzLnhBeGlzb2ZmWCwgZS5nbG9iYWxzLmdyaWRXaWR0aCwgdGhpcy54QXhpc29mZlgsIGEuY29sb3IsIDAsIGEuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGQocikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImludmVyc2VkWUF4aXNUaXRsZVRleHQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmRyYXdUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBlLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMiArIGUuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdGhpcy54QXhpc29mZlggKyBwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkgKyBwYXJzZUZsb2F0KGUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSArIGUuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkgKyAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCAiICsgZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBhLmFkZChzKSwgdC5hZGQoYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInlBeGlzVGl0bGVSb3RhdGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiIC5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nIi5jb25jYXQodCwgIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWciKSk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gbyAmJiAocyA9IG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteWF4aXNbcmVsPSciLmNvbmNhdCh0LCAiJ10gLmFwZXhjaGFydHMteWF4aXMtdGl0bGUgdGV4dCIpKTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbiAmJiAociA9IG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLCBudWxsICE9PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy54UGFkZGluZ0ZvcllBeGlzVGl0bGUodCwgcywgciwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uc2V0QXR0cmlidXRlKCJ4IiwgbC54UG9zIC0gKGUgPyAxMCA6IDApKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGEucm90YXRlQXJvdW5kQ2VudGVyKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBuLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInJvdGF0ZSgiLmNvbmNhdChlID8gLTEgKiBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUgOiBpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsICIgIikuY29uY2F0KGgueCwgIiAiKS5jb25jYXQoaC55LCAiKSIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAieFBhZGRpbmdGb3JZQXhpc1RpdGxlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDEwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHMuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQgfHwgdCA8IDAgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHhQb3M6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGQ6IDAKICAgICAgICAgICAgICAgICAgICB9IDogKGEgPyAobyA9IGUud2lkdGggKyBzLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYICsgaS53aWR0aCAvIDIgKyBuIC8gMiwgMCA9PT0gKHIgKz0gMSkgJiYgKG8gLT0gbiAvIDIpKSA6IChvID0gLTEgKiBlLndpZHRoICsgcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCArIG4gLyAyICsgaS53aWR0aCAvIDIsIHMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgKG4gPSAyNSwgbyA9IC0xICogZS53aWR0aCAtIHMuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFggLSBuKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeFBvczogbywKICAgICAgICAgICAgICAgICAgICAgICAgcGFkZDogbgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFlBeGlzWFBvc2l0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IDE4LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gMTsKICAgICAgICAgICAgICAgICAgICBpLmNvbmZpZy55YXhpcy5sZW5ndGggPiAxICYmICh0aGlzLm11bHRpcGxlWXMgPSAhMCksIGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24obiwgbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihsKSA+IC0xIHx8ICFuLnNob3cgfHwgbi5mbG9hdGluZyB8fCAwID09PSB0W2xdLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRbbF0ud2lkdGggKyBlW2xdLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBuLm9wcG9zaXRlID8gaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCA/IChzID0gaS5nbG9iYWxzLmdyaWRXaWR0aCArIGkuZ2xvYmFscy50cmFuc2xhdGVYIC0gMSwgaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXSA9IHMgLSBuLmxhYmVscy5vZmZzZXRYKSA6IChzID0gaS5nbG9iYWxzLmdyaWRXaWR0aCArIGkuZ2xvYmFscy50cmFuc2xhdGVYICsgbywgaCB8fCAobyA9IG8gKyBjICsgMjApLCBpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdID0gcyAtIG4ubGFiZWxzLm9mZnNldFggKyAyMCkgOiAoYSA9IGkuZ2xvYmFscy50cmFuc2xhdGVYIC0gciwgaCB8fCAociA9IHIgKyBjICsgMjApLCBpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdID0gYSArIG4ubGFiZWxzLm9mZnNldFgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFlBeGlzVGV4dEFsaWdubWVudHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYXBleGNoYXJ0cy15YXhpcyIpOwogICAgICAgICAgICAgICAgICAgIChlID0geC5saXN0VG9BcnJheShlKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuY29uZmlnLnlheGlzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSAmJiB2b2lkIDAgIT09IGEubGFiZWxzLmFsaWduKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nIi5jb25jYXQoaSwgIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWciKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nIi5jb25jYXQoaSwgIiddIC5hcGV4Y2hhcnRzLXlheGlzLWxhYmVsIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHgubGlzdFRvQXJyYXkocik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVmdCIgPT09IGEubGFiZWxzLmFsaWduID8gKHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsICJzdGFydCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGEub3Bwb3NpdGUgfHwgcy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoLSIuY29uY2F0KG8ud2lkdGgsICIsIDApIikpKSA6ICJjZW50ZXIiID09PSBhLmxhYmVscy5hbGlnbiA/IChyLmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiLCAibWlkZGxlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIi5jb25jYXQoby53aWR0aCAvIDIgKiAoYS5vcHBvc2l0ZSA/IDEgOiAtMSksICIsIDApIikpKSA6ICJyaWdodCIgPT09IGEubGFiZWxzLmFsaWduICYmIChyLmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiLCAiZW5kIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYS5vcHBvc2l0ZSAmJiBzLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiLmNvbmNhdChvLndpZHRoLCAiLCAwKSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgSiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53LCB0aGlzLmRvY3VtZW50RXZlbnQgPSB4LmJpbmQodGhpcy5kb2N1bWVudEV2ZW50LCB0aGlzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRFdmVudExpc3RlbmVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSA/IGkuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKSA6IGkuZ2xvYmFscy5ldmVudHNbdF0gPSBbZV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmIChpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5nbG9iYWxzLmV2ZW50c1t0XS5pbmRleE9mKGUpOyAtIDEgIT09IGEgJiYgaS5nbG9iYWxzLmV2ZW50c1t0XS5zcGxpY2UoYSwgMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImZpcmVFdmVudCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmIChpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5sZW5ndGggfHwgKGUgPSBbXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBpLmdsb2JhbHMuZXZlbnRzW3RdLCBzID0gYS5sZW5ndGgsIHIgPSAwOyByIDwgczsgcisrKSBhW3JdLmFwcGx5KG51bGwsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXR1cEV2ZW50SGFuZGxlcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihlLmdsb2JhbHMuY2hhcnRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYS5hZGRFdmVudExpc3RlbmVyKHQsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogZS5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IGUuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3VzZW1vdmUiID09PSB0LnR5cGUgfHwgInRvdWNobW92ZSIgPT09IHQudHlwZSA/ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUgJiYgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTW92ZSh0LCBpLCBhKSA6ICJtb3VzZWxlYXZlIiA9PT0gdC50eXBlIHx8ICJ0b3VjaGxlYXZlIiA9PT0gdC50eXBlID8gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUgJiYgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUodCwgaSwgYSkgOiAoIm1vdXNldXAiID09PSB0LnR5cGUgJiYgMSA9PT0gdC53aGljaCB8fCAidG91Y2hlbmQiID09PSB0LnR5cGUpICYmICgiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2sgJiYgZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrKHQsIGksIGEpLCBpLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJjbGljayIsIFt0LCBpLCBhXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuZG9tLmJhc2VFbC5hZGRFdmVudExpc3RlbmVyKGksIHQuZG9jdW1lbnRFdmVudCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkb2N1bWVudEV2ZW50IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnRhcmdldC5jbGFzc05hbWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJjbGljayIgPT09IHQudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLW1lbnUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYSAmJiBhLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1tZW51LW9wZW4iKSAmJiAiYXBleGNoYXJ0cy1tZW51LWljb24iICE9PSBpICYmIGEuY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1tZW51LW9wZW4iKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuY2xpZW50WCA9ICJ0b3VjaG1vdmUiID09PSB0LnR5cGUgPyB0LnRvdWNoZXNbMF0uY2xpZW50WCA6IHQuY2xpZW50WCwgZS5nbG9iYWxzLmNsaWVudFkgPSAidG91Y2htb3ZlIiA9PT0gdC50eXBlID8gdC50b3VjaGVzWzBdLmNsaWVudFkgOiB0LmNsaWVudFkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXRDdXJyZW50TG9jYWxlVmFsdWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXM7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LkFwZXguY2hhcnQgJiYgd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyAmJiB3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzLmxlbmd0aCA+IDAgJiYgKGUgPSB0aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXMuY29uY2F0KHdpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm5hbWUgPT09IHQKICAgICAgICAgICAgICAgICAgICB9KSlbMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpKSB0aHJvdyBuZXcgRXJyb3IoIldyb25nIGxvY2FsZSBuYW1lIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIGNvcnJlY3QgbG9jYWxlIG5hbWUgaW4gb3B0aW9ucyIpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0geC5leHRlbmQoQywgaSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53Lmdsb2JhbHMubG9jYWxlID0gYS5vcHRpb25zCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBLID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0F4aXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSwgcyA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBfKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyAkKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBzLmF4aXNDaGFydHMgJiYgInJhZGFyIiAhPT0gdCAmJiAocy5pc0Jhckhvcml6b250YWwgPyAoYSA9IG4uZHJhd1lheGlzSW52ZXJzZWQoMCksIGkgPSBvLmRyYXdYYXhpc0ludmVyc2VkKDApLCBzLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksIHMuZG9tLmVsR3JhcGhpY2FsLmFkZChhKSkgOiAoaSA9IG8uZHJhd1hheGlzKCksIHMuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSwgci55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLTEgPT09IHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkgJiYgKGEgPSBuLmRyYXdZYXhpcyhlKSwgcy5kb20uUGFwZXIuYWRkKGEpKQogICAgICAgICAgICAgICAgICAgIH0pKSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICB0dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXdYQ3Jvc3NoYWlycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgdih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuZ3JhZGllbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmRyb3BTaGFkb3csCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGEuY29sb3JGcm9tLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYS5jb2xvclRvLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5vcGFjaXR5RnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGEub3BhY2l0eVRvLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gYS5zdG9wcywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMuZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHMubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHMudG9wLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gcy5ibHVyLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gcy5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHMub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5jb2xvcjsKICAgICAgICAgICAgICAgICAgICBpZiAodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJncmFkaWVudCIgPT09IHIgJiYgKHkgPSBlLmRyYXdHcmFkaWVudCgidmVydGljYWwiLCBvLCBuLCBsLCBoLCBudWxsLCBjLCBudWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZS5kcmF3UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAxID09PSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoICYmICh3ID0gZS5kcmF3TGluZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSB0Lmdsb2JhbHMuZ3JpZEhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgKCF4LmlzTnVtYmVyKGspIHx8IGsgPCAwKSAmJiAoayA9IDApOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgQSA9IHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICgheC5pc051bWJlcihBKSB8fCBBIDwgMCkgJiYgKEEgPSAwKSwgdy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy14Y3Jvc3NoYWlycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsbC1vcGFjaXR5IjogdC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5vcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2Utd2lkdGgiOiB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2UtZGFzaGFycmF5IjogdC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuZGFzaEFycmF5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBkICYmICh3ID0gaS5kcm9wU2hhZG93KHcsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVyOiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdZQ3Jvc3NoYWlycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzOwogICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlLmRyYXdMaW5lKC1hLCAwLCB0Lmdsb2JhbHMuZ3JpZFdpZHRoICsgYSwgMCwgaS5zdHJva2UuY29sb3IsIGkuc3Ryb2tlLmRhc2hBcnJheSwgaS5zdHJva2Uud2lkdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBzLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmRyYXdMaW5lKC1hLCAwLCB0Lmdsb2JhbHMuZ3JpZFdpZHRoICsgYSwgMCwgaS5zdHJva2UuY29sb3IsIDAsIDApOwogICAgICAgICAgICAgICAgICAgIHIuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4iCiAgICAgICAgICAgICAgICAgICAgfSksIHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBldCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImNoZWNrUmVzcG9uc2l2ZUNvbmZpZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY29uZmlnOwogICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBhLnJlc3BvbnNpdmUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYS5yZXNwb25zaXZlLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuc29ydCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYnJlYWtwb2ludCA+IGUuYnJlYWtwb2ludCA/IDEgOiBlLmJyZWFrcG9pbnQgPiB0LmJyZWFrcG9pbnQgPyAtMSA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnJldmVyc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgTih7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gc1swXS5icmVha3BvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gd2luZG93LmlubmVyV2lkdGggPiAwID8gd2luZG93LmlubmVyV2lkdGggOiBzY3JlZW4ud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gPiBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0geS5leHRlbmRBcnJheVByb3BzKHIsIGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHguZXh0ZW5kKG4sIHQpLCB0ID0geC5leHRlbmQoaS5jb25maWcsIHQpLCBlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBzLmxlbmd0aDsgbCsrKSBvIDwgc1tsXS5icmVha3BvaW50ICYmICh0ID0geS5leHRlbmRBcnJheVByb3BzKHIsIHNbbF0ub3B0aW9ucywgaSksIHQgPSB4LmV4dGVuZChpLmNvbmZpZywgdCksIGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHkuZXh0ZW5kQXJyYXlQcm9wcyhyLCB0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB4LmV4dGVuZChpLmNvbmZpZywgbiksIG8obiA9IHguZXh0ZW5kKG4sIHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugbyh7fSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBOKHQpLmluaXQoewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaXZlT3ZlcnJpZGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy53LmNvbmZpZyA9IGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLmNvbG9ycyA9IFtdLCB0aGlzLncgPSBlLnc7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudzsKICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xvckZuID0gITEsIHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQgPSAidHJlZW1hcCIgPT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgJiYgaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kaXN0cmlidXRlZCB8fCAiaGVhdG1hcCIgPT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgJiYgaS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5kaXN0cmlidXRlZCwgdGhpcy5pc0JhckRpc3RyaWJ1dGVkID0gaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkICYmICgiYmFyIiA9PT0gaS5jb25maWcuY2hhcnQudHlwZSB8fCAicmFuZ2VCYXIiID09PSBpLmNvbmZpZy5jaGFydC50eXBlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRDb2xvcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXREZWZhdWx0Q29sb3JzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgeDsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10aGVtZS0iLmNvbmNhdChlLmNvbmZpZy50aGVtZS5tb2RlKSksIHZvaWQgMCA9PT0gZS5jb25maWcuY29sb3JzID8gZS5nbG9iYWxzLmNvbG9ycyA9IHRoaXMucHJlZGVmaW5lZCgpIDogKGUuZ2xvYmFscy5jb2xvcnMgPSBlLmNvbmZpZy5jb2xvcnMsIEFycmF5LmlzQXJyYXkoZS5jb25maWcuY29sb3JzKSAmJiBlLmNvbmZpZy5jb2xvcnMubGVuZ3RoID4gMCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbmZpZy5jb2xvcnNbMF0gJiYgKGUuZ2xvYmFscy5jb2xvcnMgPSBlLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGUuY29uZmlnLmNvbG9yc1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzIHx8IChzID0gZS5jb25maWcuY29sb3JzWzBdKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgcyA/ICh0LmlzQ29sb3JGbiA9ICEwLCBzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS5nbG9iYWxzLmF4aXNDaGFydHMgPyBlLmdsb2JhbHMuc2VyaWVzW2FdWzBdID8gZS5nbG9iYWxzLnNlcmllc1thXVswXSA6IDAgOiBlLmdsb2JhbHMuc2VyaWVzW2FdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSksIGUuZ2xvYmFscy5zZXJpZXNDb2xvcnMubWFwKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICYmIChlLmdsb2JhbHMuY29sb3JzW2ldID0gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaXNCYXJEaXN0cmlidXRlZCB8fCB0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkKSAmJiAocyA9IGUuZ2xvYmFscy5zZXJpZXNbMF0ubGVuZ3RoICogZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5jb2xvciwgbyA9IDEgLyAocyAvIGUuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVJbnRlbnNpdHkpLCBuID0gZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZVRvLCBsID0gMCwgaCA9IDA7IGggPCBzOyBoKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhcmsiID09PSBuID8gKGMgPSBpLnNoYWRlQ29sb3IoLTEgKiBsLCByKSwgbCArPSBvKSA6IChjID0gaS5zaGFkZUNvbG9yKGwsIHIpLCBsICs9IG8pLCBhLnB1c2goYykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuY29sb3JzID0gYS5zbGljZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBkID0gZS5nbG9iYWxzLmNvbG9ycy5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5jb2xvcnMpOwogICAgICAgICAgICAgICAgICAgIFsiZmlsbCIsICJzdHJva2UiXS5mb3JFYWNoKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZS5jb25maWdbaV0uY29sb3JzID8gZS5nbG9iYWxzW2ldLmNvbG9ycyA9IHQuaXNDb2xvckZuID8gZS5jb25maWcuY29sb3JzIDogZCA6IGUuZ2xvYmFsc1tpXS5jb2xvcnMgPSBlLmNvbmZpZ1tpXS5jb2xvcnMuc2xpY2UoKSwgdC5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzW2ldLmNvbG9ycykKICAgICAgICAgICAgICAgICAgICB9KSksIHZvaWQgMCA9PT0gZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMgPyBlLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMgPSBkIDogZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzID0gZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMuc2xpY2UoKSwgdGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLCA1MCksIHZvaWQgMCA9PT0gZS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMuZmlsbC5jb2xvcnMgPyBlLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycyA9IFsiZGFyayIgPT09IGUuY29uZmlnLnRoZW1lLm1vZGUgPyAiIzQyNDI0MiIgOiAibm9uZSJdIDogZS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMgPSBlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycy5zbGljZSgpLCB0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycywgMjApLCB2b2lkIDAgPT09IGUuY29uZmlnLm1hcmtlcnMuY29sb3JzID8gZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzID0gZCA6IGUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyA9IGUuY29uZmlnLm1hcmtlcnMuY29sb3JzLnNsaWNlKCksIHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicHVzaEV4dHJhQ29sb3JzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlIHx8IGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBpICYmIChpID0gdGhpcy5pc0JhckRpc3RyaWJ1dGVkIHx8IHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQgfHwgImhlYXRtYXAiID09PSBhLmNvbmZpZy5jaGFydC50eXBlICYmIGEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5pbnZlcnNlKSwgaSAmJiBhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCAmJiAocyA9IGEuZ2xvYmFscy5zZXJpZXNbYS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCAqIGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSwgdC5sZW5ndGggPCBzKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gcyAtIHQubGVuZ3RoLCBvID0gMDsgbyA8IHI7IG8rKykgdC5wdXNoKHRbb10pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInVwZGF0ZVRoZW1lT3B0aW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQuY2hhcnQgPSB0LmNoYXJ0IHx8IHt9LCB0LnRvb2x0aXAgPSB0LnRvb2x0aXAgfHwge307CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnRoZW1lLm1vZGUgfHwgImxpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQudGhlbWUucGFsZXR0ZSA/IHQudGhlbWUucGFsZXR0ZSA6ICJkYXJrIiA9PT0gZSA/ICJwYWxldHRlNCIgOiAicGFsZXR0ZTEiLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jaGFydC5mb3JlQ29sb3IgPyB0LmNoYXJ0LmZvcmVDb2xvciA6ICJkYXJrIiA9PT0gZSA/ICIjZjZmN2Y4IiA6ICIjMzczZDNmIjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50b29sdGlwLnRoZW1lID0gZSwgdC5jaGFydC5mb3JlQ29sb3IgPSBhLCB0LnRoZW1lLnBhbGV0dGUgPSBpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInByZWRlZmluZWQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy53LmNvbmZpZy50aGVtZS5wYWxldHRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhbGV0dGUxIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JzID0gWyIjMDA4RkZCIiwgIiMwMEUzOTYiLCAiI0ZFQjAxOSIsICIjRkY0NTYwIiwgIiM3NzVERDAiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYWxldHRlMiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9ycyA9IFsiIzNmNTFiNSIsICIjMDNhOWY0IiwgIiM0Y2FmNTAiLCAiI2Y5Y2UxZCIsICIjRkY5ODAwIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGFsZXR0ZTMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvcnMgPSBbIiMzM2IyZGYiLCAiIzU0NkU3QSIsICIjZDQ1MjZlIiwgIiMxM2Q4YWEiLCAiI0E1OTc4QiJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhbGV0dGU0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JzID0gWyIjNGVjZGM0IiwgIiNjN2Y0NjQiLCAiIzgxRDRGQSIsICIjZmQ2YTZhIiwgIiM1NDZFN0EiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYWxldHRlNSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9ycyA9IFsiIzJiOTA4ZiIsICIjZjlhM2E0IiwgIiM5MGVlN2UiLCAiI2ZhNDQ0MyIsICIjNjlkMmU3Il07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGFsZXR0ZTYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvcnMgPSBbIiM0NDlERDEiLCAiI0Y4NjYyNCIsICIjRUEzNTQ2IiwgIiM2NjJFOUIiLCAiI0M1RDg2RCJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhbGV0dGU3IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JzID0gWyIjRDcyNjNEIiwgIiMxQjk5OEIiLCAiIzJFMjk0RSIsICIjRjQ2MDM2IiwgIiNFMkMwNDQiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwYWxldHRlOCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9ycyA9IFsiIzY2MkU5QiIsICIjRjg2NjI0IiwgIiNGOUM4MEUiLCAiI0VBMzU0NiIsICIjNDNCQ0NEIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGFsZXR0ZTkiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvcnMgPSBbIiM1QzQ3NDIiLCAiI0E1OTc4QiIsICIjOEQ1QjRDIiwgIiM1QTJBMjciLCAiI0M0QkJBRiJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhbGV0dGUxMCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9ycyA9IFsiI0EzMDBENiIsICIjN0QwMkVCIiwgIiM1NjUzRkUiLCAiIzI5ODNGRiIsICIjMDBCMUYyIl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JzID0gWyIjMDA4RkZCIiwgIiMwMEUzOTYiLCAiI0ZFQjAxOSIsICIjRkY0NTYwIiwgIiM3NzVERDAiXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xvcnMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGF0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhdyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3VGl0bGVTdWJ0aXRsZSgidGl0bGUiKSwgdGhpcy5kcmF3VGl0bGVTdWJ0aXRsZSgic3VidGl0bGUiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3VGl0bGVTdWJ0aXRsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gInRpdGxlIiA9PT0gdCA/IGUuY29uZmlnLnRpdGxlIDogZS5jb25maWcuc3VidGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmdsb2JhbHMuc3ZnV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5vZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICByID0gIm1pZGRsZSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJsZWZ0IiA9PT0gaS5hbGlnbiA/IChhID0gMTAsIHIgPSAic3RhcnQiKSA6ICJyaWdodCIgPT09IGkuYWxpZ24gJiYgKGEgPSBlLmdsb2JhbHMuc3ZnV2lkdGggLSAxMCwgciA9ICJlbmQiKSwgYSArPSBpLm9mZnNldFgsIHMgPSBzICsgcGFyc2VJbnQoaS5zdHlsZS5mb250U2l6ZSwgMTApICsgaS5tYXJnaW4gLyAyLCB2b2lkIDAgIT09IGkudGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IG5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGkudGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogaS5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IGkuc3R5bGUuZm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGkuc3R5bGUuZm9udFdlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVDb2xvcjogaS5zdHlsZS5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImFwZXhjaGFydHMtIi5jb25jYXQodCwgIi10ZXh0IikpLCBlLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy53ID0gZS53LCB0aGlzLmRDdHggPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImdldFRpdGxlU3VidGl0bGVDb29yZHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gInRpdGxlIiA9PT0gdCA/IGUuY29uZmlnLnRpdGxlLmZsb2F0aW5nIDogZS5jb25maWcuc3VidGl0bGUuZmxvYXRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy0iLmNvbmNhdCh0LCAiLXRleHQiKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHIgJiYgIXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gby53aWR0aCwgYSA9IGUuZ2xvYmFscy5heGlzQ2hhcnRzID8gby5oZWlnaHQgKyA1IDogby5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0TGVnZW5kc1JlY3QiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtbGVnZW5kIik7CiAgICAgICAgICAgICAgICAgICAgdC5jb25maWcubGVnZW5kLmhlaWdodCB8fCAidG9wIiAhPT0gdC5jb25maWcubGVnZW5kLnBvc2l0aW9uICYmICJib3R0b20iICE9PSB0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24gfHwgKGUuc3R5bGUubWF4SGVpZ2h0ID0gdC5nbG9iYWxzLnN2Z0hlaWdodCAvIDIgKyAicHgiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IE9iamVjdC5hc3NpZ24oe30sIHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGUpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiAhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nICYmIHQuY29uZmlnLmxlZ2VuZC5zaG93ID8gdGhpcy5kQ3R4LmxnUmVjdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogaS54LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBpLnksCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwID09PSBpLmhlaWdodCA/IDAgOiBpLndpZHRoCiAgICAgICAgICAgICAgICAgICAgfSA6IHRoaXMuZEN0eC5sZ1JlY3QgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAKICAgICAgICAgICAgICAgICAgICB9LCAibGVmdCIgIT09IHQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiAmJiAicmlnaHQiICE9PSB0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24gfHwgMS41ICogdGhpcy5kQ3R4LmxnUmVjdC53aWR0aCA+IHQuZ2xvYmFscy5zdmdXaWR0aCAmJiAodGhpcy5kQ3R4LmxnUmVjdC53aWR0aCA9IHQuZ2xvYmFscy5zdmdXaWR0aCAvIDEuNSksIHRoaXMuZEN0eC5sZ1JlY3QKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFyciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdDsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53Lmdsb2JhbHMuaXNNdWx0aUxpbmVYKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5tYXAoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KSA/IHQubGVuZ3RoIDogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHUoYSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVthLmluZGV4T2YocyldCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBydCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5kQ3R4ID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXR4QXhpc0xhYmVsc0Nvb3JkcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAwID09PSBpLmxlbmd0aCAmJiAoaSA9IGUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscyksIGUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhLmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICB9LCBlLmdsb2JhbHMucm90YXRlWExhYmVscyA9ICExCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcyA9ICJsZWZ0IiAhPT0gZS5jb25maWcubGVnZW5kLnBvc2l0aW9uICYmICJyaWdodCIgIT09IGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiB8fCBlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcgPyAwIDogdGhpcy5kQ3R4LmxnUmVjdC53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiAobyA9IHIgPSBlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggPiBlLmxlbmd0aCA/IHQgOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IFYodGhpcy5kQ3R4LmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4ueExhYmVsRm9ybWF0KHMsIHIsIGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXR0ZXI6IG5ldyBSKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvID0gbi54TGFiZWxGb3JtYXQocywgbywgbCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdHRlcjogbmV3IFIodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSksIChlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgJiYgdm9pZCAwID09PSByIHx8ICIiID09PSBTdHJpbmcocikudHJpbSgpKSAmJiAobyA9IHIgPSAiMSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG5ldyBtKHRoaXMuZEN0eC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGguZ2V0VGV4dFJlY3RzKHIsIGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgIT09IG8gJiYgKGQgPSBoLmdldFRleHRSZWN0cyhvLCBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKSwgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGMud2lkdGggPj0gZC53aWR0aCA/IGMud2lkdGggOiBkLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYy5oZWlnaHQgPj0gZC5oZWlnaHQgPyBjLmhlaWdodCA6IGQuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS53aWR0aCAqIGkubGVuZ3RoID4gZS5nbG9iYWxzLnN2Z1dpZHRoIC0gdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcyAtIHRoaXMuZEN0eC55QXhpc1dpZHRoIC0gdGhpcy5kQ3R4LmdyaWRQYWQubGVmdCAtIHRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0ICYmIDAgIT09IGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUgfHwgZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguZ2V0VGV4dFJlY3RzKHQsIGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSwgZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksICJyb3RhdGUoIi5jb25jYXQoZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSwgIiAwIDApIiksICExKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGcociksIHIgIT09IG8gJiYgKGQgPSBnKG8pKSwgdC5oZWlnaHQgPSAoYy5oZWlnaHQgPiBkLmhlaWdodCA/IGMuaGVpZ2h0IDogZC5oZWlnaHQpIC8gMS41LCB0LndpZHRoID0gYy53aWR0aCA+IGQud2lkdGggPyBjLndpZHRoIDogZC53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgPSAhMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLnNob3cgfHwgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdC53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3JkcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmdsb2JhbHMuaGFzR3JvdXBzKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSA9IChudWxsID09PSAodCA9IGUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlKSB8fCB2b2lkIDAgPT09IHQgPyB2b2lkIDAgOiB0LmZvbnRTaXplKSB8fCBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmdsb2JhbHMuZ3JvdXBzLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudGl0bGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICByID0geC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIociwgcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgbSh0aGlzLmRDdHguY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uZ2V0VGV4dFJlY3RzKHIsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciAhPT0gbyAmJiAoaCA9IG4uZ2V0VGV4dFJlY3RzKG8sIGEpKSwgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGwud2lkdGggPj0gaC53aWR0aCA/IGwud2lkdGggOiBoLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGwuaGVpZ2h0ID49IGguaGVpZ2h0ID8gbC5oZWlnaHQgOiBoLmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0sIGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93IHx8IChpID0gewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldHhBeGlzVGl0bGVDb29yZHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5jb25maWcueGF4aXMudGl0bGUudGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyh0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LCB0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhLndpZHRoLCBpID0gYS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHRoaXMuZEN0eC50aW1lc2NhbGVMYWJlbHMgPSBlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgPyAoY29uc29sZS5lcnJvcigiWW91IGhhdmUgcG9zc2libHkgc3VwcGxpZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHN1cHBseSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZSIpLCAwKSA6IHQubGVuZ3RoID4gZS5sZW5ndGggPyB0IDogZQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEuMDUgKiAodCA9IG5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyhhLCBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUpKS53aWR0aCAqIGkubGVuZ3RoID4gZS5nbG9iYWxzLmdyaWRXaWR0aCAmJiAwICE9PSBlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlICYmIChlLmdsb2JhbHMub3ZlcmxhcHBpbmdYTGFiZWxzID0gITApLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICByID0gcy54YXhpcy50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC53aWR0aDsKICAgICAgICAgICAgICAgICAgICBhLnNraXBMYXN0VGltZWxpbmVsYWJlbCA9ICExLCBhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwgPSAhMTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGkuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlICYmIGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAhPT0gYS5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKG4pIHx8IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kQ3R4LnRpbWVzY2FsZUxhYmVscyAmJiBlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuZEN0eC50aW1lc2NhbGVMYWJlbHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1tlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aCAtIDFdLnBvc2l0aW9uICsgbyAvIDEuNzUgLSBlLmRDdHgueUF4aXNXaWR0aFJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4ucG9zaXRpb24gLSBvIC8gMS43NSArIGUuZEN0eC55QXhpc1dpZHRoTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAicmlnaHQiID09PSBpLmNvbmZpZy5sZWdlbmQucG9zaXRpb24gJiYgZS5kQ3R4LmxnUmVjdC53aWR0aCA+IDAgPyBlLmRDdHgubGdSZWN0LndpZHRoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA+IGEuc3ZnV2lkdGggLSBhLnRyYW5zbGF0ZVggLSBjICYmIChhLnNraXBMYXN0VGltZWxpbmVsYWJlbCA9ICEwKSwgaCA8IC0odC5zaG93ICYmICF0LmZsb2F0aW5nIHx8ICJiYXIiICE9PSBzLmNoYXJ0LnR5cGUgJiYgImNhbmRsZXN0aWNrIiAhPT0gcy5jaGFydC50eXBlICYmICJyYW5nZUJhciIgIT09IHMuY2hhcnQudHlwZSAmJiAiYm94UGxvdCIgIT09IHMuY2hhcnQudHlwZSA/IDEwIDogbyAvIDEuNzUpICYmIChhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgImRhdGV0aW1lIiA9PT0gciA/IGUuZEN0eC5ncmlkUGFkLnJpZ2h0IDwgbyAmJiAhYS5yb3RhdGVYTGFiZWxzICYmIChhLnNraXBMYXN0VGltZWxpbmVsYWJlbCA9ICEwKSA6ICJkYXRldGltZSIgIT09IHIgJiYgZS5kQ3R4LmdyaWRQYWQucmlnaHQgPCBvIC8gMiAtIGUuZEN0eC55QXhpc1dpZHRoUmlnaHQgJiYgIWEucm90YXRlWExhYmVscyAmJiAhaS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0gJiYgKCJiZXR3ZWVuIiAhPT0gaS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCB8fCBpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSAmJiAoZS5kQ3R4LnhQYWRSaWdodCA9IG8gLyAyICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBzLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA/IChlLmRDdHguZ3JpZFBhZC5sZWZ0IDwgbyAmJiAoZS5kQ3R4LnhQYWRMZWZ0ID0gbyAvIDIgKyAxKSwgZS5kQ3R4LnhQYWRSaWdodCA9IG8gLyAyICsgMSkgOiBsKHQsIGkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBvdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5kQ3R4ID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXR5QXhpc0xhYmVsc0Nvb3JkcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBHKHRoaXMuZEN0eC5jdHgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmdsb2JhbHMueUF4aXNTY2FsZVtvXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMuaXNZQXhpc0hpZGRlbihvKSAmJiByLmxhYmVscy5zaG93ICYmIHZvaWQgMCAhPT0gci5sYWJlbHMubWluV2lkdGggJiYgKGwgPSByLmxhYmVscy5taW5XaWR0aCksICFzLmlzWUF4aXNIaWRkZW4obykgJiYgci5sYWJlbHMuc2hvdyAmJiBuLnJlc3VsdC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbb10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4ubmljZU1pbiA9PT0gTnVtYmVyLk1JTl9WQUxVRSA/IDAgOiBuLm5pY2VNaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IFN0cmluZyhjKS5sZW5ndGggPiBTdHJpbmcobi5uaWNlTWF4KS5sZW5ndGggPyBjIDogbi5uaWNlTWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBoKGQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZyAmJiAwICE9PSBnLmxlbmd0aCB8fCAoZyA9IGQpLCBlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBlLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGgoZyA9IHguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoZiksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB1ID0gdC5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihnLCBmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBuZXcgbSh0LmRDdHguY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gInJvdGF0ZSgiLmNvbmNhdChyLmxhYmVscy5yb3RhdGUsICIgMCAwKSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBwLmdldFRleHRSZWN0cyhnLCByLmxhYmVscy5zdHlsZS5mb250U2l6ZSwgci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSwgYiwgITEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyAhPT0gdSAmJiAoeSA9IHAuZ2V0VGV4dFJlY3RzKHUsIHIubGFiZWxzLnN0eWxlLmZvbnRTaXplLCByLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LCBiLCAhMSkpLCBpLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAobCA+IHkud2lkdGggfHwgbCA+IHYud2lkdGggPyBsIDogeS53aWR0aCA+IHYud2lkdGggPyB5LndpZHRoIDogdi53aWR0aCkgKyBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogeS5oZWlnaHQgPiB2LmhlaWdodCA/IHkuaGVpZ2h0IDogdi5oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0eUF4aXNUaXRsZUNvb3JkcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gW107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24oZSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaG93ICYmIHZvaWQgMCAhPT0gZS50aXRsZS50ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBtKHQuZEN0eC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAicm90YXRlKCIuY29uY2F0KGUudGl0bGUucm90YXRlLCAiIDAgMCkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5nZXRUZXh0UmVjdHMoZS50aXRsZS50ZXh0LCBlLnRpdGxlLnN0eWxlLmZvbnRTaXplLCBlLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksIHIsICExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG8ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBvLmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRUb3RhbFlBeGlzV2lkdGgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoID4gMSA/IDEwIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBHKHRoaXMuZEN0eC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZnVuY3Rpb24obywgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0LmNvbmZpZy55YXhpc1tuXS5mbG9hdGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ud2lkdGggPiAwICYmICFsID8gKGggPSBvLndpZHRoICsgcywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0Lmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkgPiAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShuKSAmJiAoaCA9IGggLSBvLndpZHRoIC0gcykpIDogaCA9IGwgfHwgci5pc1lBeGlzSGlkZGVuKG4pID8gMCA6IDUsIHQuY29uZmlnLnlheGlzW25dLm9wcG9zaXRlID8gYSArPSBoIDogaSArPSBoLCBlICs9IGgKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5nbG9iYWxzLnlMYWJlbHNDb29yZHMubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8odCwgZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8odCwgZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgIXQuY29uZmlnLnlheGlzWzBdLmZsb2F0aW5nICYmIChlID0gdC5nbG9iYWxzLnlMYWJlbHNDb29yZHNbMF0ud2lkdGggKyB0Lmdsb2JhbHMueVRpdGxlQ29vcmRzWzBdLndpZHRoICsgMTUpLCB0aGlzLmRDdHgueUF4aXNXaWR0aExlZnQgPSBpLCB0aGlzLmRDdHgueUF4aXNXaWR0aFJpZ2h0ID0gYSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMuZEN0eCA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZ2xvYmFscy5ub0RhdGEgfHwgZS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCkgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImJhciIgPT09IHQgfHwgInJhbmdlQmFyIiA9PT0gdCB8fCAiY2FuZGxlc3RpY2siID09PSB0IHx8ICJib3hQbG90IiA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5jb25maWcuY2hhcnQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpKGEpID8gZS5jb25maWcuc2VyaWVzLmxlbmd0aCA6IDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZ2xvYmFscy5jb21ib0JhckNvdW50ID4gMCAmJiAociA9IGUuZ2xvYmFscy5jb21ib0JhckNvdW50KSwgZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQudHlwZSkgJiYgKHIgLT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmNvbmZpZy5jaGFydC5zdGFja2VkICYmIChyID0gMSksIChpKGEpIHx8IGUuZ2xvYmFscy5jb21ib0JhckNvdW50ID4gMCkgJiYgZS5nbG9iYWxzLmlzWE51bWVyaWMgJiYgIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgJiYgciA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8sIG4sIGwgPSBNYXRoLmFicyhlLmdsb2JhbHMuaW5pdGlhbE1heFggLSBlLmdsb2JhbHMuaW5pdGlhbE1pblgpOwogICAgICAgICAgICAgICAgICAgICAgICBsIDw9IDMgJiYgKGwgPSBlLmdsb2JhbHMuZGF0YVBvaW50cyksIG8gPSBsIC8gdCwgZS5nbG9iYWxzLm1pblhEaWZmICYmIGUuZ2xvYmFscy5taW5YRGlmZiAvIG8gPiAwICYmIChuID0gZS5nbG9iYWxzLm1pblhEaWZmIC8gbyksIG4gPiB0IC8gMiAmJiAobiAvPSAyKSwgKHMgPSBuIC8gciAqIHBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwgMTApIC8gMTAwKSA8IDEgJiYgKHMgPSAxKSwgcyA9IHMgLyAociA+IDEgPyAxIDogMS41KSArIDUsIGUuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyA9IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ3JpZFBhZEZvcnRpdGxlU3VidGl0bGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuZEN0eC5pc1NwYXJrbGluZSB8fCAhZS5nbG9iYWxzLmF4aXNDaGFydHMgPyAwIDogMTA7CiAgICAgICAgICAgICAgICAgICAgWyJ0aXRsZSIsICJzdWJ0aXRsZSJdLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLmNvbmZpZ1tpXS50ZXh0ID8gYSArPSBlLmNvbmZpZ1tpXS5tYXJnaW4gOiBhICs9IHQuZEN0eC5pc1NwYXJrbGluZSB8fCAhZS5nbG9iYWxzLmF4aXNDaGFydHMgPyAwIDogNQogICAgICAgICAgICAgICAgICAgIH0pKSwgIWUuY29uZmlnLmxlZ2VuZC5zaG93IHx8ICJib3R0b20iICE9PSBlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24gfHwgZS5jb25maWcubGVnZW5kLmZsb2F0aW5nIHx8IGUuZ2xvYmFscy5heGlzQ2hhcnRzIHx8IChhICs9IDEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuZEN0eC5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInRpdGxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKCJzdWJ0aXRsZSIpOwogICAgICAgICAgICAgICAgICAgIGkuZ3JpZEhlaWdodCA9IGkuZ3JpZEhlaWdodCAtIHMuaGVpZ2h0IC0gci5oZWlnaHQgLSBhLCBpLnRyYW5zbGF0ZVkgPSBpLnRyYW5zbGF0ZVkgKyBzLmhlaWdodCArIHIuaGVpZ2h0ICsgYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV3IEcodGhpcy5kQ3R4LmN0eCk7CiAgICAgICAgICAgICAgICAgICAgaS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC0xICE9PSBpLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YocikgfHwgcy5mbG9hdGluZyB8fCBhLmlzWUF4aXNIaWRkZW4ocikgfHwgKHMub3Bwb3NpdGUgJiYgKGkuZ2xvYmFscy50cmFuc2xhdGVYID0gaS5nbG9iYWxzLnRyYW5zbGF0ZVggLSAoZVtyXS53aWR0aCArIHRbcl0ud2lkdGgpIC0gcGFyc2VJbnQoaS5jb25maWcueWF4aXNbcl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLCAxMCkgLyAxLjIgLSAxMiksIGkuZ2xvYmFscy50cmFuc2xhdGVYIDwgMiAmJiAoaS5nbG9iYWxzLnRyYW5zbGF0ZVggPSAyKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGx0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMubGdSZWN0ID0ge30sIHRoaXMueUF4aXNXaWR0aCA9IDAsIHRoaXMueUF4aXNXaWR0aExlZnQgPSAwLCB0aGlzLnlBeGlzV2lkdGhSaWdodCA9IDAsIHRoaXMueEF4aXNIZWlnaHQgPSAwLCB0aGlzLmlzU3BhcmtsaW5lID0gdGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCwgdGhpcy5kaW1IZWxwZXJzID0gbmV3IHN0KHRoaXMpLCB0aGlzLmRpbVlBeGlzID0gbmV3IG90KHRoaXMpLCB0aGlzLmRpbVhBeGlzID0gbmV3IHJ0KHRoaXMpLCB0aGlzLmRpbUdyaWQgPSBuZXcgbnQodGhpcyksIHRoaXMubGdXaWR0aEZvclNpZGVMZWdlbmRzID0gMCwgdGhpcy5ncmlkUGFkID0gdGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsIHRoaXMueFBhZFJpZ2h0ID0gMCwgdGhpcy54UGFkTGVmdCA9IDAKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAicGxvdENvb3JkcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5nbG9iYWxzOwogICAgICAgICAgICAgICAgICAgIHRoaXMubGdSZWN0ID0gdGhpcy5kaW1IZWxwZXJzLmdldExlZ2VuZHNSZWN0KCksIHRoaXMuaXNTcGFya2xpbmUgJiYgKGUuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoID4gMCB8fCBlLmNvbmZpZy5tYXJrZXJzLnNpemUgPiAwKSAmJiBPYmplY3QuZW50cmllcyh0aGlzLmdyaWRQYWQpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBnKGUsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5ncmlkUGFkW2FdID0gTWF0aC5tYXgocywgdC53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZSAvIDEuNSkKICAgICAgICAgICAgICAgICAgICB9KSksIGkuYXhpc0NoYXJ0cyA/IHRoaXMuc2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMoKSA6IHRoaXMuc2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHMoKSwgdGhpcy5kaW1HcmlkLmdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlKCksIGkuZ3JpZEhlaWdodCA9IGkuZ3JpZEhlaWdodCAtIHRoaXMuZ3JpZFBhZC50b3AgLSB0aGlzLmdyaWRQYWQuYm90dG9tLCBpLmdyaWRXaWR0aCA9IGkuZ3JpZFdpZHRoIC0gdGhpcy5ncmlkUGFkLmxlZnQgLSB0aGlzLmdyaWRQYWQucmlnaHQgLSB0aGlzLnhQYWRSaWdodCAtIHRoaXMueFBhZExlZnQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmRpbUdyaWQuZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzKGkuZ3JpZFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICBpLmdyaWRXaWR0aCA9IGkuZ3JpZFdpZHRoIC0gMiAqIGEsIGkudHJhbnNsYXRlWCA9IGkudHJhbnNsYXRlWCArIHRoaXMuZ3JpZFBhZC5sZWZ0ICsgdGhpcy54UGFkTGVmdCArIChhID4gMCA/IGEgKyA0IDogMCksIGkudHJhbnNsYXRlWSA9IGkudHJhbnNsYXRlWSArIHRoaXMuZ3JpZFBhZC50b3AKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuZGltWUF4aXMuZ2V0eUF4aXNMYWJlbHNDb29yZHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZGltWUF4aXMuZ2V0eUF4aXNUaXRsZUNvb3JkcygpOwogICAgICAgICAgICAgICAgICAgIGUuZ2xvYmFscy55TGFiZWxzQ29vcmRzID0gW10sIGUuZ2xvYmFscy55VGl0bGVDb29yZHMgPSBbXSwgZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2xvYmFscy55TGFiZWxzQ29vcmRzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGFbaV0ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzW2ldLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMueUF4aXNXaWR0aCA9IHRoaXMuZGltWUF4aXMuZ2V0VG90YWxZQXhpc1dpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLmRpbVhBeGlzLmdldHhBeGlzTGFiZWxzQ29vcmRzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmRpbVhBeGlzLmdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZGltWEF4aXMuZ2V0eEF4aXNUaXRsZUNvb3JkcygpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzKHIsIG4sIG8pLCBpLnRyYW5zbGF0ZVhBeGlzWSA9IGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzID8gdGhpcy54QXhpc0hlaWdodCAvIDggOiAtNCwgaS50cmFuc2xhdGVYQXhpc1ggPSBlLmdsb2JhbHMucm90YXRlWExhYmVscyAmJiBlLmdsb2JhbHMuaXNYTnVtZXJpYyAmJiBlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlIDw9IC00NSA/IC10aGlzLnhBeGlzV2lkdGggLyA0IDogMCwgZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiAoaS5yb3RhdGVYTGFiZWxzID0gITEsIGkudHJhbnNsYXRlWEF4aXNZID0gcGFyc2VJbnQoZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLCAxMCkgLyAxLjUgKiAtMSksIGkudHJhbnNsYXRlWEF4aXNZID0gaS50cmFuc2xhdGVYQXhpc1kgKyBlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSwgaS50cmFuc2xhdGVYQXhpc1ggPSBpLnRyYW5zbGF0ZVhBeGlzWCArIGUuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy55QXhpc1dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy54QXhpc0hlaWdodDsKICAgICAgICAgICAgICAgICAgICBpLnhBeGlzTGFiZWxzSGVpZ2h0ID0gdGhpcy54QXhpc0hlaWdodCAtIG4uaGVpZ2h0LCBpLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQgPSBpLnhBeGlzTGFiZWxzSGVpZ2h0IC0gci5oZWlnaHQsIGkueEF4aXNMYWJlbHNXaWR0aCA9IHRoaXMueEF4aXNXaWR0aCwgaS54QXhpc0hlaWdodCA9IHRoaXMueEF4aXNIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAxMDsKICAgICAgICAgICAgICAgICAgICAoInJhZGFyIiA9PT0gZS5jb25maWcuY2hhcnQudHlwZSB8fCB0aGlzLmlzU3BhcmtsaW5lKSAmJiAobCA9IDAsIGggPSBpLmdvbGRlblBhZGRpbmcpLCB0aGlzLmlzU3BhcmtsaW5lICYmICh0aGlzLmxnUmVjdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMAogICAgICAgICAgICAgICAgICAgIH0pLCAodGhpcy5pc1NwYXJrbGluZSB8fCAidHJlZW1hcCIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUpICYmIChsID0gMCwgaCA9IDAsIGMgPSAwKSwgdGhpcy5pc1NwYXJrbGluZSB8fCB0aGlzLmRpbVhBeGlzLmFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyhyKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLnRyYW5zbGF0ZVggPSBsLCBpLmdyaWRIZWlnaHQgPSBpLnN2Z0hlaWdodCAtIHQubGdSZWN0LmhlaWdodCAtIGggLSAodC5pc1NwYXJrbGluZSB8fCAidHJlZW1hcCIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgPyAwIDogZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgPyAxMCA6IDE1KSwgaS5ncmlkV2lkdGggPSBpLnN2Z1dpZHRoIC0gbAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgidG9wIiA9PT0gZS5jb25maWcueGF4aXMucG9zaXRpb24gJiYgKGMgPSBpLnhBeGlzSGVpZ2h0IC0gZS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCAtIDUpLCBlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm90dG9tIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudHJhbnNsYXRlWSA9IGMsIGQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b3AiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGVZID0gdGhpcy5sZ1JlY3QuaGVpZ2h0ICsgYywgZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxlZnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS50cmFuc2xhdGVZID0gYywgaS50cmFuc2xhdGVYID0gdGhpcy5sZ1JlY3Qud2lkdGggKyBsLCBpLmdyaWRIZWlnaHQgPSBpLnN2Z0hlaWdodCAtIGggLSAxMiwgaS5ncmlkV2lkdGggPSBpLnN2Z1dpZHRoIC0gdGhpcy5sZ1JlY3Qud2lkdGggLSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudHJhbnNsYXRlWSA9IGMsIGkudHJhbnNsYXRlWCA9IGwsIGkuZ3JpZEhlaWdodCA9IGkuc3ZnSGVpZ2h0IC0gaCAtIDEyLCBpLmdyaWRXaWR0aCA9IGkuc3ZnV2lkdGggLSB0aGlzLmxnUmVjdC53aWR0aCAtIGwgLSA1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkxlZ2VuZCBwb3NpdGlvbiBub3Qgc3VwcG9ydGVkIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaW1HcmlkLnNldEdyaWRYUG9zRm9yRHVhbFlBeGlzKHMsIGEpLCBuZXcgJCh0aGlzLmN0eCkuc2V0WUF4aXNYUG9zaXRpb24oYSwgcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgIHQuY29uZmlnLmxlZ2VuZC5zaG93ICYmICF0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmcgJiYgKGEgPSAyMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAicGllIiA9PT0gaS5jaGFydC50eXBlIHx8ICJwb2xhckFyZWEiID09PSBpLmNoYXJ0LnR5cGUgfHwgImRvbnV0IiA9PT0gaS5jaGFydC50eXBlID8gInBpZSIgOiAicmFkaWFsQmFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WDsKICAgICAgICAgICAgICAgICAgICBpZiAoIWkubGVnZW5kLnNob3cgfHwgaS5sZWdlbmQuZmxvYXRpbmcpIHJldHVybiBlLmdyaWRIZWlnaHQgPSBlLnN2Z0hlaWdodCAtIGkuZ3JpZC5wYWRkaW5nLmxlZnQgKyBpLmdyaWQucGFkZGluZy5yaWdodCwgZS5ncmlkV2lkdGggPSBlLmdyaWRIZWlnaHQsIGUudHJhbnNsYXRlWSA9IHIsIHZvaWQoZS50cmFuc2xhdGVYID0gbyArIChlLnN2Z1dpZHRoIC0gZS5ncmlkV2lkdGgpIC8gMik7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpLmxlZ2VuZC5wb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3R0b20iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5ncmlkSGVpZ2h0ID0gZS5zdmdIZWlnaHQgLSB0aGlzLmxnUmVjdC5oZWlnaHQgLSBlLmdvbGRlblBhZGRpbmcsIGUuZ3JpZFdpZHRoID0gZS5zdmdXaWR0aCwgZS50cmFuc2xhdGVZID0gciAtIDEwLCBlLnRyYW5zbGF0ZVggPSBvICsgKGUuc3ZnV2lkdGggLSBlLmdyaWRXaWR0aCkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdyaWRIZWlnaHQgPSBlLnN2Z0hlaWdodCAtIHRoaXMubGdSZWN0LmhlaWdodCAtIGUuZ29sZGVuUGFkZGluZywgZS5ncmlkV2lkdGggPSBlLnN2Z1dpZHRoLCBlLnRyYW5zbGF0ZVkgPSB0aGlzLmxnUmVjdC5oZWlnaHQgKyByICsgMTAsIGUudHJhbnNsYXRlWCA9IG8gKyAoZS5zdmdXaWR0aCAtIGUuZ3JpZFdpZHRoKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGVmdCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdyaWRXaWR0aCA9IGUuc3ZnV2lkdGggLSB0aGlzLmxnUmVjdC53aWR0aCAtIGEsIGUuZ3JpZEhlaWdodCA9ICJhdXRvIiAhPT0gaS5jaGFydC5oZWlnaHQgPyBlLnN2Z0hlaWdodCA6IGUuZ3JpZFdpZHRoLCBlLnRyYW5zbGF0ZVkgPSByLCBlLnRyYW5zbGF0ZVggPSBvICsgdGhpcy5sZ1JlY3Qud2lkdGggKyBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZ3JpZFdpZHRoID0gZS5zdmdXaWR0aCAtIHRoaXMubGdSZWN0LndpZHRoIC0gYSAtIDUsIGUuZ3JpZEhlaWdodCA9ICJhdXRvIiAhPT0gaS5jaGFydC5oZWlnaHQgPyBlLnN2Z0hlaWdodCA6IGUuZ3JpZFdpZHRoLCBlLnRyYW5zbGF0ZVkgPSByLCBlLnRyYW5zbGF0ZVggPSBvICsgMTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWQiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmdsb2JhbHMuaGFzR3JvdXBzID8gMiA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmhlaWdodCArIHQuaGVpZ2h0ICsgZS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmdsb2JhbHMuaXNNdWx0aUxpbmVYID8gMS4yIDogYS5nbG9iYWxzLkxJTkVfSEVJR0hUX1JBVElPLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgPyAyMiA6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMgJiYgImJvdHRvbSIgPT09IGEuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiA/IDEwIDogMDsKICAgICAgICAgICAgICAgICAgICB0aGlzLnhBeGlzSGVpZ2h0ID0gciAqIG8gKyBzICogbiArIGwsIHRoaXMueEF4aXNXaWR0aCA9IHQud2lkdGgsIHRoaXMueEF4aXNIZWlnaHQgLSBlLmhlaWdodCA+IGEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQgJiYgKHRoaXMueEF4aXNIZWlnaHQgPSBhLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0KSwgYS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCAmJiB0aGlzLnhBeGlzSGVpZ2h0IDwgYS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCAmJiAodGhpcy54QXhpc0hlaWdodCA9IGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQpLCBhLmNvbmZpZy54YXhpcy5mbG9hdGluZyAmJiAodGhpcy54QXhpc0hlaWdodCA9IDApOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgYS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBoICs9IHQubGFiZWxzLm1pbldpZHRoLCBjICs9IHQubGFiZWxzLm1heFdpZHRoCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnlBeGlzV2lkdGggPCBoICYmICh0aGlzLnlBeGlzV2lkdGggPSBoKSwgdGhpcy55QXhpc1dpZHRoID4gYyAmJiAodGhpcy55QXhpc1dpZHRoID0gYykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIGh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy53ID0gZS53LCB0aGlzLmxnQ3R4ID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRMZWdlbmRTdHlsZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0L2NzcyIpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx0XG4gICAgXHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XHRcbiAgICAgICAgZGlzcGxheTogZmxleDtcdFxuICAgICAgICBvdmVyZmxvdzogYXV0bztcdFxuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3Age1x0XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcFx0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcdFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1x0XG4gICAgICAgIGJvdHRvbTogMDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XHRcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyIHtcdFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgIFx0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCB7XHRcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcdFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHRcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcdFxuICAgICAgfVx0XG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20gLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXN7XHRcbiAgICAgICAgZGlzcGxheTogZmxleDtcdFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcdFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHRcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0ICosIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIgKiB7XHRcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciB7XHRcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1x0XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcdFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHRcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XHRcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIH1cdFxuICAgICAgXHRcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcdFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcy5hcGV4Y2hhcnRzLW5vLWNsaWNrIHtcdFxuICAgICAgICBjdXJzb3I6IGF1dG87XHRcbiAgICAgIH1cdFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllcyB7XHRcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1x0XG4gICAgICB9XHRcbiAgICAgIC5hcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCB7XHRcbiAgICAgICAgb3BhY2l0eTogMC40NTtcdFxuICAgICAgfSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmFwcGVuZENoaWxkKGUpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldExlZ2VuZEJCb3giLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1sZWdlbmQiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQud2lkdGg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2x3aDogdC5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsd3c6IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFwcGVuZFRvRm9yZWlnbk9iamVjdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncuZ2xvYmFsczsKICAgICAgICAgICAgICAgICAgICB0LmRvbS5lbExlZ2VuZEZvcmVpZ24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUywgImZvcmVpZ25PYmplY3QiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZG9tLmVsTGVnZW5kRm9yZWlnbjsKICAgICAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgieCIsIDApLCBlLnNldEF0dHJpYnV0ZSgieSIsIDApLCBlLnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0LnN2Z1dpZHRoKSwgZS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHQuc3ZnSGVpZ2h0KSwgdC5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZSgieG1sbnMiLCAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLCBlLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kV3JhcCksIGUuYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSksIHQuZG9tLlBhcGVyLm5vZGUuaW5zZXJ0QmVmb3JlKGUsIHQuZG9tLmVsR3JhcGhpY2FsLm5vZGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInRvZ2dsZURhdGFTZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZ2xvYmFscy5heGlzQ2hhcnRzIHx8ICJyYWRpYWxCYXIiID09PSBhLmNvbmZpZy5jaGFydC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuZ2xvYmFscy5yZXNpemVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS5nbG9iYWxzLnJpc2luZ1NlcmllcyA9IFtdLCBhLmdsb2JhbHMuYXhpc0NoYXJ0cyA/IChzID0gYS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpyZWFsSW5kZXg9JyIuY29uY2F0KHQsICInXSIpKSwgciA9IHBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKCJkYXRhOnJlYWxJbmRleCIpLCAxMCkpIDogKHMgPSBhLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSciLmNvbmNhdCh0ICsgMSwgIiddIikpLCByID0gcGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoInJlbCIpLCAxMCkgLSAxKSwgZSlbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3M6IGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2k6IGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzOiBhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NpOiBhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcwogICAgICAgICAgICAgICAgICAgICAgICB9XS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJpc2VDb2xsYXBzZWRTZXJpZXModC5jcywgdC5jc2ksIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmhpZGVTZXJpZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzRWw6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGEuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KCIgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nIi5jb25jYXQodCArIDEsICInXSBwYXRoIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGEuY29uZmlnLmNoYXJ0LnR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicGllIiA9PT0gbiB8fCAicG9sYXJBcmVhIiA9PT0gbiB8fCAiZG9udXQiID09PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGEuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbSh0aGlzLmxnQ3R4LmN0eCkucGF0aE1vdXNlRG93bihvLm1lbWJlcnNbMF0sIG51bGwpLCB0aGlzLmxnQ3R4LmN0eC5waWUucHJpbnREYXRhTGFiZWxzSW5uZXIoby5tZW1iZXJzWzBdLm5vZGUsIGwpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgby5maXJlKCJjbGljayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoaWRlU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnNlcmllc0VsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB4LmNsb25lKGEuY29uZmlnLnNlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZ2xvYmFscy5heGlzQ2hhcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmNvbmZpZy55YXhpc1tpXSAmJiBhLmNvbmZpZy55YXhpc1tpXS5zaG93ICYmIGEuY29uZmlnLnlheGlzW2ldLnNob3dBbHdheXMgJiYgKHIgPSAhMCwgYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKSA8IDAgJiYgKGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc1tpXS5kYXRhLnNsaWNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KCItIilbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpKSksICFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHNbaV0uZGF0YS5zbGljZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdCgiLSIpWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5pbmRleE9mKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5zcGxpY2UobywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc1tpXQogICAgICAgICAgICAgICAgICAgIH0pLCBhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBlLmNoaWxkTm9kZXMsIGwgPSAwOyBsIDwgbi5sZW5ndGg7IGwrKykgbltsXS5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCIpICYmIChuW2xdLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1oaWRlIikgPyBuW2xdLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtaGlkZSIpIDogbltsXS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWhpZGUiKSk7CiAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCA9IGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoID09PSBhLmNvbmZpZy5zZXJpZXMubGVuZ3RoLCBzID0gdGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLCB0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocywgYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJpc2VDb2xsYXBzZWRTZXJpZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHguY2xvbmUoYS5jb25maWcuc2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykgdFtyXS5pbmRleCA9PT0gaSAmJiAoYS5nbG9iYWxzLmF4aXNDaGFydHMgPyAoc1tpXS5kYXRhID0gdFtyXS5kYXRhLnNsaWNlKCksIHQuc3BsaWNlKHIsIDEpLCBlLnNwbGljZShyLCAxKSwgYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSA6IChzW2ldID0gdFtyXS5kYXRhLCB0LnNwbGljZShyLCAxKSwgZS5zcGxpY2UociwgMSksIGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLCB0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocywgYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2xvYmFscy5heGlzQ2hhcnRzID8gdC5mb3JFYWNoKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSkgPiAtMSAmJiAodFthXS5kYXRhID0gW10pCiAgICAgICAgICAgICAgICAgICAgfSkpIDogdC5mb3JFYWNoKChmdW5jdGlvbihpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSkgPiAtMSAmJiAodFthXSA9IDApCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUsIGkpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53LCB0aGlzLm9uTGVnZW5kQ2xpY2sgPSB0aGlzLm9uTGVnZW5kQ2xpY2suYmluZCh0aGlzKSwgdGhpcy5vbkxlZ2VuZEhvdmVyZWQgPSB0aGlzLm9uTGVnZW5kSG92ZXJlZC5iaW5kKHRoaXMpLCB0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkID0gImJhciIgPT09IHRoaXMudy5jb25maWcuY2hhcnQudHlwZSAmJiB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCAmJiAxID09PSB0aGlzLncuY29uZmlnLnNlcmllcy5sZW5ndGgsIHRoaXMubGVnZW5kSGVscGVycyA9IG5ldyBodCh0aGlzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY29uZmlnOwogICAgICAgICAgICAgICAgICAgIGlmICgoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyAmJiAxID09PSBlLnNlcmllcy5sZW5ndGggfHwgdGhpcy5pc0JhcnNEaXN0cmlidXRlZCB8fCBlLnNlcmllcy5sZW5ndGggPiAxIHx8ICFlLmF4aXNDaGFydHMpICYmIGkubGVnZW5kLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGUuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOykgZS5kb20uZWxMZWdlbmRXcmFwLnJlbW92ZUNoaWxkKGUuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGVnZW5kcygpLCB4LmlzSUUxMSgpID8gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpIDogdGhpcy5sZWdlbmRIZWxwZXJzLmFwcGVuZFRvRm9yZWlnbk9iamVjdCgpLCAiYm90dG9tIiA9PT0gaS5sZWdlbmQucG9zaXRpb24gfHwgInRvcCIgPT09IGkubGVnZW5kLnBvc2l0aW9uID8gdGhpcy5sZWdlbmRBbGlnbkhvcml6b250YWwoKSA6ICJyaWdodCIgIT09IGkubGVnZW5kLnBvc2l0aW9uICYmICJsZWZ0IiAhPT0gaS5sZWdlbmQucG9zaXRpb24gfHwgdGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdMZWdlbmRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNvbmZpZy5sZWdlbmQuZm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuZ2xvYmFscy5zZXJpZXNOYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoImhlYXRtYXAiID09PSBlLmNvbmZpZy5jaGFydC50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlczsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5uYW1lID8gdC5uYW1lIDogdC5mcm9tICsgIiAtICIgKyB0LnRvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcyA9IHIubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5jb2xvcgogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5pc0JhcnNEaXN0cmlidXRlZCAmJiAoYSA9IGUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSk7CiAgICAgICAgICAgICAgICAgICAgZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCAmJiAoYSA9IGUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcyk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsIG4gPSBlLmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLCBsID0gbiA/IGEubGVuZ3RoIC0gMSA6IDA7IG4gPyBsID49IDAgOiBsIDw9IGEubGVuZ3RoIC0gMTsgbiA/IGwtLSA6IGwrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG8oYVtsXSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IDA7IGcgPCBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDsgZysrKSBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2ddLmluZGV4ID09PSBsICYmIChjID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSAwOyB1IDwgZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoOyB1KyspIGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3VdID09PSBsICYmIChkID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgZi5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gZS5jb25maWcubGVnZW5kLm1hcmtlcnMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZVdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSBmLnN0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICBDLmJhY2tncm91bmQgPSBzW2xdLCBDLmNvbG9yID0gc1tsXSwgQy5zZXRQcm9wZXJ0eSgiYmFja2dyb3VuZCIsIHNbbF0sICJpbXBvcnRhbnQiKSwgZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9ycyAmJiBlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdICYmIChDLmJhY2tncm91bmQgPSBlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdKSwgdm9pZCAwICE9PSBlLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdICYmIChDLmJhY2tncm91bmQgPSBlLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdLCBDLmNvbG9yID0gZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSksIEMuaGVpZ2h0ID0gQXJyYXkuaXNBcnJheSh2KSA/IHBhcnNlRmxvYXQodltsXSkgKyAicHgiIDogcGFyc2VGbG9hdCh2KSArICJweCIsIEMud2lkdGggPSBBcnJheS5pc0FycmF5KHcpID8gcGFyc2VGbG9hdCh3W2xdKSArICJweCIgOiBwYXJzZUZsb2F0KHcpICsgInB4IiwgQy5sZWZ0ID0gKEFycmF5LmlzQXJyYXkocCkgPyBwYXJzZUZsb2F0KHBbbF0pIDogcGFyc2VGbG9hdChwKSkgKyAicHgiLCBDLnRvcCA9IChBcnJheS5pc0FycmF5KGIpID8gcGFyc2VGbG9hdChiW2xdKSA6IHBhcnNlRmxvYXQoYikpICsgInB4IiwgQy5ib3JkZXJXaWR0aCA9IEFycmF5LmlzQXJyYXkoaykgPyBrW2xdIDogaywgQy5ib3JkZXJDb2xvciA9IEFycmF5LmlzQXJyYXkoQSkgPyBBW2xdIDogQSwgQy5ib3JkZXJSYWRpdXMgPSBBcnJheS5pc0FycmF5KFMpID8gcGFyc2VGbG9hdChTW2xdKSArICJweCIgOiBwYXJzZUZsb2F0KFMpICsgInB4IiwgZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCAmJiAoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKSA/IGUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0gJiYgKGYuaW5uZXJIVE1MID0gZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSgpKSA6IGYuaW5uZXJIVE1MID0gZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCgpKSwgbS5zZXRBdHRycyhmLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IGwgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6Y29sbGFwc2VkIjogYyB8fCBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAoYyB8fCBkKSAmJiBmLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBMID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBQLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtbGVnZW5kLXRleHQiKSwgUC5pbm5lckhUTUwgPSBBcnJheS5pc0FycmF5KGgpID8gaC5qb2luKCIgIikgOiBoOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgTSA9IGUuY29uZmlnLmxlZ2VuZC5sYWJlbHMudXNlU2VyaWVzQ29sb3JzID8gZS5nbG9iYWxzLmNvbG9yc1tsXSA6IGUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzOwogICAgICAgICAgICAgICAgICAgICAgICBNIHx8IChNID0gZS5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSwgUC5zdHlsZS5jb2xvciA9IE0sIFAuc3R5bGUuZm9udFNpemUgPSBwYXJzZUZsb2F0KGUuY29uZmlnLmxlZ2VuZC5mb250U2l6ZSkgKyAicHgiLCBQLnN0eWxlLmZvbnRXZWlnaHQgPSBlLmNvbmZpZy5sZWdlbmQuZm9udFdlaWdodCwgUC5zdHlsZS5mb250RmFtaWx5ID0gaSB8fCBlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LCBtLnNldEF0dHJzKFAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogbCArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6ZGVmYXVsdC10ZXh0IjogZW5jb2RlVVJJQ29tcG9uZW50KGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6Y29sbGFwc2VkIjogYyB8fCBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBMLmFwcGVuZENoaWxkKGYpLCBMLmFwcGVuZENoaWxkKFApOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IG5ldyB5KHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmNvbmZpZy5sZWdlbmQuc2hvd0Zvclplcm9TZXJpZXMpIDAgPT09IFQuZ2V0U2VyaWVzVG90YWxCeUluZGV4KGwpICYmIFQuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMobCkgJiYgIVQuaXNTZXJpZXNOdWxsKGwpICYmIC0xID09PSBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpICYmIC0xID09PSBlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpICYmIEwuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jb25maWcubGVnZW5kLnNob3dGb3JOdWxsU2VyaWVzIHx8IFQuaXNTZXJpZXNOdWxsKGwpICYmIC0xID09PSBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpICYmIC0xID09PSBlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpICYmIEwuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXMiKSwgZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuYXBwZW5kQ2hpbGQoTCksIGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWxpZ24tIi5jb25jYXQoZS5jb25maWcubGVnZW5kLmhvcml6b250YWxBbGlnbikpLCBlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKCJhcHgtbGVnZW5kLXBvc2l0aW9uLSIgKyBlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pLCBMLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtbGVnZW5kLXNlcmllcyIpLCBMLnN0eWxlLm1hcmdpbiA9ICIiLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi52ZXJ0aWNhbCwgInB4ICIpLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLCAicHgiKSwgZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUud2lkdGggPSBlLmNvbmZpZy5sZWdlbmQud2lkdGggPyBlLmNvbmZpZy5sZWdlbmQud2lkdGggKyAicHgiIDogIiIsIGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLmhlaWdodCA9IGUuY29uZmlnLmxlZ2VuZC5oZWlnaHQgPyBlLmNvbmZpZy5sZWdlbmQuaGVpZ2h0ICsgInB4IiA6ICIiLCBtLnNldEF0dHJzKEwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogbCArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOYW1lOiB4LmVzY2FwZVN0cmluZyhhW2xdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOmNvbGxhcHNlZCI6IGMgfHwgZAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGMgfHwgZCkgJiYgTC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCIpLCBlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllcyB8fCBMLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtbm8tY2xpY2siKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHQub25MZWdlbmRDbGljaywgITApLCBlLmNvbmZpZy5sZWdlbmQub25JdGVtSG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyAmJiAwID09PSBlLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoICYmIChlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0Lm9uTGVnZW5kSG92ZXJlZCwgITApLCBlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHQub25MZWdlbmRIb3ZlcmVkLCAhMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldExlZ2VuZFdyYXBYWSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtbGVnZW5kIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJib3R0b20iID09PSBpLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pIG8gKz0gaS5nbG9iYWxzLnN2Z0hlaWdodCAtIHMuaGVpZ2h0IC8gMjsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgidG9wIiA9PT0gaS5jb25maWcubGVnZW5kLnBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IGx0KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcygidGl0bGUiKS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInN1YnRpdGxlIikuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICBvID0gbyArIChsID4gMCA/IGwgLSAxMCA6IDApICsgKGggPiAwID8gaCAtIDEwIDogMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSIsIHIgPSByICsgdCArIGkuY29uZmlnLmxlZ2VuZC5vZmZzZXRYLCBvID0gbyArIGUgKyBpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSwgYS5zdHlsZS5sZWZ0ID0gciArICJweCIsIGEuc3R5bGUudG9wID0gbyArICJweCIsICJib3R0b20iID09PSBpLmNvbmZpZy5sZWdlbmQucG9zaXRpb24gPyAoYS5zdHlsZS50b3AgPSAiYXV0byIsIGEuc3R5bGUuYm90dG9tID0gNSAtIGkuY29uZmlnLmxlZ2VuZC5vZmZzZXRZICsgInB4IikgOiAicmlnaHQiID09PSBpLmNvbmZpZy5sZWdlbmQucG9zaXRpb24gJiYgKGEuc3R5bGUubGVmdCA9ICJhdXRvIiwgYS5zdHlsZS5yaWdodCA9IDI1ICsgaS5jb25maWcubGVnZW5kLm9mZnNldFggKyAicHgiKTsKICAgICAgICAgICAgICAgICAgICBbIndpZHRoIiwgImhlaWdodCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYS5zdHlsZVt0XSAmJiAoYS5zdHlsZVt0XSA9IHBhcnNlSW50KGkuY29uZmlnLmxlZ2VuZFt0XSwgMTApICsgInB4IikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibGVnZW5kQWxpZ25Ib3Jpem9udGFsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1sZWdlbmQiKS5zdHlsZS5yaWdodCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IGx0KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKCJ0aXRsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoInN1YnRpdGxlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgICJib3R0b20iID09PSB0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24gPyByID0gLWUuY2x3aCAvIDEuOCA6ICJ0b3AiID09PSB0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24gJiYgKHIgPSBhLmhlaWdodCArIHMuaGVpZ2h0ICsgdC5jb25maWcudGl0bGUubWFyZ2luICsgdC5jb25maWcuc3VidGl0bGUubWFyZ2luIC0gMTApLCB0aGlzLnNldExlZ2VuZFdyYXBYWSgyMCwgcikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibGVnZW5kQWxpZ25WZXJ0aWNhbCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAibGVmdCIgPT09IHQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiAmJiAoaSA9IDIwKSwgInJpZ2h0IiA9PT0gdC5jb25maWcubGVnZW5kLnBvc2l0aW9uICYmIChpID0gdC5nbG9iYWxzLnN2Z1dpZHRoIC0gZS5jbHd3IC0gMTApLCB0aGlzLnNldExlZ2VuZFdyYXBYWShpLCAyMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAib25MZWdlbmRIb3ZlcmVkIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbGVnZW5kLXRleHQiKSB8fCB0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciIpOwogICAgICAgICAgICAgICAgICAgIGlmICgiaGVhdG1hcCIgPT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgfHwgdGhpcy5pc0JhcnNEaXN0cmlidXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBwYXJzZUludCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoInJlbCIpLCAxMCkgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudCgibGVnZW5kSG92ZXIiLCBbdGhpcy5jdHgsIGEsIHRoaXMud10pLCBuZXcgRSh0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyh0LCB0LnRhcmdldCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAhdC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCIpICYmIGkgJiYgbmV3IEUodGhpcy5jdHgpLnRvZ2dsZVNlcmllc09uSG92ZXIodCwgdC50YXJnZXQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm9uTGVnZW5kQ2xpY2siLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGggJiYgKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCIpIHx8IHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gcGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKCJyZWwiKSwgMTApIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAidHJ1ZSIgPT09IHQudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YTpjb2xsYXBzZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5sZWdlbmRDbGljazsKICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgcyAmJiBzKHRoaXMuY3R4LCBpLCB0aGlzLncpLCB0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJsZWdlbmRDbGljayIsIFt0aGlzLmN0eCwgaSwgdGhpcy53XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrOwogICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiByICYmIHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIikgJiYgKHIodGhpcy5jdHgsIGksIHRoaXMudyksIHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoImxlZ2VuZE1hcmtlckNsaWNrIiwgW3RoaXMuY3R4LCBpLCB0aGlzLnddKSksICJ0cmVlbWFwIiAhPT0gZS5jb25maWcuY2hhcnQudHlwZSAmJiAiaGVhdG1hcCIgIT09IGUuY29uZmlnLmNoYXJ0LnR5cGUgJiYgIXRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQgJiYgZS5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXMgJiYgdGhpcy5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoaSwgYSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBkdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53OwogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICB0aGlzLmV2ID0gdGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMsIHRoaXMuc2VsZWN0ZWRDbGFzcyA9ICJhcGV4Y2hhcnRzLXNlbGVjdGVkIiwgdGhpcy5sb2NhbGVWYWx1ZXMgPSB0aGlzLncuZ2xvYmFscy5sb2NhbGUudG9vbGJhciwgdGhpcy5taW5YID0gaS5nbG9iYWxzLm1pblgsIHRoaXMubWF4WCA9IGkuZ2xvYmFscy5tYXhYCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZVRvb2xiYXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJhcGV4Y2hhcnRzLXRvb2xiYXIiKSwgYS5zdHlsZS50b3AgPSBlLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFkgKyAicHgiLCBhLnN0eWxlLnJpZ2h0ID0gMyAtIGUuY29uZmlnLmNoYXJ0LnRvb2xiYXIub2Zmc2V0WCArICJweCIsIGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGEpLCB0aGlzLmVsWm9vbSA9IGkoKSwgdGhpcy5lbFpvb21JbiA9IGkoKSwgdGhpcy5lbFpvb21PdXQgPSBpKCksIHRoaXMuZWxQYW4gPSBpKCksIHRoaXMuZWxTZWxlY3Rpb24gPSBpKCksIHRoaXMuZWxab29tUmVzZXQgPSBpKCksIHRoaXMuZWxNZW51SWNvbiA9IGkoKSwgdGhpcy5lbE1lbnUgPSBpKCksIHRoaXMuZWxDdXN0b21JY29ucyA9IFtdLCB0aGlzLnQgPSBlLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLCBBcnJheS5pc0FycmF5KHRoaXMudC5jdXN0b21JY29ucykpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSAwOyBzIDwgdGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDsgcysrKSB0aGlzLmVsQ3VzdG9tSWNvbnMucHVzaChpKCkpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBmdW5jdGlvbihpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudFtvXSAmJiBlLmNvbmZpZy5jaGFydC56b29tLmVuYWJsZWQgJiYgci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAic3RyaW5nIiA9PSB0eXBlb2YgdC50W29dID8gdC50W29dIDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdC5sb2NhbGVWYWx1ZXNbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLSIuY29uY2F0KG8sICItaWNvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG8oInpvb21JbiIsIHRoaXMuZWxab29tSW4sICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPlxuICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz5cbiAgICA8cGF0aCBkPSJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPlxuPC9zdmc+XG4nKSwgbygiem9vbU91dCIsIHRoaXMuZWxab29tT3V0LCAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij5cbiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+XG4gICAgPHBhdGggZD0iTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPlxuPC9zdmc+XG4nKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC50W2ldICYmIGUuY29uZmlnLmNoYXJ0W2ldLmVuYWJsZWQgJiYgci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiAiem9vbSIgPT09IGkgPyB0LmVsWm9vbSA6IHQuZWxTZWxlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAic3RyaW5nIiA9PSB0eXBlb2YgdC50W2ldID8gdC50W2ldIDogInpvb20iID09PSBpID8gJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+XG4gICAgPHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ii8+XG4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+XG4gICAgPHBhdGggZD0iTTEyIDEwaC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6Ii8+XG48L3N2Zz4nIDogJzxzdmcgZmlsbD0iIzZFODE5MiIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+XG4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPlxuICAgIDxwYXRoIGQ9Ik0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6Ii8+XG48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHQubG9jYWxlVmFsdWVzWyJ6b29tIiA9PT0gaSA/ICJzZWxlY3Rpb25ab29tIiA6ICJzZWxlY3Rpb24iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBlLmdsb2JhbHMuaXNUb3VjaERldmljZSA/ICJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIiA6ICJhcGV4Y2hhcnRzLSIuY29uY2F0KGksICItaWNvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBuKCJ6b29tIiksIG4oInNlbGVjdGlvbiIpLCB0aGlzLnQucGFuICYmIGUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCAmJiByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBlbDogdGhpcy5lbFBhbiwKICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogInN0cmluZyIgPT0gdHlwZW9mIHRoaXMudC5wYW4gPyB0aGlzLnQucGFuIDogJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZmlsbD0iIzAwMDAwMCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiPlxuICAgIDxkZWZzPlxuICAgICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBpZD0iYSIvPlxuICAgIDwvZGVmcz5cbiAgICA8Y2xpcFBhdGggaWQ9ImIiPlxuICAgICAgICA8dXNlIG92ZXJmbG93PSJ2aXNpYmxlIiB4bGluazpocmVmPSIjYSIvPlxuICAgIDwvY2xpcFBhdGg+XG4gICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMjMgNS41VjIwYzAgMi4yLTEuOCA0LTQgNGgtNy4zYy0xLjA4IDAtMi4xLS40My0yLjg1LTEuMTlMMSAxNC44M3MxLjI2LTEuMjMgMS4zLTEuMjVjLjIyLS4xOS40OS0uMjkuNzktLjI5LjIyIDAgLjQyLjA2LjYuMTYuMDQuMDEgNC4zMSAyLjQ2IDQuMzEgMi40NlY0YzAtLjgzLjY3LTEuNSAxLjUtMS41UzExIDMuMTcgMTEgNHY3aDFWMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41UzE1IC42NyAxNSAxLjVWMTFoMVYyLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWMTFoMVY1LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV6Ii8+XG48L3N2Zz4nLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NhbGVWYWx1ZXMucGFuLAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UgPyAiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiIgOiAiYXBleGNoYXJ0cy1wYW4taWNvbiIKICAgICAgICAgICAgICAgICAgICB9KSwgbygicmVzZXQiLCB0aGlzLmVsWm9vbVJlc2V0LCAnPHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj5cbiAgICA8cGF0aCBkPSJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4eiIvPlxuICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz5cbjwvc3ZnPicpLCB0aGlzLnQuZG93bmxvYWQgJiYgci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IHRoaXMuZWxNZW51SWNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogInN0cmluZyIgPT0gdHlwZW9mIHRoaXMudC5kb3dubG9hZCA/IHRoaXMudC5kb3dubG9hZCA6ICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjxwYXRoIGQ9Ik0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzeiIvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY2FsZVZhbHVlcy5tZW51LAogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtbWVudS1pY29uIgogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDsgbCsrKSByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBlbDogdGhpcy5lbEN1c3RvbUljb25zW2xdLAogICAgICAgICAgICAgICAgICAgICAgICBpY29uOiB0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaWNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudC5jdXN0b21JY29uc1tsXS50aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMudC5jdXN0b21JY29uc1tsXS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gIiArIHRoaXMudC5jdXN0b21JY29uc1tsXS5jbGFzcwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHIuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmluZGV4ICYmIHgubW92ZUluZGV4SW5BcnJheShyLCBlLCB0LmluZGV4KQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBoID0gMDsgaCA8IHIubGVuZ3RoOyBoKyspIG0uc2V0QXR0cnMocltoXS5lbCwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogcltoXS5jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJbaF0udGl0bGUKICAgICAgICAgICAgICAgICAgICB9KSwgcltoXS5lbC5pbm5lckhUTUwgPSByW2hdLmljb24sIGEuYXBwZW5kQ2hpbGQocltoXS5lbCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlSGFtYnVyZ2VyTWVudShhKSwgZS5nbG9iYWxzLnpvb21FbmFibGVkID8gdGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpIDogZS5nbG9iYWxzLnBhbkVuYWJsZWQgPyB0aGlzLmVsUGFuLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSA6IGUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkICYmIHRoaXMuZWxTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLCB0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9jcmVhdGVIYW1idXJnZXJNZW51IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbE1lbnVJdGVtcyA9IFtdLCB0LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSwgbS5zZXRBdHRycyh0aGlzLmVsTWVudSwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtbWVudSIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFt7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleHBvcnRTVkciLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9TVkcKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleHBvcnRQTkciLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9QTkcKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleHBvcnRDU1YiLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9DU1YKICAgICAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgICAgICAgICB0aGlzLncuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFggfHwgZS5zcGxpY2UoMiwgMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSB0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLCB0aGlzLmVsTWVudUl0ZW1zW2ldLmlubmVySFRNTCA9IGVbaV0udGl0bGUsIG0uc2V0QXR0cnModGhpcy5lbE1lbnVJdGVtc1tpXSwgewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtbWVudS1pdGVtICIuY29uY2F0KGVbaV0ubmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlW2ldLnRpdGxlCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZFRvb2xiYXJFdmVudExpc3RlbmVycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZWxab29tUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhhbmRsZVpvb21SZXNldC5iaW5kKHRoaXMpKSwgdGhpcy5lbFNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsICJzZWxlY3Rpb24iKSksIHRoaXMuZWxab29tLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcywgInpvb20iKSksIHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhhbmRsZVpvb21Jbi5iaW5kKHRoaXMpKSwgdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhhbmRsZVpvb21PdXQuYmluZCh0aGlzKSksIHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZVBhbm5pbmcuYmluZCh0aGlzKSksIHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudG9nZ2xlTWVudS5iaW5kKHRoaXMpKSwgdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJleHBvcnRTVkciKSA/IGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0LmhhbmRsZURvd25sb2FkLmJpbmQodCwgInN2ZyIpKSA6IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJleHBvcnRQTkciKSA/IGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0LmhhbmRsZURvd25sb2FkLmJpbmQodCwgInBuZyIpKSA6IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJleHBvcnRDU1YiKSAmJiBlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsICJjc3YiKSkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDA7IGUgPCB0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoOyBlKyspIHRoaXMuZWxDdXN0b21JY29uc1tlXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudC5jdXN0b21JY29uc1tlXS5jbGljay5iaW5kKHRoaXMsIHRoaXMuY3R4LCB0aGlzLmN0eC53KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAidG9nZ2xlWm9vbVNlbGVjdGlvbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gInNlbGVjdGlvbiIgPT09IHQgPyBlLmN0eC50b29sYmFyLmVsU2VsZWN0aW9uIDogZS5jdHgudG9vbGJhci5lbFpvb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gInNlbGVjdGlvbiIgPT09IHQgPyAic2VsZWN0aW9uRW5hYmxlZCIgOiAiem9vbUVuYWJsZWQiOwogICAgICAgICAgICAgICAgICAgICAgICBlLncuZ2xvYmFsc1thXSA9ICFlLncuZ2xvYmFsc1thXSwgaS5jbGFzc0xpc3QuY29udGFpbnMoZS5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKSA/IGkuY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpIDogaS5jbGFzc0xpc3QuYWRkKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVsWm9vbSB8fCAodGhpcy5lbFpvb20gPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy16b29tLWljb24iKSksIHRoaXMuZWxQYW4gfHwgKHRoaXMuZWxQYW4gPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1wYW4taWNvbiIpKSwgdGhpcy5lbFNlbGVjdGlvbiB8fCAodGhpcy5lbFNlbGVjdGlvbiA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlT3RoZXJDb250cm9scygpLCAicGFuIiA9PT0gdCA/IHRoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQgPSAhMCA6IHRoaXMudy5nbG9iYWxzLnpvb21FbmFibGVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAicGFuIiA9PT0gdCA/IHRoaXMuZWxQYW4gOiB0aGlzLmVsWm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJwYW4iID09PSB0ID8gdGhpcy5lbFpvb20gOiB0aGlzLmVsUGFuOwogICAgICAgICAgICAgICAgICAgIGUgJiYgZS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksIGkgJiYgaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuc2VsZWN0ZWRDbGFzcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAidG9nZ2xlUGFubmluZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKSwgdC53Lmdsb2JhbHMucGFuRW5hYmxlZCA9ICF0LncuZ2xvYmFscy5wYW5FbmFibGVkLCB0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpID8gdC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QucmVtb3ZlKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcykgOiB0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5hZGQodC5jdHgudG9vbGJhci5zZWxlY3RlZENsYXNzKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ0b2dnbGVPdGhlckNvbnRyb2xzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLnBhbkVuYWJsZWQgPSAhMSwgZS5nbG9iYWxzLnpvb21FbmFibGVkID0gITEsIGUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkID0gITEsIHRoaXMuZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlKCksIFt0aGlzLmVsUGFuLCB0aGlzLmVsU2VsZWN0aW9uLCB0aGlzLmVsWm9vbV0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlICYmIGUuY2xhc3NMaXN0LnJlbW92ZSh0LnNlbGVjdGVkQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVpvb21JbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLmlzUmFuZ2VCYXIgJiYgKHRoaXMubWluWCA9IHQuZ2xvYmFscy5taW5ZLCB0aGlzLm1heFggPSB0Lmdsb2JhbHMubWF4WSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAodGhpcy5taW5YICsgdGhpcy5tYXhYKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAodGhpcy5taW5YICsgZSkgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gKHRoaXMubWF4WCArIGUpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuX2dldE5ld01pblhNYXhYKGksIGEpOwogICAgICAgICAgICAgICAgICAgIHQuZ2xvYmFscy5kaXNhYmxlWm9vbUluIHx8IHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLCBzLm1heFgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVpvb21PdXQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMuaXNSYW5nZUJhciAmJiAodGhpcy5taW5YID0gdC5nbG9iYWxzLm1pblksIHRoaXMubWF4WCA9IHQuZ2xvYmFscy5tYXhZKSwgISgiZGF0ZXRpbWUiID09PSB0LmNvbmZpZy54YXhpcy50eXBlICYmIG5ldyBEYXRlKHRoaXMubWluWCkuZ2V0VVRDRnVsbFllYXIoKSA8IDFlMykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAodGhpcy5taW5YICsgdGhpcy5tYXhYKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5taW5YIC0gKGUgLSB0aGlzLm1pblgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMubWF4WCAtIChlIC0gdGhpcy5tYXhYKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLl9nZXROZXdNaW5YTWF4WChpLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLmRpc2FibGVab29tT3V0IHx8IHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLCBzLm1heFgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZ2V0TmV3TWluWE1heFgiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudy5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pblg6IGkgPyBNYXRoLmZsb29yKHQpIDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4WDogaSA/IE1hdGguZmxvb3IoZSkgOiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ6b29tVXBkYXRlT3B0aW9ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQgfHwgdm9pZCAwICE9PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAodCA8IDEgJiYgKHQgPSAxLCBlID0gaS5nbG9iYWxzLmRhdGFQb2ludHMpLCBlIC0gdCA8IDIpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5nZXRCZWZvcmVab29tUmFuZ2UoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICYmIChhID0gcy54YXhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB4LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKSBvID0gbmV3IHEodGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsIG8sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmNvbmZpZy5jaGFydC5ncm91cCB8fCAoci55YXhpcyA9IG8pLCB0aGlzLncuZ2xvYmFscy56b29tZWQgPSAhMCwgdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyhyLCAhMSwgdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksIHRoaXMuem9vbUNhbGxiYWNrKGEsIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVab29tUmVzZXQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ6b29tQ2FsbGJhY2siLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLmV2Lnpvb21lZCAmJiB0aGlzLmV2Lnpvb21lZCh0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRCZWZvcmVab29tUmFuZ2UiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIHRoaXMuZXYuYmVmb3JlWm9vbSAmJiAoaSA9IHRoaXMuZXYuYmVmb3JlWm9vbSh0aGlzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICB5YXhpczogZQogICAgICAgICAgICAgICAgICAgIH0pKSwgaQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ0b2dnbGVNZW51IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmVsTWVudS5jbGFzc0xpc3QuY29udGFpbnMoImFwZXhjaGFydHMtbWVudS1vcGVuIikgPyB0LmVsTWVudS5jbGFzc0xpc3QucmVtb3ZlKCJhcGV4Y2hhcnRzLW1lbnUtb3BlbiIpIDogdC5lbE1lbnUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1tZW51LW9wZW4iKQogICAgICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVEb3dubG9hZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IGoodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdmciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5leHBvcnRUb1NWRyh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicG5nIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZXhwb3J0VG9QbmcodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNzdiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmV4cG9ydFRvQ1NWKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IGUuY29uZmlnLnNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5EZWxpbWl0ZXI6IGUuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5jb2x1bW5EZWxpbWl0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVab29tUmVzZXQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC53OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmxhc3RYQXhpcy5taW4gPSB2b2lkIDAsIGUuZ2xvYmFscy5sYXN0WEF4aXMubWF4ID0gdm9pZCAwLCB0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZVJlc2V0Wm9vbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAmJiB0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoaSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkICYmIHQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogZS5jb25maWcueGF4aXMubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBlLmNvbmZpZy54YXhpcy5tYXgKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuZ2xvYmFscy56b29tZWQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0LmN0eC5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoeC5jbG9uZShlLmdsb2JhbHMuaW5pdGlhbFNlcmllcykpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLCBlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZGVzdHJveSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbFpvb20gPSBudWxsLCB0aGlzLmVsWm9vbUluID0gbnVsbCwgdGhpcy5lbFpvb21PdXQgPSBudWxsLCB0aGlzLmVsUGFuID0gbnVsbCwgdGhpcy5lbFNlbGVjdGlvbiA9IG51bGwsIHRoaXMuZWxab29tUmVzZXQgPSBudWxsLCB0aGlzLmVsTWVudUljb24gPSBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBndCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgbihpLCB0KTsKICAgICAgICAgICAgdmFyIGUgPSBkKGkpOwoKICAgICAgICAgICAgZnVuY3Rpb24gaSh0KSB7CiAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMsIGkpLCAocyA9IGUuY2FsbCh0aGlzLCB0KSkuY3R4ID0gdCwgcy53ID0gdC53LCBzLmRyYWdnZWQgPSAhMSwgcy5ncmFwaGljcyA9IG5ldyBtKHMuY3R4KSwgcy5ldmVudExpc3QgPSBbIm1vdXNlZG93biIsICJtb3VzZWxlYXZlIiwgIm1vdXNlbW92ZSIsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIsICJtb3VzZXVwIiwgInRvdWNoZW5kIl0sIHMuY2xpZW50WCA9IDAsIHMuY2xpZW50WSA9IDAsIHMuc3RhcnRYID0gMCwgcy5lbmRYID0gMCwgcy5kcmFnWCA9IDAsIHMuc3RhcnRZID0gMCwgcy5lbmRZID0gMCwgcy5kcmFnWSA9IDAsIHMubW92ZURpcmVjdGlvbiA9ICJub25lIiwgcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKGksIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54eVJhdGlvcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy54eVJhdGlvcyA9IGksIHRoaXMuem9vbVJlY3QgPSB0aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsIDAsIDAsIDApLCB0aGlzLnNlbGVjdGlvblJlY3QgPSB0aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsIDAsIDAsIDApLCB0aGlzLmdyaWRSZWN0ID0gYS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtZ3JpZCIpLCB0aGlzLnpvb21SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy16b29tLXJlY3QiKSwgdGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCIpLCBhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnpvb21SZWN0KSwgYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodGhpcy5zZWxlY3Rpb25SZWN0KSwgIngiID09PSBhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZSA/IHRoaXMuc2xEcmFnZ2FibGVSZWN0ID0gdGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pblg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pblk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFg6IGEuZ2xvYmFscy5ncmlkV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFk6IGEuZ2xvYmFscy5ncmlkSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSkub24oImRyYWdtb3ZlIiwgdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsICJkcmFnZ2luZyIpKSA6ICJ5IiA9PT0gYS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUgPyB0aGlzLnNsRHJhZ2dhYmxlUmVjdCA9IHRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoewogICAgICAgICAgICAgICAgICAgICAgICBtaW5YOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhYOiBhLmdsb2JhbHMuZ3JpZFdpZHRoCiAgICAgICAgICAgICAgICAgICAgfSkub24oImRyYWdtb3ZlIiwgdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsICJkcmFnZ2luZyIpKSA6IHRoaXMuc2xEcmFnZ2FibGVSZWN0ID0gdGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSgpLm9uKCJkcmFnbW92ZSIsIHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLCAiZHJhZ2dpbmciKSksIHRoaXMucHJlc2VsZWN0ZWRTZWxlY3Rpb24oKSwgdGhpcy5ob3ZlckFyZWEgPSBhLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIiLmNvbmNhdChhLmdsb2JhbHMuY2hhcnRDbGFzcywgIiAuYXBleGNoYXJ0cy1zdmciKSksIHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtem9vbWFibGUiKSwgdGhpcy5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmhvdmVyQXJlYS5hZGRFdmVudExpc3RlbmVyKHQsIHMuc3ZnTW91c2VFdmVudHMuYmluZChzLCBpKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkZXN0cm95IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNsRHJhZ2dhYmxlUmVjdCAmJiAodGhpcy5zbERyYWdnYWJsZVJlY3QuZHJhZ2dhYmxlKCExKSwgdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksIHRoaXMuc2VsZWN0aW9uUmVjdC5vZmYoKSksIHRoaXMuc2VsZWN0aW9uUmVjdCA9IG51bGwsIHRoaXMuem9vbVJlY3QgPSBudWxsLCB0aGlzLmdyaWRSZWN0ID0gbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzdmdNb3VzZUV2ZW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuY3R4LnRvb2xiYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmdsb2JhbHMuem9vbUVuYWJsZWQgPyBpLmNvbmZpZy5jaGFydC56b29tLnR5cGUgOiBpLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuY29uZmlnLmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnNoaWZ0S2V5ID8gKHRoaXMuc2hpZnRXYXNQcmVzc2VkID0gITAsIHMuZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyKCJwYW4iID09PSBvID8gInpvb20iIDogInBhbiIpKSA6IHRoaXMuc2hpZnRXYXNQcmVzc2VkICYmIChzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihvKSwgdGhpcy5zaGlmdFdhc1ByZXNzZWQgPSAhMSksIGUudGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBsID0gZS50YXJnZXQuY2xhc3NMaXN0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQucGFyZW50Tm9kZSAmJiBudWxsICE9PSBlLnRhcmdldC5wYXJlbnROb2RlICYmIChuID0gZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QpLCAhKGwuY29udGFpbnMoImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QiKSB8fCBsLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIiKSB8fCBsLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IikgfHwgbiAmJiBuLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLXRvb2xiYXIiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmNsaWVudFggPSAidG91Y2htb3ZlIiA9PT0gZS50eXBlIHx8ICJ0b3VjaHN0YXJ0IiA9PT0gZS50eXBlID8gZS50b3VjaGVzWzBdLmNsaWVudFggOiAidG91Y2hlbmQiID09PSBlLnR5cGUgPyBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggOiBlLmNsaWVudFgsIGEuY2xpZW50WSA9ICJ0b3VjaG1vdmUiID09PSBlLnR5cGUgfHwgInRvdWNoc3RhcnQiID09PSBlLnR5cGUgPyBlLnRvdWNoZXNbMF0uY2xpZW50WSA6ICJ0b3VjaGVuZCIgPT09IGUudHlwZSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSA6IGUuY2xpZW50WSwgIm1vdXNlZG93biIgPT09IGUudHlwZSAmJiAxID09PSBlLndoaWNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBhLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuc3RhcnRYID0gYS5jbGllbnRYIC0gaC5sZWZ0LCBhLnN0YXJ0WSA9IGEuY2xpZW50WSAtIGgudG9wLCBhLmRyYWdnZWQgPSAhMSwgYS53Lmdsb2JhbHMubW91c2Vkb3duID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoIm1vdXNlbW92ZSIgPT09IGUudHlwZSAmJiAxID09PSBlLndoaWNoIHx8ICJ0b3VjaG1vdmUiID09PSBlLnR5cGUpICYmIChhLmRyYWdnZWQgPSAhMCwgaS5nbG9iYWxzLnBhbkVuYWJsZWQgPyAoaS5nbG9iYWxzLnNlbGVjdGlvbiA9IG51bGwsIGEudy5nbG9iYWxzLm1vdXNlZG93biAmJiBhLnBhbkRyYWdnaW5nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbXR5cGU6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh5UmF0aW9zOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogKGEudy5nbG9iYWxzLm1vdXNlZG93biAmJiBpLmdsb2JhbHMuem9vbUVuYWJsZWQgfHwgYS53Lmdsb2JhbHMubW91c2Vkb3duICYmIGkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSAmJiAoYS5zZWxlY3Rpb24gPSBhLnNlbGVjdGlvbkRyYXdpbmcoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tdHlwZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksICJtb3VzZXVwIiA9PT0gZS50eXBlIHx8ICJ0b3VjaGVuZCIgPT09IGUudHlwZSB8fCAibW91c2VsZWF2ZSIgPT09IGUudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLncuZ2xvYmFscy5tb3VzZWRvd24gJiYgKGEuZW5kWCA9IGEuY2xpZW50WCAtIGMubGVmdCwgYS5lbmRZID0gYS5jbGllbnRZIC0gYy50b3AsIGEuZHJhZ1ggPSBNYXRoLmFicyhhLmVuZFggLSBhLnN0YXJ0WCksIGEuZHJhZ1kgPSBNYXRoLmFicyhhLmVuZFkgLSBhLnN0YXJ0WSksIChpLmdsb2JhbHMuem9vbUVuYWJsZWQgfHwgaS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpICYmIGEuc2VsZWN0aW9uRHJhd24oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tdHlwZTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmdsb2JhbHMucGFuRW5hYmxlZCAmJiBpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMgJiYgYS5kZWxheWVkUGFuU2Nyb2xsZWQoKSksIGkuZ2xvYmFscy56b29tRW5hYmxlZCAmJiBhLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCksIGEuZHJhZ2dlZCA9ICExLCBhLncuZ2xvYmFscy5tb3VzZWRvd24gPSAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25SZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUud2lkdGggPiAwICYmIGUuaGVpZ2h0ID4gMCAmJiB0aGlzLnNsRHJhZ2dhYmxlUmVjdC5zZWxlY3RpemUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzOiAibCwgciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFNpemU6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludFR5cGU6ICJyZWN0IgogICAgICAgICAgICAgICAgICAgICAgICB9KS5yZXNpemUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluWTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhYOiB0Lmdsb2JhbHMuZ3JpZFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFk6IHQuZ2xvYmFscy5ncmlkSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLm9uKCJyZXNpemluZyIsIHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLCAicmVzaXppbmciKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInByZXNlbGVjdGVkU2VsZWN0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMueHlSYXRpb3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0Lmdsb2JhbHMuem9vbUVuYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQuZ2xvYmFscy5zZWxlY3Rpb24gJiYgbnVsbCAhPT0gdC5nbG9iYWxzLnNlbGVjdGlvbikgdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCh0Lmdsb2JhbHMuc2VsZWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodm9pZCAwICE9PSB0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluICYmIHZvaWQgMCAhPT0gdC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICh0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluIC0gdC5nbG9iYWxzLm1pblgpIC8gZS54UmF0aW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdC5nbG9iYWxzLmdyaWRXaWR0aCAtICh0Lmdsb2JhbHMubWF4WCAtIHQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpIC8gZS54UmF0aW8gLSBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdC5nbG9iYWxzLmdyaWRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlWDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVZOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkVuYWJsZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdTZWxlY3Rpb25SZWN0KGEpLCB0aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCksICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24gJiYgdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbih0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3U2VsZWN0aW9uUmVjdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC50cmFuc2xhdGVYLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSByID8gMCA6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnRyYW5zbGF0ZVksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB2b2lkIDAgPT09IG4gPyAwIDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRoaXMuem9vbVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLnNlbGVjdGlvblJlY3Q7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dlZCB8fCBudWxsICE9PSBoLmdsb2JhbHMuc2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIgKyBvICsgIiwgIiArIGwgKyAiKSIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaC5nbG9iYWxzLnpvb21FbmFibGVkICYmIHRoaXMuZHJhZ2dlZCAmJiAoYSA8IDAgJiYgKGEgPSAxKSwgYy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxsLW9wYWNpdHkiOiBoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IGguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLW9wYWNpdHkiOiBoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLm9wYWNpdHkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG0uc2V0QXR0cnMoYy5ub2RlLCBnKSksIGguZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkICYmIChkLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYSA+IDAgPyBhIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcyA+IDAgPyBzIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLmNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGwtb3BhY2l0eSI6IGguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLm9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IGguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLXdpZHRoIjogaC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJva2UtZGFzaGFycmF5IjogaC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5kYXNoQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLW9wYWNpdHkiOiBoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLm9wYWNpdHkKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG0uc2V0QXR0cnMoZC5ub2RlLCBnKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhpZGVTZWxlY3Rpb25SZWN0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdCAmJiB0LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2VsZWN0aW9uRHJhd2luZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC56b29tdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5zdGFydFggLSAxLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcy5zdGFydFksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gcy5jbGllbnRYIC0gci5sZWZ0IC0gbywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMuY2xpZW50WSAtIHIudG9wIC0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhjICsgbykgPiBhLmdsb2JhbHMuZ3JpZFdpZHRoID8gYyA9IGEuZ2xvYmFscy5ncmlkV2lkdGggLSBvIDogcy5jbGllbnRYIC0gci5sZWZ0IDwgMCAmJiAoYyA9IG8pLCBvID4gcy5jbGllbnRYIC0gci5sZWZ0ICYmIChsID0gITAsIGMgPSBNYXRoLmFicyhjKSksIG4gPiBzLmNsaWVudFkgLSByLnRvcCAmJiAoaCA9ICEwLCBkID0gTWF0aC5hYnMoZCkpLCBnID0gIngiID09PSBpID8gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBsID8gbyAtIGMgOiBvLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhLmdsb2JhbHMuZ3JpZEhlaWdodAogICAgICAgICAgICAgICAgICAgIH0gOiAieSIgPT09IGkgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGggPyBuIC0gZCA6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLmdsb2JhbHMuZ3JpZFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGQKICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICB4OiBsID8gbyAtIGMgOiBvLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBoID8gbiAtIGQgOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYywKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkCiAgICAgICAgICAgICAgICAgICAgfSwgcy5kcmF3U2VsZWN0aW9uUmVjdChnKSwgcy5zZWxlY3Rpb25EcmFnZ2luZygicmVzaXppbmciKSwgZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZWxlY3Rpb25EcmFnZ2luZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMueHlSYXRpb3MsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNlbGVjdGlvblJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICJyZXNpemluZyIgPT09IHQgJiYgKG8gPSAzMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChyLm5vZGUuZ2V0QXR0cmlidXRlKHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogbigieCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbigieSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG4oIndpZHRoIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4oImhlaWdodCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLnNlbGVjdGlvbiA9IGwsICJmdW5jdGlvbiIgPT0gdHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24gJiYgYS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQgJiYgKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksIHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IGEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4gKyAoZS5sZWZ0IC0gdC5sZWZ0KSAqIHMueFJhdGlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4gKyAoZS5yaWdodCAtIHQubGVmdCkgKiBzLnhSYXRpbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiBhLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluICsgKHQuYm90dG9tIC0gZS5ib3R0b20pICogcy55UmF0aW9bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogYS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heCAtIChlLnRvcCAtIHQudG9wKSAqIHMueVJhdGlvWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihpLmN0eCwgbyksIGEuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQgJiYgdm9pZCAwICE9PSBhLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZCAmJiBhLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZChpLmN0eCwgbykKICAgICAgICAgICAgICAgICAgICB9KSwgbykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNlbGVjdGlvbkRyYXduIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lnpvb210eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMueHlSYXRpb3MsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmN0eC50b29sYmFyOwogICAgICAgICAgICAgICAgICAgIGlmIChzLnN0YXJ0WCA+IHMuZW5kWCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHMuc3RhcnRYOwogICAgICAgICAgICAgICAgICAgICAgICBzLnN0YXJ0WCA9IHMuZW5kWCwgcy5lbmRYID0gbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAocy5zdGFydFkgPiBzLmVuZFkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBzLnN0YXJ0WTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5zdGFydFkgPSBzLmVuZFksIHMuZW5kWSA9IGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLmlzUmFuZ2VCYXIgPyAoaCA9IGEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4gKyBzLnN0YXJ0WCAqIHIuaW52ZXJ0ZWRZUmF0aW8sIGMgPSBhLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluICsgcy5lbmRYICogci5pbnZlcnRlZFlSYXRpbykgOiAoaCA9IGEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4gKyBzLnN0YXJ0WCAqIHIueFJhdGlvLCBjID0gYS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbiArIHMuZW5kWCAqIHIueFJhdGlvKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4IC0gci55UmF0aW9bZV0gKiBzLnN0YXJ0WSksIGcucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4IC0gci55UmF0aW9bZV0gKiBzLmVuZFkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcy5kcmFnZ2VkICYmIChzLmRyYWdYID4gMTAgfHwgcy5kcmFnWSA+IDEwKSAmJiBoICE9PSBjKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS5nbG9iYWxzLnpvb21FbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB4LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmdsb2JhbHMuem9vbWVkID0gITAsIGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAoaCA9IE1hdGguZmxvb3IoaCksIGMgPSBNYXRoLmZsb29yKGMpLCBoIDwgMSAmJiAoaCA9IDEsIGMgPSBhLmdsb2JhbHMuZGF0YVBvaW50cyksIGMgLSBoIDwgMiAmJiAoYyA9IGggKyAxKSksICJ4eSIgIT09IGkgJiYgIngiICE9PSBpIHx8IChmID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAieHkiICE9PSBpICYmICJ5IiAhPT0gaSB8fCB1LmZvckVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdVtlXS5taW4gPSBnW2VdLCB1W2VdLm1heCA9IGRbZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGEuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IG5ldyBxKHMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gcC5hdXRvU2NhbGVZKHMuY3R4LCB1LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiBmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvLmdldEJlZm9yZVpvb21SYW5nZShmLCB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiICYmIChmID0gYi54YXhpcyA/IGIueGF4aXMgOiBmLCB1ID0gYi55YXhpcyA/IGIueWF4aXMgOiB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmNvbmZpZy5jaGFydC5ncm91cCB8fCAodi55YXhpcyA9IHUpLCBzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHYsICExLCBzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCAmJiBvLnpvb21DYWxsYmFjayhmLCB1KQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtLCB5ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogYwogICAgICAgICAgICAgICAgICAgICAgICB9LCAieHkiICE9PSBpICYmICJ5IiAhPT0gaSB8fCAoeSA9IHguY2xvbmUoYS5jb25maWcueWF4aXMpKS5mb3JFYWNoKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5W2VdLm1pbiA9IGdbZV0sIHlbZV0ubWF4ID0gZFtlXQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGEuZ2xvYmFscy5zZWxlY3Rpb24gPSBzLnNlbGVjdGlvbiwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiAmJiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKHMuY3R4LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlheGlzOiB5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwYW5EcmFnZ2luZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZTsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBpLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBpLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLnggLSBhLmNsaWVudFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi55IC0gYS5jbGllbnRZOwogICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhzKSA+IE1hdGguYWJzKHIpICYmIHMgPiAwID8gdGhpcy5tb3ZlRGlyZWN0aW9uID0gImxlZnQiIDogTWF0aC5hYnMocykgPiBNYXRoLmFicyhyKSAmJiBzIDwgMCA/IHRoaXMubW92ZURpcmVjdGlvbiA9ICJyaWdodCIgOiBNYXRoLmFicyhyKSA+IE1hdGguYWJzKHMpICYmIHIgPiAwID8gdGhpcy5tb3ZlRGlyZWN0aW9uID0gInVwIiA6IE1hdGguYWJzKHIpID4gTWF0aC5hYnMocykgJiYgciA8IDAgJiYgKHRoaXMubW92ZURpcmVjdGlvbiA9ICJkb3duIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogYS5jbGllbnRYLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBhLmNsaWVudFkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gaS5nbG9iYWxzLmlzUmFuZ2VCYXIgPyBpLmdsb2JhbHMubWluWSA6IGkuZ2xvYmFscy5taW5YLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5nbG9iYWxzLmlzUmFuZ2VCYXIgPyBpLmdsb2JhbHMubWF4WSA6IGkuZ2xvYmFscy5tYXhYOwogICAgICAgICAgICAgICAgICAgIGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyB8fCBhLnBhblNjcm9sbGVkKG8sIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRlbGF5ZWRQYW5TY3JvbGxlZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Lmdsb2JhbHMubWluWCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2xvYmFscy5tYXhYLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gKHQuZ2xvYmFscy5tYXhYIC0gdC5nbG9iYWxzLm1pblgpIC8gMjsKICAgICAgICAgICAgICAgICAgICAibGVmdCIgPT09IHRoaXMubW92ZURpcmVjdGlvbiA/IChlID0gdC5nbG9iYWxzLm1pblggKyBhLCBpID0gdC5nbG9iYWxzLm1heFggKyBhKSA6ICJyaWdodCIgPT09IHRoaXMubW92ZURpcmVjdGlvbiAmJiAoZSA9IHQuZ2xvYmFscy5taW5YIC0gYSwgaSA9IHQuZ2xvYmFscy5tYXhYIC0gYSksIGUgPSBNYXRoLmZsb29yKGUpLCBpID0gTWF0aC5mbG9vcihpKSwgdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KHsKICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogaQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgZSwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicGFuU2Nyb2xsZWQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMueHlSYXRpb3MsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB4LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEueFJhdGlvLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5nbG9iYWxzLm1pblgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBpLmdsb2JhbHMubWF4WDsKICAgICAgICAgICAgICAgICAgICBpLmdsb2JhbHMuaXNSYW5nZUJhciAmJiAociA9IGEuaW52ZXJ0ZWRZUmF0aW8sIG8gPSBpLmdsb2JhbHMubWluWSwgbiA9IGkuZ2xvYmFscy5tYXhZKSwgImxlZnQiID09PSB0aGlzLm1vdmVEaXJlY3Rpb24gPyAodCA9IG8gKyBpLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMTUgKiByLCBlID0gbiArIGkuZ2xvYmFscy5ncmlkV2lkdGggLyAxNSAqIHIpIDogInJpZ2h0IiA9PT0gdGhpcy5tb3ZlRGlyZWN0aW9uICYmICh0ID0gbyAtIGkuZ2xvYmFscy5ncmlkV2lkdGggLyAxNSAqIHIsIGUgPSBuIC0gaS5nbG9iYWxzLmdyaWRXaWR0aCAvIDE1ICogciksIGkuZ2xvYmFscy5pc1JhbmdlQmFyIHx8ICh0IDwgaS5nbG9iYWxzLmluaXRpYWxNaW5YIHx8IGUgPiBpLmdsb2JhbHMuaW5pdGlhbE1heFgpICYmICh0ID0gbywgZSA9IG4pOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gewogICAgICAgICAgICAgICAgICAgICAgICBtaW46IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heDogZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyAmJiAocyA9IG5ldyBxKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LCBzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiBsCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBoID0gewogICAgICAgICAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGkuY29uZmlnLmNoYXJ0Lmdyb3VwIHx8IChoLnlheGlzID0gcyksIHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydChoLCB0LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ1cGRhdGVTY3JvbGxlZENoYXJ0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LCAhMSwgITEpLCAiZnVuY3Rpb24iID09IHR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQgJiYgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkKHRoaXMuY3R4LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IGkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgaQogICAgICAgIH0oZHQpLAogICAgICAgIHV0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy53ID0gZS53LCB0aGlzLnR0Q3R4ID0gZSwgdGhpcy5jdHggPSBlLmN0eAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXROZWFyZXN0VmFsdWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmhvdmVyQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuZWxHcmlkLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jbGllbnRYLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5jbGllbnRZLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG8ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBvLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4gLyAoci5nbG9iYWxzLmRhdGFQb2ludHMgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwgLyByLmdsb2JhbHMuZGF0YVBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuaGFzQmFycygpOwogICAgICAgICAgICAgICAgICAgICFyLmdsb2JhbHMuY29tYm9DaGFydHMgJiYgIWQgfHwgci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljIHx8IChoID0gbiAvIHIuZ2xvYmFscy5kYXRhUG9pbnRzKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGEgLSBvLmxlZnQgLSByLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzIC0gby50b3A7CiAgICAgICAgICAgICAgICAgICAgZyA8IDAgfHwgdSA8IDAgfHwgZyA+IG4gfHwgdSA+IGwgPyAoZS5jbGFzc0xpc3QucmVtb3ZlKCJob3ZlcmluZy16b29tIiksIGUuY2xhc3NMaXN0LnJlbW92ZSgiaG92ZXJpbmctcGFuIikpIDogci5nbG9iYWxzLnpvb21FbmFibGVkID8gKGUuY2xhc3NMaXN0LnJlbW92ZSgiaG92ZXJpbmctcGFuIiksIGUuY2xhc3NMaXN0LmFkZCgiaG92ZXJpbmctem9vbSIpKSA6IHIuZ2xvYmFscy5wYW5FbmFibGVkICYmIChlLmNsYXNzTGlzdC5yZW1vdmUoImhvdmVyaW5nLXpvb20iKSwgZS5jbGFzc0xpc3QuYWRkKCJob3ZlcmluZy1wYW4iKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBNYXRoLnJvdW5kKGcgLyBoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IE1hdGguZmxvb3IodSAvIGMpOwogICAgICAgICAgICAgICAgICAgIGQgJiYgIXIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyAmJiAoZiA9IE1hdGguY2VpbChnIC8gaCksIGYgLT0gMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKHIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0ucHVzaChbdFswXSArIDFlLTZdLmNvbmNhdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByLmdsb2JhbHMuc2VyaWVzWXZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LnB1c2goW3RbMF0gKyAxZS02XS5jb25jYXQodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbSA9IG0ubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5pc051bWJlcih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgeSA9IHkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5pc051bWJlcih0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5nbG9iYWxzLmlzWE51bWVyaWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSB0aGlzLnR0Q3R4LmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGcgKiAody53aWR0aCAvIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IHUgKiAody5oZWlnaHQgLyBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICh2ID0gdGhpcy5jbG9zZXN0SW5NdWx0aUFycmF5KGssIEEsIG0sIHkpKS5pbmRleCwgZiA9IHYuaiwgbnVsbCAhPT0gYiAmJiAobSA9IHIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdLCBmID0gKHYgPSB0aGlzLmNsb3Nlc3RJbkFycmF5KGssIG0pKS5pbmRleCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4ID0gbnVsbCA9PT0gYiA/IC0xIDogYiwgKCFmIHx8IGYgPCAxKSAmJiAoZiA9IDApLCByLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsID8gci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXggPSBwIDogci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXggPSBmLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkU2VyaWVzOiBiLAogICAgICAgICAgICAgICAgICAgICAgICBqOiByLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsID8gcCA6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyWDogZywKICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJZOiB1CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJjbG9zZXN0SW5NdWx0aUFycmF5IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IC0xOwogICAgICAgICAgICAgICAgICAgIHMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoID4gMSA/IHIgPSB0aGlzLmdldEZpcnN0QWN0aXZlWEFycmF5KGkpIDogbyA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBpW3JdWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gTWF0aC5hYnModCAtIGwpOwogICAgICAgICAgICAgICAgICAgIGlmIChpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gTWF0aC5hYnModCAtIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPCBoICYmIChoID0gYSwgbiA9IGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAtMSAhPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGFbcl1bbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gTWF0aC5hYnMoZSAtIGMpOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gciwgYS5mb3JFYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IE1hdGguYWJzKGUgLSB0W25dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPCBkICYmIChkID0gYSwgbyA9IGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbywKICAgICAgICAgICAgICAgICAgICAgICAgajogbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0Rmlyc3RBY3RpdmVYQXJyYXkiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy53LCBpID0gMCwgYSA9IHQubWFwKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggPiAwID8gZSA6IC0xCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcyA9IDA7IHMgPCBhLmxlbmd0aDsgcysrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IGFbc10gJiYgLTEgPT09IGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YocykgJiYgLTEgPT09IGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YocykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhW3NdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNsb3Nlc3RJbkFycmF5IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGVbMF0sIGEgPSBudWxsLCBzID0gTWF0aC5hYnModCAtIGkpLCByID0gMDsgciA8IGUubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBNYXRoLmFicyh0IC0gZVtyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPCBzICYmIChzID0gbywgYSA9IHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc1hvdmVybGFwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudy5nbG9iYWxzLnNlcmllc1guZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSB0WzBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaS5sZW5ndGggPiAwKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gMDsgYSA8IGkubGVuZ3RoIC0gMTsgYSsrKSB2b2lkIDAgIT09IGlbYV1bdF0gJiYgdm9pZCAwICE9PSBpW2EgKyAxXVt0XSAmJiBpW2FdW3RdICE9PSBpW2EgKyAxXVt0XSAmJiBlLnB1c2goInVuRXF1YWwiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZS5sZW5ndGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaXNJbml0aWFsU2VyaWVzU2FtZUxlbiIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9ICEwLCBlID0gdGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcywgaSA9IDA7IGkgPCBlLmxlbmd0aCAtIDE7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbaV0uZGF0YS5sZW5ndGggIT09IGVbaSArIDFdLmRhdGEubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0QmFyc0hlaWdodCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB1KHQpLnJlZHVjZSgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCArIGUuZ2V0QkJveCgpLmhlaWdodAogICAgICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRFbE1hcmtlcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIiAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEFsbE1hcmtlcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIik7CiAgICAgICAgICAgICAgICAgICAgKHQgPSB1KHQpKS5zb3J0KChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gTnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhOnJlYWxJbmRleCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBOdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IikpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA8IGkgPyAxIDogYSA+IGkgPyAtMSA6IDAKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHVzaCh0LnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLW1hcmtlciIpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYXNNYXJrZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbE1hcmtlcnMoKS5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEVsQmFycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtYmFyLXNlcmllcywgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcywgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhc0JhcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVsQmFycygpLmxlbmd0aCA+IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0SG92ZXJNYXJrZXJTaXplIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gaSAmJiAoaSA9IGUuZ2xvYmFscy5tYXJrZXJzLnNpemVbdF0gKyBlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLCBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudHRDdHg7CiAgICAgICAgICAgICAgICAgICAgMCA9PT0gaS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLmxlbmd0aCAmJiAoaS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAiKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IGkuYWxsVG9vbHRpcFNlcmllc0dyb3VwcywgcyA9IDA7IHMgPCBhLmxlbmd0aDsgcysrKSAiZW5hYmxlIiA9PT0gdCA/IChhW3NdLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIiksIGFbc10uc3R5bGUuZGlzcGxheSA9IGUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSkgOiAoYVtzXS5jbGFzc0xpc3QucmVtb3ZlKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpLCBhW3NdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBmdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy5jdHggPSBlLmN0eCwgdGhpcy50dEN0eCA9IGUsIHRoaXMudG9vbHRpcFV0aWwgPSBuZXcgdXQoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1Nlcmllc1RleHRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnNoYXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHZvaWQgMCA9PT0gZSB8fCBlLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC50dEl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdm9pZCAwID09PSBzID8gMCA6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG8gPyBudWxsIDogbywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC5lLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gZC5jb25maWcudG9vbHRpcC5jdXN0b20gPyB0aGlzLmhhbmRsZUN1c3RvbVRvb2x0aXAoewogICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBuLAogICAgICAgICAgICAgICAgICAgICAgICB5MTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGQKICAgICAgICAgICAgICAgICAgICB9KSA6IHRoaXMudG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXMoaSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0aGlzLmdldFZhbHVlc1RvUHJpbnQoewogICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBuCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmludExhYmVscyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGo6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogZywKICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBlOiBjCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aCA9IHUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsIHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQgPSB1LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwcmludExhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQudmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC50dEl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5zaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0LmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF0gJiYgYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdICYmIEFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gby54VmFsLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gby56VmFsLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gby54QXhpc1RUVmFsLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjLmdsb2JhbHMuY29sb3JzW3NdOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IHIgJiYgYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkICYmIChiID0gYy5nbG9iYWxzLmNvbG9yc1tyXSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdiA9IGZ1bmN0aW9uKHQsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gYS5nZXRGb3JtYXR0ZXJzKHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGEuZ2V0U2VyaWVzTmFtZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IHYueUxiVGl0bGVGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksICJ0cmVlbWFwIiA9PT0gYy5jb25maWcuY2hhcnQudHlwZSAmJiAoeCA9IHYueUxiVGl0bGVGb3JtYXR0ZXIoU3RyaW5nKGMuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdLngpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBjLmdsb2JhbHMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gYy5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXIgPyBvIDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLmdsb2JhbHMuYXhpc0NoYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1t0XVtyXSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBjLmdsb2JhbHMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKSB2ID0gYS5nZXRGb3JtYXR0ZXJzKG0pLCB4ID0gYS5nZXRTZXJpZXNOYW1lKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IHYueUxiVGl0bGVGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBiID0gYy5nbG9iYWxzLmNvbG9yc1ttXSwgaSA9IHkobSksIGcobSkgJiYgKGQgPSBjLmdsb2JhbHMuc2VyaWVzR29hbHNbbV1bcl0ubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDogdi55TGJGb3JtYXR0ZXIodC52YWx1ZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdywgayA9IG51bGwgPT0gaCB8fCBudWxsID09PSAodyA9IGgudGFyZ2V0KSB8fCB2b2lkIDAgPT09IHcgPyB2b2lkIDAgOiB3LmdldEF0dHJpYnV0ZSgiZmlsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrICYmIChiID0gLTEgIT09IGsuaW5kZXhPZigidXJsIikgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGsuc3Vic3RyKDQpLnNsaWNlKDAsIC0xKSkuY2hpbGROb2Rlc1swXS5nZXRBdHRyaWJ1dGUoInN0cm9rZSIpIDogayksIGkgPSB5KHMpLCBnKHMpICYmIEFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdKSAmJiAoZCA9IGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiB2LnlMYkZvcm1hdHRlcih0LnZhbHVlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsID09PSByICYmIChpID0gdi55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1tzXSwgZShlKHt9LCBjKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgYS5ET01IYW5kbGluZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2FsVmFsczogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFZhbDogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXNUVFZhbDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgelZhbDogZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcENvbG9yOiBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9LCBtID0gMCwgeSA9IGMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoIC0gMTsgbSA8IGMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyBtKyssIHktLSkgdihtLCB5KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRGb3JtYXR0ZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBpLmdsb2JhbHMudHRWYWwgPyBBcnJheS5pc0FycmF5KGkuZ2xvYmFscy50dFZhbCkgPyAoYSA9IGkuZ2xvYmFscy50dFZhbFt0XSAmJiBpLmdsb2JhbHMudHRWYWxbdF0uZm9ybWF0dGVyLCBlID0gaS5nbG9iYWxzLnR0VmFsW3RdICYmIGkuZ2xvYmFscy50dFZhbFt0XS50aXRsZSAmJiBpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUuZm9ybWF0dGVyKSA6IChhID0gaS5nbG9iYWxzLnR0VmFsLmZvcm1hdHRlciwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgaS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlciAmJiAoZSA9IGkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXIpKSA6IGUgPSBpLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLCAiZnVuY3Rpb24iICE9IHR5cGVvZiBhICYmIChhID0gaS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0gPyBpLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXSA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9KSwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSAmJiAoZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9KSwgewogICAgICAgICAgICAgICAgICAgICAgICB5TGJGb3JtYXR0ZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHlMYlRpdGxlRm9ybWF0dGVyOiBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTZXJpZXNOYW1lIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmZuLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuc2VyaWVzSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmosCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiByLmdsb2JhbHMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IHIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJET01IYW5kbGluZyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQuaTsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQudCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQudHRJdGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQudmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5zZXJpZXNOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5zaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnBDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMudHRDdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzLnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMuZ29hbFZhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBzLnhWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzLnhBeGlzVFRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBzLnpWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHAgPSBhW2VdLmNoaWxkcmVuLCBsLmNvbmZpZy50b29sdGlwLmZpbGxTZXJpZXNDb2xvciAmJiAoYVtlXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBuLCBwWzBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIpLCBoLnNob3dUb29sdGlwVGl0bGUgJiYgKG51bGwgPT09IGgudG9vbHRpcFRpdGxlICYmIChoLnRvb2x0aXBUaXRsZSA9IGwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUiKSksIGgudG9vbHRpcFRpdGxlLmlubmVySFRNTCA9IGcpLCBoLmlzWEF4aXNUb29sdGlwRW5hYmxlZCAmJiAoaC54YXhpc1Rvb2x0aXBUZXh0LmlubmVySFRNTCA9ICIiICE9PSB1ID8gdSA6IGcpOwogICAgICAgICAgICAgICAgICAgIHZhciB4ID0gYVtlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbCIpOwogICAgICAgICAgICAgICAgICAgIHggJiYgKHguaW5uZXJIVE1MID0gciB8fCAiIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhW2VdLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgYiAmJiAoYi5pbm5lckhUTUwgPSB2b2lkIDAgIT09IGMgPyBjIDogIiIpLCBwWzBdICYmIHBbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIikgJiYgKGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMgJiYgQXJyYXkuaXNBcnJheShsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzKSAmJiAobiA9IGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnNbZV0pLCBwWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IG4pLCBsLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93IHx8IChwWzBdLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIpOwogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gYVtlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGFbZV0ucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoICYmIGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAiPGRpdiA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gIjxkaXY+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZm9yRWFjaCgoZnVuY3Rpb24oaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gJyA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4Ij48c3BhbiBjbGFzcz0iYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICcuY29uY2F0KGkuYXR0cnMuc3Ryb2tlQ29sb3IsICc7IGhlaWdodDogM3B4OyBib3JkZXItcmFkaXVzOiAwOyB0b3A6IDVweDsiPjwvc3Bhbj4gJykuY29uY2F0KGkuYXR0cnMubmFtZSwgIjwvZGl2PiIpLCBlICs9ICI8ZGl2PiIuY29uY2F0KGkudmFsLCAiPC9kaXY+IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdi5pbm5lckhUTUwgPSB0ICsgIjwvZGl2PiIsIG0uaW5uZXJIVE1MID0gZSArICI8L2Rpdj4iCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPyBsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0gJiYgQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0pID8geSgpIDogKHYuaW5uZXJIVE1MID0gIiIsIG0uaW5uZXJIVE1MID0gIiIpIDogeSgpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHYuaW5uZXJIVE1MID0gIiIsIG0uaW5uZXJIVE1MID0gIiI7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZiAmJiAoYVtlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbCIpLmlubmVySFRNTCA9IGwuY29uZmlnLnRvb2x0aXAuei50aXRsZSwgYVtlXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSIpLmlubmVySFRNTCA9IHZvaWQgMCAhPT0gZiA/IGYgOiAiIik7CiAgICAgICAgICAgICAgICAgICAgbyAmJiBwWzBdICYmIChudWxsID09IGMgfHwgbC5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKSA+IC0xIHx8IGwuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSkgPiAtMSA/IHBbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiIDogcFswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXkgPSBsLmNvbmZpZy50b29sdGlwLml0ZW1zLmRpc3BsYXkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcygiZW5hYmxlIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcygiZGlzYWJsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgKGkuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKSwgaS5zdHlsZS5kaXNwbGF5ID0gZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0VmFsdWVzVG9QcmludCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5jdHguc2VyaWVzLmZpbHRlcmVkU2VyaWVzWCgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBhLmdsb2JhbHMuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGEuZ2xvYmFscy50dFpGb3JtYXR0ZXI7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gaSA/IGwgPSBhLmdsb2JhbHMuc2VyaWVzW2VdIDogYS5nbG9iYWxzLmlzWE51bWVyaWMgJiYgInRyZWVtYXAiICE9PSBhLmNvbmZpZy5jaGFydC50eXBlID8gKHIgPSBzW2VdW2ldLCAwID09PSBzW2VdLmxlbmd0aCAmJiAociA9IHNbdGhpcy50b29sdGlwVXRpbC5nZXRGaXJzdEFjdGl2ZVhBcnJheShzKV1baV0pKSA6IHIgPSB2b2lkIDAgIT09IGEuZ2xvYmFscy5sYWJlbHNbaV0gPyBhLmdsb2JhbHMubGFiZWxzW2ldIDogIiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSByOwogICAgICAgICAgICAgICAgICAgIGEuZ2xvYmFscy5pc1hOdW1lcmljICYmICJkYXRldGltZSIgPT09IGEuY29uZmlnLnhheGlzLnR5cGUgPyByID0gbmV3IFYodGhpcy5jdHgpLnhMYWJlbEZvcm1hdChhLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsIGQsIGQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0dGVyOiBuZXcgUih0aGlzLmN0eCkuZm9ybWF0RGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogdGhpcy53CiAgICAgICAgICAgICAgICAgICAgfSkgOiByID0gYS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCA/IGEuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGQsIGgpIDogYS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihkLCBoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBhLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyICYmIChyID0gYS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyKGQsIGgpKSwgYS5nbG9iYWxzLnNlcmllc1oubGVuZ3RoID4gMCAmJiBhLmdsb2JhbHMuc2VyaWVzWltlXS5sZW5ndGggPiAwICYmIChuID0gYyhhLmdsb2JhbHMuc2VyaWVzWltlXVtpXSwgYSkpLCBvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIgPyBhLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyKGQsIGgpIDogciwgewogICAgICAgICAgICAgICAgICAgICAgICB2YWw6IEFycmF5LmlzQXJyYXkobCkgPyBsLmpvaW4oIiAiKSA6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHhWYWw6IEFycmF5LmlzQXJyYXkocikgPyByLmpvaW4oIiAiKSA6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHhBeGlzVFRWYWw6IEFycmF5LmlzQXJyYXkobykgPyBvLmpvaW4oIiAiKSA6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHpWYWw6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZUN1c3RvbVRvb2x0aXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnkyLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC53LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHIuY29uZmlnLnRvb2x0aXAuY3VzdG9tOwogICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkobikgJiYgbltlXSAmJiAobiA9IG5bZV0pLCBvLmlubmVySFRNTCA9IG4oewogICAgICAgICAgICAgICAgICAgICAgICBjdHg6IHRoaXMuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHIuZ2xvYmFscy5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB3OiByCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy50dEN0eCA9IGUsIHRoaXMuY3R4ID0gZS5jdHgsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlWENyb3NzaGFpcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudHRDdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmdldEVsWENyb3NzaGFpcnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQgLSBpLnhjcm9zc2hhaXJzV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gZSAmJiAociA9IGEuZ2xvYmFscy5ncmlkV2lkdGggLyBvICogZSksIG51bGwgPT09IHMgfHwgYS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCB8fCAocy5zZXRBdHRyaWJ1dGUoIngiLCByKSwgcy5zZXRBdHRyaWJ1dGUoIngxIiwgciksIHMuc2V0QXR0cmlidXRlKCJ4MiIsIHIpLCBzLnNldEF0dHJpYnV0ZSgieTIiLCBhLmdsb2JhbHMuZ3JpZEhlaWdodCksIHMuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKSksIHIgPCAwICYmIChyID0gMCksIHIgPiBhLmdsb2JhbHMuZ3JpZFdpZHRoICYmIChyID0gYS5nbG9iYWxzLmdyaWRXaWR0aCksIGkuaXNYQXhpc1Rvb2x0aXBFbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgInRpY2tXaWR0aCIgIT09IGEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGggJiYgImJhcldpZHRoIiAhPT0gYS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCB8fCAobiA9IHIgKyBpLnhjcm9zc2hhaXJzV2lkdGggLyAyKSwgdGhpcy5tb3ZlWEF4aXNUb29sdGlwKG4pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlWUNyb3NzaGFpcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudHRDdHg7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZS55Y3Jvc3NoYWlycyAmJiBtLnNldEF0dHJzKGUueWNyb3NzaGFpcnMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgeTE6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiB0CiAgICAgICAgICAgICAgICAgICAgfSksIG51bGwgIT09IGUueWNyb3NzaGFpcnNIaWRkZW4gJiYgbS5zZXRBdHRycyhlLnljcm9zc2hhaXJzSGlkZGVuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHkxOiB0LAogICAgICAgICAgICAgICAgICAgICAgICB5MjogdAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm1vdmVYQXhpc1Rvb2x0aXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudHRDdHg7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkueGF4aXNUb29sdGlwICYmIDAgIT09IGkueGNyb3NzaGFpcnNXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkueGF4aXNPZmZZICsgZS5jb25maWcueGF4aXMudG9vbHRpcC5vZmZzZXRZICsgZS5nbG9iYWxzLnRyYW5zbGF0ZVkgKyAxICsgZS5jb25maWcueGF4aXMub2Zmc2V0WTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgLT0gaS54YXhpc1Rvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLyAyLCAhaXNOYU4odCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gZS5nbG9iYWxzLnRyYW5zbGF0ZVg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGkueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUwpLCBpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGggPSBzLndpZHRoICsgInB4IiwgaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdCA9IHQgKyAicHgiLCBpLnhheGlzVG9vbHRpcC5zdHlsZS50b3AgPSBhICsgInB4IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlWUF4aXNUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnR0Q3R4OwogICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGkueWF4aXNUVEVscyAmJiAoaS55YXhpc1RURWxzID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIikpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gcGFyc2VJbnQoaS55Y3Jvc3NoYWlyc0hpZGRlbi5nZXRBdHRyaWJ1dGUoInkxIiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuZ2xvYmFscy50cmFuc2xhdGVZICsgYSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkueWF4aXNUVEVsc1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdIC0gMjsKICAgICAgICAgICAgICAgICAgICBlLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSAmJiAobyAtPSAyNiksIHMgLT0gciAvIDIsIC0xID09PSBlLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YodCkgPyAoaS55YXhpc1RURWxzW3RdLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtYWN0aXZlIiksIGkueWF4aXNUVEVsc1t0XS5zdHlsZS50b3AgPSBzICsgInB4IiwgaS55YXhpc1RURWxzW3RdLnN0eWxlLmxlZnQgPSBvICsgZS5jb25maWcueWF4aXNbdF0udG9vbHRpcC5vZmZzZXRYICsgInB4IikgOiBpLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlVG9vbHRpcCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy50dEN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMuZ2V0RWxUb29sdGlwKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzLnRvb2x0aXBSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbnVsbCAhPT0gaSA/IHBhcnNlRmxvYXQoaSkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcGFyc2VGbG9hdCh0KSArIG4gKyA1LAogICAgICAgICAgICAgICAgICAgICAgICBoID0gcGFyc2VGbG9hdChlKSArIG4gLyAyOwogICAgICAgICAgICAgICAgICAgIGlmIChsID4gYS5nbG9iYWxzLmdyaWRXaWR0aCAvIDIgJiYgKGwgPSBsIC0gby50dFdpZHRoIC0gbiAtIDEwKSwgbCA+IGEuZ2xvYmFscy5ncmlkV2lkdGggLSBvLnR0V2lkdGggLSAxMCAmJiAobCA9IGEuZ2xvYmFscy5ncmlkV2lkdGggLSBvLnR0V2lkdGgpLCBsIDwgLTIwICYmIChsID0gLTIwKSwgYS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBzLmdldEVsR3JpZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzLmUuY2xpZW50WSArIGEuZ2xvYmFscy50cmFuc2xhdGVZIC0gZC50b3AgLSBvLnR0SGVpZ2h0IC8gMgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsIHx8IChvLnR0SGVpZ2h0IC8gMiArIGggPiBhLmdsb2JhbHMuZ3JpZEhlaWdodCAmJiAoaCA9IGEuZ2xvYmFscy5ncmlkSGVpZ2h0IC0gby50dEhlaWdodCArIGEuZ2xvYmFscy50cmFuc2xhdGVZKSwgaCA8IDAgJiYgKGggPSAwKSk7CiAgICAgICAgICAgICAgICAgICAgaXNOYU4obCkgfHwgKGwgKz0gYS5nbG9iYWxzLnRyYW5zbGF0ZVgsIHIuc3R5bGUubGVmdCA9IGwgKyAicHgiLCByLnN0eWxlLnRvcCA9IGggKyAicHgiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJtb3ZlTWFya2VycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy50dEN0eDsKICAgICAgICAgICAgICAgICAgICBpZiAoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XSA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBpLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpyZWFsSW5kZXg9JyIuY29uY2F0KHQsICInXSAuYXBleGNoYXJ0cy1tYXJrZXIiKSksIHIgPSAwOyByIDwgcy5sZW5ndGg7IHIrKykgcGFyc2VJbnQoc1tyXS5nZXRBdHRyaWJ1dGUoInJlbCIpLCAxMCkgPT09IGUgJiYgKGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLCBhLm1hcmtlci5lbmxhcmdlQ3VycmVudFBvaW50KGUsIHNbcl0pKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLCB0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnR0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5nbG9iYWxzLnBvaW50c0FycmF5LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gci50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLmNvbmZpZy5zZXJpZXNbZV0udHlwZTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWwgfHwgImNvbHVtbiIgIT09IGwgJiYgImNhbmRsZXN0aWNrIiAhPT0gbCAmJiAiYm94UGxvdCIgIT09IGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG9bZV1bdF1bMF0sIGEgPSBvW2VdW3RdWzFdID8gb1tlXVt0XVsxXSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpyZWFsSW5kZXg9JyIuY29uY2F0KGUsICInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGggJiYgYSA8IHMuZ2xvYmFscy5ncmlkSGVpZ2h0ICYmIGEgPiAwICYmIChoLnNldEF0dHJpYnV0ZSgiciIsIG4pLCBoLnNldEF0dHJpYnV0ZSgiY3giLCBpKSwgaC5zZXRBdHRyaWJ1dGUoImN5IiwgYSkpLCB0aGlzLm1vdmVYQ3Jvc3NoYWlycyhpKSwgci5maXhlZFRvb2x0aXAgfHwgdGhpcy5tb3ZlVG9vbHRpcChpLCBhLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGkgPSB0aGlzLnR0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLmdsb2JhbHMucG9pbnRzQXJyYXk7CiAgICAgICAgICAgICAgICAgICAgZSA9IG5ldyBFKHRoaXMuY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCghMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBpLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKTsKICAgICAgICAgICAgICAgICAgICBvW2VdICYmIChzID0gb1tlXVt0XVswXSwgciA9IG9bZV1bdF1bMV0pOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gaS50b29sdGlwVXRpbC5nZXRBbGxNYXJrZXJzKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGwpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGggPSAwOyBoIDwgYS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBvW2hdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuZ2xvYmFscy5jb21ib0NoYXJ0cyAmJiB2b2lkIDAgPT09IGMgJiYgbC5zcGxpY2UoaCwgMCwgbnVsbCksIGMgJiYgYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IG9baF1bdF1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbFtoXS5zZXRBdHRyaWJ1dGUoImN4IiwgcyksIG51bGwgIT09IGQgJiYgIWlzTmFOKGQpICYmIGQgPCBhLmdsb2JhbHMuZ3JpZEhlaWdodCArIG4gJiYgZCArIG4gPiAwID8gKGxbaF0gJiYgbFtoXS5zZXRBdHRyaWJ1dGUoInIiLCBuKSwgbFtoXSAmJiBsW2hdLnNldEF0dHJpYnV0ZSgiY3kiLCBkKSkgOiBsW2hdICYmIGxbaF0uc2V0QXR0cmlidXRlKCJyIiwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVYQ3Jvc3NoYWlycyhzKSwgIWkuZml4ZWRUb29sdGlwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gciB8fCBhLmdsb2JhbHMuZ3JpZEhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9vbHRpcChzLCBnLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy50dEN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUuZ2xvYmFscy5jb2x1bW5TZXJpZXMgPyBlLmdsb2JhbHMuY29sdW1uU2VyaWVzLmxlbmd0aCA6IGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gYSA+PSAyICYmIGEgJSAyID09IDAgPyBNYXRoLmZsb29yKGEgLyAyKSA6IE1hdGguZmxvb3IoYSAvIDIpICsgMTsKICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIChzID0gbmV3IEUodGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCExLCAiZGVzYyIpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9JyIuY29uY2F0KHMsICInXSBwYXRoW2o9JyIpLmNvbmNhdCh0LCAiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSciKS5jb25jYXQocywgIiddIHBhdGhbaj0nIikuY29uY2F0KHQsICInXSwgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nIikuY29uY2F0KHMsICInXSBwYXRoW2o9JyIpLmNvbmNhdCh0LCAiJ10sIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSciKS5jb25jYXQocywgIiddIHBhdGhbaj0nIikuY29uY2F0KHQsICInXSIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIgPyBwYXJzZUZsb2F0KHIuZ2V0QXR0cmlidXRlKCJjeCIpKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByID8gcGFyc2VGbG9hdChyLmdldEF0dHJpYnV0ZSgiY3kiKSkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gciA/IHBhcnNlRmxvYXQoci5nZXRBdHRyaWJ1dGUoImJhcldpZHRoIikpIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHIgPyBwYXJzZUZsb2F0KHIuZ2V0QXR0cmlidXRlKCJiYXJIZWlnaHQiKSkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gaS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEiKSB8fCByLmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmlzWE51bWVyaWMgPyAociAmJiAhZCAmJiAobyAtPSBhICUgMiAhPSAwID8gbCAvIDIgOiAwKSwgciAmJiBkICYmIGUuZ2xvYmFscy5jb21ib0NoYXJ0cyAmJiAobyAtPSBsIC8gMikpIDogZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCB8fCAobyA9IGkueEF4aXNUaWNrc1Bvc2l0aW9uc1t0IC0gMV0gKyBpLmRhdGFQb2ludHNEaXZpZGVkV2lkdGggLyAyLCBpc05hTihvKSAmJiAobyA9IGkueEF4aXNUaWNrc1Bvc2l0aW9uc1t0XSAtIGkuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCAvIDIpKSwgZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCA/IChuID4gZS5nbG9iYWxzLmdyaWRIZWlnaHQgLyAyICYmIChuIC09IGkudG9vbHRpcFJlY3QudHRIZWlnaHQpLCAobiA9IG4gKyBlLmNvbmZpZy5ncmlkLnBhZGRpbmcudG9wICsgaCAvIDMpICsgaCA+IGUuZ2xvYmFscy5ncmlkSGVpZ2h0ICYmIChuID0gZS5nbG9iYWxzLmdyaWRIZWlnaHQgLSBoKSkgOiBlLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvciA/IG4gPSBpLmUuY2xpZW50WSAtIGMudG9wIC0gaS50b29sdGlwUmVjdC50dEhlaWdodCAvIDIgOiBuICsgaS50b29sdGlwUmVjdC50dEhlaWdodCArIDE1ID4gZS5nbG9iYWxzLmdyaWRIZWlnaHQgJiYgKG4gPSBlLmdsb2JhbHMuZ3JpZEhlaWdodCksIG4gPCAtMTAgJiYgKG4gPSAtMTApLCBlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsIHx8IHRoaXMubW92ZVhDcm9zc2hhaXJzKG8pLCAhaS5maXhlZFRvb2x0aXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBuIHx8IGUuZ2xvYmFscy5ncmlkSGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb29sdGlwKG8sIGcpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgeHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMudHRDdHggPSBlLCB0aGlzLmN0eCA9IGUuY3R4LCB0aGlzLnRvb2x0aXBQb3NpdGlvbiA9IG5ldyBwdChlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3RHluYW1pY1BvaW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgVCh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMiKTsKICAgICAgICAgICAgICAgICAgICBhID0gdShhKSwgdC5jb25maWcuY2hhcnQuc3RhY2tlZCAmJiBhLnNvcnQoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IikpIC0gcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDA7IHMgPCBhLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYVtzXS5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gImFwZXhjaGFydHMtbWFya2VyIHciLmNvbmNhdCgoTWF0aC5yYW5kb20oKSArIDEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiICE9PSB0LmNvbmZpZy5jaGFydC50eXBlICYmICJhcmVhIiAhPT0gdC5jb25maWcuY2hhcnQudHlwZSB8fCB0Lmdsb2JhbHMuY29tYm9DaGFydHMgfHwgdC5jb25maWcudG9vbHRpcC5pbnRlcnNlY3QgfHwgKG4gKz0gIiBuby1wb2ludGVyLWV2ZW50cyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBpLmdldE1hcmtlckNvbmZpZyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IE51bWJlcihyLmdldEF0dHJpYnV0ZSgiZGF0YTpyZWFsSW5kZXgiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG8gPSBlLmRyYXdNYXJrZXIoMCwgMCwgbCkpLm5vZGUuc2V0QXR0cmlidXRlKCJkZWZhdWx0LW1hcmtlci1zaXplIiwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsICJnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMiKSwgaC5hcHBlbmRDaGlsZChvLm5vZGUpLCByLmFwcGVuZENoaWxkKGgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImVubGFyZ2VDdXJyZW50UG9pbnQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICAiYnViYmxlIiAhPT0gcy5jb25maWcuY2hhcnQudHlwZSAmJiB0aGlzLm5ld1BvaW50U2l6ZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0QXR0cmlidXRlKCJjeCIpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5nZXRBdHRyaWJ1dGUoImN5Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGkgJiYgbnVsbCAhPT0gYSAmJiAociA9IGksIG8gPSBhKSwgdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKHIpLCAhdGhpcy5maXhlZFRvb2x0aXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJyYWRhciIgPT09IHMuY29uZmlnLmNoYXJ0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy50dEN0eC5nZXRFbEdyaWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnR0Q3R4LmUuY2xpZW50WCAtIGwubGVmdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKHIsIG8sIHMuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImVubGFyZ2VQb2ludHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy53LCBpID0gdGhpcywgYSA9IHRoaXMudHRDdHgsIHMgPSB0LCByID0gZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXIiKSwgbyA9IGUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSwgbiA9IDA7IG4gPCByLmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcltuXS5nZXRBdHRyaWJ1dGUoInJlbCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHJbbl0uZ2V0QXR0cmlidXRlKCJpbmRleCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBvICYmIChvID0gZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtoXSArIGUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksIHMgPT09IHBhcnNlSW50KGwsIDEwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5uZXdQb2ludFNpemUocywgcltuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHJbbl0uZ2V0QXR0cmlidXRlKCJjeCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSByW25dLmdldEF0dHJpYnV0ZSgiY3kiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhjKSwgYS5maXhlZFRvb2x0aXAgfHwgaS50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAoYywgZCwgbykKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkub2xkUG9pbnRTaXplKHJbbl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJuZXdQb2ludFNpemUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IDAgPT09IHQgPyBlLnBhcmVudE5vZGUuZmlyc3RDaGlsZCA6IGUucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCIwIiAhPT0gcy5nZXRBdHRyaWJ1dGUoImRlZmF1bHQtbWFya2VyLXNpemUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKCJpbmRleCIpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gYSAmJiAoYSA9IGkuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl0gKyBpLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLCBhIDwgMCAmJiAoYSA9IDApLCBzLnNldEF0dHJpYnV0ZSgiciIsIGEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJvbGRQb2ludFNpemUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoImRlZmF1bHQtbWFya2VyLXNpemUiKSk7CiAgICAgICAgICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoInIiLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJyZXNldFBvaW50c1NpemUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyIiksIGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlRmxvYXQodFtlXS5nZXRBdHRyaWJ1dGUoImRlZmF1bHQtbWFya2VyLXNpemUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHguaXNOdW1iZXIoaSkgJiYgaSA+PSAwID8gdFtlXS5zZXRBdHRyaWJ1dGUoInIiLCBpKSA6IHRbZV0uc2V0QXR0cmlidXRlKCJyIiwgMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBidCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMudyA9IGUudywgdGhpcy50dEN0eCA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZ2V0QXR0ciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShlKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlSGVhdFRyZWVUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMudHRDdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiYXBleGNoYXJ0cy0iLmNvbmNhdChyLCAiLXJlY3QiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0aGlzLmdldEF0dHIoZSwgImkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0aGlzLmdldEF0dHIoZSwgImoiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLmdldEF0dHIoZSwgImN4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5nZXRBdHRyKGUsICJjeSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHRoaXMuZ2V0QXR0cihlLCAid2lkdGgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmdldEF0dHIoZSwgImhlaWdodCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoby50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogaS50dEl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleCA9IGwsIG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4ID0gaCwgYSA9IGMgKyBvLnRvb2x0aXBSZWN0LnR0V2lkdGggLyAyICsgZywgcyA9IGQgKyBvLnRvb2x0aXBSZWN0LnR0SGVpZ2h0IC8gMiAtIHUgLyAyLCBvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYyArIGcgLyAyKSwgYSA+IG4uZ2xvYmFscy5ncmlkV2lkdGggLyAyICYmIChhID0gYyAtIG8udG9vbHRpcFJlY3QudHRXaWR0aCAvIDIgKyBnKSwgby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBuLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLmdsb2JhbHMuY2xpZW50WCAtIGYubGVmdCAtIChhID4gbi5nbG9iYWxzLmdyaWRXaWR0aCAvIDIgPyBvLnRvb2x0aXBSZWN0LnR0V2lkdGggOiAwKSwgcyA9IG4uZ2xvYmFscy5jbGllbnRZIC0gZi50b3AgLSAocyA+IG4uZ2xvYmFscy5ncmlkSGVpZ2h0IC8gMiA/IG8udG9vbHRpcFJlY3QudHRIZWlnaHQgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZU1hcmtlclRvb2x0aXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSwgYSA9IHQuZSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQub3B0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy50dEN0eDsKICAgICAgICAgICAgICAgICAgICBpZiAoYS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcGV4Y2hhcnRzLW1hcmtlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoImN4IiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZSgiY3kiKSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlRmxvYXQocy5wYXRocy5nZXRBdHRyaWJ1dGUoInZhbCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBwYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZSgicmVsIiksIDEwKSwgZSA9IHBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJyZWwiKSwgMTApIC0gMSwgbC5pbnRlcnNlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0geC5maW5kQW5jZXN0b3Iocy5wYXRocywgImFwZXhjaGFydHMtc2VyaWVzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnICYmIChlID0gcGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksIDEwKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobC50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogcy50dEl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQ6ICFsLnNob3dPbkludGVyc2VjdCAmJiBuLmNvbmZpZy50b29sdGlwLnNoYXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgIm1vdXNldXAiID09PSBhLnR5cGUgJiYgbC5tYXJrZXJDbGljayhhLCBlLCBpKSwgbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXggPSBlLCBuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleCA9IGksIHIgPSBoLCBvID0gYyArIG4uZ2xvYmFscy50cmFuc2xhdGVZIC0gMS40ICogbC50b29sdGlwUmVjdC50dEhlaWdodCwgbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGwuZS5jbGllbnRZICsgbi5nbG9iYWxzLnRyYW5zbGF0ZVkgLSB1LnRvcAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPCAwICYmIChvID0gYyksIGwubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoaSwgcy5wYXRocywgciwgbykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogciwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiaGFuZGxlQmFyVG9vbHRpcCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBpLCBhID0gdC5lLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5vcHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLnR0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gby5nZXRFbFRvb2x0aXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuZ2V0QmFyVG9vbHRpcFhZKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQ6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZSA9IGQuaTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGQuYmFySGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gZC5qOwogICAgICAgICAgICAgICAgICAgIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4ID0gZSwgci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXggPSB1LCByLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIG8udG9vbHRpcFV0aWwuaGFzQmFycygpIHx8ICFyLmNvbmZpZy50b29sdGlwLnNoYXJlZCA/IChoID0gZC54LCBjID0gZC55LCBpID0gQXJyYXkuaXNBcnJheShyLmNvbmZpZy5zdHJva2Uud2lkdGgpID8gci5jb25maWcuc3Ryb2tlLndpZHRoW2VdIDogci5jb25maWcuc3Ryb2tlLndpZHRoLCBsID0gaCkgOiByLmdsb2JhbHMuY29tYm9DaGFydHMgfHwgci5jb25maWcudG9vbHRpcC5zaGFyZWQgfHwgKGwgLz0gMiksIGlzTmFOKGMpID8gYyA9IHIuZ2xvYmFscy5zdmdIZWlnaHQgLSBvLnRvb2x0aXBSZWN0LnR0SGVpZ2h0IDogYyA8IDAgJiYgKGMgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IHBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImRhdGE6cmVhbEluZGV4IiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHIuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMgPyByLmNvbmZpZy55YXhpc1tmXSAmJiByLmNvbmZpZy55YXhpc1tmXS5yZXZlcnNlZCA6IHIuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkOwogICAgICAgICAgICAgICAgICAgIGlmIChoICsgby50b29sdGlwUmVjdC50dFdpZHRoID4gci5nbG9iYWxzLmdyaWRXaWR0aCAmJiAhcCA/IGggLT0gby50b29sdGlwUmVjdC50dFdpZHRoIDogaCA8IDAgJiYgKGggPSAwKSwgby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IG8uZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvLmUuY2xpZW50WSAtIHgudG9wCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG51bGwgPT09IG8udG9vbHRpcCAmJiAoby50b29sdGlwID0gci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtdG9vbHRpcCIpKSwgci5jb25maWcudG9vbHRpcC5zaGFyZWQgfHwgKHIuZ2xvYmFscy5jb21ib0JhckNvdW50ID4gMCA/IG8udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsICsgaSAvIDIpIDogby50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwpKSwgIW8uZml4ZWRUb29sdGlwICYmICghci5jb25maWcudG9vbHRpcC5zaGFyZWQgfHwgci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiBvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSkgJiYgKHAgJiYgKGggLT0gby50b29sdGlwUmVjdC50dFdpZHRoKSA8IDAgJiYgKGggPSAwKSwgIXAgfHwgci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiBvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSB8fCAoYyA9IGMgKyBnIC0gMiAqIChyLmdsb2JhbHMuc2VyaWVzW2VdW3VdIDwgMCA/IGcgOiAwKSksIG8udG9vbHRpcFJlY3QudHRIZWlnaHQgKyBjID4gci5nbG9iYWxzLmdyaWRIZWlnaHQgPyBjID0gci5nbG9iYWxzLmdyaWRIZWlnaHQgLSBvLnRvb2x0aXBSZWN0LnR0SGVpZ2h0ICsgci5nbG9iYWxzLnRyYW5zbGF0ZVkgOiAoYyA9IGMgKyByLmdsb2JhbHMudHJhbnNsYXRlWSAtIG8udG9vbHRpcFJlY3QudHRIZWlnaHQgLyAyKSA8IDAgJiYgKGMgPSAwKSwgbi5zdHlsZS5sZWZ0ID0gaCArIHIuZ2xvYmFscy50cmFuc2xhdGVYICsgInB4Iiwgbi5zdHlsZS50b3AgPSBjICsgInB4IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0QmFyVG9vbHRpcFhZIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnR0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLnRhcmdldC5jbGFzc0xpc3Q7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQuY29udGFpbnMoImFwZXhjaGFydHMtYmFyLWFyZWEiKSB8fCBkLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEiKSB8fCBkLmNvbnRhaW5zKCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSIpIHx8IGQuY29udGFpbnMoImFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZS50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB1LmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHUuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gcGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoImN4IiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBwYXJzZUludChnLmdldEF0dHJpYnV0ZSgiY3kiKSwgMTApOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gcGFyc2VGbG9hdChnLmdldEF0dHJpYnV0ZSgiYmFyV2lkdGgiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gInRvdWNobW92ZSIgPT09IGUudHlwZSA/IGUudG91Y2hlc1swXS5jbGllbnRYIDogZS5jbGllbnRYOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gcGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoImoiKSwgMTApLCBvID0gcGFyc2VJbnQoZy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgicmVsIiksIDEwKSAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gZy5nZXRBdHRyaWJ1dGUoImRhdGEtcmFuZ2UteTEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBnLmdldEF0dHJpYnV0ZSgiZGF0YS1yYW5nZS15MiIpOwogICAgICAgICAgICAgICAgICAgICAgICBhLmdsb2JhbHMuY29tYm9DaGFydHMgJiYgKG8gPSBwYXJzZUludChnLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJkYXRhOnJlYWxJbmRleCIpLCAxMCkpLCByLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0SXRlbXM6IGkudHRJdGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IHkgPyBwYXJzZUludCh5LCAxMCkgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI6IHcgPyBwYXJzZUludCh3LCAxMCkgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiAhci5zaG93T25JbnRlcnNlY3QgJiYgYS5jb25maWcudG9vbHRpcC5zaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvciA/IGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgPyAobiA9IG0gLSBmLmxlZnQgKyAxNSwgbCA9IHYgLSByLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0ICsgcCAvIDIgLSByLnRvb2x0aXBSZWN0LnR0SGVpZ2h0IC8gMikgOiAobiA9IGEuZ2xvYmFscy5pc1hOdW1lcmljID8gYiAtIHggLyAyIDogYiAtIHIuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCArIHggLyAyLCBsID0gZS5jbGllbnRZIC0gZi50b3AgLSByLnRvb2x0aXBSZWN0LnR0SGVpZ2h0IC8gMiAtIDE1KSA6IGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWwgPyAoKG4gPSBiKSA8IHIueHlSYXRpb3MuYmFzZUxpbmVJbnZlcnRlZFkgJiYgKG4gPSBiIC0gci50b29sdGlwUmVjdC50dFdpZHRoKSwgbCA9IHYgLSByLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0ICsgcCAvIDIgLSByLnRvb2x0aXBSZWN0LnR0SGVpZ2h0IC8gMikgOiAobiA9IGEuZ2xvYmFscy5pc1hOdW1lcmljID8gYiAtIHggLyAyIDogYiAtIHIuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCArIHggLyAyLCBsID0gdikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiBjLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJXaWR0aDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgaTogbywKICAgICAgICAgICAgICAgICAgICAgICAgajogcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIHZ0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy53ID0gZS53LCB0aGlzLnR0Q3R4ID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3WGF4aXNUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudHRDdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAiYm90dG9tIiA9PT0gdC5jb25maWcueGF4aXMucG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgZS54YXhpc09mZlkgPSBpID8gdC5nbG9iYWxzLmdyaWRIZWlnaHQgKyAxIDogLXQuZ2xvYmFscy54QXhpc0hlaWdodCAtIHQuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQgKyAzOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gaSA/ICJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20iIDogImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lmdsb2JhbHMuZG9tLmVsV3JhcDsKICAgICAgICAgICAgICAgICAgICBlLmlzWEF4aXNUb29sdGlwRW5hYmxlZCAmJiAobnVsbCA9PT0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIikgJiYgKGUueGF4aXNUb29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUueGF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCBhICsgIiBhcGV4Y2hhcnRzLXRoZW1lLSIgKyB0LmNvbmZpZy50b29sdGlwLnRoZW1lKSwgcy5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksIGUueGF4aXNUb29sdGlwVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBlLnhheGlzVG9vbHRpcFRleHQuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdGV4dCIpLCBlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udEZhbWlseSA9IHQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseSB8fCB0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LCBlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemUgPSB0LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRTaXplLCBlLnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcFRleHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1lheGlzVG9vbHRpcCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IHRoaXMudywgZSA9IHRoaXMudHRDdHgsIGkgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuY29uZmlnLnlheGlzW2ldLm9wcG9zaXRlIHx8IHQuY29uZmlnLnlheGlzW2ldLmNyb3NzaGFpcnMub3Bwb3NpdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnlheGlzT2ZmWCA9IGEgPyB0Lmdsb2JhbHMuZ3JpZFdpZHRoICsgMSA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC0iLmNvbmNhdChpLCBhID8gIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodCIgOiAiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZ2xvYmFscy55QXhpc1NhbWVTY2FsZUluZGljZXMubWFwKChmdW5jdGlvbihlLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tYXAoKGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9PT0gaSAmJiAocyArPSB0LmNvbmZpZy55YXhpc1thXS5zaG93ID8gIiAiIDogIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0Lmdsb2JhbHMuZG9tLmVsV3JhcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT09IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC0iLmNvbmNhdChpKSkgJiYgKGUueWF4aXNUb29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUueWF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCBzICsgIiBhcGV4Y2hhcnRzLXRoZW1lLSIgKyB0LmNvbmZpZy50b29sdGlwLnRoZW1lKSwgci5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcCksIDAgPT09IGkgJiYgKGUueWF4aXNUb29sdGlwVGV4dCA9IFtdKSwgZS55YXhpc1Rvb2x0aXBUZXh0W2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUueWF4aXNUb29sdGlwVGV4dFtpXS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC10ZXh0IiksIGUueWF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwVGV4dFtpXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEgPSAwOyBhIDwgdC5jb25maWcueWF4aXMubGVuZ3RoOyBhKyspIGkoYSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2V0WENyb3NzaGFpcldpZHRoIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMudHRDdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLmdldEVsWENyb3NzaGFpcnMoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS54Y3Jvc3NoYWlyc1dpZHRoID0gcGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwgMTApLCB0Lmdsb2JhbHMuY29tYm9DaGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1iYXItYXJlYSIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYSAmJiAiYmFyV2lkdGgiID09PSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoImJhcldpZHRoIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS54Y3Jvc3NoYWlyc1dpZHRoID0gcwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJ0aWNrV2lkdGgiID09PSB0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS54Y3Jvc3NoYWlyc1dpZHRoID0gdC5nbG9iYWxzLmdyaWRXaWR0aCAvIHIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoInRpY2tXaWR0aCIgPT09IHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0Lmdsb2JhbHMubGFiZWxzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgZS54Y3Jvc3NoYWlyc1dpZHRoID0gdC5nbG9iYWxzLmdyaWRXaWR0aCAvIG8KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJiYXJXaWR0aCIgPT09IHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1iYXItYXJlYSIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBwYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKCJiYXJXaWR0aCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUueGNyb3NzaGFpcnNXaWR0aCA9IGwKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGUueGNyb3NzaGFpcnNXaWR0aCA9IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiAoZS54Y3Jvc3NoYWlyc1dpZHRoID0gMCksIG51bGwgIT09IGkgJiYgZS54Y3Jvc3NoYWlyc1dpZHRoID4gMCAmJiBpLnNldEF0dHJpYnV0ZSgid2lkdGgiLCBlLnhjcm9zc2hhaXJzV2lkdGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImhhbmRsZVlDcm9zc2hhaXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy50dEN0eDsKICAgICAgICAgICAgICAgICAgICBlLnljcm9zc2hhaXJzID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMteWNyb3NzaGFpcnMiKSwgZS55Y3Jvc3NoYWlyc0hpZGRlbiA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdZYXhpc1Rvb2x0aXBUZXh0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLnR0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICByID0gcy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07CiAgICAgICAgICAgICAgICAgICAgaWYgKGEueWF4aXNUb29sdGlwc1t0XSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGEuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gKGUgLSBvLnRvcCkgKiBpLnlSYXRpb1t0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLmdsb2JhbHMubWF4WUFyclt0XSAtIHMuZ2xvYmFscy5taW5ZQXJyW3RdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMuZ2xvYmFscy5taW5ZQXJyW3RdICsgKGwgLSBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgYS50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUgLSBvLnRvcCksIGEueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUwgPSByKGgpLCBhLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgbXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudzsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgdGhpcy50Q29uZmlnID0gaS5jb25maWcudG9vbHRpcCwgdGhpcy50b29sdGlwVXRpbCA9IG5ldyB1dCh0aGlzKSwgdGhpcy50b29sdGlwTGFiZWxzID0gbmV3IGZ0KHRoaXMpLCB0aGlzLnRvb2x0aXBQb3NpdGlvbiA9IG5ldyBwdCh0aGlzKSwgdGhpcy5tYXJrZXIgPSBuZXcgeHQodGhpcyksIHRoaXMuaW50ZXJzZWN0ID0gbmV3IGJ0KHRoaXMpLCB0aGlzLmF4ZXNUb29sdGlwID0gbmV3IHZ0KHRoaXMpLCB0aGlzLnNob3dPbkludGVyc2VjdCA9IHRoaXMudENvbmZpZy5pbnRlcnNlY3QsIHRoaXMuc2hvd1Rvb2x0aXBUaXRsZSA9IHRoaXMudENvbmZpZy54LnNob3csIHRoaXMuZml4ZWRUb29sdGlwID0gdGhpcy50Q29uZmlnLmZpeGVkLmVuYWJsZWQsIHRoaXMueGF4aXNUb29sdGlwID0gbnVsbCwgdGhpcy55YXhpc1RURWxzID0gbnVsbCwgdGhpcy5pc0JhclNoYXJlZCA9ICFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsICYmIHRoaXMudENvbmZpZy5zaGFyZWQsIHRoaXMubGFzdEhvdmVyVGltZSA9IERhdGUubm93KCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZ2V0RWxUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSB0aGlzKSwgdC53Lmdsb2JhbHMuZG9tLmJhc2VFbCA/IHQudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtdG9vbHRpcCIpIDogbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRFbFhDcm9zc2hhaXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy14Y3Jvc3NoYWlycyIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldEVsR3JpZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtZ3JpZCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgdGhpcy54eVJhdGlvcyA9IHQsIHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkID0gZS5jb25maWcueGF4aXMudG9vbHRpcC5lbmFibGVkICYmIGUuZ2xvYmFscy5heGlzQ2hhcnRzLCB0aGlzLnlheGlzVG9vbHRpcHMgPSBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhKHQuc2hvdyAmJiB0LnRvb2x0aXAuZW5hYmxlZCAmJiBlLmdsb2JhbHMuYXhpc0NoYXJ0cykKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuYWxsVG9vbHRpcFNlcmllc0dyb3VwcyA9IFtdLCBlLmdsb2JhbHMuYXhpc0NoYXJ0cyB8fCAodGhpcy5zaG93VG9vbHRpcFRpdGxlID0gITEpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwIiksIGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MgJiYgaS5jbGFzc0xpc3QuYWRkKGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLCBpLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdGhlbWUtIi5jb25jYXQodGhpcy50Q29uZmlnLnRoZW1lKSksIGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLCBlLmdsb2JhbHMuYXhpc0NoYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSwgdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwKCksIHRoaXMuYXhlc1Rvb2x0aXAuc2V0WENyb3NzaGFpcldpZHRoKCksIHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBfKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy54QXhpc1RpY2tzUG9zaXRpb25zID0gYS5nZXRYQXhpc1RpY2tzUG9zaXRpb25zKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlLmdsb2JhbHMuY29tYm9DaGFydHMgJiYgIXRoaXMudENvbmZpZy5pbnRlcnNlY3QgJiYgInJhbmdlQmFyIiAhPT0gZS5jb25maWcuY2hhcnQudHlwZSB8fCB0aGlzLnRDb25maWcuc2hhcmVkIHx8ICh0aGlzLnNob3dPbkludGVyc2VjdCA9ICEwKSwgMCAhPT0gZS5jb25maWcubWFya2Vycy5zaXplICYmIDAgIT09IGUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplIHx8IHRoaXMubWFya2VyLmRyYXdEeW5hbWljUG9pbnRzKHRoaXMpLCBlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCAhPT0gZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCA9IGUuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gZS5nbG9iYWxzLmRhdGFQb2ludHMsIHRoaXMuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCA9IGUuZ2xvYmFscy5ncmlkV2lkdGggLyBlLmdsb2JhbHMuZGF0YVBvaW50cywgdGhpcy5zaG93VG9vbHRpcFRpdGxlICYmICh0aGlzLnRvb2x0aXBUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCB0aGlzLnRvb2x0aXBUaXRsZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUiKSwgdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udEZhbWlseSA9IHRoaXMudENvbmZpZy5zdHlsZS5mb250RmFtaWx5IHx8IGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksIHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRTaXplID0gdGhpcy50Q29uZmlnLnN0eWxlLmZvbnRTaXplLCBpLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcFRpdGxlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIChlLmdsb2JhbHMueHlDaGFydHMgfHwgZS5nbG9iYWxzLmNvbWJvQ2hhcnRzKSAmJiB0aGlzLnRDb25maWcuc2hhcmVkICYmIChzID0gdGhpcy5zaG93T25JbnRlcnNlY3QgPyAxIDogZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLCB0aGlzLmxlZ2VuZExhYmVscyA9IGUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IiksIHRoaXMudHRJdGVtcyA9IHRoaXMuY3JlYXRlVFRFbGVtZW50cyhzKSwgdGhpcy5hZGRTVkdFdmVudHMoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY3JlYXRlVFRFbGVtZW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLCBpID0gdGhpcy53LCBhID0gW10sIHMgPSB0aGlzLmdldEVsVG9vbHRpcCgpLCByID0gZnVuY3Rpb24ocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cCIpLCBvLnN0eWxlLm9yZGVyID0gaS5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXIgPyB0IC0gciA6IHIgKyAxLCBlLnRDb25maWcuc2hhcmVkICYmIGUudENvbmZpZy5lbmFibGVkT25TZXJpZXMgJiYgQXJyYXkuaXNBcnJheShlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSAmJiBlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YocikgPCAwICYmIG8uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIiksIG4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gaS5nbG9iYWxzLmNvbG9yc1tyXSwgby5hcHBlbmRDaGlsZChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0IiksIGwuc3R5bGUuZm9udEZhbWlseSA9IGUudENvbmZpZy5zdHlsZS5mb250RmFtaWx5IHx8IGkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksIGwuc3R5bGUuZm9udFNpemUgPSBlLnRDb25maWcuc3R5bGUuZm9udFNpemUsIFsieSIsICJnb2FscyIsICJ6Il0uZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtIi5jb25jYXQodCwgIi1ncm91cCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LSIuY29uY2F0KHQsICItbGFiZWwiKSksIGUuYXBwZW5kQ2hpbGQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC0iLmNvbmNhdCh0LCAiLXZhbHVlIikpLCBlLmFwcGVuZENoaWxkKGEpLCBsLmFwcGVuZENoaWxkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG8uYXBwZW5kQ2hpbGQobCksIHMuYXBwZW5kQ2hpbGQobyksIGEucHVzaChvKQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvID0gMDsgbyA8IHQ7IG8rKykgcihvKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRTVkdFdmVudHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5jb25maWcuY2hhcnQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0RWxUb29sdGlwKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAhKCJiYXIiICE9PSBlICYmICJjYW5kbGVzdGljayIgIT09IGUgJiYgImJveFBsb3QiICE9PSBlICYmICJyYW5nZUJhciIgIT09IGUpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gImFyZWEiID09PSBlIHx8ICJsaW5lIiA9PT0gZSB8fCAic2NhdHRlciIgPT09IGUgfHwgImJ1YmJsZSIgPT09IGUgfHwgInJhZGFyIiA9PT0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZ2xvYmFscy5kb20uUGFwZXIubm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0RWxHcmlkKCk7CiAgICAgICAgICAgICAgICAgICAgbyAmJiAodGhpcy5zZXJpZXNCb3VuZCA9IG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwogICAgICAgICAgICAgICAgICAgIHZhciBuLCBsID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyQXJlYTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsR3JpZDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBFbDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBZOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFg6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dEl0ZW1zOiB0aGlzLnR0SXRlbXMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5nbG9iYWxzLmF4aXNDaGFydHMgJiYgKHMgPyBuID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXDpsb25nZXN0U2VyaWVzPSd0cnVlJ10gLmFwZXhjaGFydHMtbWFya2VyIikgOiBhID8gbiA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhIikgOiAiaGVhdG1hcCIgIT09IGUgJiYgInRyZWVtYXAiICE9PSBlIHx8IChuID0gdC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbCgiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWhlYXRtYXAsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy10cmVlbWFwIikpLCBuICYmIG4ubGVuZ3RoKSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBuLmxlbmd0aDsgZCsrKSBsLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoImN5IikpLCBoLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoImN4IikpOwogICAgICAgICAgICAgICAgICAgIGlmICh0Lmdsb2JhbHMueHlDaGFydHMgJiYgIXRoaXMuc2hvd09uSW50ZXJzZWN0IHx8IHQuZ2xvYmFscy5jb21ib0NoYXJ0cyAmJiAhdGhpcy5zaG93T25JbnRlcnNlY3QgfHwgYSAmJiB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSAmJiB0aGlzLnRDb25maWcuc2hhcmVkKSB0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoW3JdLCBjKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhICYmICF0Lmdsb2JhbHMuY29tYm9DaGFydHMgfHwgcyAmJiB0aGlzLnNob3dPbkludGVyc2VjdCkgdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoYyk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXQuZ2xvYmFscy5heGlzQ2hhcnRzIHx8ICJoZWF0bWFwIiA9PT0gZSB8fCAidHJlZW1hcCIgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGcsIGMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dPbkludGVyc2VjdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHUubGVuZ3RoID4gMCAmJiB0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModSwgYyksIHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpICYmICF0aGlzLnRDb25maWcuc2hhcmVkICYmIHRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3Rml4ZWRUb29sdGlwUmVjdCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLmdldEVsVG9vbHRpcCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkud2lkdGggKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuaGVpZ2h0ICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy50Q29uZmlnLmZpeGVkLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uaW5kZXhPZigicmlnaHQiKSA+IC0xICYmIChyID0gciArIHQuZ2xvYmFscy5zdmdXaWR0aCAtIGEgKyAxMCksIG4uaW5kZXhPZigiYm90dG9tIikgPiAtMSAmJiAobyA9IG8gKyB0Lmdsb2JhbHMuc3ZnSGVpZ2h0IC0gcyAtIDEwKSwgZS5zdHlsZS5sZWZ0ID0gciArICJweCIsIGUuc3R5bGUudG9wID0gbyArICJweCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogciwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbywKICAgICAgICAgICAgICAgICAgICAgICAgdHRXaWR0aDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgdHRIZWlnaHQ6IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWEiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkUGF0aHNFdmVudExpc3RlbmVycyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLCBhID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IHRbYV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEVsOiBlLnRvb2x0aXBFbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwWTogZS50b29sdGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwWDogZS50b29sdGlwWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbEdyaWQ6IGUuZWxHcmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyQXJlYTogZS5ob3ZlckFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogZS50dEl0ZW1zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJtb3VzZW1vdmUiLCAibW91c2V1cCIsICJ0b3VjaG1vdmUiLCAibW91c2VvdXQiLCAidG91Y2hlbmQiXS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFthXS5hZGRFdmVudExpc3RlbmVyKGUsIGkub25TZXJpZXNIb3Zlci5iaW5kKGksIHMpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgcyA9IDA7IHMgPCB0Lmxlbmd0aDsgcysrKSBhKHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIm9uU2VyaWVzSG92ZXIiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBEYXRlLm5vdygpIC0gdGhpcy5sYXN0SG92ZXJUaW1lOwogICAgICAgICAgICAgICAgICAgIGEgPj0gMTAwID8gdGhpcy5zZXJpZXNIb3Zlcih0LCBlKSA6IChjbGVhclRpbWVvdXQodGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQpLCB0aGlzLnNlcmllc0hvdmVyVGltZW91dCA9IHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLnNlcmllc0hvdmVyKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgfSksIDEwMCAtIGEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXJpZXNIb3ZlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RIb3ZlclRpbWUgPSBEYXRlLm5vdygpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcy5jb25maWcuY2hhcnQuZ3JvdXAgJiYgKGEgPSB0aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLCBzLmdsb2JhbHMuYXhpc0NoYXJ0cyAmJiAocy5nbG9iYWxzLm1pblggPT09IC0xIC8gMCAmJiBzLmdsb2JhbHMubWF4WCA9PT0gMSAvIDAgfHwgMCA9PT0gcy5nbG9iYWxzLmRhdGFQb2ludHMpIHx8IChhLmxlbmd0aCA/IGEuZm9yRWFjaCgoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGkuZ2V0RWxUb29sdGlwKGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogdC5wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRWw6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFk6IHQudG9vbHRpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFg6IHQudG9vbHRpcFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxHcmlkOiB0LmVsR3JpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlckFyZWE6IHQuaG92ZXJBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0SXRlbXM6IGEudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYS53Lmdsb2JhbHMubWluWCA9PT0gaS53Lmdsb2JhbHMubWluWCAmJiBhLncuZ2xvYmFscy5tYXhYID09PSBpLncuZ2xvYmFscy5tYXhYICYmIGEudy5nbG9iYWxzLnRvb2x0aXAuc2VyaWVzSG92ZXJCeUNvbnRleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRDdHg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dEN0eDogYS53Lmdsb2JhbHMudG9vbHRpcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSkgOiB0aGlzLnNlcmllc0hvdmVyQnlDb250ZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRDdHg6IHRoaXMuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICB0dEN0eDogdGhpcy53Lmdsb2JhbHMudG9vbHRpcCwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiB0LAogICAgICAgICAgICAgICAgICAgICAgICBlOiBlCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNlcmllc0hvdmVyQnlDb250ZXh0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmNoYXJ0Q3R4LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC50dEN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQub3B0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5lLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS53LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRFbFRvb2x0aXAoKTsKICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS50b29sdGlwUmVjdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRXaWR0aDogby5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dEhlaWdodDogby5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkuZSA9IHMsIGkudG9vbHRpcFV0aWwuaGFzQmFycygpICYmICFyLmdsb2JhbHMuY29tYm9DaGFydHMgJiYgIWkuaXNCYXJTaGFyZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50Q29uZmlnLm9uRGF0YXNldEhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMpIG5ldyBFKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIocywgcy50YXJnZXQucGFyZW50Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuZml4ZWRUb29sdGlwICYmIGkuZHJhd0ZpeGVkVG9vbHRpcFJlY3QoKSwgci5nbG9iYWxzLmF4aXNDaGFydHMgPyBpLmF4aXNDaGFydHNUb29sdGlwcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFJlY3Q6IGkudG9vbHRpcFJlY3QKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBpLm5vbkF4aXNDaGFydHNUb29sdGlwcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFJlY3Q6IGkudG9vbHRpcFJlY3QKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImF4aXNDaGFydHNUb29sdGlwcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBpLCBhID0gdC5lLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5vcHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJ0b3VjaG1vdmUiID09PSBhLnR5cGUgPyBhLnRvdWNoZXNbMF0uY2xpZW50WCA6IGEuY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9ICJ0b3VjaG1vdmUiID09PSBhLnR5cGUgPyBhLnRvdWNoZXNbMF0uY2xpZW50WSA6IGEuY2xpZW50WTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGllbnRZID0gbCwgdGhpcy5jbGllbnRYID0gbiwgci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXggPSAtMSwgci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXggPSAtMSwgbCA8IG8udG9wIHx8IGwgPiBvLnRvcCArIG8uaGVpZ2h0KSB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSAmJiAhci5jb25maWcudG9vbHRpcC5zaGFyZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoImluZGV4IiksIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoaCkgPCAwKSByZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLmdldEVsVG9vbHRpcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHIuZ2xvYmFscy54eUNoYXJ0cyB8fCAiYmFyIiA9PT0gci5jb25maWcuY2hhcnQudHlwZSAmJiAhci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSAmJiB0aGlzLnRDb25maWcuc2hhcmVkIHx8IHIuZ2xvYmFscy5jb21ib0NoYXJ0cyAmJiB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJtb3VzZW1vdmUiID09PSBhLnR5cGUgfHwgInRvdWNobW92ZSIgPT09IGEudHlwZSB8fCAibW91c2V1cCIgPT09IGEudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoICsgci5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5sZW5ndGggPT09IHIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBkICYmIGQuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gdGhpcy55YXhpc1Rvb2x0aXBzLmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMCA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHRoaXMueWNyb3NzaGFpcnMgJiYgdS5sZW5ndGggJiYgdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWFjdGl2ZSIpLCBnICYmICF0aGlzLnNob3dPbkludGVyc2VjdCkgdGhpcy5oYW5kbGVTdGlja3lUb29sdGlwKGEsIG4sIGwsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoImhlYXRtYXAiID09PSByLmNvbmZpZy5jaGFydC50eXBlIHx8ICJ0cmVlbWFwIiA9PT0gci5jb25maWcuY2hhcnQudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gdGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByLmNvbmZpZy5jaGFydC50eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGYueCwgaSA9IGYueSwgYy5zdHlsZS5sZWZ0ID0gZSArICJweCIsIGMuc3R5bGUudG9wID0gaSArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSAmJiB0aGlzLmludGVyc2VjdC5oYW5kbGVCYXJUb29sdGlwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdDogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpICYmIHRoaXMuaW50ZXJzZWN0LmhhbmRsZU1hcmtlclRvb2x0aXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IHIuY29uZmlnLnlheGlzLmxlbmd0aDsgcCsrKSB0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXBUZXh0KHAsIGwsIHRoaXMueHlSYXRpb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50b29sdGlwRWwuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgIm1vdXNlb3V0IiAhPT0gYS50eXBlICYmICJ0b3VjaGVuZCIgIT09IGEudHlwZSB8fCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJub25BeGlzQ2hhcnRzVG9vbHRpcHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub3B0LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC50b29sdGlwUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkucGF0aHMuZ2V0QXR0cmlidXRlKCJyZWwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0RWxUb29sdGlwKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIm1vdXNlbW92ZSIgPT09IGUudHlwZSB8fCAidG91Y2htb3ZlIiA9PT0gZS50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1hY3RpdmUiKSwgdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dEl0ZW1zOiBpLnR0SXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBwYXJzZUludChyLCAxMCkgLSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBzLmdsb2JhbHMuY2xpZW50WCAtIG4ubGVmdCAtIGEudHRXaWR0aCAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gcy5nbG9iYWxzLmNsaWVudFkgLSBuLnRvcCAtIGEudHRIZWlnaHQgLSAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uc3R5bGUubGVmdCA9IGwgKyAicHgiLCBvLnN0eWxlLnRvcCA9IGggKyAicHgiLCBzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHIgLSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAoMCwgcy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcikodGhpcy5sZWdlbmRMYWJlbHNbY10uZ2V0QXR0cmlidXRlKCJkYXRhOmRlZmF1bHQtdGV4dCIpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWdlbmRMYWJlbHNbY10uaW5uZXJIVE1MID0gZAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICJtb3VzZW91dCIgIT09IGUudHlwZSAmJiAidG91Y2hlbmQiICE9PSBlLnR5cGUgfHwgKG8uY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSwgcy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciAmJiB0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5nZXRBdHRyaWJ1dGUoImRhdGE6ZGVmYXVsdC10ZXh0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaW5uZXJIVE1MID0gZGVjb2RlVVJJQ29tcG9uZW50KGUpCiAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVTdGlja3lUb29sdGlwIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnRvb2x0aXBVdGlsLmdldE5lYXJlc3RWYWx1ZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyQXJlYTogYS5ob3ZlckFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbEdyaWQ6IGEuZWxHcmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50WDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFk6IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmosCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmNhcHR1cmVkU2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgci5ob3ZlclggPCAwIHx8IHIuaG92ZXJYID4gbC53aWR0aCA/IHRoaXMuaGFuZGxlTW91c2VPdXQoYSkgOiBudWxsICE9PSBuID8gdGhpcy5oYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllcyh0LCBuLCBhLCBvKSA6ICh0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAobykgfHwgcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkgJiYgdGhpcy5jcmVhdGUodCwgdGhpcywgMCwgbywgYS50dEl0ZW1zKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50Q29uZmlnLnNoYXJlZCAmJiBudWxsID09PSBzLmdsb2JhbHMuc2VyaWVzW2VdW2FdKSByZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KGkpOwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gcy5nbG9iYWxzLnNlcmllc1tlXVthXSA/IHRoaXMudENvbmZpZy5zaGFyZWQgJiYgdGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGEpICYmIHRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpID8gdGhpcy5jcmVhdGUodCwgdGhpcywgZSwgYSwgaS50dEl0ZW1zKSA6IHRoaXMuY3JlYXRlKHQsIHRoaXMsIGUsIGEsIGkudHRJdGVtcywgITEpIDogdGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGEpICYmIHRoaXMuY3JlYXRlKHQsIHRoaXMsIDAsIGEsIGkudHRJdGVtcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZGVhY3RpdmF0ZUhvdmVyRmlsdGVyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gdGhpcy53LCBlID0gbmV3IG0odGhpcy5jdHgpLCBpID0gdC5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoIi5hcGV4Y2hhcnRzLWJhci1hcmVhIiksIGEgPSAwOyBhIDwgaS5sZW5ndGg7IGErKykgZS5wYXRoTW91c2VMZWF2ZShpW2FdKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVNb3VzZU91dCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5nZXRFbFhDcm9zc2hhaXJzKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudG9vbHRpcEVsLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtYWN0aXZlIiksIHRoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksICJidWJibGUiICE9PSBlLmNvbmZpZy5jaGFydC50eXBlICYmIHRoaXMubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLCBudWxsICE9PSBpICYmIGkuY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKSwgbnVsbCAhPT0gdGhpcy55Y3Jvc3NoYWlycyAmJiB0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtYWN0aXZlIiksIHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkICYmIHRoaXMueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImFwZXhjaGFydHMtYWN0aXZlIiksIHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gdGhpcy55YXhpc1RURWxzICYmICh0aGlzLnlheGlzVFRFbHMgPSBlLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy55YXhpc1RURWxzLmxlbmd0aDsgYSsrKSB0aGlzLnlheGlzVFRFbHNbYV0uY2xhc3NMaXN0LnJlbW92ZSgiYXBleGNoYXJ0cy1hY3RpdmUiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyICYmIHRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5pbm5lckhUTUwgPSBkZWNvZGVVUklDb21wb25lbnQoZSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAibWFya2VyQ2xpY2siLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2sgJiYgYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKHQsIHRoaXMuY3R4LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgdzogYQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KCJtYXJrZXJDbGljayIsIFt0LCB0aGlzLmN0eCwgewogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGEKICAgICAgICAgICAgICAgICAgICB9XSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY3JlYXRlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s1XSA/IGFyZ3VtZW50c1s1XSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlOwogICAgICAgICAgICAgICAgICAgICJtb3VzZXVwIiA9PT0gdC50eXBlICYmIHRoaXMubWFya2VyQ2xpY2sodCwgaSwgYSksIG51bGwgPT09IHIgJiYgKHIgPSB0aGlzLnRDb25maWcuc2hhcmVkKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoby5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IG8uY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gQXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldEF0dHJpYnV0ZSgiZGF0YTpkZWZhdWx0LXRleHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuaW5uZXJIVE1MID0gZGVjb2RlVVJJQ29tcG9uZW50KGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZyA9IDA7IGcgPCBkLmxlbmd0aDsgZysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGRbZ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKCJpIiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZGVjb2RlVVJJQ29tcG9uZW50KHUuZ2V0QXR0cmlidXRlKCJkYXRhOmRlZmF1bHQtdGV4dCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gYyhwLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiByID8gZiA6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgdS5pbm5lckhUTUwgPSBvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGYpIDwgMCA/IHggOiBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodS5pbm5lckhUTUwgPSBmID09PSBpID8geCA6IHAsIGkgPT09IGYpIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0SXRlbXM6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZDogIXRoaXMuc2hvd09uSW50ZXJzZWN0ICYmIHRoaXMudENvbmZpZy5zaGFyZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBsICYmIChvLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZSA+IDAgPyBuLm1hcmtlci5lbmxhcmdlUG9pbnRzKGEpIDogbi50b29sdGlwUG9zaXRpb24ubW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyKGEpKSwgdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkgJiYgKHRoaXMuYmFyU2VyaWVzSGVpZ2h0ID0gdGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KGgpLCB0aGlzLmJhclNlcmllc0hlaWdodCA+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gby5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoIi5hcGV4Y2hhcnRzLWJhci1hcmVhW2o9JyIuY29uY2F0KGEsICInXSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksIHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHYubGVuZ3RoOyB5KyspIGIucGF0aE1vdXNlRW50ZXIodlt5XSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdHRJdGVtczogcywKICAgICAgICAgICAgICAgICAgICAgICAgaTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgajogYQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSAmJiBuLnRvb2x0aXBQb3NpdGlvbi5tb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzKGEpLCBsICYmIG4udG9vbHRpcFBvc2l0aW9uLm1vdmVNYXJrZXJzKGksIGEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICB5dCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgbihzLCB0KTsKICAgICAgICAgICAgdmFyIGkgPSBkKHMpOwoKICAgICAgICAgICAgZnVuY3Rpb24gcygpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhKHRoaXMsIHMpLCBpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcihzLCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhdyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYXBoaWNzID0gbmV3IG0odGhpcy5jdHgpLCB0aGlzLmJhciA9IG5ldyBGKHRoaXMuY3R4LCB0aGlzLnh5UmF0aW9zKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyB5KHRoaXMuY3R4LCBzKTsKICAgICAgICAgICAgICAgICAgICB0ID0gci5nZXRMb2dTZXJpZXModCksIHRoaXMueVJhdGlvID0gci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSwgdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCksICIxMDAlIiA9PT0gcy5jb25maWcuY2hhcnQuc3RhY2tUeXBlICYmICh0ID0gcy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksIHRoaXMuc2VyaWVzID0gdCwgdGhpcy50b3RhbEl0ZW1zID0gMCwgdGhpcy5wcmV2WSA9IFtdLCB0aGlzLnByZXZYID0gW10sIHRoaXMucHJldllGID0gW10sIHRoaXMucHJldlhGID0gW10sIHRoaXMucHJldllWYWwgPSBbXSwgdGhpcy5wcmV2WFZhbCA9IFtdLCB0aGlzLnhBcnJqID0gW10sIHRoaXMueEFycmpGID0gW10sIHRoaXMueEFycmpWYWwgPSBbXSwgdGhpcy55QXJyaiA9IFtdLCB0aGlzLnlBcnJqRiA9IFtdLCB0aGlzLnlBcnJqVmFsID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCB0Lmxlbmd0aDsgbysrKSB0W29dLmxlbmd0aCA+IDAgJiYgKHRoaXMudG90YWxJdGVtcyArPSB0W29dLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IHRoaXMuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGwgPSAwLCBoID0gMCwgYyA9IGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHMuZ2xvYmFscy5jb21ib0NoYXJ0cyA/IGlbcl0gOiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS55UmF0aW8ubGVuZ3RoID4gMSAmJiAoYS55YXhpc0luZGV4ID0gYiksIGEuaXNSZXZlcnNlZCA9IHMuY29uZmlnLnlheGlzW2EueWF4aXNJbmRleF0gJiYgcy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XS5yZXZlcnNlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gYS5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcocy5nbG9iYWxzLnNlcmllc05hbWVzW2JdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IHIgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOnJlYWxJbmRleCI6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModiwgYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGEuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZGF0YWxhYmVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOnJlYWxJbmRleCI6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gYS5pbml0aWFsUG9zaXRpb25zKGwsIGgsIGMsIGQsIGcsIHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGsueSwgeSA9IGsuYmFySGVpZ2h0LCBkID0gay55RGl2aXNpb24sIHUgPSBrLnplcm9XLCBsID0gay54LCB3ID0gay5iYXJXaWR0aCwgYyA9IGsueERpdmlzaW9uLCBnID0gay56ZXJvSCwgYS55QXJyaiA9IFtdLCBhLnlBcnJqRiA9IFtdLCBhLnlBcnJqVmFsID0gW10sIGEueEFycmogPSBbXSwgYS54QXJyakYgPSBbXSwgYS54QXJyalZhbCA9IFtdLCAxID09PSBhLnByZXZZLmxlbmd0aCAmJiBhLnByZXZZWzBdLmV2ZXJ5KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgJiYgKGEucHJldllbMF0gPSBhLnByZXZZWzBdLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGEucHJldllGWzBdID0gYS5wcmV2WUZbMF0ubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBBID0gMDsgQSA8IHMuZ2xvYmFscy5kYXRhUG9pbnRzOyBBKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgUyA9IGEuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChyLCBBLCBiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiB2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuaXNIb3Jpem9udGFsID8gKEwgPSBhLmRyYXdTdGFja2VkQmFyUGF0aHMoZShlKHt9LCBDKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb1c6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeURpdmlzaW9uOiBkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB3ID0gYS5zZXJpZXNbcl1bQV0gLyBhLmludmVydGVkWVJhdGlvKSA6IChMID0gYS5kcmF3U3RhY2tlZENvbHVtblBhdGhzKGUoZSh7fSwgQyksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhEaXZpc2lvbjogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9IOiBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB5ID0gYS5zZXJpZXNbcl1bQV0gLyBhLnlSYXRpb1thLnlheGlzSW5kZXhdKSwgaCA9IEwueSwgbCA9IEwueCwgZi5wdXNoKGwpLCBwLnB1c2goaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFAgPSBhLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LCByLCBBLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gYS5yZW5kZXJTZXJpZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGaWxsOiBQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogTC5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBMLnBhdGhUbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YUxhYmVsc1dyYXA6IG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJiYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlU2VyaWVzOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdID0gZiwgcy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbYl0gPSBwLCBhLnByZXZZLnB1c2goYS55QXJyaiksIGEucHJldllGLnB1c2goYS55QXJyakYpLCBhLnByZXZZVmFsLnB1c2goYS55QXJyalZhbCksIGEucHJldlgucHVzaChhLnhBcnJqKSwgYS5wcmV2WEYucHVzaChhLnhBcnJqRiksIGEucHJldlhWYWwucHVzaChhLnhBcnJqVmFsKSwgbi5hZGQodikKICAgICAgICAgICAgICAgICAgICAgICAgfSwgZCA9IDAsIGcgPSAwOyBkIDwgdC5sZW5ndGg7IGQrKywgZysrKSBjKGQsIGcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImluaXRpYWxQb3NpdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEsIHMsIHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgbiwgbCA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0hvcml6b250YWwgPyAobyA9IChvID0gYSA9IGwuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gbC5nbG9iYWxzLmRhdGFQb2ludHMpICogcGFyc2VJbnQobC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwgMTApIC8gMTAwLCByID0gdGhpcy5iYXNlTGluZUludmVydGVkWSArIGwuZ2xvYmFscy5wYWRIb3Jpem9udGFsICsgKHRoaXMuaXNSZXZlcnNlZCA/IGwuZ2xvYmFscy5ncmlkV2lkdGggOiAwKSAtICh0aGlzLmlzUmV2ZXJzZWQgPyAyICogdGhpcy5iYXNlTGluZUludmVydGVkWSA6IDApLCBlID0gKGEgLSBvKSAvIDIpIDogKG4gPSBpID0gbC5nbG9iYWxzLmdyaWRXaWR0aCAvIGwuZ2xvYmFscy5kYXRhUG9pbnRzLCBuID0gbC5nbG9iYWxzLmlzWE51bWVyaWMgJiYgbC5nbG9iYWxzLmRhdGFQb2ludHMgPiAxID8gKGkgPSBsLmdsb2JhbHMubWluWERpZmYgLyB0aGlzLnhSYXRpbykgKiBwYXJzZUludCh0aGlzLmJhck9wdGlvbnMuY29sdW1uV2lkdGgsIDEwKSAvIDEwMCA6IG4gKiBwYXJzZUludChsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsIDEwKSAvIDEwMCwgcyA9IHRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0gKyAodGhpcy5pc1JldmVyc2VkID8gbC5nbG9iYWxzLmdyaWRIZWlnaHQgOiAwKSAtICh0aGlzLmlzUmV2ZXJzZWQgPyAyICogdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XSA6IDApLCB0ID0gbC5nbG9iYWxzLnBhZEhvcml6b250YWwgKyAoaSAtIG4pIC8gMiksIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgeURpdmlzaW9uOiBhLAogICAgICAgICAgICAgICAgICAgICAgICB4RGl2aXNpb246IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogbywKICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHplcm9IOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB6ZXJvVzogcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1N0YWNrZWRCYXJQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUsIGkgPSB0LmluZGV4ZXMsIGEgPSB0LmJhckhlaWdodCwgcyA9IHQuc3Ryb2tlV2lkdGgsIHIgPSB0Lnplcm9XLCBvID0gdC54LCBuID0gdC55LCBsID0gdC55RGl2aXNpb24sIGggPSB0LmVsU2VyaWVzLCBjID0gdGhpcy53LCBkID0gbiwgZyA9IGkuaSwgdSA9IGkuaiwgZiA9IDAsIHAgPSAwOyBwIDwgdGhpcy5wcmV2WEYubGVuZ3RoOyBwKyspIGYgKz0gdGhpcy5wcmV2WEZbcF1bdV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGcgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2WFZhbFtnIC0gMV1bdV0gPCAwID8geCA9IHRoaXMuc2VyaWVzW2ddW3VdID49IDAgPyB0aGlzLnByZXZYW2cgLSAxXVt1XSArIGYgLSAyICogKHRoaXMuaXNSZXZlcnNlZCA/IGYgOiAwKSA6IHRoaXMucHJldlhbZyAtIDFdW3VdIDogdGhpcy5wcmV2WFZhbFtnIC0gMV1bdV0gPj0gMCAmJiAoeCA9IHRoaXMuc2VyaWVzW2ddW3VdID49IDAgPyB0aGlzLnByZXZYW2cgLSAxXVt1XSA6IHRoaXMucHJldlhbZyAtIDFdW3VdIC0gZiArIDIgKiAodGhpcy5pc1JldmVyc2VkID8gZiA6IDApKSwgZSA9IHgKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZSA9IHI7CiAgICAgICAgICAgICAgICAgICAgbyA9IG51bGwgPT09IHRoaXMuc2VyaWVzW2ddW3VdID8gZSA6IGUgKyB0aGlzLnNlcmllc1tnXVt1XSAvIHRoaXMuaW52ZXJ0ZWRZUmF0aW8gLSAyICogKHRoaXMuaXNSZXZlcnNlZCA/IHRoaXMuc2VyaWVzW2ddW3VdIC8gdGhpcy5pbnZlcnRlZFlSYXRpbyA6IDApOwogICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFyWVBvc2l0aW9uOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBiYXJIZWlnaHQ6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHgxOiBlLAogICAgICAgICAgICAgICAgICAgICAgICB4MjogbywKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogaS5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGk6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIGo6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgIHc6IGMKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoewogICAgICAgICAgICAgICAgICAgICAgICBqOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBpOiBnLAogICAgICAgICAgICAgICAgICAgICAgICB5MTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBoCiAgICAgICAgICAgICAgICAgICAgfSksIG4gKz0gbCwgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IGIucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogYi5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgeDogbywKICAgICAgICAgICAgICAgICAgICAgICAgeTogbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1N0YWNrZWRDb2x1bW5QYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pbmRleGVzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC54RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC56ZXJvSDsKICAgICAgICAgICAgICAgICAgICB0LnN0cm9rZVdpZHRoOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5lbFNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGUuaSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUuaiwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGUuYmM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwuZ2xvYmFscy5pc1hOdW1lcmljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gbC5nbG9iYWxzLnNlcmllc1hbaF1bY107CiAgICAgICAgICAgICAgICAgICAgICAgIGcgfHwgKGcgPSAwKSwgaSA9IChnIC0gbC5nbG9iYWxzLm1pblgpIC8gdGhpcy54UmF0aW8gLSByIC8gMgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1LCBmID0gaSwgcCA9IDAsIHggPSAwOyB4IDwgdGhpcy5wcmV2WUYubGVuZ3RoOyB4KyspIHAgKz0gaXNOYU4odGhpcy5wcmV2WUZbeF1bY10pID8gMCA6IHRoaXMucHJldllGW3hdW2NdOwogICAgICAgICAgICAgICAgICAgIGlmIChoID4gMCAmJiAhbC5nbG9iYWxzLmlzWE51bWVyaWMgfHwgaCA+IDAgJiYgbC5nbG9iYWxzLmlzWE51bWVyaWMgJiYgbC5nbG9iYWxzLnNlcmllc1hbaCAtIDFdW2NdID09PSBsLmdsb2JhbHMuc2VyaWVzWFtoXVtjXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiwgdiwgbSA9IE1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCArIDEsIGggKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdGhpcy5wcmV2WVtoIC0gMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMTsgeSA8IG07IHkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKHRoaXMucHJldllbaCAtIHldW2NdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gdGhpcy5wcmV2WVtoIC0geV1bY107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB3ID0gMTsgdyA8IG07IHcrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldllWYWxbaCAtIHddW2NdIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLnNlcmllc1toXVtjXSA+PSAwID8gdiAtIHAgKyAyICogKHRoaXMuaXNSZXZlcnNlZCA/IHAgOiAwKSA6IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXZZVmFsW2ggLSB3XVtjXSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuc2VyaWVzW2hdW2NdID49IDAgPyB2IDogdiArIHAgLSAyICogKHRoaXMuaXNSZXZlcnNlZCA/IHAgOiAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gYiAmJiAoYiA9IGwuZ2xvYmFscy5ncmlkSGVpZ2h0KSwgdSA9IHRoaXMucHJldllGWzBdLmV2ZXJ5KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdAogICAgICAgICAgICAgICAgICAgICAgICB9KSkgJiYgdGhpcy5wcmV2WUYuc2xpY2UoMSwgaCkuZXZlcnkoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmV2ZXJ5KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpID8gbC5nbG9iYWxzLmdyaWRIZWlnaHQgLSBvIDogYgogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB1ID0gbC5nbG9iYWxzLmdyaWRIZWlnaHQgLSBvOwogICAgICAgICAgICAgICAgICAgIGEgPSB1IC0gdGhpcy5zZXJpZXNbaF1bY10gLyB0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdICsgMiAqICh0aGlzLmlzUmV2ZXJzZWQgPyB0aGlzLnNlcmllc1toXVtjXSAvIHRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0gOiAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgayA9IHRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhclhQb3NpdGlvbjogZiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFyV2lkdGg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHkxOiB1LAogICAgICAgICAgICAgICAgICAgICAgICB5MjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgeVJhdGlvOiB0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogdGhpcy5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBlLnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgaTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgajogYywKICAgICAgICAgICAgICAgICAgICAgICAgdzogbAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGJjOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBqOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBpOiBoLAogICAgICAgICAgICAgICAgICAgICAgICB4MTogZiwKICAgICAgICAgICAgICAgICAgICAgICAgeDI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBuCiAgICAgICAgICAgICAgICAgICAgfSksIGkgKz0gcywgewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoVG86IGsucGF0aFRvLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogay5wYXRoRnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgeDogbC5nbG9iYWxzLmlzWE51bWVyaWMgPyBpIC0gcyA6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgcwogICAgICAgIH0oRiksCiAgICAgICAgd3QgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIG4ocywgdCk7CiAgICAgICAgICAgIHZhciBpID0gZChzKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHMoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYSh0aGlzLCBzKSwgaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIocywgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgTSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5kbGVzdGlja09wdGlvbnMgPSB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLCB0aGlzLmJveE9wdGlvbnMgPSB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsIHRoaXMuaXNIb3Jpem9udGFsID0gcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBuZXcgeSh0aGlzLmN0eCwgcyk7CiAgICAgICAgICAgICAgICAgICAgdCA9IG4uZ2V0TG9nU2VyaWVzKHQpLCB0aGlzLnNlcmllcyA9IHQsIHRoaXMueVJhdGlvID0gbi5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSwgdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IHIuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLSIuY29uY2F0KHMuY29uZmlnLmNoYXJ0LnR5cGUsICItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXMiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgaCA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuaXNCb3hQbG90ID0gImJveFBsb3QiID09PSBzLmNvbmZpZy5jaGFydC50eXBlIHx8ICJib3hQbG90IiA9PT0gcy5jb25maWcuc2VyaWVzW25dLnR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCwgYywgZCwgZywgdSA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHMuZ2xvYmFscy5jb21ib0NoYXJ0cyA/IGlbbl0gOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSByLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc05hbWU6IHguZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogbiArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOnJlYWxJbmRleCI6IHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sIHYpLCB0W25dLmxlbmd0aCA+IDAgJiYgKGEudmlzaWJsZUkgPSBhLnZpc2libGVJICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSwgdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEueVJhdGlvLmxlbmd0aCA+IDEgJiYgKGEueWF4aXNJbmRleCA9IHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBhLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGsueSwgeSA9IGsuYmFySGVpZ2h0LCBjID0gay55RGl2aXNpb24sIGcgPSBrLnplcm9XLCB1ID0gay54LCB3ID0gay5iYXJXaWR0aCwgaCA9IGsueERpdmlzaW9uLCBkID0gay56ZXJvSCwgYi5wdXNoKHUgKyB3IC8gMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBBID0gci5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1kYXRhbGFiZWxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBTID0gZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChuLCBpLCB2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5pc0hvcml6b250YWwgPyBhLmRyYXdIb3Jpem9udGFsQm94UGF0aHMoZShlKHt9LCB4KSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlEaXZpc2lvbjogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhckhlaWdodDogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9XOiBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGEuZHJhd1ZlcnRpY2FsQm94UGF0aHMoZShlKHt9LCB4KSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhEaXZpc2lvbjogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb0g6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBmID0gbC55LCB1ID0gbC54LCBpID4gMCAmJiBiLnB1c2godSArIHcgLyAyKSwgcC5wdXNoKGYpLCBsLnBhdGhUby5mb3JFYWNoKChmdW5jdGlvbihlLCBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9ICFhLmlzQm94UGxvdCAmJiBhLmNhbmRsZXN0aWNrT3B0aW9ucy53aWNrLnVzZUZpbGxDb2xvciA/IGwuY29sb3JbaF0gOiBzLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gby5maWxsUGF0aCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc051bWJlcjogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBsLmNvbG9yW2hdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdFtuXVtpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5yZW5kZXJTZXJpZXMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRmlsbDogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lRmlsbDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IGwucGF0aEZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsU2VyaWVzOiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFySGVpZ2h0OiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YUxhYmVsc1dyYXA6IEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVNlcmllczogYS52aXNpYmxlSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzLmNvbmZpZy5jaGFydC50eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBDID0gMDsgQyA8IHMuZ2xvYmFscy5kYXRhUG9pbnRzOyBDKyspIFMoQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XSA9IGIsIHMuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdID0gcCwgbC5hZGQobSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgYyA9IDA7IGMgPCB0Lmxlbmd0aDsgYysrKSBoKGMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdWZXJ0aWNhbEJveFBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmluZGV4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lng7CiAgICAgICAgICAgICAgICAgICAgdC55OwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdC54RGl2aXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmJhcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC56ZXJvSCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlLmksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmosCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG4uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBuLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAiIjsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQm94UGxvdCAmJiAoZiA9IFt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLCB0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZS5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLmdldE9ITENWYWx1ZSh4LCBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByOwogICAgICAgICAgICAgICAgICAgIGIubyA+IGIuYyAmJiAoZCA9ICExKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IE1hdGgubWluKGIubywgYi5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgayA9IE1hdGgubWF4KGIubywgYi5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGIubTsKICAgICAgICAgICAgICAgICAgICBuLmdsb2JhbHMuaXNYTnVtZXJpYyAmJiAoaSA9IChuLmdsb2JhbHMuc2VyaWVzWFt4XVtjXSAtIG4uZ2xvYmFscy5taW5YKSAvIHRoaXMueFJhdGlvIC0gcyAvIDIpOwogICAgICAgICAgICAgICAgICAgIHZhciBTID0gaSArIHMgKiB0aGlzLnZpc2libGVJOwogICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gdGhpcy5zZXJpZXNbaF1bY10gfHwgbnVsbCA9PT0gdGhpcy5zZXJpZXNbaF1bY10gPyAodyA9IHIsIGsgPSByKSA6ICh3ID0gciAtIHcgLyBwLCBrID0gciAtIGsgLyBwLCB2ID0gciAtIGIuaCAvIHAsIHkgPSByIC0gYi5sIC8gcCwgQSA9IHIgLSBiLm0gLyBwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgQyA9IGwubW92ZShTLCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgTCA9IGwubW92ZShTICsgcyAvIDIsIHcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGggPiAwICYmIChMID0gdGhpcy5nZXRQcmV2aW91c1BhdGgoeCwgYywgITApKSwgQyA9IHRoaXMuaXNCb3hQbG90ID8gW2wubW92ZShTLCB3KSArIGwubGluZShTICsgcyAvIDIsIHcpICsgbC5saW5lKFMgKyBzIC8gMiwgdikgKyBsLmxpbmUoUyArIHMgLyA0LCB2KSArIGwubGluZShTICsgcyAtIHMgLyA0LCB2KSArIGwubGluZShTICsgcyAvIDIsIHYpICsgbC5saW5lKFMgKyBzIC8gMiwgdykgKyBsLmxpbmUoUyArIHMsIHcpICsgbC5saW5lKFMgKyBzLCBBKSArIGwubGluZShTLCBBKSArIGwubGluZShTLCB3ICsgbyAvIDIpLCBsLm1vdmUoUywgQSkgKyBsLmxpbmUoUyArIHMsIEEpICsgbC5saW5lKFMgKyBzLCBrKSArIGwubGluZShTICsgcyAvIDIsIGspICsgbC5saW5lKFMgKyBzIC8gMiwgeSkgKyBsLmxpbmUoUyArIHMgLSBzIC8gNCwgeSkgKyBsLmxpbmUoUyArIHMgLyA0LCB5KSArIGwubGluZShTICsgcyAvIDIsIHkpICsgbC5saW5lKFMgKyBzIC8gMiwgaykgKyBsLmxpbmUoUywgaykgKyBsLmxpbmUoUywgQSkgKyAieiJdIDogW2wubW92ZShTLCBrKSArIGwubGluZShTICsgcyAvIDIsIGspICsgbC5saW5lKFMgKyBzIC8gMiwgdikgKyBsLmxpbmUoUyArIHMgLyAyLCBrKSArIGwubGluZShTICsgcywgaykgKyBsLmxpbmUoUyArIHMsIHcpICsgbC5saW5lKFMgKyBzIC8gMiwgdykgKyBsLmxpbmUoUyArIHMgLyAyLCB5KSArIGwubGluZShTICsgcyAvIDIsIHcpICsgbC5saW5lKFMsIHcpICsgbC5saW5lKFMsIGsgLSBvIC8gMildLCBMICs9IGwubW92ZShTLCB3KSwgbi5nbG9iYWxzLmlzWE51bWVyaWMgfHwgKGkgKz0gYSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBDLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogTCwKICAgICAgICAgICAgICAgICAgICAgICAgeDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogaywKICAgICAgICAgICAgICAgICAgICAgICAgYmFyWFBvc2l0aW9uOiBTLAogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5pc0JveFBsb3QgPyBmIDogZCA/IFtnXSA6IFt1XQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0hvcml6b250YWxCb3hQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pbmRleGVzOwogICAgICAgICAgICAgICAgICAgIHQueDsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueURpdmlzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5iYXJIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0Lnplcm9XLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGUuaSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUuaiwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0JveFBsb3QgJiYgKGQgPSBbdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlciwgdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gdGhpcy5pbnZlcnRlZFlSYXRpbywKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUucmVhbEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy5nZXRPSExDVmFsdWUodSwgYyksCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSByLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IE1hdGgubWluKGYubywgZi5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IE1hdGgubWF4KGYubywgZi5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGYubTsKICAgICAgICAgICAgICAgICAgICBuLmdsb2JhbHMuaXNYTnVtZXJpYyAmJiAoaSA9IChuLmdsb2JhbHMuc2VyaWVzWFt1XVtjXSAtIG4uZ2xvYmFscy5taW5YKSAvIHRoaXMuaW52ZXJ0ZWRYUmF0aW8gLSBzIC8gMik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBpICsgcyAqIHRoaXMudmlzaWJsZUk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSB0aGlzLnNlcmllc1toXVtjXSB8fCBudWxsID09PSB0aGlzLnNlcmllc1toXVtjXSA/IChiID0gciwgdiA9IHIpIDogKGIgPSByICsgYiAvIGcsIHYgPSByICsgdiAvIGcsIHAgPSByICsgZi5oIC8gZywgeCA9IHIgKyBmLmwgLyBnLCB5ID0gciArIGYubSAvIGcpOwogICAgICAgICAgICAgICAgICAgIHZhciBrID0gbC5tb3ZlKHIsIHcpLAogICAgICAgICAgICAgICAgICAgICAgICBBID0gbC5tb3ZlKGIsIHcgKyBzIC8gMik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aCA+IDAgJiYgKEEgPSB0aGlzLmdldFByZXZpb3VzUGF0aCh1LCBjLCAhMCkpLCBrID0gW2wubW92ZShiLCB3KSArIGwubGluZShiLCB3ICsgcyAvIDIpICsgbC5saW5lKHAsIHcgKyBzIC8gMikgKyBsLmxpbmUocCwgdyArIHMgLyAyIC0gcyAvIDQpICsgbC5saW5lKHAsIHcgKyBzIC8gMiArIHMgLyA0KSArIGwubGluZShwLCB3ICsgcyAvIDIpICsgbC5saW5lKGIsIHcgKyBzIC8gMikgKyBsLmxpbmUoYiwgdyArIHMpICsgbC5saW5lKHksIHcgKyBzKSArIGwubGluZSh5LCB3KSArIGwubGluZShiICsgbyAvIDIsIHcpLCBsLm1vdmUoeSwgdykgKyBsLmxpbmUoeSwgdyArIHMpICsgbC5saW5lKHYsIHcgKyBzKSArIGwubGluZSh2LCB3ICsgcyAvIDIpICsgbC5saW5lKHgsIHcgKyBzIC8gMikgKyBsLmxpbmUoeCwgdyArIHMgLSBzIC8gNCkgKyBsLmxpbmUoeCwgdyArIHMgLyA0KSArIGwubGluZSh4LCB3ICsgcyAvIDIpICsgbC5saW5lKHYsIHcgKyBzIC8gMikgKyBsLmxpbmUodiwgdykgKyBsLmxpbmUoeSwgdykgKyAieiJdLCBBICs9IGwubW92ZShiLCB3KSwgbi5nbG9iYWxzLmlzWE51bWVyaWMgfHwgKGkgKz0gYSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBrLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogQSwKICAgICAgICAgICAgICAgICAgICAgICAgeDogdiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFyWVBvc2l0aW9uOiB3LAogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0T0hMQ1ZhbHVlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbzogdGhpcy5pc0JveFBsb3QgPyBpLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXSA6IGkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBoOiB0aGlzLmlzQm94UGxvdCA/IGkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdIDogaS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG06IGkuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW3RdW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBsOiB0aGlzLmlzQm94UGxvdCA/IGkuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdIDogaS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGM6IHRoaXMuaXNCb3hQbG90ID8gaS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV0gOiBpLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCBzCiAgICAgICAgfShGKSwKICAgICAgICBrdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gZSwgdGhpcy53ID0gZS53CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIodCwgW3sKICAgICAgICAgICAgICAgIGtleTogImNoZWNrQ29sb3JSYW5nZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY29uZmlnLnBsb3RPcHRpb25zW3QuY29uZmlnLmNoYXJ0LnR5cGVdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aCA+IDAgJiYgaS5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5mcm9tIDw9IDAgJiYgKGUgPSAhMCkKICAgICAgICAgICAgICAgICAgICB9KSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0U2hhZGVDb2xvciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICByID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnNoYWRlSW50ZW5zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5kZXRlcm1pbmVDb2xvcih0LCBlLCBpKTsKICAgICAgICAgICAgICAgICAgICBzLmdsb2JhbHMuaGFzTmVncyB8fCBhID8gciA9IHMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnJldmVyc2VOZWdhdGl2ZVNoYWRlID8gbi5wZXJjZW50IDwgMCA/IG4ucGVyY2VudCAvIDEwMCAqICgxLjI1ICogbykgOiAoMSAtIG4ucGVyY2VudCAvIDEwMCkgKiAoMS4yNSAqIG8pIDogbi5wZXJjZW50IDw9IDAgPyAxIC0gKDEgKyBuLnBlcmNlbnQgLyAxMDApICogbyA6ICgxIC0gbi5wZXJjZW50IC8gMTAwKSAqIG8gOiAociA9IDEgLSBuLnBlcmNlbnQgLyAxMDAsICJ0cmVlbWFwIiA9PT0gdCAmJiAociA9ICgxIC0gbi5wZXJjZW50IC8gMTAwKSAqICgxLjI1ICogbykpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4uY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBuZXcgeDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5jb25maWcucGxvdE9wdGlvbnNbdF0uZW5hYmxlU2hhZGVzICYmIChsID0gImRhcmsiID09PSB0aGlzLncuY29uZmlnLnRoZW1lLm1vZGUgPyB4LmhleFRvUmdiYShoLnNoYWRlQ29sb3IoLTEgKiByLCBuLmNvbG9yKSwgcy5jb25maWcuZmlsbC5vcGFjaXR5KSA6IHguaGV4VG9SZ2JhKGguc2hhZGVDb2xvcihyLCBuLmNvbG9yKSwgcy5jb25maWcuZmlsbC5vcGFjaXR5KSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUHJvcHM6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRldGVybWluZUNvbG9yIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmdsb2JhbHMuc2VyaWVzW2VdW2ldLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYS5jb25maWcucGxvdE9wdGlvbnNbdF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmNvbG9yU2NhbGUuaW52ZXJzZSA/IGkgOiBlOwogICAgICAgICAgICAgICAgICAgIHIuZGlzdHJpYnV0ZWQgJiYgInRyZWVtYXAiID09PSBhLmNvbmZpZy5jaGFydC50eXBlICYmIChvID0gaSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhLmdsb2JhbHMuY29sb3JzW29dLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHUoYS5nbG9iYWxzLnNlcmllc1tlXSkpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgdShhLmdsb2JhbHMuc2VyaWVzW2VdKSk7CiAgICAgICAgICAgICAgICAgICAgci5kaXN0cmlidXRlZCB8fCAiaGVhdG1hcCIgIT09IHQgfHwgKGggPSBhLmdsb2JhbHMubWluWSwgYyA9IGEuZ2xvYmFscy5tYXhZKSwgdm9pZCAwICE9PSByLmNvbG9yU2NhbGUubWluICYmIChoID0gci5jb2xvclNjYWxlLm1pbiA8IGEuZ2xvYmFscy5taW5ZID8gci5jb2xvclNjYWxlLm1pbiA6IGEuZ2xvYmFscy5taW5ZLCBjID0gci5jb2xvclNjYWxlLm1heCA+IGEuZ2xvYmFscy5tYXhZID8gci5jb2xvclNjYWxlLm1heCA6IGEuZ2xvYmFscy5tYXhZKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IE1hdGguYWJzKGMpICsgTWF0aC5hYnMoaCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAxMDAgKiBzIC8gKDAgPT09IGQgPyBkIC0gMWUtNiA6IGQpOwogICAgICAgICAgICAgICAgICAgIHIuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoID4gMCAmJiByLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA+PSB0LmZyb20gJiYgcyA8PSB0LnRvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5jb2xvciwgbCA9IHQuZm9yZUNvbG9yID8gdC5mb3JlQ29sb3IgOiBudWxsLCBoID0gdC5mcm9tLCBjID0gdC50bzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gTWF0aC5hYnMoYykgKyBNYXRoLmFicyhoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAxMDAgKiBzIC8gKDAgPT09IGkgPyBpIC0gMWUtNiA6IGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVDb2xvcjogbCwKICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudDogZwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2FsY3VsYXRlRGF0YUxhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC50ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jb2xvclByb3BzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMudy5jb25maWcuZGF0YUxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyB6KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKGwuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBkID0gaC5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtZGF0YS1sYWJlbHMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGwub2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBsLm9mZnNldFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSArIGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gYSArIHBhcnNlRmxvYXQobC5zdHlsZS5mb250U2l6ZSkgLyAzICsgdTsKICAgICAgICAgICAgICAgICAgICAgICAgYy5wbG90RGF0YUxhYmVsc1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogby5mb3JlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNDb25maWc6IGwKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYWRkTGlzdGVuZXJzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCBlLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcywgdCkpLCB0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIGUucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLCB0KSksIHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBlLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLCB0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIEF0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgaSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMueFJhdGlvID0gaS54UmF0aW8sIHRoaXMueVJhdGlvID0gaS55UmF0aW8sIHRoaXMuZHluYW1pY0FuaW0gPSB0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbiwgdGhpcy5oZWxwZXJzID0gbmV3IGt0KGUpLCB0aGlzLnJlY3RSYWRpdXMgPSB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLCB0aGlzLnN0cm9rZVdpZHRoID0gdGhpcy53LmNvbmZpZy5zdHJva2Uuc2hvdyA/IHRoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoIDogMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1oZWF0bWFwIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBhLmF0dHIoImNsaXAtcGF0aCIsICJ1cmwoI2dyaWRSZWN0TWFzayIuY29uY2F0KGUuZ2xvYmFscy5jdWlkLCAiKSIpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGUuZ2xvYmFscy5ncmlkV2lkdGggLyBlLmdsb2JhbHMuZGF0YVBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuZ2xvYmFscy5ncmlkSGVpZ2h0IC8gZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gITE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZWdSYW5nZSA9IHRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHQuc2xpY2UoKTsKICAgICAgICAgICAgICAgICAgICBlLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCAmJiAobiA9ICEwLCBsLnJldmVyc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCA9IG4gPyAwIDogbC5sZW5ndGggLSAxOyBuID8gaCA8IGwubGVuZ3RoIDogaCA+PSAwOyBuID8gaCsrIDogaC0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gaS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtaGVhdG1hcC1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW2hdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogaCArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpyZWFsSW5kZXgiOiBoCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYywgaCksIGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3coYywgZCwgaCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMCwgdSA9IGUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuc2hhZGVJbnRlbnNpdHksIGYgPSAwOyBmIDwgbFtoXS5sZW5ndGg7IGYrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihlLmNvbmZpZy5jaGFydC50eXBlLCBoLCBmLCB0aGlzLm5lZ1JhbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gcC5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcC5jb2xvclByb3BzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJpbWFnZSIgPT09IGUuY29uZmlnLmZpbGwudHlwZSkgYiA9IG5ldyBNKHRoaXMuY3R4KS5maWxsUGF0aCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTnVtYmVyOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IGUuZ2xvYmFscy5oYXNOZWdzID8geS5wZXJjZW50IDwgMCA/IDEgLSAoMSArIHkucGVyY2VudCAvIDEwMCkgOiB1ICsgeS5wZXJjZW50IC8gMTAwIDogeS5wZXJjZW50IC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5JRDogeC5yYW5kb21JZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlLmNvbmZpZy5maWxsLmltYWdlLndpZHRoID8gZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aCA6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodCA/IGUuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0IDogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHRoaXMucmVjdFJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gaS5kcmF3UmVjdChnLCBvLCBzLCByLCB3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k6IG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgay5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0IiksIGMuYWRkKGspLCBrLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsOiBsW2hdW2ZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLXdpZHRoIjogdGhpcy5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBlLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlID8gYiA6IGUuZ2xvYmFscy5zdHJva2UuY29sb3JzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmhlbHBlcnMuYWRkTGlzdGVuZXJzKGspLCBlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQgJiYgIWUuZ2xvYmFscy5kYXRhQ2hhbmdlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMucmVzaXplZCB8fCAoQSA9IGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLCB0aGlzLmFuaW1hdGVIZWF0TWFwKGssIGcsIG8sIHMsIHIsIEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFMgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmR5bmFtaWNBbmltLmVuYWJsZWQgJiYgZS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA9IHRoaXMuZHluYW1pY0FuaW0uc3BlZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF0gJiYgZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bZl0gJiYgZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bZl0uY29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgfHwgKEMgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpLCB0aGlzLmFuaW1hdGVIZWF0Q29sb3IoaywgeC5pc0NvbG9ySGV4KEMpID8gQyA6IHgucmdiMmhleChDKSwgeC5pc0NvbG9ySGV4KGIpID8gYiA6IHgucmdiMmhleChiKSwgUykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTCA9ICgwLCBlLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcikoZS5nbG9iYWxzLnNlcmllc1toXVtmXSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS5nbG9iYWxzLnNlcmllc1toXVtmXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IHRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZyArIHMgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBvICsgciAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUHJvcHM6IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gUCAmJiBjLmFkZChQKSwgZyArPSBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbyArPSByLCBhLmFkZChjKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IGUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIGUuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkID8gVC51bnNoaWZ0KCIiKSA6IFQucHVzaCgiIiksIGUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdCA9IFQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSBlLmdsb2JhbHMuZ3JpZEhlaWdodCAvIGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WSA9IC1JIC8gMiwgYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhbmltYXRlSGVhdE1hcCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IGIodGhpcy5jdHgpOwogICAgICAgICAgICAgICAgICAgIG8uYW5pbWF0ZVJlY3QodCwgewogICAgICAgICAgICAgICAgICAgICAgICB4OiBlICsgYSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGkgKyBzIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcwogICAgICAgICAgICAgICAgICAgIH0sIHIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5hbmltYXRpb25Db21wbGV0ZWQodCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYW5pbWF0ZUhlYXRDb2xvciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHQuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGUKICAgICAgICAgICAgICAgICAgICB9KS5hbmltYXRlKGEpLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1lBeGlzVGV4dHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMuY29uZmlnLnlheGlzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQgKyByLmxhYmVscy5vZmZzZXRYLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlICsgci5sYWJlbHMub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbyhhLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogIm1pZGRsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiByLmxhYmVscy5zdHlsZS5mb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBBcnJheS5pc0FycmF5KHIubGFiZWxzLnN0eWxlLmNvbG9ycykgPyByLmxhYmVscy5zdHlsZS5jb2xvcnNbaV0gOiByLmxhYmVscy5zdHlsZS5jb2xvcnMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgQ3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudzsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgdGhpcy5jaGFydFR5cGUgPSB0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsIHRoaXMuaW5pdGlhbEFuaW0gPSB0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCwgdGhpcy5keW5hbWljQW5pbSA9IHRoaXMuaW5pdGlhbEFuaW0gJiYgdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCwgdGhpcy5hbmltQmVnaW5BcnIgPSBbMF0sIHRoaXMuYW5pbUR1ciA9IDAsIHRoaXMuZG9udXREYXRhTGFiZWxzID0gdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzLCB0aGlzLmxpbmVDb2xvckFyciA9IHZvaWQgMCAhPT0gaS5nbG9iYWxzLnN0cm9rZS5jb2xvcnMgPyBpLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyA6IGkuZ2xvYmFscy5jb2xvcnMsIHRoaXMuZGVmYXVsdFNpemUgPSBNYXRoLm1pbihpLmdsb2JhbHMuZ3JpZFdpZHRoLCBpLmdsb2JhbHMuZ3JpZEhlaWdodCksIHRoaXMuY2VudGVyWSA9IHRoaXMuZGVmYXVsdFNpemUgLyAyLCB0aGlzLmNlbnRlclggPSBpLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMiwgInJhZGlhbEJhciIgPT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgPyB0aGlzLmZ1bGxBbmdsZSA9IDM2MCA6IHRoaXMuZnVsbEFuZ2xlID0gTWF0aC5hYnMoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmVuZEFuZ2xlIC0gaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLCB0aGlzLmluaXRpYWxBbmdsZSA9IGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlICUgdGhpcy5mdWxsQW5nbGUsIGkuZ2xvYmFscy5yYWRpYWxTaXplID0gdGhpcy5kZWZhdWx0U2l6ZSAvIDIuMDUgLSBpLmNvbmZpZy5zdHJva2Uud2lkdGggLSAoaS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQgPyAwIDogaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSwgdGhpcy5kb251dFNpemUgPSBpLmdsb2JhbHMucmFkaWFsU2l6ZSAqIHBhcnNlSW50KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5zaXplLCAxMCkgLyAxMDAsIHRoaXMubWF4WSA9IDAsIHRoaXMuc2xpY2VMYWJlbHMgPSBbXSwgdGhpcy5zbGljZVNpemVzID0gW10sIHRoaXMucHJldlNlY3RvckFuZ2xlQXJyID0gW10KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiZHJhdyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyBtKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXQgPSBhLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1waWUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBpLmdsb2JhbHMubm9EYXRhKSByZXR1cm4gdGhpcy5yZXQ7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDAsIHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykgcyArPSB4Lm5lZ1RvWmVybyh0W3JdKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYS5ncm91cCgpOwogICAgICAgICAgICAgICAgICAgIDAgPT09IHMgJiYgKHMgPSAxZS01KSwgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUubWF4WSA9IE1hdGgubWF4KGUubWF4WSwgdCkKICAgICAgICAgICAgICAgICAgICB9KSksIGkuY29uZmlnLnlheGlzWzBdLm1heCAmJiAodGhpcy5tYXhZID0gaS5jb25maWcueWF4aXNbMF0ubWF4KSwgImJhY2siID09PSBpLmNvbmZpZy5ncmlkLnBvc2l0aW9uICYmICJwb2xhckFyZWEiID09PSB0aGlzLmNoYXJ0VHlwZSAmJiB0aGlzLmRyYXdQb2xhckVsZW1lbnRzKHRoaXMucmV0KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IHQubGVuZ3RoOyBsKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLmZ1bGxBbmdsZSAqIHgubmVnVG9aZXJvKHRbbF0pIC8gczsKICAgICAgICAgICAgICAgICAgICAgICAgby5wdXNoKGgpLCAicG9sYXJBcmVhIiA9PT0gdGhpcy5jaGFydFR5cGUgPyAob1tsXSA9IHRoaXMuZnVsbEFuZ2xlIC8gdC5sZW5ndGgsIHRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplICogdFtsXSAvIHRoaXMubWF4WSkpIDogdGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChpLmdsb2JhbHMuZGF0YUNoYW5nZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYywgZCA9IDAsIGcgPSAwOyBnIDwgaS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoOyBnKyspIGQgKz0geC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZ10pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMDsgdSA8IGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDsgdSsrKSBjID0gdGhpcy5mdWxsQW5nbGUgKiB4Lm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1t1XSkgLyBkLCB0aGlzLnByZXZTZWN0b3JBbmdsZUFyci5wdXNoKGMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuZG9udXRTaXplIDwgMCAmJiAodGhpcy5kb251dFNpemUgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGkuZ2xvYmFscy5ncmlkV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gaS5nbG9iYWxzLmdyaWRIZWlnaHQgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gcCAtIGkuZ2xvYmFscy5ncmlkV2lkdGggLyAyICogZiwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGIgLSBpLmdsb2JhbHMuZ3JpZEhlaWdodCAvIDIgKiBmOwogICAgICAgICAgICAgICAgICAgIGlmICgiZG9udXQiID09PSB0aGlzLmNoYXJ0VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGEuZHJhd0NpcmNsZSh0aGlzLmRvbnV0U2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogdGhpcy5jZW50ZXJYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k6IHRoaXMuY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5iYWNrZ3JvdW5kID8gaS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQgOiAidHJhbnNwYXJlbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuLmFkZCh3KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgayA9IHRoaXMuZHJhd0FyY3MobywgdCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgay5hZGQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIuY29uY2F0KHYsICIsICIpLmNvbmNhdCh5LCAiKSBzY2FsZSgiKS5jb25jYXQoZiwgIikiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbi5hZGQoayksIHRoaXMucmV0LmFkZChuKSwgdGhpcy5kb251dERhdGFMYWJlbHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgQSA9IHRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMuZG9udXREYXRhTGFiZWxzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob2xsb3dTaXplOiB0aGlzLmRvbnV0U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclg6IHRoaXMuY2VudGVyWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclk6IHRoaXMuY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IHRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVYOiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlWTogeQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXQuYWRkKEEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnJvbnQiID09PSBpLmNvbmZpZy5ncmlkLnBvc2l0aW9uICYmICJwb2xhckFyZWEiID09PSB0aGlzLmNoYXJ0VHlwZSAmJiB0aGlzLmRyYXdQb2xhckVsZW1lbnRzKHRoaXMucmV0KSwgdGhpcy5yZXQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd0FyY3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG5ldyB2KHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBNKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNsaWNlcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmluaXRpYWxBbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuaW5pdGlhbEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdGhpcy5pbml0aWFsQW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLmluaXRpYWxBbmdsZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cm9rZVdpZHRoID0gaS5jb25maWcuc3Ryb2tlLnNob3cgPyBpLmNvbmZpZy5zdHJva2Uud2lkdGggOiAwOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgdC5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXBpZS1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW2RdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogZCArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpyZWFsSW5kZXgiOiBkCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBvLmFkZChnKSwgbCA9IGMsIGggPSAobiA9IGgpICsgdFtkXSwgYyA9IGwgKyB0aGlzLnByZXZTZWN0b3JBbmdsZUFycltkXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBoIDwgbiA/IHRoaXMuZnVsbEFuZ2xlICsgaCAtIG4gOiBoIC0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSByLmZpbGxQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5zbGljZVNpemVzW2RdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlW2RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLmdldENoYW5nZWRQYXRoKGwsIGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHMuZHJhd1BhdGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBBcnJheS5pc0FycmF5KHRoaXMubGluZUNvbG9yQXJyKSA/IHRoaXMubGluZUNvbG9yQXJyW2RdIDogdGhpcy5saW5lQ29sb3JBcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogaS5jb25maWcuZmlsbC5vcGFjaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6ICJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSwgIi1zbGljZS0iKS5jb25jYXQoZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5zZXRTZWxlY3Rpb25GaWx0ZXIoYiwgMCwgZCksIGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kcm9wU2hhZG93KGIsIHksIGQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcnMoYiwgdGhpcy5kb251dERhdGFMYWJlbHMpLCBtLnNldEF0dHJzKGIubm9kZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6YW5nbGUiOiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6c3RhcnRBbmdsZSI6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpzdHJva2VXaWR0aCI6IHRoaXMuc3Ryb2tlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTp2YWx1ZSI6IGVbZF0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgInBpZSIgPT09IHRoaXMuY2hhcnRUeXBlIHx8ICJwb2xhckFyZWEiID09PSB0aGlzLmNoYXJ0VHlwZSA/IHcgPSB4LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLCB0aGlzLmNlbnRlclksIGkuZ2xvYmFscy5yYWRpYWxTaXplIC8gMS4yNSArIGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCwgKG4gKyB1IC8gMikgJSB0aGlzLmZ1bGxBbmdsZSkgOiAiZG9udXQiID09PSB0aGlzLmNoYXJ0VHlwZSAmJiAodyA9IHgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsIHRoaXMuY2VudGVyWSwgKGkuZ2xvYmFscy5yYWRpYWxTaXplICsgdGhpcy5kb251dFNpemUpIC8gMiArIGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm9mZnNldCwgKG4gKyB1IC8gMikgJSB0aGlzLmZ1bGxBbmdsZSkpLCBnLmFkZChiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbEFuaW0gfHwgaS5nbG9iYWxzLnJlc2l6ZWQgfHwgaS5nbG9iYWxzLmRhdGFDaGFuZ2VkID8gdGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKSA6ICgwID09PSAoayA9IHUgLyB0aGlzLmZ1bGxBbmdsZSAqIGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpICYmIChrID0gMSksIHRoaXMuYW5pbUR1ciA9IGsgKyB0aGlzLmFuaW1EdXIsIHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSksIHRoaXMuZHluYW1pY0FuaW0gJiYgaS5nbG9iYWxzLmRhdGFDaGFuZ2VkID8gdGhpcy5hbmltYXRlUGF0aHMoYiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuc2xpY2VTaXplc1tkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRBbmdsZTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGFydEFuZ2xlOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZFbmRBbmdsZTogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlU3RhcnRpbmdQb3M6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbUJlZ2luQXJyOiB0aGlzLmFuaW1CZWdpbkFyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTZXRQcmV2UGF0aHM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cjogaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHRoaXMuYW5pbWF0ZVBhdGhzKGIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNsaWNlU2l6ZXNbZF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGU6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHQubGVuZ3RoIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltQmVnaW5BcnI6IHRoaXMuYW5pbUJlZ2luQXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cjogawogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5leHBhbmRPbkNsaWNrICYmICJwb2xhckFyZWEiICE9PSB0aGlzLmNoYXJ0VHlwZSAmJiBiLmNsaWNrKHRoaXMucGllQ2xpY2tlZC5iaW5kKHRoaXMsIGQpKSwgdm9pZCAwICE9PSBpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdICYmIGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0uaW5kZXhPZihkKSA+IC0xICYmIHRoaXMucGllQ2xpY2tlZChkKSwgaS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQSA9IHcueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gdy55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMgPSAxMDAgKiB1IC8gdGhpcy5mdWxsQW5nbGUgKyAiJSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gdSAmJiBpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5taW5BbmdsZVRvU2hvd0xhYmVsIDwgdFtkXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBMID0gaS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBMICYmIChDID0gTChpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgUCA9IGkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJID0gcy5kcmF3VGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IEMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBpLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogaS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250RmFtaWx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogaS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250V2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBQCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChULmFkZChJKSwgaS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93LmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHogPSBpLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZHJvcFNoYWRvdyhJLCB6KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJLm5vZGUuY2xhc3NMaXN0LmFkZCgiYXBleGNoYXJ0cy1waWUtbGFiZWwiKSwgaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlICYmICExID09PSBpLmdsb2JhbHMucmVzaXplZCAmJiAoSS5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtcGllLWxhYmVsLWRlbGF5IiksIEkubm9kZS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQgLyA5NDAgKyAicyIpLCB0aGlzLnNsaWNlTGFiZWxzLnB1c2goVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhZGRMaXN0ZW5lcnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5ldyBtKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICB0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLCB0KSksIHQubm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsIHQpKSwgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLnJldmVydERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsIHQubm9kZSwgZSkpLCB0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcywgdCkpLCB0aGlzLmRvbnV0RGF0YUxhYmVscy50b3RhbC5zaG93QWx3YXlzIHx8ICh0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLCB0Lm5vZGUsIGUpKSwgdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLCB0Lm5vZGUsIGUpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYW5pbWF0ZVBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLmVuZEFuZ2xlIDwgZS5zdGFydEFuZ2xlID8gdGhpcy5mdWxsQW5nbGUgKyBlLmVuZEFuZ2xlIC0gZS5zdGFydEFuZ2xlIDogZS5lbmRBbmdsZSAtIGUuc3RhcnRBbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLnN0YXJ0QW5nbGU7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLnByZXZTdGFydEFuZ2xlICYmIHZvaWQgMCAhPT0gZS5wcmV2RW5kQW5nbGUgJiYgKHIgPSBlLnByZXZFbmRBbmdsZSwgcyA9IGUucHJldkVuZEFuZ2xlIDwgZS5wcmV2U3RhcnRBbmdsZSA/IHRoaXMuZnVsbEFuZ2xlICsgZS5wcmV2RW5kQW5nbGUgLSBlLnByZXZTdGFydEFuZ2xlIDogZS5wcmV2RW5kQW5nbGUgLSBlLnByZXZTdGFydEFuZ2xlKSwgZS5pID09PSBpLmNvbmZpZy5zZXJpZXMubGVuZ3RoIC0gMSAmJiAoYSArIG8gPiB0aGlzLmZ1bGxBbmdsZSA/IGUuZW5kQW5nbGUgPSBlLmVuZEFuZ2xlIC0gKGEgKyBvKSA6IGEgKyBvIDwgdGhpcy5mdWxsQW5nbGUgJiYgKGUuZW5kQW5nbGUgPSBlLmVuZEFuZ2xlICsgKHRoaXMuZnVsbEFuZ2xlIC0gKGEgKyBvKSkpKSwgYSA9PT0gdGhpcy5mdWxsQW5nbGUgJiYgKGEgPSB0aGlzLmZ1bGxBbmdsZSAtIC4wMSksIHRoaXMuYW5pbWF0ZUFyYyh0LCByLCBvLCBhLCBzLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJhbmltYXRlQXJjIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8sIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbmV3IGIodGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gci5zaXplOwogICAgICAgICAgICAgICAgICAgIChpc05hTihlKSB8fCBpc05hTihzKSkgJiYgKGUgPSBpLCBzID0gYSwgci5kdXIgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gZSA8IGkgPyB0aGlzLmZ1bGxBbmdsZSArIGUgLSBpIDogZSAtIGk7CiAgICAgICAgICAgICAgICAgICAgbC5nbG9iYWxzLmRhdGFDaGFuZ2VkICYmIHIuc2hvdWxkU2V0UHJldlBhdGhzICYmIHIucHJldkVuZEFuZ2xlICYmIChvID0gbi5nZXRQaWVQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IHIucHJldlN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOiByLnByZXZFbmRBbmdsZSA8IHIucHJldlN0YXJ0QW5nbGUgPyB0aGlzLmZ1bGxBbmdsZSArIHIucHJldkVuZEFuZ2xlIC0gci5wcmV2U3RhcnRBbmdsZSA6IHIucHJldkVuZEFuZ2xlIC0gci5wcmV2U3RhcnRBbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogYwogICAgICAgICAgICAgICAgICAgIH0pLCB0LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICBkOiBvCiAgICAgICAgICAgICAgICAgICAgfSkpLCAwICE9PSByLmR1ciA/IHQuYW5pbWF0ZShyLmR1ciwgbC5nbG9iYWxzLmVhc2luZywgci5hbmltQmVnaW5BcnJbci5pXSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAicGllIiAhPT0gbi5jaGFydFR5cGUgJiYgImRvbnV0IiAhPT0gbi5jaGFydFR5cGUgJiYgInBvbGFyQXJlYSIgIT09IG4uY2hhcnRUeXBlIHx8IHRoaXMuYW5pbWF0ZShsLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IG4uc3Ryb2tlV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgfSksIHIuaSA9PT0gbC5jb25maWcuc2VyaWVzLmxlbmd0aCAtIDEgJiYgaC5hbmltYXRpb25Db21wbGV0ZWQodCkKICAgICAgICAgICAgICAgICAgICB9KSkuZHVyaW5nKChmdW5jdGlvbihsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB1ICsgKGEgLSB1KSAqIGwsIHIuYW5pbWF0ZVN0YXJ0aW5nUG9zICYmIChkID0gcyArIChhIC0gcykgKiBsLCBnID0gZSAtIHMgKyAoaSAtIChlIC0gcykpICogbCksIG8gPSBuLmdldFBpZVBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0Lm5vZGUuc2V0QXR0cmlidXRlKCJkYXRhOnBhdGhPcmlnIiwgbyksIHQuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpIDogKG8gPSBuLmdldFBpZVBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICBtZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogZywKICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IGMKICAgICAgICAgICAgICAgICAgICB9KSwgci5pc1RyYWNrIHx8IChsLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQgPSAhMCksIHQubm9kZS5zZXRBdHRyaWJ1dGUoImRhdGE6cGF0aE9yaWciLCBvKSwgdC5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgZDogbywKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCI6IG4uc3Ryb2tlV2lkdGgKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicGllQ2xpY2tlZCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEuc2xpY2VTaXplc1t0XSArIChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayA/IDQgOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KCIuYXBleGNoYXJ0cy0iLmNvbmNhdChhLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLCAiLXNsaWNlLSIpLmNvbmNhdCh0KSkubWVtYmVyc1swXTsKICAgICAgICAgICAgICAgICAgICBpZiAoInRydWUiICE9PSByLmF0dHIoImRhdGE6cGllQ2xpY2tlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gaS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYXBleGNoYXJ0cy1waWUtYXJlYSIpOwogICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgiZGF0YTpwaWVDbGlja2VkIiwgImZhbHNlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZ2V0QXR0cmlidXRlKCJkYXRhOnBhdGhPcmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgiZCIsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgci5hdHRyKCJkYXRhOnBpZUNsaWNrZWQiLCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHBhcnNlSW50KHIuYXR0cigiZGF0YTpzdGFydEFuZ2xlIiksIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBwYXJzZUludChyLmF0dHIoImRhdGE6YW5nbGUiKSwgMTApOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gYS5nZXRQaWVQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcwogICAgICAgICAgICAgICAgICAgICAgICB9KSwgMzYwICE9PSBsICYmIHIucGxvdChlKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpwaWVDbGlja2VkIjogImZhbHNlIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIoci5ub2RlLCB0aGlzLmRvbnV0RGF0YUxhYmVscyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gci5hdHRyKCJkYXRhOnBhdGhPcmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBoCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRDaGFuZ2VkUGF0aCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gIiI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY0FuaW0gJiYgdGhpcy53Lmdsb2JhbHMuZGF0YUNoYW5nZWQgJiYgKGkgPSB0aGlzLmdldFBpZVBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICBtZTogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGUgLSB0LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnNpemUKICAgICAgICAgICAgICAgICAgICB9KSksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0UGllUGF0aCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuc3RhcnRBbmdsZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuYW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5QSSAqIChyIC0gOTApIC8gMTgwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gYSArIGk7CiAgICAgICAgICAgICAgICAgICAgTWF0aC5jZWlsKG4pID49IHRoaXMuZnVsbEFuZ2xlICsgdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSAlIHRoaXMuZnVsbEFuZ2xlICYmIChuID0gdGhpcy5mdWxsQW5nbGUgKyB0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlICUgdGhpcy5mdWxsQW5nbGUgLSAuMDEpLCBNYXRoLmNlaWwobikgPiB0aGlzLmZ1bGxBbmdsZSAmJiAobiAtPSB0aGlzLmZ1bGxBbmdsZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBNYXRoLlBJICogKG4gLSA5MCkgLyAxODAsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlLmNlbnRlclggKyBzICogTWF0aC5jb3MobyksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmNlbnRlclkgKyBzICogTWF0aC5zaW4obyksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLmNlbnRlclggKyBzICogTWF0aC5jb3MobCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBlLmNlbnRlclkgKyBzICogTWF0aC5zaW4obCksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB4LnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLCBlLmNlbnRlclksIGUuZG9udXRTaXplLCBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsIGUuY2VudGVyWSwgZS5kb251dFNpemUsIHIpLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gYSA+IDE4MCA/IDEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBiID0gWyJNIiwgaCwgYywgIkEiLCBzLCBzLCAwLCBwLCAxLCBkLCBnXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImRvbnV0IiA9PT0gZS5jaGFydFR5cGUgPyBbXS5jb25jYXQoYiwgWyJMIiwgdS54LCB1LnksICJBIiwgZS5kb251dFNpemUsIGUuZG9udXRTaXplLCAwLCBwLCAwLCBmLngsIGYueSwgIkwiLCBoLCBjLCAieiJdKS5qb2luKCIgIikgOiAicGllIiA9PT0gZS5jaGFydFR5cGUgfHwgInBvbGFyQXJlYSIgPT09IGUuY2hhcnRUeXBlID8gW10uY29uY2F0KGIsIFsiTCIsIGUuY2VudGVyWCwgZS5jZW50ZXJZLCAiTCIsIGgsIGNdKS5qb2luKCIgIikgOiBbXS5jb25jYXQoYikuam9pbigiICIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdQb2xhckVsZW1lbnRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgcSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgU3QodGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYS5ncm91cCgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gYS5ncm91cCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5uaWNlU2NhbGUoMCwgTWF0aC5jZWlsKHRoaXMubWF4WSksIGUuY29uZmlnLnlheGlzWzBdLnRpY2tBbW91bnQsIDAsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4ucmVzdWx0LnJldmVyc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4ucmVzdWx0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB0aGlzLm1heFkgPSBuLm5pY2VNYXg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IGUuZ2xvYmFscy5yYWRpYWxTaXplLCBkID0gYyAvIChoIC0gMSksIGcgPSAwOyBnIDwgaCAtIDE7IGcrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGEuZHJhd0NpcmNsZShjKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3g6IHRoaXMuY2VudGVyWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeTogdGhpcy5jZW50ZXJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLXdpZHRoIjogZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZVdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5jb25maWcueWF4aXNbMF0uc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBzLmRyYXdZQXhpc1RleHRzKHRoaXMuY2VudGVyWCwgdGhpcy5jZW50ZXJZIC0gYyArIHBhcnNlSW50KGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwgMTApIC8gMiwgZywgbFtnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmFkZChmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHIuYWRkKHUpLCBjIC09IGQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3U3Bva2VzKHQpLCB0LmFkZChyKSwgdC5hZGQobykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVuZGVySW5uZXJEYXRhTGFiZWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgiLmNvbmNhdChlLnRyYW5zbGF0ZVggPyBlLnRyYW5zbGF0ZVggOiAwLCAiLCAiKS5jb25jYXQoZS50cmFuc2xhdGVZID8gZS50cmFuc2xhdGVZIDogMCwgIikgc2NhbGUoIikuY29uY2F0KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSwgIikiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQudG90YWwuc2hvdzsKICAgICAgICAgICAgICAgICAgICBzLm5vZGUuc3R5bGUub3BhY2l0eSA9IGUub3BhY2l0eTsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgbiwgbCA9IGUuY2VudGVyWCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGUuY2VudGVyWTsKICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSB0Lm5hbWUuY29sb3IgPyBpLmdsb2JhbHMuY29sb3JzWzBdIDogdC5uYW1lLmNvbG9yOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gdC5uYW1lLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdC5uYW1lLmZvbnRGYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0Lm5hbWUuZm9udFdlaWdodDsKICAgICAgICAgICAgICAgICAgICBuID0gdm9pZCAwID09PSB0LnZhbHVlLmNvbG9yID8gaS5jb25maWcuY2hhcnQuZm9yZUNvbG9yIDogdC52YWx1ZS5jb2xvcjsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHQudmFsdWUuZm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAiIjsKICAgICAgICAgICAgICAgICAgICBpZiAociA/IChvID0gdC50b3RhbC5jb2xvciwgYyA9IHQudG90YWwuZm9udFNpemUsIGQgPSB0LnRvdGFsLmZvbnRGYW1pbHksIGcgPSB0LnRvdGFsLmZvbnRXZWlnaHQsIHAgPSB0LnRvdGFsLmxhYmVsLCBmID0gdC50b3RhbC5mb3JtYXR0ZXIoaSkpIDogMSA9PT0gaS5nbG9iYWxzLnNlcmllcy5sZW5ndGggJiYgKGYgPSB1KGkuZ2xvYmFscy5zZXJpZXNbMF0sIGkpLCBwID0gaS5nbG9iYWxzLnNlcmllc05hbWVzWzBdKSwgcCAmJiAocCA9IHQubmFtZS5mb3JtYXR0ZXIocCwgdC50b3RhbC5zaG93LCBpKSksIHQubmFtZS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gYS5kcmF3VGV4dCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaCArIHBhcnNlRmxvYXQodC5uYW1lLm9mZnNldFkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZUNvbG9yOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogZAogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgeC5ub2RlLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsIiksIHMuYWRkKHgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0LnZhbHVlLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0Lm5hbWUuc2hvdyA/IHBhcnNlRmxvYXQodC52YWx1ZS5vZmZzZXRZKSArIDE2IDogdC52YWx1ZS5vZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGEuZHJhd1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaCArIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QW5jaG9yOiAibWlkZGxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlQ29sb3I6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogdC52YWx1ZS5mb250V2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiB0LnZhbHVlLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHQudmFsdWUuZm9udEZhbWlseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHYubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSIpLCBzLmFkZCh2KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwcmludElubmVyTGFiZWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIHIgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgYSA/IHMgPSB2b2lkIDAgPT09IHQubmFtZS5jb2xvciA/IHIuZ2xvYmFscy5jb2xvcnNbcGFyc2VJbnQoYS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgicmVsIiksIDEwKSAtIDFdIDogdC5uYW1lLmNvbG9yIDogci5nbG9iYWxzLnNlcmllcy5sZW5ndGggPiAxICYmIHQudG90YWwuc2hvdyAmJiAocyA9IHQudG90YWwuY29sb3IpOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICBpID0gKDAsIHQudmFsdWUuZm9ybWF0dGVyKShpLCByKSwgYSB8fCAiZnVuY3Rpb24iICE9IHR5cGVvZiB0LnRvdGFsLmZvcm1hdHRlciB8fCAoaSA9IHQudG90YWwuZm9ybWF0dGVyKHIpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGUgPT09IHQudG90YWwubGFiZWw7CiAgICAgICAgICAgICAgICAgICAgZSA9IHQubmFtZS5mb3JtYXR0ZXIoZSwgbCwgciksIG51bGwgIT09IG8gJiYgKG8udGV4dENvbnRlbnQgPSBlKSwgbnVsbCAhPT0gbiAmJiAobi50ZXh0Q29udGVudCA9IGkpLCBudWxsICE9PSBvICYmIChvLnN0eWxlLmZpbGwgPSBzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwcmludERhdGFMYWJlbHNJbm5lciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5nZXRBdHRyaWJ1dGUoImRhdGE6dmFsdWUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuZ2xvYmFscy5zZXJpZXNOYW1lc1twYXJzZUludCh0LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJyZWwiKSwgMTApIC0gMV07CiAgICAgICAgICAgICAgICAgICAgaS5nbG9iYWxzLnNlcmllcy5sZW5ndGggPiAxICYmIHRoaXMucHJpbnRJbm5lckxhYmVscyhlLCBzLCBhLCB0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXAiKTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSByICYmIChyLnN0eWxlLm9wYWNpdHkgPSAxKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3U3Bva2VzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnNwb2tlczsKICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gcy5zdHJva2VXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gW10sIG8gPSAzNjAgLyBpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCwgbiA9IDA7IG4gPCBpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsgbisrKSByLnB1c2goeC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCwgdGhpcy5jZW50ZXJZLCBpLmdsb2JhbHMucmFkaWFsU2l6ZSwgaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUgKyBvICogbikpOwogICAgICAgICAgICAgICAgICAgICAgICByLmZvckVhY2goKGZ1bmN0aW9uKGksIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gYS5kcmF3TGluZShpLngsIGkueSwgZS5jZW50ZXJYLCBlLmNlbnRlclksIEFycmF5LmlzQXJyYXkocy5jb25uZWN0b3JDb2xvcnMpID8gcy5jb25uZWN0b3JDb2xvcnNbcl0gOiBzLmNvbm5lY3RvckNvbG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmFkZChvKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJldmVydERhdGFMYWJlbHNJbm5lciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYXBleGNoYXJ0cy1waWUtYXJlYSIpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0Lm1ha2VTbGljZU91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5wcmludExhYmVsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cnVlIiA9PT0gdC5nZXRBdHRyaWJ1dGUoImRhdGE6cGllQ2xpY2tlZCIpICYmIChpICYmIChvID0gITApLCBzICYmIGEucHJpbnREYXRhTGFiZWxzSW5uZXIodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAobCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlU2xpY2VPdXQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRMYWJlbDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUudG90YWwuc2hvdyAmJiBzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCA+IDEpIG8gJiYgIWUudG90YWwuc2hvd0Fsd2F5cyA/IGwoewogICAgICAgICAgICAgICAgICAgICAgICBtYWtlU2xpY2VPdXQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBwcmludExhYmVsOiAhMAogICAgICAgICAgICAgICAgICAgIH0pIDogdGhpcy5wcmludElubmVyTGFiZWxzKGUsIGUudG90YWwubGFiZWwsIGUudG90YWwuZm9ybWF0dGVyKHMpKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VTbGljZU91dDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludExhYmVsOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgIW8pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCAmJiBzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCA+IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcigiLmFwZXhjaGFydHMtIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSwgIi1zbGljZS0iKS5jb25jYXQoaCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoYywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSByICYmIHMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoICYmIDAgPT09IHMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0ubGVuZ3RoICYmIChyLnN0eWxlLm9wYWNpdHkgPSAwKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHIgJiYgcy5nbG9iYWxzLnNlcmllcy5sZW5ndGggPiAxICYmIChyLnN0eWxlLm9wYWNpdHkgPSAwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgTHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudywgdGhpcy5jaGFydFR5cGUgPSB0aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsIHRoaXMuaW5pdGlhbEFuaW0gPSB0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCwgdGhpcy5keW5hbWljQW5pbSA9IHRoaXMuaW5pdGlhbEFuaW0gJiYgdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCwgdGhpcy5hbmltRHVyID0gMDsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgdGhpcy5ncmFwaGljcyA9IG5ldyBtKHRoaXMuY3R4KSwgdGhpcy5saW5lQ29sb3JBcnIgPSB2b2lkIDAgIT09IGkuZ2xvYmFscy5zdHJva2UuY29sb3JzID8gaS5nbG9iYWxzLnN0cm9rZS5jb2xvcnMgOiBpLmdsb2JhbHMuY29sb3JzLCB0aGlzLmRlZmF1bHRTaXplID0gaS5nbG9iYWxzLnN2Z0hlaWdodCA8IGkuZ2xvYmFscy5zdmdXaWR0aCA/IGkuZ2xvYmFscy5ncmlkSGVpZ2h0ICsgMS41ICogaS5nbG9iYWxzLmdvbGRlblBhZGRpbmcgOiBpLmdsb2JhbHMuZ3JpZFdpZHRoLCB0aGlzLmlzTG9nID0gaS5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsIHRoaXMuY29yZVV0aWxzID0gbmV3IHkodGhpcy5jdHgpLCB0aGlzLm1heFZhbHVlID0gdGhpcy5pc0xvZyA/IHRoaXMuY29yZVV0aWxzLmdldExvZ1ZhbChpLmdsb2JhbHMubWF4WSwgMCkgOiBpLmdsb2JhbHMubWF4WSwgdGhpcy5taW5WYWx1ZSA9IHRoaXMuaXNMb2cgPyB0aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodGhpcy53Lmdsb2JhbHMubWluWSwgMCkgOiBpLmdsb2JhbHMubWluWSwgdGhpcy5wb2x5Z29ucyA9IGkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLCB0aGlzLnN0cm9rZVdpZHRoID0gaS5jb25maWcuc3Ryb2tlLnNob3cgPyBpLmNvbmZpZy5zdHJva2Uud2lkdGggOiAwLCB0aGlzLnNpemUgPSB0aGlzLmRlZmF1bHRTaXplIC8gMi4xIC0gdGhpcy5zdHJva2VXaWR0aCAtIGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1ciwgaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cgJiYgKHRoaXMuc2l6ZSA9IHRoaXMuc2l6ZSAtIGkuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoIC8gMS43NSksIHZvaWQgMCAhPT0gaS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSAmJiAodGhpcy5zaXplID0gaS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksIHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudCA9IFtdLCB0aGlzLmRhdGFSYWRpdXMgPSBbXSwgdGhpcy5hbmdsZUFyciA9IFtdLCB0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MgPSBbXQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IE0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgeih0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdC5sZW5ndGggJiYgKHRoaXMuZGF0YVBvaW50c0xlbiA9IHRbYS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aCksIHRoaXMuZGlzQW5nbGUgPSAyICogTWF0aC5QSSAvIHRoaXMuZGF0YVBvaW50c0xlbjsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGEuZ2xvYmFscy5ncmlkV2lkdGggLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5nbG9iYWxzLmdyaWRIZWlnaHQgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gbiArIGEuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLm9mZnNldFgsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsICsgYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogInRyYW5zbGF0ZSgiLmNvbmNhdChoIHx8IDAsICIsICIpLmNvbmNhdChjIHx8IDAsICIpIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnlheGlzTGFiZWxzID0gdGhpcy5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMteWF4aXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LmZvckVhY2goKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdC5sZW5ndGggPT09IGEuZ2xvYmFscy5kYXRhUG9pbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpLmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpsb25nZXN0U2VyaWVzIjogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBuICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dID0gW10sIGkuZGF0YVJhZGl1c1tuXSA9IFtdLCBpLmFuZ2xlQXJyW25dID0gW10sIHQuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gTWF0aC5hYnMoaS5tYXhWYWx1ZSAtIGkubWluVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gTWF0aC5hYnMoaS5taW5WYWx1ZSksIGkuaXNMb2cgJiYgKHQgPSBpLmNvcmVVdGlscy5nZXRMb2dWYWwodCwgMCkpLCBpLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV0gPSB0IC8gYSwgaS5kYXRhUmFkaXVzW25dW2VdID0gaS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdICogaS5zaXplLCBpLmFuZ2xlQXJyW25dW2VdID0gZSAqIGkuZGlzQW5nbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZyA9IGkuZ2V0RGF0YVBvaW50c1BvcyhpLmRhdGFSYWRpdXNbbl0sIGkuYW5nbGVBcnJbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBpLmNyZWF0ZVBhdGhzKGcsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGkuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIGFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZiA9IGkuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1kYXRhbGFiZWxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpyZWFsSW5kZXgiOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogdS5ub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRlbGF5OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU3BlZWQ6IGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDaGFuZ2VTcGVlZDogYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJhcGV4Y2hhcnRzLXJhZGFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xpcFRvR3JpZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRFdmVudHNPblBhdGhzOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBhLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZUNhcDogYS5jb25maWcuc3Ryb2tlLmxpbmVDYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoID4gMCAmJiAocCA9IGkuZ2V0UHJldmlvdXNQYXRoKG4pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGIgPSAwOyBiIDwgYy5saW5lUGF0aHNUby5sZW5ndGg7IGIrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gaS5ncmFwaGljcy5yZW5kZXJQYXRocyhlKGUoe30sIGQpLCB7fSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogbnVsbCA9PT0gcCA/IGMubGluZVBhdGhzRnJvbVtiXSA6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhUbzogYy5saW5lUGF0aHNUb1tiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFycmF5LmlzQXJyYXkoaS5zdHJva2VXaWR0aCkgPyBpLnN0cm9rZVdpZHRoW25dIDogaS5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2hhZG93OiAhMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmFkZChtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHMuZmlsbFBhdGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTnVtYmVyOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gaS5ncmFwaGljcy5yZW5kZXJQYXRocyhlKGUoe30sIGQpLCB7fSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb206IG51bGwgPT09IHAgPyBjLmFyZWFQYXRoc0Zyb21bYl0gOiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiBjLmFyZWFQYXRoc1RvW2JdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1NoYWRvdzogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBuZXcgdihpLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gYS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgay5kcm9wU2hhZG93KHcsIE9iamVjdC5hc3NpZ24oe30sIEEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vVXNlclNwYWNlT25Vc2U6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLmFkZCh3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKChmdW5jdGlvbih0LCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuZXcgVChpLmN0eCkuZ2V0TWFya2VyQ29uZmlnKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzOiAiYXBleGNoYXJ0cy1tYXJrZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleDogcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGkuZ3JhcGhpY3MuZHJhd01hcmtlcihnW3NdLngsIGdbc10ueSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hdHRyKCJyZWwiLCBzKSwgbC5hdHRyKCJqIiwgcyksIGwuYXR0cigiaW5kZXgiLCBuKSwgbC5ub2RlLnNldEF0dHJpYnV0ZSgiZGVmYXVsdC1tYXJrZXItc2l6ZSIsIHIucFNpemUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gaS5ncmFwaGljcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICYmIGMuYWRkKGwpLCB1LmFkZChjKSwgaC5hZGQodSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhLmNvbmZpZy5kYXRhTGFiZWxzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBkLmZvcm1hdHRlcihhLmdsb2JhbHMuc2VyaWVzW25dW3NdLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5wbG90RGF0YUxhYmVsc1RleHQoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZ1tzXS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZ1tzXS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRDb3JyZWN0aW9uOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHNDb25maWc6IGUoe30sIGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguYWRkKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHIucHVzaChoKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZHJhd1BvbHlnb25zKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogZAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgYS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmRyYXdYQXhpc1RleHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGQuYWRkKHApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5hZGQodCkKICAgICAgICAgICAgICAgICAgICB9KSksIGQuYWRkKHRoaXMueWF4aXNMYWJlbHMpLCBkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdQb2x5Z29ucyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLCBpID0gdGhpcy53LCBhID0gdC5wYXJlbnQsIHMgPSBuZXcgU3QodGhpcy5jdHgpLCByID0gaS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSwgbyA9IHIubGVuZ3RoLCBuID0gW10sIGwgPSB0aGlzLnNpemUgLyAobyAtIDEpLCBoID0gMDsgaCA8IG87IGgrKykgbltoXSA9IGwgKiBoOwogICAgICAgICAgICAgICAgICAgIG4ucmV2ZXJzZSgpOwogICAgICAgICAgICAgICAgICAgIHZhciBjID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTsKICAgICAgICAgICAgICAgICAgICBuLmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB4LmdldFBvbHlnb25Qb3ModCwgZS5kYXRhUG9pbnRzTGVuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgYS5mb3JFYWNoKChmdW5jdGlvbih0LCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5ncmFwaGljcy5kcmF3TGluZSh0LngsIHQueSwgMCwgMCwgQXJyYXkuaXNBcnJheShlLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycykgPyBlLnBvbHlnb25zLmNvbm5lY3RvckNvbG9yc1thXSA6IGUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2gocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGEgJiYgZS55YXhpc0xhYmVsc1RleHRzUG9zLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0LnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzICs9IHQueCArICIsIiArIHQueSArICIgIgogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGMucHVzaChzKQogICAgICAgICAgICAgICAgICAgIH0pKSwgYy5mb3JFYWNoKChmdW5jdGlvbih0LCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5wb2x5Z29ucy5zdHJva2VDb2xvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5wb2x5Z29ucy5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmdyYXBoaWNzLmRyYXdQb2x5Z29uKHQsIEFycmF5LmlzQXJyYXkocikgPyByW3NdIDogciwgQXJyYXkuaXNBcnJheShvKSA/IG9bc10gOiBvLCBpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1tzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuYWRkKG4pCiAgICAgICAgICAgICAgICAgICAgfSkpLCBkLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYS5hZGQodCkKICAgICAgICAgICAgICAgICAgICB9KSksIGkuY29uZmlnLnlheGlzWzBdLnNob3cgJiYgdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zLmZvckVhY2goKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzLmRyYXdZQXhpc1RleHRzKHQueCwgdC55LCBpLCByW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS55YXhpc0xhYmVscy5hZGQoYSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZHJhd1hBeGlzVGV4dHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuY29uZmlnLnhheGlzLmxhYmVscywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuZ3JhcGhpY3MuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXhheGlzIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHguZ2V0UG9seWdvblBvcyh0aGlzLnNpemUsIHRoaXMuZGF0YVBvaW50c0xlbik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24obywgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbmV3IHoodC5jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocltuXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0LmdldFRleHRQb3MocltuXSwgdC5zaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbChvLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVBvaW50SW5kZXg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgucGxvdERhdGFMYWJlbHNUZXh0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBjLm5ld1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogYy5uZXdZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogYy50ZXh0QW5jaG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEFycmF5LmlzQXJyYXkoYS5zdHlsZS5jb2xvcnMpICYmIGEuc3R5bGUuY29sb3JzW25dID8gYS5zdHlsZS5jb2xvcnNbbl0gOiAiI2E4YThhOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxhYmVsc0NvbmZpZzogZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbmNob3I6IGMudGV4dEFuY2hvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcFNoYWRvdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldENvcnJlY3Rpb246ICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZVBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbdGhpcy5ncmFwaGljcy5tb3ZlKGUueCwgZS55KV0sIG8gPSBbdGhpcy5ncmFwaGljcy5tb3ZlKGUueCwgZS55KV07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5ncmFwaGljcy5tb3ZlKHRbMF0ueCwgdFswXS55KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LCB0WzBdLnkpOwogICAgICAgICAgICAgICAgICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKGUsIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gKz0gaS5ncmFwaGljcy5saW5lKGUueCwgZS55KSwgbCArPSBpLmdyYXBoaWNzLmxpbmUoZS54LCBlLnkpLCBhID09PSB0Lmxlbmd0aCAtIDEgJiYgKG4gKz0gIloiLCBsICs9ICJaIikKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBhLnB1c2gobiksIHIucHVzaChsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGF0aHNGcm9tOiBzLAogICAgICAgICAgICAgICAgICAgICAgICBsaW5lUGF0aHNUbzogYSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJlYVBhdGhzRnJvbTogbywKICAgICAgICAgICAgICAgICAgICAgICAgYXJlYVBhdGhzVG86IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdldFRleHRQb3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9ICJtaWRkbGUiLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC54LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC55OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0LngpID49IDEwID8gdC54ID4gMCA/IChpID0gInN0YXJ0IiwgYSArPSAxMCkgOiB0LnggPCAwICYmIChpID0gImVuZCIsIGEgLT0gMTApIDogaSA9ICJtaWRkbGUiLCBNYXRoLmFicyh0LnkpID49IGUgLSAxMCAmJiAodC55IDwgMCA/IHMgLT0gMTAgOiB0LnkgPiAwICYmIChzICs9IDEwKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFuY2hvcjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV3WDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV3WTogcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0UHJldmlvdXNQYXRoIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMudywgaSA9IG51bGwsIGEgPSAwOyBhIDwgZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoOyBhKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTsKICAgICAgICAgICAgICAgICAgICAgICAgcy5wYXRocy5sZW5ndGggPiAwICYmIHBhcnNlSW50KHMucmVhbEluZGV4LCAxMCkgPT09IHBhcnNlSW50KHQsIDEwKSAmJiB2b2lkIDAgIT09IGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdICYmIChpID0gZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0uZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2V0RGF0YVBvaW50c1BvcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0aGlzLmRhdGFQb2ludHNMZW47CiAgICAgICAgICAgICAgICAgICAgdCA9IHQgfHwgW10sIGUgPSBlIHx8IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBbXSwgcyA9IDA7IHMgPCBpOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgci54ID0gdFtzXSAqIE1hdGguc2luKGVbc10pLCByLnkgPSAtdFtzXSAqIE1hdGguY29zKGVbc10pLCBhLnB1c2gocikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFB0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBuKGksIHQpOwogICAgICAgICAgICB2YXIgZSA9IGQoaSk7CgogICAgICAgICAgICBmdW5jdGlvbiBpKHQpIHsKICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgYSh0aGlzLCBpKSwgKHMgPSBlLmNhbGwodGhpcywgdCkpLmN0eCA9IHQsIHMudyA9IHQudywgcy5hbmltQmVnaW5BcnIgPSBbMF0sIHMuYW5pbUR1ciA9IDA7CiAgICAgICAgICAgICAgICB2YXIgciA9IHMudzsKICAgICAgICAgICAgICAgIHJldHVybiBzLnN0YXJ0QW5nbGUgPSByLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSwgcy5lbmRBbmdsZSA9IHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZSwgcy50b3RhbEFuZ2xlID0gTWF0aC5hYnMoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlIC0gci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpLCBzLnRyYWNrU3RhcnRBbmdsZSA9IHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLCBzLnRyYWNrRW5kQW5nbGUgPSByLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUsIHMuZG9udXREYXRhTGFiZWxzID0gcy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZGF0YUxhYmVscywgcy5yYWRpYWxEYXRhTGFiZWxzID0gcy5kb251dERhdGFMYWJlbHMsIHMudHJhY2tTdGFydEFuZ2xlIHx8IChzLnRyYWNrU3RhcnRBbmdsZSA9IHMuc3RhcnRBbmdsZSksIHMudHJhY2tFbmRBbmdsZSB8fCAocy50cmFja0VuZEFuZ2xlID0gcy5lbmRBbmdsZSksIDM2MCA9PT0gcy5lbmRBbmdsZSAmJiAocy5lbmRBbmdsZSA9IDM1OS45OSksIHMubWFyZ2luID0gcGFyc2VJbnQoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLm1hcmdpbiwgMTApLCBzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIoaSwgW3sKICAgICAgICAgICAgICAgIGtleTogImRyYXciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXJhZGlhbGJhciIKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZ2xvYmFscy5ub0RhdGEpIHJldHVybiBhOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gaS5ncm91cCgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5kZWZhdWx0U2l6ZSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuZGVmYXVsdFNpemUgLyAyLjA1OwogICAgICAgICAgICAgICAgICAgIGUuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkIHx8IChuID0gbiAtIGUuY29uZmlnLnN0cm9rZS53aWR0aCAtIGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLmdsb2JhbHMuZmlsbC5jb2xvcnM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gdGhpcy5kcmF3VHJhY2tzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJYOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyWTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yQXJyOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBzLmFkZChoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuZHJhd0FyY3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJZOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JBcnI6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAzNjA7CiAgICAgICAgICAgICAgICAgICAgZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUgPCAwICYmIChkID0gdGhpcy50b3RhbEFuZ2xlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZyA9ICgzNjAgLSBkKSAvIDM2MDsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5nbG9iYWxzLnJhZGlhbFNpemUgPSBuIC0gbiAqIGcsIHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gTWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksIHRoaXMucmFkaWFsRGF0YUxhYmVscy5uYW1lLm9mZnNldFkpOwogICAgICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbHMucmFkaWFsU2l6ZSArPSB1ICogZwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5hZGQoYy5nKSwgImZyb250IiA9PT0gZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiAmJiAoYy5nLmFkZChjLmVsSG9sbG93KSwgYy5kYXRhTGFiZWxzICYmIGMuZy5hZGQoYy5kYXRhTGFiZWxzKSksIGEuYWRkKHMpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdUcmFja3MiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXRyYWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgdih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuZXcgTSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldFN0cm9rZVdpZHRoKHQpOwogICAgICAgICAgICAgICAgICAgIHQuc2l6ZSA9IHQuc2l6ZSAtIG8gLyAyOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5zZXJpZXMubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBpLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1yYWRpYWxiYXItdHJhY2sgYXBleGNoYXJ0cy10cmFjayIKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuYWRkKGwpLCBsLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBuICsgMQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5zaXplID0gdC5zaXplIC0gbyAtIHRoaXMubWFyZ2luOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSByLmZpbGxQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogdC5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcnM6IEFycmF5LmlzQXJyYXkoaC5iYWNrZ3JvdW5kKSA/IGguYmFja2dyb3VuZFtuXSA6IGguYmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2xpZDogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHRoaXMudHJhY2tTdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHRoaXMudHJhY2tFbmRBbmdsZTsKICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoZykgKyBNYXRoLmFicyhkKSA+PSAzNjAgJiYgKGcgPSAzNjAgLSBNYXRoLmFicyh0aGlzLnN0YXJ0QW5nbGUpIC0gLjEpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGkuZHJhd1BhdGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogbyAqIHBhcnNlSW50KGguc3Ryb2tlV2lkdGgsIDEwKSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6IGgub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6ICJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGguZHJvcFNoYWRvdy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IGguZHJvcFNoYWRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZHJvcFNoYWRvdyh1LCBmKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGwuYWRkKHUpLCB1LmF0dHIoImlkIiwgImFwZXhjaGFydHMtcmFkaWFsYmFyVHJhY2stIiArIG4pLCB0aGlzLmFuaW1hdGVQYXRocyh1LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJYOiB0LmNlbnRlclgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJZOiB0LmNlbnRlclksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRBbmdsZTogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QW5nbGU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB0LnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1CZWdpbkFycjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVHJhY2s6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBlLmdsb2JhbHMuZWFzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdBcmNzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgTSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgdih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmdyb3VwKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmdldFN0cm9rZVdpZHRoKHQpOwogICAgICAgICAgICAgICAgICAgIHQuc2l6ZSA9IHQuc2l6ZSAtIG8gLyAyOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5iYWNrZ3JvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5zaXplIC0gbyAqIHQuc2VyaWVzLmxlbmd0aCAtIHRoaXMubWFyZ2luICogdC5zZXJpZXMubGVuZ3RoIC0gbyAqIHBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdHJva2VXaWR0aCwgMTApIC8gMTAwIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwgLSBlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2UgJiYgKG4gPSB0aGlzLmRyYXdIb2xsb3dJbWFnZSh0LCByLCBsLCBuKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLmRyYXdIb2xsb3coewogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBoLAogICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJYOiB0LmNlbnRlclgsCiAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclk6IHQuY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogbiB8fCAidHJhbnNwYXJlbnQiCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICBzLmRyb3BTaGFkb3coYywgZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSAxOwogICAgICAgICAgICAgICAgICAgICF0aGlzLnJhZGlhbERhdGFMYWJlbHMudG90YWwuc2hvdyAmJiBlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCA+IDEgJiYgKGcgPSAwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWRpYWxEYXRhTGFiZWxzLnNob3cgJiYgKHUgPSB0aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaG9sbG93U2l6ZTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyWDogdC5jZW50ZXJYLAogICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJZOiB0LmNlbnRlclksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IGcKICAgICAgICAgICAgICAgICAgICB9KSksICJiYWNrIiA9PT0gZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiAmJiAoci5hZGQoYyksIHUgJiYgci5hZGQodSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmludmVyc2VPcmRlciAmJiAoZiA9ICEwKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gZiA/IHQuc2VyaWVzLmxlbmd0aCAtIDEgOiAwOyBmID8gcCA+PSAwIDogcCA8IHQuc2VyaWVzLmxlbmd0aDsgZiA/IHAtLSA6IHArKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGkuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXJhZGlhbC1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTmFtZTogeC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW3BdKQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgci5hZGQoYiksIGIuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IHAgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogcAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYiwgcCksIHQuc2l6ZSA9IHQuc2l6ZSAtIG8gLSB0aGlzLm1hcmdpbjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBhLmZpbGxQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogdC5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LnNlcmllc1twXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdGhpcy5zdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgPSB4Lm5lZ1RvWmVybyh0LnNlcmllc1twXSA+IDEwMCA/IDEwMCA6IHQuc2VyaWVzW3BdKSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBNYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSAqIEEpICsgdGhpcy5zdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZS5nbG9iYWxzLmRhdGFDaGFuZ2VkICYmIChrID0gdGhpcy5zdGFydEFuZ2xlLCBDID0gTWF0aC5yb3VuZCh0aGlzLnRvdGFsQW5nbGUgKiB4Lm5lZ1RvWmVybyhlLmdsb2JhbHMucHJldmlvdXNQYXRoc1twXSkgLyAxMDApICsgayksIE1hdGguYWJzKFMpICsgTWF0aC5hYnModykgPj0gMzYwICYmIChTIC09IC4wMSksIE1hdGguYWJzKEMpICsgTWF0aC5hYnMoaykgPj0gMzYwICYmIChDIC09IC4wMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBMID0gUyAtIHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQID0gQXJyYXkuaXNBcnJheShlLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5KSA/IGUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXlbcF0gOiBlLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IGkuZHJhd1BhdGgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IGUuY29uZmlnLmZpbGwub3BhY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiAiYXBleGNoYXJ0cy1yYWRpYWxiYXItYXJlYSBhcGV4Y2hhcnRzLXJhZGlhbGJhci1zbGljZS0iICsgcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobS5zZXRBdHRycyhULm5vZGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTphbmdsZSI6IEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6dmFsdWUiOiB0LnNlcmllc1twXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSBlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kcm9wU2hhZG93KFQsIEksIHApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXRTZWxlY3Rpb25GaWx0ZXIoVCwgMCwgcCksIHRoaXMuYWRkTGlzdGVuZXJzKFQsIHRoaXMucmFkaWFsRGF0YUxhYmVscyksIGIuYWRkKFQpLCBULmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmluaXRpYWxBbmltIHx8IGUuZ2xvYmFscy5yZXNpemVkIHx8IGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCB8fCAoeiA9IGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLCBlLmdsb2JhbHMuZGF0YUNoYW5nZWQgJiYgKHogPSBlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLCB0aGlzLmFuaW1EdXIgPSB6IC8gKDEuMiAqIHQuc2VyaWVzLmxlbmd0aCkgKyB0aGlzLmFuaW1EdXIsIHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSwgdGhpcy5hbmltYXRlUGF0aHMoVCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyWDogdC5jZW50ZXJYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyWTogdC5jZW50ZXJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGU6IFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkVuZEFuZ2xlOiBDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlN0YXJ0QW5nbGU6IGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB0LnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1CZWdpbkFycjogdGhpcy5hbmltQmVnaW5BcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXI6IHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTZXRQcmV2UGF0aHM6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBlLmdsb2JhbHMuZWFzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGc6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsSG9sbG93OiBjLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhTGFiZWxzOiB1CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3SG9sbG93IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgbSh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyICogdC5zaXplKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3ciLAogICAgICAgICAgICAgICAgICAgICAgICBjeDogdC5jZW50ZXJYLAogICAgICAgICAgICAgICAgICAgICAgICBjeTogdC5jZW50ZXJZLAogICAgICAgICAgICAgICAgICAgICAgICByOiB0LnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHQuZmlsbAogICAgICAgICAgICAgICAgICAgIH0pLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRyYXdIb2xsb3dJbWFnZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IE0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0geC5yYW5kb21JZCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZTsKICAgICAgICAgICAgICAgICAgICBpZiAocy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUNsaXBwZWQpIHIuY2xpcHBlZEltZ0FyZWEoewogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpLAogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybklEOiAicGF0dGVybiIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobykKICAgICAgICAgICAgICAgICAgICB9KSwgYSA9ICJ1cmwoI3BhdHRlcm4iLmNvbmNhdChzLmdsb2JhbHMuY3VpZCkuY29uY2F0KG8sICIpIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZVdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGwgJiYgdm9pZCAwID09PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlKHQuY2VudGVyWCAtIGUud2lkdGggLyAyICsgcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsIHQuY2VudGVyWSAtIGUuaGVpZ2h0IC8gMiArIHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hZGQoYykKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcy5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShuKS5sb2FkZWQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmUodC5jZW50ZXJYIC0gbCAvIDIgKyBzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCwgdC5jZW50ZXJZIC0gaCAvIDIgKyBzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSksIHRoaXMuc2l6ZShsLCBoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hZGQoZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRTdHJva2VXaWR0aCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNpemUgKiAoMTAwIC0gcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5zaXplLCAxMCkpIC8gMTAwIC8gKHQuc2VyaWVzLmxlbmd0aCArIDEpIC0gdGhpcy5tYXJnaW4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCBpCiAgICAgICAgfShDdCksCiAgICAgICAgTXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLncgPSBlLncsIHRoaXMubGluZUN0eCA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAic2FtZVZhbHVlU2VyaWVzRml4IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJsaW5lIiA9PT0gaS5jb25maWcuY2hhcnQudHlwZSAmJiAoImdyYWRpZW50IiA9PT0gaS5jb25maWcuZmlsbC50eXBlIHx8ICJncmFkaWVudCIgPT09IGkuY29uZmlnLmZpbGwudHlwZVt0XSkgJiYgbmV3IHkodGhpcy5saW5lQ3R4LmN0eCwgaSkuc2VyaWVzSGF2ZVNhbWVWYWx1ZXModCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlW3RdLnNsaWNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFbYS5sZW5ndGggLSAxXSA9IGFbYS5sZW5ndGggLSAxXSArIDFlLTYsIGVbdF0gPSBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNhbGN1bGF0ZVBvaW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucHJldlksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5saW5lQ3R4LmNhdGVnb3J5QXhpc0NvcnJlY3Rpb24gKyBsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFg7CiAgICAgICAgICAgICAgICAgICAgICAgIGwuZ2xvYmFscy5pc1hOdW1lcmljICYmIChkID0gKGwuZ2xvYmFscy5zZXJpZXNYW2ldWzBdIC0gbC5nbG9iYWxzLm1pblgpIC8gdGhpcy5saW5lQ3R4LnhSYXRpbyArIGwuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksIGgucHVzaChkKSwgYy5wdXNoKHguaXNOdW1iZXIoZVtyXVswXSkgPyBuICsgbC5jb25maWcubWFya2Vycy5vZmZzZXRZIDogbnVsbCksIGgucHVzaChhICsgbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSwgYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvICsgMV0pID8gcyArIGwuY29uZmlnLm1hcmtlcnMub2Zmc2V0WSA6IG51bGwpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGgucHVzaChhICsgbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSwgYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvICsgMV0pID8gcyArIGwuY29uZmlnLm1hcmtlcnMub2Zmc2V0WSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNoZWNrUHJldmlvdXNQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0LnBhdGhGcm9tTGluZSwgaSA9IHQucGF0aEZyb21BcmVhLCBhID0gdC5yZWFsSW5kZXgsIHMgPSB0aGlzLncsIHIgPSAwOyByIDwgcy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsKICAgICAgICAgICAgICAgICAgICAgICAgKCJsaW5lIiA9PT0gby50eXBlIHx8ICJhcmVhIiA9PT0gby50eXBlKSAmJiBvLnBhdGhzLmxlbmd0aCA+IDAgJiYgcGFyc2VJbnQoby5yZWFsSW5kZXgsIDEwKSA9PT0gcGFyc2VJbnQoYSwgMTApICYmICgibGluZSIgPT09IG8udHlwZSA/ICh0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb20gPSAhMSwgZSA9IHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQpIDogImFyZWEiID09PSBvLnR5cGUgJiYgKHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbSA9ICExLCBpID0gcy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCwgcy5jb25maWcuc3Ryb2tlLnNob3cgJiYgcy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0gJiYgKGUgPSBzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXS5kKSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tTGluZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb21BcmVhOiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJkZXRlcm1pbmVGaXJzdFByZXZZIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNlcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQucHJldlksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmxpbmVZUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaVtlXVswXSkgYSA9IChzID0gci5jb25maWcuY2hhcnQuc3RhY2tlZCAmJiBlID4gMCA/IHRoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtlIC0gMV1bMF0gOiB0aGlzLmxpbmVDdHguemVyb1kpIC0gaVtlXVswXSAvIHRoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdICsgMiAqICh0aGlzLmxpbmVDdHguaXNSZXZlcnNlZCA/IGlbZV1bMF0gLyB0aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XSA6IDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIuY29uZmlnLmNoYXJ0LnN0YWNrZWQgJiYgZSA+IDAgJiYgdm9pZCAwID09PSBpW2VdWzBdKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gZSAtIDE7IG8gPj0gMDsgby0tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IGlbb11bMF0gJiYgdm9pZCAwICE9PSBpW29dWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHMgPSB0aGlzLmxpbmVDdHgucHJldlNlcmllc1lbb11bMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBwcmV2WTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVlQb3NpdGlvbjogcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFR0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgaSwgcykgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMueHlSYXRpb3MgPSBpLCB0aGlzLnBvaW50c0NoYXJ0ID0gISgiYnViYmxlIiAhPT0gdGhpcy53LmNvbmZpZy5jaGFydC50eXBlICYmICJzY2F0dGVyIiAhPT0gdGhpcy53LmNvbmZpZy5jaGFydC50eXBlKSB8fCBzLCB0aGlzLnNjYXR0ZXIgPSBuZXcgSSh0aGlzLmN0eCksIHRoaXMubm9OZWdhdGl2ZXMgPSB0aGlzLncuZ2xvYmFscy5taW5YID09PSBOdW1iZXIuTUFYX1ZBTFVFLCB0aGlzLmxpbmVIZWxwZXJzID0gbmV3IE10KHRoaXMpLCB0aGlzLm1hcmtlcnMgPSBuZXcgVCh0aGlzLmN0eCksIHRoaXMucHJldlNlcmllc1kgPSBbXSwgdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uID0gMCwgdGhpcy55YXhpc0luZGV4ID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhLmdsb2JhbHMuY29tYm9DaGFydHMgPyBlIDogYS5jb25maWcuY2hhcnQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHMuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLSIuY29uY2F0KHIsICItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXMiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG5ldyB5KHRoaXMuY3R4LCBhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnlSYXRpbyA9IHRoaXMueHlSYXRpb3MueVJhdGlvLCB0aGlzLnpSYXRpbyA9IHRoaXMueHlSYXRpb3MuelJhdGlvLCB0aGlzLnhSYXRpbyA9IHRoaXMueHlSYXRpb3MueFJhdGlvLCB0aGlzLmJhc2VMaW5lWSA9IHRoaXMueHlSYXRpb3MuYmFzZUxpbmVZLCB0ID0gbi5nZXRMb2dTZXJpZXModCksIHRoaXMueVJhdGlvID0gbi5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gW10sIGggPSAwOyBoIDwgdC5sZW5ndGg7IGgrKykgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5saW5lSGVscGVycy5zYW1lVmFsdWVTZXJpZXNGaXgoaCwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYS5nbG9iYWxzLmNvbWJvQ2hhcnRzID8gaVtoXSA6IGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRTZXJpZVZhcmlhYmxlcyh0LCBoLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhLmdsb2JhbHMucGFkSG9yaXpvbnRhbCArIHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcywgYyksIGEuZ2xvYmFscy5pc1hOdW1lcmljICYmIGEuZ2xvYmFscy5zZXJpZXNYLmxlbmd0aCA+IDAgJiYgKHUgPSAoYS5nbG9iYWxzLnNlcmllc1hbY11bMF0gLSBhLmdsb2JhbHMubWluWCkgLyB0aGlzLnhSYXRpbyksIGcucHVzaCh1KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYsIHAgPSB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy56ZXJvWTsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlk6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lWVBvc2l0aW9uOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByZXZZLCBkLnB1c2goYiksIGYgPSBiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZYOiB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZZOiBiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB0aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFg6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFk6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHNGcm9tOiB2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXRoczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYVBhdGhzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lWVBvc2l0aW9uOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhBcnJqOiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlBcnJqOiBkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlUGF0aHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogdwogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbFBvaW50c01haW4pLCB0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLCBsLnB1c2godGhpcy5lbFNlcmllcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuY29uZmlnLmNoYXJ0LnN0YWNrZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSBsLmxlbmd0aDsgayA+IDA7IGstLSkgby5hZGQobFtrIC0gMV0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgQSA9IDA7IEEgPCBsLmxlbmd0aDsgQSsrKSBvLmFkZChsW0FdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfaW5pdFNlcmllVmFyaWFibGVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgbSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy54RGl2aXNpb24gPSBhLmdsb2JhbHMuZ3JpZFdpZHRoIC8gKGEuZ2xvYmFscy5kYXRhUG9pbnRzIC0gKCJvbiIgPT09IGEuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQgPyAxIDogMCkpLCB0aGlzLnN0cm9rZVdpZHRoID0gQXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2Uud2lkdGgpID8gYS5jb25maWcuc3Ryb2tlLndpZHRoW2ldIDogYS5jb25maWcuc3Ryb2tlLndpZHRoLCB0aGlzLnlSYXRpby5sZW5ndGggPiAxICYmICh0aGlzLnlheGlzSW5kZXggPSBpKSwgdGhpcy5pc1JldmVyc2VkID0gYS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSAmJiBhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkLCB0aGlzLnplcm9ZID0gYS5nbG9iYWxzLmdyaWRIZWlnaHQgLSB0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdIC0gKHRoaXMuaXNSZXZlcnNlZCA/IGEuZ2xvYmFscy5ncmlkSGVpZ2h0IDogMCkgKyAodGhpcy5pc1JldmVyc2VkID8gMiAqIHRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0gOiAwKSwgdGhpcy5hcmVhQm90dG9tWSA9IHRoaXMuemVyb1ksICh0aGlzLnplcm9ZID4gYS5nbG9iYWxzLmdyaWRIZWlnaHQgfHwgImVuZCIgPT09IGEuY29uZmlnLnBsb3RPcHRpb25zLmFyZWEuZmlsbFRvKSAmJiAodGhpcy5hcmVhQm90dG9tWSA9IGEuZ2xvYmFscy5ncmlkSGVpZ2h0KSwgdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uID0gdGhpcy54RGl2aXNpb24gLyAyLCB0aGlzLmVsU2VyaWVzID0gcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOYW1lOiB4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuZWxQb2ludHNNYWluID0gcy5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIiwKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogaQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVsRGF0YUxhYmVsc1dyYXAgPSBzLmdyb3VwKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWRhdGFsYWJlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YTpyZWFsSW5kZXgiOiBpCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W2VdLmxlbmd0aCA9PT0gYS5nbG9iYWxzLmRhdGFQb2ludHM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbFNlcmllcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6bG9uZ2VzdFNlcmllcyI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogZSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhOnJlYWxJbmRleCI6IGkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5hcHBlbmRQYXRoRnJvbSA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9jYWxjdWxhdGVQYXRoc0Zyb20iLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSwgYSwgcywgciA9IHQuc2VyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LnByZXZYLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC5wcmV2WSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBtKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gcltvXVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IHJbb10ubGVuZ3RoOyBnKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gcltvXVtnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLnhEaXZpc2lvbiAqIGcsIGggPSB0aGlzLnplcm9ZIC0gcltvXVtnXSAvIHRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sIGUgPSBkLm1vdmUobCwgaCksIGkgPSBkLm1vdmUobCwgdGhpcy5hcmVhQm90dG9tWSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgZSA9IGQubW92ZShsLCBoKSwgaSA9IGQubW92ZShsLCB0aGlzLmFyZWFCb3R0b21ZKSArIGQubGluZShsLCBoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IGQubW92ZSgtMSwgdGhpcy56ZXJvWSkgKyBkLmxpbmUoLTEsIHRoaXMuemVyb1kpLCBzID0gZC5tb3ZlKC0xLCB0aGlzLnplcm9ZKSArIGQubGluZSgtMSwgdGhpcy56ZXJvWSksIGMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB0aGlzLmxpbmVIZWxwZXJzLmNoZWNrUHJldmlvdXNQYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbUxpbmU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbUFyZWE6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IG4KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB1LnBhdGhGcm9tTGluZSwgcyA9IHUucGF0aEZyb21BcmVhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZYOiBsLAogICAgICAgICAgICAgICAgICAgICAgICBwcmV2WTogaCwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhdGg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFQYXRoOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbUxpbmU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tQXJlYTogcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX2hhbmRsZVBhdGhzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQucGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuZXcgTSh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2U2VyaWVzWS5wdXNoKHIueUFycmopLCBvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXSA9IHIueEFycmosIG8uZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2FdID0gci55QXJyajsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IG8uY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50czsKICAgICAgICAgICAgICAgICAgICBpZiAoaC5jb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXVtvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXS5sZW5ndGggLSBoLmNvdW50IC0gMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbi5kcmF3UmVjdChjLCAwLCBvLmdsb2JhbHMuZ3JpZFdpZHRoLCBvLmdsb2JhbHMuZ3JpZEhlaWdodCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uZ2xvYmFscy5kb20uZWxGb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZC5ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBuLmRyYXdSZWN0KDAsIDAsIGMsIG8uZ2xvYmFscy5ncmlkSGVpZ2h0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChnLm5vZGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzQ2hhcnQgfHwgby5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IHRoaXMuZWxQb2ludHNNYWluLm5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBhCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxJbmRleDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uRGVsYXk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTcGVlZDogby5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNoYW5nZVNwZWVkOiBvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImFwZXhjaGFydHMtIi5jb25jYXQoaSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmICgiYXJlYSIgPT09IGkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPSBsLmZpbGxQYXRoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBwID0gMDsgcCA8IHIuYXJlYVBhdGhzLmxlbmd0aDsgcCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IG4ucmVuZGVyUGF0aHMoZShlKHt9LCB1KSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoRnJvbTogci5wYXRoRnJvbUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiByLmFyZWFQYXRoc1twXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lQ2FwOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxTZXJpZXMuYWRkKHgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoby5jb25maWcuc3Ryb2tlLnNob3cgJiYgIXRoaXMucG9pbnRzQ2hhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImxpbmUiID09PSBpKSBiID0gbC5maWxsUGF0aCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXNOdW1iZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvLmNvbmZpZy5zdHJva2UuZmlsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBvLmNvbmZpZy5maWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb25maWcuZmlsbCA9IG8uY29uZmlnLnN0cm9rZS5maWxsLCBiID0gbC5maWxsUGF0aCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTnVtYmVyOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvLmNvbmZpZy5maWxsID0gdgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYiA9IG8uZ2xvYmFscy5zdHJva2UuY29sb3JzW2FdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHIubGluZVBhdGhzLmxlbmd0aDsgeSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IGUoZSh7fSwgdSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tOiByLnBhdGhGcm9tTGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aFRvOiByLmxpbmVQYXRoc1t5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogdGhpcy5zdHJva2VXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZUNhcDogby5jb25maWcuc3Ryb2tlLmxpbmVDYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICJub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBuLnJlbmRlclBhdGhzKHcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWxTZXJpZXMuYWRkKGspLCBoLmNvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBID0gbi5yZW5kZXJQYXRocyh3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLm5vZGUuc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IiwgaC5kYXNoQXJyYXkpLCBoLnN0cm9rZVdpZHRoICYmIEEubm9kZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsIGguc3Ryb2tlV2lkdGgpLCB0aGlzLmVsU2VyaWVzLmFkZChBKSwgQS5hdHRyKCJjbGlwLXBhdGgiLCAidXJsKCNmb3JlY2FzdE1hc2siLmNvbmNhdChvLmdsb2JhbHMuY3VpZCwgIikiKSksIGsuYXR0cigiY2xpcC1wYXRoIiwgInVybCgjbm9uRm9yZWNhc3RNYXNrIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsICIpIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9pdGVyYXRlT3ZlckRhdGFQb2ludHMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdC5zZXJpZXMsIGkgPSB0LnJlYWxJbmRleCwgYSA9IHQuaSwgcyA9IHQueCwgciA9IHQueSwgbyA9IHQucFgsIG4gPSB0LnBZLCBsID0gdC5wYXRoc0Zyb20sIGggPSB0LmxpbmVQYXRocywgYyA9IHQuYXJlYVBhdGhzLCBkID0gdC5zZXJpZXNJbmRleCwgZyA9IHQubGluZVlQb3NpdGlvbiwgdSA9IHQueEFycmosIGYgPSB0LnlBcnJqLCBwID0gdGhpcy53LCBiID0gbmV3IG0odGhpcy5jdHgpLCB2ID0gdGhpcy55UmF0aW8sIHkgPSBsLnByZXZZLCB3ID0gbC5saW5lUGF0aCwgayA9IGwuYXJlYVBhdGgsIEEgPSBsLnBhdGhGcm9tTGluZSwgUyA9IGwucGF0aEZyb21BcmVhLCBDID0geC5pc051bWJlcihwLmdsb2JhbHMubWluWUFycltpXSkgPyBwLmdsb2JhbHMubWluWUFycltpXSA6IHAuZ2xvYmFscy5taW5ZLCBMID0gcC5nbG9iYWxzLmRhdGFQb2ludHMgPiAxID8gcC5nbG9iYWxzLmRhdGFQb2ludHMgLSAxIDogcC5nbG9iYWxzLmRhdGFQb2ludHMsIFAgPSAwOyBQIDwgTDsgUCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBNID0gdm9pZCAwID09PSBlW2FdW1AgKyAxXSB8fCBudWxsID09PSBlW2FdW1AgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZ2xvYmFscy5pc1hOdW1lcmljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVCA9IHAuZ2xvYmFscy5zZXJpZXNYW2ldW1AgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gcC5nbG9iYWxzLnNlcmllc1hbaV1bUCArIDFdICYmIChUID0gcC5nbG9iYWxzLnNlcmllc1hbaV1bTCAtIDFdKSwgcyA9IChUIC0gcC5nbG9iYWxzLm1pblgpIC8gdGhpcy54UmF0aW8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHMgKz0gdGhpcy54RGl2aXNpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmNvbmZpZy5jaGFydC5zdGFja2VkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPiAwICYmIHAuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIDwgcC5jb25maWcuc2VyaWVzLmxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gdGhpcy5wcmV2U2VyaWVzWVtmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0LCBpID0gMDsgaSA8IHAuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KSA+IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID49IDAgPyBlIDogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oYSAtIDEpXVtQICsgMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBnID0gdGhpcy56ZXJvWTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBnID0gdGhpcy56ZXJvWTsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE0gPyBnIC0gQyAvIHZbdGhpcy55YXhpc0luZGV4XSArIDIgKiAodGhpcy5pc1JldmVyc2VkID8gQyAvIHZbdGhpcy55YXhpc0luZGV4XSA6IDApIDogZyAtIGVbYV1bUCArIDFdIC8gdlt0aGlzLnlheGlzSW5kZXhdICsgMiAqICh0aGlzLmlzUmV2ZXJzZWQgPyBlW2FdW1AgKyAxXSAvIHZbdGhpcy55YXhpc0luZGV4XSA6IDApLCB1LnB1c2gocyksIGYucHVzaChyKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEkgPSB0aGlzLmxpbmVIZWxwZXJzLmNhbGN1bGF0ZVBvaW50cyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZZOiB5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSB0aGlzLl9jcmVhdGVQYXRocyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBYOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBZOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXRoOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFQYXRoOiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQYXRoczogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhUGF0aHM6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBjID0gei5hcmVhUGF0aHMsIGggPSB6LmxpbmVQYXRocywgbyA9IHoucFgsIG4gPSB6LnBZLCBrID0gei5hcmVhUGF0aCwgdyA9IHoubGluZVBhdGgsIHRoaXMuYXBwZW5kUGF0aEZyb20gJiYgKEEgKz0gYi5saW5lKHMsIHRoaXMuemVyb1kpLCBTICs9IGIubGluZShzLCB0aGlzLnplcm9ZKSksIHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMoZSwgSSwgYSwgUCwgaSksIHRoaXMuX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzUG9zOiBJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2WTogeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOiBQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlBcnJqOiBmLAogICAgICAgICAgICAgICAgICAgICAgICB4QXJyajogdSwKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEZyb21BcmVhOiBTLAogICAgICAgICAgICAgICAgICAgICAgICBhcmVhUGF0aHM6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhGcm9tTGluZTogQSwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhdGhzOiBoCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfaGFuZGxlTWFya2Vyc0FuZExhYmVscyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5wb2ludHNQb3M7CiAgICAgICAgICAgICAgICAgICAgdC5zZXJpZXMsIHQueCwgdC55LCB0LnByZXZZOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5pLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5qLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5yZWFsSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgeih0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRzQ2hhcnQpIHRoaXMuc2NhdHRlci5kcmF3KHRoaXMuZWxTZXJpZXMsIGEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNQb3M6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHpSYXRpbzogdGhpcy56UmF0aW8sCiAgICAgICAgICAgICAgICAgICAgICAgIGVsUGFyZW50OiB0aGlzLmVsUG9pbnRzTWFpbgogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByLmdsb2JhbHMuc2VyaWVzW2ldLmxlbmd0aCA+IDEgJiYgdGhpcy5lbFBvaW50c01haW4ubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoZSwgcywgYSArIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIHRoaXMuZWxQb2ludHNNYWluLmFkZChuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG8uZHJhd0RhdGFMYWJlbChlLCBzLCBhICsgMSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gbCAmJiB0aGlzLmVsRGF0YUxhYmVsc1dyYXAuYWRkKGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9jcmVhdGVQYXRocyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5zZXJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LnJlYWxJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuaiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQueSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucFgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0LnBZLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gdC5saW5lUGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHQuYXJlYVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LmxpbmVQYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHQuYXJlYVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5zZXJpZXNJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG5ldyBtKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGYuY29uZmlnLnN0cm9rZS5jdXJ2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuYXJlYUJvdHRvbVk7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZi5jb25maWcuc3Ryb2tlLmN1cnZlKSAmJiAoeCA9IEFycmF5LmlzQXJyYXkodSkgPyBmLmNvbmZpZy5zdHJva2UuY3VydmVbdVtpXV0gOiBmLmNvbmZpZy5zdHJva2UuY3VydmVbaV0pLCAic21vb3RoIiA9PT0geCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IC4zNSAqIChyIC0gbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGYuZ2xvYmFscy5oYXNOdWxsVmFsdWVzID8gKG51bGwgIT09IGVbaV1bc10gJiYgKG51bGwgIT09IGVbaV1bcyArIDFdID8gKGggPSBwLm1vdmUobiwgbCkgKyBwLmN1cnZlKG4gKyB2LCBsLCByIC0gdiwgbywgciArIDEsIG8pLCBjID0gcC5tb3ZlKG4gKyAxLCBsKSArIHAuY3VydmUobiArIHYsIGwsIHIgLSB2LCBvLCByICsgMSwgbykgKyBwLmxpbmUociwgYikgKyBwLmxpbmUobiwgYikgKyAieiIpIDogKGggPSBwLm1vdmUobiwgbCksIGMgPSBwLm1vdmUobiwgbCkgKyAieiIpKSwgZC5wdXNoKGgpLCBnLnB1c2goYykpIDogKGggKz0gcC5jdXJ2ZShuICsgdiwgbCwgciAtIHYsIG8sIHIsIG8pLCBjICs9IHAuY3VydmUobiArIHYsIGwsIHIgLSB2LCBvLCByLCBvKSksIG4gPSByLCBsID0gbywgcyA9PT0gZVtpXS5sZW5ndGggLSAyICYmIChjID0gYyArIHAuY3VydmUobiwgbCwgciwgbywgciwgYikgKyBwLm1vdmUociwgbykgKyAieiIsIGYuZ2xvYmFscy5oYXNOdWxsVmFsdWVzIHx8IChkLnB1c2goaCksIGcucHVzaChjKSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGVbaV1bcyArIDFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoICs9IHAubW92ZShyLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gZi5nbG9iYWxzLmlzWE51bWVyaWMgPyAoZi5nbG9iYWxzLnNlcmllc1hbYV1bc10gLSBmLmdsb2JhbHMubWluWCkgLyB0aGlzLnhSYXRpbyA6IHIgLSB0aGlzLnhEaXZpc2lvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBjICsgcC5saW5lKHksIGIpICsgcC5tb3ZlKHIsIG8pICsgInoiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZVtpXVtzXSAmJiAoaCArPSBwLm1vdmUociwgbyksIGMgKz0gcC5tb3ZlKHIsIGIpKSwgInN0ZXBsaW5lIiA9PT0geCA/IChoID0gaCArIHAubGluZShyLCBudWxsLCAiSCIpICsgcC5saW5lKG51bGwsIG8sICJWIiksIGMgPSBjICsgcC5saW5lKHIsIG51bGwsICJIIikgKyBwLmxpbmUobnVsbCwgbywgIlYiKSkgOiAic3RyYWlnaHQiID09PSB4ICYmIChoICs9IHAubGluZShyLCBvKSwgYyArPSBwLmxpbmUociwgbykpLCBzID09PSBlW2ldLmxlbmd0aCAtIDIgJiYgKGMgPSBjICsgcC5saW5lKHIsIGIpICsgcC5tb3ZlKHIsIG8pICsgInoiLCBkLnB1c2goaCksIGcucHVzaChjKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhdGhzOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBhcmVhUGF0aHM6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHBYOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBwWTogbCwKICAgICAgICAgICAgICAgICAgICAgICAgbGluZVBhdGg6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFQYXRoOiBjCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJoYW5kbGVOdWxsRGF0YVBvaW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0W2ldW2FdICYmIHIuY29uZmlnLm1hcmtlcnMuc2hvd051bGxEYXRhUG9pbnRzIHx8IDEgPT09IHRbaV0ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoZSwgcywgYSArIDEsIHRoaXMuc3Ryb2tlV2lkdGggLSByLmNvbmZpZy5tYXJrZXJzLnN0cm9rZVdpZHRoIC8gMiwgITApOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBvICYmIHRoaXMuZWxQb2ludHNNYWluLmFkZChvKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpOwogICAgd2luZG93LlRyZWVtYXBTcXVhcmVkID0ge30sIHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZ1bmN0aW9uIHQoZSwgaSwgYSwgcykgewogICAgICAgICAgICB0aGlzLnhvZmZzZXQgPSBlLCB0aGlzLnlvZmZzZXQgPSBpLCB0aGlzLmhlaWdodCA9IHMsIHRoaXMud2lkdGggPSBhLCB0aGlzLnNob3J0ZXN0RWRnZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuaGVpZ2h0LCB0aGlzLndpZHRoKQogICAgICAgICAgICB9LCB0aGlzLmdldENvb3JkaW5hdGVzID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUsIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy54b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgIHMgPSB0aGlzLnlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgbyA9IHIodCkgLyB0aGlzLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICBuID0gcih0KSAvIHRoaXMud2lkdGg7CiAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA+PSB0aGlzLmhlaWdodCkKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykgaS5wdXNoKFthLCBzLCBhICsgbywgcyArIHRbZV0gLyBvXSksIHMgKz0gdFtlXSAvIG87CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gMDsgZSA8IHQubGVuZ3RoOyBlKyspIGkucHVzaChbYSwgcywgYSArIHRbZV0gLyBuLCBzICsgbl0pLCBhICs9IHRbZV0gLyBuOwogICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgfSwgdGhpcy5jdXRBcmVhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA+PSB0aGlzLmhlaWdodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZSAvIHRoaXMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy53aWR0aCAtIGE7CiAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyB0KHRoaXMueG9mZnNldCArIGEsIHRoaXMueW9mZnNldCwgcywgdGhpcy5oZWlnaHQpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gZSAvIHRoaXMud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmhlaWdodCAtIHI7CiAgICAgICAgICAgICAgICAgICAgaSA9IG5ldyB0KHRoaXMueG9mZnNldCwgdGhpcy55b2Zmc2V0ICsgciwgdGhpcy53aWR0aCwgbykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGUoZSwgYSwgcywgbywgbikgewogICAgICAgICAgICByZXR1cm4gbyA9IHZvaWQgMCA9PT0gbyA/IDAgOiBvLCBuID0gdm9pZCAwID09PSBuID8gMCA6IG4sCiAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGksIGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRbZV0ubGVuZ3RoOyBpKyspIGEucHVzaCh0W2VdW2ldKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfShpKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZSAvIHIodCk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIGFbaV0gPSB0W2ldICogczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfShlLCBhICogcyksIFtdLCBuZXcgdChvLCBuLCBhLCBzKSwgW10pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaSh0LCBlLCBzLCBvKSB7CiAgICAgICAgICAgIHZhciBuLCBsLCBoOwogICAgICAgICAgICBpZiAoMCAhPT0gdC5sZW5ndGgpIHJldHVybiBuID0gcy5zaG9ydGVzdEVkZ2UoKSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdC5sZW5ndGgpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAocyA9IHQuc2xpY2UoKSkucHVzaChlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEodCwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhKHMsIGkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByID49IG8KICAgICAgICAgICAgICAgIH0oZSwgbCA9IHRbMF0sIG4pID8gKGUucHVzaChsKSwgaSh0LnNsaWNlKDEpLCBlLCBzLCBvKSkgOiAoaCA9IHMuY3V0QXJlYShyKGUpLCBvKSwgby5wdXNoKHMuZ2V0Q29vcmRpbmF0ZXMoZSkpLCBpKHQsIFtdLCBoLCBvKSksIG87CiAgICAgICAgICAgIG8ucHVzaChzLmdldENvb3JkaW5hdGVzKGUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYSh0LCBlKSB7CiAgICAgICAgICAgIHZhciBpID0gTWF0aC5taW4uYXBwbHkoTWF0aCwgdCksCiAgICAgICAgICAgICAgICBhID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgdCksCiAgICAgICAgICAgICAgICBzID0gcih0KTsKICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGgucG93KGUsIDIpICogYSAvIE1hdGgucG93KHMsIDIpLCBNYXRoLnBvdyhzLCAyKSAvIChNYXRoLnBvdyhlLCAyKSAqIGkpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIHQuY29uc3RydWN0b3IgPT09IEFycmF5CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKHQpIHsKICAgICAgICAgICAgdmFyIGUsIGkgPSAwOwogICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykgaSArPSB0W2VdOwogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyh0KSB7CiAgICAgICAgICAgIHZhciBlLCBpID0gMDsKICAgICAgICAgICAgaWYgKHModFswXSkpCiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUrKykgaSArPSBvKHRbZV0pOwogICAgICAgICAgICBlbHNlIGkgPSByKHQpOwogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0KICAgICAgICByZXR1cm4gZnVuY3Rpb24gdChpLCBhLCByLCBuLCBsKSB7CiAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IG4gPyAwIDogbiwgbCA9IHZvaWQgMCA9PT0gbCA/IDAgOiBsOwogICAgICAgICAgICB2YXIgaCwgYywgZCA9IFtdLAogICAgICAgICAgICAgICAgZyA9IFtdOwogICAgICAgICAgICBpZiAocyhpWzBdKSkgewogICAgICAgICAgICAgICAgZm9yIChjID0gMDsgYyA8IGkubGVuZ3RoOyBjKyspIGRbY10gPSBvKGlbY10pOwogICAgICAgICAgICAgICAgZm9yIChoID0gZShkLCBhLCByLCBuLCBsKSwgYyA9IDA7IGMgPCBpLmxlbmd0aDsgYysrKSBnLnB1c2godChpW2NdLCBoW2NdWzJdIC0gaFtjXVswXSwgaFtjXVszXSAtIGhbY11bMV0sIGhbY11bMF0sIGhbY11bMV0pKQogICAgICAgICAgICB9IGVsc2UgZyA9IGUoaSwgYSwgciwgbiwgbCk7CiAgICAgICAgICAgIHJldHVybiBnCiAgICAgICAgfQogICAgfSgpOwogICAgdmFyIEl0LCB6dCwgWHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlLCBpKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudywgdGhpcy5zdHJva2VXaWR0aCA9IHRoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoLCB0aGlzLmhlbHBlcnMgPSBuZXcga3QoZSksIHRoaXMuZHluYW1pY0FuaW0gPSB0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbiwgdGhpcy5sYWJlbHMgPSBbXQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJkcmF3IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy53LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IE0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYS5ncm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtdHJlZW1hcCIKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuZ2xvYmFscy5ub0RhdGEpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gW107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2goZSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMubmVnUmFuZ2UgPSB0aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksIGkuY29uZmlnLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZGF0YS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGUubGFiZWxzW2ldKSB8fCAoZS5sYWJlbHNbaV0gPSBbXSksIGUubGFiZWxzW2ldLnB1c2godC54KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSksIHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZShvLCBpLmdsb2JhbHMuZ3JpZFdpZHRoLCBpLmdsb2JhbHMuZ3JpZEhlaWdodCkuZm9yRWFjaCgoZnVuY3Rpb24obywgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGEuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllc05hbWU6IHguZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tuXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IG4gKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGE6cmVhbEluZGV4IjogbgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHYoZS5jdHgpLmRyb3BTaGFkb3cociwgaCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEuZ3JvdXAoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgby5mb3JFYWNoKChmdW5jdGlvbihyLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHJbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHJbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHJbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHJbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEuZHJhd1JlY3QoaCwgYywgZCAtIGgsIGcgLSBjLCAwLCAiI2ZmZiIsIDEsIGUuc3Ryb2tlV2lkdGgsIGkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAudXNlRmlsbENvbG9yQXNTdHJva2UgPyBwIDogaS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeDogaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeTogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGQgLSBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZyAtIGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBlLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihpLmNvbmZpZy5jaGFydC50eXBlLCBuLCBvLCBlLm5lZ1JhbmdlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gZi5jb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10gJiYgaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yICYmIChwID0gaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcy5maWxsUGF0aCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzTnVtYmVyOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUubm9kZS5jbGFzc0xpc3QuYWRkKCJhcGV4Y2hhcnRzLXRyZWVtYXAtcmVjdCIpLCB1LmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLmhlbHBlcnMuYWRkTGlzdGVuZXJzKHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGggKyAoZCAtIGgpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogYyArIChnIC0gYykgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZCAtIGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZyAtIGMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCAmJiAhaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuZ2xvYmFscy5yZXNpemVkIHx8IChtID0gaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksIGUuYW5pbWF0ZVRyZWVtYXAodSwgYiwgdiwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmdsb2JhbHMuZGF0YUNoYW5nZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5keW5hbWljQW5pbS5lbmFibGVkICYmIGkuZ2xvYmFscy5zaG91bGRBbmltYXRlICYmICh5ID0gZS5keW5hbWljQW5pbS5zcGVlZCwgaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl0gJiYgaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10gJiYgaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10ucmVjdCAmJiAoYiA9IGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QpLCBlLmFuaW1hdGVUcmVlbWFwKHUsIGIsIHYsIHkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBlLmdldEZvbnRTaXplKHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBpLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcihlLmxhYmVsc1tuXVtvXSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaS5nbG9iYWxzLnNlcmllc1tuXVtvXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFQb2ludEluZGV4OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGUuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogKGggKyBkKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IChjICsgZykgLyAyICsgZS5zdHJva2VXaWR0aCAvIDIgKyB3IC8gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JQcm9wczogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkICYmIEEgJiYgZS5yb3RhdGVUb0ZpdExhYmVsKEEsIGssIGgsIGMsIGQsIGcpLCBsLmFkZCh1KSwgbnVsbCAhPT0gQSAmJiBsLmFkZChBKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGwuYWRkKGMpLCByLmFkZChsKQogICAgICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRGb250U2l6ZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIHZhciBpLCBhLCBzLCByLCBvID0gZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZVswXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZS5sZW5ndGg7IGkrKykgYSArPSB0KGVbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZS5sZW5ndGg7IGkrKykgYSArPSBlW2ldLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9KHRoaXMubGFiZWxzKSAvIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVbMF0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIGEgKz0gdChlW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIGEgKz0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICB9KHRoaXMubGFiZWxzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9IHRbMl0gLSB0WzBdLCBhID0gdFszXSAtIHRbMV0sIHMgPSBpICogYSwgciA9IE1hdGgucG93KHMsIC41KSwgTWF0aC5taW4ociAvIG8sIHBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsIDEwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicm90YXRlVG9GaXRMYWJlbCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcywgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gbmV3IG0odGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gby5nZXRUZXh0UmVjdHMoZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4ud2lkdGggKyA1ID4gcyAtIGkgJiYgbi53aWR0aCA8PSByIC0gYSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG8ucm90YXRlQXJvdW5kQ2VudGVyKHQubm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQubm9kZS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwICIuY29uY2F0KGwueCwgIiAiKS5jb25jYXQobC55LCAiKSIpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiYW5pbWF0ZVRyZWVtYXAiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBiKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICBzLmFuaW1hdGVSZWN0KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnksCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGUuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICB4OiBpLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGkueSwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9LCBhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuYW5pbWF0aW9uQ29tcGxldGVkKHQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBFdCA9IDg2NDAwLAogICAgICAgIFl0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncsIHRoaXMudGltZVNjYWxlQXJyYXkgPSBbXSwgdGhpcy51dGMgPSB0aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJjYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICBpZiAocy5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCkgcmV0dXJuIHMuZ2xvYmFscy5sYWJlbHMgPSBbXSwgcy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscyA9IFtdLCBbXTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBSKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChpIC0gdCkgLyA4NjRlNTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGVybWluZUludGVydmFsKG8pLCBzLmdsb2JhbHMuZGlzYWJsZVpvb21JbiA9ICExLCBzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQgPSAhMSwgbyA8IC4wMDAxMTU3NDA3NDA3NDA3NDA3NSA/IHMuZ2xvYmFscy5kaXNhYmxlWm9vbUluID0gITAgOiBvID4gNWU0ICYmIChzLmdsb2JhbHMuZGlzYWJsZVpvb21PdXQgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSByLmdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXAodCwgaSwgdGhpcy51dGMpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gcy5nbG9iYWxzLmdyaWRXaWR0aCAvIG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsIC8gMjQsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBoIC8gNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjIC8gNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBNYXRoLmZsb29yKDI0ICogbyksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLmZsb29yKDE0NDAgKiBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IE1hdGguZmxvb3IobyAqIEV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IE1hdGguZmxvb3IobyksCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBNYXRoLmZsb29yKG8gLyAzMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBNYXRoLmZsb29yKG8gLyAzNjUpLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWlsbGlzZWNvbmQ6IG4ubWluTWlsbGlzZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5TZWNvbmQ6IG4ubWluU2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlOiBuLm1pbk1pbnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhvdXI6IG4ubWluSG91ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IG4ubWluRGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1vbnRoOiBuLm1pbk1vbnRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluWWVhcjogbi5taW5ZZWFyCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFZhbDogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaWxsaXNlY29uZDogdi5taW5NaWxsaXNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQ6IHYubWluU2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbnV0ZTogdi5taW5NaW51dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SG91cjogdi5taW5Ib3VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vbnRoRGF0ZTogdi5taW5EYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERhdGU6IHYubWluRGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb250aDogdi5taW5Nb250aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRZZWFyOiB2Lm1pblllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlzV2lkdGhPblhBeGlzOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cnNXaWR0aE9uWEF4aXM6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzV2lkdGhPblhBeGlzOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kc1dpZHRoT25YQXhpczogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mU2Vjb25kczogZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mTWludXRlczogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSG91cnM6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZkRheXM6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZk1vbnRoczogeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mWWVhcnM6IGIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInllYXJzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVZZWFyU2NhbGUobSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW9udGhzIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaGFsZl95ZWFyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVNb250aFNjYWxlKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vbnRoc19kYXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW9udGhzX2ZvcnRuaWdodCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRheXMiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ3ZWVrX2RheXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURheVNjYWxlKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVIb3VyU2NhbGUobSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibWludXRlc19maXZlcyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1pbnV0ZXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZU1pbnV0ZVNjYWxlKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlY29uZHNfdGVucyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlY29uZHNfZml2ZXMiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVTZWNvbmRTY2FsZShtKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHRoaXMudGltZVNjYWxlQXJyYXkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHQucG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiB0LnVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiB0LnllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXk6IHQuZGF5ID8gdC5kYXkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cjogdC5ob3VyID8gdC5ob3VyIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB0Lm1vbnRoICsgMQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1vbnRoIiA9PT0gdC51bml0ID8gZShlKHt9LCBpKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheTogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LnZhbHVlICsgMQogICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICJkYXkiID09PSB0LnVuaXQgfHwgImhvdXIiID09PSB0LnVuaXQgPyBlKGUoe30sIGkpLCB7fSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiAibWludXRlIiA9PT0gdC51bml0ID8gZShlKHt9LCBpKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0LnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogInNlY29uZCIgPT09IHQudW5pdCA/IGUoZSh7fSwgaSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdC52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdC5taW51dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHQuc2Vjb25kCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdAogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geS5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGguY2VpbChzLmdsb2JhbHMuZ3JpZFdpZHRoIC8gMTIwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQgJiYgKGkgPSBzLmNvbmZpZy54YXhpcy50aWNrQW1vdW50KSwgeS5sZW5ndGggPiBpICYmIChlID0gTWF0aC5mbG9vcih5Lmxlbmd0aCAvIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhLnRpY2tJbnRlcnZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5ZWFyIiA9PT0gdC51bml0ICYmIChvID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaGFsZl95ZWFyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gNywgInllYXIiID09PSB0LnVuaXQgJiYgKG8gPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAxLCAieWVhciIgPT09IHQudW5pdCAmJiAobyA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vbnRoc19mb3J0bmlnaHQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAxNSwgInllYXIiICE9PSB0LnVuaXQgJiYgIm1vbnRoIiAhPT0gdC51bml0IHx8IChvID0gITApLCAzMCA9PT0gciAmJiAobiA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1vbnRoc19kYXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gMTAsICJtb250aCIgPT09IHQudW5pdCAmJiAobyA9ICEwKSwgMzAgPT09IHIgJiYgKG4gPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ3ZWVrX2RheXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSA4LCAibW9udGgiID09PSB0LnVuaXQgJiYgKG8gPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gMSwgIm1vbnRoIiA9PT0gdC51bml0ICYmIChvID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaG91cnMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXkiID09PSB0LnVuaXQgJiYgKG8gPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJtaW51dGVzX2ZpdmVzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByICUgNSAhPSAwICYmIChuID0gITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2Vjb25kc190ZW5zIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByICUgMTAgIT0gMCAmJiAobiA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInNlY29uZHNfZml2ZXMiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgJSA1ICE9IDAgJiYgKG4gPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImhvdXJzIiA9PT0gYS50aWNrSW50ZXJ2YWwgfHwgIm1pbnV0ZXNfZml2ZXMiID09PSBhLnRpY2tJbnRlcnZhbCB8fCAic2Vjb25kc190ZW5zIiA9PT0gYS50aWNrSW50ZXJ2YWwgfHwgInNlY29uZHNfZml2ZXMiID09PSBhLnRpY2tJbnRlcnZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuKSByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgociAlIGUgPT0gMCB8fCBvKSAmJiAhbikgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0IiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmZvcm1hdERhdGVzKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKGEpOwogICAgICAgICAgICAgICAgICAgIGkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMgPSBzLnNsaWNlKCksIG5ldyBsdCh0aGlzLmN0eCkucGxvdENvb3JkcygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImRldGVybWluZUludGVydmFsIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAyNCAqIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSA2MCAqIGU7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICghMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQgLyAzNjUgPiA1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAieWVhcnMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdCA+IDgwMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gImhhbGZfeWVhciI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0ID4gMTgwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAibW9udGhzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQgPiA5MDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gIm1vbnRoc19mb3J0bmlnaHQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdCA+IDYwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAibW9udGhzX2RheXMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdCA+IDMwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAid2Vla19kYXlzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHQgPiAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAiZGF5cyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBlID4gMi40OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAiaG91cnMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaSA+IDE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAibWludXRlc19maXZlcyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBpID4gNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gIm1pbnV0ZXMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaSA+IDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9ICJzZWNvbmRzX3RlbnMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjAgKiBpID4gMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9ICJzZWNvbmRzX2ZpdmVzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAic2Vjb25kcyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdlbmVyYXRlWWVhclNjYWxlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LmZpcnN0VmFsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5jdXJyZW50TW9udGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmN1cnJlbnRZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5kYXlzV2lkdGhPblhBeGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5udW1iZXJPZlllYXJzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5taW5ZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyBSKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9ICJ5ZWFyIjsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5taW5EYXRlID4gMSB8fCBlLm1pbk1vbnRoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGwuZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhcihlLm1pblllYXIsIGUubWluTW9udGgsIGUubWluRGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAobC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGUubWluWWVhcikgLSBjICsgMSkgKiBzLCBvID0gZS5taW5ZZWFyICsgMSwgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKGkgKyAxKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSAxID09PSBlLm1pbkRhdGUgJiYgMCA9PT0gZS5taW5Nb250aCAmJiB0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKGkgKyAxKQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBvLCBnID0gbiwgdSA9IDA7IHUgPCByOyB1KyspIGQrKywgZyA9IGwuZGV0ZXJtaW5lRGF5c09mWWVhcihkIC0gMSkgKiBzICsgZywgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBoLAogICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBtb250aDogMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdlbmVyYXRlTW9udGhTY2FsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5maXJzdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY3VycmVudE1vbnRoRGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuY3VycmVudE1vbnRoLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5jdXJyZW50WWVhciwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuZGF5c1dpZHRoT25YQXhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQubnVtYmVyT2ZNb250aHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyBSKHRoaXMuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICJtb250aCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmIChlLm1pbkRhdGUgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAoaC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoYSArIDEsIGUubWluWWVhcikgLSBpICsgMSkgKiByLCBuID0geC5tb250aE1vZChhICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gcyArIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0geC5tb250aE1vZChuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAwID09PSBuICYmIChjID0gInllYXIiLCBmID0gZywgdSA9IDEsIGcgKz0gZCArPSAxKSwgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB1CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBsLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogYywKICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogcywKICAgICAgICAgICAgICAgICAgICAgICAgbW9udGg6IHgubW9udGhNb2QoYSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwID0gbiArIDEsIGIgPSBsLCB2ID0gMCwgbSA9IDE7IHYgPCBvOyB2KyssIG0rKykgewogICAgICAgICAgICAgICAgICAgICAgICAwID09PSAocCA9IHgubW9udGhNb2QocCkpID8gKGMgPSAieWVhciIsIGQgKz0gMSkgOiBjID0gIm1vbnRoIjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSB0aGlzLl9nZXRZZWFyKHMsIHAsIGQpOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gaC5kZXRlcm1pbmVEYXlzT2ZNb250aHMocCwgeSkgKiByICsgYjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSAwID09PSBwID8geSA6IHA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aDogMCA9PT0gcCA/IDEgOiBwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBwKysKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdlbmVyYXRlRGF5U2NhbGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuZmlyc3RWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmN1cnJlbnRNb250aCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuY3VycmVudFllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmhvdXJzV2lkdGhPblhBeGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5udW1iZXJPZkRheXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuZXcgUih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiZGF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGUubWluRGF0ZSArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBsLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPiBvLmRldGVybWluZURheXNPZk1vbnRocyhlICsgMSwgaSkgPyAoaCA9IDEsIG4gPSAibW9udGgiLCBnID0gZSArPSAxLCBlKSA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICgyNCAtIGUubWluSG91cikgKiBzLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gbCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGMoaCwgaSwgYSk7CiAgICAgICAgICAgICAgICAgICAgMCA9PT0gZS5taW5Ib3VyICYmIDEgPT09IGUubWluRGF0ZSA/IChkID0gMCwgZyA9IHgubW9udGhNb2QoZS5taW5Nb250aCksIG4gPSAibW9udGgiLCBoID0gZS5taW5EYXRlLCByKyspIDogMSAhPT0gZS5taW5EYXRlICYmIDAgPT09IGUubWluSG91ciAmJiAwID09PSBlLm1pbk1pbnV0ZSAmJiAoZCA9IDAsIGwgPSBlLm1pbkRhdGUsIGcgPSBsLCB1ID0gYyhoID0gbCwgaSwgYSkpLCB0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2dldFllYXIoYSwgdSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKHUpLAogICAgICAgICAgICAgICAgICAgICAgICBkYXk6IGgKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0gZCwgcCA9IDA7IHAgPCByOyBwKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJkYXkiLCB1ID0gYyhoICs9IDEsIHUsIHRoaXMuX2dldFllYXIoYSwgdSwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX2dldFllYXIoYSwgdSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAyNCAqIHMgKyBmOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IDEgPT09IGggPyB4Lm1vbnRoTW9kKHUpIDogaDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiB2CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZW5lcmF0ZUhvdXJTY2FsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5maXJzdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY3VycmVudERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LmN1cnJlbnRNb250aCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQuY3VycmVudFllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0Lm1pbnV0ZXNXaWR0aE9uWEF4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Lm51bWJlck9mSG91cnMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgUih0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAiaG91ciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+IG4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUgKyAxLCBzKSAmJiAocCA9IDEsIGUgKz0gMSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA+IG4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUgKyAxLCBzKSA/IGUgKz0gMSA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDYwIC0gKGUubWluTWludXRlICsgZS5taW5TZWNvbmQgLyA2MCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkICogciwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUubWluSG91ciArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB1ICsgMTsKICAgICAgICAgICAgICAgICAgICA2MCA9PT0gZCAmJiAoZyA9IDAsIGYgPSAodSA9IGUubWluSG91cikgKyAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjKHAsIGEpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBnLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiBwLAogICAgICAgICAgICAgICAgICAgICAgICBob3VyOiBmLAogICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiBzLAogICAgICAgICAgICAgICAgICAgICAgICBtb250aDogeC5tb250aE1vZChiKQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHYgPSBnLCBtID0gMDsgbSA8IG87IG0rKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9ICJob3VyIiwgZiA+PSAyNCkgZiA9IDAsIGwgPSAiZGF5IiwgYiA9IGgocCArPSAxLCBiKS5tb250aCwgYiA9IGMocCwgYik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdGhpcy5fZ2V0WWVhcihzLCBiLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IDAgPT09IGYgJiYgMCA9PT0gbSA/IGQgKiByIDogNjAgKiByICsgdjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSAwID09PSBmID8gcCA6IGY7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXk6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGg6IHgubW9udGhNb2QoYikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIGYrKwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZ2VuZXJhdGVNaW51dGVTY2FsZSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0LmN1cnJlbnRNaWxsaXNlY29uZCwgaSA9IHQuY3VycmVudFNlY29uZCwgYSA9IHQuY3VycmVudE1pbnV0ZSwgcyA9IHQuY3VycmVudEhvdXIsIHIgPSB0LmN1cnJlbnREYXRlLCBvID0gdC5jdXJyZW50TW9udGgsIG4gPSB0LmN1cnJlbnRZZWFyLCBsID0gdC5taW51dGVzV2lkdGhPblhBeGlzLCBoID0gdC5zZWNvbmRzV2lkdGhPblhBeGlzLCBjID0gdC5udW1iZXJPZk1pbnV0ZXMsIGQgPSBhICsgMSwgZyA9IHIsIHUgPSBvLCBmID0gbiwgcCA9IHMsIGIgPSAoNjAgLSBpIC0gZSAvIDFlMykgKiBoLCB2ID0gMDsgdiA8IGM7IHYrKykgZCA+PSA2MCAmJiAoZCA9IDAsIDI0ID09PSAocCArPSAxKSAmJiAocCA9IDApKSwgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0OiAibWludXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgaG91cjogcCwKICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBkYXk6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2dldFllYXIoZiwgdSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKHUpCiAgICAgICAgICAgICAgICAgICAgfSksIGIgKz0gbCwgZCsrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImdlbmVyYXRlU2Vjb25kU2NhbGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdC5jdXJyZW50TWlsbGlzZWNvbmQsIGkgPSB0LmN1cnJlbnRTZWNvbmQsIGEgPSB0LmN1cnJlbnRNaW51dGUsIHMgPSB0LmN1cnJlbnRIb3VyLCByID0gdC5jdXJyZW50RGF0ZSwgbyA9IHQuY3VycmVudE1vbnRoLCBuID0gdC5jdXJyZW50WWVhciwgbCA9IHQuc2Vjb25kc1dpZHRoT25YQXhpcywgaCA9IHQubnVtYmVyT2ZTZWNvbmRzLCBjID0gaSArIDEsIGQgPSBhLCBnID0gciwgdSA9IG8sIGYgPSBuLCBwID0gcywgYiA9ICgxZTMgLSBlKSAvIDFlMyAqIGwsIHYgPSAwOyB2IDwgaDsgdisrKSBjID49IDYwICYmIChjID0gMCwgKytkID49IDYwICYmIChkID0gMCwgMjQgPT09ICsrcCAmJiAocCA9IDApKSksIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYywKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogInNlY29uZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBjLAogICAgICAgICAgICAgICAgICAgICAgICBkYXk6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuX2dldFllYXIoZiwgdSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiB4Lm1vbnRoTW9kKHUpCiAgICAgICAgICAgICAgICAgICAgfSksIGIgKz0gbCwgYysrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNyZWF0ZVJhd0RhdGVTdHJpbmciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQueWVhcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gdC5tb250aCAmJiAodC5tb250aCA9IDEpLCBpICs9ICItIiArICgiMCIgKyB0Lm1vbnRoLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSwgImRheSIgPT09IHQudW5pdCA/IGkgKz0gImRheSIgPT09IHQudW5pdCA/ICItIiArICgiMCIgKyBlKS5zbGljZSgtMikgOiAiLTAxIiA6IGkgKz0gIi0iICsgKCIwIiArICh0LmRheSA/IHQuZGF5IDogIjEiKSkuc2xpY2UoLTIpLCAiaG91ciIgPT09IHQudW5pdCA/IGkgKz0gImhvdXIiID09PSB0LnVuaXQgPyAiVCIgKyAoIjAiICsgZSkuc2xpY2UoLTIpIDogIlQwMCIgOiBpICs9ICJUIiArICgiMCIgKyAodC5ob3VyID8gdC5ob3VyIDogIjAiKSkuc2xpY2UoLTIpLCAibWludXRlIiA9PT0gdC51bml0ID8gaSArPSAiOiIgKyAoIjAiICsgZSkuc2xpY2UoLTIpIDogaSArPSAiOiIgKyAodC5taW51dGUgPyAoIjAiICsgdC5taW51dGUpLnNsaWNlKC0yKSA6ICIwMCIpLCAic2Vjb25kIiA9PT0gdC51bml0ID8gaSArPSAiOiIgKyAoIjAiICsgZSkuc2xpY2UoLTIpIDogaSArPSAiOjAwIiwgdGhpcy51dGMgJiYgKGkgKz0gIi4wMDBaIiksIGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZm9ybWF0RGF0ZXMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdC52YWx1ZS50b1N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBSKGUuY3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLmNyZWF0ZVJhd0RhdGVTdHJpbmcodCwgYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5nZXREYXRlKHMucGFyc2VEYXRlKHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUudXRjIHx8IChvID0gcy5nZXREYXRlKHMucGFyc2VEYXRlV2l0aFRpbWV6b25lKHIpKSksIHZvaWQgMCA9PT0gaS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAiZGQgTU1NIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaS5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lRm9ybWF0dGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgInllYXIiID09PSB0LnVuaXQgJiYgKG4gPSBsLnllYXIpLCAibW9udGgiID09PSB0LnVuaXQgJiYgKG4gPSBsLm1vbnRoKSwgImRheSIgPT09IHQudW5pdCAmJiAobiA9IGwuZGF5KSwgImhvdXIiID09PSB0LnVuaXQgJiYgKG4gPSBsLmhvdXIpLCAibWludXRlIiA9PT0gdC51bml0ICYmIChuID0gbC5taW51dGUpLCAic2Vjb25kIiA9PT0gdC51bml0ICYmIChuID0gbC5zZWNvbmQpLCBhID0gcy5mb3JtYXREYXRlKG8sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBhID0gcy5mb3JtYXREYXRlKG8sIGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZzogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0LnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiB0LnVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiB0LnllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aDogdC5tb250aAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInJlbW92ZU92ZXJsYXBwaW5nVFMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXcgbSh0aGlzLmN0eCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhMTsKICAgICAgICAgICAgICAgICAgICB0Lmxlbmd0aCA+IDAgJiYgdFswXS52YWx1ZSAmJiB0LmV2ZXJ5KChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnZhbHVlLmxlbmd0aCA9PT0gdFswXS52YWx1ZS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9KSkgJiYgKHMgPSAhMCwgZSA9IGEuZ2V0VGV4dFJlY3RzKHRbMF0udmFsdWUpLndpZHRoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0Lm1hcCgoZnVuY3Rpb24obywgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPiAwICYmIGkudy5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcyA/IGUgOiBhLmdldFRleHRSZWN0cyh0W3JdLnZhbHVlKS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRbcl0ucG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ucG9zaXRpb24gPiBoICsgbCArIDEwID8gKHIgPSBuLCBvKSA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA9IG8uZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSB0CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogIl9nZXRZZWFyIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyBNYXRoLmZsb29yKGUgLyAxMikgKyBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKSwKICAgICAgICBGdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KGUsIGkpIHsKICAgICAgICAgICAgICAgIGEodGhpcywgdCksIHRoaXMuY3R4ID0gaSwgdGhpcy53ID0gaS53LCB0aGlzLmVsID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXR1cEVsZW1lbnRzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy53LmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuY2hhcnQudHlwZTsKICAgICAgICAgICAgICAgICAgICB0LmF4aXNDaGFydHMgPSBbImxpbmUiLCAiYXJlYSIsICJiYXIiLCAicmFuZ2VCYXIiLCAiY2FuZGxlc3RpY2siLCAiYm94UGxvdCIsICJzY2F0dGVyIiwgImJ1YmJsZSIsICJyYWRhciIsICJoZWF0bWFwIiwgInRyZWVtYXAiXS5pbmRleE9mKGkpID4gLTEsIHQueHlDaGFydHMgPSBbImxpbmUiLCAiYXJlYSIsICJiYXIiLCAicmFuZ2VCYXIiLCAiY2FuZGxlc3RpY2siLCAiYm94UGxvdCIsICJzY2F0dGVyIiwgImJ1YmJsZSJdLmluZGV4T2YoaSkgPiAtMSwgdC5pc0Jhckhvcml6b250YWwgPSAoImJhciIgPT09IGUuY2hhcnQudHlwZSB8fCAicmFuZ2VCYXIiID09PSBlLmNoYXJ0LnR5cGUgfHwgImJveFBsb3QiID09PSBlLmNoYXJ0LnR5cGUpICYmIGUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsIHQuY2hhcnRDbGFzcyA9ICIuYXBleGNoYXJ0cyIgKyB0LmNoYXJ0SUQsIHQuZG9tLmJhc2VFbCA9IHRoaXMuZWwsIHQuZG9tLmVsV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCBtLnNldEF0dHJzKHQuZG9tLmVsV3JhcCwgewogICAgICAgICAgICAgICAgICAgICAgICBpZDogdC5jaGFydENsYXNzLnN1YnN0cmluZygxKSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICJhcGV4Y2hhcnRzLWNhbnZhcyAiICsgdC5jaGFydENsYXNzLnN1YnN0cmluZygxKQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVsLmFwcGVuZENoaWxkKHQuZG9tLmVsV3JhcCksIHQuZG9tLlBhcGVyID0gbmV3IHdpbmRvdy5TVkcuRG9jKHQuZG9tLmVsV3JhcCksIHQuZG9tLlBhcGVyLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogImFwZXhjaGFydHMtc3ZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOmRhdGEiOiAiQXBleENoYXJ0c05TIiwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIuY29uY2F0KGUuY2hhcnQub2Zmc2V0WCwgIiwgIikuY29uY2F0KGUuY2hhcnQub2Zmc2V0WSwgIikiKQogICAgICAgICAgICAgICAgICAgIH0pLCB0LmRvbS5QYXBlci5ub2RlLnN0eWxlLmJhY2tncm91bmQgPSBlLmNoYXJ0LmJhY2tncm91bmQsIHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLCB0LmRvbS5lbEdyYXBoaWNhbCA9IHQuZG9tLlBhcGVyLmdyb3VwKCkuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1pbm5lciBhcGV4Y2hhcnRzLWdyYXBoaWNhbCIKICAgICAgICAgICAgICAgICAgICB9KSwgdC5kb20uZWxBbm5vdGF0aW9ucyA9IHQuZG9tLlBhcGVyLmdyb3VwKCkuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiYXBleGNoYXJ0cy1hbm5vdGF0aW9ucyIKICAgICAgICAgICAgICAgICAgICB9KSwgdC5kb20uZWxEZWZzID0gdC5kb20uUGFwZXIuZGVmcygpLCB0LmRvbS5lbExlZ2VuZFdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgdC5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoImFwZXhjaGFydHMtbGVnZW5kIiksIHQuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZFdyYXApLCB0LmRvbS5QYXBlci5hZGQodC5kb20uZWxHcmFwaGljYWwpLCB0LmRvbS5lbEdyYXBoaWNhbC5hZGQodC5kb20uZWxEZWZzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJwbG90Q2hhcnRUeXBlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkuZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWVzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaTogW10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSwgZykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdFtnXS50eXBlID8gKCJjb2x1bW4iID09PSB0W2ddLnR5cGUgfHwgImJhciIgPT09IHRbZ10udHlwZSA/IChzLnNlcmllcy5sZW5ndGggPiAxICYmIGEucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwgJiYgY29uc29sZS53YXJuKCJIb3Jpem9udGFsIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYSBtaXhlZC9jb21ibyBjaGFydC4gUGxlYXNlIHR1cm4gb2ZmIGBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbGAiKSwgaC5zZXJpZXMucHVzaChlKSwgaC5pLnB1c2goZyksIHUrKywgaS5nbG9iYWxzLmNvbHVtblNlcmllcyA9IGguc2VyaWVzKSA6ICJhcmVhIiA9PT0gdFtnXS50eXBlID8gKG8uc2VyaWVzLnB1c2goZSksIG8uaS5wdXNoKGcpLCB1KyspIDogImxpbmUiID09PSB0W2ddLnR5cGUgPyAoci5zZXJpZXMucHVzaChlKSwgci5pLnB1c2goZyksIHUrKykgOiAic2NhdHRlciIgPT09IHRbZ10udHlwZSA/IChuLnNlcmllcy5wdXNoKGUpLCBuLmkucHVzaChnKSkgOiAiYnViYmxlIiA9PT0gdFtnXS50eXBlID8gKGwuc2VyaWVzLnB1c2goZSksIGwuaS5wdXNoKGcpLCB1KyspIDogImNhbmRsZXN0aWNrIiA9PT0gdFtnXS50eXBlID8gKGMuc2VyaWVzLnB1c2goZSksIGMuaS5wdXNoKGcpLCB1KyspIDogImJveFBsb3QiID09PSB0W2ddLnR5cGUgPyAoZC5zZXJpZXMucHVzaChlKSwgZC5pLnB1c2goZyksIHUrKykgOiBjb25zb2xlLndhcm4oIllvdSBoYXZlIHNwZWNpZmllZCBhbiB1bnJlY29nbml6ZWQgY2hhcnQgdHlwZS4gQXZhaWxhYmxlIHR5cGVzIGZvciB0aGlzIHByb3BlcnR5IGFyZSBsaW5lL2FyZWEvY29sdW1uL2Jhci9zY2F0dGVyL2J1YmJsZSIpLCB1ID4gMSAmJiAocy5jb21ib0NoYXJ0cyA9ICEwKSkgOiAoci5zZXJpZXMucHVzaChlKSwgci5pLnB1c2goZykpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHZhciBnID0gbmV3IFR0KHRoaXMuY3R4LCBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG5ldyB3dCh0aGlzLmN0eCwgZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgucGllID0gbmV3IEN0KHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG5ldyBQdCh0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgucmFuZ2VCYXIgPSBuZXcgSCh0aGlzLmN0eCwgZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBuZXcgTHQodGhpcy5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICB4ID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuY29tYm9DaGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8uc2VyaWVzLmxlbmd0aCA+IDAgJiYgeC5wdXNoKGcuZHJhdyhvLnNlcmllcywgImFyZWEiLCBvLmkpKSwgaC5zZXJpZXMubGVuZ3RoID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy5jaGFydC5zdGFja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBuZXcgeXQodGhpcy5jdHgsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucHVzaChiLmRyYXcoaC5zZXJpZXMsIGguaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5jdHguYmFyID0gbmV3IEYodGhpcy5jdHgsIGUpLCB4LnB1c2godGhpcy5jdHguYmFyLmRyYXcoaC5zZXJpZXMsIGguaSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5zZXJpZXMubGVuZ3RoID4gMCAmJiB4LnB1c2goZy5kcmF3KHIuc2VyaWVzLCAibGluZSIsIHIuaSkpLCBjLnNlcmllcy5sZW5ndGggPiAwICYmIHgucHVzaCh1LmRyYXcoYy5zZXJpZXMsIGMuaSkpLCBkLnNlcmllcy5sZW5ndGggPiAwICYmIHgucHVzaCh1LmRyYXcoZC5zZXJpZXMsIGQuaSkpLCBuLnNlcmllcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IG5ldyBUdCh0aGlzLmN0eCwgZSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdXNoKHYuZHJhdyhuLnNlcmllcywgInNjYXR0ZXIiLCBuLmkpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLnNlcmllcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IG5ldyBUdCh0aGlzLmN0eCwgZSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdXNoKG0uZHJhdyhsLnNlcmllcywgImJ1YmJsZSIsIGwuaSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChhLmNoYXJ0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGluZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gZy5kcmF3KHMuc2VyaWVzLCAibGluZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGcuZHJhdyhzLnNlcmllcywgImFyZWEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJiYXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEuY2hhcnQuc3RhY2tlZCkgeCA9IG5ldyB5dCh0aGlzLmN0eCwgZSkuZHJhdyhzLnNlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuY3R4LmJhciA9IG5ldyBGKHRoaXMuY3R4LCBlKSwgeCA9IHRoaXMuY3R4LmJhci5kcmF3KHMuc2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjYW5kbGVzdGljayI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gbmV3IHd0KHRoaXMuY3R4LCBlKS5kcmF3KHMuc2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib3hQbG90IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBuZXcgd3QodGhpcy5jdHgsIGUpLmRyYXcocy5zZXJpZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJhbmdlQmFyIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0aGlzLmN0eC5yYW5nZUJhci5kcmF3KHMuc2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJoZWF0bWFwIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBuZXcgQXQodGhpcy5jdHgsIGUpLmRyYXcocy5zZXJpZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRyZWVtYXAiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IG5ldyBYdCh0aGlzLmN0eCwgZSkuZHJhdyhzLnNlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGllIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZG9udXQiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJwb2xhckFyZWEiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHRoaXMuY3R4LnBpZS5kcmF3KHMuc2VyaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyYWRpYWxCYXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGYuZHJhdyhzLnNlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicmFkYXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHAuZHJhdyhzLnNlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBnLmRyYXcocy5zZXJpZXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogInNldFNWR0RpbWVuc2lvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLncuY29uZmlnOwogICAgICAgICAgICAgICAgICAgIHQuc3ZnV2lkdGggPSBlLmNoYXJ0LndpZHRoLCB0LnN2Z0hlaWdodCA9IGUuY2hhcnQuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIHZhciBpID0geC5nZXREaW1lbnNpb25zKHRoaXMuZWwpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5jaGFydC53aWR0aC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgIiUiID09PSBhID8geC5pc051bWJlcihpWzBdKSAmJiAoMCA9PT0gaVswXS53aWR0aCAmJiAoaSA9IHguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSwgdC5zdmdXaWR0aCA9IGlbMF0gKiBwYXJzZUludChlLmNoYXJ0LndpZHRoLCAxMCkgLyAxMDApIDogInB4IiAhPT0gYSAmJiAiIiAhPT0gYSB8fCAodC5zdmdXaWR0aCA9IHBhcnNlSW50KGUuY2hhcnQud2lkdGgsIDEwKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlLmNoYXJ0LmhlaWdodC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJhdXRvIiAhPT0gdC5zdmdIZWlnaHQgJiYgIiIgIT09IHQuc3ZnSGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIiUiID09PSBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zdmdIZWlnaHQgPSByWzFdICogcGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsIDEwKSAvIDEwMAogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC5zdmdIZWlnaHQgPSBwYXJzZUludChlLmNoYXJ0LmhlaWdodCwgMTApOwogICAgICAgICAgICAgICAgICAgIGVsc2UgdC5heGlzQ2hhcnRzID8gdC5zdmdIZWlnaHQgPSB0LnN2Z1dpZHRoIC8gMS42MSA6IHQuc3ZnSGVpZ2h0ID0gdC5zdmdXaWR0aCAvIDEuMjsKICAgICAgICAgICAgICAgICAgICBpZiAodC5zdmdXaWR0aCA8IDAgJiYgKHQuc3ZnV2lkdGggPSAwKSwgdC5zdmdIZWlnaHQgPCAwICYmICh0LnN2Z0hlaWdodCA9IDApLCBtLnNldEF0dHJzKHQuZG9tLlBhcGVyLm5vZGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0LnN2Z1dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LnN2Z0hlaWdodAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgIiUiICE9PSBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCA/IDAgOiB0LmF4aXNDaGFydHMgPyBlLmNoYXJ0LnBhcmVudEhlaWdodE9mZnNldCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodCA9IHQuc3ZnSGVpZ2h0ICsgbyArICJweCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5kb20uZWxXcmFwLnN0eWxlLndpZHRoID0gdC5zdmdXaWR0aCArICJweCIsIHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQgPSB0LnN2Z0hlaWdodCArICJweCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAic2hpZnRHcmFwaFBvc2l0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudy5nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC50cmFuc2xhdGVZLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRlKCIgKyB0LnRyYW5zbGF0ZVggKyAiLCAiICsgZSArICIpIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG0uc2V0QXR0cnModC5kb20uZWxHcmFwaGljYWwubm9kZSwgaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVzaXplTm9uQXhpc0NoYXJ0cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0Lmdsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQgPyAxIDogMTU7CiAgICAgICAgICAgICAgICAgICAgYSArPSB0LmNvbmZpZy5ncmlkLnBhZGRpbmcuYm90dG9tLCAidG9wIiAhPT0gdC5jb25maWcubGVnZW5kLnBvc2l0aW9uICYmICJib3R0b20iICE9PSB0LmNvbmZpZy5sZWdlbmQucG9zaXRpb24gfHwgIXQuY29uZmlnLmxlZ2VuZC5zaG93IHx8IHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyB8fCAoaSA9IG5ldyBjdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCArIDEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLXJhZGlhbGJhciwgLmFwZXhjaGFydHMtcGllIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAyLjA1ICogdC5nbG9iYWxzLnJhZGlhbFNpemU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgJiYgIXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkICYmIDAgIT09IHQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0geC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qocyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBvLmJvdHRvbSAtIG8udG9wOwogICAgICAgICAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgoMi4wNSAqIHQuZ2xvYmFscy5yYWRpYWxTaXplLCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIgKyBlLnRyYW5zbGF0ZVkgKyBpICsgYTsKICAgICAgICAgICAgICAgICAgICBlLmRvbS5lbExlZ2VuZEZvcmVpZ24gJiYgZS5kb20uZWxMZWdlbmRGb3JlaWduLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgbCksIHQuY29uZmlnLmNoYXJ0LmhlaWdodCAmJiBTdHJpbmcodC5jb25maWcuY2hhcnQuaGVpZ2h0KS5pbmRleE9mKCIlIikgPiAwIHx8IChlLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0ID0gbCArICJweCIsIG0uc2V0QXR0cnMoZS5kb20uUGFwZXIubm9kZSwgewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGwKICAgICAgICAgICAgICAgICAgICB9KSwgZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0ID0gbCArICJweCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImNvcmVDYWxjdWxhdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG5ldyBaKHRoaXMuY3R4KS5pbml0KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAicmVzZXRHbG9iYWxzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IE8sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncuZ2xvYmFsczsKICAgICAgICAgICAgICAgICAgICBpLmluaXRHbG9iYWxWYXJzKGEpLCBhLnNlcmllc1h2YWx1ZXMgPSBlKCksIGEuc2VyaWVzWXZhbHVlcyA9IGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc011bHRpcGxlWSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudy5jb25maWcueWF4aXMuY29uc3RydWN0b3IgPT09IEFycmF5ICYmIHRoaXMudy5jb25maWcueWF4aXMubGVuZ3RoID4gMSkgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyA9ICEwLCAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJ4eVNldHRpbmdzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZ2xvYmFscy5heGlzQ2hhcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYmFjayIgPT09IGUuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24pIG5ldyB0dCh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYmFjayIgPT09IGUuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24pIG5ldyB0dCh0aGlzLmN0eCkuZHJhd1lDcm9zc2hhaXJzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGF0ZXRpbWUiID09PSBlLmNvbmZpZy54YXhpcy50eXBlICYmIHZvaWQgMCA9PT0gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgudGltZVNjYWxlID0gbmV3IFl0KHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Zpbml0ZShlLmdsb2JhbHMubWluWCkgJiYgaXNGaW5pdGUoZS5nbG9iYWxzLm1heFgpICYmICFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsID8gaSA9IHRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWCwgZS5nbG9iYWxzLm1heFgpIDogZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCAmJiAoaSA9IHRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWSwgZS5nbG9iYWxzLm1heFkpKSwgdGhpcy5jdHgudGltZVNjYWxlLnJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0KGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB5KHRoaXMuY3R4KS5nZXRDYWxjdWxhdGVkUmF0aW9zKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAidXBkYXRlU291cmNlQ2hhcnQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC53Lmdsb2JhbHMuc2VsZWN0aW9uID0gdm9pZCAwLCB0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhheGlzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdC53Lmdsb2JhbHMubWluWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0LncuZ2xvYmFscy5tYXhYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgITEsICExKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzZXR1cEJydXNoSGFuZGxlciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy53OwogICAgICAgICAgICAgICAgICAgIGlmIChpLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRzIHx8IFtpLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdOwogICAgICAgICAgICAgICAgICAgICAgICBhLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gQXBleENoYXJ0cy5nZXRDaGFydEJ5SUQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLncuZ2xvYmFscy5icnVzaFNvdXJjZSA9IHQuY3R4LCAiZnVuY3Rpb24iICE9IHR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQgJiYgKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudXBkYXRlU291cmNlQ2hhcnQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAiZnVuY3Rpb24iICE9IHR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCAmJiAoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnVwZGF0ZVNvdXJjZUNoYXJ0KGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24gPSBmdW5jdGlvbih0LCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IEFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0geC5jbG9uZShpLmNvbmZpZy55YXhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkuY29uZmlnLmNoYXJ0LmJydXNoLmF1dG9TY2FsZVlheGlzICYmIDEgPT09IGEudy5nbG9iYWxzLnNlcmllcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuZXcgcShhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8uYXV0b1NjYWxlWShhLCByLCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGEudy5jb25maWcueWF4aXMucmVkdWNlKChmdW5jdGlvbih0LCBpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQodSh0KSwgW2UoZSh7fSwgYS53LmNvbmZpZy55YXhpc1tzXSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IHJbMF0ubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiByWzBdLm1heAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFtdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogcy54YXhpcy5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHMueGF4aXMubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlheGlzOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgITEsICExLCAhMSwgITEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCB0CiAgICAgICAgfSgpLAogICAgICAgIFJ0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5jdHggPSBlLCB0aGlzLncgPSBlLncKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcih0LCBbewogICAgICAgICAgICAgICAga2V5OiAiX3VwZGF0ZU9wdGlvbnMiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiBhcmd1bWVudHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdKSB8fCBhcmd1bWVudHNbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdKSB8fCBhcmd1bWVudHNbM10sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s0XSAmJiBhcmd1bWVudHNbNF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gW2UuY3R4XTsKICAgICAgICAgICAgICAgICAgICAgICAgciAmJiAobCA9IGUuY3R4LmdldFN5bmNlZENoYXJ0cygpKSwgZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZCAmJiAobCA9IFtlLmN0eF0sIGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQgPSAhMSksIGwuZm9yRWFjaCgoZnVuY3Rpb24ociwgaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSByLnc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5nbG9iYWxzLnNob3VsZEFuaW1hdGUgPSBzLCBhIHx8IChjLmdsb2JhbHMucmVzaXplZCA9ICEwLCBjLmdsb2JhbHMuZGF0YUNoYW5nZWQgPSAhMCwgcyAmJiByLnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCkpLCB0ICYmICJvYmplY3QiID09PSBpKHQpICYmIChyLmNvbmZpZyA9IG5ldyBOKHQpLCB0ID0geS5leHRlbmRBcnJheVByb3BzKHIuY29uZmlnLCB0LCBjKSwgci53Lmdsb2JhbHMuY2hhcnRJRCAhPT0gZS5jdHgudy5nbG9iYWxzLmNoYXJ0SUQgJiYgZGVsZXRlIHQuc2VyaWVzLCBjLmNvbmZpZyA9IHguZXh0ZW5kKGMuY29uZmlnLCB0KSwgbyAmJiAoYy5nbG9iYWxzLmxhc3RYQXhpcyA9IHQueGF4aXMgPyB4LmNsb25lKHQueGF4aXMpIDogW10sIGMuZ2xvYmFscy5sYXN0WUF4aXMgPSB0LnlheGlzID8geC5jbG9uZSh0LnlheGlzKSA6IFtdLCBjLmdsb2JhbHMuaW5pdGlhbENvbmZpZyA9IHguZXh0ZW5kKHt9LCBjLmNvbmZpZyksIGMuZ2xvYmFscy5pbml0aWFsU2VyaWVzID0geC5jbG9uZShjLmNvbmZpZy5zZXJpZXMpLCB0LnNlcmllcykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9IGMuY29uZmlnLnNlcmllc1tjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc1tkXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZF0uZGF0YSA9IGMuZ2xvYmFscy5heGlzQ2hhcnRzID8gZy5kYXRhLnNsaWNlKCkgOiBnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHUgPSAwOyB1IDwgYy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoOyB1KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYgPSBjLmNvbmZpZy5zZXJpZXNbYy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXNbdV1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW3VdLmRhdGEgPSBjLmdsb2JhbHMuYXhpc0NoYXJ0cyA/IGYuZGF0YS5zbGljZSgpIDogZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhjLmNvbmZpZy5zZXJpZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci51cGRhdGUodCkudGhlbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9PT0gbC5sZW5ndGggLSAxICYmIG4ocikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiX3VwZGF0ZVNlcmllcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdICYmIGFyZ3VtZW50c1syXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBpLnc7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSA9IGUsIG8uZ2xvYmFscy5kYXRhQ2hhbmdlZCA9ICEwLCBlICYmIGkuY3R4LnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCksIG8uZ2xvYmFscy5heGlzQ2hhcnRzID8gKDAgPT09IChyID0gdC5tYXAoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLl9leHRlbmRTZXJpZXModCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKS5sZW5ndGggJiYgKHIgPSBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogW10KICAgICAgICAgICAgICAgICAgICAgICAgfV0pLCBvLmNvbmZpZy5zZXJpZXMgPSByKSA6IG8uY29uZmlnLnNlcmllcyA9IHQuc2xpY2UoKSwgYSAmJiAoby5nbG9iYWxzLmluaXRpYWxTZXJpZXMgPSB4LmNsb25lKG8uY29uZmlnLnNlcmllcykpLCBpLmN0eC51cGRhdGUoKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMoaS5jdHgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJfZXh0ZW5kU2VyaWVzIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmNvbmZpZy5zZXJpZXNbaV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoZSh7fSwgYS5jb25maWcuc2VyaWVzW2ldKSwge30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdC5uYW1lID8gdC5uYW1lIDogcyAmJiBzLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0LmNvbG9yID8gdC5jb2xvciA6IHMgJiYgcy5jb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdC50eXBlID8gdC50eXBlIDogcyAmJiBzLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHQuZGF0YSA/IHQuZGF0YSA6IHMgJiYgcy5kYXRhCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLncsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFw6cmVhbEluZGV4PSciLmNvbmNhdCh0LCAiJ10iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHMgPyBhID0gaS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoIiIuY29uY2F0KHMsICIgcGF0aFtqPSciKS5jb25jYXQoZSwgIiddLCAiKS5jb25jYXQocywgIiBjaXJjbGVbaj0nIikuY29uY2F0KGUsICInXSwgIikuY29uY2F0KHMsICIgcmVjdFtqPSciKS5jb25jYXQoZSwgIiddIikpLm1lbWJlcnNbMF0gOiB2b2lkIDAgPT09IGUgJiYgKGEgPSBpLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdCgiIi5jb25jYXQocywgIiBwYXRoW2o9JyIpLmNvbmNhdCh0LCAiJ10iKSkubWVtYmVyc1swXSwgInBpZSIgIT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgJiYgInBvbGFyQXJlYSIgIT09IGkuY29uZmlnLmNoYXJ0LnR5cGUgJiYgImRvbnV0IiAhPT0gaS5jb25maWcuY2hhcnQudHlwZSB8fCB0aGlzLmN0eC5waWUucGllQ2xpY2tlZCh0KSksIGEgPyAobmV3IG0odGhpcy5jdHgpLnBhdGhNb3VzZURvd24oYSwgbnVsbCksIGEubm9kZSA/IGEubm9kZSA6IG51bGwpIDogKGNvbnNvbGUud2FybigidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uOiBFbGVtZW50IG5vdCBmb3VuZCIpLCBudWxsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJmb3JjZVhBeGlzVXBkYXRlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICAgICAgaWYgKFsibWluIiwgIm1heCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdC54YXhpc1tpXSAmJiAoZS5jb25maWcueGF4aXNbaV0gPSB0LnhheGlzW2ldLCBlLmdsb2JhbHMubGFzdFhBeGlzW2ldID0gdC54YXhpc1tpXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0LnhheGlzLmNhdGVnb3JpZXMgJiYgdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCAmJiAoZS5jb25maWcueGF4aXMuY2F0ZWdvcmllcyA9IHQueGF4aXMuY2F0ZWdvcmllcyksIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5ldyBEKHQpOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gaS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXModCwgdGhpcy5jdHgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImZvcmNlWUF4aXNVcGRhdGUiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5jb25maWcuY2hhcnQuc3RhY2tlZCAmJiAiMTAwJSIgPT09IGUuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZSAmJiAoQXJyYXkuaXNBcnJheSh0LnlheGlzKSA/IHQueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnlheGlzW2ldLm1pbiA9IDAsIHQueWF4aXNbaV0ubWF4ID0gMTAwCiAgICAgICAgICAgICAgICAgICAgfSkpIDogKHQueWF4aXMubWluID0gMCwgdC55YXhpcy5tYXggPSAxMDApKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJyZXZlcnREZWZhdWx0QXhpc01pbk1heCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuZ2xvYmFscy5sYXN0WEF4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmdsb2JhbHMubGFzdFlBeGlzOwogICAgICAgICAgICAgICAgICAgIHQgJiYgdC54YXhpcyAmJiAoYSA9IHQueGF4aXMpLCB0ICYmIHQueWF4aXMgJiYgKHMgPSB0LnlheGlzKSwgaS5jb25maWcueGF4aXMubWluID0gYS5taW4sIGkuY29uZmlnLnhheGlzLm1heCA9IGEubWF4OwogICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHNbdF0gJiYgKGkuY29uZmlnLnlheGlzW3RdLm1pbiA9IHNbdF0ubWluLCBpLmNvbmZpZy55YXhpc1t0XS5tYXggPSBzW3RdLm1heCkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmdsb2JhbHMuem9vbWVkIHx8IHZvaWQgMCAhPT0gc1thXSA/IHIoYSkgOiB2b2lkIDAgIT09IGUuY3R4Lm9wdHMueWF4aXNbYV0gJiYgKHQubWluID0gZS5jdHgub3B0cy55YXhpc1thXS5taW4sIHQubWF4ID0gZS5jdHgub3B0cy55YXhpc1thXS5tYXgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgdAogICAgICAgIH0oKTsKICAgIEl0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHZvaWQgMCwgenQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgIHZhciBhID0gKHZvaWQgMCAhPT0gdGhpcyA/IHRoaXMgOiB0KS5TVkcgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBpZiAoYS5zdXBwb3J0ZWQpIHJldHVybiB0ID0gbmV3IGEuRG9jKHQpLCBhLnBhcnNlci5kcmF3IHx8IGEucHJlcGFyZSgpLCB0CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmIChhLm5zID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgYS54bWxucyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsIGEueGxpbmsgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsIGEuc3ZnanMgPSAiaHR0cDovL3N2Z2pzLmRldiIsIGEuc3VwcG9ydGVkID0gITAsICFhLnN1cHBvcnRlZCkgcmV0dXJuICExOwogICAgICAgICAgICBhLmRpZCA9IDFlMywgYS5laWQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIlN2Z2pzIiArIGQodCkgKyBhLmRpZCsrCiAgICAgICAgICAgIH0sIGEuY3JlYXRlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBlLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLCB0KTsKICAgICAgICAgICAgICAgIHJldHVybiBpLnNldEF0dHJpYnV0ZSgiaWQiLCB0aGlzLmVpZCh0KSksIGkKICAgICAgICAgICAgfSwgYS5leHRlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBlOwogICAgICAgICAgICAgICAgZSA9ICh0ID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICAgICAgICAgIGlmICh0W2ldKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIGUpIHRbaV0ucHJvdG90eXBlW3NdID0gZVtzXTsKICAgICAgICAgICAgICAgIGEuU2V0ICYmIGEuU2V0LmluaGVyaXQgJiYgYS5TZXQuaW5oZXJpdCgpCiAgICAgICAgICAgIH0sIGEuaW52ZW50ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmNyZWF0ZSA/IHQuY3JlYXRlIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIGEuY3JlYXRlKHQuY3JlYXRlKSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gdC5pbmhlcml0ICYmIChlLnByb3RvdHlwZSA9IG5ldyB0LmluaGVyaXQpLCB0LmV4dGVuZCAmJiBhLmV4dGVuZChlLCB0LmV4dGVuZCksIHQuY29uc3RydWN0ICYmIGEuZXh0ZW5kKHQucGFyZW50IHx8IGEuQ29udGFpbmVyLCB0LmNvbnN0cnVjdCksIGUKICAgICAgICAgICAgfSwgYS5hZG9wdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlID8gZS5pbnN0YW5jZSA/IGUuaW5zdGFuY2UgOiAoKGkgPSAic3ZnIiA9PSBlLm5vZGVOYW1lID8gZS5wYXJlbnROb2RlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50ID8gbmV3IGEuTmVzdGVkIDogbmV3IGEuRG9jIDogImxpbmVhckdyYWRpZW50IiA9PSBlLm5vZGVOYW1lID8gbmV3IGEuR3JhZGllbnQoImxpbmVhciIpIDogInJhZGlhbEdyYWRpZW50IiA9PSBlLm5vZGVOYW1lID8gbmV3IGEuR3JhZGllbnQoInJhZGlhbCIpIDogYVtkKGUubm9kZU5hbWUpXSA/IG5ldyhhW2QoZS5ub2RlTmFtZSldKSA6IG5ldyBhLkVsZW1lbnQoZSkpLnR5cGUgPSBlLm5vZGVOYW1lLCBpLm5vZGUgPSBlLCBlLmluc3RhbmNlID0gaSwgaSBpbnN0YW5jZW9mIGEuRG9jICYmIGkubmFtZXNwYWNlKCkuZGVmcygpLCBpLnNldERhdGEoSlNPTi5wYXJzZShlLmdldEF0dHJpYnV0ZSgic3ZnanM6ZGF0YSIpKSB8fCB7fSksIGkpIDogbnVsbDsKICAgICAgICAgICAgICAgIHZhciBpCiAgICAgICAgICAgIH0sIGEucHJlcGFyZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sCiAgICAgICAgICAgICAgICAgICAgaSA9ICh0ID8gbmV3IGEuRG9jKHQpIDogYS5hZG9wdChlLmRvY3VtZW50RWxlbWVudCkubmVzdGVkKCkpLnNpemUoMiwgMCk7CiAgICAgICAgICAgICAgICBhLnBhcnNlciA9IHsKICAgICAgICAgICAgICAgICAgICBib2R5OiB0IHx8IGUuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGkuc3R5bGUoIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW4iKS5ub2RlLAogICAgICAgICAgICAgICAgICAgIHBvbHk6IGkucG9seWxpbmUoKS5ub2RlLAogICAgICAgICAgICAgICAgICAgIHBhdGg6IGkucGF0aCgpLm5vZGUsCiAgICAgICAgICAgICAgICAgICAgbmF0aXZlOiBhLmNyZWF0ZSgic3ZnIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgYS5wYXJzZXIgPSB7CiAgICAgICAgICAgICAgICBuYXRpdmU6IGEuY3JlYXRlKCJzdmciKQogICAgICAgICAgICB9LCBlLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhLnBhcnNlci5kcmF3IHx8IGEucHJlcGFyZSgpCiAgICAgICAgICAgIH0pLCAhMSksIGEucmVnZXggPSB7CiAgICAgICAgICAgICAgICBudW1iZXJBbmRVbml0OiAvXihbKy1dPyhcZCsoXC5cZCopP3xcLlxkKykoZVsrLV0/XGQrKT8pKFthLXolXSopJC9pLAogICAgICAgICAgICAgICAgaGV4OiAvXiM/KFthLWZcZF17Mn0pKFthLWZcZF17Mn0pKFthLWZcZF17Mn0pJC9pLAogICAgICAgICAgICAgICAgcmdiOiAvcmdiXCgoXGQrKSwoXGQrKSwoXGQrKVwpLywKICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogLyMoW2EtejAtOVwtX10rKS9pLAogICAgICAgICAgICAgICAgdHJhbnNmb3JtczogL1wpXHMqLD9ccyovLAogICAgICAgICAgICAgICAgd2hpdGVzcGFjZTogL1xzL2csCiAgICAgICAgICAgICAgICBpc0hleDogL14jW2EtZjAtOV17Myw2fSQvaSwKICAgICAgICAgICAgICAgIGlzUmdiOiAvXnJnYlwoLywKICAgICAgICAgICAgICAgIGlzQ3NzOiAvW146XSs6W147XSs7Py8sCiAgICAgICAgICAgICAgICBpc0JsYW5rOiAvXihccyspPyQvLAogICAgICAgICAgICAgICAgaXNOdW1iZXI6IC9eWystXT8oXGQrKFwuXGQqKT98XC5cZCspKGVbKy1dP1xkKyk/JC9pLAogICAgICAgICAgICAgICAgaXNQZXJjZW50OiAvXi0/W1xkXC5dKyUkLywKICAgICAgICAgICAgICAgIGlzSW1hZ2U6IC9cLihqcGd8anBlZ3xwbmd8Z2lmfHN2ZykoXD9bXj1dKy4qKT8vaSwKICAgICAgICAgICAgICAgIGRlbGltaXRlcjogL1tccyxdKy8sCiAgICAgICAgICAgICAgICBoeXBoZW46IC8oW15lXSlcLS9naSwKICAgICAgICAgICAgICAgIHBhdGhMZXR0ZXJzOiAvW01MSFZDU1FUQVpdL2dpLAogICAgICAgICAgICAgICAgaXNQYXRoTGV0dGVyOiAvW01MSFZDU1FUQVpdL2ksCiAgICAgICAgICAgICAgICBudW1iZXJzV2l0aERvdHM6IC8oKFxkP1wuXGQrKD86ZVsrLV0/XGQrKT8pKCg/OlwuXGQrKD86ZVsrLV0/XGQrKT8pKykpKy9naSwKICAgICAgICAgICAgICAgIGRvdHM6IC9cLi9nCiAgICAgICAgICAgIH0sIGEudXRpbHMgPSB7CiAgICAgICAgICAgICAgICBtYXA6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gdC5sZW5ndGgsIGEgPSBbXSwgcyA9IDA7IHMgPCBpOyBzKyspIGEucHVzaChlKHRbc10pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0Lmxlbmd0aCwgYSA9IFtdLCBzID0gMDsgcyA8IGk7IHMrKykgZSh0W3NdKSAmJiBhLnB1c2godFtzXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaWx0ZXJTVkdFbGVtZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudAogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBhLmRlZmF1bHRzID0gewogICAgICAgICAgICAgICAgYXR0cnM6IHsKICAgICAgICAgICAgICAgICAgICAiZmlsbC1vcGFjaXR5IjogMSwKICAgICAgICAgICAgICAgICAgICAic3Ryb2tlLW9wYWNpdHkiOiAxLAogICAgICAgICAgICAgICAgICAgICJzdHJva2Utd2lkdGgiOiAwLAogICAgICAgICAgICAgICAgICAgICJzdHJva2UtbGluZWpvaW4iOiAibWl0ZXIiLAogICAgICAgICAgICAgICAgICAgICJzdHJva2UtbGluZWNhcCI6ICJidXR0IiwKICAgICAgICAgICAgICAgICAgICBmaWxsOiAiIzAwMDAwMCIsCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAiIzAwMDAwMCIsCiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgIHk6IDAsCiAgICAgICAgICAgICAgICAgICAgY3g6IDAsCiAgICAgICAgICAgICAgICAgICAgY3k6IDAsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgIHI6IDAsCiAgICAgICAgICAgICAgICAgICAgcng6IDAsCiAgICAgICAgICAgICAgICAgICAgcnk6IDAsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgICJzdG9wLW9wYWNpdHkiOiAxLAogICAgICAgICAgICAgICAgICAgICJzdG9wLWNvbG9yIjogIiMwMDAwMDAiLAogICAgICAgICAgICAgICAgICAgICJmb250LXNpemUiOiAxNiwKICAgICAgICAgICAgICAgICAgICAiZm9udC1mYW1pbHkiOiAiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIsCiAgICAgICAgICAgICAgICAgICAgInRleHQtYW5jaG9yIjogInN0YXJ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBhLkNvbG9yID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHM7CiAgICAgICAgICAgICAgICB0aGlzLnIgPSAwLCB0aGlzLmcgPSAwLCB0aGlzLmIgPSAwLCB0ICYmICgic3RyaW5nIiA9PSB0eXBlb2YgdCA/IGEucmVnZXguaXNSZ2IudGVzdCh0KSA/IChlID0gYS5yZWdleC5yZ2IuZXhlYyh0LnJlcGxhY2UoYS5yZWdleC53aGl0ZXNwYWNlLCAiIikpLCB0aGlzLnIgPSBwYXJzZUludChlWzFdKSwgdGhpcy5nID0gcGFyc2VJbnQoZVsyXSksIHRoaXMuYiA9IHBhcnNlSW50KGVbM10pKSA6IGEucmVnZXguaXNIZXgudGVzdCh0KSAmJiAoZSA9IGEucmVnZXguaGV4LmV4ZWMoNCA9PSAocyA9IHQpLmxlbmd0aCA/IFsiIyIsIHMuc3Vic3RyaW5nKDEsIDIpLCBzLnN1YnN0cmluZygxLCAyKSwgcy5zdWJzdHJpbmcoMiwgMyksIHMuc3Vic3RyaW5nKDIsIDMpLCBzLnN1YnN0cmluZygzLCA0KSwgcy5zdWJzdHJpbmcoMywgNCldLmpvaW4oIiIpIDogcyksIHRoaXMuciA9IHBhcnNlSW50KGVbMV0sIDE2KSwgdGhpcy5nID0gcGFyc2VJbnQoZVsyXSwgMTYpLCB0aGlzLmIgPSBwYXJzZUludChlWzNdLCAxNikpIDogIm9iamVjdCIgPT09IGkodCkgJiYgKHRoaXMuciA9IHQuciwgdGhpcy5nID0gdC5nLCB0aGlzLmIgPSB0LmIpKQogICAgICAgICAgICB9LCBhLmV4dGVuZChhLkNvbG9yLCB7CiAgICAgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9IZXgoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvSGV4OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiMiICsgZyh0aGlzLnIpICsgZyh0aGlzLmcpICsgZyh0aGlzLmIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9SZ2I6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAicmdiKCIgKyBbdGhpcy5yLCB0aGlzLmcsIHRoaXMuYl0uam9pbigpICsgIikiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYnJpZ2h0bmVzczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuciAvIDI1NSAqIC4zICsgdGhpcy5nIC8gMjU1ICogLjU5ICsgdGhpcy5iIC8gMjU1ICogLjExCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW9ycGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXN0aW5hdGlvbiA9IG5ldyBhLkNvbG9yKHQpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXN0aW5hdGlvbiA/ICh0ID0gdCA8IDAgPyAwIDogdCA+IDEgPyAxIDogdCwgbmV3IGEuQ29sb3IoewogICAgICAgICAgICAgICAgICAgICAgICByOiB+fih0aGlzLnIgKyAodGhpcy5kZXN0aW5hdGlvbi5yIC0gdGhpcy5yKSAqIHQpLAogICAgICAgICAgICAgICAgICAgICAgICBnOiB+fih0aGlzLmcgKyAodGhpcy5kZXN0aW5hdGlvbi5nIC0gdGhpcy5nKSAqIHQpLAogICAgICAgICAgICAgICAgICAgICAgICBiOiB+fih0aGlzLmIgKyAodGhpcy5kZXN0aW5hdGlvbi5iIC0gdGhpcy5iKSAqIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpIDogdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5Db2xvci50ZXN0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgKz0gIiIsIGEucmVnZXguaXNIZXgudGVzdCh0KSB8fCBhLnJlZ2V4LmlzUmdiLnRlc3QodCkKICAgICAgICAgICAgfSwgYS5Db2xvci5pc1JnYiA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ICYmICJudW1iZXIiID09IHR5cGVvZiB0LnIgJiYgIm51bWJlciIgPT0gdHlwZW9mIHQuZyAmJiAibnVtYmVyIiA9PSB0eXBlb2YgdC5iCiAgICAgICAgICAgIH0sIGEuQ29sb3IuaXNDb2xvciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLkNvbG9yLmlzUmdiKHQpIHx8IGEuQ29sb3IudGVzdCh0KQogICAgICAgICAgICB9LCBhLkFycmF5ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgMCA9PSAodCA9ICh0IHx8IFtdKS52YWx1ZU9mKCkpLmxlbmd0aCAmJiBlICYmICh0ID0gZS52YWx1ZU9mKCkpLCB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZSh0KQogICAgICAgICAgICB9LCBhLmV4dGVuZChhLkFycmF5LCB7CiAgICAgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuam9pbigiICIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC52YWx1ZU9mKCksIEFycmF5LmlzQXJyYXkodCkgPyB0IDogdGhpcy5zcGxpdCh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5Qb2ludEFycmF5ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgYS5BcnJheS5jYWxsKHRoaXMsIHQsIGUgfHwgWwogICAgICAgICAgICAgICAgICAgIFswLCAwXQogICAgICAgICAgICAgICAgXSkKICAgICAgICAgICAgfSwgYS5Qb2ludEFycmF5LnByb3RvdHlwZSA9IG5ldyBhLkFycmF5LCBhLlBvaW50QXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gYS5Qb2ludEFycmF5OwogICAgICAgICAgICBmb3IgKHZhciBzID0gewogICAgICAgICAgICAgICAgICAgIE06IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUueCA9IGkueCA9IHRbMF0sIGUueSA9IGkueSA9IHRbMV0sIFsiTSIsIGUueCwgZS55XQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgTDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS54ID0gdFswXSwgZS55ID0gdFsxXSwgWyJMIiwgdFswXSwgdFsxXV0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIEg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUueCA9IHRbMF0sIFsiSCIsIHRbMF1dCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBWOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnkgPSB0WzBdLCBbIlYiLCB0WzBdXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQzogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS54ID0gdFs0XSwgZS55ID0gdFs1XSwgWyJDIiwgdFswXSwgdFsxXSwgdFsyXSwgdFszXSwgdFs0XSwgdFs1XV0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFE6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUueCA9IHRbMl0sIGUueSA9IHRbM10sIFsiUSIsIHRbMF0sIHRbMV0sIHRbMl0sIHRbM11dCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBaOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnggPSBpLngsIGUueSA9IGkueSwgWyJaIl0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCByID0gIm1saHZxdGNzYXoiLnNwbGl0KCIiKSwgbyA9IDAsIG4gPSByLmxlbmd0aDsgbyA8IG47ICsrbykgc1tyW29dXSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJIIiA9PSB0KSBlWzBdID0gZVswXSArIGkueDsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiViIgPT0gdCkgZVswXSA9IGVbMF0gKyBpLnk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIkEiID09IHQpIGVbNV0gPSBlWzVdICsgaS54LCBlWzZdID0gZVs2XSArIGkueTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwLCBvID0gZS5sZW5ndGg7IHIgPCBvOyArK3IpIGVbcl0gPSBlW3JdICsgKHIgJSAyID8gaS55IDogaS54KTsKICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBzW3RdKSByZXR1cm4gc1t0XShlLCBpLCBhKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KHJbb10udG9VcHBlckNhc2UoKSk7CiAgICAgICAgICAgIGEuUGF0aEFycmF5ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgYS5BcnJheS5jYWxsKHRoaXMsIHQsIGUgfHwgWwogICAgICAgICAgICAgICAgICAgIFsiTSIsIDAsIDBdCiAgICAgICAgICAgICAgICBdKQogICAgICAgICAgICB9LCBhLlBhdGhBcnJheS5wcm90b3R5cGUgPSBuZXcgYS5BcnJheSwgYS5QYXRoQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gYS5QYXRoQXJyYXksIGEuZXh0ZW5kKGEuUGF0aEFycmF5LCB7CiAgICAgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIGkgPSB0Lmxlbmd0aCwgYSA9ICIiOyBlIDwgaTsgZSsrKSBhICs9IHRbZV1bMF0sIG51bGwgIT0gdFtlXVsxXSAmJiAoYSArPSB0W2VdWzFdLCBudWxsICE9IHRbZV1bMl0gJiYgKGEgKz0gIiAiLCBhICs9IHRbZV1bMl0sIG51bGwgIT0gdFtlXVszXSAmJiAoYSArPSAiICIsIGEgKz0gdFtlXVszXSwgYSArPSAiICIsIGEgKz0gdFtlXVs0XSwgbnVsbCAhPSB0W2VdWzVdICYmIChhICs9ICIgIiwgYSArPSB0W2VdWzVdLCBhICs9ICIgIiwgYSArPSB0W2VdWzZdLCBudWxsICE9IHRbZV1bN10gJiYgKGEgKz0gIiAiLCBhICs9IHRbZV1bN10pKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyAiICIKICAgICAgICAgICAgICAgICAgICB9KHRoaXMudmFsdWUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5iYm94KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkueCwgaS55LCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVzdGluYXRpb24pIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLnZhbHVlLCBpID0gdGhpcy5kZXN0aW5hdGlvbi52YWx1ZSwgcyA9IFtdLCByID0gbmV3IGEuUGF0aEFycmF5LCBvID0gMCwgbiA9IGUubGVuZ3RoOyBvIDwgbjsgbysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNbb10gPSBbZVtvXVswXV07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAxLCBoID0gZVtvXS5sZW5ndGg7IGwgPCBoOyBsKyspIHNbb11bbF0gPSBlW29dW2xdICsgKGlbb11bbF0gLSBlW29dW2xdKSAqIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICJBIiA9PT0gc1tvXVswXSAmJiAoc1tvXVs0XSA9ICsoMCAhPSBzW29dWzRdKSwgc1tvXVs1XSA9ICsoMCAhPSBzW29dWzVdKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIudmFsdWUgPSBzLCByCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGEuUGF0aEFycmF5KSByZXR1cm4gdC52YWx1ZU9mKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE06IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIEw6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIEg6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFY6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIEM6IDYsCiAgICAgICAgICAgICAgICAgICAgICAgIFM6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIFE6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIFQ6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIEE6IDcsCiAgICAgICAgICAgICAgICAgICAgICAgIFo6IDAKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHQgPSAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IHQucmVwbGFjZShhLnJlZ2V4Lm51bWJlcnNXaXRoRG90cywgaCkucmVwbGFjZShhLnJlZ2V4LnBhdGhMZXR0ZXJzLCAiICQmICIpLnJlcGxhY2UoYS5yZWdleC5oeXBoZW4sICIkMSAtIikudHJpbSgpLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKSA6IHQucmVkdWNlKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQuY2FsbCh0LCBlKQogICAgICAgICAgICAgICAgICAgIH0pLCBbXSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG5ldyBhLlBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gbmV3IGEuUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBhLnJlZ2V4LmlzUGF0aExldHRlci50ZXN0KHRbbF0pID8gKGUgPSB0W2xdLCArK2wpIDogIk0iID09IGUgPyBlID0gIkwiIDogIm0iID09IGUgJiYgKGUgPSAibCIpLCByLnB1c2goc1tlXS5jYWxsKG51bGwsIHQuc2xpY2UobCwgbCArPSBpW2UudG9VcHBlckNhc2UoKV0pLm1hcChwYXJzZUZsb2F0KSwgbywgbikpCiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA+IGwpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmJveDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEucGFyc2VyLmRyYXcgfHwgYS5wcmVwYXJlKCksIGEucGFyc2VyLnBhdGguc2V0QXR0cmlidXRlKCJkIiwgdGhpcy50b1N0cmluZygpKSwgYS5wYXJzZXIucGF0aC5nZXRCQm94KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuTnVtYmVyID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IDAsIHRoaXMudW5pdCA9IGUgfHwgIiIsICJudW1iZXIiID09IHR5cGVvZiB0ID8gdGhpcy52YWx1ZSA9IGlzTmFOKHQpID8gMCA6IGlzRmluaXRlKHQpID8gdCA6IHQgPCAwID8gLTM0ZTM3IDogMzRlMzcgOiAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IChlID0gdC5tYXRjaChhLnJlZ2V4Lm51bWJlckFuZFVuaXQpKSAmJiAodGhpcy52YWx1ZSA9IHBhcnNlRmxvYXQoZVsxXSksICIlIiA9PSBlWzVdID8gdGhpcy52YWx1ZSAvPSAxMDAgOiAicyIgPT0gZVs1XSAmJiAodGhpcy52YWx1ZSAqPSAxZTMpLCB0aGlzLnVuaXQgPSBlWzVdKSA6IHQgaW5zdGFuY2VvZiBhLk51bWJlciAmJiAodGhpcy52YWx1ZSA9IHQudmFsdWVPZigpLCB0aGlzLnVuaXQgPSB0LnVuaXQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCIlIiA9PSB0aGlzLnVuaXQgPyB+figxZTggKiB0aGlzLnZhbHVlKSAvIDFlNiA6ICJzIiA9PSB0aGlzLnVuaXQgPyB0aGlzLnZhbHVlIC8gMWUzIDogdGhpcy52YWx1ZSkgKyB0aGlzLnVuaXQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGx1czogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IG5ldyBhLk51bWJlcih0KSwgbmV3IGEuTnVtYmVyKHRoaXMgKyB0LCB0aGlzLnVuaXQgfHwgdC51bml0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbWludXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBuZXcgYS5OdW1iZXIodCksIG5ldyBhLk51bWJlcih0aGlzIC0gdCwgdGhpcy51bml0IHx8IHQudW5pdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRpbWVzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gbmV3IGEuTnVtYmVyKHQpLCBuZXcgYS5OdW1iZXIodGhpcyAqIHQsIHRoaXMudW5pdCB8fCB0LnVuaXQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkaXZpZGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSBuZXcgYS5OdW1iZXIodCksIG5ldyBhLk51bWJlcih0aGlzIC8gdCwgdGhpcy51bml0IHx8IHQudW5pdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IGEuTnVtYmVyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgKGUudW5pdCA9IHQpLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtb3JwaDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXN0aW5hdGlvbiA9IG5ldyBhLk51bWJlcih0KSwgdC5yZWxhdGl2ZSAmJiAodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSArPSB0aGlzLnZhbHVlKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVzdGluYXRpb24gPyBuZXcgYS5OdW1iZXIodGhpcy5kZXN0aW5hdGlvbikubWludXModGhpcykudGltZXModCkucGx1cyh0aGlzKSA6IHRoaXMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkVsZW1lbnQgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHJva2UgPSBhLmRlZmF1bHRzLmF0dHJzLnN0cm9rZSwgdGhpcy5fZXZlbnQgPSBudWxsLCB0aGlzLmRvbSA9IHt9LCAodGhpcy5ub2RlID0gdCkgJiYgKHRoaXMudHlwZSA9IHQubm9kZU5hbWUsIHRoaXMubm9kZS5pbnN0YW5jZSA9IHRoaXMsIHRoaXMuX3N0cm9rZSA9IHQuZ2V0QXR0cmlidXRlKCJzdHJva2UiKSB8fCB0aGlzLl9zdHJva2UpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJ4IiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cigieSIsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy54KCkgKyB0aGlzLndpZHRoKCkgLyAyIDogdGhpcy54KHQgLSB0aGlzLndpZHRoKCkgLyAyKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY3k6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IHRoaXMueSgpICsgdGhpcy5oZWlnaHQoKSAvIDIgOiB0aGlzLnkodCAtIHRoaXMuaGVpZ2h0KCkgLyAyKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy54KHQpLnkoZSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNlbnRlcjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jeCh0KS5jeShlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cigid2lkdGgiLCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImhlaWdodCIsIHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdSh0aGlzLCB0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2lkdGgobmV3IGEuTnVtYmVyKGkud2lkdGgpKS5oZWlnaHQobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsb25lOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEYXRhVG9Eb20oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB4KHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPyB0LmFkZChlKSA6IHRoaXMuYWZ0ZXIoZSksIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpICYmIHRoaXMucGFyZW50KCkucmVtb3ZlRWxlbWVudCh0aGlzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSwgdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWRkVG86IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQucHV0KHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwdXRJbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5hZGQodGhpcykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGlkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImlkIiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZSgiZGlzcGxheSIsICIiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlKCJkaXNwbGF5IiwgIm5vbmUiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibm9uZSIgIT0gdGhpcy5zdHlsZSgiZGlzcGxheSIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImlkIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsYXNzZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuYXR0cigiY2xhc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IFtdIDogdC50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoYXNDbGFzczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgIT0gdGhpcy5jbGFzc2VzKCkuaW5kZXhPZih0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3M6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0NsYXNzKHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuY2xhc3NlcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKHQpLCB0aGlzLmF0dHIoImNsYXNzIiwgZS5qb2luKCIgIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc0NsYXNzKHQpICYmIHRoaXMuYXR0cigiY2xhc3MiLCB0aGlzLmNsYXNzZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICE9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmpvaW4oIiAiKSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc0NsYXNzKHQpID8gdGhpcy5yZW1vdmVDbGFzcyh0KSA6IHRoaXMuYWRkQ2xhc3ModCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXQodGhpcy5hdHRyKHQpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpLm5vZGUucGFyZW50Tm9kZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gYS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSksICFlKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgJiYgaS5ub2RlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50OykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlID8gaS5tYXRjaGVzKGUpIDogaSBpbnN0YW5jZW9mIGUpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpLm5vZGUucGFyZW50Tm9kZSB8fCAiI2RvY3VtZW50IiA9PSBpLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZG9jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRvYyA/IHRoaXMgOiB0aGlzLnBhcmVudChhLkRvYykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBhcmVudHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpID0gaS5wYXJlbnQodCkpIHx8ICFpLm5vZGUpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wdXNoKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGkucGFyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodC5tYXRjaGVzIHx8IHQubWF0Y2hlc1NlbGVjdG9yIHx8IHQubXNNYXRjaGVzU2VsZWN0b3IgfHwgdC5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgdC53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgdC5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcy5ub2RlLCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbmF0aXZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3ZnOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5jcmVhdGVFbGVtZW50KCJzdmciKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCAmJiB0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQpKSByZXR1cm4gaS5hcHBlbmRDaGlsZCh0ID0gZS5jcmVhdGVFbGVtZW50KCJzdmciKSksIHRoaXMud3JpdGVEYXRhVG9Eb20oKSwgdC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSksIGkuaW5uZXJIVE1MLnJlcGxhY2UoL148c3ZnPi8sICIiKS5yZXBsYWNlKC88XC9zdmc+JC8sICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5pbm5lckhUTUwgPSAiPHN2Zz4iICsgdC5yZXBsYWNlKC9cbi8sICIiKS5yZXBsYWNlKC88KFtcdzotXSspKFtePF0rPylcLz4vZywgIjwkMSQyPjwvJDE+IikgKyAiPC9zdmc+IjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IDAsIHIgPSBpLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7IHMgPCByOyBzKyspIHRoaXMubm9kZS5hcHBlbmRDaGlsZChpLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB3cml0ZURhdGFUb0RvbTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5lYWNoIHx8IHRoaXMubGluZXMpICYmICh0aGlzLmVhY2ggPyB0aGlzIDogdGhpcy5saW5lcygpKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEYXRhVG9Eb20oKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUoInN2Z2pzOmRhdGEiKSwgT2JqZWN0LmtleXModGhpcy5kb20pLmxlbmd0aCAmJiB0aGlzLm5vZGUuc2V0QXR0cmlidXRlKCJzdmdqczpkYXRhIiwgSlNPTi5zdHJpbmdpZnkodGhpcy5kb20pKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0RGF0YTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb20gPSB0LCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmVhc2luZyA9IHsKICAgICAgICAgICAgICAgICItIjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIjw+IjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtTWF0aC5jb3ModCAqIE1hdGguUEkpIC8gMiArIC41CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIj4iOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc2luKHQgKiBNYXRoLlBJIC8gMikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiPCI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAtIE1hdGguY29zKHQgKiBNYXRoLlBJIC8gMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgYS5tb3JwaCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhLk1vcnBoT2JqKGUsIGkpLmF0KHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIGEuU2l0dWF0aW9uID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gITEsIHRoaXMucmV2ZXJzZWQgPSAhMSwgdGhpcy5yZXZlcnNpbmcgPSAhMSwgdGhpcy5kdXJhdGlvbiA9IG5ldyBhLk51bWJlcih0LmR1cmF0aW9uKS52YWx1ZU9mKCksIHRoaXMuZGVsYXkgPSBuZXcgYS5OdW1iZXIodC5kZWxheSkudmFsdWVPZigpLCB0aGlzLnN0YXJ0ID0gK25ldyBEYXRlICsgdGhpcy5kZWxheSwgdGhpcy5maW5pc2ggPSB0aGlzLnN0YXJ0ICsgdGhpcy5kdXJhdGlvbiwgdGhpcy5lYXNlID0gdC5lYXNlLCB0aGlzLmxvb3AgPSAwLCB0aGlzLmxvb3BzID0gITEsIHRoaXMuYW5pbWF0aW9ucyA9IHt9LCB0aGlzLmF0dHJzID0ge30sIHRoaXMuc3R5bGVzID0ge30sIHRoaXMudHJhbnNmb3JtcyA9IFtdLCB0aGlzLm9uY2UgPSB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5GWCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHQsIHRoaXMuc2l0dWF0aW9ucyA9IFtdLCB0aGlzLmFjdGl2ZSA9ICExLCB0aGlzLnNpdHVhdGlvbiA9IG51bGwsIHRoaXMucGF1c2VkID0gITEsIHRoaXMubGFzdFBvcyA9IDAsIHRoaXMucG9zID0gMCwgdGhpcy5hYnNQb3MgPSAwLCB0aGlzLl9zcGVlZCA9IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBhbmltYXRlOiBmdW5jdGlvbih0LCBlLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiID09PSBpKHQpICYmIChlID0gdC5lYXNlLCBzID0gdC5kZWxheSwgdCA9IHQuZHVyYXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG5ldyBhLlNpdHVhdGlvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogdCB8fCAxZTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogcyB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogYS5lYXNpbmdbZSB8fCAiLSJdIHx8IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnF1ZXVlKHIpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdCBpbnN0YW5jZW9mIGEuRWxlbWVudCA/ICh0aGlzLl90YXJnZXQgPSB0LCB0aGlzKSA6IHRoaXMuX3RhcmdldAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGltZVRvQWJzUG9zOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodCAtIHRoaXMuc2l0dWF0aW9uLnN0YXJ0KSAvICh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbiAvIHRoaXMuX3NwZWVkKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWJzUG9zVG9UaW1lOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbiAvIHRoaXMuX3NwZWVkICogdCArIHRoaXMuc2l0dWF0aW9uLnN0YXJ0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGFydEFuaW1GcmFtZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEFuaW1GcmFtZSgpLCB0aGlzLmFuaW1hdGlvbkZyYW1lID0gdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXAoKQogICAgICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdG9wQW5pbUZyYW1lOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuYWN0aXZlICYmIHRoaXMuc2l0dWF0aW9uICYmICh0aGlzLmFjdGl2ZSA9ICEwLCB0aGlzLnN0YXJ0Q3VycmVudCgpKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhcnRDdXJyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0ID0gK25ldyBEYXRlICsgdGhpcy5zaXR1YXRpb24uZGVsYXkgLyB0aGlzLl9zcGVlZCwgdGhpcy5zaXR1YXRpb24uZmluaXNoID0gdGhpcy5zaXR1YXRpb24uc3RhcnQgKyB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbiAvIHRoaXMuX3NwZWVkLCB0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBxdWV1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHQgfHwgdCBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uKSAmJiB0aGlzLnNpdHVhdGlvbnMucHVzaCh0KSwgdGhpcy5zaXR1YXRpb24gfHwgKHRoaXMuc2l0dWF0aW9uID0gdGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcCgpLCB0aGlzLnNpdHVhdGlvbiA9IHRoaXMuc2l0dWF0aW9ucy5zaGlmdCgpLCB0aGlzLnNpdHVhdGlvbiAmJiAodGhpcy5zaXR1YXRpb24gaW5zdGFuY2VvZiBhLlNpdHVhdGlvbiA/IHRoaXMuc3RhcnQoKSA6IHRoaXMuc2l0dWF0aW9uLmNhbGwodGhpcykpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbml0QW5pbWF0aW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0LCBlID0gdGhpcy5zaXR1YXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmluaXQpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGUuYW5pbWF0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMudGFyZ2V0KClbaV0oKSwgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSksIEFycmF5LmlzQXJyYXkoZS5hbmltYXRpb25zW2ldKSB8fCAoZS5hbmltYXRpb25zW2ldID0gW2UuYW5pbWF0aW9uc1tpXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IHQubGVuZ3RoOyBzLS07KSBlLmFuaW1hdGlvbnNbaV1bc10gaW5zdGFuY2VvZiBhLk51bWJlciAmJiAodFtzXSA9IG5ldyBhLk51bWJlcih0W3NdKSksIGUuYW5pbWF0aW9uc1tpXVtzXSA9IHRbc10ubW9ycGgoZS5hbmltYXRpb25zW2ldW3NdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gZS5hdHRycykgZS5hdHRyc1tpXSA9IG5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuYXR0cihpKSwgZS5hdHRyc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gZS5zdHlsZXMpIGUuc3R5bGVzW2ldID0gbmV3IGEuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZShpKSwgZS5zdHlsZXNbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5pbml0aWFsVHJhbnNmb3JtYXRpb24gPSB0aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLCBlLmluaXQgPSAhMCwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNpdHVhdGlvbnMgPSBbXSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l0dWF0aW9uID0gbnVsbCwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuYWN0aXZlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmUgPSAhMSwgZSAmJiB0aGlzLmNsZWFyUXVldWUoKSwgdCAmJiB0aGlzLnNpdHVhdGlvbiAmJiAoIWkgJiYgdGhpcy5zdGFydEN1cnJlbnQoKSwgdGhpcy5hdEVuZCgpKSwgdGhpcy5zdG9wQW5pbUZyYW1lKCksIHRoaXMuY2xlYXJDdXJyZW50KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFmdGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldCgpLm9uKCJmaW5pc2hlZC5meCIsIChmdW5jdGlvbiBpKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGV0YWlsLnNpdHVhdGlvbiA9PSBlICYmICh0LmNhbGwodGhpcywgZSksIHRoaXMub2ZmKCJmaW5pc2hlZC5meCIsIGkpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuX2NhbGxTdGFydCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkdXJpbmc6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmxhc3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5kZXRhaWwuc2l0dWF0aW9uID09IGUgJiYgdC5jYWxsKHRoaXMsIGkuZGV0YWlsLnBvcywgYS5tb3JwaChpLmRldGFpbC5wb3MpLCBpLmRldGFpbC5lYXNlZCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldCgpLm9mZigiZHVyaW5nLmZ4IiwgaSkub24oImR1cmluZy5meCIsIGkpLCB0aGlzLmFmdGVyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2ZmKCJkdXJpbmcuZngiLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuX2NhbGxTdGFydCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlckFsbDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIGUoaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5jYWxsKHRoaXMpLCB0aGlzLm9mZigiYWxsZmluaXNoZWQuZngiLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoImFsbGZpbmlzaGVkLmZ4IiwgZSkub24oImFsbGZpbmlzaGVkLmZ4IiwgZSksIHRoaXMuX2NhbGxTdGFydCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsYXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGggPyB0aGlzLnNpdHVhdGlvbnNbdGhpcy5zaXR1YXRpb25zLmxlbmd0aCAtIDFdIDogdGhpcy5zaXR1YXRpb24KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXN0KClbaSB8fCAiYW5pbWF0aW9ucyJdW3RdID0gZSwgdGhpcy5fY2FsbFN0YXJ0KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN0ZXA6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIGksIGE7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgfHwgKHRoaXMuYWJzUG9zID0gdGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksICExICE9PSB0aGlzLnNpdHVhdGlvbi5sb29wcyA/IChlID0gTWF0aC5tYXgodGhpcy5hYnNQb3MsIDApLCBpID0gTWF0aC5mbG9vcihlKSwgITAgPT09IHRoaXMuc2l0dWF0aW9uLmxvb3BzIHx8IGkgPCB0aGlzLnNpdHVhdGlvbi5sb29wcyA/ICh0aGlzLnBvcyA9IGUgLSBpLCBhID0gdGhpcy5zaXR1YXRpb24ubG9vcCwgdGhpcy5zaXR1YXRpb24ubG9vcCA9IGkpIDogKHRoaXMuYWJzUG9zID0gdGhpcy5zaXR1YXRpb24ubG9vcHMsIHRoaXMucG9zID0gMSwgYSA9IHRoaXMuc2l0dWF0aW9uLmxvb3AgLSAxLCB0aGlzLnNpdHVhdGlvbi5sb29wID0gdGhpcy5zaXR1YXRpb24ubG9vcHMpLCB0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcgJiYgKHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkID0gdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQgIT0gQm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcCAtIGEpICUgMikpKSA6ICh0aGlzLmFic1BvcyA9IE1hdGgubWluKHRoaXMuYWJzUG9zLCAxKSwgdGhpcy5wb3MgPSB0aGlzLmFic1BvcyksIHRoaXMucG9zIDwgMCAmJiAodGhpcy5wb3MgPSAwKSwgdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQgJiYgKHRoaXMucG9zID0gMSAtIHRoaXMucG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnNpdHVhdGlvbi5lYXNlKHRoaXMucG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0aGlzLnNpdHVhdGlvbi5vbmNlKSByID4gdGhpcy5sYXN0UG9zICYmIHIgPD0gcyAmJiAodGhpcy5zaXR1YXRpb24ub25jZVtyXS5jYWxsKHRoaXMudGFyZ2V0KCksIHRoaXMucG9zLCBzKSwgZGVsZXRlIHRoaXMuc2l0dWF0aW9uLm9uY2Vbcl0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmUgJiYgdGhpcy50YXJnZXQoKS5maXJlKCJkdXJpbmciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IHRoaXMucG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzZWQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeDogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbjogdGhpcy5zaXR1YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuc2l0dWF0aW9uID8gKHRoaXMuZWFjaEF0KCksIDEgPT0gdGhpcy5wb3MgJiYgIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkIHx8IHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkICYmIDAgPT0gdGhpcy5wb3MgPyAodGhpcy5zdG9wQW5pbUZyYW1lKCksIHRoaXMudGFyZ2V0KCkuZmlyZSgiZmluaXNoZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeDogdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbjogdGhpcy5zaXR1YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGggfHwgKHRoaXMudGFyZ2V0KCkuZmlyZSgiYWxsZmluaXNoZWQiKSwgdGhpcy5zaXR1YXRpb25zLmxlbmd0aCB8fCAodGhpcy50YXJnZXQoKS5vZmYoIi5meCIpLCB0aGlzLmFjdGl2ZSA9ICExKSksIHRoaXMuYWN0aXZlID8gdGhpcy5kZXF1ZXVlKCkgOiB0aGlzLmNsZWFyQ3VycmVudCgpKSA6ICF0aGlzLnBhdXNlZCAmJiB0aGlzLmFjdGl2ZSAmJiB0aGlzLnN0YXJ0QW5pbUZyYW1lKCksIHRoaXMubGFzdFBvcyA9IHMsIHRoaXMpIDogdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFjaEF0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMudGFyZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5zaXR1YXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gcy5hbmltYXRpb25zKSB0ID0gW10uY29uY2F0KHMuYW5pbWF0aW9uc1tyXSkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIHQgJiYgdC5hdCA/IHQuYXQocy5lYXNlKGUucG9zKSwgZS5wb3MpIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGlbcl0uYXBwbHkoaSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgaW4gcy5hdHRycykgdCA9IFtyXS5jb25jYXQocy5hdHRyc1tyXSkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIHQgJiYgdC5hdCA/IHQuYXQocy5lYXNlKGUucG9zKSwgZS5wb3MpIDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KSksIGkuYXR0ci5hcHBseShpLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiBzLnN0eWxlcykgdCA9IFtyXS5jb25jYXQocy5zdHlsZXNbcl0pLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiB0ICYmIHQuYXQgPyB0LmF0KHMuZWFzZShlLnBvcyksIGUucG9zKSA6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBpLnN0eWxlLmFwcGx5KGksIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy50cmFuc2Zvcm1zLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMuaW5pdGlhbFRyYW5zZm9ybWF0aW9uLCByID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBzLnRyYW5zZm9ybXMubGVuZ3RoOyByIDwgbzsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzLnRyYW5zZm9ybXNbcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiBpbnN0YW5jZW9mIGEuTWF0cml4ID8gdCA9IG4ucmVsYXRpdmUgPyB0Lm11bHRpcGx5KChuZXcgYS5NYXRyaXgpLm1vcnBoKG4pLmF0KHMuZWFzZSh0aGlzLnBvcykpKSA6IHQubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSkgOiAobi5yZWxhdGl2ZSB8fCBuLnVuZG8odC5leHRyYWN0KCkpLCB0ID0gdC5tdWx0aXBseShuLmF0KHMuZWFzZSh0aGlzLnBvcykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkubWF0cml4KHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uY2U6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgfHwgKHQgPSBhLmVhc2UodCkpLCBhLm9uY2VbdF0gPSBlLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBfY2FsbFN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAwKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXJlbnQ6IGEuRWxlbWVudCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmZ4IHx8ICh0aGlzLmZ4ID0gbmV3IGEuRlgodGhpcykpKS5hbmltYXRlKHQsIGUsIGkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkZWxheTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMuZnggfHwgKHRoaXMuZnggPSBuZXcgYS5GWCh0aGlzKSkpLmRlbGF5KHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZ4ICYmIHRoaXMuZnguc3RvcCh0LCBlKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZmluaXNoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnggJiYgdGhpcy5meC5maW5pc2goKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuTW9ycGhPYmogPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5Db2xvci5pc0NvbG9yKGUpID8gbmV3IGEuQ29sb3IodCkubW9ycGgoZSkgOiBhLnJlZ2V4LmRlbGltaXRlci50ZXN0KHQpID8gYS5yZWdleC5wYXRoTGV0dGVycy50ZXN0KHQpID8gbmV3IGEuUGF0aEFycmF5KHQpLm1vcnBoKGUpIDogbmV3IGEuQXJyYXkodCkubW9ycGgoZSkgOiBhLnJlZ2V4Lm51bWJlckFuZFVuaXQudGVzdChlKSA/IG5ldyBhLk51bWJlcih0KS5tb3JwaChlKSA6ICh0aGlzLnZhbHVlID0gdCwgdm9pZCh0aGlzLmRlc3RpbmF0aW9uID0gZSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgYXQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAxID8gdGhpcy52YWx1ZSA6IHRoaXMuZGVzdGluYXRpb24KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuRlgsIHsKICAgICAgICAgICAgICAgIGF0dHI6IGZ1bmN0aW9uKHQsIGUsIGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT09IGkodCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgaW4gdCkgdGhpcy5hdHRyKHMsIHRbc10pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5hZGQodCwgZSwgImF0dHJzIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwbG90OiBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQgPT0gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMucGxvdChbdCwgZSwgaSwgYV0pIDogdGhpcy5hZGQoInBsb3QiLCBuZXcodGhpcy50YXJnZXQoKS5tb3JwaEFycmF5KSh0KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuQm94ID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0LCBlLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoIm9iamVjdCIgIT09IGkodCkgfHwgdCBpbnN0YW5jZW9mIGEuRWxlbWVudCkpIHJldHVybiBhLkJveC5jYWxsKHRoaXMsIG51bGwgIT0gdC5sZWZ0ID8gdC5sZWZ0IDogdC54LCBudWxsICE9IHQudG9wID8gdC50b3AgOiB0LnksIHQud2lkdGgsIHQuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICA0ID09IGFyZ3VtZW50cy5sZW5ndGggJiYgKHRoaXMueCA9IHQsIHRoaXMueSA9IGUsIHRoaXMud2lkdGggPSBzLCB0aGlzLmhlaWdodCA9IHIpLCBiKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkJCb3ggPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5Cb3guYXBwbHkodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSwgdCBpbnN0YW5jZW9mIGEuRWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gdC5ub2RlOyBzLnBhcmVudE5vZGU7KSBzID0gcy5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9IGUpIHRocm93IG5ldyBFcnJvcigiRWxlbWVudCBub3QgaW4gdGhlIGRvbSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5ub2RlLmdldEJCb3goKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGEuU2hhcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnBhcnNlci5kcmF3IHx8IGEucHJlcGFyZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5jbG9uZShhLnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciAmJiByLm5vZGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygci5ub2RlLmdldEJCb3ggJiYgKGkgPSByLm5vZGUuZ2V0QkJveCgpKSwgciAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiByLnJlbW92ZSAmJiByLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0Lm5vZGUuY2xpZW50TGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0Lm5vZGUuY2xpZW50VG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0Lm5vZGUuY2xpZW50V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0Lm5vZGUuY2xpZW50SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYS5Cb3guY2FsbCh0aGlzLCBpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLkJveCwKICAgICAgICAgICAgICAgIHBhcmVudDogYS5FbGVtZW50LAogICAgICAgICAgICAgICAgY29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAgYmJveDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgYS5CQm94KHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGEuQkJveCwgYS5NYXRyaXggPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHAoWzEsIDAsIDAsIDEsIDAsIDBdKTsKICAgICAgICAgICAgICAgICAgICB0ID0gbnVsbCA9PT0gdCA/IGUgOiB0IGluc3RhbmNlb2YgYS5FbGVtZW50ID8gdC5tYXRyaXhpZnkoKSA6ICJzdHJpbmciID09IHR5cGVvZiB0ID8gcCh0LnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpIDogNiA9PSBhcmd1bWVudHMubGVuZ3RoID8gcChbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpIDogQXJyYXkuaXNBcnJheSh0KSA/IHAodCkgOiB0ICYmICJvYmplY3QiID09PSBpKHQpID8gdCA6IGU7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IG0ubGVuZ3RoIC0gMTsgcyA+PSAwOyAtLXMpIHRoaXNbbVtzXV0gPSBudWxsICE9IHRbbVtzXV0gPyB0W21bc11dIDogZVttW3NdXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIGV4dHJhY3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGYodGhpcywgMCwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGYodGhpcywgMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gMTgwIC8gTWF0aC5QSSAqIE1hdGguYXRhbjIodC55LCB0LngpIC0gOTA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0aGlzLmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFg6ICh0aGlzLmUgKiBNYXRoLmNvcyhlICogTWF0aC5QSSAvIDE4MCkgKyB0aGlzLmYgKiBNYXRoLnNpbihlICogTWF0aC5QSSAvIDE4MCkpIC8gTWF0aC5zcXJ0KHRoaXMuYSAqIHRoaXMuYSArIHRoaXMuYiAqIHRoaXMuYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFk6ICh0aGlzLmYgKiBNYXRoLmNvcyhlICogTWF0aC5QSSAvIDE4MCkgKyB0aGlzLmUgKiBNYXRoLnNpbigtZSAqIE1hdGguUEkgLyAxODApKSAvIE1hdGguc3FydCh0aGlzLmMgKiB0aGlzLmMgKyB0aGlzLmQgKiB0aGlzLmQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiB0aGlzLmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiB0aGlzLmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiB0aGlzLmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiB0aGlzLmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlOiB0aGlzLmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiB0aGlzLmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXg6IG5ldyBhLk1hdHJpeCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgYS5NYXRyaXgodGhpcykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1vcnBoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc3RpbmF0aW9uID0gbmV3IGEuTWF0cml4KHQpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtdWx0aXBseTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkubXVsdGlwbHkoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBhLk1hdHJpeCB8fCAodCA9IG5ldyBhLk1hdHJpeCh0KSksIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSh0KS5uYXRpdmUoKSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbnZlcnNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLmludmVyc2UoKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkudHJhbnNsYXRlKHQgfHwgMCwgZSB8fCAwKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG5hdGl2ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhLnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksIGUgPSBtLmxlbmd0aCAtIDE7IGUgPj0gMDsgZS0tKSB0W21bZV1dID0gdGhpc1ttW2VdXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXRyaXgoIiArIHYodGhpcy5hKSArICIsIiArIHYodGhpcy5iKSArICIsIiArIHYodGhpcy5jKSArICIsIiArIHYodGhpcy5kKSArICIsIiArIHYodGhpcy5lKSArICIsIiArIHYodGhpcy5mKSArICIpIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXJlbnQ6IGEuRWxlbWVudCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIGN0bTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgYS5NYXRyaXgodGhpcy5ub2RlLmdldENUTSgpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2NyZWVuQ1RNOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBhLk5lc3RlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnJlY3QoMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQubm9kZS5nZXRTY3JlZW5DVE0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnJlbW92ZSgpLCBuZXcgYS5NYXRyaXgoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRTY3JlZW5DVE0oKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlBvaW50ID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICAgICAgYSA9IEFycmF5LmlzQXJyYXkodCkgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHRbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHRbMV0KICAgICAgICAgICAgICAgICAgICB9IDogIm9iamVjdCIgPT09IGkodCkgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQueCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogdC55CiAgICAgICAgICAgICAgICAgICAgfSA6IG51bGwgIT0gdCA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbnVsbCAhPSBlID8gZSA6IHQKICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy54ID0gYS54LCB0aGlzLnkgPSBhLnkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgYS5Qb2ludCh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbW9ycGg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVzdGluYXRpb24gPSBuZXcgYS5Qb2ludCh0LCBlKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuRWxlbWVudCwgewogICAgICAgICAgICAgICAgcG9pbnQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGEuUG9pbnQodCwgZSkudHJhbnNmb3JtKHRoaXMuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5leHRlbmQoYS5FbGVtZW50LCB7CiAgICAgICAgICAgICAgICBhdHRyOiBmdW5jdGlvbih0LCBlLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSB7fSwgcyA9IChlID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMpLmxlbmd0aCAtIDE7IHMgPj0gMDsgcy0tKSB0W2Vbc10ubm9kZU5hbWVdID0gYS5yZWdleC5pc051bWJlci50ZXN0KGVbc10ubm9kZVZhbHVlKSA/IHBhcnNlRmxvYXQoZVtzXS5ub2RlVmFsdWUpIDogZVtzXS5ub2RlVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gaSh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0KSB0aGlzLmF0dHIociwgdFtyXSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVsbCA9PT0gZSkgdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZSh0KTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIG51bGwgPT0gKGUgPSB0aGlzLm5vZGUuZ2V0QXR0cmlidXRlKHQpKSA/IGEuZGVmYXVsdHMuYXR0cnNbdF0gOiBhLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZSkgPyBwYXJzZUZsb2F0KGUpIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgInN0cm9rZS13aWR0aCIgPT0gdCA/IHRoaXMuYXR0cigic3Ryb2tlIiwgcGFyc2VGbG9hdChlKSA+IDAgPyB0aGlzLl9zdHJva2UgOiBudWxsKSA6ICJzdHJva2UiID09IHQgJiYgKHRoaXMuX3N0cm9rZSA9IGUpLCAiZmlsbCIgIT0gdCAmJiAic3Ryb2tlIiAhPSB0IHx8IChhLnJlZ2V4LmlzSW1hZ2UudGVzdChlKSAmJiAoZSA9IHRoaXMuZG9jKCkuZGVmcygpLmltYWdlKGUsIDAsIDApKSwgZSBpbnN0YW5jZW9mIGEuSW1hZ2UgJiYgKGUgPSB0aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsIDAsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkpLCAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IGUgPSBuZXcgYS5OdW1iZXIoZSkgOiBhLkNvbG9yLmlzQ29sb3IoZSkgPyBlID0gbmV3IGEuQ29sb3IoZSkgOiBBcnJheS5pc0FycmF5KGUpICYmIChlID0gbmV3IGEuQXJyYXkoZSkpLCAibGVhZGluZyIgPT0gdCA/IHRoaXMubGVhZGluZyAmJiB0aGlzLmxlYWRpbmcoZSkgOiAic3RyaW5nIiA9PSB0eXBlb2YgcyA/IHRoaXMubm9kZS5zZXRBdHRyaWJ1dGVOUyhzLCB0LCBlLnRvU3RyaW5nKCkpIDogdGhpcy5ub2RlLnNldEF0dHJpYnV0ZSh0LCBlLnRvU3RyaW5nKCkpLCAhdGhpcy5yZWJ1aWxkIHx8ICJmb250LXNpemUiICE9IHQgJiYgIngiICE9IHQgfHwgdGhpcy5yZWJ1aWxkKHQsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkVsZW1lbnQsIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiAhPT0gaSh0KSA/IChzID0gbmV3IGEuTWF0cml4KHRoaXMpLmV4dHJhY3QoKSwgInN0cmluZyIgPT0gdHlwZW9mIHQgPyBzW3RdIDogcykgOiAocyA9IG5ldyBhLk1hdHJpeCh0aGlzKSwgZSA9ICEhZSB8fCAhIXQucmVsYXRpdmUsIG51bGwgIT0gdC5hICYmIChzID0gZSA/IHMubXVsdGlwbHkobmV3IGEuTWF0cml4KHQpKSA6IG5ldyBhLk1hdHJpeCh0KSksIHRoaXMuYXR0cigidHJhbnNmb3JtIiwgcykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkVsZW1lbnQsIHsKICAgICAgICAgICAgICAgIHVudHJhbnNmb3JtOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJ0cmFuc2Zvcm0iLCBudWxsKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1hdHJpeGlmeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmF0dHIoInRyYW5zZm9ybSIpIHx8ICIiKS5zcGxpdChhLnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsIC0xKS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnRyaW0oKS5zcGxpdCgiKCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2VbMF0sIGVbMV0uc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpXQogICAgICAgICAgICAgICAgICAgIH0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJtYXRyaXgiID09IGVbMF0gPyB0Lm11bHRpcGx5KHAoZVsxXSkpIDogdFtlWzBdXS5hcHBseSh0LCBlWzFdKQogICAgICAgICAgICAgICAgICAgIH0pLCBuZXcgYS5NYXRyaXgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9QYXJlbnQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyA9PSB0KSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuc2NyZWVuQ1RNKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNjcmVlbkNUTSgpLmludmVyc2UoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRUbyh0KS51bnRyYW5zZm9ybSgpLnRyYW5zZm9ybShpLm11bHRpcGx5KGUpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvRG9jOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b1BhcmVudCh0aGlzLmRvYygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5UcmFuc2Zvcm1hdGlvbiA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiAiYm9vbGVhbiIgIT0gdHlwZW9mIGUpIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDAsIHMgPSB0aGlzLmFyZ3VtZW50cy5sZW5ndGg7IGEgPCBzOyArK2EpIHRoaXNbdGhpcy5hcmd1bWVudHNbYV1dID0gdFthXTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ICYmICJvYmplY3QiID09PSBpKHQpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBzID0gdGhpcy5hcmd1bWVudHMubGVuZ3RoOyBhIDwgczsgKythKSB0aGlzW3RoaXMuYXJndW1lbnRzW2FdXSA9IHRbdGhpcy5hcmd1bWVudHNbYV1dOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW52ZXJzZWQgPSAhMSwgITAgPT09IGUgJiYgKHRoaXMuaW52ZXJzZWQgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuVHJhbnNsYXRlID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgcGFyZW50OiBhLk1hdHJpeCwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuVHJhbnNmb3JtYXRpb24sCiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6IFsidHJhbnNmb3JtZWRYIiwgInRyYW5zZm9ybWVkWSJdLAogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogInRyYW5zbGF0ZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuRWxlbWVudCwgewogICAgICAgICAgICAgICAgc3R5bGU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5ub2RlLnN0eWxlLmNzc1RleHQgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT09IGkodCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIHQpIHRoaXMuc3R5bGUocywgdFtzXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhLnJlZ2V4LmlzQ3NzLnRlc3QodCkpIHJldHVybiB0aGlzLm5vZGUuc3R5bGVbYyh0KV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSB0LnNwbGl0KC9ccyo7XHMqLykuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkubWFwKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnNwbGl0KC9ccyo6XHMqLykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7IGUgPSB0LnBvcCgpOykgdGhpcy5zdHlsZShlWzBdLCBlWzFdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLm5vZGUuc3R5bGVbYyh0KV0gPSBudWxsID09PSBlIHx8IGEucmVnZXguaXNCbGFuay50ZXN0KGUpID8gIiIgOiBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlBhcmVudCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuRWxlbWVudCwKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEudXRpbHMubWFwKGEudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModGhpcy5ub2RlLmNoaWxkTm9kZXMpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuYWRvcHQodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpIDogdC5ub2RlICE9IHRoaXMubm9kZS5jaGlsZE5vZGVzW2VdICYmIHRoaXMubm9kZS5pbnNlcnRCZWZvcmUodC5ub2RlLCB0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHB1dDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQodCwgZSksIHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbmRleCh0KSA+PSAwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbmRleDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10uc2xpY2UuY2FsbCh0aGlzLm5vZGUuY2hpbGROb2RlcykuaW5kZXhPZih0Lm5vZGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmNoaWxkTm9kZXNbdF0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmaXJzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCgwKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldCh0aGlzLm5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZWFjaDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5jaGlsZHJlbigpLCBzID0gMCwgciA9IGkubGVuZ3RoOyBzIDwgcjsgcysrKSBpW3NdIGluc3RhbmNlb2YgYS5FbGVtZW50ICYmIHQuYXBwbHkoaVtzXSwgW3MsIGldKSwgZSAmJiBpW3NdIGluc3RhbmNlb2YgYS5Db250YWluZXIgJiYgaVtzXS5lYWNoKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHQubm9kZSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHRoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KSB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGUgdGhpcy5fZGVmcywgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGVmczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvYygpLmRlZnMoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuUGFyZW50LCB7CiAgICAgICAgICAgICAgICB1bmdyb3VwOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgfHwgdGhpcyBpbnN0YW5jZW9mIGEuRGVmcyB8fCB0aGlzLm5vZGUgPT0gYS5wYXJzZXIuZHJhdyB8fCAodCA9IHQgfHwgKHRoaXMgaW5zdGFuY2VvZiBhLkRvYyA/IHRoaXMgOiB0aGlzLnBhcmVudChhLlBhcmVudCkpLCBlID0gZSB8fCAxIC8gMCwgdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRlZnMgPyB0aGlzIDogdGhpcyBpbnN0YW5jZW9mIGEuUGFyZW50ID8gdGhpcy51bmdyb3VwKHQsIGUgLSAxKSA6IHRoaXMudG9QYXJlbnQodCkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMubm9kZS5maXJzdENoaWxkIHx8IHRoaXMucmVtb3ZlKCkpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmxhdHRlbjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVuZ3JvdXAodCwgZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuQ29udGFpbmVyID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5QYXJlbnQKICAgICAgICAgICAgfSksIGEuVmlld0JveCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIHBhcmVudDogYS5Db250YWluZXIsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHt9CiAgICAgICAgICAgIH0pLCBbImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNlZG93biIsICJtb3VzZXVwIiwgIm1vdXNlb3ZlciIsICJtb3VzZW91dCIsICJtb3VzZW1vdmUiLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiLCAidG91Y2hsZWF2ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGEuRWxlbWVudC5wcm90b3R5cGVbdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEub24odGhpcy5ub2RlLCB0LCBlKSwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIGEubGlzdGVuZXJzID0gW10sIGEuaGFuZGxlck1hcCA9IFtdLCBhLmxpc3RlbmVySWQgPSAwLCBhLm9uID0gZnVuY3Rpb24odCwgZSwgaSwgcywgcikgewogICAgICAgICAgICAgICAgdmFyIG8gPSBpLmJpbmQocyB8fCB0Lmluc3RhbmNlIHx8IHQpLAogICAgICAgICAgICAgICAgICAgIG4gPSAoYS5oYW5kbGVyTWFwLmluZGV4T2YodCkgKyAxIHx8IGEuaGFuZGxlck1hcC5wdXNoKHQpKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgbCA9IGUuc3BsaXQoIi4iKVswXSwKICAgICAgICAgICAgICAgICAgICBoID0gZS5zcGxpdCgiLiIpWzFdIHx8ICIqIjsKICAgICAgICAgICAgICAgIGEubGlzdGVuZXJzW25dID0gYS5saXN0ZW5lcnNbbl0gfHwge30sIGEubGlzdGVuZXJzW25dW2xdID0gYS5saXN0ZW5lcnNbbl1bbF0gfHwge30sIGEubGlzdGVuZXJzW25dW2xdW2hdID0gYS5saXN0ZW5lcnNbbl1bbF1baF0gfHwge30sIGkuX3N2Z2pzTGlzdGVuZXJJZCB8fCAoaS5fc3ZnanNMaXN0ZW5lcklkID0gKythLmxpc3RlbmVySWQpLCBhLmxpc3RlbmVyc1tuXVtsXVtoXVtpLl9zdmdqc0xpc3RlbmVySWRdID0gbywgdC5hZGRFdmVudExpc3RlbmVyKGwsIG8sIHIgfHwgewogICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCBhLm9mZiA9IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gYS5oYW5kbGVyTWFwLmluZGV4T2YodCksCiAgICAgICAgICAgICAgICAgICAgciA9IGUgJiYgZS5zcGxpdCgiLiIpWzBdLAogICAgICAgICAgICAgICAgICAgIG8gPSBlICYmIGUuc3BsaXQoIi4iKVsxXSwKICAgICAgICAgICAgICAgICAgICBuID0gIiI7CiAgICAgICAgICAgICAgICBpZiAoLTEgIT0gcykKICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgaSAmJiAoaSA9IGkuX3N2Z2pzTGlzdGVuZXJJZCksICFpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGEubGlzdGVuZXJzW3NdW3JdICYmIGEubGlzdGVuZXJzW3NdW3JdW28gfHwgIioiXSAmJiAodC5yZW1vdmVFdmVudExpc3RlbmVyKHIsIGEubGlzdGVuZXJzW3NdW3JdW28gfHwgIioiXVtpXSwgITEpLCBkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bbyB8fCAiKiJdW2ldKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobyAmJiByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGlzdGVuZXJzW3NdW3JdICYmIGEubGlzdGVuZXJzW3NdW3JdW29dKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgaW4gYS5saXN0ZW5lcnNbc11bcl1bb10pIGEub2ZmKHQsIFtyLCBvXS5qb2luKCIuIiksIGwpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bb10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG8pCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtoXSkgbyA9PT0gbiAmJiBhLm9mZih0LCBbaCwgb10uam9pbigiLiIpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5saXN0ZW5lcnNbc11bcl0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtyXSkgYS5vZmYodCwgW3IsIG5dLmpvaW4oIi4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSkgYS5vZmYodCwgaCk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGEubGlzdGVuZXJzW3NdLCBkZWxldGUgYS5oYW5kbGVyTWFwW3NdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIGEuZXh0ZW5kKGEuRWxlbWVudCwgewogICAgICAgICAgICAgICAgb246IGZ1bmN0aW9uKHQsIGUsIGksIHMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5vbih0aGlzLm5vZGUsIHQsIGUsIGksIHMpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2ZmOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEub2ZmKHRoaXMubm9kZSwgdCwgZSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXJlOiBmdW5jdGlvbihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiB0LkV2ZW50ID8gdGhpcy5ub2RlLmRpc3BhdGNoRXZlbnQoZSkgOiB0aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlID0gbmV3IGEuQ3VzdG9tRXZlbnQoZSwgewogICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLl9ldmVudCA9IGUsIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBldmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkRlZnMgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJkZWZzIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuQ29udGFpbmVyCiAgICAgICAgICAgIH0pLCBhLkcgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJnIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuQ29udGFpbmVyLAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy50cmFuc2Zvcm0oIngiKSA6IHRoaXMudHJhbnNmb3JtKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQgLSB0aGlzLngoKQogICAgICAgICAgICAgICAgICAgICAgICB9LCAhMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IGEuRykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkRvYyA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHQgJiYgKCJzdmciID09ICh0ID0gInN0cmluZyIgPT0gdHlwZW9mIHQgPyBlLmdldEVsZW1lbnRCeUlkKHQpIDogdCkubm9kZU5hbWUgPyB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgdCkgOiAodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIGEuY3JlYXRlKCJzdmciKSksIHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSwgdGhpcy5zaXplKCIxMDAlIiwgIjEwMCUiKSksIHRoaXMubmFtZXNwYWNlKCkuZGVmcygpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuQ29udGFpbmVyLAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczogYS5ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb246ICIxLjEiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmF0dHIoInhtbG5zOnhsaW5rIiwgYS54bGluaywgYS54bWxucykuYXR0cigieG1sbnM6c3ZnanMiLCBhLnN2Z2pzLCBhLnhtbG5zKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGVmczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmcyB8fCAoKHQgPSB0aGlzLm5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXSkgPyB0aGlzLl9kZWZzID0gYS5hZG9wdCh0KSA6IHRoaXMuX2RlZnMgPSBuZXcgYS5EZWZzLCB0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZGVmcy5ub2RlKSksIHRoaXMuX2RlZnMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBhcmVudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUucGFyZW50Tm9kZSAmJiAiI2RvY3VtZW50IiAhPSB0aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSA/IHRoaXMubm9kZS5wYXJlbnROb2RlIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOykgdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsIGEucGFyc2VyLmRyYXcgJiYgIWEucGFyc2VyLmRyYXcucGFyZW50Tm9kZSAmJiB0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoYS5wYXJzZXIuZHJhdyksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsb25lOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVEYXRhVG9Eb20oKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0geChlLmNsb25lTm9kZSghMCkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA/ICh0Lm5vZGUgfHwgdCkuYXBwZW5kQ2hpbGQoaS5ub2RlKSA6IGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaS5ub2RlLCBlLm5leHRTaWJsaW5nKSwgaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuRWxlbWVudCwge30pLCBhLkdyYWRpZW50ID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIGEuY3JlYXRlKHQgKyAiR3JhZGllbnQiKSksIHRoaXMudHlwZSA9IHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLkNvbnRhaW5lciwKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIGF0OiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5TdG9wKS51cGRhdGUodCwgZSwgaSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhcigpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIHQuY2FsbCh0aGlzLCB0aGlzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZmlsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidXJsKCMiICsgdGhpcy5pZCgpICsgIikiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbGwoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0cjogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInRyYW5zZm9ybSIgPT0gdCAmJiAodCA9ICJncmFkaWVudFRyYW5zZm9ybSIpLCBhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsIHQsIGUsIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIGdyYWRpZW50OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZnMoKS5ncmFkaWVudCh0LCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuR3JhZGllbnQsIGEuRlgsIHsKICAgICAgICAgICAgICAgIGZyb206IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJhZGlhbCIgPT0gKHRoaXMuX3RhcmdldCB8fCB0aGlzKS50eXBlID8gdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgZng6IG5ldyBhLk51bWJlcih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgZnk6IG5ldyBhLk51bWJlcihlKQogICAgICAgICAgICAgICAgICAgIH0pIDogdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgeDE6IG5ldyBhLk51bWJlcih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgeTE6IG5ldyBhLk51bWJlcihlKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG86IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJhZGlhbCIgPT0gKHRoaXMuX3RhcmdldCB8fCB0aGlzKS50eXBlID8gdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgY3g6IG5ldyBhLk51bWJlcih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgY3k6IG5ldyBhLk51bWJlcihlKQogICAgICAgICAgICAgICAgICAgIH0pIDogdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgeDI6IG5ldyBhLk51bWJlcih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgeTI6IG5ldyBhLk51bWJlcihlKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkRlZnMsIHsKICAgICAgICAgICAgICAgIGdyYWRpZW50OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBhLkdyYWRpZW50KHQpKS51cGRhdGUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuU3RvcCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogInN0b3AiLAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5FbGVtZW50LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoIm51bWJlciIgPT0gdHlwZW9mIHQgfHwgdCBpbnN0YW5jZW9mIGEuTnVtYmVyKSAmJiAodCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogYXJndW1lbnRzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IGFyZ3VtZW50c1syXQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbnVsbCAhPSB0Lm9wYWNpdHkgJiYgdGhpcy5hdHRyKCJzdG9wLW9wYWNpdHkiLCB0Lm9wYWNpdHkpLCBudWxsICE9IHQuY29sb3IgJiYgdGhpcy5hdHRyKCJzdG9wLWNvbG9yIiwgdC5jb2xvciksIG51bGwgIT0gdC5vZmZzZXQgJiYgdGhpcy5hdHRyKCJvZmZzZXQiLCBuZXcgYS5OdW1iZXIodC5vZmZzZXQpKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuUGF0dGVybiA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogInBhdHRlcm4iLAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5Db250YWluZXIsCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBmaWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1cmwoIyIgKyB0aGlzLmlkKCkgKyAiKSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhcigpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIHQuY2FsbCh0aGlzLCB0aGlzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxsKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGF0dHI6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iID09IHQgJiYgKHQgPSAicGF0dGVyblRyYW5zZm9ybSIpLCBhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsIHQsIGUsIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCwgZSwgaSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkRlZnMsIHsKICAgICAgICAgICAgICAgIHBhdHRlcm46IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IGEuUGF0dGVybikudXBkYXRlKGkpLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuVW5pdHM6ICJ1c2VyU3BhY2VPblVzZSIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5TaGFwZSA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuRWxlbWVudAogICAgICAgICAgICB9KSwgYS5TeW1ib2wgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJzeW1ib2wiLAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5Db250YWluZXIsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBzeW1ib2w6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IGEuU3ltYm9sKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuVXNlID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiAidXNlIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuU2hhcGUsCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImhyZWYiLCAoZSB8fCAiIikgKyAiIyIgKyB0LCBhLnhsaW5rKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICB1c2U6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBhLlVzZSkuZWxlbWVudCh0LCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuUmVjdCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogInJlY3QiLAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5TaGFwZSwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIHJlY3Q6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBhLlJlY3QpLnNpemUodCwgZSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkNpcmNsZSA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogImNpcmNsZSIsCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLlNoYXBlLAogICAgICAgICAgICAgICAgY29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAgY2lyY2xlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5DaXJjbGUpLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpLm1vdmUoMCwgMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkNpcmNsZSwgYS5GWCwgewogICAgICAgICAgICAgICAgcng6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJyIiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJ4KHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkVsbGlwc2UgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJlbGxpcHNlIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuU2hhcGUsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBlbGxpcHNlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5FbGxpcHNlKS5zaXplKHQsIGUpLm1vdmUoMCwgMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkVsbGlwc2UsIGEuUmVjdCwgYS5GWCwgewogICAgICAgICAgICAgICAgcng6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJyeCIsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcnk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJyeSIsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkNpcmNsZSwgYS5FbGxpcHNlLCB7CiAgICAgICAgICAgICAgICB4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IHRoaXMuY3goKSAtIHRoaXMucngoKSA6IHRoaXMuY3godCArIHRoaXMucngoKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IHRoaXMuY3koKSAtIHRoaXMucnkoKSA6IHRoaXMuY3kodCArIHRoaXMucnkoKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmF0dHIoImN4IikgOiB0aGlzLmF0dHIoImN4IiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmF0dHIoImN5IikgOiB0aGlzLmF0dHIoImN5IiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB3aWR0aDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyAyICogdGhpcy5yeCgpIDogdGhpcy5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhlaWdodDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyAyICogdGhpcy5yeSgpIDogdGhpcy5yeShuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHUodGhpcywgdCwgZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucngobmV3IGEuTnVtYmVyKGkud2lkdGgpLmRpdmlkZSgyKSkucnkobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KS5kaXZpZGUoMikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLkxpbmUgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJsaW5lIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuU2hhcGUsCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBhcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgYS5Qb2ludEFycmF5KFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLmF0dHIoIngxIiksIHRoaXMuYXR0cigieTEiKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy5hdHRyKCJ4MiIpLCB0aGlzLmF0dHIoInkyIildCiAgICAgICAgICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwbG90OiBmdW5jdGlvbih0LCBlLCBpLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmFycmF5KCkgOiAodCA9IHZvaWQgMCAhPT0gZSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MjogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBzCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBuZXcgYS5Qb2ludEFycmF5KHQpLnRvTGluZSgpLCB0aGlzLmF0dHIodCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLm1vdmUodCwgZSkudG9MaW5lKCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdSh0aGlzLCB0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkuc2l6ZShpLndpZHRoLCBpLmhlaWdodCkudG9MaW5lKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIGxpbmU6IGZ1bmN0aW9uKHQsIGUsIGksIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuTGluZS5wcm90b3R5cGUucGxvdC5hcHBseSh0aGlzLnB1dChuZXcgYS5MaW5lKSwgbnVsbCAhPSB0ID8gW3QsIGUsIGksIHNdIDogWzAsIDAsIDAsIDBdKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuUG9seWxpbmUgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJwb2x5bGluZSIsCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLlNoYXBlLAogICAgICAgICAgICAgICAgY29uc3RydWN0OiB7CiAgICAgICAgICAgICAgICAgICAgcG9seWxpbmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlsaW5lKS5wbG90KHQgfHwgbmV3IGEuUG9pbnRBcnJheSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlBvbHlnb24gPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJwb2x5Z29uIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuU2hhcGUsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBwb2x5Z29uOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5Qb2x5Z29uKS5wbG90KHQgfHwgbmV3IGEuUG9pbnRBcnJheSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLlBvbHlsaW5lLCBhLlBvbHlnb24sIHsKICAgICAgICAgICAgICAgIGFycmF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYXJyYXkgfHwgKHRoaXMuX2FycmF5ID0gbmV3IGEuUG9pbnRBcnJheSh0aGlzLmF0dHIoInBvaW50cyIpKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwbG90OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IHRoaXMuYXJyYXkoKSA6IHRoaXMuY2xlYXIoKS5hdHRyKCJwb2ludHMiLCAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IHQgOiB0aGlzLl9hcnJheSA9IG5ldyBhLlBvaW50QXJyYXkodCkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2xlYXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGUgdGhpcy5fYXJyYXksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtb3ZlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cigicG9pbnRzIiwgdGhpcy5hcnJheSgpLm1vdmUodCwgZSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdSh0aGlzLCB0LCBlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJwb2ludHMiLCB0aGlzLmFycmF5KCkuc2l6ZShpLndpZHRoLCBpLmhlaWdodCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLmV4dGVuZChhLkxpbmUsIGEuUG9seWxpbmUsIGEuUG9seWdvbiwgewogICAgICAgICAgICAgICAgbW9ycGhBcnJheTogYS5Qb2ludEFycmF5LAogICAgICAgICAgICAgICAgeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmJib3goKS54IDogdGhpcy5tb3ZlKHQsIHRoaXMuYmJveCgpLnkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmJib3goKS55IDogdGhpcy5tb3ZlKHRoaXMuYmJveCgpLngsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuYmJveCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyBlLndpZHRoIDogdGhpcy5zaXplKHQsIGUuaGVpZ2h0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhlaWdodDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5iYm94KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IGUuaGVpZ2h0IDogdGhpcy5zaXplKGUud2lkdGgsIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlBhdGggPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJwYXRoIiwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IGEuU2hhcGUsCiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBtb3JwaEFycmF5OiBhLlBhdGhBcnJheSwKICAgICAgICAgICAgICAgICAgICBhcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hcnJheSB8fCAodGhpcy5fYXJyYXkgPSBuZXcgYS5QYXRoQXJyYXkodGhpcy5hdHRyKCJkIikpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGxvdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5hcnJheSgpIDogdGhpcy5jbGVhcigpLmF0dHIoImQiLCAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IHQgOiB0aGlzLl9hcnJheSA9IG5ldyBhLlBhdGhBcnJheSh0KSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBwYXRoOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5QYXRoKS5wbG90KHQgfHwgbmV3IGEuUGF0aEFycmF5KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuSW1hZ2UgPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJpbWFnZSIsCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLlNoYXBlLAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IHQuSW1hZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLm9uKHMsICJsb2FkIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5vZmYocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkucGFyZW50KGEuUGF0dGVybik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB0ICYmICgwID09IGkud2lkdGgoKSAmJiAwID09IGkuaGVpZ2h0KCkgJiYgaS5zaXplKHMud2lkdGgsIHMuaGVpZ2h0KSwgdCAmJiAwID09IHQud2lkdGgoKSAmJiAwID09IHQuaGVpZ2h0KCkgJiYgdC5zaXplKGkud2lkdGgoKSwgaS5oZWlnaHQoKSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGkuX2xvYWRlZCAmJiBpLl9sb2FkZWQuY2FsbChpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRpbzogcy53aWR0aCAvIHMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYS5vbihzLCAiZXJyb3IiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5vZmYocyksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGkuX2Vycm9yICYmIGkuX2Vycm9yLmNhbGwoaSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmF0dHIoImhyZWYiLCBzLnNyYyA9IHRoaXMuc3JjID0gZSwgYS54bGluaykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkID0gdCwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yID0gdCwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBpbWFnZTogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IGEuSW1hZ2UpLmxvYWQodCkuc2l6ZShlIHx8IDAsIGkgfHwgZSB8fCAwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuVGV4dCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIGEuY3JlYXRlKCJ0ZXh0IikpLCB0aGlzLmRvbS5sZWFkaW5nID0gbmV3IGEuTnVtYmVyKDEuMyksIHRoaXMuX3JlYnVpbGQgPSAhMCwgdGhpcy5fYnVpbGQgPSAhMSwgdGhpcy5hdHRyKCJmb250LWZhbWlseSIsIGEuZGVmYXVsdHMuYXR0cnNbImZvbnQtZmFtaWx5Il0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5TaGFwZSwKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIHg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCA/IHRoaXMuYXR0cigieCIpIDogdGhpcy5hdHRyKCJ4IiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IHRoaXMubm9kZS5jaGlsZE5vZGVzLCBpID0gMCwgcyA9IGUubGVuZ3RoOyBpIDwgczsgKytpKSAwICE9IGkgJiYgMyAhPSBlW2ldLm5vZGVUeXBlICYmIDEgPT0gYS5hZG9wdChlW2ldKS5kb20ubmV3TGluZWQgJiYgKHQgKz0gIlxuIiksIHQgKz0gZVtpXS50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xlYXIoKS5idWlsZCghMCksICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQpIHQuY2FsbCh0aGlzLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAodCA9IHQuc3BsaXQoIlxuIikpLmxlbmd0aDsgaSA8IHI7IGkrKykgdGhpcy50c3Bhbih0W2ldKS5uZXdMaW5lKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImZvbnQtc2l6ZSIsIHQpLnJlYnVpbGQoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5kb20ubGVhZGluZyA6ICh0aGlzLmRvbS5sZWFkaW5nID0gbmV3IGEuTnVtYmVyKHQpLCB0aGlzLnJlYnVpbGQoKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxpbmVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAodGhpcy50ZXh0UGF0aCAmJiB0aGlzLnRleHRQYXRoKCkgfHwgdGhpcykubm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhLnV0aWxzLm1hcChhLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHQuY2hpbGROb2RlcyksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuYWRvcHQodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhLlNldChlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVidWlsZDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImJvb2xlYW4iID09IHR5cGVvZiB0ICYmICh0aGlzLl9yZWJ1aWxkID0gdCksIHRoaXMuX3JlYnVpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5kb20ubGVhZGluZyAqIG5ldyBhLk51bWJlcih0aGlzLmF0dHIoImZvbnQtc2l6ZSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGluZXMoKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvbS5uZXdMaW5lZCAmJiAoZS50ZXh0UGF0aCgpIHx8IHRoaXMuYXR0cigieCIsIGUuYXR0cigieCIpKSwgIlxuIiA9PSB0aGlzLnRleHQoKSA/IGkgKz0gcyA6ICh0aGlzLmF0dHIoImR5IiwgcyArIGkpLCBpID0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZmlyZSgicmVidWlsZCIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGJ1aWxkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9idWlsZCA9ICEhdCwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0RGF0YTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb20gPSB0LCB0aGlzLmRvbS5sZWFkaW5nID0gbmV3IGEuTnVtYmVyKHQubGVhZGluZyB8fCAxLjMpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBhLlRleHQpLnRleHQodCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBsYWluOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgYS5UZXh0KS5wbGFpbih0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuVHNwYW4gPSBhLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6ICJ0c3BhbiIsCiAgICAgICAgICAgICAgICBpbmhlcml0OiBhLlNoYXBlLAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgdGV4dDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5ub2RlLnRleHRDb250ZW50ICsgKHRoaXMuZG9tLm5ld0xpbmVkID8gIlxuIiA6ICIiKSA6ICgiZnVuY3Rpb24iID09IHR5cGVvZiB0ID8gdC5jYWxsKHRoaXMsIHRoaXMpIDogdGhpcy5wbGFpbih0KSwgdGhpcykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGR4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImR4IiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGR5OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHIoImR5IiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG5ld0xpbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMucGFyZW50KGEuVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbS5uZXdMaW5lZCA9ICEwLCB0aGlzLmR5KHQuZG9tLmxlYWRpbmcgKiB0LmF0dHIoImZvbnQtc2l6ZSIpKS5hdHRyKCJ4IiwgdC54KCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5leHRlbmQoYS5UZXh0LCBhLlRzcGFuLCB7CiAgICAgICAgICAgICAgICBwbGFpbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMSA9PT0gdGhpcy5fYnVpbGQgJiYgdGhpcy5jbGVhcigpLCB0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoZS5jcmVhdGVUZXh0Tm9kZSh0KSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0c3BhbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gKHRoaXMudGV4dFBhdGggJiYgdGhpcy50ZXh0UGF0aCgpIHx8IHRoaXMpLm5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgYS5Uc3BhbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEgPT09IHRoaXMuX2J1aWxkICYmIHRoaXMuY2xlYXIoKSwgZS5hcHBlbmRDaGlsZChpLm5vZGUpLCBpLnRleHQodCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9ICh0aGlzLnRleHRQYXRoICYmIHRoaXMudGV4dFBhdGgoKSB8fCB0aGlzKS5ub2RlOyB0Lmhhc0NoaWxkTm9kZXMoKTspIHQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlRleHRQYXRoID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiAidGV4dFBhdGgiLAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5QYXJlbnQsCiAgICAgICAgICAgICAgICBwYXJlbnQ6IGEuVGV4dCwKICAgICAgICAgICAgICAgIGNvbnN0cnVjdDogewogICAgICAgICAgICAgICAgICAgIG1vcnBoQXJyYXk6IGEuUGF0aEFycmF5LAogICAgICAgICAgICAgICAgICAgIGFycmF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnRyYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gdC5hcnJheSgpIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGxvdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudHJhY2soKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAoaSA9IGUucGxvdCh0KSksIG51bGwgPT0gdCA/IGkgOiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0cmFjazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy50ZXh0UGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkgcmV0dXJuIHQucmVmZXJlbmNlKCJocmVmIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRleHRQYXRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5maXJzdENoaWxkICYmICJ0ZXh0UGF0aCIgPT0gdGhpcy5ub2RlLmZpcnN0Q2hpbGQubm9kZU5hbWUpIHJldHVybiBhLmFkb3B0KHRoaXMubm9kZS5maXJzdENoaWxkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuTmVzdGVkID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgYS5jcmVhdGUoInN2ZyIpKSwgdGhpcy5zdHlsZSgib3ZlcmZsb3ciLCAidmlzaWJsZSIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5oZXJpdDogYS5Db250YWluZXIsCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBuZXN0ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IGEuTmVzdGVkKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBsID0gewogICAgICAgICAgICAgICAgc3Ryb2tlOiBbImNvbG9yIiwgIndpZHRoIiwgIm9wYWNpdHkiLCAibGluZWNhcCIsICJsaW5lam9pbiIsICJtaXRlcmxpbWl0IiwgImRhc2hhcnJheSIsICJkYXNob2Zmc2V0Il0sCiAgICAgICAgICAgICAgICBmaWxsOiBbImNvbG9yIiwgIm9wYWNpdHkiLCAicnVsZSJdLAogICAgICAgICAgICAgICAgcHJlZml4OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjb2xvciIgPT0gZSA/IHQgOiB0ICsgIi0iICsgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gaCh0LCBlLCBpLCBzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSArIHMucmVwbGFjZShhLnJlZ2V4LmRvdHMsICIgLiIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGModCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKC4pL2csIChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9VcHBlckNhc2UoKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGcodCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LnRvU3RyaW5nKDE2KTsKICAgICAgICAgICAgICAgIHJldHVybiAxID09IGUubGVuZ3RoID8gIjAiICsgZSA6IGUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdSh0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlIHx8IG51bGwgPT0gaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gdC5iYm94KCk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PSBlID8gZSA9IGEud2lkdGggLyBhLmhlaWdodCAqIGkgOiBudWxsID09IGkgJiYgKGkgPSBhLmhlaWdodCAvIGEud2lkdGggKiBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogZSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHg6IGUgKiB0LmEgKyBpICogdC5jICsgMCwKICAgICAgICAgICAgICAgICAgICB5OiBlICogdC5iICsgaSAqIHQuZCArIDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGE6IHRbMF0sCiAgICAgICAgICAgICAgICAgICAgYjogdFsxXSwKICAgICAgICAgICAgICAgICAgICBjOiB0WzJdLAogICAgICAgICAgICAgICAgICAgIGQ6IHRbM10sCiAgICAgICAgICAgICAgICAgICAgZTogdFs0XSwKICAgICAgICAgICAgICAgICAgICBmOiB0WzVdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgZS5jaGlsZE5vZGVzW2ldIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50ICYmIHgoZS5jaGlsZE5vZGVzW2ldKTsKICAgICAgICAgICAgICAgIHJldHVybiBhLmFkb3B0KGUpLmlkKGEuZWlkKGUubm9kZU5hbWUpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBiKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQueCAmJiAodC54ID0gMCwgdC55ID0gMCwgdC53aWR0aCA9IDAsIHQuaGVpZ2h0ID0gMCksIHQudyA9IHQud2lkdGgsIHQuaCA9IHQuaGVpZ2h0LCB0LngyID0gdC54ICsgdC53aWR0aCwgdC55MiA9IHQueSArIHQuaGVpZ2h0LCB0LmN4ID0gdC54ICsgdC53aWR0aCAvIDIsIHQuY3kgPSB0LnkgKyB0LmhlaWdodCAvIDIsIHQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModCkgPiAxZS0zNyA/IHQgOiAwCiAgICAgICAgICAgIH1bImZpbGwiLCAic3Ryb2tlIl0uZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB7fTsKICAgICAgICAgICAgICAgIGVbdF0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZSkgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlIHx8IGEuQ29sb3IuaXNSZ2IoZSkgfHwgZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmZpbGwpIHRoaXMuYXR0cih0LCBlKTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBsW3RdLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBudWxsICE9IGVbbFt0XVtpXV0gJiYgdGhpcy5hdHRyKGwucHJlZml4KHQsIGxbdF1baV0pLCBlW2xbdF1baV1dKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgfSwgYS5leHRlbmQoYS5FbGVtZW50LCBhLkZYLCBlKQogICAgICAgICAgICB9KSksIGEuZXh0ZW5kKGEuRWxlbWVudCwgYS5GWCwgewogICAgICAgICAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtKHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbWF0cml4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXR0cigidHJhbnNmb3JtIiwgbmV3IGEuTWF0cml4KDYgPT0gYXJndW1lbnRzLmxlbmd0aCA/IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSA6IHQpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9wYWNpdHk6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCJvcGFjaXR5IiwgdCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkeDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLngobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlggPyAwIDogdGhpcy54KCkpLCAhMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkeTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnkobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlggPyAwIDogdGhpcy55KCkpLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuZXh0ZW5kKGEuUGF0aCwgewogICAgICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldFRvdGFsTGVuZ3RoKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwb2ludEF0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5nZXRQb2ludEF0TGVuZ3RoKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlNldCA9IGEuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodCkgPyB0aGlzLm1lbWJlcnMgPSB0IDogdGhpcy5jbGVhcigpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgZSA9IDAsIGkgPSB0Lmxlbmd0aDsgZSA8IGk7IGUrKykgdGhpcy5tZW1iZXJzLnB1c2godFtlXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmluZGV4KHQpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA+IC0xICYmIHRoaXMubWVtYmVycy5zcGxpY2UoZSwgMSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVhY2g6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIGkgPSB0aGlzLm1lbWJlcnMubGVuZ3RoOyBlIDwgaTsgZSsrKSB0LmFwcGx5KHRoaXMubWVtYmVyc1tlXSwgW2UsIHRoaXMubWVtYmVyc10pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2xlYXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZW1iZXJzID0gW10sIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxlbmd0aDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbWJlcnMubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoYXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXgodCkgPj0gMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVycy5pbmRleE9mKHQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVyc1t0XQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZmlyc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQodGhpcy5tZW1iZXJzLmxlbmd0aCAtIDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVycwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhLlNldCh0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIGEuRlguU2V0ID0gYS5pbnZlbnQoewogICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQgPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBhLlNldC5pbmhlcml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgZSBpbiBhLlNoYXBlLnByb3RvdHlwZSkgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5TaGFwZS5wcm90b3R5cGVbZV0gJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgYS5TZXQucHJvdG90eXBlW2VdICYmIHQucHVzaChlKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuU2V0LnByb3RvdHlwZVt0XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDAsIGkgPSB0aGlzLm1lbWJlcnMubGVuZ3RoOyBlIDwgaTsgZSsrKSB0aGlzLm1lbWJlcnNbZV0gJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5tZW1iZXJzW2VdW3RdICYmIHRoaXMubWVtYmVyc1tlXVt0XS5hcHBseSh0aGlzLm1lbWJlcnNbZV0sIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImFuaW1hdGUiID09IHQgPyB0aGlzLmZ4IHx8ICh0aGlzLmZ4ID0gbmV3IGEuRlguU2V0KHRoaXMpKSA6IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKSwgdCA9IFtdLCBhLkZYLnByb3RvdHlwZSkgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYS5GWC5wcm90b3R5cGVbZV0gJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgYS5GWC5TZXQucHJvdG90eXBlW2VdICYmIHQucHVzaChlKTsKICAgICAgICAgICAgICAgIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGEuRlguU2V0LnByb3RvdHlwZVt0XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgaSA9IHRoaXMuc2V0Lm1lbWJlcnMubGVuZ3RoOyBlIDwgaTsgZSsrKSB0aGlzLnNldC5tZW1iZXJzW2VdLmZ4W3RdLmFwcGx5KHRoaXMuc2V0Lm1lbWJlcnNbZV0uZngsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sIGEuZXh0ZW5kKGEuRWxlbWVudCwge30pLCBhLmV4dGVuZChhLkVsZW1lbnQsIHsKICAgICAgICAgICAgICAgIHJlbWVtYmVyOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSBpKGFyZ3VtZW50c1swXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gdCkgdGhpcy5yZW1lbWJlcihhLCB0W2FdKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT0gYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMubWVtb3J5KClbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtb3J5KClbdF0gPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9yZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSB0aGlzLl9tZW1vcnkgPSB7fTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgdCA+PSAwOyB0LS0pIGRlbGV0ZSB0aGlzLm1lbW9yeSgpW2FyZ3VtZW50c1t0XV07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtZW1vcnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tZW1vcnkgfHwgKHRoaXMuX21lbW9yeSA9IHt9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgYS5nZXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZ2V0RWxlbWVudEJ5SWQoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gKHQgfHwgIiIpLnRvU3RyaW5nKCkubWF0Y2goYS5yZWdleC5yZWZlcmVuY2UpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gZVsxXQogICAgICAgICAgICAgICAgfSh0KSB8fCB0KTsKICAgICAgICAgICAgICAgIHJldHVybiBhLmFkb3B0KGkpCiAgICAgICAgICAgIH0sIGEuc2VsZWN0ID0gZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBhLlNldChhLnV0aWxzLm1hcCgoaSB8fCBlKS5xdWVyeVNlbGVjdG9yQWxsKHQpLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmFkb3B0KHQpCiAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgIH0sIGEuZXh0ZW5kKGEuUGFyZW50LCB7CiAgICAgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zZWxlY3QodCwgdGhpcy5ub2RlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIG0gPSAiYWJjZGVmIi5zcGxpdCgiIik7CiAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0LkN1c3RvbUV2ZW50KSB7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICBpID0gaSB8fCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5pbml0Q3VzdG9tRXZlbnQodCwgaS5idWJibGVzLCBpLmNhbmNlbGFibGUsIGkuZGV0YWlsKSwgYQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHkucHJvdG90eXBlID0gdC5FdmVudC5wcm90b3R5cGUsIGEuQ3VzdG9tRXZlbnQgPSB5CiAgICAgICAgICAgIH0gZWxzZSBhLkN1c3RvbUV2ZW50ID0gdC5DdXN0b21FdmVudDsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9LCAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB6dChJdCwgSXQuZG9jdW1lbnQpCiAgICAgICAgfSkpIDogIm9iamVjdCIgPT09ICgidW5kZWZpbmVkIiA9PSB0eXBlb2YgZXhwb3J0cyA/ICJ1bmRlZmluZWQiIDogaShleHBvcnRzKSkgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG1vZHVsZS5leHBvcnRzID0gSXQuZG9jdW1lbnQgPyB6dChJdCwgSXQuZG9jdW1lbnQpIDogZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4genQodCwgdC5kb2N1bWVudCkKICAgICAgICB9IDogSXQuU1ZHID0genQoSXQsIEl0LmRvY3VtZW50KSwKICAgICAgICAvKiEgc3ZnLmZpbHRlci5qcyAtIHYyLjAuMiAtIDIwMTYtMDItMjQKICAgICAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vd291dC9zdmcuZmlsdGVyLmpzCiAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDE2IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFNWRy5GaWx0ZXIgPSBTVkcuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogImZpbHRlciIsCiAgICAgICAgICAgICAgICBpbmhlcml0OiBTVkcuUGFyZW50LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgc291cmNlOiAiU291cmNlR3JhcGhpYyIsCiAgICAgICAgICAgICAgICAgICAgc291cmNlQWxwaGE6ICJTb3VyY2VBbHBoYSIsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIkJhY2tncm91bmRJbWFnZSIsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEFscGhhOiAiQmFja2dyb3VuZEFscGhhIiwKICAgICAgICAgICAgICAgICAgICBmaWxsOiAiRmlsbFBhaW50IiwKICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICJTdHJva2VQYWludCIsCiAgICAgICAgICAgICAgICAgICAgYXV0b1NldEluOiAhMCwKICAgICAgICAgICAgICAgICAgICBwdXQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHQsIGUpLCAhdC5hdHRyKCJpbiIpICYmIHRoaXMuYXV0b1NldEluICYmIHQuYXR0cigiaW4iLCB0aGlzLnNvdXJjZSksIHQuYXR0cigicmVzdWx0IikgfHwgdC5hdHRyKCJyZXN1bHQiLCB0KSwgdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYmxlbmQ6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQmxlbmRFZmZlY3QodCwgZSwgaSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb2xvck1hdHJpeDogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db2xvck1hdHJpeEVmZmVjdCh0LCBlKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNvbnZvbHZlTWF0cml4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbnZvbHZlTWF0cml4RWZmZWN0KHQpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VHJhbnNmZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9uZW50VHJhbnNmZXJFZmZlY3QodCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb21wb3NpdGU6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9zaXRlRWZmZWN0KHQsIGUsIGkpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZmxvb2Q6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRmxvb2RFZmZlY3QodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHQsIGUpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuSW1hZ2VFZmZlY3QodCkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gW3ZvaWQgMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gYXJndW1lbnRzKSB0LnB1c2goYXJndW1lbnRzW2VdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyhTVkcuTWVyZ2VFZmZlY3QuYmluZC5hcHBseShTVkcuTWVyZ2VFZmZlY3QsIHQpKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdhdXNzaWFuQmx1cjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtb3JwaG9sb2d5OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgU1ZHLk1vcnBob2xvZ3lFZmZlY3QodCwgZSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkaWZmdXNlTGlnaHRpbmc6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlmZnVzZUxpZ2h0aW5nRWZmZWN0KHQsIGUsIGkpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50TWFwOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCh0LCBlLCBpLCBhLCBzKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyTGlnaHRpbmc6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdCh0LCBlLCBpLCBhKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRpbGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdHVyYnVsZW5jZTogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UdXJidWxlbmNlRWZmZWN0KHQsIGUsIGksIGEsIHMpKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVybCgjIiArIHRoaXMuYXR0cigiaWQiKSArICIpIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIFNWRy5leHRlbmQoU1ZHLkRlZnMsIHsKICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ICYmIHQuY2FsbChlLCBlKSwgZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLCB7CiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZzKCkuZmlsdGVyKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LCBTVkcuRywgU1ZHLk5lc3RlZCwgewogICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZXIgPSB0IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQgPyB0IDogdGhpcy5kb2MoKS5maWx0ZXIodCksIHRoaXMuZG9jKCkgJiYgdGhpcy5maWx0ZXJlci5kb2MoKSAhPT0gdGhpcy5kb2MoKSAmJiB0aGlzLmRvYygpLmRlZnMoKS5hZGQodGhpcy5maWx0ZXJlciksIHRoaXMuYXR0cigiZmlsdGVyIiwgdGhpcy5maWx0ZXJlciksIHRoaXMuZmlsdGVyZXIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1bmZpbHRlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVyICYmICEwID09PSB0ICYmIHRoaXMuZmlsdGVyZXIucmVtb3ZlKCksIGRlbGV0ZSB0aGlzLmZpbHRlcmVyLCB0aGlzLmF0dHIoImZpbHRlciIsIG51bGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCBTVkcuRWZmZWN0ID0gU1ZHLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IFNWRy5FbGVtZW50LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7IGluOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLnBhcmVudCgpICYmIHRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PSInICsgdGhpcy5hdHRyKCJpbiIpICsgJyJdJykuZ2V0KDApIHx8IHRoaXMuYXR0cigiaW4iKSA6IHRoaXMuYXR0cigiaW4iLCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IHQgPyB0aGlzLmF0dHIoInJlc3VsdCIpIDogdGhpcy5hdHRyKCJyZXN1bHQiLCB0KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIFNWRy5QYXJlbnRFZmZlY3QgPSBTVkcuaW52ZW50KHsKICAgICAgICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5oZXJpdDogU1ZHLlBhcmVudCwKICAgICAgICAgICAgICAgIGV4dGVuZDogeyBpbjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD0iJyArIHRoaXMuYXR0cigiaW4iKSArICciXScpLmdldCgwKSB8fCB0aGlzLmF0dHIoImluIikgOiB0aGlzLmF0dHIoImluIiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlc3VsdDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5hdHRyKCJyZXN1bHQiKSA6IHRoaXMuYXR0cigicmVzdWx0IiwgdCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgdCA9IHsKICAgICAgICAgICAgICAgIGJsZW5kOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLCB0LCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbG9yTWF0cml4OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5jb2xvck1hdHJpeCh0LCBlKS5pbih0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnZvbHZlTWF0cml4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5jb252b2x2ZU1hdHJpeCh0KS5pbih0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbXBvbmVudFRyYW5zZmVyOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5jb21wb25lbnRUcmFuc2Zlcih0KS5pbih0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbXBvc2l0ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpICYmIHRoaXMucGFyZW50KCkuY29tcG9zaXRlKHRoaXMsIHQsIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmxvb2Q6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLmZsb29kKHQsIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2Zmc2V0OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5vZmZzZXQodCwgZSkuaW4odGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbWFnZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpICYmIHRoaXMucGFyZW50KCkuaW1hZ2UodCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLCBbdGhpc10uY29uY2F0KGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2F1c3NpYW5CbHVyOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5nYXVzc2lhbkJsdXIodCwgZSkuaW4odGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtb3JwaG9sb2d5OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5tb3JwaG9sb2d5KHQsIGUpLmluKHRoaXMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGlmZnVzZUxpZ2h0aW5nOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkgJiYgdGhpcy5wYXJlbnQoKS5kaWZmdXNlTGlnaHRpbmcodCwgZSwgaSkuaW4odGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRNYXA6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLmRpc3BsYWNlbWVudE1hcCh0aGlzLCB0LCBlLCBpLCBhKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNwZWN1bGFyTGlnaHRpbmc6IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLnNwZWN1bGFyTGlnaHRpbmcodCwgZSwgaSwgYSkuaW4odGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0aWxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLnRpbGUoKS5pbih0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHR1cmJ1bGVuY2U6IGZ1bmN0aW9uKHQsIGUsIGksIGEsIHMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLnR1cmJ1bGVuY2UodCwgZSwgaSwgYSwgcykuaW4odGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgU1ZHLmV4dGVuZChTVkcuRWZmZWN0LCB0KSwgU1ZHLmV4dGVuZChTVkcuUGFyZW50RWZmZWN0LCB0KSwgU1ZHLkNoaWxkRWZmZWN0ID0gU1ZHLmludmVudCh7CiAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXQ6IFNWRy5FbGVtZW50LAogICAgICAgICAgICAgICAgZXh0ZW5kOiB7IGluOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cigiaW4iLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBlID0gewogICAgICAgICAgICAgICAgICAgIGJsZW5kOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cih7IGluOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4yOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogaSB8fCAibm9ybWFsIgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29sb3JNYXRyaXg6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm1hdHJpeCIgPT0gdCAmJiAoZSA9IHMoZSkpLCB0aGlzLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogdm9pZCAwID09PSBlID8gbnVsbCA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGNvbnZvbHZlTWF0cml4OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBzKHQpLCB0aGlzLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IE1hdGguc3FydCh0LnNwbGl0KCIgIikubGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbE1hdHJpeDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRlOiBmdW5jdGlvbih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cih7IGluOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4yOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZsb29kOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cigiZmxvb2QtY29sb3IiLCB0KSwgbnVsbCAhPSBlICYmIHRoaXMuYXR0cigiZmxvb2Qtb3BhY2l0eSIsIGUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHk6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGltYWdlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cigiaHJlZiIsIHQsIFNWRy54bGluaykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudE1hcDogZnVuY3Rpb24odCwgZSwgaSwgYSwgcykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoeyBpbjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeENoYW5uZWxTZWxlY3RvcjogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlDaGFubmVsU2VsZWN0b3I6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdhdXNzaWFuQmx1cjogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQgfHwgbnVsbCAhPSBlID8gdGhpcy5hdHRyKCJzdGREZXZpYXRpb24iLCByKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKSA6IHRoaXMuYXR0cigic3RkRGV2aWF0aW9uIiwgIjAgMCIpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtb3JwaG9sb2d5OiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGlsZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgICAgICB0dXJidWxlbmNlOiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1PY3RhdmVzOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aXRjaFRpbGVzOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUZyZXF1ZW5jeTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgU1ZHLlNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzWzBdLmVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZSA/IGUucHV0KHRoaXMpIDogKHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0IHx8IHRoaXMgaW5zdGFuY2VvZiBTVkcuUGFyZW50RWZmZWN0KSAmJiBlLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IEFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSA/IGFyZ3VtZW50c1swXSA6IGFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgdFtpXSBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGUgPyB0aGlzLnB1dCh0W2ldKSA6IHRoaXMucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRbaV0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRUcmFuc2ZlcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZ2IgPSBuZXcgU1ZHLlNldCwgWyJyIiwgImciLCAiYiIsICJhIl0uZm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1t0XSA9IG5ldyhTVkdbIkZ1bmMiICsgdC50b1VwcGVyQ2FzZSgpXSkoImlkZW50aXR5IiksIHRoaXMucmdiLmFkZCh0aGlzW3RdKSwgdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXNbdF0ubm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSksIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluIHQucmdiICYmIChbInIiLCAiZyIsICJiIl0uZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbZV0uYXR0cih0LnJnYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpLCBkZWxldGUgdC5yZ2IpLCB0KSB0aGlzW2VdLmF0dHIodFtlXSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRpZmZ1c2VMaWdodGluZzogZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZVNjYWxlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnVzZUNvbnN0YW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aDogaQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJMaWdodGluZzogZnVuY3Rpb24odCwgZSwgaSwgYSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZVNjYWxlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnVzZUNvbnN0YW50OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJFeHBvbmVudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGg6IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYSA9IHsKICAgICAgICAgICAgICAgICAgICBkaXN0YW50TGlnaHQ6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF6aW11dGg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGV2YXRpb246IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBvaW50TGlnaHQ6IGZ1bmN0aW9uKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgejogaQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3BvdExpZ2h0OiBmdW5jdGlvbih0LCBlLCBpLCBhLCBzLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNBdFg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNBdFk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNBdFo6IHIKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1lcmdlTm9kZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoImluIiwgdCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KSAmJiAodCA9IG5ldyBTVkcuQXJyYXkodCkpLCB0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxzKy8sICIiKS5yZXBsYWNlKC9ccyskLywgIiIpLnJlcGxhY2UoL1xzKy9nLCAiICIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHIodCkgewogICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHQpKSByZXR1cm4gdDsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCBpID0gdC5sZW5ndGgsIGEgPSBbXTsgZSA8IGk7IGUrKykgYS5wdXNoKHRbZV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGEuam9pbigiICIpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG8oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKCkge307CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlIGluICJmdW5jdGlvbiIgPT0gdHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gJiYgKHQgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLCBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYXJndW1lbnRzLCBhcmd1bWVudHMubGVuZ3RoIC0gMSwgMSkpLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBhcmd1bWVudHNbZV0pIHQoYXJndW1lbnRzW2VdW2ldLCBpLCBhcmd1bWVudHNbZV0pCiAgICAgICAgICAgIH1bInIiLCAiZyIsICJiIiwgImEiXS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBhWyJGdW5jIiArIHQudG9VcHBlckNhc2UoKV0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmF0dHIoInR5cGUiLCB0KSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0YWJsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoInRhYmxlVmFsdWVzIiwgYXJndW1lbnRzWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5lYXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRyKCJzbG9wZSIsIGFyZ3VtZW50c1sxXSksIHRoaXMuYXR0cigiaW50ZXJjZXB0IiwgYXJndW1lbnRzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJnYW1tYSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIoImFtcGxpdHVkZSIsIGFyZ3VtZW50c1sxXSksIHRoaXMuYXR0cigiZXhwb25lbnQiLCBhcmd1bWVudHNbMl0pLCB0aGlzLmF0dHIoIm9mZnNldCIsIGFyZ3VtZW50c1syXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgbyhlLCAoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKTsKICAgICAgICAgICAgICAgIFNWR1tpICsgIkVmZmVjdCJdID0gU1ZHLmludmVudCh7CiAgICAgICAgICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIFNWRy5jcmVhdGUoImZlIiArIGkpKSwgdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0aGlzLnJlc3VsdCh0aGlzLmF0dHIoImlkIikgKyAiT3V0IikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGluaGVyaXQ6IFNWRy5FZmZlY3QsCiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kOiB7fQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkpLCBvKGksIChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpOwogICAgICAgICAgICAgICAgU1ZHW2kgKyAiRWZmZWN0Il0gPSBTVkcuaW52ZW50KHsKICAgICAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgU1ZHLmNyZWF0ZSgiZmUiICsgaSkpLCB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXMucmVzdWx0KHRoaXMuYXR0cigiaWQiKSArICJPdXQiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdDogU1ZHLlBhcmVudEVmZmVjdCwKICAgICAgICAgICAgICAgICAgICBleHRlbmQ6IHt9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIG8oYSwgKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGUuc2xpY2UoMSk7CiAgICAgICAgICAgICAgICBTVkdbaV0gPSBTVkcuaW52ZW50KHsKICAgICAgICAgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgU1ZHLmNyZWF0ZSgiZmUiICsgaSkpLCB0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGluaGVyaXQ6IFNWRy5DaGlsZEVmZmVjdCwKICAgICAgICAgICAgICAgICAgICBleHRlbmQ6IHt9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LCB7IGluOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlID8gdGhpcy5hZGQodCwgMCkgOiB0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZSh0KSwgMCksIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCwgU1ZHLkJsZW5kRWZmZWN0LCBTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0LCB7CiAgICAgICAgICAgICAgICBpbjI6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdGhpcy5wYXJlbnQoKSAmJiB0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD0iJyArIHRoaXMuYXR0cigiaW4yIikgKyAnIl0nKS5nZXQoMCkgfHwgdGhpcy5hdHRyKCJpbjIiKSA6IHRoaXMuYXR0cigiaW4yIiwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksIFNWRy5maWx0ZXIgPSB7CiAgICAgICAgICAgICAgICBzZXBpYXRvbmU6IFsuMzQzLCAuNjY5LCAuMTE5LCAwLCAwLCAuMjQ5LCAuNjI2LCAuMTMsIDAsIDAsIC4xNzIsIC4zMzQsIC4xMTEsIDAsIDAsIDAsIDAsIDAsIDEsIDBdCiAgICAgICAgICAgIH0KICAgICAgICB9LmNhbGwodm9pZCAwKSwKICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCh0LCBzLCByLCBvLCBuLCBsLCBoKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gdC5zbGljZShzLCByIHx8IGgpLCBkID0gby5zbGljZShuLCBsIHx8IGgpLCBnID0gMCwgdSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zOiBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBbMCwgMF0KICAgICAgICAgICAgICAgICAgICB9LCBmID0gewogICAgICAgICAgICAgICAgICAgICAgICBwb3M6IFswLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IFswLCAwXQogICAgICAgICAgICAgICAgICAgIH07OykgewogICAgICAgICAgICAgICAgICAgIGlmIChjW2ddID0gZS5jYWxsKHUsIGNbZ10pLCBkW2ddID0gZS5jYWxsKGYsIGRbZ10pLCBjW2ddWzBdICE9IGRbZ11bMF0gfHwgIk0iID09IGNbZ11bMF0gfHwgIkEiID09IGNbZ11bMF0gJiYgKGNbZ11bNF0gIT0gZFtnXVs0XSB8fCBjW2ddWzVdICE9IGRbZ11bNV0pID8gKEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYywgW2csIDFdLmNvbmNhdChhLmNhbGwodSwgY1tnXSkpKSwgQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShkLCBbZywgMV0uY29uY2F0KGEuY2FsbChmLCBkW2ddKSkpKSA6IChjW2ddID0gaS5jYWxsKHUsIGNbZ10pLCBkW2ddID0gaS5jYWxsKGYsIGRbZ10pKSwgKytnID09IGMubGVuZ3RoICYmIGcgPT0gZC5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGcgPT0gYy5sZW5ndGggJiYgYy5wdXNoKFsiQyIsIHUucG9zWzBdLCB1LnBvc1sxXSwgdS5wb3NbMF0sIHUucG9zWzFdLCB1LnBvc1swXSwgdS5wb3NbMV1dKSwgZyA9PSBkLmxlbmd0aCAmJiBkLnB1c2goWyJDIiwgZi5wb3NbMF0sIGYucG9zWzFdLCBmLnBvc1swXSwgZi5wb3NbMV0sIGYucG9zWzBdLCBmLnBvc1sxXV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBjLAogICAgICAgICAgICAgICAgICAgIGRlc3Q6IGQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZSh0KSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRbMF0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ6IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAgICAgICAgICAgdFswXSA9ICJMIiwgdFsxXSA9IHRoaXMuc3RhcnRbMF0sIHRbMl0gPSB0aGlzLnN0YXJ0WzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICAgICAgICAgICAgdFswXSA9ICJMIiwgdFsyXSA9IHRoaXMucG9zWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJWIjoKICAgICAgICAgICAgICAgICAgICAgICAgdFswXSA9ICJMIiwgdFsyXSA9IHRbMV0sIHRbMV0gPSB0aGlzLnBvc1swXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiVCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHRbMF0gPSAiUSIsIHRbM10gPSB0WzFdLCB0WzRdID0gdFsyXSwgdFsxXSA9IHRoaXMucmVmbGVjdGlvblsxXSwgdFsyXSA9IHRoaXMucmVmbGVjdGlvblswXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgICAgICAgICAgIHRbMF0gPSAiQyIsIHRbNl0gPSB0WzRdLCB0WzVdID0gdFszXSwgdFs0XSA9IHRbMl0sIHRbM10gPSB0WzFdLCB0WzJdID0gdGhpcy5yZWZsZWN0aW9uWzFdLCB0WzFdID0gdGhpcy5yZWZsZWN0aW9uWzBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBpKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3MgPSBbdFtlIC0gMl0sIHRbZSAtIDFdXSwgLTEgIT0gIlNDUVQiLmluZGV4T2YodFswXSkgJiYgKHRoaXMucmVmbGVjdGlvbiA9IFsyICogdGhpcy5wb3NbMF0gLSB0W2UgLSA0XSwgMiAqIHRoaXMucG9zWzFdIC0gdFtlIC0gM11dKSwgdAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBhKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gW3RdOwogICAgICAgICAgICAgICAgc3dpdGNoICh0WzBdKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvcyA9IHRoaXMuc3RhcnQgPSBbdFsxXSwgdFsyXV0sIGU7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHRbNV0gPSB0WzNdID0gdFsxXSwgdFs2XSA9IHRbNF0gPSB0WzJdLCB0WzFdID0gdGhpcy5wb3NbMF0sIHRbMl0gPSB0aGlzLnBvc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiUSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHRbNl0gPSB0WzRdLCB0WzVdID0gdFszXSwgdFs0XSA9IDEgKiB0WzRdIC8gMyArIDIgKiB0WzJdIC8gMywgdFszXSA9IDEgKiB0WzNdIC8gMyArIDIgKiB0WzFdIC8gMywgdFsyXSA9IDEgKiB0aGlzLnBvc1sxXSAvIDMgKyAyICogdFsyXSAvIDMsIHRbMV0gPSAxICogdGhpcy5wb3NbMF0gLyAzICsgMiAqIHRbMV0gLyAzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJBIjoKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChlID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEsIHMsIHIsIG8sIG4sIGwsIGgsIGMsIGQsIGcsIHUsIGYsIHAsIHgsIGIsIHYsIG0sIHksIHcsIGssIEEsIFMsIEMsIEwsIFAsIE0gPSBNYXRoLmFicyhlWzFdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUID0gTWF0aC5hYnMoZVsyXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSA9IGVbM10gJSAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeiA9IGVbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCA9IGVbNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGVbNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IGVbN10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IG5ldyBTVkcuUG9pbnQodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiA9IG5ldyBTVkcuUG9pbnQoRSwgWSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IE0gfHwgMCA9PT0gVCB8fCBGLnggPT09IFIueCAmJiBGLnkgPT09IFIueSkgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIkMiLCBGLngsIEYueSwgUi54LCBSLnksIFIueCwgUi55XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuZXcgU1ZHLlBvaW50KChGLnggLSBSLngpIC8gMiwgKEYueSAtIFIueSkgLyAyKS50cmFuc2Zvcm0oKG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoSSkpLCAoYSA9IGkueCAqIGkueCAvIChNICogTSkgKyBpLnkgKiBpLnkgLyAoVCAqIFQpKSA+IDEgJiYgKE0gKj0gYSA9IE1hdGguc3FydChhKSwgVCAqPSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShJKS5zY2FsZSgxIC8gTSwgMSAvIFQpLnJvdGF0ZSgtSSksIEYgPSBGLnRyYW5zZm9ybShzKSwgUiA9IFIudHJhbnNmb3JtKHMpLCByID0gW1IueCAtIEYueCwgUi55IC0gRi55XSwgbiA9IHJbMF0gKiByWzBdICsgclsxXSAqIHJbMV0sIG8gPSBNYXRoLnNxcnQobiksIHJbMF0gLz0gbywgclsxXSAvPSBvLCBsID0gbiA8IDQgPyBNYXRoLnNxcnQoMSAtIG4gLyA0KSA6IDAsIHogPT09IFggJiYgKGwgKj0gLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG5ldyBTVkcuUG9pbnQoKFIueCArIEYueCkgLyAyICsgbCAqIC1yWzFdLCAoUi55ICsgRi55KSAvIDIgKyBsICogclswXSksIGMgPSBuZXcgU1ZHLlBvaW50KEYueCAtIGgueCwgRi55IC0gaC55KSwgZCA9IG5ldyBTVkcuUG9pbnQoUi54IC0gaC54LCBSLnkgLSBoLnkpLCBnID0gTWF0aC5hY29zKGMueCAvIE1hdGguc3FydChjLnggKiBjLnggKyBjLnkgKiBjLnkpKSwgYy55IDwgMCAmJiAoZyAqPSAtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gTWF0aC5hY29zKGQueCAvIE1hdGguc3FydChkLnggKiBkLnggKyBkLnkgKiBkLnkpKSwgZC55IDwgMCAmJiAodSAqPSAtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYICYmIGcgPiB1ICYmICh1ICs9IDIgKiBNYXRoLlBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICFYICYmIGcgPCB1ICYmICh1IC09IDIgKiBNYXRoLlBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IE1hdGguY2VpbCgyICogTWF0aC5hYnMoZyAtIHUpIC8gTWF0aC5QSSksIGIgPSBbXSwgdiA9IGcsIGYgPSAodSAtIGcpIC8gcCwgeCA9IDQgKiBNYXRoLnRhbihmIC8gNCkgLyAzLCBrID0gMDsgayA8PSBwOyBrKyspIHkgPSBNYXRoLmNvcyh2KSwgbSA9IE1hdGguc2luKHYpLCB3ID0gbmV3IFNWRy5Qb2ludChoLnggKyB5LCBoLnkgKyBtKSwgYltrXSA9IFtuZXcgU1ZHLlBvaW50KHcueCArIHggKiBtLCB3LnkgLSB4ICogeSksIHcsIG5ldyBTVkcuUG9pbnQody54IC0geCAqIG0sIHcueSArIHggKiB5KV0sIHYgKz0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYlswXVswXSA9IGJbMF1bMV0uY2xvbmUoKSwgYltiLmxlbmd0aCAtIDFdWzJdID0gYltiLmxlbmd0aCAtIDFdWzFdLmNsb25lKCksIHMgPSAobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShJKS5zY2FsZShNLCBUKS5yb3RhdGUoLUkpLCBrID0gMCwgQSA9IGIubGVuZ3RoOyBrIDwgQTsgaysrKSBiW2tdWzBdID0gYltrXVswXS50cmFuc2Zvcm0ocyksIGJba11bMV0gPSBiW2tdWzFdLnRyYW5zZm9ybShzKSwgYltrXVsyXSA9IGJba11bMl0udHJhbnNmb3JtKHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMSwgQSA9IGIubGVuZ3RoOyBrIDwgQTsgaysrKSBTID0gKHcgPSBiW2sgLSAxXVsyXSkueCwgQyA9IHcueSwgTCA9ICh3ID0gYltrXVswXSkueCwgUCA9IHcueSwgRSA9ICh3ID0gYltrXVsxXSkueCwgWSA9IHcueSwgSC5wdXNoKFsiQyIsIFMsIEMsIEwsIFAsIEUsIFldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBICiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcy5wb3MsIHQpKVswXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRbMF0gPSAiQyIsIHRoaXMucG9zID0gW3RbNV0sIHRbNl1dLCB0aGlzLnJlZmxlY3Rpb24gPSBbMiAqIHRbNV0gLSB0WzNdLCAyICogdFs2XSAtIHRbNF1dLCBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHModCwgZSkgewogICAgICAgICAgICAgICAgaWYgKCExID09PSBlKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gZSwgYSA9IHQubGVuZ3RoOyBpIDwgYTsgKytpKQogICAgICAgICAgICAgICAgICAgIGlmICgiTSIgPT0gdFtpXVswXSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgICAgICBTVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXksIHsKICAgICAgICAgICAgICAgIG1vcnBoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMudmFsdWUsIGEgPSB0aGlzLnBhcnNlKGUpLCByID0gMCwgbyA9IDAsIG4gPSAhMSwgbCA9ICExOyAhMSAhPT0gciB8fCAhMSAhPT0gbzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGg7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzKGksICExICE9PSByICYmIHIgKyAxKSwgbCA9IHMoYSwgITEgIT09IG8gJiYgbyArIDEpLCAhMSA9PT0gciAmJiAociA9IDAgPT0gKGggPSBuZXcgU1ZHLlBhdGhBcnJheShjLnN0YXJ0KS5iYm94KCkpLmhlaWdodCB8fCAwID09IGgud2lkdGggPyBpLnB1c2goaVswXSkgLSAxIDogaS5wdXNoKFsiTSIsIGgueCArIGgud2lkdGggLyAyLCBoLnkgKyBoLmhlaWdodCAvIDJdKSAtIDEpLCAhMSA9PT0gbyAmJiAobyA9IDAgPT0gKGggPSBuZXcgU1ZHLlBhdGhBcnJheShjLmRlc3QpLmJib3goKSkuaGVpZ2h0IHx8IDAgPT0gaC53aWR0aCA/IGEucHVzaChhWzBdKSAtIDEgOiBhLnB1c2goWyJNIiwgaC54ICsgaC53aWR0aCAvIDIsIGgueSArIGguaGVpZ2h0IC8gMl0pIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdChpLCByLCBuLCBhLCBvLCBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkuc2xpY2UoMCwgcikuY29uY2F0KGMuc3RhcnQsICExID09PSBuID8gW10gOiBpLnNsaWNlKG4pKSwgYSA9IGEuc2xpY2UoMCwgbykuY29uY2F0KGMuZGVzdCwgITEgPT09IGwgPyBbXSA6IGEuc2xpY2UobCkpLCByID0gITEgIT09IG4gJiYgciArIGMuc3RhcnQubGVuZ3RoLCBvID0gITEgIT09IGwgJiYgbyArIGMuZGVzdC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPSBpLCB0aGlzLmRlc3RpbmF0aW9uID0gbmV3IFNWRy5QYXRoQXJyYXksIHRoaXMuZGVzdGluYXRpb24udmFsdWUgPSBhLCB0aGlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSgpLAogICAgICAgIC8qISBzdmcuZHJhZ2dhYmxlLmpzIC0gdjIuMi4yIC0gMjAxOS0wMS0wOAogICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmdkb3Rqcy9zdmcuZHJhZ2dhYmxlLmpzCiAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDE5IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIHQodCkgewogICAgICAgICAgICAgICAgdC5yZW1lbWJlcigiX2RyYWdnYWJsZSIsIHRoaXMpLCB0aGlzLmVsID0gdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cmFpbnQgPSB0LCB0aGlzLnZhbHVlID0gZSwgdGhpcy5lbC5vbigibW91c2Vkb3duLmRyYWciLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGkuc3RhcnQodCkKICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5vbigidG91Y2hzdGFydC5kcmFnIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpLnN0YXJ0KHQpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9ICh0ID0gdCB8fCB3aW5kb3cuZXZlbnQpLmNoYW5nZWRUb3VjaGVzICYmIHQuY2hhbmdlZFRvdWNoZXNbMF0gfHwgdDsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnAueCA9IGkuY2xpZW50WCAtIChlIHx8IDApLCB0aGlzLnAueSA9IGkuY2xpZW50WSwgdGhpcy5wLm1hdHJpeFRyYW5zZm9ybSh0aGlzLm0pCiAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5lbC5iYm94KCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQgJiYgKHQgPSB0aGlzLmVsLnJib3goKSksICh0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLkcgfHwgdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5Vc2UgfHwgdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQpICYmICh0LnggPSB0aGlzLmVsLngoKSwgdC55ID0gdGhpcy5lbC55KCkpLCB0CiAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKCJjbGljayIgIT0gdC50eXBlICYmICJtb3VzZWRvd24iICE9IHQudHlwZSAmJiAibW91c2Vtb3ZlIiAhPSB0LnR5cGUgfHwgMSA9PSAodC53aGljaCB8fCB0LmJ1dHRvbnMpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVsLmZpcmUoImJlZm9yZWRyYWciLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgfSksICF0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCksIHRoaXMucGFyZW50ID0gdGhpcy5wYXJlbnQgfHwgdGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCkgfHwgdGhpcy5lbC5wYXJlbnQoU1ZHLkRvYyksIHRoaXMucCA9IHRoaXMucGFyZW50Lm5vZGUuY3JlYXRlU1ZHUG9pbnQoKSwgdGhpcy5tID0gdGhpcy5lbC5ub2RlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIGEgPSB0aGlzLmdldEJCb3goKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuVGV4dCkgc3dpdGNoIChpID0gdGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLCB0aGlzLmVsLmF0dHIoInRleHQtYW5jaG9yIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm1pZGRsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAvPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic3RhcnQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFBvaW50cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50OiB0aGlzLnRyYW5zZm9ybVBvaW50KHQsIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0aGlzLmVsLnRyYW5zZm9ybSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFNWRy5vbih3aW5kb3csICJtb3VzZW1vdmUuZHJhZyIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmRyYWcodCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBTVkcub24od2luZG93LCAidG91Y2htb3ZlLmRyYWciLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5kcmFnKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgU1ZHLm9uKHdpbmRvdywgIm1vdXNldXAuZHJhZyIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVuZCh0KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIFNWRy5vbih3aW5kb3csICJ0b3VjaGVuZC5kcmFnIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZW5kKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5maXJlKCJkcmFnc3RhcnQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IHRoaXMuc3RhcnRQb2ludHMucG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiB0aGlzLm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kcmFnID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldEJCb3goKSwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy50cmFuc2Zvcm1Qb2ludCh0KSwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5zdGFydFBvaW50cy5ib3gueCArIGkueCAtIHRoaXMuc3RhcnRQb2ludHMucG9pbnQueCwKICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5zdGFydFBvaW50cy5ib3gueSArIGkueSAtIHRoaXMuc3RhcnRQb2ludHMucG9pbnQueSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5jb25zdHJhaW50LAogICAgICAgICAgICAgICAgICAgIG8gPSBpLnggLSB0aGlzLnN0YXJ0UG9pbnRzLnBvaW50LngsCiAgICAgICAgICAgICAgICAgICAgbiA9IGkueSAtIHRoaXMuc3RhcnRQb2ludHMucG9pbnQueTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmVsLmZpcmUoImRyYWdtb3ZlIiwgewogICAgICAgICAgICAgICAgICAgICAgICBldmVudDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgcDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgbTogdGhpcy5tLAogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSByLmNhbGwodGhpcy5lbCwgYSwgcywgdGhpcy5tKTsKICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiIgPT0gdHlwZW9mIGwgJiYgKGwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGwKICAgICAgICAgICAgICAgICAgICB9KSwgITAgPT09IGwueCA/IHRoaXMuZWwueChhKSA6ICExICE9PSBsLnggJiYgdGhpcy5lbC54KGwueCksICEwID09PSBsLnkgPyB0aGlzLmVsLnkocykgOiAhMSAhPT0gbC55ICYmIHRoaXMuZWwueShsLnkpCiAgICAgICAgICAgICAgICB9IGVsc2UgIm9iamVjdCIgPT0gdHlwZW9mIHIgJiYgKG51bGwgIT0gci5taW5YICYmIGEgPCByLm1pblggPyBvID0gKGEgPSByLm1pblgpIC0gdGhpcy5zdGFydFBvaW50cy5ib3gueCA6IG51bGwgIT0gci5tYXhYICYmIGEgPiByLm1heFggLSBlLndpZHRoICYmIChvID0gKGEgPSByLm1heFggLSBlLndpZHRoKSAtIHRoaXMuc3RhcnRQb2ludHMuYm94LngpLCBudWxsICE9IHIubWluWSAmJiBzIDwgci5taW5ZID8gbiA9IChzID0gci5taW5ZKSAtIHRoaXMuc3RhcnRQb2ludHMuYm94LnkgOiBudWxsICE9IHIubWF4WSAmJiBzID4gci5tYXhZIC0gZS5oZWlnaHQgJiYgKG4gPSAocyA9IHIubWF4WSAtIGUuaGVpZ2h0KSAtIHRoaXMuc3RhcnRQb2ludHMuYm94LnkpLCBudWxsICE9IHIuc25hcFRvR3JpZCAmJiAoYSAtPSBhICUgci5zbmFwVG9HcmlkLCBzIC09IHMgJSByLnNuYXBUb0dyaWQsIG8gLT0gbyAlIHIuc25hcFRvR3JpZCwgbiAtPSBuICUgci5zbmFwVG9HcmlkKSwgdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HID8gdGhpcy5lbC5tYXRyaXgodGhpcy5zdGFydFBvaW50cy50cmFuc2Zvcm0pLnRyYW5zZm9ybSh7CiAgICAgICAgICAgICAgICAgICAgeDogbywKICAgICAgICAgICAgICAgICAgICB5OiBuCiAgICAgICAgICAgICAgICB9LCAhMCkgOiB0aGlzLmVsLm1vdmUoYSwgcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmRyYWcodCk7CiAgICAgICAgICAgICAgICB0aGlzLmVsLmZpcmUoImRyYWdlbmQiLCB7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHQsCiAgICAgICAgICAgICAgICAgICAgcDogZSwKICAgICAgICAgICAgICAgICAgICBtOiB0aGlzLm0sCiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcwogICAgICAgICAgICAgICAgfSksIFNWRy5vZmYod2luZG93LCAibW91c2Vtb3ZlLmRyYWciKSwgU1ZHLm9mZih3aW5kb3csICJ0b3VjaG1vdmUuZHJhZyIpLCBTVkcub2ZmKHdpbmRvdywgIm1vdXNldXAuZHJhZyIpLCBTVkcub2ZmKHdpbmRvdywgInRvdWNoZW5kLmRyYWciKQogICAgICAgICAgICB9LCBTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LCB7CiAgICAgICAgICAgICAgICBkcmFnZ2FibGU6IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iICE9IHR5cGVvZiBlICYmICJvYmplY3QiICE9IHR5cGVvZiBlIHx8IChpID0gZSwgZSA9ICEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMucmVtZW1iZXIoIl9kcmFnZ2FibGUiKSB8fCBuZXcgdCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSB2b2lkIDAgPT09IGUgfHwgZSkgPyBhLmluaXQoaSB8fCB7fSwgZSkgOiAodGhpcy5vZmYoIm1vdXNlZG93bi5kcmFnIiksIHRoaXMub2ZmKCJ0b3VjaHN0YXJ0LmRyYWciKSksIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LmNhbGwodm9pZCAwKSwKICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsID0gdCwgdC5yZW1lbWJlcigiX3NlbGVjdEhhbmRsZXIiLCB0aGlzKSwgdGhpcy5wb2ludFNlbGVjdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiAhMQogICAgICAgICAgICAgICAgfSwgdGhpcy5yZWN0U2VsZWN0aW9uID0gewogICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6ICExCiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvaW50c0xpc3QgPSB7CiAgICAgICAgICAgICAgICAgICAgbHQ6IFswLCAwXSwKICAgICAgICAgICAgICAgICAgICBydDogWyJ3aWR0aCIsIDBdLAogICAgICAgICAgICAgICAgICAgIHJiOiBbIndpZHRoIiwgImhlaWdodCJdLAogICAgICAgICAgICAgICAgICAgIGxiOiBbMCwgImhlaWdodCJdLAogICAgICAgICAgICAgICAgICAgIHQ6IFsid2lkdGgiLCAwXSwKICAgICAgICAgICAgICAgICAgICByOiBbIndpZHRoIiwgImhlaWdodCJdLAogICAgICAgICAgICAgICAgICAgIGI6IFsid2lkdGgiLCAiaGVpZ2h0Il0sCiAgICAgICAgICAgICAgICAgICAgbDogWzAsICJoZWlnaHQiXQogICAgICAgICAgICAgICAgfSwgdGhpcy5wb2ludENvb3JkID0gZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gInN0cmluZyIgIT0gdHlwZW9mIHQgPyB0IDogZVt0XTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA/IGEgLyAyIDogYQogICAgICAgICAgICAgICAgfSwgdGhpcy5wb2ludENvb3JkcyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMucG9pbnRzTGlzdFt0XTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLnBvaW50Q29vcmQoaVswXSwgZSwgInQiID09PSB0IHx8ICJiIiA9PT0gdCksCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHRoaXMucG9pbnRDb29yZChpWzFdLCBlLCAiciIgPT09IHQgfHwgImwiID09PSB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmVsLmJib3goKTsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHt9OwogICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cy5wb2ludHM7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBzIGluIHRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzKSB0aGlzLm9wdGlvbnNbc10gPSB0aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0c1tzXSwgdm9pZCAwICE9PSBlW3NdICYmICh0aGlzLm9wdGlvbnNbc10gPSBlW3NdKTsKICAgICAgICAgICAgICAgIHZhciByID0gWyJwb2ludHMiLCAicG9pbnRzRXhjbHVkZSJdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgcyBpbiByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLm9wdGlvbnNbcltzXV07CiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIG8gPyBvID0gby5sZW5ndGggPiAwID8gby5zcGxpdCgvXHMqLFxzKi9pKSA6IFtdIDogImJvb2xlYW4iID09IHR5cGVvZiBvICYmICJwb2ludHMiID09PSByW3NdICYmIChvID0gbyA/IGEgOiBbXSksIHRoaXMub3B0aW9uc1tyW3NdXSA9IG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wb2ludHMgPSBbYSwgdGhpcy5vcHRpb25zLnBvaW50c10ucmVkdWNlKChmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmluZGV4T2YodCkgPiAtMQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9wdGlvbnMucG9pbnRzID0gW3RoaXMub3B0aW9ucy5wb2ludHMsIHRoaXMub3B0aW9ucy5wb2ludHNFeGNsdWRlXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5kZXhPZih0KSA8IDAKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5wYXJlbnQgPSB0aGlzLmVsLnBhcmVudCgpLCB0aGlzLm5lc3RlZCA9IHRoaXMubmVzdGVkIHx8IHRoaXMucGFyZW50Lmdyb3VwKCksIHRoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUoaS54LCBpLnkpKSwgdGhpcy5vcHRpb25zLmRlZXBTZWxlY3QgJiYgLTEgIT09IFsibGluZSIsICJwb2x5bGluZSIsICJwb2x5Z29uIl0uaW5kZXhPZih0aGlzLmVsLnR5cGUpID8gdGhpcy5zZWxlY3RQb2ludHModCkgOiB0aGlzLnNlbGVjdFJlY3QodCksIHRoaXMub2JzZXJ2ZSgpLCB0aGlzLmNsZWFudXAoKQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zZWxlY3RQb2ludHMgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkID0gdCwgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQgfHwgKHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0ID0gdGhpcy5wYXJlbnQuc2V0KCksIHRoaXMuZHJhd1BvaW50cygpKSwgdGhpcwogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRQb2ludEFycmF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZWwuYmJveCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtlWzBdIC0gdC54LCBlWzFdIC0gdC55XQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmRyYXdQb2ludHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLCBlID0gdGhpcy5nZXRQb2ludEFycmF5KCksIGkgPSAwLCBhID0gZS5sZW5ndGg7IGkgPCBhOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPSBpIHx8IHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQgPyBpLnByZXZlbnREZWZhdWx0KCkgOiBpLnJldHVyblZhbHVlID0gITEsIGkuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpLnBhZ2VYIHx8IGkudG91Y2hlc1swXS5wYWdlWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkucGFnZVkgfHwgaS50b3VjaGVzWzBdLnBhZ2VZOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZWwuZmlyZSgicG9pbnQiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfShpKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZHJhd1BvaW50KGVbaV1bMF0sIGVbaV1bMV0pLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzICsgIl9wb2ludCIpLm9uKCJ0b3VjaHN0YXJ0Iiwgcykub24oIm1vdXNlZG93biIsIHMpOwogICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmFkZChyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kcmF3UG9pbnQgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3B0aW9ucy5wb2ludFR5cGU7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJjaXJjbGUiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInJlY3QiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcmF3UmVjdCh0LCBlKTsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgaSkgcmV0dXJuIGkuY2FsbCh0aGlzLCB0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duICIgKyBpICsgIiBwb2ludCB0eXBlISIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmRyYXdDaXJjbGUgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LCBlKQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5kcmF3UmVjdCA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5lc3RlZC5yZWN0KHRoaXMub3B0aW9ucy5wb2ludFNpemUsIHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LCBlKQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS51cGRhdGVQb2ludFNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmdldFBvaW50QXJyYXkoKTsKICAgICAgICAgICAgICAgIHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN4KCkgPT09IHRbZV1bMF0gJiYgdGhpcy5jeSgpID09PSB0W2VdWzFdIHx8IHRoaXMuY2VudGVyKHRbZV1bMF0sIHRbZV1bMV0pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUudXBkYXRlUmVjdFNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLmVsLmJib3goKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZS5oZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGggJiYgdGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0LnBvaW50Q29vcmRzKGksIGUpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnJlY3RTZWxlY3Rpb24uc2V0LmdldChhICsgMSkuY2VudGVyKHMueCwgcy55KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoaSAtIDEpLmNlbnRlcihlLndpZHRoIC8gMiwgMjApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNlbGVjdFJlY3QgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZWwuYmJveCgpOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIChpID0gaSB8fCB3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0ID8gaS5wcmV2ZW50RGVmYXVsdCgpIDogaS5yZXR1cm5WYWx1ZSA9ICExLCBpLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkucGFnZVggfHwgaS50b3VjaGVzWzBdLnBhZ2VYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkucGFnZVkgfHwgaS50b3VjaGVzWzBdLnBhZ2VZOwogICAgICAgICAgICAgICAgICAgICAgICBlLmVsLmZpcmUodCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogaQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCA9IHQsIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQgPSB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0IHx8IHRoaXMucGFyZW50LnNldCgpLCB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKSB8fCB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZCh0aGlzLm5lc3RlZC5yZWN0KGkud2lkdGgsIGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksIHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoICYmIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCkgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsIHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLnBvaW50Q29vcmRzKHQsIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuZHJhd1BvaW50KHIueCwgci55KS5hdHRyKCJjbGFzcyIsIGUub3B0aW9ucy5jbGFzc1BvaW50cyArICJfIiArIHQpLm9uKCJtb3VzZWRvd24iLCBhKHQpKS5vbigidG91Y2hzdGFydCIsIGEodCkpOwogICAgICAgICAgICAgICAgICAgICAgICBlLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChvKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhlLm9wdGlvbnMuY2xhc3NQb2ludHMpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQgJiYgKHRoaXMub3B0aW9ucy5wb2ludHMgJiYgIXRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDkpIHx8ICF0aGlzLm9wdGlvbnMucG9pbnRzICYmICF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgxKSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ID0gdCB8fCB3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0ID8gdC5wcmV2ZW50RGVmYXVsdCgpIDogdC5yZXR1cm5WYWx1ZSA9ICExLCB0LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LnBhZ2VYIHx8IHQudG91Y2hlc1swXS5wYWdlWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdC5wYWdlWSB8fCB0LnRvdWNoZXNbMF0ucGFnZVk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVsLmZpcmUoInJvdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmRyYXdQb2ludChpLndpZHRoIC8gMiwgMjApLmF0dHIoImNsYXNzIiwgdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzICsgIl9yb3QiKS5vbigidG91Y2hzdGFydCIsIHMpLm9uKCJtb3VzZWRvd24iLCBzKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChyKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5oYW5kbGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZWwuYmJveCgpOwogICAgICAgICAgICAgICAgdGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZSh0LngsIHQueSkpLCB0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCAmJiB0aGlzLnVwZGF0ZVJlY3RTZWxlY3Rpb24oKSwgdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkICYmIHRoaXMudXBkYXRlUG9pbnRTZWxlY3Rpb24oKQogICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5vYnNlcnZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoTXV0YXRpb25PYnNlcnZlcikKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQgfHwgdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKSB0aGlzLm9ic2VydmVySW5zdCA9IHRoaXMub2JzZXJ2ZXJJbnN0IHx8IG5ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5oYW5kbGVyKCkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMub2JzZXJ2ZXJJbnN0Lm9ic2VydmUodGhpcy5lbC5ub2RlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6ICEwCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVySW5zdC5kaXNjb25uZWN0KCksIGRlbGV0ZSB0aGlzLm9ic2VydmVySW5zdAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9IGVsc2UgdGhpcy5lbC5vZmYoIkRPTUF0dHJNb2RpZmllZC5zZWxlY3QiKSwgKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkIHx8IHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCkgJiYgdGhpcy5lbC5vbigiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5oYW5kbGVyKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuY2xlYW51cCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIXRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkICYmIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQgJiYgKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSkpLCB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksIGRlbGV0ZSB0aGlzLnJlY3RTZWxlY3Rpb24uc2V0KSwgIXRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCAmJiB0aGlzLnBvaW50U2VsZWN0aW9uLnNldCAmJiAodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSkpLCB0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5jbGVhcigpLCBkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLCB0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQgfHwgdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQgfHwgKHRoaXMubmVzdGVkLnJlbW92ZSgpLCBkZWxldGUgdGhpcy5uZXN0ZWQpCiAgICAgICAgICAgIH0sIFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQsIHsKICAgICAgICAgICAgICAgIHNlbGVjdGl6ZTogZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAoaSA9IGUsIGUgPSAhMCksICh0aGlzLnJlbWVtYmVyKCJfc2VsZWN0SGFuZGxlciIpIHx8IG5ldyB0KHRoaXMpKS5pbml0KHZvaWQgMCA9PT0gZSB8fCBlLCBpIHx8IHt9KSwgdGhpcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgU1ZHLkVsZW1lbnQucHJvdG90eXBlLnNlbGVjdGl6ZS5kZWZhdWx0cyA9IHsKICAgICAgICAgICAgICAgIHBvaW50czogWyJsdCIsICJydCIsICJyYiIsICJsYiIsICJ0IiwgInIiLCAiYiIsICJsIl0sCiAgICAgICAgICAgICAgICBwb2ludHNFeGNsdWRlOiBbXSwKICAgICAgICAgICAgICAgIGNsYXNzUmVjdDogInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0IiwKICAgICAgICAgICAgICAgIGNsYXNzUG9pbnRzOiAic3ZnX3NlbGVjdF9wb2ludHMiLAogICAgICAgICAgICAgICAgcG9pbnRTaXplOiA3LAogICAgICAgICAgICAgICAgcm90YXRpb25Qb2ludDogITAsCiAgICAgICAgICAgICAgICBkZWVwU2VsZWN0OiAhMSwKICAgICAgICAgICAgICAgIHBvaW50VHlwZTogImNpcmNsZSIKICAgICAgICAgICAgfQogICAgICAgIH0oKSwKICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5yZW1lbWJlcigiX3Jlc2l6ZUhhbmRsZXIiLCB0aGlzKSwgdGhpcy5lbCA9IHQsIHRoaXMucGFyYW1ldGVycyA9IHt9LCB0aGlzLmxhc3RVcGRhdGVDYWxsID0gbnVsbCwgdGhpcy5wID0gdC5kb2MoKS5ub2RlLmNyZWF0ZVNWR1BvaW50KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50ID0gZnVuY3Rpb24odCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnAueCA9IHQgLSAodGhpcy5vZmZzZXQueCAtIHdpbmRvdy5wYWdlWE9mZnNldCksIHRoaXMucC55ID0gZSAtICh0aGlzLm9mZnNldC55IC0gd2luZG93LnBhZ2VZT2Zmc2V0KSwgdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpIHx8IHRoaXMubSkKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLl9leHRyYWN0UG9zaXRpb24gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogbnVsbCAhPSB0LmNsaWVudFggPyB0LmNsaWVudFggOiB0LnRvdWNoZXNbMF0uY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbnVsbCAhPSB0LmNsaWVudFkgPyB0LmNsaWVudFkgOiB0LnRvdWNoZXNbMF0uY2xpZW50WQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0b3AoKSwgInN0b3AiICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5vcHRpb25zID0ge30sIHRoaXMuZWwucmVzaXplLmRlZmF1bHRzKSB0aGlzLm9wdGlvbnNbaV0gPSB0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0c1tpXSwgdm9pZCAwICE9PSB0W2ldICYmICh0aGlzLm9wdGlvbnNbaV0gPSB0W2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5vbigibHQucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oInJ0LnJlc2l6ZSIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlc2l6ZSh0IHx8IHdpbmRvdy5ldmVudCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLmVsLm9uKCJyYi5yZXNpemUiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXNpemUodCB8fCB3aW5kb3cuZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5vbigibGIucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oInQucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oInIucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oImIucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oImwucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuZWwub24oInJvdC5yZXNpemUiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXNpemUodCB8fCB3aW5kb3cuZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5vbigicG9pbnQucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzaXplKHQgfHwgd2luZG93LmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwub2ZmKCJsdC5yZXNpemUiKSwgdGhpcy5lbC5vZmYoInJ0LnJlc2l6ZSIpLCB0aGlzLmVsLm9mZigicmIucmVzaXplIiksIHRoaXMuZWwub2ZmKCJsYi5yZXNpemUiKSwgdGhpcy5lbC5vZmYoInQucmVzaXplIiksIHRoaXMuZWwub2ZmKCJyLnJlc2l6ZSIpLCB0aGlzLmVsLm9mZigiYi5yZXNpemUiKSwgdGhpcy5lbC5vZmYoImwucmVzaXplIiksIHRoaXMuZWwub2ZmKCJyb3QucmVzaXplIiksIHRoaXMuZWwub2ZmKCJwb2ludC5yZXNpemUiKSwgdGhpcwogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB0aGlzLm0gPSB0aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLCB0aGlzLm9mZnNldCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogd2luZG93LnBhZ2VYT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICB5OiB3aW5kb3cucGFnZVlPZmZzZXQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQuZGV0YWlsLmV2ZW50KTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdGhpcy5lbC50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcDogdGhpcy50cmFuc2Zvcm1Qb2ludChpLngsIGkueSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB0LmRldGFpbC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogdC5kZXRhaWwueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveDogdGhpcy5lbC5iYm94KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy5lbC50cmFuc2Zvcm0oKS5yb3RhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICB9LCAidGV4dCIgPT09IHRoaXMuZWwudHlwZSAmJiAodGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplID0gdGhpcy5lbC5hdHRyKClbImZvbnQtc2l6ZSJdKSwgdm9pZCAwICE9PSB0LmRldGFpbC5pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmkgPSB0LmRldGFpbC5pLCB0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHMgPSBbYVt0LmRldGFpbC5pXVswXSwgYVt0LmRldGFpbC5pXVsxXV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibHQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5zbmFwVG9HcmlkKHQsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoIC0gaVswXSA+IDAgJiYgdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQgLSBpWzFdID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInRleHQiID09PSB0aGlzLnBhcmFtZXRlcnMudHlwZSkgcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LnggKyBpWzBdLCB0aGlzLnBhcmFtZXRlcnMuYm94LnkpLCB2b2lkIHRoaXMuZWwuYXR0cigiZm9udC1zaXplIiwgdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplIC0gaVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LnggKyBpWzBdLCB0aGlzLnBhcmFtZXRlcnMuYm94LnkgKyBpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGggLSBpWzBdLCB0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCAtIGlbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJydCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGMgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnNuYXBUb0dyaWQodCwgZSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGggKyBpWzBdID4gMCAmJiB0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCAtIGlbMV0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidGV4dCIgPT09IHRoaXMucGFyYW1ldGVycy50eXBlKSByZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCAtIGlbMF0sIHRoaXMucGFyYW1ldGVycy5ib3gueSksIHZvaWQgdGhpcy5lbC5hdHRyKCJmb250LXNpemUiLCB0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUgKyBpWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpLCAhMCksIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsIHRoaXMucGFyYW1ldGVycy5ib3gueSArIGlbMV0pLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCArIGlbMF0sIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0IC0gaVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJiIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsYyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuc25hcFRvR3JpZCh0LCBlLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCArIGlbMF0gPiAwICYmIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0ICsgaVsxXSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXh0IiA9PT0gdGhpcy5wYXJhbWV0ZXJzLnR5cGUpIHJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54IC0gaVswXSwgdGhpcy5wYXJhbWV0ZXJzLmJveC55KSwgdm9pZCB0aGlzLmVsLmF0dHIoImZvbnQtc2l6ZSIsIHRoaXMucGFyYW1ldGVycy5mb250U2l6ZSArIGlbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLCB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LCB0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCArIGlbMF0sIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0ICsgaVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxiIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsYyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuc25hcFRvR3JpZCh0LCBlLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCAtIGlbMF0gPiAwICYmIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0ICsgaVsxXSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXh0IiA9PT0gdGhpcy5wYXJhbWV0ZXJzLnR5cGUpIHJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54ICsgaVswXSwgdGhpcy5wYXJhbWV0ZXJzLmJveC55KSwgdm9pZCB0aGlzLmVsLmF0dHIoImZvbnQtc2l6ZSIsIHRoaXMucGFyYW1ldGVycy5mb250U2l6ZSAtIGlbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5jaGVja0FzcGVjdFJhdGlvKGksICEwKSwgdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCArIGlbMF0sIHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoIC0gaVswXSwgdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQgKyBpWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGMgPSBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnNuYXBUb0dyaWQodCwgZSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0IC0gaVsxXSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXh0IiA9PT0gdGhpcy5wYXJhbWV0ZXJzLnR5cGUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCwgdGhpcy5wYXJhbWV0ZXJzLmJveC55ICsgaVsxXSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0IC0gaVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5zbmFwVG9HcmlkKHQsIGUsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoICsgaVswXSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXh0IiA9PT0gdGhpcy5wYXJhbWV0ZXJzLnR5cGUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCwgdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoICsgaVswXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5zbmFwVG9HcmlkKHQsIGUsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCArIGlbMV0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidGV4dCIgPT09IHRoaXMucGFyYW1ldGVycy50eXBlKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsIHRoaXMucGFyYW1ldGVycy5ib3gueSkuaGVpZ2h0KHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0ICsgaVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImwiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5zbmFwVG9HcmlkKHQsIGUsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoIC0gaVswXSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ0ZXh0IiA9PT0gdGhpcy5wYXJhbWV0ZXJzLnR5cGUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCArIGlbMF0sIHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCAtIGlbMF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyb3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdCArIHRoaXMucGFyYW1ldGVycy5wLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlICsgdGhpcy5wYXJhbWV0ZXJzLnAueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueSAtIHRoaXMucGFyYW1ldGVycy5ib3gueSAtIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0IC8gMiwgdGhpcy5wYXJhbWV0ZXJzLnAueCAtIHRoaXMucGFyYW1ldGVycy5ib3gueCAtIHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGggLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguYXRhbjIoYSAtIHRoaXMucGFyYW1ldGVycy5ib3gueSAtIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0IC8gMiwgaSAtIHRoaXMucGFyYW1ldGVycy5ib3gueCAtIHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGggLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMucGFyYW1ldGVycy5yb3RhdGlvbiArIDE4MCAqIChyIC0gcykgLyBNYXRoLlBJICsgdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLmNlbnRlcih0aGlzLnBhcmFtZXRlcnMuYm94LmN4LCB0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUobyAtIG8gJSB0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUsIHRoaXMucGFyYW1ldGVycy5ib3guY3gsIHRoaXMucGFyYW1ldGVycy5ib3guY3kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInBvaW50IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsYyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuc25hcFRvR3JpZCh0LCBlLCB0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0sIHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmVsLmFycmF5KCkudmFsdWVPZigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbdGhpcy5wYXJhbWV0ZXJzLmldWzBdID0gdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdICsgaVswXSwgYVt0aGlzLnBhcmFtZXRlcnMuaV1bMV0gPSB0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMV0gKyBpWzFdLCB0aGlzLmVsLnBsb3QoYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5maXJlKCJyZXNpemVzdGFydCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZHg6IHRoaXMucGFyYW1ldGVycy54LAogICAgICAgICAgICAgICAgICAgICAgICBkeTogdGhpcy5wYXJhbWV0ZXJzLnksCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiB0CiAgICAgICAgICAgICAgICAgICAgfSksIFNWRy5vbih3aW5kb3csICJ0b3VjaG1vdmUucmVzaXplIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS51cGRhdGUodCB8fCB3aW5kb3cuZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBTVkcub24od2luZG93LCAidG91Y2hlbmQucmVzaXplIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmRvbmUoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgU1ZHLm9uKHdpbmRvdywgIm1vdXNlbW92ZS5yZXNpemUiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnVwZGF0ZSh0IHx8IHdpbmRvdy5ldmVudCkKICAgICAgICAgICAgICAgICAgICB9KSksIFNWRy5vbih3aW5kb3csICJtb3VzZXVwLnJlc2l6ZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kb25lKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX2V4dHJhY3RQb3NpdGlvbih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnRyYW5zZm9ybVBvaW50KGUueCwgZS55KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLnggLSB0aGlzLnBhcmFtZXRlcnMucC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkueSAtIHRoaXMucGFyYW1ldGVycy5wLnk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZUNhbGwgPSBbYSwgc10sIHRoaXMuY2FsYyhhLCBzKSwgdGhpcy5lbC5maXJlKCJyZXNpemluZyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogdAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLmxhc3RVcGRhdGVDYWxsICYmIHRoaXMuY2FsYyh0aGlzLmxhc3RVcGRhdGVDYWxsWzBdLCB0aGlzLmxhc3RVcGRhdGVDYWxsWzFdKQogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuZG9uZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZUNhbGwgPSBudWxsLCBTVkcub2ZmKHdpbmRvdywgIm1vdXNlbW92ZS5yZXNpemUiKSwgU1ZHLm9mZih3aW5kb3csICJtb3VzZXVwLnJlc2l6ZSIpLCBTVkcub2ZmKHdpbmRvdywgInRvdWNobW92ZS5yZXNpemUiKSwgU1ZHLm9mZih3aW5kb3csICJ0b3VjaGVuZC5yZXNpemUiKSwgdGhpcy5lbC5maXJlKCJyZXNpemVkb25lIikKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNuYXBUb0dyaWQgPSBmdW5jdGlvbih0LCBlLCBpLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gYSA/IHMgPSBbKGkgKyB0KSAlIHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLCAoYSArIGUpICUgdGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdIDogKGkgPSBudWxsID09IGkgPyAzIDogaSwgcyA9IFsodGhpcy5wYXJhbWV0ZXJzLmJveC54ICsgdCArICgxICYgaSA/IDAgOiB0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkgJSB0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwgKHRoaXMucGFyYW1ldGVycy5ib3gueSArIGUgKyAoMiAmIGkgPyAwIDogdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSAlIHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksIHQgPCAwICYmIChzWzBdIC09IHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSwgZSA8IDAgJiYgKHNbMV0gLT0gdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLCB0IC09IE1hdGguYWJzKHNbMF0pIDwgdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQgLyAyID8gc1swXSA6IHNbMF0gLSAodCA8IDAgPyAtdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQgOiB0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksIGUgLT0gTWF0aC5hYnMoc1sxXSkgPCB0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCAvIDIgPyBzWzFdIDogc1sxXSAtIChlIDwgMCA/IC10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCA6IHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSwgdGhpcy5jb25zdHJhaW50VG9Cb3godCwgZSwgaSwgYSkKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNvbnN0cmFpbnRUb0JveCA9IGZ1bmN0aW9uKHQsIGUsIGksIGEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcywgciwgbyA9IHRoaXMub3B0aW9ucy5jb25zdHJhaW50IHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IGEgPyAocyA9IGksIHIgPSBhKSA6IChzID0gdGhpcy5wYXJhbWV0ZXJzLmJveC54ICsgKDEgJiBpID8gMCA6IHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpLCByID0gdGhpcy5wYXJhbWV0ZXJzLmJveC55ICsgKDIgJiBpID8gMCA6IHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSksIHZvaWQgMCAhPT0gby5taW5YICYmIHMgKyB0IDwgby5taW5YICYmICh0ID0gby5taW5YIC0gcyksIHZvaWQgMCAhPT0gby5tYXhYICYmIHMgKyB0ID4gby5tYXhYICYmICh0ID0gby5tYXhYIC0gcyksIHZvaWQgMCAhPT0gby5taW5ZICYmIHIgKyBlIDwgby5taW5ZICYmIChlID0gby5taW5ZIC0gciksIHZvaWQgMCAhPT0gby5tYXhZICYmIHIgKyBlID4gby5tYXhZICYmIChlID0gby5tYXhZIC0gciksIFt0LCBlXQogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbyA9IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zYXZlQXNwZWN0UmF0aW8pIHJldHVybiB0OwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5zbGljZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCAvIHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCArIHRbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCAtIHRbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzIC8gcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyA8IGEgPyAoaVsxXSA9IHMgLyBhIC0gdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQsIGUgJiYgKGlbMV0gPSAtaVsxXSkpIDogbyA+IGEgJiYgKGlbMF0gPSB0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoIC0gciAqIGEsIGUgJiYgKGlbMF0gPSAtaVswXSkpLCBpCiAgICAgICAgICAgICAgICB9LCBTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LCB7CiAgICAgICAgICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5yZW1lbWJlcigiX3Jlc2l6ZUhhbmRsZXIiKSB8fCBuZXcgdCh0aGlzKSkuaW5pdChlIHx8IHt9KSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCBTVkcuRWxlbWVudC5wcm90b3R5cGUucmVzaXplLmRlZmF1bHRzID0gewogICAgICAgICAgICAgICAgICAgIHNuYXBUb0FuZ2xlOiAuMSwKICAgICAgICAgICAgICAgICAgICBzbmFwVG9HcmlkOiAxLAogICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQ6IHt9LAogICAgICAgICAgICAgICAgICAgIHNhdmVBc3BlY3RSYXRpbzogITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2FsbCh0aGlzKQogICAgICAgIH0oKSwgdm9pZCAwID09PSB3aW5kb3cuQXBleCAmJiAod2luZG93LkFwZXggPSB7fSk7CiAgICB2YXIgSHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJpbml0TW9kdWxlcyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgucHVibGljTWV0aG9kcyA9IFsidXBkYXRlT3B0aW9ucyIsICJ1cGRhdGVTZXJpZXMiLCAiYXBwZW5kRGF0YSIsICJhcHBlbmRTZXJpZXMiLCAidG9nZ2xlU2VyaWVzIiwgInNob3dTZXJpZXMiLCAiaGlkZVNlcmllcyIsICJzZXRMb2NhbGUiLCAicmVzZXRTZXJpZXMiLCAiem9vbVgiLCAidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uIiwgImRhdGFVUkkiLCAiYWRkWGF4aXNBbm5vdGF0aW9uIiwgImFkZFlheGlzQW5ub3RhdGlvbiIsICJhZGRQb2ludEFubm90YXRpb24iLCAiY2xlYXJBbm5vdGF0aW9ucyIsICJyZW1vdmVBbm5vdGF0aW9uIiwgInBhcGVyIiwgImRlc3Ryb3kiXSwgdGhpcy5jdHguZXZlbnRMaXN0ID0gWyJjbGljayIsICJtb3VzZWRvd24iLCAibW91c2Vtb3ZlIiwgIm1vdXNlbGVhdmUiLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiLCAidG91Y2hsZWF2ZSIsICJtb3VzZXVwIiwgInRvdWNoZW5kIl0sIHRoaXMuY3R4LmFuaW1hdGlvbnMgPSBuZXcgYih0aGlzLmN0eCksIHRoaXMuY3R4LmF4ZXMgPSBuZXcgSyh0aGlzLmN0eCksIHRoaXMuY3R4LmNvcmUgPSBuZXcgRnQodGhpcy5jdHguZWwsIHRoaXMuY3R4KSwgdGhpcy5jdHguY29uZmlnID0gbmV3IE4oe30pLCB0aGlzLmN0eC5kYXRhID0gbmV3IEIodGhpcy5jdHgpLCB0aGlzLmN0eC5ncmlkID0gbmV3IFUodGhpcy5jdHgpLCB0aGlzLmN0eC5ncmFwaGljcyA9IG5ldyBtKHRoaXMuY3R4KSwgdGhpcy5jdHguY29yZVV0aWxzID0gbmV3IHkodGhpcy5jdHgpLCB0aGlzLmN0eC5jcm9zc2hhaXJzID0gbmV3IHR0KHRoaXMuY3R4KSwgdGhpcy5jdHguZXZlbnRzID0gbmV3IEoodGhpcy5jdHgpLCB0aGlzLmN0eC5leHBvcnRzID0gbmV3IGoodGhpcy5jdHgpLCB0aGlzLmN0eC5sb2NhbGl6YXRpb24gPSBuZXcgUSh0aGlzLmN0eCksIHRoaXMuY3R4Lm9wdGlvbnMgPSBuZXcgTCwgdGhpcy5jdHgucmVzcG9uc2l2ZSA9IG5ldyBldCh0aGlzLmN0eCksIHRoaXMuY3R4LnNlcmllcyA9IG5ldyBFKHRoaXMuY3R4KSwgdGhpcy5jdHgudGhlbWUgPSBuZXcgaXQodGhpcy5jdHgpLCB0aGlzLmN0eC5mb3JtYXR0ZXJzID0gbmV3IFYodGhpcy5jdHgpLCB0aGlzLmN0eC50aXRsZVN1YnRpdGxlID0gbmV3IGF0KHRoaXMuY3R4KSwgdGhpcy5jdHgubGVnZW5kID0gbmV3IGN0KHRoaXMuY3R4KSwgdGhpcy5jdHgudG9vbGJhciA9IG5ldyBkdCh0aGlzLmN0eCksIHRoaXMuY3R4LmRpbWVuc2lvbnMgPSBuZXcgbHQodGhpcy5jdHgpLCB0aGlzLmN0eC51cGRhdGVIZWxwZXJzID0gbmV3IFJ0KHRoaXMuY3R4KSwgdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbiA9IG5ldyBndCh0aGlzLmN0eCksIHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwID0gbmV3IG10KHRoaXMuY3R4KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgRHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gdChlKSB7CiAgICAgICAgICAgICAgICBhKHRoaXMsIHQpLCB0aGlzLmN0eCA9IGUsIHRoaXMudyA9IGUudwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJjbGVhciIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5pc1VwZGF0aW5nOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24gJiYgdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbi5kZXN0cm95KCksIHRoaXMuY3R4LnRvb2xiYXIgJiYgdGhpcy5jdHgudG9vbGJhci5kZXN0cm95KCksIHRoaXMuY3R4LmFuaW1hdGlvbnMgPSBudWxsLCB0aGlzLmN0eC5heGVzID0gbnVsbCwgdGhpcy5jdHguYW5ub3RhdGlvbnMgPSBudWxsLCB0aGlzLmN0eC5jb3JlID0gbnVsbCwgdGhpcy5jdHguZGF0YSA9IG51bGwsIHRoaXMuY3R4LmdyaWQgPSBudWxsLCB0aGlzLmN0eC5zZXJpZXMgPSBudWxsLCB0aGlzLmN0eC5yZXNwb25zaXZlID0gbnVsbCwgdGhpcy5jdHgudGhlbWUgPSBudWxsLCB0aGlzLmN0eC5mb3JtYXR0ZXJzID0gbnVsbCwgdGhpcy5jdHgudGl0bGVTdWJ0aXRsZSA9IG51bGwsIHRoaXMuY3R4LmxlZ2VuZCA9IG51bGwsIHRoaXMuY3R4LmRpbWVuc2lvbnMgPSBudWxsLCB0aGlzLmN0eC5vcHRpb25zID0gbnVsbCwgdGhpcy5jdHguY3Jvc3NoYWlycyA9IG51bGwsIHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24gPSBudWxsLCB0aGlzLmN0eC51cGRhdGVIZWxwZXJzID0gbnVsbCwgdGhpcy5jdHgudG9vbGJhciA9IG51bGwsIHRoaXMuY3R4LmxvY2FsaXphdGlvbiA9IG51bGwsIHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwID0gbnVsbCwgdGhpcy5jbGVhckRvbUVsZW1lbnRzKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNVcGRhdGluZzogZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImtpbGxTVkciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0LmVhY2goKGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDbGFzcygiKiIpLCB0aGlzLm9mZigpLCB0aGlzLnN0b3AoKQogICAgICAgICAgICAgICAgICAgIH0pLCAhMCksIHQudW5ncm91cCgpLCB0LmNsZWFyKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiY2xlYXJEb21FbGVtZW50cyIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuaXNVcGRhdGluZywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlOwogICAgICAgICAgICAgICAgICAgIGEucGFyZW50Tm9kZSAmJiBhLnBhcmVudE5vZGUucGFyZW50Tm9kZSAmJiAhaSAmJiAoYS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0ID0gInVuc2V0Iik7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsOwogICAgICAgICAgICAgICAgICAgIHMgJiYgdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcy5yZW1vdmVFdmVudExpc3RlbmVyKHQsIGUuY3R4LmV2ZW50cy5kb2N1bWVudEV2ZW50KQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMudy5nbG9iYWxzLmRvbTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdGhpcy5jdHguZWwpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB0aGlzLmN0eC5lbC5maXJzdENoaWxkOykgdGhpcy5jdHguZWwucmVtb3ZlQ2hpbGQodGhpcy5jdHguZWwuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5raWxsU1ZHKHIuUGFwZXIpLCByLlBhcGVyLnJlbW92ZSgpLCByLmVsV3JhcCA9IG51bGwsIHIuZWxHcmFwaGljYWwgPSBudWxsLCByLmVsQW5ub3RhdGlvbnMgPSBudWxsLCByLmVsTGVnZW5kV3JhcCA9IG51bGwsIHIuYmFzZUVsID0gbnVsbCwgci5lbEdyaWRSZWN0ID0gbnVsbCwgci5lbEdyaWRSZWN0TWFzayA9IG51bGwsIHIuZWxHcmlkUmVjdE1hcmtlck1hc2sgPSBudWxsLCByLmVsRm9yZWNhc3RNYXNrID0gbnVsbCwgci5lbE5vbkZvcmVjYXN0TWFzayA9IG51bGwsIHIuZWxEZWZzID0gbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XSksIHQKICAgICAgICB9KCksCiAgICAgICAgTnQgPSBuZXcgV2Vha01hcDsKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiB0KGUsIGkpIHsKICAgICAgICAgICAgYSh0aGlzLCB0KSwgdGhpcy5vcHRzID0gaSwgdGhpcy5jdHggPSB0aGlzLCB0aGlzLncgPSBuZXcgVyhpKS5pbml0KCksIHRoaXMuZWwgPSBlLCB0aGlzLncuZ2xvYmFscy5jdWlkID0geC5yYW5kb21JZCgpLCB0aGlzLncuZ2xvYmFscy5jaGFydElEID0gdGhpcy53LmNvbmZpZy5jaGFydC5pZCA/IHguZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpIDogdGhpcy53Lmdsb2JhbHMuY3VpZCwgbmV3IEh0KHRoaXMpLmluaXRNb2R1bGVzKCksIHRoaXMuY3JlYXRlID0geC5iaW5kKHRoaXMuY3JlYXRlLCB0aGlzKSwgdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyID0gdGhpcy5fd2luZG93UmVzaXplSGFuZGxlci5iaW5kKHRoaXMpLCB0aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXIgPSB0aGlzLl9wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHRoaXMpCiAgICAgICAgfQogICAgICAgIHJldHVybiByKHQsIFt7CiAgICAgICAgICAgIGtleTogInJlbmRlciIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSB0LmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gQXBleC5fY2hhcnRJbnN0YW5jZXMgJiYgKEFwZXguX2NoYXJ0SW5zdGFuY2VzID0gW10pLCB0LncuY29uZmlnLmNoYXJ0LmlkICYmIEFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHQudy5nbG9iYWxzLmNoYXJ0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdC53LmNvbmZpZy5jaGFydC5ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LnNldExvY2FsZSh0LncuY29uZmlnLmNoYXJ0LmRlZmF1bHRMb2NhbGUpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQudy5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZU1vdW50OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgYSAmJiBhKHQsIHQudyksIHQuZXZlbnRzLmZpcmVFdmVudCgiYmVmb3JlTW91bnQiLCBbdCwgdC53XSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0LndpbmRvd1Jlc2l6ZUhhbmRsZXIpLCBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbmUiICE9PSB0LnN0eWxlLmRpc3BsYXkgJiYgMCAhPT0gYS53aWR0aCB8fCAoaSA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IG5ldyBSZXNpemVPYnNlcnZlcigoZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICYmIGUuY2FsbCh0LCBhKSwgaSA9ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSA/IEFycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5vYnNlcnZlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogcy5vYnNlcnZlKHQpLCBOdC5zZXQoZSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odC5lbC5wYXJlbnROb2RlLCB0LnBhcmVudFJlc2l6ZUhhbmRsZXIpLCAhdC5jc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdC5lbC5nZXRSb290Tm9kZSAmJiB0LmVsLmdldFJvb3ROb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHguaXMoIlNoYWRvd1Jvb3QiLCBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5lbC5vd25lckRvY3VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBvLmdldEVsZW1lbnRCeUlkKCJhcGV4Y2hhcnRzLWNzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIXIgJiYgbiB8fCAodC5jc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLCB0LmNzcy5pZCA9ICJhcGV4Y2hhcnRzLWNzcyIsIHQuY3NzLnRleHRDb250ZW50ID0gJy5hcGV4Y2hhcnRzLWNhbnZhcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC8qIGNhbm5vdCBnaXZlIG92ZXJmbG93OiBoaWRkZW4gYXMgaXQgd2lsbCBjcm9wIHRvb2x0aXBzIHdoaWNoIG92ZXJmbG93IG91dHNpZGUgY2hhcnQgYXJlYSAqL1xufVxuXG5cbi8qIHNjcm9sbGJhciBpcyBub3QgdmlzaWJsZSBieSBkZWZhdWx0IGZvciBsZWdlbmQsIGhlbmNlIGZvcmNpbmcgdGhlIHZpc2liaWxpdHkgKi9cbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB3aWR0aDogNnB4O1xufVxuXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7XG4gIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTtcbn1cblxuXG4uYXBleGNoYXJ0cy1pbm5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmFwZXhjaGFydHMtdGV4dCB0c3BhbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4ubGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZSB7XG4gIHRyYW5zaXRpb246IDAuMTVzIGVhc2UgYWxsO1xuICBvcGFjaXR5OiAwLjIwO1xufVxuXG4uYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGVmdDogNjJweDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB6LWluZGV4OiAxMjtcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiAwLjE1cyBlYXNlIGFsbDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogcmdiYSgzMCwgMzAsIDMwLCAwLjgpO1xufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwICoge1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbn1cblxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcbiAgcGFkZGluZzogNnB4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xuICBiYWNrZ3JvdW5kOiAjRUNFRkYxO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlLFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlLFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHksXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbDplbXB0eSxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOmVtcHR5LFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWU6ZW1wdHkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLCBcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XG4gIHBhZGRpbmc6IDZweCAwIDVweDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwgXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsIFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbDpub3QoOmVtcHR5KSxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTpub3QoOmVtcHR5KSB7XG4gIG1hcmdpbi10b3A6IC02cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcbiAgd2lkdGg6IDEycHg7XG4gIGhlaWdodDogMTJweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIHtcbiAgcGFkZGluZzogMCAxMHB4O1xuICBkaXNwbGF5OiBub25lO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUsXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cDpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAwO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xuICBwYWRkaW5nOiA2cHggMCA1cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94LCAuYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcCB7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3g+ZGl2IHtcbiAgbWFyZ2luOiA0cHggMDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3ggc3Bhbi52YWx1ZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcbiAgcGFkZGluZzogNXB4IDhweDtcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuY2F0ZWdvcnkge1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzc3Nztcbn1cblxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIHtcbiAgb3BhY2l0eTogMDtcbiAgcGFkZGluZzogOXB4IDEwcHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogIzM3M2QzZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbiAgYmFja2dyb3VuZDogI0VDRUZGMTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzkwQTRBRTtcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlcixcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xuICBsZWZ0OiA1MCU7XG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6ICIgIjtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIzNiwgMjM5LCAyNDEsIDApO1xuICBib3JkZXItd2lkdGg6IDZweDtcbiAgbWFyZ2luLWxlZnQ6IC02cHg7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xuICBib3JkZXItY29sb3I6IHJnYmEoMTQ0LCAxNjQsIDE3NCwgMCk7XG4gIGJvcmRlci13aWR0aDogN3B4O1xuICBtYXJnaW4tbGVmdDogLTdweDtcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlcixcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgYm90dG9tOiAxMDAlO1xufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmFmdGVyLFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xuICB0b3A6IDEwMCU7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YWZ0ZXIge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAjRUNFRkYxO1xufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5MEE0QUU7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyIHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxuXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjRUNFRkYxXG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzkwQTRBRTtcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XG4gIG9wYWNpdHk6IDA7XG4gIHBhZGRpbmc6IDRweCAxMHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6ICMzNzNkM2Y7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTA7XG4gIGJhY2tncm91bmQ6ICNFQ0VGRjE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM5MEE0QUU7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlcixcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xuICB0b3A6IDUwJTtcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY29udGVudDogIiAiO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHJnYmEoMjM2LCAyMzksIDI0MSwgMCk7XG4gIGJvcmRlci13aWR0aDogNnB4O1xuICBtYXJnaW4tdG9wOiAtNnB4O1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0NCwgMTY0LCAxNzQsIDApO1xuICBib3JkZXItd2lkdGg6IDdweDtcbiAgbWFyZ2luLXRvcDogLTdweDtcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIsXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xuICBsZWZ0OiAxMDAlO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIsXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgcmlnaHQ6IDEwMCU7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNFQ0VGRjE7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBBNEFFO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIge1xuICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRUNFRkYxO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBBNEFFO1xufVxuXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycyxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IDAuMTVzIGVhc2UgYWxsO1xufVxuXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XG59XG5cbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcbiAgY3Vyc29yOiBtb3ZlO1xufVxuXG4uc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsIC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QgKyBnIC5zdmdfc2VsZWN0X2JvdW5kaW5nUmVjdCxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0ICsgZyAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCArIGcgLnN2Z19zZWxlY3RfcG9pbnRzX2wsXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCArIGcgLnN2Z19zZWxlY3RfcG9pbnRzX3Ige1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuLnN2Z19zZWxlY3RfcG9pbnRzIHtcbiAgZmlsbDogI2VmZWZlZjtcbiAgc3Ryb2tlOiAjMzMzO1xuICByeDogMjtcbn1cblxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctem9vbSB7XG4gIGN1cnNvcjogY3Jvc3NoYWlyXG59XG5cbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXBhbiB7XG4gIGN1cnNvcjogbW92ZVxufVxuXG4uYXBleGNoYXJ0cy16b29tLWljb24sXG4uYXBleGNoYXJ0cy16b29taW4taWNvbixcbi5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbixcbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24sXG4uYXBleGNoYXJ0cy1wYW4taWNvbixcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLFxuLmFwZXhjaGFydHMtbWVudS1pY29uLFxuLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGNvbG9yOiAjNkU4MTkyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsXG4uYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnLFxuLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsXG4uYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnIHtcbiAgZmlsbDogIzZFODE5Mjtcbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnIHtcbiAgZmlsbDogIzQ0NDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjc2KVxufVxuXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2Zyxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHN2Zyxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2Zyxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnLFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2ZyB7XG4gIGZpbGw6ICNmM2Y0ZjU7XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy16b29tLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcbiAgZmlsbDogIzAwOEZGQjtcbn1cblxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29taW4taWNvbjpob3ZlciBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tb3V0LWljb246aG92ZXIgc3ZnLFxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtaWNvbjpob3ZlciBzdmcsXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWljb246aG92ZXIgc3ZnIHtcbiAgZmlsbDogIzMzMztcbn1cblxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sXG4uYXBleGNoYXJ0cy1tZW51LWljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24ge1xuICBtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4uYXBleGNoYXJ0cy16b29tLWljb24sXG4uYXBleGNoYXJ0cy1yZXNldC1pY29uLFxuLmFwZXhjaGFydHMtbWVudS1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KTtcbn1cblxuLmFwZXhjaGFydHMtem9vbWluLWljb24sXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNylcbn1cblxuLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjYyKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAxcHg7XG4gIHRvcDogMHB4O1xufVxuXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xuICBmaWxsOiAjZmZmO1xuICBzdHJva2U6ICM2RTgxOTI7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cblxuLmFwZXhjaGFydHMtcGFuLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcge1xuICBzdHJva2U6ICMwMDhGRkI7XG59XG5cbi5hcGV4Y2hhcnRzLXBhbi1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnIHtcbiAgc3Ryb2tlOiAjMzMzO1xufVxuXG4uYXBleGNoYXJ0cy10b29sYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMTtcbiAgbWF4LXdpZHRoOiAxNzZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogMHB4IDZweCAycHggNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAzcHg7XG4gIHJpZ2h0OiAxMHB4O1xuICBvcGFjaXR5OiAwO1xuICBtaW4td2lkdGg6IDExMHB4O1xuICB0cmFuc2l0aW9uOiAwLjE1cyBlYXNlIGFsbDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5hcGV4Y2hhcnRzLW1lbnUuYXBleGNoYXJ0cy1tZW51LW9wZW4ge1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB0cmFuc2l0aW9uOiAwLjE1cyBlYXNlIGFsbDtcbn1cblxuLmFwZXhjaGFydHMtbWVudS1pdGVtIHtcbiAgcGFkZGluZzogNnB4IDdweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICNlZWU7XG59XG5cbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5hcGV4Y2hhcnRzLWNhbnZhczpob3ZlciAuYXBleGNoYXJ0cy10b29sYmFyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC5hcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmFwZXhjaGFydHMtcGllLWxhYmVsLFxuLmFwZXhjaGFydHMtZGF0YWxhYmVscyxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbCxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheSB7XG4gIG9wYWNpdHk6IDA7XG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XG59XG5cbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5hcGV4Y2hhcnRzLWhpZGUgLmFwZXhjaGFydHMtc2VyaWVzLXBvaW50cyB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5hcGV4Y2hhcnRzLWdyaWRsaW5lLFxuLmFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0LFxuLmFwZXhjaGFydHMtdG9vbHRpcCAuYXBleGNoYXJ0cy1tYXJrZXIsXG4uYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1hcmVhLFxuLmFwZXhjaGFydHMtbGluZSxcbi5hcGV4Y2hhcnRzLXpvb20tcmVjdCxcbi5hcGV4Y2hhcnRzLXRvb2xiYXIgc3ZnLFxuLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLFxuLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLm5vLXBvaW50ZXItZXZlbnRzLFxuLmFwZXhjaGFydHMtcmFkYXItc2VyaWVzIHBhdGgsXG4uYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5cbi8qIG1hcmtlcnMgKi9cblxuLmFwZXhjaGFydHMtbWFya2VyIHtcbiAgdHJhbnNpdGlvbjogMC4xNXMgZWFzZSBhbGw7XG59XG5cbkBrZXlmcmFtZXMgb3BhcXVlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5cbi8qIFJlc2l6ZSBnZW5lcmF0ZWQgc3R5bGVzICovXG5cbkBrZXlmcmFtZXMgcmVzaXplYW5pbSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLnJlc2l6ZS10cmlnZ2VycyB7XG4gIGFuaW1hdGlvbjogMW1zIHJlc2l6ZWFuaW07XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3BhY2l0eTogMDtcbn1cblxuLnJlc2l6ZS10cmlnZ2Vycyxcbi5yZXNpemUtdHJpZ2dlcnM+ZGl2LFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcbiAgY29udGVudDogIiAiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5yZXNpemUtdHJpZ2dlcnM+ZGl2IHtcbiAgYmFja2dyb3VuZDogI2VlZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7XG4gIHdpZHRoOiAyMDAlO1xuICBoZWlnaHQ6IDIwMCU7XG59JywgciA/IHMucHJlcGVuZCh0LmNzcykgOiBvLmhlYWQuYXBwZW5kQ2hpbGQodC5jc3MpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gdC5jcmVhdGUodC53LmNvbmZpZy5zZXJpZXMsIHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSByZXR1cm4gZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5tb3VudChsKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQudy5jb25maWcuY2hhcnQuZXZlbnRzLm1vdW50ZWQgJiYgdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCh0LCB0LncpLCB0LmV2ZW50cy5maXJlRXZlbnQoIm1vdW50ZWQiLCBbdCwgdC53XSksIGUobCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpKG5ldyBFcnJvcigiRWxlbWVudCBub3QgZm91bmQiKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJjcmVhdGUiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnc7CiAgICAgICAgICAgICAgICBuZXcgSHQodGhpcykuaW5pdE1vZHVsZXMoKTsKICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy53Lmdsb2JhbHM7CiAgICAgICAgICAgICAgICAoYS5ub0RhdGEgPSAhMSwgYS5hbmltYXRpb25FbmRlZCA9ICExLCB0aGlzLnJlc3BvbnNpdmUuY2hlY2tSZXNwb25zaXZlQ29uZmlnKGUpLCBpLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpICYmIG5ldyBEKGkuY29uZmlnKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoaS5jb25maWcsIHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSB0aGlzLmVsKSByZXR1cm4gYS5hbmltYXRpb25FbmRlZCA9ICEwLCBudWxsOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuY29yZS5zZXR1cEVsZW1lbnRzKCksICJ0cmVlbWFwIiA9PT0gaS5jb25maWcuY2hhcnQudHlwZSAmJiAoaS5jb25maWcuZ3JpZC5zaG93ID0gITEsIGkuY29uZmlnLnlheGlzWzBdLnNob3cgPSAhMSksIDAgPT09IGEuc3ZnV2lkdGgpIHJldHVybiBhLmFuaW1hdGlvbkVuZGVkID0gITAsIG51bGw7CiAgICAgICAgICAgICAgICB2YXIgcyA9IHkuY2hlY2tDb21ib1Nlcmllcyh0KTsKICAgICAgICAgICAgICAgIGEuY29tYm9DaGFydHMgPSBzLmNvbWJvQ2hhcnRzLCBhLmNvbWJvQmFyQ291bnQgPSBzLmNvbWJvQmFyQ291bnQ7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQuZXZlcnkoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5kYXRhICYmIDAgPT09IHQuZGF0YS5sZW5ndGgKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICgwID09PSB0Lmxlbmd0aCB8fCByKSAmJiB0aGlzLnNlcmllcy5oYW5kbGVOb0RhdGEoKSwgdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksIHRoaXMuZGF0YS5wYXJzZURhdGEodCksIHRoaXMudGhlbWUuaW5pdCgpLCBuZXcgVCh0aGlzKS5zZXRHbG9iYWxNYXJrZXJTaXplKCksIHRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSwgdGhpcy50aXRsZVN1YnRpdGxlLmRyYXcoKSwgYS5ub0RhdGEgJiYgYS5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoICE9PSBhLnNlcmllcy5sZW5ndGggJiYgIWkuY29uZmlnLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzIHx8IHRoaXMubGVnZW5kLmluaXQoKSwgdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCksIGEuYXhpc0NoYXJ0cyAmJiAodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSwgImNhdGVnb3J5IiAhPT0gaS5jb25maWcueGF4aXMudHlwZSAmJiB0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksIHRoaXMuY3R4LnRvb2xiYXIubWluWCA9IGkuZ2xvYmFscy5taW5YLCB0aGlzLmN0eC50b29sYmFyLm1heFggPSBpLmdsb2JhbHMubWF4WCksIHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksIG5ldyB5KHRoaXMpLmdldExhcmdlc3RNYXJrZXJTaXplKCksIHRoaXMuZGltZW5zaW9ucy5wbG90Q29vcmRzKCk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMuY29yZS54eVNldHRpbmdzKCk7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuY3JlYXRlR3JpZE1hc2soKTsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5jb3JlLnBsb3RDaGFydFR5cGUodCwgbyksCiAgICAgICAgICAgICAgICAgICAgbCA9IG5ldyB6KHRoaXMpOwogICAgICAgICAgICAgICAgbC5icmluZ0ZvcndhcmQoKSwgaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQgJiYgbC5kYXRhTGFiZWxzQmFja2dyb3VuZCgpLCB0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IHsKICAgICAgICAgICAgICAgICAgICBwbG90OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGkuZ2xvYmFscy50cmFuc2xhdGVYLAogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGkuZ2xvYmFscy50cmFuc2xhdGVZLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaS5nbG9iYWxzLmdyaWRXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpLmdsb2JhbHMuZ3JpZEhlaWdodAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVsR3JhcGg6IG4sCiAgICAgICAgICAgICAgICAgICAgeHlSYXRpb3M6IG8sCiAgICAgICAgICAgICAgICAgICAgZWxJbm5lcjogaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCwKICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiBoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogIm1vdW50IiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkudzsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocywgcikgewogICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09PSBpLmVsKSByZXR1cm4gcihuZXcgRXJyb3IoIk5vdCBlbm91Z2ggZGF0YSB0byBkaXNwbGF5IG9yIHRhcmdldCBlbGVtZW50IG5vdCBmb3VuZCIpKTsKICAgICAgICAgICAgICAgICAgICAobnVsbCA9PT0gZSB8fCBhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKSAmJiBpLnNlcmllcy5oYW5kbGVOb0RhdGEoKSwgInRyZWVtYXAiICE9PSBhLmNvbmZpZy5jaGFydC50eXBlICYmIGkuYXhlcy5kcmF3QXhpcyhhLmNvbmZpZy5jaGFydC50eXBlLCBlLnh5UmF0aW9zKSwgaS5ncmlkID0gbmV3IFUoaSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBpLmdyaWQuZHJhd0dyaWQoKTsKICAgICAgICAgICAgICAgICAgICBpLmFubm90YXRpb25zID0gbmV3IFAoaSksIGkuYW5ub3RhdGlvbnMuZHJhd0ltYWdlQW5ub3MoKSwgaS5hbm5vdGF0aW9ucy5kcmF3VGV4dEFubm9zKCksICJiYWNrIiA9PT0gYS5jb25maWcuZ3JpZC5wb3NpdGlvbiAmJiBvICYmIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG8uZWwpOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IF8odC5jdHgpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gbmV3ICQodC5jdHgpOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBvICYmIChuLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhvLnhBeGlzVGlja1dpZHRoKSwgbC5zZXRZQXhpc1RleHRBbGlnbm1lbnRzKCksIGEuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgPT09IGEuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKSAmJiBsLnlBeGlzVGl0bGVSb3RhdGUoZSwgdC5vcHBvc2l0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgImJhY2siID09PSBhLmNvbmZpZy5hbm5vdGF0aW9ucy5wb3NpdGlvbiAmJiAoYS5nbG9iYWxzLmRvbS5QYXBlci5hZGQoYS5nbG9iYWxzLmRvbS5lbEFubm90YXRpb25zKSwgaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCkpLCBBcnJheS5pc0FycmF5KGUuZWxHcmFwaCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGggPSAwOyBoIDwgZS5lbEdyYXBoLmxlbmd0aDsgaCsrKSBhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGhbaF0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoImZyb250IiA9PT0gYS5jb25maWcuZ3JpZC5wb3NpdGlvbiAmJiBvICYmIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKG8uZWwpLCAiZnJvbnQiID09PSBhLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uICYmIGkuY3Jvc3NoYWlycy5kcmF3WENyb3NzaGFpcnMoKSwgImZyb250IiA9PT0gYS5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5wb3NpdGlvbiAmJiBpLmNyb3NzaGFpcnMuZHJhd1lDcm9zc2hhaXJzKCksICJmcm9udCIgPT09IGEuY29uZmlnLmFubm90YXRpb25zLnBvc2l0aW9uICYmIChhLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChhLmdsb2JhbHMuZG9tLmVsQW5ub3RhdGlvbnMpLCBpLmFubm90YXRpb25zLmRyYXdBeGVzQW5ub3RhdGlvbnMoKSksICFhLmdsb2JhbHMubm9EYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmNvbmZpZy50b29sdGlwLmVuYWJsZWQgJiYgIWEuZ2xvYmFscy5ub0RhdGEgJiYgaS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcChlLnh5UmF0aW9zKSwgYS5nbG9iYWxzLmF4aXNDaGFydHMgJiYgKGEuZ2xvYmFscy5pc1hOdW1lcmljIHx8IGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyB8fCBhLmdsb2JhbHMuaXNSYW5nZUJhcikpKGEuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCB8fCBhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24gJiYgYS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmVuYWJsZWQgfHwgYS5jb25maWcuY2hhcnQucGFuICYmIGEuY29uZmlnLmNoYXJ0LnBhbi5lbmFibGVkKSAmJiBpLnpvb21QYW5TZWxlY3Rpb24uaW5pdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4eVJhdGlvczogZS54eVJhdGlvcwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbInpvb20iLCAiem9vbWluIiwgInpvb21vdXQiLCAic2VsZWN0aW9uIiwgInBhbiIsICJyZXNldCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3RdID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY29uZmlnLmNoYXJ0LnRvb2xiYXIuc2hvdyAmJiAhYS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCAmJiBpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGggPiAwICYmIGEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQubWV0aG9kKHQucGFyYW1zLCAhMSwgdC5jb250ZXh0KQogICAgICAgICAgICAgICAgICAgIH0pKSwgYS5nbG9iYWxzLmF4aXNDaGFydHMgfHwgYS5nbG9iYWxzLm5vRGF0YSB8fCBpLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLCBzKGkpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiZGVzdHJveSIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBlOwogICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMud2luZG93UmVzaXplSGFuZGxlciksIHRoaXMuZWwucGFyZW50Tm9kZSwgdCA9IHRoaXMucGFyZW50UmVzaXplSGFuZGxlciwgKGUgPSBOdC5nZXQodCkpICYmIChlLmRpc2Nvbm5lY3QoKSwgTnQuZGVsZXRlKHQpKTsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy53LmNvbmZpZy5jaGFydC5pZDsKICAgICAgICAgICAgICAgIGkgJiYgQXBleC5fY2hhcnRJbnN0YW5jZXMuZm9yRWFjaCgoZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgICAgIHQuaWQgPT09IHguZXNjYXBlU3RyaW5nKGkpICYmIEFwZXguX2NoYXJ0SW5zdGFuY2VzLnNwbGljZShlLCAxKQogICAgICAgICAgICAgICAgfSkpLCBuZXcgRHQodGhpcy5jdHgpLmNsZWFyKHsKICAgICAgICAgICAgICAgICAgICBpc1VwZGF0aW5nOiAhMQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAidXBkYXRlT3B0aW9ucyIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdICYmIGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBhID0gIShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSkgfHwgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgIHMgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdKSB8fCBhcmd1bWVudHNbM10sCiAgICAgICAgICAgICAgICAgICAgciA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNF0pIHx8IGFyZ3VtZW50c1s0XSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy53OwogICAgICAgICAgICAgICAgcmV0dXJuIG8uZ2xvYmFscy5zZWxlY3Rpb24gPSB2b2lkIDAsIHQuc2VyaWVzICYmICh0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwgITAsICExKSwgdC5zZXJpZXMubGVuZ3RoICYmIHQuc2VyaWVzWzBdLmRhdGEgJiYgKHQuc2VyaWVzID0gdC5zZXJpZXMubWFwKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudXBkYXRlSGVscGVycy5fZXh0ZW5kU2VyaWVzKHQsIGkpCiAgICAgICAgICAgICAgICB9KSkpLCB0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksIHQueGF4aXMgJiYgKHQgPSB0aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VYQXhpc1VwZGF0ZSh0KSksIHQueWF4aXMgJiYgKHQgPSB0aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VZQXhpc1VwZGF0ZSh0KSksIG8uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aCA+IDAgJiYgdGhpcy5zZXJpZXMuY2xlYXJQcmV2aW91c1BhdGhzKCksIHQudGhlbWUgJiYgKHQgPSB0aGlzLnRoZW1lLnVwZGF0ZVRoZW1lT3B0aW9ucyh0KSksIHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LCBpLCBhLCBzLCByKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJ1cGRhdGVTZXJpZXMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogW10sCiAgICAgICAgICAgICAgICAgICAgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0pIHx8IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBpID0gIShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSkgfHwgYXJndW1lbnRzWzJdOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSwgdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksIHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHQsIGUsIGkpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImFwcGVuZFNlcmllcyIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0pIHx8IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBpID0gIShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSkgfHwgYXJndW1lbnRzWzJdLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGEucHVzaCh0KSwgdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLCB0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSwgdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSwgZSwgaSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiYXBwZW5kRGF0YSIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0pIHx8IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpczsKICAgICAgICAgICAgICAgIGkudy5nbG9iYWxzLmRhdGFDaGFuZ2VkID0gITAsIGkuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSBpLncuY29uZmlnLnNlcmllcy5zbGljZSgpLCBzID0gMDsgcyA8IGEubGVuZ3RoOyBzKyspCiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHRbc10gJiYgdm9pZCAwICE9PSB0W3NdKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IHRbc10uZGF0YS5sZW5ndGg7IHIrKykgYVtzXS5kYXRhLnB1c2godFtzXS5kYXRhW3JdKTsKICAgICAgICAgICAgICAgIHJldHVybiBpLncuY29uZmlnLnNlcmllcyA9IGEsIGUgJiYgKGkudy5nbG9iYWxzLmluaXRpYWxTZXJpZXMgPSB4LmNsb25lKGkudy5jb25maWcuc2VyaWVzKSksIHRoaXMudXBkYXRlKCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAidXBkYXRlIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSwgYSkgewogICAgICAgICAgICAgICAgICAgIG5ldyBEdChlLmN0eCkuY2xlYXIoewogICAgICAgICAgICAgICAgICAgICAgICBpc1VwZGF0aW5nOiAhMAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHZhciBzID0gZS5jcmVhdGUoZS53LmNvbmZpZy5zZXJpZXMsIHQpOwogICAgICAgICAgICAgICAgICAgIGlmICghcykgcmV0dXJuIGkoZSk7CiAgICAgICAgICAgICAgICAgICAgZS5tb3VudChzKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZCAmJiBlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKGUsIGUudyksIGUuZXZlbnRzLmZpcmVFdmVudCgidXBkYXRlZCIsIFtlLCBlLnddKSwgZS53Lmdsb2JhbHMuaXNEaXJ0eSA9ICEwLCBpKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLmNhdGNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEodCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJnZXRTeW5jZWRDaGFydHMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLAogICAgICAgICAgICAgICAgICAgIGUgPSBbdGhpc107CiAgICAgICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggJiYgKGUgPSBbXSwgdC5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5wdXNoKHQpCiAgICAgICAgICAgICAgICB9KSkpLCBlCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImdldEdyb3VwZWRDaGFydHMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICByZXR1cm4gQXBleC5fY2hhcnRJbnN0YW5jZXMuZmlsdGVyKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuZ3JvdXApIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSkpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LncuY29uZmlnLmNoYXJ0Lmdyb3VwID09PSBlLmdyb3VwID8gZS5jaGFydCA6IHQKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJ0b2dnbGVTZXJpZXMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllcyh0KQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJoaWdobGlnaHRTZXJpZXNPbkxlZ2VuZEhvdmVyIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKHQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInNob3dTZXJpZXMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXMuc2hvd1Nlcmllcyh0KQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJoaWRlU2VyaWVzIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzLmhpZGVTZXJpZXModCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAicmVzZXRTZXJpZXMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0pIHx8IGFyZ3VtZW50c1swXSwKICAgICAgICAgICAgICAgICAgICBlID0gIShhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSkgfHwgYXJndW1lbnRzWzFdOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXMucmVzZXRTZXJpZXModCwgZSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiYWRkRXZlbnRMaXN0ZW5lciIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInJlbW92ZUV2ZW50TGlzdGVuZXIiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJhZGRYYXhpc0Fubm90YXRpb24iLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSAhKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdKSB8fCBhcmd1bWVudHNbMV0sCiAgICAgICAgICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdID8gYXJndW1lbnRzWzJdIDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzOwogICAgICAgICAgICAgICAgaSAmJiAoYSA9IGkpLCBhLmFubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsIGUsIGEpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImFkZFlheGlzQW5ub3RhdGlvbiIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0pIHx8IGFyZ3VtZW50c1sxXSwKICAgICAgICAgICAgICAgICAgICBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXM7CiAgICAgICAgICAgICAgICBpICYmIChhID0gaSksIGEuYW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCwgZSwgYSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiYWRkUG9pbnRBbm5vdGF0aW9uIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gIShhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSkgfHwgYXJndW1lbnRzWzFdLAogICAgICAgICAgICAgICAgICAgIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpczsKICAgICAgICAgICAgICAgIGkgJiYgKGEgPSBpKSwgYS5hbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb25FeHRlcm5hbCh0LCBlLCBhKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJjbGVhckFubm90YXRpb25zIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBlID0gdGhpczsKICAgICAgICAgICAgICAgIHQgJiYgKGUgPSB0KSwgZS5hbm5vdGF0aW9ucy5jbGVhckFubm90YXRpb25zKGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInJlbW92ZUFubm90YXRpb24iLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpczsKICAgICAgICAgICAgICAgIGUgJiYgKGkgPSBlKSwgaS5hbm5vdGF0aW9ucy5yZW1vdmVBbm5vdGF0aW9uKGksIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImdldENoYXJ0QXJlYSIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoIi5hcGV4Y2hhcnRzLWlubmVyIikKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiZ2V0U2VyaWVzVG90YWxYUmFuZ2UiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFsc1hSYW5nZSh0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJnZXRIaWdoZXN0VmFsdWVJblNlcmllcyIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiAwLAogICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgWih0aGlzLmN0eCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRNaW5ZTWF4WSh0KS5oaWdoZXN0WQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJnZXRMb3dlc3RWYWx1ZUluU2VyaWVzIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IDAsCiAgICAgICAgICAgICAgICAgICAgZSA9IG5ldyBaKHRoaXMuY3R4KTsKICAgICAgICAgICAgICAgIHJldHVybiBlLmdldE1pbllNYXhZKHQpLmxvd2VzdFkKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiZ2V0U2VyaWVzVG90YWwiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzVG90YWxzCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbiIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVIZWxwZXJzLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbih0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJ6b29tWCIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKHQsIGUpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInNldExvY2FsZSIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsaXphdGlvbi5zZXRDdXJyZW50TG9jYWxlVmFsdWVzKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImRhdGFVUkkiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBqKHRoaXMuY3R4KS5kYXRhVVJJKHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogInBhcGVyIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlcgogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJfcGFyZW50UmVzaXplQ2FsbGJhY2siLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLncuZ2xvYmFscy5hbmltYXRpb25FbmRlZCAmJiB0aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uUGFyZW50UmVzaXplICYmIHRoaXMuX3dpbmRvd1Jlc2l6ZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogIl93aW5kb3dSZXNpemUiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXIpLCB0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0LncuZ2xvYmFscy5yZXNpemVkID0gITAsIHQudy5nbG9iYWxzLmRhdGFDaGFuZ2VkID0gITEsIHQuY3R4LnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9KSwgMTUwKQogICAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgICBrZXk6ICJfd2luZG93UmVzaXplSGFuZGxlciIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTsKICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQgJiYgKHQgPSB0KCkpLCB0ICYmIHRoaXMuX3dpbmRvd1Jlc2l6ZSgpCiAgICAgICAgICAgIH0KICAgICAgICB9XSwgW3sKICAgICAgICAgICAga2V5OiAiZ2V0Q2hhcnRCeUlEIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0geC5lc2NhcGVTdHJpbmcodCksCiAgICAgICAgICAgICAgICAgICAgaSA9IEFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5pZCA9PT0gZQogICAgICAgICAgICAgICAgICAgIH0pKVswXTsKICAgICAgICAgICAgICAgIHJldHVybiBpICYmIGkuY2hhcnQKICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAga2V5OiAiaW5pdE9uTG9hZCIsCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1hcGV4Y2hhcnRzXSIpLCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBuZXcgdChlW2ldLCBKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKCJkYXRhLW9wdGlvbnMiKSkpLnJlbmRlcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogImV4ZWMiLAogICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmdldENoYXJ0QnlJRCh0KTsKICAgICAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICAgICAgaS53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gaS5wdWJsaWNNZXRob2RzLmluZGV4T2YoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBuZXcgQXJyYXkocyA+IDIgPyBzIC0gMiA6IDApLCBvID0gMjsgbyA8IHM7IG8rKykgcltvIC0gMl0gPSBhcmd1bWVudHNbb107CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpW2VdLmFwcGx5KGksIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGtleTogIm1lcmdlIiwKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB4LmV4dGVuZCh0LCBlKQogICAgICAgICAgICB9CiAgICAgICAgfV0pLCB0CiAgICB9KCkKfSkpOw=="}},"time_used":38,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":22,"receive":16,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/demo.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.022Z","timestamp":1785159465022,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/demo.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 343\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1557,"size_decoded":579,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"2b386e6d43f80b35577d6a5bae2c11a3","sha1":"29686a10b0c3c06987dfa3a3a519e1061376b2e1","sha256":"218756098bf9c89bff2350eb626f7426a9bf1cb6e6f408e3384873810c9fecb3","sha512":"c57706e2981fc681de8033c7fc0c93627908d37ce97f536b5794726de5ef94fd49ff0a524b0240a1f1ca78378dd8ccb8a5ad8bbacb2b878617ff18a905ab9026","ssdeep":"","tlshash":"61312b5db06e69b310b77629561ade0d243e842f2324df1db17d0be11fb90ad84b3871","first_seen":"2026-07-27T07:42:30.735245Z","last_seen":"2026-07-27T13:38:47.800861Z","times_seen":3,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKLy8gbG9naW4KJCgiLmxvZ2luX19lbnRyeSAubG9naW5fX2Zvb3QgLmxvZ2luX19saW5rIikub24oImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgJCgiLmxvZ2luX19lbnRyeSIpLmhpZGUoKTsKICAgICQoIi5sb2dpbl9fcmVnaXN0cmF0aW9uIikuc2hvdygpOwp9KTsKJCgiLmxvZ2luX19yZWdpc3RyYXRpb24gLmxvZ2luX19mb290IC5sb2dpbl9fbGluaywgLmxvZ2luX19yZWdpc3RyYXRpb24gLmxvZ2luX19iYWNrIikub24oImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgJCgiLmxvZ2luX19yZWdpc3RyYXRpb24iKS5oaWRlKCk7CiAgICAkKCIubG9naW5fX2VudHJ5Iikuc2hvdygpOwp9KTsKJCgiLmxvZ2luX19lbnRyeSAubG9naW5fX2xpbmUgLmxvZ2luX19saW5rIikub24oImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgJCgiLmxvZ2luX19lbnRyeSIpLmhpZGUoKTsKICAgICQoIi5sb2dpbl9fcGFzc3dvcmQiKS5zaG93KCk7Cn0pOwokKCIubG9naW5fX2JveCAubG9naW5fX2J1dHRvbiIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgJCh0aGlzKS5wYXJlbnRzKCIubG9naW5fX2JveCIpLmhpZGUoKTsKICAgICQodGhpcykucGFyZW50cygiLmxvZ2luX19ib3giKS5uZXh0KCkuc2hvdygpOwp9KTsKJCgiLmxvZ2luX19ib3ggLmxvZ2luX19iYWNrIikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAkKHRoaXMpLnBhcmVudHMoIi5sb2dpbl9fYm94IikuaGlkZSgpOwogICAgJCh0aGlzKS5wYXJlbnRzKCIubG9naW5fX2JveCIpLnByZXYoKS5zaG93KCk7Cn0pOwokKCIubG9naW5fX2JveDpsYXN0LWNoaWxkIC5sb2dpbl9fYnV0dG9uLCAubG9naW5fX2JveDpmaXJzdC1jaGlsZCAubG9naW5fX2JhY2siKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICQoIi5sb2dpbl9fYm94LCAubG9naW5fX3Bhc3N3b3JkIikuaGlkZSgpOwogICAgJCgiLmxvZ2luX19ib3g6bnRoLWNoaWxkKDEpIikuc2hvdygpOwogICAgJCgiLmxvZ2luX19lbnRyeSIpLnNob3coKTsKfSk7CgovLyB0cmFuc2FjdGlvbnMKKGZ1bmN0aW9uKCkgewogICAgJCgiLnRyYW5zYWN0aW9uc19fdG9wIC5jaGVja2JveF9faW5wdXQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoJCh0aGlzKS5pcygiOmNoZWNrZWQiKSkgewogICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoIi50cmFuc2FjdGlvbnNfX3RhYmxlIikuZmluZCgiLnRyYW5zYWN0aW9uIC5jaGVja2JveF9faW5wdXQiKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSkuYXR0cigiY2hlY2tlZCIsICJjaGVja2VkIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCIudHJhbnNhY3Rpb25zX190YWJsZSIpLmZpbmQoIi50cmFuc2FjdGlvbiAuY2hlY2tib3hfX2lucHV0IikucHJvcCgiY2hlY2tlZCIsIGZhbHNlKS5yZW1vdmVBdHRyKCJjaGVja2VkIik7CiAgICAgICAgfQogICAgfSk7Cn0pKCk7"}},"time_used":27,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":27,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/bundle.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.026Z","timestamp":1785159465026,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/assets/js/bundle.js?ver=3.0.3 HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 346948\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1793990,"size_decoded":347187,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (755)","md5":"c98957d827f0d46a512c4cf4c788bdb3","sha1":"ef096fb82eefdd255be2dec0f47c49f8431f4de9","sha256":"1863614a31852dec3e3cae2945e46f75a058262c65ce2e518fd24a2bb545a890","sha512":"11fe767470be4c809e862209e12f65bd4ee2c20204820b16350d7b959496f000342f34e2a636f495b4255fe503cf01038ed278a12db480ec5ad197f55325d718","ssdeep":"24576:Qa53RZF5yQVpS8XT8J4RqWq3xv2Na8FVzZtZXuEhX3tKMogcVc5A0X5BT7Guampt:Qa53RZF5yQVpS8X4J4RqWkxv2Na8FVzb","tlshash":"a625714abae235319257f079496fc808b336641b1a49ad043e0c52e55f5d83ca7fafec","first_seen":"2026-07-27T07:42:30.732464Z","last_seen":"2026-07-27T13:38:47.749415Z","times_seen":3,"resource_available":false,"data":"ISBmdW5jdGlvbihlLCB0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlICYmICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzID0gZS5kb2N1bWVudCA/IHQoZSwgITApIDogZnVuY3Rpb24oZSkgewogICAgICAgIGlmICghZS5kb2N1bWVudCkgdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7CiAgICAgICAgcmV0dXJuIHQoZSkKICAgIH0gOiB0KGUpCn0oInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHRoaXMsIChmdW5jdGlvbihlLCB0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgbiA9IFtdLAogICAgICAgIGkgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YsCiAgICAgICAgciA9IG4uc2xpY2UsCiAgICAgICAgbyA9IG4uZmxhdCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG4uZmxhdC5jYWxsKGUpCiAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG4uY29uY2F0LmFwcGx5KFtdLCBlKQogICAgICAgIH0sCiAgICAgICAgYSA9IG4ucHVzaCwKICAgICAgICBzID0gbi5pbmRleE9mLAogICAgICAgIGwgPSB7fSwKICAgICAgICBjID0gbC50b1N0cmluZywKICAgICAgICB1ID0gbC5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICBkID0gdS50b1N0cmluZywKICAgICAgICBoID0gZC5jYWxsKE9iamVjdCksCiAgICAgICAgZiA9IHt9LAogICAgICAgIHAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlICYmICJudW1iZXIiICE9IHR5cGVvZiBlLm5vZGVUeXBlICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUuaXRlbQogICAgICAgIH0sCiAgICAgICAgZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiBlID09PSBlLndpbmRvdwogICAgICAgIH0sCiAgICAgICAgbSA9IGUuZG9jdW1lbnQsCiAgICAgICAgdiA9IHsKICAgICAgICAgICAgdHlwZTogITAsCiAgICAgICAgICAgIHNyYzogITAsCiAgICAgICAgICAgIG5vbmNlOiAhMCwKICAgICAgICAgICAgbm9Nb2R1bGU6ICEwCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiB5KGUsIHQsIG4pIHsKICAgICAgICB2YXIgaSwgciwgbyA9IChuID0gbiB8fCBtKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICBpZiAoby50ZXh0ID0gZSwgdCkKICAgICAgICAgICAgZm9yIChpIGluIHYpKHIgPSB0W2ldIHx8IHQuZ2V0QXR0cmlidXRlICYmIHQuZ2V0QXR0cmlidXRlKGkpKSAmJiBvLnNldEF0dHJpYnV0ZShpLCByKTsKICAgICAgICBuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKQogICAgfQoKICAgIGZ1bmN0aW9uIGIoZSkgewogICAgICAgIHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbFtjLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUKICAgIH0KICAgIHZhciB3ID0gIjMuNi4wIiwKICAgICAgICB4ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gbmV3IHguZm4uaW5pdChlLCB0KQogICAgICAgIH07CgogICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwKICAgICAgICAgICAgbiA9IGIoZSk7CiAgICAgICAgcmV0dXJuICFwKGUpICYmICFnKGUpICYmICgiYXJyYXkiID09PSBuIHx8IDAgPT09IHQgfHwgIm51bWJlciIgPT0gdHlwZW9mIHQgJiYgMCA8IHQgJiYgdCAtIDEgaW4gZSkKICAgIH0KICAgIHguZm4gPSB4LnByb3RvdHlwZSA9IHsKICAgICAgICBqcXVlcnk6IHcsCiAgICAgICAgY29uc3RydWN0b3I6IHgsCiAgICAgICAgbGVuZ3RoOiAwLAogICAgICAgIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gci5jYWxsKHRoaXMpCiAgICAgICAgfSwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHIuY2FsbCh0aGlzKSA6IGUgPCAwID8gdGhpc1tlICsgdGhpcy5sZW5ndGhdIDogdGhpc1tlXQogICAgICAgIH0sCiAgICAgICAgcHVzaFN0YWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0geC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksIGUpOwogICAgICAgICAgICByZXR1cm4gdC5wcmV2T2JqZWN0ID0gdGhpcywgdAogICAgICAgIH0sCiAgICAgICAgZWFjaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4geC5lYWNoKHRoaXMsIGUpCiAgICAgICAgfSwKICAgICAgICBtYXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHgubWFwKHRoaXMsIChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5jYWxsKHQsIG4sIHQpCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9LAogICAgICAgIHNsaWNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHIuYXBwbHkodGhpcywgYXJndW1lbnRzKSkKICAgICAgICB9LAogICAgICAgIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEoMCkKICAgICAgICB9LAogICAgICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lcSgtMSkKICAgICAgICB9LAogICAgICAgIGV2ZW46IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soeC5ncmVwKHRoaXMsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHQgKyAxKSAlIDIKICAgICAgICAgICAgfSkpKQogICAgICAgIH0sCiAgICAgICAgb2RkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKHguZ3JlcCh0aGlzLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgJSAyCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9LAogICAgICAgIGVxOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5sZW5ndGgsCiAgICAgICAgICAgICAgICBuID0gK2UgKyAoZSA8IDAgPyB0IDogMCk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygwIDw9IG4gJiYgbiA8IHQgPyBbdGhpc1tuXV0gOiBbXSkKICAgICAgICB9LAogICAgICAgIGVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpCiAgICAgICAgfSwKICAgICAgICBwdXNoOiBhLAogICAgICAgIHNvcnQ6IG4uc29ydCwKICAgICAgICBzcGxpY2U6IG4uc3BsaWNlCiAgICB9LCB4LmV4dGVuZCA9IHguZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQsIG4sIGksIHIsIG8sIGEgPSBhcmd1bWVudHNbMF0gfHwge30sCiAgICAgICAgICAgIHMgPSAxLAogICAgICAgICAgICBsID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgYyA9ICExOwogICAgICAgIGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChjID0gYSwgYSA9IGFyZ3VtZW50c1tzXSB8fCB7fSwgcysrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgcChhKSB8fCAoYSA9IHt9KSwgcyA9PT0gbCAmJiAoYSA9IHRoaXMsIHMtLSk7IHMgPCBsOyBzKyspCiAgICAgICAgICAgIGlmIChudWxsICE9IChlID0gYXJndW1lbnRzW3NdKSkKICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKSBpID0gZVt0XSwgIl9fcHJvdG9fXyIgIT09IHQgJiYgYSAhPT0gaSAmJiAoYyAmJiBpICYmICh4LmlzUGxhaW5PYmplY3QoaSkgfHwgKHIgPSBBcnJheS5pc0FycmF5KGkpKSkgPyAobiA9IGFbdF0sIG8gPSByICYmICFBcnJheS5pc0FycmF5KG4pID8gW10gOiByIHx8IHguaXNQbGFpbk9iamVjdChuKSA/IG4gOiB7fSwgciA9ICExLCBhW3RdID0geC5leHRlbmQoYywgbywgaSkpIDogdm9pZCAwICE9PSBpICYmIChhW3RdID0gaSkpOwogICAgICAgIHJldHVybiBhCiAgICB9LCB4LmV4dGVuZCh7CiAgICAgICAgZXhwYW5kbzogImpRdWVyeSIgKyAodyArIE1hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csICIiKSwKICAgICAgICBpc1JlYWR5OiAhMCwKICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSkKICAgICAgICB9LAogICAgICAgIG5vb3A6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgaXNQbGFpbk9iamVjdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbjsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIltvYmplY3QgT2JqZWN0XSIgIT09IGMuY2FsbChlKSB8fCAodCA9IGkoZSkpICYmICgiZnVuY3Rpb24iICE9IHR5cGVvZihuID0gdS5jYWxsKHQsICJjb25zdHJ1Y3RvciIpICYmIHQuY29uc3RydWN0b3IpIHx8IGQuY2FsbChuKSAhPT0gaCkpCiAgICAgICAgfSwKICAgICAgICBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICBmb3IgKHQgaW4gZSkgcmV0dXJuICExOwogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9LAogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgeShlLCB7CiAgICAgICAgICAgICAgICBub25jZTogdCAmJiB0Lm5vbmNlCiAgICAgICAgICAgIH0sIG4pCiAgICAgICAgfSwKICAgICAgICBlYWNoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpID0gMDsKICAgICAgICAgICAgaWYgKF8oZSkpCiAgICAgICAgICAgICAgICBmb3IgKG4gPSBlLmxlbmd0aDsgaSA8IG4gJiYgITEgIT09IHQuY2FsbChlW2ldLCBpLCBlW2ldKTsgaSsrKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZm9yIChpIGluIGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKCExID09PSB0LmNhbGwoZVtpXSwgaSwgZVtpXSkpIGJyZWFrOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgbWFrZUFycmF5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdCB8fCBbXTsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSAmJiAoXyhPYmplY3QoZSkpID8geC5tZXJnZShuLCAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IFtlXSA6IGUpIDogYS5jYWxsKG4sIGUpKSwgbgogICAgICAgIH0sCiAgICAgICAgaW5BcnJheTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gLTEgOiBzLmNhbGwodCwgZSwgbikKICAgICAgICB9LAogICAgICAgIG1lcmdlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSArdC5sZW5ndGgsIGkgPSAwLCByID0gZS5sZW5ndGg7IGkgPCBuOyBpKyspIGVbcisrXSA9IHRbaV07CiAgICAgICAgICAgIHJldHVybiBlLmxlbmd0aCA9IHIsIGUKICAgICAgICB9LAogICAgICAgIGdyZXA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCByID0gMCwgbyA9IGUubGVuZ3RoLCBhID0gIW47IHIgPCBvOyByKyspICF0KGVbcl0sIHIpICE9PSBhICYmIGkucHVzaChlW3JdKTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIG1hcDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciwgYSA9IDAsCiAgICAgICAgICAgICAgICBzID0gW107CiAgICAgICAgICAgIGlmIChfKGUpKQogICAgICAgICAgICAgICAgZm9yIChpID0gZS5sZW5ndGg7IGEgPCBpOyBhKyspIG51bGwgIT0gKHIgPSB0KGVbYV0sIGEsIG4pKSAmJiBzLnB1c2gocik7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoYSBpbiBlKSBudWxsICE9IChyID0gdChlW2FdLCBhLCBuKSkgJiYgcy5wdXNoKHIpOwogICAgICAgICAgICByZXR1cm4gbyhzKQogICAgICAgIH0sCiAgICAgICAgZ3VpZDogMSwKICAgICAgICBzdXBwb3J0OiBmCiAgICB9KSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICh4LmZuW1N5bWJvbC5pdGVyYXRvcl0gPSBuW1N5bWJvbC5pdGVyYXRvcl0pLCB4LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGxbIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpCiAgICB9KSk7CiAgICB2YXIgUyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSwgcywgbCwgYywgdSwgZCwgaCwgZiwgcCwgZywgbSwgdiwgeSwgYiwgdyA9ICJzaXp6bGUiICsgMSAqIG5ldyBEYXRlLAogICAgICAgICAgICB4ID0gZS5kb2N1bWVudCwKICAgICAgICAgICAgXyA9IDAsCiAgICAgICAgICAgIFMgPSAwLAogICAgICAgICAgICBDID0gbGUoKSwKICAgICAgICAgICAgayA9IGxlKCksCiAgICAgICAgICAgIFQgPSBsZSgpLAogICAgICAgICAgICBBID0gbGUoKSwKICAgICAgICAgICAgRSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0ICYmIChkID0gITApLCAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEQgPSB7fS5oYXNPd25Qcm9wZXJ0eSwKICAgICAgICAgICAgTyA9IFtdLAogICAgICAgICAgICBNID0gTy5wb3AsCiAgICAgICAgICAgIEkgPSBPLnB1c2gsCiAgICAgICAgICAgIEwgPSBPLnB1c2gsCiAgICAgICAgICAgIFAgPSBPLnNsaWNlLAogICAgICAgICAgICBqID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIGkgPSBlLmxlbmd0aDsgbiA8IGk7IG4rKykKICAgICAgICAgICAgICAgICAgICBpZiAoZVtuXSA9PT0gdCkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTiA9ICJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsCiAgICAgICAgICAgIEYgPSAiW1xceDIwXFx0XFxyXFxuXFxmXSIsCiAgICAgICAgICAgIFIgPSAiKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iICsgRiArICI/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXDAtXFx4N2ZdKSsiLAogICAgICAgICAgICAkID0gIlxcWyIgKyBGICsgIiooIiArIFIgKyAiKSg/OiIgKyBGICsgIiooWypeJHwhfl0/PSkiICsgRiArICIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIgKyBSICsgIikpfCkiICsgRiArICIqXFxdIiwKICAgICAgICAgICAgeiA9ICI6KCIgKyBSICsgIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiICsgJCArICIpKil8LiopXFwpfCkiLAogICAgICAgICAgICBIID0gbmV3IFJlZ0V4cChGICsgIisiLCAiZyIpLAogICAgICAgICAgICBCID0gbmV3IFJlZ0V4cCgiXiIgKyBGICsgIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIgKyBGICsgIiskIiwgImciKSwKICAgICAgICAgICAgVyA9IG5ldyBSZWdFeHAoIl4iICsgRiArICIqLCIgKyBGICsgIioiKSwKICAgICAgICAgICAgcSA9IG5ldyBSZWdFeHAoIl4iICsgRiArICIqKFs+K35dfCIgKyBGICsgIikiICsgRiArICIqIiksCiAgICAgICAgICAgIFUgPSBuZXcgUmVnRXhwKEYgKyAifD4iKSwKICAgICAgICAgICAgViA9IG5ldyBSZWdFeHAoeiksCiAgICAgICAgICAgIFkgPSBuZXcgUmVnRXhwKCJeIiArIFIgKyAiJCIpLAogICAgICAgICAgICBYID0gewogICAgICAgICAgICAgICAgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBSICsgIikiKSwKICAgICAgICAgICAgICAgIENMQVNTOiBuZXcgUmVnRXhwKCJeXFwuKCIgKyBSICsgIikiKSwKICAgICAgICAgICAgICAgIFRBRzogbmV3IFJlZ0V4cCgiXigiICsgUiArICJ8WypdKSIpLAogICAgICAgICAgICAgICAgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyAkKSwKICAgICAgICAgICAgICAgIFBTRVVETzogbmV3IFJlZ0V4cCgiXiIgKyB6KSwKICAgICAgICAgICAgICAgIENISUxEOiBuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiICsgRiArICIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIiArIEYgKyAiKig/OihbKy1dfCkiICsgRiArICIqKFxcZCspfCkpIiArIEYgKyAiKlxcKXwpIiwgImkiKSwKICAgICAgICAgICAgICAgIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgTiArICIpJCIsICJpIiksCiAgICAgICAgICAgICAgICBuZWVkc0NvbnRleHQ6IG5ldyBSZWdFeHAoIl4iICsgRiArICIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiICsgRiArICIqKCg/Oi1cXGQpP1xcZCopIiArIEYgKyAiKlxcKXwpKD89W14tXXwkKSIsICJpIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRyA9IC9IVE1MJC9pLAogICAgICAgICAgICBLID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSwKICAgICAgICAgICAgUSA9IC9eaFxkJC9pLAogICAgICAgICAgICBaID0gL15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLAogICAgICAgICAgICBKID0gL14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywKICAgICAgICAgICAgZWUgPSAvWyt+XS8sCiAgICAgICAgICAgIHRlID0gbmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iICsgRiArICI/fFxcXFwoW15cXHJcXG5cXGZdKSIsICJnIiksCiAgICAgICAgICAgIG5lID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSAiMHgiICsgZS5zbGljZSgxKSAtIDY1NTM2OwogICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKG4gPCAwID8gU3RyaW5nLmZyb21DaGFyQ29kZShuICsgNjU1MzYpIDogU3RyaW5nLmZyb21DaGFyQ29kZShuID4+IDEwIHwgNTUyOTYsIDEwMjMgJiBuIHwgNTYzMjApKQogICAgICAgICAgICB9LAogICAgICAgICAgICBpZSA9IC8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLAogICAgICAgICAgICByZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ID8gIlwwIiA9PT0gZSA/ICLvv70iIDogZS5zbGljZSgwLCAtMSkgKyAiXFwiICsgZS5jaGFyQ29kZUF0KGUubGVuZ3RoIC0gMSkudG9TdHJpbmcoMTYpICsgIiAiIDogIlxcIiArIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGgoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZSA9IHdlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgImZpZWxkc2V0IiA9PT0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpCiAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICBkaXI6ICJwYXJlbnROb2RlIiwKICAgICAgICAgICAgICAgIG5leHQ6ICJsZWdlbmQiCiAgICAgICAgICAgIH0pOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEwuYXBwbHkoTyA9IFAuY2FsbCh4LmNoaWxkTm9kZXMpLCB4LmNoaWxkTm9kZXMpLCBPW3guY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlCiAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICBMID0gewogICAgICAgICAgICAgICAgYXBwbHk6IE8ubGVuZ3RoID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIEkuYXBwbHkoZSwgUC5jYWxsKHQpKQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gZS5sZW5ndGgsIGkgPSAwOyBlW24rK10gPSB0W2krK107KTsKICAgICAgICAgICAgICAgICAgICBlLmxlbmd0aCA9IG4gLSAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHNlKGUsIHQsIGksIHIpIHsKICAgICAgICAgICAgdmFyIG8sIHMsIGMsIHUsIGQsIHAsIHYsIHkgPSB0ICYmIHQub3duZXJEb2N1bWVudCwKICAgICAgICAgICAgICAgIHggPSB0ID8gdC5ub2RlVHlwZSA6IDk7CiAgICAgICAgICAgIGlmIChpID0gaSB8fCBbXSwgInN0cmluZyIgIT0gdHlwZW9mIGUgfHwgIWUgfHwgMSAhPT0geCAmJiA5ICE9PSB4ICYmIDExICE9PSB4KSByZXR1cm4gaTsKICAgICAgICAgICAgaWYgKCFyICYmIChoKHQpLCB0ID0gdCB8fCBmLCBnKSkgewogICAgICAgICAgICAgICAgaWYgKDExICE9PSB4ICYmIChkID0gSi5leGVjKGUpKSkKICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGRbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDkgPT09IHgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGMgPSB0LmdldEVsZW1lbnRCeUlkKG8pKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5pZCA9PT0gbykgcmV0dXJuIGkucHVzaChjKSwgaQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHkgJiYgKGMgPSB5LmdldEVsZW1lbnRCeUlkKG8pKSAmJiBiKHQsIGMpICYmIGMuaWQgPT09IG8pIHJldHVybiBpLnB1c2goYyksIGkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFsyXSkgcmV0dXJuIEwuYXBwbHkoaSwgdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSksIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyA9IGRbM10pICYmIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpIHJldHVybiBMLmFwcGx5KGksIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvKSksIGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobi5xc2EgJiYgIUFbZSArICIgIl0gJiYgKCFtIHx8ICFtLnRlc3QoZSkpICYmICgxICE9PSB4IHx8ICJvYmplY3QiICE9PSB0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPSBlLCB5ID0gdCwgMSA9PT0geCAmJiAoVS50ZXN0KGUpIHx8IHEudGVzdChlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgoeSA9IGVlLnRlc3QoZSkgJiYgdmUodC5wYXJlbnROb2RlKSB8fCB0KSA9PT0gdCAmJiBuLnNjb3BlIHx8ICgodSA9IHQuZ2V0QXR0cmlidXRlKCJpZCIpKSA/IHUgPSB1LnJlcGxhY2UoaWUsIHJlKSA6IHQuc2V0QXR0cmlidXRlKCJpZCIsIHUgPSB3KSksIHMgPSAocCA9IGEoZSkpLmxlbmd0aDsgcy0tOykgcFtzXSA9ICh1ID8gIiMiICsgdSA6ICI6c2NvcGUiKSArICIgIiArIGJlKHBbc10pOwogICAgICAgICAgICAgICAgICAgICAgICB2ID0gcC5qb2luKCIsIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEwuYXBwbHkoaSwgeS5xdWVyeVNlbGVjdG9yQWxsKHYpKSwgaQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQShlLCAhMCkKICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICB1ID09PSB3ICYmIHQucmVtb3ZlQXR0cmlidXRlKCJpZCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBsKGUucmVwbGFjZShCLCAiJDEiKSwgdCwgaSwgcikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxlKCkgewogICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdChuLCByKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5wdXNoKG4gKyAiICIpID4gaS5jYWNoZUxlbmd0aCAmJiBkZWxldGUgdFtlLnNoaWZ0KCldLCB0W24gKyAiICJdID0gcgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjZShlKSB7CiAgICAgICAgICAgIHJldHVybiBlW3ddID0gITAsIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHVlKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBmLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlKHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZGUoZSwgdCkgewogICAgICAgICAgICBmb3IgKHZhciBuID0gZS5zcGxpdCgifCIpLCByID0gbi5sZW5ndGg7IHItLTspIGkuYXR0ckhhbmRsZVtuW3JdXSA9IHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhlKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0ICYmIGUsCiAgICAgICAgICAgICAgICBpID0gbiAmJiAxID09PSBlLm5vZGVUeXBlICYmIDEgPT09IHQubm9kZVR5cGUgJiYgZS5zb3VyY2VJbmRleCAtIHQuc291cmNlSW5kZXg7CiAgICAgICAgICAgIGlmIChpKSByZXR1cm4gaTsKICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IG4ubmV4dFNpYmxpbmc7KQogICAgICAgICAgICAgICAgICAgIGlmIChuID09PSB0KSByZXR1cm4gLTE7CiAgICAgICAgICAgIHJldHVybiBlID8gMSA6IC0xCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmZShlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gImlucHV0IiA9PT0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICYmIHQudHlwZSA9PT0gZQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwZShlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgIHJldHVybiAoImlucHV0IiA9PT0gbiB8fCAiYnV0dG9uIiA9PT0gbikgJiYgdC50eXBlID09PSBlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZm9ybSIgaW4gdCA/IHQucGFyZW50Tm9kZSAmJiAhMSA9PT0gdC5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gdCA/ICJsYWJlbCIgaW4gdC5wYXJlbnROb2RlID8gdC5wYXJlbnROb2RlLmRpc2FibGVkID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6IHQuaXNEaXNhYmxlZCA9PT0gZSB8fCB0LmlzRGlzYWJsZWQgIT09ICFlICYmIGFlKHQpID09PSBlIDogdC5kaXNhYmxlZCA9PT0gZSA6ICJsYWJlbCIgaW4gdCAmJiB0LmRpc2FibGVkID09PSBlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1lKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGNlKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9ICt0LCBjZSgoZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIsIG8gPSBlKFtdLCBuLmxlbmd0aCwgdCksIGEgPSBvLmxlbmd0aDsgYS0tOykgbltyID0gb1thXV0gJiYgKG5bcl0gPSAhKGlbcl0gPSBuW3JdKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHZlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgdm9pZCAwICE9PSBlLmdldEVsZW1lbnRzQnlUYWdOYW1lICYmIGUKICAgICAgICB9CiAgICAgICAgZm9yICh0IGluIG4gPSBzZS5zdXBwb3J0ID0ge30sIG8gPSBzZS5pc1hNTCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZSAmJiBlLm5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICBuID0gZSAmJiAoZS5vd25lckRvY3VtZW50IHx8IGUpLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgICAgIHJldHVybiAhRy50ZXN0KHQgfHwgbiAmJiBuLm5vZGVOYW1lIHx8ICJIVE1MIikKICAgICAgICAgICAgfSwgaCA9IHNlLnNldERvY3VtZW50ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIHIsIGEgPSBlID8gZS5vd25lckRvY3VtZW50IHx8IGUgOiB4OwogICAgICAgICAgICAgICAgcmV0dXJuIGEgIT0gZiAmJiA5ID09PSBhLm5vZGVUeXBlICYmIGEuZG9jdW1lbnRFbGVtZW50ICYmIChwID0gKGYgPSBhKS5kb2N1bWVudEVsZW1lbnQsIGcgPSAhbyhmKSwgeCAhPSBmICYmIChyID0gZi5kZWZhdWx0VmlldykgJiYgci50b3AgIT09IHIgJiYgKHIuYWRkRXZlbnRMaXN0ZW5lciA/IHIuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgb2UsICExKSA6IHIuYXR0YWNoRXZlbnQgJiYgci5hdHRhY2hFdmVudCgib251bmxvYWQiLCBvZSkpLCBuLnNjb3BlID0gdWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZChmLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgdm9pZCAwICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwgJiYgIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIGZpZWxkc2V0IGRpdiIpLmxlbmd0aAogICAgICAgICAgICAgICAgfSkpLCBuLmF0dHJpYnV0ZXMgPSB1ZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNsYXNzTmFtZSA9ICJpIiwgIWUuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKQogICAgICAgICAgICAgICAgfSkpLCBuLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gdWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBlbmRDaGlsZChmLmNyZWF0ZUNvbW1lbnQoIiIpKSwgIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGgKICAgICAgICAgICAgICAgIH0pKSwgbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gWi50ZXN0KGYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksIG4uZ2V0QnlJZCA9IHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAuYXBwZW5kQ2hpbGQoZSkuaWQgPSB3LCAhZi5nZXRFbGVtZW50c0J5TmFtZSB8fCAhZi5nZXRFbGVtZW50c0J5TmFtZSh3KS5sZW5ndGgKICAgICAgICAgICAgICAgIH0pKSwgbi5nZXRCeUlkID8gKGkuZmlsdGVyLklEID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKHRlLCBuZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpID09PSB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgaS5maW5kLklEID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQuZ2V0RWxlbWVudEJ5SWQgJiYgZykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZ2V0RWxlbWVudEJ5SWQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuID8gW25dIDogW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSA6IChpLmZpbHRlci5JRCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucmVwbGFjZSh0ZSwgbmUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdm9pZCAwICE9PSBlLmdldEF0dHJpYnV0ZU5vZGUgJiYgZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiBuLnZhbHVlID09PSB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgaS5maW5kLklEID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQuZ2V0RWxlbWVudEJ5SWQgJiYgZykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciwgbyA9IHQuZ2V0RWxlbWVudEJ5SWQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSB0LmdldEVsZW1lbnRzQnlOYW1lKGUpLCBpID0gMDsgbyA9IHJbaSsrXTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuID0gby5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSAmJiBuLnZhbHVlID09PSBlKSByZXR1cm4gW29dCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGkuZmluZC5UQUcgPSBuLmdldEVsZW1lbnRzQnlUYWdOYW1lID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpIDogbi5xc2EgPyB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSkgOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOwogICAgICAgICAgICAgICAgICAgIGlmICgiKiIgPT09IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG4gPSBvW3IrK107KSAxID09PSBuLm5vZGVUeXBlICYmIGkucHVzaChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgICAgIH0sIGkuZmluZC5DTEFTUyA9IG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICYmIGcpIHJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSkKICAgICAgICAgICAgICAgIH0sIHYgPSBbXSwgbSA9IFtdLCAobi5xc2EgPSBaLnRlc3QoZi5xdWVyeVNlbGVjdG9yQWxsKSkgJiYgKHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgICAgcC5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyB3ICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyB3ICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgbS5wdXNoKCJbKl4kXT0iICsgRiArICIqKD86Jyd8XCJcIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IG0ucHVzaCgiXFxbIiArIEYgKyAiKig/OnZhbHVlfCIgKyBOICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyB3ICsgIi1dIikubGVuZ3RoIHx8IG0ucHVzaCgifj0iKSwgKHQgPSBmLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsICIiKSwgZS5hcHBlbmRDaGlsZCh0KSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGggfHwgbS5wdXNoKCJcXFsiICsgRiArICIqbmFtZSIgKyBGICsgIio9IiArIEYgKyAiKig/OicnfFwiXCIpIiksIGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgbS5wdXNoKCI6Y2hlY2tlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIiArIHcgKyAiKyoiKS5sZW5ndGggfHwgbS5wdXNoKCIuIy4rWyt+XSIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIlxcXGYiKSwgbS5wdXNoKCJbXFxyXFxuXFxmXSIpCiAgICAgICAgICAgICAgICB9KSksIHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5pbm5lckhUTUwgPSAiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT48c2VsZWN0IGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbi8+PC9zZWxlY3Q+IjsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGYuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJoaWRkZW4iKSwgZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiRCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoICYmIG0ucHVzaCgibmFtZSIgKyBGICsgIipbKl4kfCF+XT89IiksIDIgIT09IGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGggJiYgbS5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgcC5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZCA9ICEwLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCAmJiBtLnB1c2goIjplbmFibGVkIiwgIjpkaXNhYmxlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSwgbS5wdXNoKCIsLio6IikKICAgICAgICAgICAgICAgIH0pKSksIChuLm1hdGNoZXNTZWxlY3RvciA9IFoudGVzdCh5ID0gcC5tYXRjaGVzIHx8IHAud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IHAubW96TWF0Y2hlc1NlbGVjdG9yIHx8IHAub01hdGNoZXNTZWxlY3RvciB8fCBwLm1zTWF0Y2hlc1NlbGVjdG9yKSkgJiYgdWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBuLmRpc2Nvbm5lY3RlZE1hdGNoID0geS5jYWxsKGUsICIqIiksIHkuY2FsbChlLCAiW3MhPScnXTp4IiksIHYucHVzaCgiIT0iLCB6KQogICAgICAgICAgICAgICAgfSkpLCBtID0gbS5sZW5ndGggJiYgbmV3IFJlZ0V4cChtLmpvaW4oInwiKSksIHYgPSB2Lmxlbmd0aCAmJiBuZXcgUmVnRXhwKHYuam9pbigifCIpKSwgdCA9IFoudGVzdChwLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSwgYiA9IHQgfHwgWi50ZXN0KHAuY29udGFpbnMpID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUuZG9jdW1lbnRFbGVtZW50IDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgJiYgdC5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBpIHx8ICEoIWkgfHwgMSAhPT0gaS5ub2RlVHlwZSB8fCAhKG4uY29udGFpbnMgPyBuLmNvbnRhaW5zKGkpIDogZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAmJiAxNiAmIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaSkpKQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHQgPSB0LnBhcmVudE5vZGU7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT09IGUpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0sIEUgPSB0ID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlID09PSB0KSByZXR1cm4gZCA9ICEwLCAwOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSB8fCAoMSAmIChpID0gKGUub3duZXJEb2N1bWVudCB8fCBlKSA9PSAodC5vd25lckRvY3VtZW50IHx8IHQpID8gZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSA6IDEpIHx8ICFuLnNvcnREZXRhY2hlZCAmJiB0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpID09PSBpID8gZSA9PSBmIHx8IGUub3duZXJEb2N1bWVudCA9PSB4ICYmIGIoeCwgZSkgPyAtMSA6IHQgPT0gZiB8fCB0Lm93bmVyRG9jdW1lbnQgPT0geCAmJiBiKHgsIHQpID8gMSA6IHUgPyBqKHUsIGUpIC0gaih1LCB0KSA6IDAgOiA0ICYgaSA/IC0xIDogMSkKICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IHQpIHJldHVybiBkID0gITAsIDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gW3RdOwogICAgICAgICAgICAgICAgICAgIGlmICghciB8fCAhbykgcmV0dXJuIGUgPT0gZiA/IC0xIDogdCA9PSBmID8gMSA6IHIgPyAtMSA6IG8gPyAxIDogdSA/IGoodSwgZSkgLSBqKHUsIHQpIDogMDsKICAgICAgICAgICAgICAgICAgICBpZiAociA9PT0gbykgcmV0dXJuIGhlKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGU7IG4gPSBuLnBhcmVudE5vZGU7KSBhLnVuc2hpZnQobik7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gdDsgbiA9IG4ucGFyZW50Tm9kZTspIHMudW5zaGlmdChuKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYVtpXSA9PT0gc1tpXTspIGkrKzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA/IGhlKGFbaV0sIHNbaV0pIDogYVtpXSA9PSB4ID8gLTEgOiBzW2ldID09IHggPyAxIDogMAogICAgICAgICAgICAgICAgfSksIGYKICAgICAgICAgICAgfSwgc2UubWF0Y2hlcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZShlLCBudWxsLCBudWxsLCB0KQogICAgICAgICAgICB9LCBzZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoaChlKSwgbi5tYXRjaGVzU2VsZWN0b3IgJiYgZyAmJiAhQVt0ICsgIiAiXSAmJiAoIXYgfHwgIXYudGVzdCh0KSkgJiYgKCFtIHx8ICFtLnRlc3QodCkpKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0geS5jYWxsKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChpIHx8IG4uZGlzY29ubmVjdGVkTWF0Y2ggfHwgZS5kb2N1bWVudCAmJiAxMSAhPT0gZS5kb2N1bWVudC5ub2RlVHlwZSkgcmV0dXJuIGkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBBKHQsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIDAgPCBzZSh0LCBmLCBudWxsLCBbZV0pLmxlbmd0aAogICAgICAgICAgICB9LCBzZS5jb250YWlucyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9IGYgJiYgaChlKSwgYihlLCB0KQogICAgICAgICAgICB9LCBzZS5hdHRyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPSBmICYmIGgoZSk7CiAgICAgICAgICAgICAgICB2YXIgciA9IGkuYXR0ckhhbmRsZVt0LnRvTG93ZXJDYXNlKCldLAogICAgICAgICAgICAgICAgICAgIG8gPSByICYmIEQuY2FsbChpLmF0dHJIYW5kbGUsIHQudG9Mb3dlckNhc2UoKSkgPyByKGUsIHQsICFnKSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IG8gPyBvIDogbi5hdHRyaWJ1dGVzIHx8ICFnID8gZS5nZXRBdHRyaWJ1dGUodCkgOiAobyA9IGUuZ2V0QXR0cmlidXRlTm9kZSh0KSkgJiYgby5zcGVjaWZpZWQgPyBvLnZhbHVlIDogbnVsbAogICAgICAgICAgICB9LCBzZS5lc2NhcGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGUgKyAiIikucmVwbGFjZShpZSwgcmUpCiAgICAgICAgICAgIH0sIHNlLmVycm9yID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgZSkKICAgICAgICAgICAgfSwgc2UudW5pcXVlU29ydCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBpID0gW10sCiAgICAgICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgICAgICBpZiAoZCA9ICFuLmRldGVjdER1cGxpY2F0ZXMsIHUgPSAhbi5zb3J0U3RhYmxlICYmIGUuc2xpY2UoMCksIGUuc29ydChFKSwgZCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoOyB0ID0gZVtvKytdOykgdCA9PT0gZVtvXSAmJiAociA9IGkucHVzaChvKSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IHItLTspIGUuc3BsaWNlKGlbcl0sIDEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdSA9IG51bGwsIGUKICAgICAgICAgICAgfSwgciA9IHNlLmdldFRleHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiA9ICIiLAogICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLm5vZGVUeXBlOwogICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gbyB8fCA5ID09PSBvIHx8IDExID09PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZS50ZXh0Q29udGVudCkgcmV0dXJuIGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxpbmcpIG4gKz0gcihlKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoMyA9PT0gbyB8fCA0ID09PSBvKSByZXR1cm4gZS5ub2RlVmFsdWUKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAoOyB0ID0gZVtpKytdOykgbiArPSByKHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfSwgKGkgPSBzZS5zZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICAgICBjYWNoZUxlbmd0aDogNTAsCiAgICAgICAgICAgICAgICBjcmVhdGVQc2V1ZG86IGNlLAogICAgICAgICAgICAgICAgbWF0Y2g6IFgsCiAgICAgICAgICAgICAgICBhdHRySGFuZGxlOiB7fSwKICAgICAgICAgICAgICAgIGZpbmQ6IHt9LAogICAgICAgICAgICAgICAgcmVsYXRpdmU6IHsKICAgICAgICAgICAgICAgICAgICAiPiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicGFyZW50Tm9kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0OiAhMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIiAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogInBhcmVudE5vZGUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiKyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6ICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAifiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiAicHJldmlvdXNTaWJsaW5nIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwcmVGaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICBBVFRSOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlWzFdID0gZVsxXS5yZXBsYWNlKHRlLCBuZSksIGVbM10gPSAoZVszXSB8fCBlWzRdIHx8IGVbNV0gfHwgIiIpLnJlcGxhY2UodGUsIG5lKSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDSElMRDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwgMykgPyAoZVszXSB8fCBzZS5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0gPSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIHNlLmVycm9yKGVbMF0pLCBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWC5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgVi50ZXN0KG4pICYmICh0ID0gYShuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5yZXBsYWNlKHRlLCBuZSkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIqIiA9PT0gZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQ0xBU1M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBDW2UgKyAiICJdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCB8fCAodCA9IG5ldyBSZWdFeHAoIihefCIgKyBGICsgIikiICsgZSArICIoIiArIEYgKyAifCQpIikpICYmIEMoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LnRlc3QoInN0cmluZyIgPT0gdHlwZW9mIGUuY2xhc3NOYW1lICYmIGUuY2xhc3NOYW1lIHx8IHZvaWQgMCAhPT0gZS5nZXRBdHRyaWJ1dGUgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQVRUUjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBzZS5hdHRyKGksIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gciA/ICIhPSIgPT09IHQgOiAhdCB8fCAociArPSAiIiwgIj0iID09PSB0ID8gciA9PT0gbiA6ICIhPSIgPT09IHQgPyByICE9PSBuIDogIl49IiA9PT0gdCA/IG4gJiYgMCA9PT0gci5pbmRleE9mKG4pIDogIio9IiA9PT0gdCA/IG4gJiYgLTEgPCByLmluZGV4T2YobikgOiAiJD0iID09PSB0ID8gbiAmJiByLnNsaWNlKC1uLmxlbmd0aCkgPT09IG4gOiAifj0iID09PSB0ID8gLTEgPCAoIiAiICsgci5yZXBsYWNlKEgsICIgIikgKyAiICIpLmluZGV4T2YobikgOiAifD0iID09PSB0ICYmIChyID09PSBuIHx8IHIuc2xpY2UoMCwgbi5sZW5ndGggKyAxKSA9PT0gbiArICItIikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIENISUxEOiBmdW5jdGlvbihlLCB0LCBuLCBpLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gIm50aCIgIT09IGUuc2xpY2UoMCwgMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gImxhc3QiICE9PSBlLnNsaWNlKC00KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAib2YtdHlwZSIgPT09IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBpICYmIDAgPT09IHIgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIG4sIGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjLCB1LCBkLCBoLCBmLCBwLCBnID0gbyAhPT0gYSA/ICJuZXh0U2libGluZyIgOiAicHJldmlvdXNTaWJsaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzICYmIHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gIWwgJiYgIXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IHQ7IGggPSBoW2ddOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA/IGgubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdiA6IDEgPT09IGgubm9kZVR5cGUpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBnID0gIm9ubHkiID09PSBlICYmICFwICYmICJuZXh0U2libGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgPSBbYSA/IG0uZmlyc3RDaGlsZCA6IG0ubGFzdENoaWxkXSwgYSAmJiB5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYiA9IChmID0gKGMgPSAodSA9IChkID0gKGggPSBtKVt3XSB8fCAoaFt3XSA9IHt9KSlbaC51bmlxdWVJRF0gfHwgKGRbaC51bmlxdWVJRF0gPSB7fSkpW2VdIHx8IFtdKVswXSA9PT0gXyAmJiBjWzFdKSAmJiBjWzJdLCBoID0gZiAmJiBtLmNoaWxkTm9kZXNbZl07IGggPSArK2YgJiYgaCAmJiBoW2ddIHx8IChiID0gZiA9IDApIHx8IHAucG9wKCk7KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IGgubm9kZVR5cGUgJiYgKytiICYmIGggPT09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1W2VdID0gW18sIGYsIGJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ICYmIChiID0gZiA9IChjID0gKHUgPSAoZCA9IChoID0gdClbd10gfHwgKGhbd10gPSB7fSkpW2gudW5pcXVlSURdIHx8IChkW2gudW5pcXVlSURdID0ge30pKVtlXSB8fCBbXSlbMF0gPT09IF8gJiYgY1sxXSksICExID09PSBiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoID0gKytmICYmIGggJiYgaFtnXSB8fCAoYiA9IGYgPSAwKSB8fCBwLnBvcCgpKSAmJiAoKHMgPyBoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IHYgOiAxICE9PSBoLm5vZGVUeXBlKSB8fCAhKytiIHx8ICh5ICYmICgodSA9IChkID0gaFt3XSB8fCAoaFt3XSA9IHt9KSlbaC51bmlxdWVJRF0gfHwgKGRbaC51bmlxdWVJRF0gPSB7fSkpW2VdID0gW18sIGJdKSwgaCAhPT0gdCkpOyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiIC09IHIpID09PSBpIHx8IGIgJSBpID09IDAgJiYgMCA8PSBiIC8gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIHIgPSBpLnBzZXVkb3NbZV0gfHwgaS5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV0gfHwgc2UuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gclt3XSA/IHIodCkgOiAxIDwgci5sZW5ndGggPyAobiA9IFtlLCBlLCAiIiwgdF0sIGkuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpID8gY2UoKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGksIG8gPSByKGUsIHQpLCBhID0gby5sZW5ndGg7IGEtLTspIGVbaSA9IGooZSwgb1thXSldID0gIShuW2ldID0gb1thXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIoZSwgMCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBzZXVkb3M6IHsKICAgICAgICAgICAgICAgICAgICBub3Q6IGNlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhlLnJlcGxhY2UoQiwgIiQxIikpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVt3XSA/IGNlKChmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvLCBhID0gaShlLCBudWxsLCByLCBbXSksIHMgPSBlLmxlbmd0aDsgcy0tOykobyA9IGFbc10pICYmIChlW3NdID0gISh0W3NdID0gbykpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6IGZ1bmN0aW9uKGUsIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0WzBdID0gZSwgaSh0LCBudWxsLCBvLCBuKSwgdFswXSA9IG51bGwsICFuLnBvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgaGFzOiBjZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPCBzZShlLCB0KS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBjb250YWluczogY2UoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBlLnJlcGxhY2UodGUsIG5lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgPCAodC50ZXh0Q29udGVudCB8fCByKHQpKS5pbmRleE9mKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIGxhbmc6IGNlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBZLnRlc3QoZSB8fCAiIikgfHwgc2UuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBlKSwgZSA9IGUucmVwbGFjZSh0ZSwgbmUpLnRvTG93ZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9IGcgPyB0LmxhbmcgOiB0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKSB8fCB0LmdldEF0dHJpYnV0ZSgibGFuZyIpKSByZXR1cm4gKG4gPSBuLnRvTG93ZXJDYXNlKCkpID09PSBlIHx8IDAgPT09IG4uaW5kZXhPZihlICsgIi0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCh0ID0gdC5wYXJlbnROb2RlKSAmJiAxID09PSB0Lm5vZGVUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5sb2NhdGlvbiAmJiBlLmxvY2F0aW9uLmhhc2g7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4uc2xpY2UoMSkgPT09IHQuaWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJvb3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPT09IHAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBmLmFjdGl2ZUVsZW1lbnQgJiYgKCFmLmhhc0ZvY3VzIHx8IGYuaGFzRm9jdXMoKSkgJiYgISEoZS50eXBlIHx8IGUuaHJlZiB8fCB+ZS50YWJJbmRleCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGdlKCExKSwKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZ2UoITApLAogICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSB0ICYmICEhZS5jaGVja2VkIHx8ICJvcHRpb24iID09PSB0ICYmICEhZS5zZWxlY3RlZAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9kZSAmJiBlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgITAgPT09IGUuc2VsZWN0ZWQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVtcHR5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5ub2RlVHlwZSA8IDYpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpLnBzZXVkb3MuZW1wdHkoZSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhlYWRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUS50ZXN0KGUubm9kZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSy50ZXN0KGUubm9kZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBidXR0b246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSB0ICYmICJidXR0b24iID09PSBlLnR5cGUgfHwgImJ1dHRvbiIgPT09IHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgInRleHQiID09PSBlLnR5cGUgJiYgKG51bGwgPT0gKHQgPSBlLmdldEF0dHJpYnV0ZSgidHlwZSIpKSB8fCAidGV4dCIgPT09IHQudG9Mb3dlckNhc2UoKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZpcnN0OiBtZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMF0KICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgbGFzdDogbWUoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt0IC0gMV0KICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgZXE6IG1lKChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbbiA8IDAgPyBuICsgdCA6IG5dCiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIGV2ZW46IG1lKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdDsgbiArPSAyKSBlLnB1c2gobik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIG9kZDogbWUoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDE7IG4gPCB0OyBuICs9IDIpIGUucHVzaChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgbHQ6IG1lKChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBuIDwgMCA/IG4gKyB0IDogdCA8IG4gPyB0IDogbjsgMCA8PSAtLWk7KSBlLnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIGd0OiBtZSgoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbiA8IDAgPyBuICsgdCA6IG47ICsraSA8IHQ7KSBlLnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLnBzZXVkb3MubnRoID0gaS5wc2V1ZG9zLmVxLCB7CiAgICAgICAgICAgICAgICByYWRpbzogITAsCiAgICAgICAgICAgICAgICBjaGVja2JveDogITAsCiAgICAgICAgICAgICAgICBmaWxlOiAhMCwKICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAhMCwKICAgICAgICAgICAgICAgIGltYWdlOiAhMAogICAgICAgICAgICB9KSBpLnBzZXVkb3NbdF0gPSBmZSh0KTsKICAgICAgICBmb3IgKHQgaW4gewogICAgICAgICAgICAgICAgc3VibWl0OiAhMCwKICAgICAgICAgICAgICAgIHJlc2V0OiAhMAogICAgICAgICAgICB9KSBpLnBzZXVkb3NbdF0gPSBwZSh0KTsKCiAgICAgICAgZnVuY3Rpb24geWUoKSB7fQoKICAgICAgICBmdW5jdGlvbiBiZShlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gZS5sZW5ndGgsIGkgPSAiIjsgdCA8IG47IHQrKykgaSArPSBlW3RdLnZhbHVlOwogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd2UoZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IHQuZGlyLAogICAgICAgICAgICAgICAgciA9IHQubmV4dCwKICAgICAgICAgICAgICAgIG8gPSByIHx8IGksCiAgICAgICAgICAgICAgICBhID0gbiAmJiAicGFyZW50Tm9kZSIgPT09IG8sCiAgICAgICAgICAgICAgICBzID0gUysrOwogICAgICAgICAgICByZXR1cm4gdC5maXJzdCA/IGZ1bmN0aW9uKHQsIG4sIHIpIHsKICAgICAgICAgICAgICAgIGZvciAoOyB0ID0gdFtpXTspCiAgICAgICAgICAgICAgICAgICAgaWYgKDEgPT09IHQubm9kZVR5cGUgfHwgYSkgcmV0dXJuIGUodCwgbiwgcik7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKHQsIG4sIGwpIHsKICAgICAgICAgICAgICAgIHZhciBjLCB1LCBkLCBoID0gW18sIHNdOwogICAgICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IHRbaV07KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKDEgPT09IHQubm9kZVR5cGUgfHwgYSkgJiYgZSh0LCBuLCBsKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgdCA9IHRbaV07KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdC5ub2RlVHlwZSB8fCBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUgPSAoZCA9IHRbd10gfHwgKHRbd10gPSB7fSkpW3QudW5pcXVlSURdIHx8IChkW3QudW5pcXVlSURdID0ge30pLCByICYmIHIgPT09IHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgdCA9IHRbaV0gfHwgdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYyA9IHVbb10pICYmIGNbMF0gPT09IF8gJiYgY1sxXSA9PT0gcykgcmV0dXJuIGhbMl0gPSBjWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodVtvXSA9IGgpWzJdID0gZSh0LCBuLCBsKSkgcmV0dXJuICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB4ZShlKSB7CiAgICAgICAgICAgIHJldHVybiAxIDwgZS5sZW5ndGggPyBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gZS5sZW5ndGg7IHItLTspCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlW3JdKHQsIG4sIGkpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfSA6IGVbMF0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIF9lKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgZm9yICh2YXIgbywgYSA9IFtdLCBzID0gMCwgbCA9IGUubGVuZ3RoLCBjID0gbnVsbCAhPSB0OyBzIDwgbDsgcysrKShvID0gZVtzXSkgJiYgKG4gJiYgIW4obywgaSwgcikgfHwgKGEucHVzaChvKSwgYyAmJiB0LnB1c2gocykpKTsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFNlKGUsIHQsIG4sIGksIHIsIG8pIHsKICAgICAgICAgICAgcmV0dXJuIGkgJiYgIWlbd10gJiYgKGkgPSBTZShpKSksIHIgJiYgIXJbd10gJiYgKHIgPSBTZShyLCBvKSksIGNlKChmdW5jdGlvbihvLCBhLCBzLCBsKSB7CiAgICAgICAgICAgICAgICB2YXIgYywgdSwgZCwgaCA9IFtdLAogICAgICAgICAgICAgICAgICAgIGYgPSBbXSwKICAgICAgICAgICAgICAgICAgICBwID0gYS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgZyA9IG8gfHwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgciA9IHQubGVuZ3RoOyBpIDwgcjsgaSsrKSBzZShlLCB0W2ldLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgICAgICB9KHQgfHwgIioiLCBzLm5vZGVUeXBlID8gW3NdIDogcywgW10pLAogICAgICAgICAgICAgICAgICAgIG0gPSAhZSB8fCAhbyAmJiB0ID8gZyA6IF9lKGcsIGgsIGUsIHMsIGwpLAogICAgICAgICAgICAgICAgICAgIHYgPSBuID8gciB8fCAobyA/IGUgOiBwIHx8IGkpID8gW10gOiBhIDogbTsKICAgICAgICAgICAgICAgIGlmIChuICYmIG4obSwgdiwgcywgbCksIGkpCiAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gX2UodiwgZiksIGkoYywgW10sIHMsIGwpLCB1ID0gYy5sZW5ndGg7IHUtLTspKGQgPSBjW3VdKSAmJiAodltmW3VdXSA9ICEobVtmW3VdXSA9IGQpKTsKICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgfHwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gW10sIHUgPSB2Lmxlbmd0aDsgdS0tOykoZCA9IHZbdV0pICYmIGMucHVzaChtW3VdID0gZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByKG51bGwsIHYgPSBbXSwgYywgbCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSB2Lmxlbmd0aDsgdS0tOykoZCA9IHZbdV0pICYmIC0xIDwgKGMgPSByID8gaihvLCBkKSA6IGhbdV0pICYmIChvW2NdID0gIShhW2NdID0gZCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHYgPSBfZSh2ID09PSBhID8gdi5zcGxpY2UocCwgdi5sZW5ndGgpIDogdiksIHIgPyByKG51bGwsIGEsIHYsIGwpIDogTC5hcHBseShhLCB2KQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIENlKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCwgbiwgciwgbyA9IGUubGVuZ3RoLCBhID0gaS5yZWxhdGl2ZVtlWzBdLnR5cGVdLCBzID0gYSB8fCBpLnJlbGF0aXZlWyIgIl0sIGwgPSBhID8gMSA6IDAsIHUgPSB3ZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSB0CiAgICAgICAgICAgICAgICB9KSwgcywgITApLCBkID0gd2UoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgPCBqKHQsIGUpCiAgICAgICAgICAgICAgICB9KSwgcywgITApLCBoID0gW2Z1bmN0aW9uKGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICFhICYmIChpIHx8IG4gIT09IGMpIHx8ICgodCA9IG4pLm5vZGVUeXBlID8gdShlLCBuLCBpKSA6IGQoZSwgbiwgaSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gbnVsbCwgcgogICAgICAgICAgICAgICAgfV07IGwgPCBvOyBsKyspCiAgICAgICAgICAgICAgICBpZiAobiA9IGkucmVsYXRpdmVbZVtsXS50eXBlXSkgaCA9IFt3ZSh4ZShoKSwgbildOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChuID0gaS5maWx0ZXJbZVtsXS50eXBlXS5hcHBseShudWxsLCBlW2xdLm1hdGNoZXMpKVt3XSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSArK2w7IHIgPCBvICYmICFpLnJlbGF0aXZlW2Vbcl0udHlwZV07IHIrKyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZSgxIDwgbCAmJiB4ZShoKSwgMSA8IGwgJiYgYmUoZS5zbGljZSgwLCBsIC0gMSkuY29uY2F0KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiICIgPT09IGVbbCAtIDJdLnR5cGUgPyAiKiIgOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9KSkucmVwbGFjZShCLCAiJDEiKSwgbiwgbCA8IHIgJiYgQ2UoZS5zbGljZShsLCByKSksIHIgPCBvICYmIENlKGUgPSBlLnNsaWNlKHIpKSwgciA8IG8gJiYgYmUoZSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGgucHVzaChuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geGUoaCkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHllLnByb3RvdHlwZSA9IGkuZmlsdGVycyA9IGkucHNldWRvcywgaS5zZXRGaWx0ZXJzID0gbmV3IHllLCBhID0gc2UudG9rZW5pemUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByLCBvLCBhLCBzLCBsLCBjLCB1ID0ga1tlICsgIiAiXTsKICAgICAgICAgICAgaWYgKHUpIHJldHVybiB0ID8gMCA6IHUuc2xpY2UoMCk7CiAgICAgICAgICAgIGZvciAocyA9IGUsIGwgPSBbXSwgYyA9IGkucHJlRmlsdGVyOyBzOykgewogICAgICAgICAgICAgICAgZm9yIChhIGluIG4gJiYgIShyID0gVy5leGVjKHMpKSB8fCAociAmJiAocyA9IHMuc2xpY2UoclswXS5sZW5ndGgpIHx8IHMpLCBsLnB1c2gobyA9IFtdKSksIG4gPSAhMSwgKHIgPSBxLmV4ZWMocykpICYmIChuID0gci5zaGlmdCgpLCBvLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogclswXS5yZXBsYWNlKEIsICIgIikKICAgICAgICAgICAgICAgICAgICB9KSwgcyA9IHMuc2xpY2Uobi5sZW5ndGgpKSwgaS5maWx0ZXIpICEociA9IFhbYV0uZXhlYyhzKSkgfHwgY1thXSAmJiAhKHIgPSBjW2FdKHIpKSB8fCAobiA9IHIuc2hpZnQoKSwgby5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbiwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBhLAogICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IHIKICAgICAgICAgICAgICAgIH0pLCBzID0gcy5zbGljZShuLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgaWYgKCFuKSBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0ID8gcy5sZW5ndGggOiBzID8gc2UuZXJyb3IoZSkgOiBrKGUsIGwpLnNsaWNlKDApCiAgICAgICAgfSwgcyA9IHNlLmNvbXBpbGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCByLCBvLCBzLCBsLCB1LCBkID0gW10sCiAgICAgICAgICAgICAgICBwID0gW10sCiAgICAgICAgICAgICAgICBtID0gVFtlICsgIiAiXTsKICAgICAgICAgICAgaWYgKCFtKSB7CiAgICAgICAgICAgICAgICBmb3IgKHQgfHwgKHQgPSBhKGUpKSwgbiA9IHQubGVuZ3RoOyBuLS07KShtID0gQ2UodFtuXSkpW3ddID8gZC5wdXNoKG0pIDogcC5wdXNoKG0pOwogICAgICAgICAgICAgICAgKG0gPSBUKGUsIChyID0gcCwgcyA9IDAgPCAobyA9IGQpLmxlbmd0aCwgbCA9IDAgPCByLmxlbmd0aCwgdSA9IGZ1bmN0aW9uKGUsIHQsIG4sIGEsIHUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCwgcCwgbSwgdiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlICYmIFtdLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjLAogICAgICAgICAgICAgICAgICAgICAgICBTID0gZSB8fCBsICYmIGkuZmluZC5UQUcoIioiLCB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgQyA9IF8gKz0gbnVsbCA9PSB4ID8gMSA6IE1hdGgucmFuZG9tKCkgfHwgLjEsCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBTLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHUgJiYgKGMgPSB0ID09IGYgfHwgdCB8fCB1KTsgeSAhPT0gayAmJiBudWxsICE9IChkID0gU1t5XSk7IHkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmJiBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSAwLCB0IHx8IGQub3duZXJEb2N1bWVudCA9PSBmIHx8IChoKGQpLCBuID0gIWcpOyBtID0gcltwKytdOykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobShkLCB0IHx8IGYsIG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ICYmIChfID0gQykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzICYmICgoZCA9ICFtICYmIGQpICYmIHYtLSwgZSAmJiBiLnB1c2goZCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh2ICs9IHksIHMgJiYgeSAhPT0gdikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgPSAwOyBtID0gb1twKytdOykgbShiLCB3LCB0LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgdikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgeS0tOykgYlt5XSB8fCB3W3ldIHx8ICh3W3ldID0gTS5jYWxsKGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBfZSh3KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEwuYXBwbHkoYSwgdyksIHUgJiYgIWUgJiYgMCA8IHcubGVuZ3RoICYmIDEgPCB2ICsgby5sZW5ndGggJiYgc2UudW5pcXVlU29ydChhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSAmJiAoXyA9IEMsIGMgPSB4KSwgYgogICAgICAgICAgICAgICAgfSwgcyA/IGNlKHUpIDogdSkpKS5zZWxlY3RvciA9IGUKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbQogICAgICAgIH0sIGwgPSBzZS5zZWxlY3QgPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgIHZhciBvLCBsLCBjLCB1LCBkLCBoID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlLAogICAgICAgICAgICAgICAgZiA9ICFyICYmIGEoZSA9IGguc2VsZWN0b3IgfHwgZSk7CiAgICAgICAgICAgIGlmIChuID0gbiB8fCBbXSwgMSA9PT0gZi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlmICgyIDwgKGwgPSBmWzBdID0gZlswXS5zbGljZSgwKSkubGVuZ3RoICYmICJJRCIgPT09IChjID0gbFswXSkudHlwZSAmJiA5ID09PSB0Lm5vZGVUeXBlICYmIGcgJiYgaS5yZWxhdGl2ZVtsWzFdLnR5cGVdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IChpLmZpbmQuSUQoYy5tYXRjaGVzWzBdLnJlcGxhY2UodGUsIG5lKSwgdCkgfHwgW10pWzBdKSkgcmV0dXJuIG47CiAgICAgICAgICAgICAgICAgICAgaCAmJiAodCA9IHQucGFyZW50Tm9kZSksIGUgPSBlLnNsaWNlKGwuc2hpZnQoKS52YWx1ZS5sZW5ndGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKG8gPSBYLm5lZWRzQ29udGV4dC50ZXN0KGUpID8gMCA6IGwubGVuZ3RoOyBvLS0gJiYgKGMgPSBsW29dLCAhaS5yZWxhdGl2ZVt1ID0gYy50eXBlXSk7KQogICAgICAgICAgICAgICAgICAgIGlmICgoZCA9IGkuZmluZFt1XSkgJiYgKHIgPSBkKGMubWF0Y2hlc1swXS5yZXBsYWNlKHRlLCBuZSksIGVlLnRlc3QobFswXS50eXBlKSAmJiB2ZSh0LnBhcmVudE5vZGUpIHx8IHQpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobC5zcGxpY2UobywgMSksICEoZSA9IHIubGVuZ3RoICYmIGJlKGwpKSkgcmV0dXJuIEwuYXBwbHkobiwgciksIG47CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAoaCB8fCBzKGUsIGYpKShyLCB0LCAhZywgbiwgIXQgfHwgZWUudGVzdChlKSAmJiB2ZSh0LnBhcmVudE5vZGUpIHx8IHQpLCBuCiAgICAgICAgfSwgbi5zb3J0U3RhYmxlID0gdy5zcGxpdCgiIikuc29ydChFKS5qb2luKCIiKSA9PT0gdywgbi5kZXRlY3REdXBsaWNhdGVzID0gISFkLCBoKCksIG4uc29ydERldGFjaGVkID0gdWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDEgJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGYuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSkKICAgICAgICB9KSksIHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IiwgIiMiID09PSBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikKICAgICAgICB9KSkgfHwgZGUoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLCAoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBpZiAoIW4pIHJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCAidHlwZSIgPT09IHQudG9Mb3dlckNhc2UoKSA/IDEgOiAyKQogICAgICAgIH0pKSwgbi5hdHRyaWJ1dGVzICYmIHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLmlubmVySFRNTCA9ICI8aW5wdXQvPiIsIGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpLCAiIiA9PT0gZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKQogICAgICAgIH0pKSB8fCBkZSgidmFsdWUiLCAoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBpZiAoIW4gJiYgImlucHV0IiA9PT0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gZS5kZWZhdWx0VmFsdWUKICAgICAgICB9KSksIHVlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsID09IGUuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpCiAgICAgICAgfSkpIHx8IGRlKE4sIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBpZiAoIW4pIHJldHVybiAhMCA9PT0gZVt0XSA/IHQudG9Mb3dlckNhc2UoKSA6IChpID0gZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSAmJiBpLnNwZWNpZmllZCA/IGkudmFsdWUgOiBudWxsCiAgICAgICAgfSkpLCBzZQogICAgfShlKTsKICAgIHguZmluZCA9IFMsIHguZXhwciA9IFMuc2VsZWN0b3JzLCB4LmV4cHJbIjoiXSA9IHguZXhwci5wc2V1ZG9zLCB4LnVuaXF1ZVNvcnQgPSB4LnVuaXF1ZSA9IFMudW5pcXVlU29ydCwgeC50ZXh0ID0gUy5nZXRUZXh0LCB4LmlzWE1MRG9jID0gUy5pc1hNTCwgeC5jb250YWlucyA9IFMuY29udGFpbnMsIHguZXNjYXBlU2VsZWN0b3IgPSBTLmVzY2FwZTsKICAgIHZhciBDID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpID0gW10sIHIgPSB2b2lkIDAgIT09IG47CiAgICAgICAgICAgICAgICAoZSA9IGVbdF0pICYmIDkgIT09IGUubm9kZVR5cGU7KQogICAgICAgICAgICAgICAgaWYgKDEgPT09IGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAociAmJiB4KGUpLmlzKG4pKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpLnB1c2goZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIGsgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSBbXTsgZTsgZSA9IGUubmV4dFNpYmxpbmcpIDEgPT09IGUubm9kZVR5cGUgJiYgZSAhPT0gdCAmJiBuLnB1c2goZSk7CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfSwKICAgICAgICBUID0geC5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsKCiAgICBmdW5jdGlvbiBBKGUsIHQpIHsKICAgICAgICByZXR1cm4gZS5ub2RlTmFtZSAmJiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHQudG9Mb3dlckNhc2UoKQogICAgfQogICAgdmFyIEUgPSAvXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTsKCiAgICBmdW5jdGlvbiBEKGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gcCh0KSA/IHguZ3JlcChlLCAoZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICByZXR1cm4gISF0LmNhbGwoZSwgaSwgZSkgIT09IG4KICAgICAgICB9KSkgOiB0Lm5vZGVUeXBlID8geC5ncmVwKGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlID09PSB0ICE9PSBuCiAgICAgICAgfSkpIDogInN0cmluZyIgIT0gdHlwZW9mIHQgPyB4LmdyZXAoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIC0xIDwgcy5jYWxsKHQsIGUpICE9PSBuCiAgICAgICAgfSkpIDogeC5maWx0ZXIodCwgZSwgbikKICAgIH0KICAgIHguZmlsdGVyID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBpID0gdFswXTsKICAgICAgICByZXR1cm4gbiAmJiAoZSA9ICI6bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggJiYgMSA9PT0gaS5ub2RlVHlwZSA/IHguZmluZC5tYXRjaGVzU2VsZWN0b3IoaSwgZSkgPyBbaV0gOiBbXSA6IHguZmluZC5tYXRjaGVzKGUsIHguZ3JlcCh0LCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gZS5ub2RlVHlwZQogICAgICAgIH0pKSkKICAgIH0sIHguZm4uZXh0ZW5kKHsKICAgICAgICBmaW5kOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpID0gdGhpcy5sZW5ndGgsCiAgICAgICAgICAgICAgICByID0gdGhpczsKICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gdGhpcy5wdXNoU3RhY2soeChlKS5maWx0ZXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IGk7IHQrKykKICAgICAgICAgICAgICAgICAgICBpZiAoeC5jb250YWlucyhyW3RdLCB0aGlzKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICAgIGZvciAobiA9IHRoaXMucHVzaFN0YWNrKFtdKSwgdCA9IDA7IHQgPCBpOyB0KyspIHguZmluZChlLCByW3RdLCBuKTsKICAgICAgICAgICAgcmV0dXJuIDEgPCBpID8geC51bmlxdWVTb3J0KG4pIDogbgogICAgICAgIH0sCiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsIGUgfHwgW10sICExKSkKICAgICAgICB9LAogICAgICAgIG5vdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLCBlIHx8IFtdLCAhMCkpCiAgICAgICAgfSwKICAgICAgICBpczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gISFEKHRoaXMsICJzdHJpbmciID09IHR5cGVvZiBlICYmIFQudGVzdChlKSA/IHgoZSkgOiBlIHx8IFtdLCAhMSkubGVuZ3RoCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgTywgTSA9IC9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87CiAgICAoeC5mbi5pbml0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBpLCByOwogICAgICAgIGlmICghZSkgcmV0dXJuIHRoaXM7CiAgICAgICAgaWYgKG4gPSBuIHx8IE8sICJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgIGlmICghKGkgPSAiPCIgPT09IGVbMF0gJiYgIj4iID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgMyA8PSBlLmxlbmd0aCA/IFtudWxsLCBlLCBudWxsXSA6IE0uZXhlYyhlKSkgfHwgIWlbMV0gJiYgdCkgcmV0dXJuICF0IHx8IHQuanF1ZXJ5ID8gKHQgfHwgbikuZmluZChlKSA6IHRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTsKICAgICAgICAgICAgaWYgKGlbMV0pIHsKICAgICAgICAgICAgICAgIGlmICh0ID0gdCBpbnN0YW5jZW9mIHggPyB0WzBdIDogdCwgeC5tZXJnZSh0aGlzLCB4LnBhcnNlSFRNTChpWzFdLCB0ICYmIHQubm9kZVR5cGUgPyB0Lm93bmVyRG9jdW1lbnQgfHwgdCA6IG0sICEwKSksIEUudGVzdChpWzFdKSAmJiB4LmlzUGxhaW5PYmplY3QodCkpCiAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHQpIHAodGhpc1tpXSkgPyB0aGlzW2ldKHRbaV0pIDogdGhpcy5hdHRyKGksIHRbaV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gKHIgPSBtLmdldEVsZW1lbnRCeUlkKGlbMl0pKSAmJiAodGhpc1swXSA9IHIsIHRoaXMubGVuZ3RoID0gMSksIHRoaXMKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGUubm9kZVR5cGUgPyAodGhpc1swXSA9IGUsIHRoaXMubGVuZ3RoID0gMSwgdGhpcykgOiBwKGUpID8gdm9pZCAwICE9PSBuLnJlYWR5ID8gbi5yZWFkeShlKSA6IGUoeCkgOiB4Lm1ha2VBcnJheShlLCB0aGlzKQogICAgfSkucHJvdG90eXBlID0geC5mbiwgTyA9IHgobSk7CiAgICB2YXIgSSA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLAogICAgICAgIEwgPSB7CiAgICAgICAgICAgIGNoaWxkcmVuOiAhMCwKICAgICAgICAgICAgY29udGVudHM6ICEwLAogICAgICAgICAgICBuZXh0OiAhMCwKICAgICAgICAgICAgcHJldjogITAKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIFAoZSwgdCkgewogICAgICAgIGZvciAoOwogICAgICAgICAgICAoZSA9IGVbdF0pICYmIDEgIT09IGUubm9kZVR5cGU7KTsKICAgICAgICByZXR1cm4gZQogICAgfQogICAgeC5mbi5leHRlbmQoewogICAgICAgIGhhczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHgoZSwgdGhpcyksCiAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IG47IGUrKykKICAgICAgICAgICAgICAgICAgICBpZiAoeC5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgY2xvc2VzdDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgaSA9IDAsCiAgICAgICAgICAgICAgICByID0gdGhpcy5sZW5ndGgsCiAgICAgICAgICAgICAgICBvID0gW10sCiAgICAgICAgICAgICAgICBhID0gInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgeChlKTsKICAgICAgICAgICAgaWYgKCFULnRlc3QoZSkpCiAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHI7IGkrKykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSB0aGlzW2ldOyBuICYmIG4gIT09IHQ7IG4gPSBuLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyAtMSA8IGEuaW5kZXgobikgOiAxID09PSBuLm5vZGVUeXBlICYmIHguZmluZC5tYXRjaGVzU2VsZWN0b3IobiwgZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2gobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjaygxIDwgby5sZW5ndGggPyB4LnVuaXF1ZVNvcnQobykgOiBvKQogICAgICAgIH0sCiAgICAgICAgaW5kZXg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPyAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IHMuY2FsbCh4KGUpLCB0aGlzWzBdKSA6IHMuY2FsbCh0aGlzLCBlLmpxdWVyeSA/IGVbMF0gOiBlKSA6IHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlID8gdGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGggOiAtMQogICAgICAgIH0sCiAgICAgICAgYWRkOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayh4LnVuaXF1ZVNvcnQoeC5tZXJnZSh0aGlzLmdldCgpLCB4KGUsIHQpKSkpCiAgICAgICAgfSwKICAgICAgICBhZGRCYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChudWxsID09IGUgPyB0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKQogICAgICAgIH0KICAgIH0pLCB4LmVhY2goewogICAgICAgIHBhcmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgMTEgIT09IHQubm9kZVR5cGUgPyB0IDogbnVsbAogICAgICAgIH0sCiAgICAgICAgcGFyZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gQyhlLCAicGFyZW50Tm9kZSIpCiAgICAgICAgfSwKICAgICAgICBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIEMoZSwgInBhcmVudE5vZGUiLCBuKQogICAgICAgIH0sCiAgICAgICAgbmV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gUChlLCAibmV4dFNpYmxpbmciKQogICAgICAgIH0sCiAgICAgICAgcHJldjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gUChlLCAicHJldmlvdXNTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEMoZSwgIm5leHRTaWJsaW5nIikKICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEMoZSwgInByZXZpb3VzU2libGluZyIpCiAgICAgICAgfSwKICAgICAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIEMoZSwgIm5leHRTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHByZXZVbnRpbDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gQyhlLCAicHJldmlvdXNTaWJsaW5nIiwgbikKICAgICAgICB9LAogICAgICAgIHNpYmxpbmdzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBrKChlLnBhcmVudE5vZGUgfHwge30pLmZpcnN0Q2hpbGQsIGUpCiAgICAgICAgfSwKICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gayhlLmZpcnN0Q2hpbGQpCiAgICAgICAgfSwKICAgICAgICBjb250ZW50czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPSBlLmNvbnRlbnREb2N1bWVudCAmJiBpKGUuY29udGVudERvY3VtZW50KSA/IGUuY29udGVudERvY3VtZW50IDogKEEoZSwgInRlbXBsYXRlIikgJiYgKGUgPSBlLmNvbnRlbnQgfHwgZSksIHgubWVyZ2UoW10sIGUuY2hpbGROb2RlcykpCiAgICAgICAgfQogICAgfSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB4LmZuW2VdID0gZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICB2YXIgciA9IHgubWFwKHRoaXMsIHQsIG4pOwogICAgICAgICAgICByZXR1cm4gIlVudGlsIiAhPT0gZS5zbGljZSgtNSkgJiYgKGkgPSBuKSwgaSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiAociA9IHguZmlsdGVyKGksIHIpKSwgMSA8IHRoaXMubGVuZ3RoICYmIChMW2VdIHx8IHgudW5pcXVlU29ydChyKSwgSS50ZXN0KGUpICYmIHIucmV2ZXJzZSgpKSwgdGhpcy5wdXNoU3RhY2socikKICAgICAgICB9CiAgICB9KSk7CiAgICB2YXIgaiA9IC9bXlx4MjBcdFxyXG5cZl0rL2c7CgogICAgZnVuY3Rpb24gTihlKSB7CiAgICAgICAgcmV0dXJuIGUKICAgIH0KCiAgICBmdW5jdGlvbiBGKGUpIHsKICAgICAgICB0aHJvdyBlCiAgICB9CgogICAgZnVuY3Rpb24gUihlLCB0LCBuLCBpKSB7CiAgICAgICAgdmFyIHI7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZSAmJiBwKHIgPSBlLnByb21pc2UpID8gci5jYWxsKGUpLmRvbmUodCkuZmFpbChuKSA6IGUgJiYgcChyID0gZS50aGVuKSA/IHIuY2FsbChlLCB0LCBuKSA6IHQuYXBwbHkodm9pZCAwLCBbZV0uc2xpY2UoaSkpCiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBuLmFwcGx5KHZvaWQgMCwgW2VdKQogICAgICAgIH0KICAgIH0KICAgIHguQ2FsbGJhY2tzID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0LCBuOwogICAgICAgIGUgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/ICh0ID0gZSwgbiA9IHt9LCB4LmVhY2godC5tYXRjaChqKSB8fCBbXSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgblt0XSA9ICEwCiAgICAgICAgfSkpLCBuKSA6IHguZXh0ZW5kKHt9LCBlKTsKICAgICAgICB2YXIgaSwgciwgbywgYSwgcyA9IFtdLAogICAgICAgICAgICBsID0gW10sCiAgICAgICAgICAgIGMgPSAtMSwKICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yIChhID0gYSB8fCBlLm9uY2UsIG8gPSBpID0gITA7IGwubGVuZ3RoOyBjID0gLTEpCiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbC5zaGlmdCgpOyArK2MgPCBzLmxlbmd0aDspICExID09PSBzW2NdLmFwcGx5KHJbMF0sIHJbMV0pICYmIGUuc3RvcE9uRmFsc2UgJiYgKGMgPSBzLmxlbmd0aCwgciA9ICExKTsKICAgICAgICAgICAgICAgIGUubWVtb3J5IHx8IChyID0gITEpLCBpID0gITEsIGEgJiYgKHMgPSByID8gW10gOiAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHIgJiYgIWkgJiYgKGMgPSBzLmxlbmd0aCAtIDEsIGwucHVzaChyKSksIGZ1bmN0aW9uIHQobikgewogICAgICAgICAgICAgICAgICAgICAgICB4LmVhY2gobiwgKGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAoaSkgPyBlLnVuaXF1ZSAmJiBkLmhhcyhpKSB8fCBzLnB1c2goaSkgOiBpICYmIGkubGVuZ3RoICYmICJzdHJpbmciICE9PSBiKGkpICYmIHQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfShhcmd1bWVudHMpLCByICYmICFpICYmIHUoKSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmVhY2goYXJndW1lbnRzLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuOyAtIDEgPCAobiA9IHguaW5BcnJheSh0LCBzLCBuKSk7KSBzLnNwbGljZShuLCAxKSwgbiA8PSBjICYmIGMtLQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gLTEgPCB4LmluQXJyYXkoZSwgcykgOiAwIDwgcy5sZW5ndGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgKHMgPSBbXSksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IGwgPSBbXSwgcyA9IHIgPSAiIiwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsb2NrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSA9IGwgPSBbXSwgciB8fCBpIHx8IChzID0gciA9ICIiKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxvY2tlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhYQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmVXaXRoOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgfHwgKHQgPSBbZSwgKHQgPSB0IHx8IFtdKS5zbGljZSA/IHQuc2xpY2UoKSA6IHRdLCBsLnB1c2godCksIGkgfHwgdSgpKSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkLmZpcmVXaXRoKHRoaXMsIGFyZ3VtZW50cyksIHRoaXMKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmaXJlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIHJldHVybiBkCiAgICB9LCB4LmV4dGVuZCh7CiAgICAgICAgRGVmZXJyZWQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIG4gPSBbCiAgICAgICAgICAgICAgICAgICAgWyJub3RpZnkiLCAicHJvZ3Jlc3MiLCB4LkNhbGxiYWNrcygibWVtb3J5IiksIHguQ2FsbGJhY2tzKCJtZW1vcnkiKSwgMl0sCiAgICAgICAgICAgICAgICAgICAgWyJyZXNvbHZlIiwgImRvbmUiLCB4LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgeC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDAsICJyZXNvbHZlZCJdLAogICAgICAgICAgICAgICAgICAgIFsicmVqZWN0IiwgImZhaWwiLCB4LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgeC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDEsICJyZWplY3RlZCJdCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgaSA9ICJwZW5kaW5nIiwKICAgICAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWx3YXlzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY2F0Y2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIudGhlbihudWxsLCBlKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcGlwZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5EZWZlcnJlZCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5lYWNoKG4sIChmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBwKGVbaVs0XV0pICYmIGVbaVs0XV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb1tpWzFdXSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gciAmJiByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgcChlLnByb21pc2UpID8gZS5wcm9taXNlKCkucHJvZ3Jlc3ModC5ub3RpZnkpLmRvbmUodC5yZXNvbHZlKS5mYWlsKHQucmVqZWN0KSA6IHRbaVswXSArICJXaXRoIl0odGhpcywgciA/IFtlXSA6IGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgZSA9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnByb21pc2UoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24odCwgaSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IDA7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhKHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlLCBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA8IG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlID0gaS5hcHBseShzLCBsKSkgPT09IG4ucHJvbWlzZSgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZSAmJiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSkgJiYgZS50aGVuLCBwKGMpID8gciA/IGMuY2FsbChlLCBhKG8sIG4sIE4sIHIpLCBhKG8sIG4sIEYsIHIpKSA6IChvKyssIGMuY2FsbChlLCBhKG8sIG4sIE4sIHIpLCBhKG8sIG4sIEYsIHIpLCBhKG8sIG4sIE4sIG4ubm90aWZ5V2l0aCkpKSA6IChpICE9PSBOICYmIChzID0gdm9pZCAwLCBsID0gW2VdKSwgKHIgfHwgbi5yZXNvbHZlV2l0aCkocywgbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSByID8gYyA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgeC5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsIHUuc3RhY2tUcmFjZSksIG8gPD0gdCArIDEgJiYgKGkgIT09IEYgJiYgKHMgPSB2b2lkIDAsIGwgPSBbZV0pLCBuLnJlamVjdFdpdGgocywgbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA/IHUoKSA6ICh4LkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAodS5zdGFja1RyYWNlID0geC5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksIGUuc2V0VGltZW91dCh1KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5EZWZlcnJlZCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgblswXVszXS5hZGQoYSgwLCBlLCBwKHIpID8gciA6IE4sIGUubm90aWZ5V2l0aCkpLCBuWzFdWzNdLmFkZChhKDAsIGUsIHAodCkgPyB0IDogTikpLCBuWzJdWzNdLmFkZChhKDAsIGUsIHAoaSkgPyBpIDogRikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5wcm9taXNlKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSA/IHguZXh0ZW5kKGUsIHIpIDogcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvID0ge307CiAgICAgICAgICAgIHJldHVybiB4LmVhY2gobiwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBhID0gdFsyXSwKICAgICAgICAgICAgICAgICAgICBzID0gdFs1XTsKICAgICAgICAgICAgICAgIHJbdFsxXV0gPSBhLmFkZCwgcyAmJiBhLmFkZCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IHMKICAgICAgICAgICAgICAgIH0pLCBuWzMgLSBlXVsyXS5kaXNhYmxlLCBuWzMgLSBlXVszXS5kaXNhYmxlLCBuWzBdWzJdLmxvY2ssIG5bMF1bM10ubG9jayksIGEuYWRkKHRbM10uZmlyZSksIG9bdFswXV0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb1t0WzBdICsgIldpdGgiXSh0aGlzID09PSBvID8gdm9pZCAwIDogdGhpcywgYXJndW1lbnRzKSwgdGhpcwogICAgICAgICAgICAgICAgfSwgb1t0WzBdICsgIldpdGgiXSA9IGEuZmlyZVdpdGgKICAgICAgICAgICAgfSkpLCByLnByb21pc2UobyksIHQgJiYgdC5jYWxsKG8sIG8pLCBvCiAgICAgICAgfSwKICAgICAgICB3aGVuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG4gPSB0LAogICAgICAgICAgICAgICAgaSA9IEFycmF5KG4pLAogICAgICAgICAgICAgICAgbyA9IHIuY2FsbChhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgYSA9IHguRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaVtlXSA9IHRoaXMsIG9bZV0gPSAxIDwgYXJndW1lbnRzLmxlbmd0aCA/IHIuY2FsbChhcmd1bWVudHMpIDogbiwgLS10IHx8IGEucmVzb2x2ZVdpdGgoaSwgbykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAodCA8PSAxICYmIChSKGUsIGEuZG9uZShzKG4pKS5yZXNvbHZlLCBhLnJlamVjdCwgIXQpLCAicGVuZGluZyIgPT09IGEuc3RhdGUoKSB8fCBwKG9bbl0gJiYgb1tuXS50aGVuKSkpIHJldHVybiBhLnRoZW4oKTsKICAgICAgICAgICAgZm9yICg7IG4tLTspIFIob1tuXSwgcyhuKSwgYS5yZWplY3QpOwogICAgICAgICAgICByZXR1cm4gYS5wcm9taXNlKCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciAkID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87CiAgICB4LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgZS5jb25zb2xlICYmIGUuY29uc29sZS53YXJuICYmIHQgJiYgJC50ZXN0KHQubmFtZSkgJiYgZS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyB0Lm1lc3NhZ2UsIHQuc3RhY2ssIG4pCiAgICB9LCB4LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24odCkgewogICAgICAgIGUuc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRocm93IHQKICAgICAgICB9KSkKICAgIH07CiAgICB2YXIgeiA9IHguRGVmZXJyZWQoKTsKCiAgICBmdW5jdGlvbiBIKCkgewogICAgICAgIG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEgpLCBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCBIKSwgeC5yZWFkeSgpCiAgICB9CiAgICB4LmZuLnJlYWR5ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiB6LnRoZW4oZSkuY2F0Y2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgeC5yZWFkeUV4Y2VwdGlvbihlKQogICAgICAgIH0pKSwgdGhpcwogICAgfSwgeC5leHRlbmQoewogICAgICAgIGlzUmVhZHk6ICExLAogICAgICAgIHJlYWR5V2FpdDogMSwKICAgICAgICByZWFkeTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAoITAgPT09IGUgPyAtLXgucmVhZHlXYWl0IDogeC5pc1JlYWR5KSB8fCAoeC5pc1JlYWR5ID0gITApICE9PSBlICYmIDAgPCAtLXgucmVhZHlXYWl0IHx8IHoucmVzb2x2ZVdpdGgobSwgW3hdKQogICAgICAgIH0KICAgIH0pLCB4LnJlYWR5LnRoZW4gPSB6LnRoZW4sICJjb21wbGV0ZSIgPT09IG0ucmVhZHlTdGF0ZSB8fCAibG9hZGluZyIgIT09IG0ucmVhZHlTdGF0ZSAmJiAhbS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgPyBlLnNldFRpbWVvdXQoeC5yZWFkeSkgOiAobS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgSCksIGUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIEgpKTsKICAgIHZhciBCID0gZnVuY3Rpb24oZSwgdCwgbiwgaSwgciwgbywgYSkgewogICAgICAgICAgICB2YXIgcyA9IDAsCiAgICAgICAgICAgICAgICBsID0gZS5sZW5ndGgsCiAgICAgICAgICAgICAgICBjID0gbnVsbCA9PSBuOwogICAgICAgICAgICBpZiAoIm9iamVjdCIgPT09IGIobikpCiAgICAgICAgICAgICAgICBmb3IgKHMgaW4gciA9ICEwLCBuKSBCKGUsIHQsIHMsIG5bc10sICEwLCBvLCBhKTsKICAgICAgICAgICAgZWxzZSBpZiAodm9pZCAwICE9PSBpICYmIChyID0gITAsIHAoaSkgfHwgKGEgPSAhMCksIGMgJiYgKGEgPyAodC5jYWxsKGUsIGkpLCB0ID0gbnVsbCkgOiAoYyA9IHQsIHQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuY2FsbCh4KGUpLCBuKQogICAgICAgICAgICAgICAgfSkpLCB0KSkKICAgICAgICAgICAgICAgIGZvciAoOyBzIDwgbDsgcysrKSB0KGVbc10sIG4sIGEgPyBpIDogaS5jYWxsKGVbc10sIHMsIHQoZVtzXSwgbikpKTsKICAgICAgICAgICAgcmV0dXJuIHIgPyBlIDogYyA/IHQuY2FsbChlKSA6IGwgPyB0KGVbMF0sIG4pIDogbwogICAgICAgIH0sCiAgICAgICAgVyA9IC9eLW1zLS8sCiAgICAgICAgcSA9IC8tKFthLXpdKS9nOwoKICAgIGZ1bmN0aW9uIFUoZSwgdCkgewogICAgICAgIHJldHVybiB0LnRvVXBwZXJDYXNlKCkKICAgIH0KCiAgICBmdW5jdGlvbiBWKGUpIHsKICAgICAgICByZXR1cm4gZS5yZXBsYWNlKFcsICJtcy0iKS5yZXBsYWNlKHEsIFUpCiAgICB9CiAgICB2YXIgWSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gMSA9PT0gZS5ub2RlVHlwZSB8fCA5ID09PSBlLm5vZGVUeXBlIHx8ICErZS5ub2RlVHlwZQogICAgfTsKCiAgICBmdW5jdGlvbiBYKCkgewogICAgICAgIHRoaXMuZXhwYW5kbyA9IHguZXhwYW5kbyArIFgudWlkKysKICAgIH0KICAgIFgudWlkID0gMSwgWC5wcm90b3R5cGUgPSB7CiAgICAgICAgY2FjaGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB0IHx8ICh0ID0ge30sIFkoZSkgJiYgKGUubm9kZVR5cGUgPyBlW3RoaXMuZXhwYW5kb10gPSB0IDogT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRoaXMuZXhwYW5kbywgewogICAgICAgICAgICAgICAgdmFsdWU6IHQsCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgIH0pKSksIHQKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciA9IHRoaXMuY2FjaGUoZSk7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgcltWKHQpXSA9IG47CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAoaSBpbiB0KSByW1YoaSldID0gdFtpXTsKICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ID8gdGhpcy5jYWNoZShlKSA6IGVbdGhpcy5leHBhbmRvXSAmJiBlW3RoaXMuZXhwYW5kb11bVih0KV0KICAgICAgICB9LAogICAgICAgIGFjY2VzczogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0IHx8IHQgJiYgInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgdm9pZCAwID09PSBuID8gdGhpcy5nZXQoZSwgdCkgOiAodGhpcy5zZXQoZSwgdCwgbiksIHZvaWQgMCAhPT0gbiA/IG4gOiB0KQogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpID0gZVt0aGlzLmV4cGFuZG9dOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBpKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgbiA9ICh0ID0gQXJyYXkuaXNBcnJheSh0KSA/IHQubWFwKFYpIDogKHQgPSBWKHQpKSBpbiBpID8gW3RdIDogdC5tYXRjaChqKSB8fCBbXSkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBuLS07KSBkZWxldGUgaVt0W25dXQogICAgICAgICAgICAgICAgfSh2b2lkIDAgPT09IHQgfHwgeC5pc0VtcHR5T2JqZWN0KGkpKSAmJiAoZS5ub2RlVHlwZSA/IGVbdGhpcy5leHBhbmRvXSA9IHZvaWQgMCA6IGRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhc0RhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlW3RoaXMuZXhwYW5kb107CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgIXguaXNFbXB0eU9iamVjdCh0KQogICAgICAgIH0KICAgIH07CiAgICB2YXIgRyA9IG5ldyBYLAogICAgICAgIEsgPSBuZXcgWCwKICAgICAgICBRID0gL14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLywKICAgICAgICBaID0gL1tBLVpdL2c7CgogICAgZnVuY3Rpb24gSihlLCB0LCBuKSB7CiAgICAgICAgdmFyIGksIHI7CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gbiAmJiAxID09PSBlLm5vZGVUeXBlKQogICAgICAgICAgICBpZiAoaSA9ICJkYXRhLSIgKyB0LnJlcGxhY2UoWiwgIi0kJiIpLnRvTG93ZXJDYXNlKCksICJzdHJpbmciID09IHR5cGVvZihuID0gZS5nZXRBdHRyaWJ1dGUoaSkpKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIG4gPSAidHJ1ZSIgPT09IChyID0gbikgfHwgImZhbHNlIiAhPT0gciAmJiAoIm51bGwiID09PSByID8gbnVsbCA6IHIgPT09ICtyICsgIiIgPyArciA6IFEudGVzdChyKSA/IEpTT04ucGFyc2UocikgOiByKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIEsuc2V0KGUsIHQsIG4pCiAgICAgICAgICAgIH0gZWxzZSBuID0gdm9pZCAwOwogICAgICAgIHJldHVybiBuCiAgICB9CiAgICB4LmV4dGVuZCh7CiAgICAgICAgaGFzRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gSy5oYXNEYXRhKGUpIHx8IEcuaGFzRGF0YShlKQogICAgICAgIH0sCiAgICAgICAgZGF0YTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gSy5hY2Nlc3MoZSwgdCwgbikKICAgICAgICB9LAogICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgSy5yZW1vdmUoZSwgdCkKICAgICAgICB9LAogICAgICAgIF9kYXRhOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiBHLmFjY2VzcyhlLCB0LCBuKQogICAgICAgIH0sCiAgICAgICAgX3JlbW92ZURhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgRy5yZW1vdmUoZSwgdCkKICAgICAgICB9CiAgICB9KSwgeC5mbi5leHRlbmQoewogICAgICAgIGRhdGE6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8gPSB0aGlzWzBdLAogICAgICAgICAgICAgICAgYSA9IG8gJiYgby5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5sZW5ndGggJiYgKHIgPSBLLmdldChvKSwgMSA9PT0gby5ub2RlVHlwZSAmJiAhRy5nZXQobywgImhhc0RhdGFBdHRycyIpKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGEubGVuZ3RoOyBuLS07KSBhW25dICYmIDAgPT09IChpID0gYVtuXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChpID0gVihpLnNsaWNlKDUpKSwgSihvLCBpLCByW2ldKSk7CiAgICAgICAgICAgICAgICAgICAgRy5zZXQobywgImhhc0RhdGFBdHRycyIsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgPyB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgSy5zZXQodGhpcywgZSkKICAgICAgICAgICAgfSkpIDogQih0aGlzLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgICAgICBpZiAobyAmJiB2b2lkIDAgPT09IHQpIHJldHVybiB2b2lkIDAgIT09IChuID0gSy5nZXQobywgZSkpIHx8IHZvaWQgMCAhPT0gKG4gPSBKKG8sIGUpKSA/IG4gOiB2b2lkIDA7CiAgICAgICAgICAgICAgICB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIEsuc2V0KHRoaXMsIGUsIHQpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSksIG51bGwsIHQsIDEgPCBhcmd1bWVudHMubGVuZ3RoLCBudWxsLCAhMCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBLLnJlbW92ZSh0aGlzLCBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9KSwgeC5leHRlbmQoewogICAgICAgIHF1ZXVlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBpZiAoZSkgcmV0dXJuIHQgPSAodCB8fCAiZngiKSArICJxdWV1ZSIsIGkgPSBHLmdldChlLCB0KSwgbiAmJiAoIWkgfHwgQXJyYXkuaXNBcnJheShuKSA/IGkgPSBHLmFjY2VzcyhlLCB0LCB4Lm1ha2VBcnJheShuKSkgOiBpLnB1c2gobikpLCBpIHx8IFtdCiAgICAgICAgfSwKICAgICAgICBkZXF1ZXVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHQgPSB0IHx8ICJmeCI7CiAgICAgICAgICAgIHZhciBuID0geC5xdWV1ZShlLCB0KSwKICAgICAgICAgICAgICAgIGkgPSBuLmxlbmd0aCwKICAgICAgICAgICAgICAgIHIgPSBuLnNoaWZ0KCksCiAgICAgICAgICAgICAgICBvID0geC5fcXVldWVIb29rcyhlLCB0KTsKICAgICAgICAgICAgImlucHJvZ3Jlc3MiID09PSByICYmIChyID0gbi5zaGlmdCgpLCBpLS0pLCByICYmICgiZngiID09PSB0ICYmIG4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLCBkZWxldGUgby5zdG9wLCByLmNhbGwoZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgeC5kZXF1ZXVlKGUsIHQpCiAgICAgICAgICAgIH0pLCBvKSksICFpICYmIG8gJiYgby5lbXB0eS5maXJlKCkKICAgICAgICB9LAogICAgICAgIF9xdWV1ZUhvb2tzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdCArICJxdWV1ZUhvb2tzIjsKICAgICAgICAgICAgcmV0dXJuIEcuZ2V0KGUsIG4pIHx8IEcuYWNjZXNzKGUsIG4sIHsKICAgICAgICAgICAgICAgIGVtcHR5OiB4LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIEcucmVtb3ZlKGUsIFt0ICsgInF1ZXVlIiwgbl0pCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICB9KSwgeC5mbi5leHRlbmQoewogICAgICAgIHF1ZXVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gMjsKICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9ICJmeCIsIG4tLSksIGFyZ3VtZW50cy5sZW5ndGggPCBuID8geC5xdWV1ZSh0aGlzWzBdLCBlKSA6IHZvaWQgMCA9PT0gdCA/IHRoaXMgOiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB4LnF1ZXVlKHRoaXMsIGUsIHQpOwogICAgICAgICAgICAgICAgeC5fcXVldWVIb29rcyh0aGlzLCBlKSwgImZ4IiA9PT0gZSAmJiAiaW5wcm9ncmVzcyIgIT09IG5bMF0gJiYgeC5kZXF1ZXVlKHRoaXMsIGUpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHguZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoZSB8fCAiZngiLCBbXSkKICAgICAgICB9LAogICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIGkgPSAxLAogICAgICAgICAgICAgICAgciA9IHguRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIG8gPSB0aGlzLAogICAgICAgICAgICAgICAgYSA9IHRoaXMubGVuZ3RoLAogICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIC0taSB8fCByLnJlc29sdmVXaXRoKG8sIFtvXSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGZvciAoInN0cmluZyIgIT0gdHlwZW9mIGUgJiYgKHQgPSBlLCBlID0gdm9pZCAwKSwgZSA9IGUgfHwgImZ4IjsgYS0tOykobiA9IEcuZ2V0KG9bYV0sIGUgKyAicXVldWVIb29rcyIpKSAmJiBuLmVtcHR5ICYmIChpKyssIG4uZW1wdHkuYWRkKHMpKTsKICAgICAgICAgICAgcmV0dXJuIHMoKSwgci5wcm9taXNlKHQpCiAgICAgICAgfQogICAgfSk7CiAgICB2YXIgZWUgPSAvWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSwKICAgICAgICB0ZSA9IG5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIiArIGVlICsgIikoW2EteiVdKikkIiwgImkiKSwKICAgICAgICBuZSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sCiAgICAgICAgaWUgPSBtLmRvY3VtZW50RWxlbWVudCwKICAgICAgICByZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHguY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKQogICAgICAgIH0sCiAgICAgICAgb2UgPSB7CiAgICAgICAgICAgIGNvbXBvc2VkOiAhMAogICAgICAgIH07CiAgICBpZS5nZXRSb290Tm9kZSAmJiAocmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHguY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKSB8fCBlLmdldFJvb3ROb2RlKG9lKSA9PT0gZS5vd25lckRvY3VtZW50CiAgICB9KTsKICAgIHZhciBhZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gIm5vbmUiID09PSAoZSA9IHQgfHwgZSkuc3R5bGUuZGlzcGxheSB8fCAiIiA9PT0gZS5zdHlsZS5kaXNwbGF5ICYmIHJlKGUpICYmICJub25lIiA9PT0geC5jc3MoZSwgImRpc3BsYXkiKQogICAgfTsKCiAgICBmdW5jdGlvbiBzZShlLCB0LCBuLCBpKSB7CiAgICAgICAgdmFyIHIsIG8sIGEgPSAyMCwKICAgICAgICAgICAgcyA9IGkgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpLmN1cigpCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB4LmNzcyhlLCB0LCAiIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbCA9IHMoKSwKICAgICAgICAgICAgYyA9IG4gJiYgblszXSB8fCAoeC5jc3NOdW1iZXJbdF0gPyAiIiA6ICJweCIpLAogICAgICAgICAgICB1ID0gZS5ub2RlVHlwZSAmJiAoeC5jc3NOdW1iZXJbdF0gfHwgInB4IiAhPT0gYyAmJiArbCkgJiYgdGUuZXhlYyh4LmNzcyhlLCB0KSk7CiAgICAgICAgaWYgKHUgJiYgdVszXSAhPT0gYykgewogICAgICAgICAgICBmb3IgKGwgLz0gMiwgYyA9IGMgfHwgdVszXSwgdSA9ICtsIHx8IDE7IGEtLTspIHguc3R5bGUoZSwgdCwgdSArIGMpLCAoMSAtIG8pICogKDEgLSAobyA9IHMoKSAvIGwgfHwgLjUpKSA8PSAwICYmIChhID0gMCksIHUgLz0gbzsKICAgICAgICAgICAgdSAqPSAyLCB4LnN0eWxlKGUsIHQsIHUgKyBjKSwgbiA9IG4gfHwgW10KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG4gJiYgKHUgPSArdSB8fCArbCB8fCAwLCByID0gblsxXSA/IHUgKyAoblsxXSArIDEpICogblsyXSA6ICtuWzJdLCBpICYmIChpLnVuaXQgPSBjLCBpLnN0YXJ0ID0gdSwgaS5lbmQgPSByKSksIHIKICAgIH0KICAgIHZhciBsZSA9IHt9OwoKICAgIGZ1bmN0aW9uIGNlKGUsIHQpIHsKICAgICAgICBmb3IgKHZhciBuLCBpLCByLCBvLCBhLCBzLCBsLCBjID0gW10sIHUgPSAwLCBkID0gZS5sZW5ndGg7IHUgPCBkOyB1KyspKGkgPSBlW3VdKS5zdHlsZSAmJiAobiA9IGkuc3R5bGUuZGlzcGxheSwgdCA/ICgibm9uZSIgPT09IG4gJiYgKGNbdV0gPSBHLmdldChpLCAiZGlzcGxheSIpIHx8IG51bGwsIGNbdV0gfHwgKGkuc3R5bGUuZGlzcGxheSA9ICIiKSksICIiID09PSBpLnN0eWxlLmRpc3BsYXkgJiYgYWUoaSkgJiYgKGNbdV0gPSAobCA9IGEgPSBvID0gdm9pZCAwLCBhID0gKHIgPSBpKS5vd25lckRvY3VtZW50LCBzID0gci5ub2RlTmFtZSwgKGwgPSBsZVtzXSkgfHwgKG8gPSBhLmJvZHkuYXBwZW5kQ2hpbGQoYS5jcmVhdGVFbGVtZW50KHMpKSwgbCA9IHguY3NzKG8sICJkaXNwbGF5IiksIG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwgIm5vbmUiID09PSBsICYmIChsID0gImJsb2NrIiksIGxlW3NdID0gbCkpKSkgOiAibm9uZSIgIT09IG4gJiYgKGNbdV0gPSAibm9uZSIsIEcuc2V0KGksICJkaXNwbGF5IiwgbikpKTsKICAgICAgICBmb3IgKHUgPSAwOyB1IDwgZDsgdSsrKSBudWxsICE9IGNbdV0gJiYgKGVbdV0uc3R5bGUuZGlzcGxheSA9IGNbdV0pOwogICAgICAgIHJldHVybiBlCiAgICB9CiAgICB4LmZuLmV4dGVuZCh7CiAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBjZSh0aGlzLCAhMCkKICAgICAgICB9LAogICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gY2UodGhpcykKICAgICAgICB9LAogICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gImJvb2xlYW4iID09IHR5cGVvZiBlID8gZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCkgOiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgYWUodGhpcykgPyB4KHRoaXMpLnNob3coKSA6IHgodGhpcykuaGlkZSgpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIHVlLCBkZSwgaGUgPSAvXig/OmNoZWNrYm94fHJhZGlvKSQvaSwKICAgICAgICBmZSA9IC88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLAogICAgICAgIHBlID0gL14kfF5tb2R1bGUkfFwvKD86amF2YXxlY21hKXNjcmlwdC9pOwogICAgdWUgPSBtLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChtLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgKGRlID0gbS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFkaW8iKSwgZGUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwgImNoZWNrZWQiKSwgZGUuc2V0QXR0cmlidXRlKCJuYW1lIiwgInQiKSwgdWUuYXBwZW5kQ2hpbGQoZGUpLCBmLmNoZWNrQ2xvbmUgPSB1ZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsIHVlLmlubmVySFRNTCA9ICI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IiwgZi5ub0Nsb25lQ2hlY2tlZCA9ICEhdWUuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLCB1ZS5pbm5lckhUTUwgPSAiPG9wdGlvbj48L29wdGlvbj4iLCBmLm9wdGlvbiA9ICEhdWUubGFzdENoaWxkOwogICAgdmFyIGdlID0gewogICAgICAgIHRoZWFkOiBbMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iXSwKICAgICAgICBjb2w6IFsyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLAogICAgICAgIHRyOiBbMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iXSwKICAgICAgICB0ZDogWzMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sCiAgICAgICAgX2RlZmF1bHQ6IFswLCAiIiwgIiJdCiAgICB9OwoKICAgIGZ1bmN0aW9uIG1lKGUsIHQpIHsKICAgICAgICB2YXIgbjsKICAgICAgICByZXR1cm4gbiA9IHZvaWQgMCAhPT0gZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCB8fCAiKiIpIDogdm9pZCAwICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwodCB8fCAiKiIpIDogW10sIHZvaWQgMCA9PT0gdCB8fCB0ICYmIEEoZSwgdCkgPyB4Lm1lcmdlKFtlXSwgbikgOiBuCiAgICB9CgogICAgZnVuY3Rpb24gdmUoZSwgdCkgewogICAgICAgIGZvciAodmFyIG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyBuKyspIEcuc2V0KGVbbl0sICJnbG9iYWxFdmFsIiwgIXQgfHwgRy5nZXQodFtuXSwgImdsb2JhbEV2YWwiKSkKICAgIH0KICAgIGdlLnRib2R5ID0gZ2UudGZvb3QgPSBnZS5jb2xncm91cCA9IGdlLmNhcHRpb24gPSBnZS50aGVhZCwgZ2UudGggPSBnZS50ZCwgZi5vcHRpb24gfHwgKGdlLm9wdGdyb3VwID0gZ2Uub3B0aW9uID0gWzEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiJdKTsKICAgIHZhciB5ZSA9IC88fCYjP1x3KzsvOwoKICAgIGZ1bmN0aW9uIGJlKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICBmb3IgKHZhciBvLCBhLCBzLCBsLCBjLCB1LCBkID0gdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksIGggPSBbXSwgZiA9IDAsIHAgPSBlLmxlbmd0aDsgZiA8IHA7IGYrKykKICAgICAgICAgICAgaWYgKChvID0gZVtmXSkgfHwgMCA9PT0gbykKICAgICAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PT0gYihvKSkgeC5tZXJnZShoLCBvLm5vZGVUeXBlID8gW29dIDogbyk7CiAgICAgICAgICAgICAgICBlbHNlIGlmICh5ZS50ZXN0KG8pKSB7CiAgICAgICAgICAgIGZvciAoYSA9IGEgfHwgZC5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgcyA9IChmZS5leGVjKG8pIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpLCBsID0gZ2Vbc10gfHwgZ2UuX2RlZmF1bHQsIGEuaW5uZXJIVE1MID0gbFsxXSArIHguaHRtbFByZWZpbHRlcihvKSArIGxbMl0sIHUgPSBsWzBdOyB1LS07KSBhID0gYS5sYXN0Q2hpbGQ7CiAgICAgICAgICAgIHgubWVyZ2UoaCwgYS5jaGlsZE5vZGVzKSwgKGEgPSBkLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50ID0gIiIKICAgICAgICB9IGVsc2UgaC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpOwogICAgICAgIGZvciAoZC50ZXh0Q29udGVudCA9ICIiLCBmID0gMDsgbyA9IGhbZisrXTspCiAgICAgICAgICAgIGlmIChpICYmIC0xIDwgeC5pbkFycmF5KG8sIGkpKSByICYmIHIucHVzaChvKTsKICAgICAgICAgICAgZWxzZSBpZiAoYyA9IHJlKG8pLCBhID0gbWUoZC5hcHBlbmRDaGlsZChvKSwgInNjcmlwdCIpLCBjICYmIHZlKGEpLCBuKQogICAgICAgICAgICBmb3IgKHUgPSAwOyBvID0gYVt1KytdOykgcGUudGVzdChvLnR5cGUgfHwgIiIpICYmIG4ucHVzaChvKTsKICAgICAgICByZXR1cm4gZAogICAgfQogICAgdmFyIHdlID0gL14oW14uXSopKD86XC4oLispfCkvOwoKICAgIGZ1bmN0aW9uIHhlKCkgewogICAgICAgIHJldHVybiAhMAogICAgfQoKICAgIGZ1bmN0aW9uIF9lKCkgewogICAgICAgIHJldHVybiAhMQogICAgfQoKICAgIGZ1bmN0aW9uIFNlKGUsIHQpIHsKICAgICAgICByZXR1cm4gZSA9PT0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbS5hY3RpdmVFbGVtZW50CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgfSgpID09ICgiZm9jdXMiID09PSB0KQogICAgfQoKICAgIGZ1bmN0aW9uIENlKGUsIHQsIG4sIGksIHIsIG8pIHsKICAgICAgICB2YXIgYSwgczsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgZm9yIChzIGluICJzdHJpbmciICE9IHR5cGVvZiBuICYmIChpID0gaSB8fCBuLCBuID0gdm9pZCAwKSwgdCkgQ2UoZSwgcywgbiwgaSwgdFtzXSwgbyk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgICAgIGlmIChudWxsID09IGkgJiYgbnVsbCA9PSByID8gKHIgPSBuLCBpID0gbiA9IHZvaWQgMCkgOiBudWxsID09IHIgJiYgKCJzdHJpbmciID09IHR5cGVvZiBuID8gKHIgPSBpLCBpID0gdm9pZCAwKSA6IChyID0gaSwgaSA9IG4sIG4gPSB2b2lkIDApKSwgITEgPT09IHIpIHIgPSBfZTsKICAgICAgICBlbHNlIGlmICghcikgcmV0dXJuIGU7CiAgICAgICAgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSByLCAociA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHgoKS5vZmYoZSksIGEuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH0pLmd1aWQgPSBhLmd1aWQgfHwgKGEuZ3VpZCA9IHguZ3VpZCsrKSksIGUuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHguZXZlbnQuYWRkKHRoaXMsIHQsIHIsIGksIG4pCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24ga2UoZSwgdCwgbikgewogICAgICAgIG4gPyAoRy5zZXQoZSwgdCwgITEpLCB4LmV2ZW50LmFkZChlLCB0LCB7CiAgICAgICAgICAgIG5hbWVzcGFjZTogITEsCiAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciBpLCBvLCBhID0gRy5nZXQodGhpcywgdCk7CiAgICAgICAgICAgICAgICBpZiAoMSAmIGUuaXNUcmlnZ2VyICYmIHRoaXNbdF0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpKHguZXZlbnQuc3BlY2lhbFt0XSB8fCB7fSkuZGVsZWdhdGVUeXBlICYmIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYSA9IHIuY2FsbChhcmd1bWVudHMpLCBHLnNldCh0aGlzLCB0LCBhKSwgaSA9IG4odGhpcywgdCksIHRoaXNbdF0oKSwgYSAhPT0gKG8gPSBHLmdldCh0aGlzLCB0KSkgfHwgaSA/IEcuc2V0KHRoaXMsIHQsICExKSA6IG8gPSB7fSwgYSAhPT0gbykgcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIGUucHJldmVudERlZmF1bHQoKSwgbyAmJiBvLnZhbHVlCiAgICAgICAgICAgICAgICB9IGVsc2UgYS5sZW5ndGggJiYgKEcuc2V0KHRoaXMsIHQsIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeC5ldmVudC50cmlnZ2VyKHguZXh0ZW5kKGFbMF0sIHguRXZlbnQucHJvdG90eXBlKSwgYS5zbGljZSgxKSwgdGhpcykKICAgICAgICAgICAgICAgIH0pLCBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKQogICAgICAgICAgICB9CiAgICAgICAgfSkpIDogdm9pZCAwID09PSBHLmdldChlLCB0KSAmJiB4LmV2ZW50LmFkZChlLCB0LCB4ZSkKICAgIH0KICAgIHguZXZlbnQgPSB7CiAgICAgICAgZ2xvYmFsOiB7fSwKICAgICAgICBhZGQ6IGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgdmFyIG8sIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAsIGcsIG0gPSBHLmdldChlKTsKICAgICAgICAgICAgaWYgKFkoZSkpCiAgICAgICAgICAgICAgICBmb3IgKG4uaGFuZGxlciAmJiAobiA9IChvID0gbikuaGFuZGxlciwgciA9IG8uc2VsZWN0b3IpLCByICYmIHguZmluZC5tYXRjaGVzU2VsZWN0b3IoaWUsIHIpLCBuLmd1aWQgfHwgKG4uZ3VpZCA9IHguZ3VpZCsrKSwgKGwgPSBtLmV2ZW50cykgfHwgKGwgPSBtLmV2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCkpLCAoYSA9IG0uaGFuZGxlKSB8fCAoYSA9IG0uaGFuZGxlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSB4ICYmIHguZXZlbnQudHJpZ2dlcmVkICE9PSB0LnR5cGUgPyB4LmV2ZW50LmRpc3BhdGNoLmFwcGx5KGUsIGFyZ3VtZW50cykgOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9KSwgYyA9ICh0ID0gKHQgfHwgIiIpLm1hdGNoKGopIHx8IFsiIl0pLmxlbmd0aDsgYy0tOykgZiA9IGcgPSAocyA9IHdlLmV4ZWModFtjXSkgfHwgW10pWzFdLCBwID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBmICYmIChkID0geC5ldmVudC5zcGVjaWFsW2ZdIHx8IHt9LCBmID0gKHIgPyBkLmRlbGVnYXRlVHlwZSA6IGQuYmluZFR5cGUpIHx8IGYsIGQgPSB4LmV2ZW50LnNwZWNpYWxbZl0gfHwge30sIHUgPSB4LmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogZiwKICAgICAgICAgICAgICAgICAgICBvcmlnVHlwZTogZywKICAgICAgICAgICAgICAgICAgICBkYXRhOiBpLAogICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6IG4sCiAgICAgICAgICAgICAgICAgICAgZ3VpZDogbi5ndWlkLAogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiByLAogICAgICAgICAgICAgICAgICAgIG5lZWRzQ29udGV4dDogciAmJiB4LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QociksCiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBwLmpvaW4oIi4iKQogICAgICAgICAgICAgICAgfSwgbyksIChoID0gbFtmXSkgfHwgKChoID0gbFtmXSA9IFtdKS5kZWxlZ2F0ZUNvdW50ID0gMCwgZC5zZXR1cCAmJiAhMSAhPT0gZC5zZXR1cC5jYWxsKGUsIGksIHAsIGEpIHx8IGUuYWRkRXZlbnRMaXN0ZW5lciAmJiBlLmFkZEV2ZW50TGlzdGVuZXIoZiwgYSkpLCBkLmFkZCAmJiAoZC5hZGQuY2FsbChlLCB1KSwgdS5oYW5kbGVyLmd1aWQgfHwgKHUuaGFuZGxlci5ndWlkID0gbi5ndWlkKSksIHIgPyBoLnNwbGljZShoLmRlbGVnYXRlQ291bnQrKywgMCwgdSkgOiBoLnB1c2godSksIHguZXZlbnQuZ2xvYmFsW2ZdID0gITApCiAgICAgICAgfSwKICAgICAgICByZW1vdmU6IGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgdmFyIG8sIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAsIGcsIG0gPSBHLmhhc0RhdGEoZSkgJiYgRy5nZXQoZSk7CiAgICAgICAgICAgIGlmIChtICYmIChsID0gbS5ldmVudHMpKSB7CiAgICAgICAgICAgICAgICBmb3IgKGMgPSAodCA9ICh0IHx8ICIiKS5tYXRjaChqKSB8fCBbIiJdKS5sZW5ndGg7IGMtLTspCiAgICAgICAgICAgICAgICAgICAgaWYgKGYgPSBnID0gKHMgPSB3ZS5leGVjKHRbY10pIHx8IFtdKVsxXSwgcCA9IChzWzJdIHx8ICIiKS5zcGxpdCgiLiIpLnNvcnQoKSwgZikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQgPSB4LmV2ZW50LnNwZWNpYWxbZl0gfHwge30sIGggPSBsW2YgPSAoaSA/IGQuZGVsZWdhdGVUeXBlIDogZC5iaW5kVHlwZSkgfHwgZl0gfHwgW10sIHMgPSBzWzJdICYmIG5ldyBSZWdFeHAoIihefFxcLikiICsgcC5qb2luKCJcXC4oPzouKlxcLnwpIikgKyAiKFxcLnwkKSIpLCBhID0gbyA9IGgubGVuZ3RoOyBvLS07KSB1ID0gaFtvXSwgIXIgJiYgZyAhPT0gdS5vcmlnVHlwZSB8fCBuICYmIG4uZ3VpZCAhPT0gdS5ndWlkIHx8IHMgJiYgIXMudGVzdCh1Lm5hbWVzcGFjZSkgfHwgaSAmJiBpICE9PSB1LnNlbGVjdG9yICYmICgiKioiICE9PSBpIHx8ICF1LnNlbGVjdG9yKSB8fCAoaC5zcGxpY2UobywgMSksIHUuc2VsZWN0b3IgJiYgaC5kZWxlZ2F0ZUNvdW50LS0sIGQucmVtb3ZlICYmIGQucmVtb3ZlLmNhbGwoZSwgdSkpOwogICAgICAgICAgICAgICAgICAgICAgICBhICYmICFoLmxlbmd0aCAmJiAoZC50ZWFyZG93biAmJiAhMSAhPT0gZC50ZWFyZG93bi5jYWxsKGUsIHAsIG0uaGFuZGxlKSB8fCB4LnJlbW92ZUV2ZW50KGUsIGYsIG0uaGFuZGxlKSwgZGVsZXRlIGxbZl0pCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZiBpbiBsKSB4LmV2ZW50LnJlbW92ZShlLCBmICsgdFtjXSwgbiwgaSwgITApOwogICAgICAgICAgICAgICAgeC5pc0VtcHR5T2JqZWN0KGwpICYmIEcucmVtb3ZlKGUsICJoYW5kbGUgZXZlbnRzIikKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksCiAgICAgICAgICAgICAgICBsID0geC5ldmVudC5maXgoZSksCiAgICAgICAgICAgICAgICBjID0gKEcuZ2V0KHRoaXMsICJldmVudHMiKSB8fCBPYmplY3QuY3JlYXRlKG51bGwpKVtsLnR5cGVdIHx8IFtdLAogICAgICAgICAgICAgICAgdSA9IHguZXZlbnQuc3BlY2lhbFtsLnR5cGVdIHx8IHt9OwogICAgICAgICAgICBmb3IgKHNbMF0gPSBsLCB0ID0gMTsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKykgc1t0XSA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgaWYgKGwuZGVsZWdhdGVUYXJnZXQgPSB0aGlzLCAhdS5wcmVEaXNwYXRjaCB8fCAhMSAhPT0gdS5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsIGwpKSB7CiAgICAgICAgICAgICAgICBmb3IgKGEgPSB4LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcywgbCwgYyksIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIChyID0gYVt0KytdKSAmJiAhbC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOykKICAgICAgICAgICAgICAgICAgICBmb3IgKGwuY3VycmVudFRhcmdldCA9IHIuZWxlbSwgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIChvID0gci5oYW5kbGVyc1tuKytdKSAmJiAhbC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpOykgbC5ybmFtZXNwYWNlICYmICExICE9PSBvLm5hbWVzcGFjZSAmJiAhbC5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpIHx8IChsLmhhbmRsZU9iaiA9IG8sIGwuZGF0YSA9IG8uZGF0YSwgdm9pZCAwICE9PSAoaSA9ICgoeC5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdIHx8IHt9KS5oYW5kbGUgfHwgby5oYW5kbGVyKS5hcHBseShyLmVsZW0sIHMpKSAmJiAhMSA9PT0gKGwucmVzdWx0ID0gaSkgJiYgKGwucHJldmVudERlZmF1bHQoKSwgbC5zdG9wUHJvcGFnYXRpb24oKSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHUucG9zdERpc3BhdGNoICYmIHUucG9zdERpc3BhdGNoLmNhbGwodGhpcywgbCksIGwucmVzdWx0CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhhbmRsZXJzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpLCByLCBvLCBhLCBzID0gW10sCiAgICAgICAgICAgICAgICBsID0gdC5kZWxlZ2F0ZUNvdW50LAogICAgICAgICAgICAgICAgYyA9IGUudGFyZ2V0OwogICAgICAgICAgICBpZiAobCAmJiBjLm5vZGVUeXBlICYmICEoImNsaWNrIiA9PT0gZS50eXBlICYmIDEgPD0gZS5idXR0b24pKQogICAgICAgICAgICAgICAgZm9yICg7IGMgIT09IHRoaXM7IGMgPSBjLnBhcmVudE5vZGUgfHwgdGhpcykKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gYy5ub2RlVHlwZSAmJiAoImNsaWNrIiAhPT0gZS50eXBlIHx8ICEwICE9PSBjLmRpc2FibGVkKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBbXSwgYSA9IHt9LCBuID0gMDsgbiA8IGw7IG4rKykgdm9pZCAwID09PSBhW3IgPSAoaSA9IHRbbl0pLnNlbGVjdG9yICsgIiAiXSAmJiAoYVtyXSA9IGkubmVlZHNDb250ZXh0ID8gLTEgPCB4KHIsIHRoaXMpLmluZGV4KGMpIDogeC5maW5kKHIsIHRoaXMsIG51bGwsIFtjXSkubGVuZ3RoKSwgYVtyXSAmJiBvLnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBjID0gdGhpcywgbCA8IHQubGVuZ3RoICYmIHMucHVzaCh7CiAgICAgICAgICAgICAgICBlbGVtOiBjLAogICAgICAgICAgICAgICAgaGFuZGxlcnM6IHQuc2xpY2UobCkKICAgICAgICAgICAgfSksIHMKICAgICAgICB9LAogICAgICAgIGFkZFByb3A6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHguRXZlbnQucHJvdG90eXBlLCBlLCB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICBnZXQ6IHAodCkgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW5hbEV2ZW50KSByZXR1cm4gdCh0aGlzLm9yaWdpbmFsRXZlbnQpCiAgICAgICAgICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFtlXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGZpeDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZVt4LmV4cGFuZG9dID8gZSA6IG5ldyB4LkV2ZW50KGUpCiAgICAgICAgfSwKICAgICAgICBzcGVjaWFsOiB7CiAgICAgICAgICAgIGxvYWQ6IHsKICAgICAgICAgICAgICAgIG5vQnViYmxlOiAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGljazogewogICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMgfHwgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGUudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgQSh0LCAiaW5wdXQiKSAmJiBrZSh0LCAiY2xpY2siLCB4ZSksICExCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcyB8fCBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBoZS50ZXN0KHQudHlwZSkgJiYgdC5jbGljayAmJiBBKHQsICJpbnB1dCIpICYmIGtlKHQsICJjbGljayIpLCAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9kZWZhdWx0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnRhcmdldDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGUudGVzdCh0LnR5cGUpICYmIHQuY2xpY2sgJiYgQSh0LCAiaW5wdXQiKSAmJiBHLmdldCh0LCAiY2xpY2siKSB8fCBBKHQsICJhIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmVmb3JldW5sb2FkOiB7CiAgICAgICAgICAgICAgICBwb3N0RGlzcGF0Y2g6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUucmVzdWx0ICYmIGUub3JpZ2luYWxFdmVudCAmJiAoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlID0gZS5yZXN1bHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCB4LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lciAmJiBlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCwgbikKICAgIH0sIHguRXZlbnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIHguRXZlbnQpKSByZXR1cm4gbmV3IHguRXZlbnQoZSwgdCk7CiAgICAgICAgZSAmJiBlLnR5cGUgPyAodGhpcy5vcmlnaW5hbEV2ZW50ID0gZSwgdGhpcy50eXBlID0gZS50eXBlLCB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGUuZGVmYXVsdFByZXZlbnRlZCB8fCB2b2lkIDAgPT09IGUuZGVmYXVsdFByZXZlbnRlZCAmJiAhMSA9PT0gZS5yZXR1cm5WYWx1ZSA/IHhlIDogX2UsIHRoaXMudGFyZ2V0ID0gZS50YXJnZXQgJiYgMyA9PT0gZS50YXJnZXQubm9kZVR5cGUgPyBlLnRhcmdldC5wYXJlbnROb2RlIDogZS50YXJnZXQsIHRoaXMuY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCwgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gZS5yZWxhdGVkVGFyZ2V0KSA6IHRoaXMudHlwZSA9IGUsIHQgJiYgeC5leHRlbmQodGhpcywgdCksIHRoaXMudGltZVN0YW1wID0gZSAmJiBlLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpLCB0aGlzW3guZXhwYW5kb10gPSAhMAogICAgfSwgeC5FdmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgY29uc3RydWN0b3I6IHguRXZlbnQsCiAgICAgICAgaXNEZWZhdWx0UHJldmVudGVkOiBfZSwKICAgICAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogX2UsCiAgICAgICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IF9lLAogICAgICAgIGlzU2ltdWxhdGVkOiAhMSwKICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OwogICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHhlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUucHJldmVudERlZmF1bHQoKQogICAgICAgIH0sCiAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSB4ZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgfSwKICAgICAgICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHhlLCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICYmIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICB9CiAgICB9LCB4LmVhY2goewogICAgICAgIGFsdEtleTogITAsCiAgICAgICAgYnViYmxlczogITAsCiAgICAgICAgY2FuY2VsYWJsZTogITAsCiAgICAgICAgY2hhbmdlZFRvdWNoZXM6ICEwLAogICAgICAgIGN0cmxLZXk6ICEwLAogICAgICAgIGRldGFpbDogITAsCiAgICAgICAgZXZlbnRQaGFzZTogITAsCiAgICAgICAgbWV0YUtleTogITAsCiAgICAgICAgcGFnZVg6ICEwLAogICAgICAgIHBhZ2VZOiAhMCwKICAgICAgICBzaGlmdEtleTogITAsCiAgICAgICAgdmlldzogITAsCiAgICAgICAgY2hhcjogITAsCiAgICAgICAgY29kZTogITAsCiAgICAgICAgY2hhckNvZGU6ICEwLAogICAgICAgIGtleTogITAsCiAgICAgICAga2V5Q29kZTogITAsCiAgICAgICAgYnV0dG9uOiAhMCwKICAgICAgICBidXR0b25zOiAhMCwKICAgICAgICBjbGllbnRYOiAhMCwKICAgICAgICBjbGllbnRZOiAhMCwKICAgICAgICBvZmZzZXRYOiAhMCwKICAgICAgICBvZmZzZXRZOiAhMCwKICAgICAgICBwb2ludGVySWQ6ICEwLAogICAgICAgIHBvaW50ZXJUeXBlOiAhMCwKICAgICAgICBzY3JlZW5YOiAhMCwKICAgICAgICBzY3JlZW5ZOiAhMCwKICAgICAgICB0YXJnZXRUb3VjaGVzOiAhMCwKICAgICAgICB0b0VsZW1lbnQ6ICEwLAogICAgICAgIHRvdWNoZXM6ICEwLAogICAgICAgIHdoaWNoOiAhMAogICAgfSwgeC5ldmVudC5hZGRQcm9wKSwgeC5lYWNoKHsKICAgICAgICBmb2N1czogImZvY3VzaW4iLAogICAgICAgIGJsdXI6ICJmb2N1c291dCIKICAgIH0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgeC5ldmVudC5zcGVjaWFsW2VdID0gewogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4ga2UodGhpcywgZSwgU2UpLCAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBrZSh0aGlzLCBlKSwgITAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogdAogICAgICAgIH0KICAgIH0pKSwgeC5lYWNoKHsKICAgICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiLAogICAgICAgIHBvaW50ZXJlbnRlcjogInBvaW50ZXJvdmVyIiwKICAgICAgICBwb2ludGVybGVhdmU6ICJwb2ludGVyb3V0IgogICAgfSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB4LmV2ZW50LnNwZWNpYWxbZV0gPSB7CiAgICAgICAgICAgIGRlbGVnYXRlVHlwZTogdCwKICAgICAgICAgICAgYmluZFR5cGU6IHQsCiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIG4sIGkgPSBlLnJlbGF0ZWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuaGFuZGxlT2JqOwogICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgKGkgPT09IHRoaXMgfHwgeC5jb250YWlucyh0aGlzLCBpKSkgfHwgKGUudHlwZSA9IHIub3JpZ1R5cGUsIG4gPSByLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZS50eXBlID0gdCksIG4KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pKSwgeC5mbi5leHRlbmQoewogICAgICAgIG9uOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHJldHVybiBDZSh0aGlzLCBlLCB0LCBuLCBpKQogICAgICAgIH0sCiAgICAgICAgb25lOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHJldHVybiBDZSh0aGlzLCBlLCB0LCBuLCBpLCAxKQogICAgICAgIH0sCiAgICAgICAgb2ZmOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByOwogICAgICAgICAgICBpZiAoZSAmJiBlLnByZXZlbnREZWZhdWx0ICYmIGUuaGFuZGxlT2JqKSByZXR1cm4gaSA9IGUuaGFuZGxlT2JqLCB4KGUuZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZSA/IGkub3JpZ1R5cGUgKyAiLiIgKyBpLm5hbWVzcGFjZSA6IGkub3JpZ1R5cGUsIGkuc2VsZWN0b3IsIGkuaGFuZGxlciksIHRoaXM7CiAgICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgZm9yIChyIGluIGUpIHRoaXMub2ZmKHIsIHQsIGVbcl0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gITEgIT09IHQgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCB8fCAobiA9IHQsIHQgPSB2b2lkIDApLCAhMSA9PT0gbiAmJiAobiA9IF9lKSwgdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHguZXZlbnQucmVtb3ZlKHRoaXMsIGUsIG4sIHQpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFRlID0gLzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksCiAgICAgICAgQWUgPSAvY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSwKICAgICAgICBFZSA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsKCiAgICBmdW5jdGlvbiBEZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIEEoZSwgInRhYmxlIikgJiYgQSgxMSAhPT0gdC5ub2RlVHlwZSA/IHQgOiB0LmZpcnN0Q2hpbGQsICJ0ciIpICYmIHgoZSkuY2hpbGRyZW4oInRib2R5IilbMF0gfHwgZQogICAgfQoKICAgIGZ1bmN0aW9uIE9lKGUpIHsKICAgICAgICByZXR1cm4gZS50eXBlID0gKG51bGwgIT09IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpICsgIi8iICsgZS50eXBlLCBlCiAgICB9CgogICAgZnVuY3Rpb24gTWUoZSkgewogICAgICAgIHJldHVybiAidHJ1ZS8iID09PSAoZS50eXBlIHx8ICIiKS5zbGljZSgwLCA1KSA/IGUudHlwZSA9IGUudHlwZS5zbGljZSg1KSA6IGUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksIGUKICAgIH0KCiAgICBmdW5jdGlvbiBJZShlLCB0KSB7CiAgICAgICAgdmFyIG4sIGksIHIsIG8sIGEsIHM7CiAgICAgICAgaWYgKDEgPT09IHQubm9kZVR5cGUpIHsKICAgICAgICAgICAgaWYgKEcuaGFzRGF0YShlKSAmJiAocyA9IEcuZ2V0KGUpLmV2ZW50cykpCiAgICAgICAgICAgICAgICBmb3IgKHIgaW4gRy5yZW1vdmUodCwgImhhbmRsZSBldmVudHMiKSwgcykKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gc1tyXS5sZW5ndGg7IG4gPCBpOyBuKyspIHguZXZlbnQuYWRkKHQsIHIsIHNbcl1bbl0pOwogICAgICAgICAgICBLLmhhc0RhdGEoZSkgJiYgKG8gPSBLLmFjY2VzcyhlKSwgYSA9IHguZXh0ZW5kKHt9LCBvKSwgSy5zZXQodCwgYSkpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIExlKGUsIHQsIG4sIGkpIHsKICAgICAgICB0ID0gbyh0KTsKICAgICAgICB2YXIgciwgYSwgcywgbCwgYywgdSwgZCA9IDAsCiAgICAgICAgICAgIGggPSBlLmxlbmd0aCwKICAgICAgICAgICAgZyA9IGggLSAxLAogICAgICAgICAgICBtID0gdFswXSwKICAgICAgICAgICAgdiA9IHAobSk7CiAgICAgICAgaWYgKHYgfHwgMSA8IGggJiYgInN0cmluZyIgPT0gdHlwZW9mIG0gJiYgIWYuY2hlY2tDbG9uZSAmJiBBZS50ZXN0KG0pKSByZXR1cm4gZS5lYWNoKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgIHZhciBvID0gZS5lcShyKTsKICAgICAgICAgICAgdiAmJiAodFswXSA9IG0uY2FsbCh0aGlzLCByLCBvLmh0bWwoKSkpLCBMZShvLCB0LCBuLCBpKQogICAgICAgIH0pKTsKICAgICAgICBpZiAoaCAmJiAoYSA9IChyID0gYmUodCwgZVswXS5vd25lckRvY3VtZW50LCAhMSwgZSwgaSkpLmZpcnN0Q2hpbGQsIDEgPT09IHIuY2hpbGROb2Rlcy5sZW5ndGggJiYgKHIgPSBhKSwgYSB8fCBpKSkgewogICAgICAgICAgICBmb3IgKGwgPSAocyA9IHgubWFwKG1lKHIsICJzY3JpcHQiKSwgT2UpKS5sZW5ndGg7IGQgPCBoOyBkKyspIGMgPSByLCBkICE9PSBnICYmIChjID0geC5jbG9uZShjLCAhMCwgITApLCBsICYmIHgubWVyZ2UocywgbWUoYywgInNjcmlwdCIpKSksIG4uY2FsbChlW2RdLCBjLCBkKTsKICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICBmb3IgKHUgPSBzW3MubGVuZ3RoIC0gMV0ub3duZXJEb2N1bWVudCwgeC5tYXAocywgTWUpLCBkID0gMDsgZCA8IGw7IGQrKykgYyA9IHNbZF0sIHBlLnRlc3QoYy50eXBlIHx8ICIiKSAmJiAhRy5hY2Nlc3MoYywgImdsb2JhbEV2YWwiKSAmJiB4LmNvbnRhaW5zKHUsIGMpICYmIChjLnNyYyAmJiAibW9kdWxlIiAhPT0gKGMudHlwZSB8fCAiIikudG9Mb3dlckNhc2UoKSA/IHguX2V2YWxVcmwgJiYgIWMubm9Nb2R1bGUgJiYgeC5fZXZhbFVybChjLnNyYywgewogICAgICAgICAgICAgICAgICAgIG5vbmNlOiBjLm5vbmNlIHx8IGMuZ2V0QXR0cmlidXRlKCJub25jZSIpCiAgICAgICAgICAgICAgICB9LCB1KSA6IHkoYy50ZXh0Q29udGVudC5yZXBsYWNlKEVlLCAiIiksIGMsIHUpKQogICAgICAgIH0KICAgICAgICByZXR1cm4gZQogICAgfQoKICAgIGZ1bmN0aW9uIFBlKGUsIHQsIG4pIHsKICAgICAgICBmb3IgKHZhciBpLCByID0gdCA/IHguZmlsdGVyKHQsIGUpIDogZSwgbyA9IDA7IG51bGwgIT0gKGkgPSByW29dKTsgbysrKSBuIHx8IDEgIT09IGkubm9kZVR5cGUgfHwgeC5jbGVhbkRhdGEobWUoaSkpLCBpLnBhcmVudE5vZGUgJiYgKG4gJiYgcmUoaSkgJiYgdmUobWUoaSwgInNjcmlwdCIpKSwgaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKTsKICAgICAgICByZXR1cm4gZQogICAgfQogICAgeC5leHRlbmQoewogICAgICAgIGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjLCB1ID0gZS5jbG9uZU5vZGUoITApLAogICAgICAgICAgICAgICAgZCA9IHJlKGUpOwogICAgICAgICAgICBpZiAoIShmLm5vQ2xvbmVDaGVja2VkIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgMTEgIT09IGUubm9kZVR5cGUgfHwgeC5pc1hNTERvYyhlKSkpCiAgICAgICAgICAgICAgICBmb3IgKGEgPSBtZSh1KSwgaSA9IDAsIHIgPSAobyA9IG1lKGUpKS5sZW5ndGg7IGkgPCByOyBpKyspIHMgPSBvW2ldLCAiaW5wdXQiID09PSAoYyA9IChsID0gYVtpXSkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgJiYgaGUudGVzdChzLnR5cGUpID8gbC5jaGVja2VkID0gcy5jaGVja2VkIDogImlucHV0IiAhPT0gYyAmJiAidGV4dGFyZWEiICE9PSBjIHx8IChsLmRlZmF1bHRWYWx1ZSA9IHMuZGVmYXVsdFZhbHVlKTsKICAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICAgICBpZiAobikKICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSBvIHx8IG1lKGUpLCBhID0gYSB8fCBtZSh1KSwgaSA9IDAsIHIgPSBvLmxlbmd0aDsgaSA8IHI7IGkrKykgSWUob1tpXSwgYVtpXSk7CiAgICAgICAgICAgICAgICBlbHNlIEllKGUsIHUpOwogICAgICAgICAgICByZXR1cm4gMCA8IChhID0gbWUodSwgInNjcmlwdCIpKS5sZW5ndGggJiYgdmUoYSwgIWQgJiYgbWUoZSwgInNjcmlwdCIpKSwgdQogICAgICAgIH0sCiAgICAgICAgY2xlYW5EYXRhOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQsIG4sIGksIHIgPSB4LmV2ZW50LnNwZWNpYWwsIG8gPSAwOyB2b2lkIDAgIT09IChuID0gZVtvXSk7IG8rKykKICAgICAgICAgICAgICAgIGlmIChZKG4pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBuW0cuZXhwYW5kb10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuZXZlbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHQuZXZlbnRzKSByW2ldID8geC5ldmVudC5yZW1vdmUobiwgaSkgOiB4LnJlbW92ZUV2ZW50KG4sIGksIHQuaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgbltHLmV4cGFuZG9dID0gdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5bSy5leHBhbmRvXSAmJiAobltLLmV4cGFuZG9dID0gdm9pZCAwKQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLCB4LmZuLmV4dGVuZCh7CiAgICAgICAgZGV0YWNoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBQZSh0aGlzLCBlLCAhMCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gUGUodGhpcywgZSkKICAgICAgICB9LAogICAgICAgIHRleHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEIodGhpcywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyB4LnRleHQodGhpcykgOiB0aGlzLmVtcHR5KCkuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gZSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIGFwcGVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBMZSh0aGlzLCBhcmd1bWVudHMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAxICE9PSB0aGlzLm5vZGVUeXBlICYmIDExICE9PSB0aGlzLm5vZGVUeXBlICYmIDkgIT09IHRoaXMubm9kZVR5cGUgfHwgRGUodGhpcywgZSkuYXBwZW5kQ2hpbGQoZSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIExlKHRoaXMsIGFyZ3VtZW50cywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IERlKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgICAgIHQuaW5zZXJ0QmVmb3JlKGUsIHQuZmlyc3RDaGlsZCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgYXJndW1lbnRzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSwgdGhpcykKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBhZnRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBMZSh0aGlzLCBhcmd1bWVudHMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGVtcHR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSwgdCA9IDA7IG51bGwgIT0gKGUgPSB0aGlzW3RdKTsgdCsrKSAxID09PSBlLm5vZGVUeXBlICYmICh4LmNsZWFuRGF0YShtZShlLCAhMSkpLCBlLnRleHRDb250ZW50ID0gIiIpOwogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPSBudWxsICE9IGUgJiYgZSwgdCA9IG51bGwgPT0gdCA/IGUgOiB0LCB0aGlzLm1hcCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geC5jbG9uZSh0aGlzLCBlLCB0KQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGh0bWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEIodGhpcywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpc1swXSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5sZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBlICYmIDEgPT09IHQubm9kZVR5cGUpIHJldHVybiB0LmlubmVySFRNTDsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAhVGUudGVzdChlKSAmJiAhZ2VbKGZlLmV4ZWMoZSkgfHwgWyIiLCAiIl0pWzFdLnRvTG93ZXJDYXNlKCldKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IHguaHRtbFByZWZpbHRlcihlKTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbiA8IGk7IG4rKykgMSA9PT0gKHQgPSB0aGlzW25dIHx8IHt9KS5ub2RlVHlwZSAmJiAoeC5jbGVhbkRhdGEobWUodCwgITEpKSwgdC5pbm5lckhUTUwgPSBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDAKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdCAmJiB0aGlzLmVtcHR5KCkuYXBwZW5kKGUpCiAgICAgICAgICAgIH0pLCBudWxsLCBlLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgIH0sCiAgICAgICAgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICByZXR1cm4gTGUodGhpcywgYXJndW1lbnRzLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICB4LmluQXJyYXkodGhpcywgZSkgPCAwICYmICh4LmNsZWFuRGF0YShtZSh0aGlzKSksIG4gJiYgbi5yZXBsYWNlQ2hpbGQodCwgdGhpcykpCiAgICAgICAgICAgIH0pLCBlKQogICAgICAgIH0KICAgIH0pLCB4LmVhY2goewogICAgICAgIGFwcGVuZFRvOiAiYXBwZW5kIiwKICAgICAgICBwcmVwZW5kVG86ICJwcmVwZW5kIiwKICAgICAgICBpbnNlcnRCZWZvcmU6ICJiZWZvcmUiLAogICAgICAgIGluc2VydEFmdGVyOiAiYWZ0ZXIiLAogICAgICAgIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIKICAgIH0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgeC5mbltlXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiwgaSA9IFtdLCByID0geChlKSwgbyA9IHIubGVuZ3RoIC0gMSwgcyA9IDA7IHMgPD0gbzsgcysrKSBuID0gcyA9PT0gbyA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwgeChyW3NdKVt0XShuKSwgYS5hcHBseShpLCBuLmdldCgpKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGkpCiAgICAgICAgfQogICAgfSkpOwogICAgdmFyIGplID0gbmV3IFJlZ0V4cCgiXigiICsgZWUgKyAiKSg/IXB4KVthLXolXSskIiwgImkiKSwKICAgICAgICBOZSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CiAgICAgICAgICAgIHJldHVybiBuICYmIG4ub3BlbmVyIHx8IChuID0gZSksIG4uZ2V0Q29tcHV0ZWRTdHlsZSh0KQogICAgICAgIH0sCiAgICAgICAgRmUgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvID0ge307CiAgICAgICAgICAgIGZvciAociBpbiB0KSBvW3JdID0gZS5zdHlsZVtyXSwgZS5zdHlsZVtyXSA9IHRbcl07CiAgICAgICAgICAgIGZvciAociBpbiBpID0gbi5jYWxsKGUpLCB0KSBlLnN0eWxlW3JdID0gb1tyXTsKICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICB9LAogICAgICAgIFJlID0gbmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksICJpIik7CgogICAgZnVuY3Rpb24gJGUoZSwgdCwgbikgewogICAgICAgIHZhciBpLCByLCBvLCBhLCBzID0gZS5zdHlsZTsKICAgICAgICByZXR1cm4gKG4gPSBuIHx8IE5lKGUpKSAmJiAoIiIgIT09IChhID0gbi5nZXRQcm9wZXJ0eVZhbHVlKHQpIHx8IG5bdF0pIHx8IHJlKGUpIHx8IChhID0geC5zdHlsZShlLCB0KSksICFmLnBpeGVsQm94U3R5bGVzKCkgJiYgamUudGVzdChhKSAmJiBSZS50ZXN0KHQpICYmIChpID0gcy53aWR0aCwgciA9IHMubWluV2lkdGgsIG8gPSBzLm1heFdpZHRoLCBzLm1pbldpZHRoID0gcy5tYXhXaWR0aCA9IHMud2lkdGggPSBhLCBhID0gbi53aWR0aCwgcy53aWR0aCA9IGksIHMubWluV2lkdGggPSByLCBzLm1heFdpZHRoID0gbykpLCB2b2lkIDAgIT09IGEgPyBhICsgIiIgOiBhCiAgICB9CgogICAgZnVuY3Rpb24gemUoZSwgdCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIWUoKSkgcmV0dXJuICh0aGlzLmdldCA9IHQpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5nZXQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0hIGZ1bmN0aW9uKCkgewogICAgICAgIGZ1bmN0aW9uIHQoKSB7CiAgICAgICAgICAgIGlmICh1KSB7CiAgICAgICAgICAgICAgICBjLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsIHUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIiwgaWUuYXBwZW5kQ2hpbGQoYykuYXBwZW5kQ2hpbGQodSk7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZ2V0Q29tcHV0ZWRTdHlsZSh1KTsKICAgICAgICAgICAgICAgIGkgPSAiMSUiICE9PSB0LnRvcCwgbCA9IDEyID09PSBuKHQubWFyZ2luTGVmdCksIHUuc3R5bGUucmlnaHQgPSAiNjAlIiwgYSA9IDM2ID09PSBuKHQucmlnaHQpLCByID0gMzYgPT09IG4odC53aWR0aCksIHUuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiLCBvID0gMTIgPT09IG4odS5vZmZzZXRXaWR0aCAvIDMpLCBpZS5yZW1vdmVDaGlsZChjKSwgdSA9IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpCiAgICAgICAgfQogICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjID0gbS5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgdSA9IG0uY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgdS5zdHlsZSAmJiAodS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICJjb250ZW50LWJveCIsIHUuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICIiLCBmLmNsZWFyQ2xvbmVTdHlsZSA9ICJjb250ZW50LWJveCIgPT09IHUuc3R5bGUuYmFja2dyb3VuZENsaXAsIHguZXh0ZW5kKGYsIHsKICAgICAgICAgICAgYm94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQoKSwgcgogICAgICAgICAgICB9LAogICAgICAgICAgICBwaXhlbEJveFN0eWxlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCgpLCBhCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQoKSwgaQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWxpYWJsZU1hcmdpbkxlZnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQoKSwgbAogICAgICAgICAgICB9LAogICAgICAgICAgICBzY3JvbGxib3hTaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0KCksIG8KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVsaWFibGVUckRpbWVuc2lvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGksIHI7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBzICYmICh0ID0gbS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLCBuID0gbS5jcmVhdGVFbGVtZW50KCJ0ciIpLCBpID0gbS5jcmVhdGVFbGVtZW50KCJkaXYiKSwgdC5zdHlsZS5jc3NUZXh0ID0gInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIiwgbi5zdHlsZS5jc3NUZXh0ID0gImJvcmRlcjoxcHggc29saWQiLCBuLnN0eWxlLmhlaWdodCA9ICIxcHgiLCBpLnN0eWxlLmhlaWdodCA9ICI5cHgiLCBpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCBpZS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKS5hcHBlbmRDaGlsZChpKSwgciA9IGUuZ2V0Q29tcHV0ZWRTdHlsZShuKSwgcyA9IHBhcnNlSW50KHIuaGVpZ2h0LCAxMCkgKyBwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLCAxMCkgKyBwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLCAxMCkgPT09IG4ub2Zmc2V0SGVpZ2h0LCBpZS5yZW1vdmVDaGlsZCh0KSksIHMKICAgICAgICAgICAgfQogICAgICAgIH0pKQogICAgfSgpOwogICAgdmFyIEhlID0gWyJXZWJraXQiLCAiTW96IiwgIm1zIl0sCiAgICAgICAgQmUgPSBtLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLAogICAgICAgIFdlID0ge307CgogICAgZnVuY3Rpb24gcWUoZSkgewogICAgICAgIHJldHVybiB4LmNzc1Byb3BzW2VdIHx8IFdlW2VdIHx8IChlIGluIEJlID8gZSA6IFdlW2VdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gZVswXS50b1VwcGVyQ2FzZSgpICsgZS5zbGljZSgxKSwgbiA9IEhlLmxlbmd0aDsgbi0tOykKICAgICAgICAgICAgICAgIGlmICgoZSA9IEhlW25dICsgdCkgaW4gQmUpIHJldHVybiBlCiAgICAgICAgfShlKSB8fCBlKQogICAgfQogICAgdmFyIFVlID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLAogICAgICAgIFZlID0gL14tLS8sCiAgICAgICAgWWUgPSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICB2aXNpYmlsaXR5OiAiaGlkZGVuIiwKICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIgogICAgICAgIH0sCiAgICAgICAgWGUgPSB7CiAgICAgICAgICAgIGxldHRlclNwYWNpbmc6ICIwIiwKICAgICAgICAgICAgZm9udFdlaWdodDogIjQwMCIKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIEdlKGUsIHQsIG4pIHsKICAgICAgICB2YXIgaSA9IHRlLmV4ZWModCk7CiAgICAgICAgcmV0dXJuIGkgPyBNYXRoLm1heCgwLCBpWzJdIC0gKG4gfHwgMCkpICsgKGlbM10gfHwgInB4IikgOiB0CiAgICB9CgogICAgZnVuY3Rpb24gS2UoZSwgdCwgbiwgaSwgciwgbykgewogICAgICAgIHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLAogICAgICAgICAgICBzID0gMCwKICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgaWYgKG4gPT09IChpID8gImJvcmRlciIgOiAiY29udGVudCIpKSByZXR1cm4gMDsKICAgICAgICBmb3IgKDsgYSA8IDQ7IGEgKz0gMikgIm1hcmdpbiIgPT09IG4gJiYgKGwgKz0geC5jc3MoZSwgbiArIG5lW2FdLCAhMCwgcikpLCBpID8gKCJjb250ZW50IiA9PT0gbiAmJiAobCAtPSB4LmNzcyhlLCAicGFkZGluZyIgKyBuZVthXSwgITAsIHIpKSwgIm1hcmdpbiIgIT09IG4gJiYgKGwgLT0geC5jc3MoZSwgImJvcmRlciIgKyBuZVthXSArICJXaWR0aCIsICEwLCByKSkpIDogKGwgKz0geC5jc3MoZSwgInBhZGRpbmciICsgbmVbYV0sICEwLCByKSwgInBhZGRpbmciICE9PSBuID8gbCArPSB4LmNzcyhlLCAiYm9yZGVyIiArIG5lW2FdICsgIldpZHRoIiwgITAsIHIpIDogcyArPSB4LmNzcyhlLCAiYm9yZGVyIiArIG5lW2FdICsgIldpZHRoIiwgITAsIHIpKTsKICAgICAgICByZXR1cm4gIWkgJiYgMCA8PSBvICYmIChsICs9IE1hdGgubWF4KDAsIE1hdGguY2VpbChlWyJvZmZzZXQiICsgdFswXS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKV0gLSBvIC0gbCAtIHMgLSAuNSkpIHx8IDApLCBsCiAgICB9CgogICAgZnVuY3Rpb24gUWUoZSwgdCwgbikgewogICAgICAgIHZhciBpID0gTmUoZSksCiAgICAgICAgICAgIHIgPSAoIWYuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBuKSAmJiAiYm9yZGVyLWJveCIgPT09IHguY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksCiAgICAgICAgICAgIG8gPSByLAogICAgICAgICAgICBhID0gJGUoZSwgdCwgaSksCiAgICAgICAgICAgIHMgPSAib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSk7CiAgICAgICAgaWYgKGplLnRlc3QoYSkpIHsKICAgICAgICAgICAgaWYgKCFuKSByZXR1cm4gYTsKICAgICAgICAgICAgYSA9ICJhdXRvIgogICAgICAgIH0KICAgICAgICByZXR1cm4gKCFmLmJveFNpemluZ1JlbGlhYmxlKCkgJiYgciB8fCAhZi5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIEEoZSwgInRyIikgfHwgImF1dG8iID09PSBhIHx8ICFwYXJzZUZsb2F0KGEpICYmICJpbmxpbmUiID09PSB4LmNzcyhlLCAiZGlzcGxheSIsICExLCBpKSkgJiYgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCAmJiAociA9ICJib3JkZXItYm94IiA9PT0geC5jc3MoZSwgImJveFNpemluZyIsICExLCBpKSwgKG8gPSBzIGluIGUpICYmIChhID0gZVtzXSkpLCAoYSA9IHBhcnNlRmxvYXQoYSkgfHwgMCkgKyBLZShlLCB0LCBuIHx8IChyID8gImJvcmRlciIgOiAiY29udGVudCIpLCBvLCBpLCBhKSArICJweCIKICAgIH0KCiAgICBmdW5jdGlvbiBaZShlLCB0LCBuLCBpLCByKSB7CiAgICAgICAgcmV0dXJuIG5ldyBaZS5wcm90b3R5cGUuaW5pdChlLCB0LCBuLCBpLCByKQogICAgfQogICAgeC5leHRlbmQoewogICAgICAgIGNzc0hvb2tzOiB7CiAgICAgICAgICAgIG9wYWNpdHk6IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gJGUoZSwgIm9wYWNpdHkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiID09PSBuID8gIjEiIDogbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY3NzTnVtYmVyOiB7CiAgICAgICAgICAgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAhMCwKICAgICAgICAgICAgY29sdW1uQ291bnQ6ICEwLAogICAgICAgICAgICBmaWxsT3BhY2l0eTogITAsCiAgICAgICAgICAgIGZsZXhHcm93OiAhMCwKICAgICAgICAgICAgZmxleFNocmluazogITAsCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICEwLAogICAgICAgICAgICBncmlkQXJlYTogITAsCiAgICAgICAgICAgIGdyaWRDb2x1bW46ICEwLAogICAgICAgICAgICBncmlkQ29sdW1uRW5kOiAhMCwKICAgICAgICAgICAgZ3JpZENvbHVtblN0YXJ0OiAhMCwKICAgICAgICAgICAgZ3JpZFJvdzogITAsCiAgICAgICAgICAgIGdyaWRSb3dFbmQ6ICEwLAogICAgICAgICAgICBncmlkUm93U3RhcnQ6ICEwLAogICAgICAgICAgICBsaW5lSGVpZ2h0OiAhMCwKICAgICAgICAgICAgb3BhY2l0eTogITAsCiAgICAgICAgICAgIG9yZGVyOiAhMCwKICAgICAgICAgICAgb3JwaGFuczogITAsCiAgICAgICAgICAgIHdpZG93czogITAsCiAgICAgICAgICAgIHpJbmRleDogITAsCiAgICAgICAgICAgIHpvb206ICEwCiAgICAgICAgfSwKICAgICAgICBjc3NQcm9wczoge30sCiAgICAgICAgc3R5bGU6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgaWYgKGUgJiYgMyAhPT0gZS5ub2RlVHlwZSAmJiA4ICE9PSBlLm5vZGVUeXBlICYmIGUuc3R5bGUpIHsKICAgICAgICAgICAgICAgIHZhciByLCBvLCBhLCBzID0gVih0KSwKICAgICAgICAgICAgICAgICAgICBsID0gVmUudGVzdCh0KSwKICAgICAgICAgICAgICAgICAgICBjID0gZS5zdHlsZTsKICAgICAgICAgICAgICAgIGlmIChsIHx8ICh0ID0gcWUocykpLCBhID0geC5jc3NIb29rc1t0XSB8fCB4LmNzc0hvb2tzW3NdLCB2b2lkIDAgPT09IG4pIHJldHVybiBhICYmICJnZXQiIGluIGEgJiYgdm9pZCAwICE9PSAociA9IGEuZ2V0KGUsICExLCBpKSkgPyByIDogY1t0XTsKICAgICAgICAgICAgICAgICJzdHJpbmciID09IChvID0gdHlwZW9mIG4pICYmIChyID0gdGUuZXhlYyhuKSkgJiYgclsxXSAmJiAobiA9IHNlKGUsIHQsIHIpLCBvID0gIm51bWJlciIpLCBudWxsICE9IG4gJiYgbiA9PSBuICYmICgibnVtYmVyIiAhPT0gbyB8fCBsIHx8IChuICs9IHIgJiYgclszXSB8fCAoeC5jc3NOdW1iZXJbc10gPyAiIiA6ICJweCIpKSwgZi5jbGVhckNsb25lU3R5bGUgfHwgIiIgIT09IG4gfHwgMCAhPT0gdC5pbmRleE9mKCJiYWNrZ3JvdW5kIikgfHwgKGNbdF0gPSAiaW5oZXJpdCIpLCBhICYmICJzZXQiIGluIGEgJiYgdm9pZCAwID09PSAobiA9IGEuc2V0KGUsIG4sIGkpKSB8fCAobCA/IGMuc2V0UHJvcGVydHkodCwgbikgOiBjW3RdID0gbikpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNzczogZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciwgbywgYSwgcyA9IFYodCk7CiAgICAgICAgICAgIHJldHVybiBWZS50ZXN0KHQpIHx8ICh0ID0gcWUocykpLCAoYSA9IHguY3NzSG9va3NbdF0gfHwgeC5jc3NIb29rc1tzXSkgJiYgImdldCIgaW4gYSAmJiAociA9IGEuZ2V0KGUsICEwLCBuKSksIHZvaWQgMCA9PT0gciAmJiAociA9ICRlKGUsIHQsIGkpKSwgIm5vcm1hbCIgPT09IHIgJiYgdCBpbiBYZSAmJiAociA9IFhlW3RdKSwgIiIgPT09IG4gfHwgbiA/IChvID0gcGFyc2VGbG9hdChyKSwgITAgPT09IG4gfHwgaXNGaW5pdGUobykgPyBvIHx8IDAgOiByKSA6IHIKICAgICAgICB9CiAgICB9KSwgeC5lYWNoKFsiaGVpZ2h0IiwgIndpZHRoIl0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgeC5jc3NIb29rc1t0XSA9IHsKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlLCBuLCBpKSB7CiAgICAgICAgICAgICAgICBpZiAobikgcmV0dXJuICFVZS50ZXN0KHguY3NzKGUsICJkaXNwbGF5IikpIHx8IGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggJiYgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/IFFlKGUsIHQsIGkpIDogRmUoZSwgWWUsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUWUoZSwgdCwgaSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIG4sIGkpIHsKICAgICAgICAgICAgICAgIHZhciByLCBvID0gTmUoZSksCiAgICAgICAgICAgICAgICAgICAgYSA9ICFmLnNjcm9sbGJveFNpemUoKSAmJiAiYWJzb2x1dGUiID09PSBvLnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIHMgPSAoYSB8fCBpKSAmJiAiYm9yZGVyLWJveCIgPT09IHguY3NzKGUsICJib3hTaXppbmciLCAhMSwgbyksCiAgICAgICAgICAgICAgICAgICAgbCA9IGkgPyBLZShlLCB0LCBpLCBzLCBvKSA6IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gcyAmJiBhICYmIChsIC09IE1hdGguY2VpbChlWyJvZmZzZXQiICsgdFswXS50b1VwcGVyQ2FzZSgpICsgdC5zbGljZSgxKV0gLSBwYXJzZUZsb2F0KG9bdF0pIC0gS2UoZSwgdCwgImJvcmRlciIsICExLCBvKSAtIC41KSksIGwgJiYgKHIgPSB0ZS5leGVjKG4pKSAmJiAicHgiICE9PSAoclszXSB8fCAicHgiKSAmJiAoZS5zdHlsZVt0XSA9IG4sIG4gPSB4LmNzcyhlLCB0KSksIEdlKDAsIG4sIGwpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSksIHguY3NzSG9va3MubWFyZ2luTGVmdCA9IHplKGYucmVsaWFibGVNYXJnaW5MZWZ0LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGlmICh0KSByZXR1cm4gKHBhcnNlRmxvYXQoJGUoZSwgIm1hcmdpbkxlZnQiKSkgfHwgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gRmUoZSwgewogICAgICAgICAgICBtYXJnaW5MZWZ0OiAwCiAgICAgICAgfSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0CiAgICAgICAgfSkpKSArICJweCIKICAgIH0pKSwgeC5lYWNoKHsKICAgICAgICBtYXJnaW46ICIiLAogICAgICAgIHBhZGRpbmc6ICIiLAogICAgICAgIGJvcmRlcjogIldpZHRoIgogICAgfSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB4LmNzc0hvb2tzW2UgKyB0XSA9IHsKICAgICAgICAgICAgZXhwYW5kOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgciA9IHt9LCBvID0gInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnNwbGl0KCIgIikgOiBbbl07IGkgPCA0OyBpKyspIHJbZSArIG5lW2ldICsgdF0gPSBvW2ldIHx8IG9baSAtIDJdIHx8IG9bMF07CiAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICB9CiAgICAgICAgfSwgIm1hcmdpbiIgIT09IGUgJiYgKHguY3NzSG9va3NbZSArIHRdLnNldCA9IEdlKQogICAgfSkpLCB4LmZuLmV4dGVuZCh7CiAgICAgICAgY3NzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBCKHRoaXMsIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgciwgbyA9IHt9LAogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBOZShlKSwgciA9IHQubGVuZ3RoOyBhIDwgcjsgYSsrKSBvW3RbYV1dID0geC5jc3MoZSwgdFthXSwgITEsIGkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBuID8geC5zdHlsZShlLCB0LCBuKSA6IHguY3NzKGUsIHQpCiAgICAgICAgICAgIH0pLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9CiAgICB9KSwgKCh4LlR3ZWVuID0gWmUpLnByb3RvdHlwZSA9IHsKICAgICAgICBjb25zdHJ1Y3RvcjogWmUsCiAgICAgICAgaW5pdDogZnVuY3Rpb24oZSwgdCwgbiwgaSwgciwgbykgewogICAgICAgICAgICB0aGlzLmVsZW0gPSBlLCB0aGlzLnByb3AgPSBuLCB0aGlzLmVhc2luZyA9IHIgfHwgeC5lYXNpbmcuX2RlZmF1bHQsIHRoaXMub3B0aW9ucyA9IHQsIHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCksIHRoaXMuZW5kID0gaSwgdGhpcy51bml0ID0gbyB8fCAoeC5jc3NOdW1iZXJbbl0gPyAiIiA6ICJweCIpCiAgICAgICAgfSwKICAgICAgICBjdXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFplLnByb3BIb29rc1t0aGlzLnByb3BdOwogICAgICAgICAgICByZXR1cm4gZSAmJiBlLmdldCA/IGUuZ2V0KHRoaXMpIDogWmUucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKQogICAgICAgIH0sCiAgICAgICAgcnVuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuID0gWmUucHJvcEhvb2tzW3RoaXMucHJvcF07CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24gPyB0aGlzLnBvcyA9IHQgPSB4LmVhc2luZ1t0aGlzLmVhc2luZ10oZSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uICogZSwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKSA6IHRoaXMucG9zID0gdCA9IGUsIHRoaXMubm93ID0gKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0ICsgdGhpcy5zdGFydCwgdGhpcy5vcHRpb25zLnN0ZXAgJiYgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzKSwgbiAmJiBuLnNldCA/IG4uc2V0KHRoaXMpIDogWmUucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSwgdGhpcwogICAgICAgIH0KICAgIH0pLmluaXQucHJvdG90eXBlID0gWmUucHJvdG90eXBlLCAoWmUucHJvcEhvb2tzID0gewogICAgICAgIF9kZWZhdWx0OiB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gMSAhPT0gZS5lbGVtLm5vZGVUeXBlIHx8IG51bGwgIT0gZS5lbGVtW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbZS5wcm9wXSA/IGUuZWxlbVtlLnByb3BdIDogKHQgPSB4LmNzcyhlLmVsZW0sIGUucHJvcCwgIiIpKSAmJiAiYXV0byIgIT09IHQgPyB0IDogMAogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHguZnguc3RlcFtlLnByb3BdID8geC5meC5zdGVwW2UucHJvcF0oZSkgOiAxICE9PSBlLmVsZW0ubm9kZVR5cGUgfHwgIXguY3NzSG9va3NbZS5wcm9wXSAmJiBudWxsID09IGUuZWxlbS5zdHlsZVtxZShlLnByb3ApXSA/IGUuZWxlbVtlLnByb3BdID0gZS5ub3cgOiB4LnN0eWxlKGUuZWxlbSwgZS5wcm9wLCBlLm5vdyArIGUudW5pdCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLnNjcm9sbFRvcCA9IFplLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0gewogICAgICAgIHNldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLmVsZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVudE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0gZS5ub3cpCiAgICAgICAgfQogICAgfSwgeC5lYXNpbmcgPSB7CiAgICAgICAgbGluZWFyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSwKICAgICAgICBzd2luZzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gLjUgLSBNYXRoLmNvcyhlICogTWF0aC5QSSkgLyAyCiAgICAgICAgfSwKICAgICAgICBfZGVmYXVsdDogInN3aW5nIgogICAgfSwgeC5meCA9IFplLnByb3RvdHlwZS5pbml0LCB4LmZ4LnN0ZXAgPSB7fTsKICAgIHZhciBKZSwgZXQsIHR0LCBudCwgaXQgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sCiAgICAgICAgcnQgPSAvcXVldWVIb29rcyQvOwoKICAgIGZ1bmN0aW9uIG90KCkgewogICAgICAgIGV0ICYmICghMSA9PT0gbS5oaWRkZW4gJiYgZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPyBlLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCkgOiBlLnNldFRpbWVvdXQob3QsIHguZnguaW50ZXJ2YWwpLCB4LmZ4LnRpY2soKSkKICAgIH0KCiAgICBmdW5jdGlvbiBhdCgpIHsKICAgICAgICByZXR1cm4gZS5zZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgSmUgPSB2b2lkIDAKICAgICAgICB9KSksIEplID0gRGF0ZS5ub3coKQogICAgfQoKICAgIGZ1bmN0aW9uIHN0KGUsIHQpIHsKICAgICAgICB2YXIgbiwgaSA9IDAsCiAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGUKICAgICAgICAgICAgfTsKICAgICAgICBmb3IgKHQgPSB0ID8gMSA6IDA7IGkgPCA0OyBpICs9IDIgLSB0KSByWyJtYXJnaW4iICsgKG4gPSBuZVtpXSldID0gclsicGFkZGluZyIgKyBuXSA9IGU7CiAgICAgICAgcmV0dXJuIHQgJiYgKHIub3BhY2l0eSA9IHIud2lkdGggPSBlKSwgcgogICAgfQoKICAgIGZ1bmN0aW9uIGx0KGUsIHQsIG4pIHsKICAgICAgICBmb3IgKHZhciBpLCByID0gKGN0LnR3ZWVuZXJzW3RdIHx8IFtdKS5jb25jYXQoY3QudHdlZW5lcnNbIioiXSksIG8gPSAwLCBhID0gci5sZW5ndGg7IG8gPCBhOyBvKyspCiAgICAgICAgICAgIGlmIChpID0gcltvXS5jYWxsKG4sIHQsIGUpKSByZXR1cm4gaQogICAgfQoKICAgIGZ1bmN0aW9uIGN0KGUsIHQsIG4pIHsKICAgICAgICB2YXIgaSwgciwgbyA9IDAsCiAgICAgICAgICAgIGEgPSBjdC5wcmVmaWx0ZXJzLmxlbmd0aCwKICAgICAgICAgICAgcyA9IHguRGVmZXJyZWQoKS5hbHdheXMoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZGVsZXRlIGwuZWxlbQogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIGwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChyKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gSmUgfHwgYXQoKSwgbiA9IE1hdGgubWF4KDAsIGMuc3RhcnRUaW1lICsgYy5kdXJhdGlvbiAtIHQpLCBpID0gMSAtIChuIC8gYy5kdXJhdGlvbiB8fCAwKSwgbyA9IDAsIGEgPSBjLnR3ZWVucy5sZW5ndGg7IG8gPCBhOyBvKyspIGMudHdlZW5zW29dLnJ1bihpKTsKICAgICAgICAgICAgICAgIHJldHVybiBzLm5vdGlmeVdpdGgoZSwgW2MsIGksIG5dKSwgaSA8IDEgJiYgYSA/IG4gOiAoYSB8fCBzLm5vdGlmeVdpdGgoZSwgW2MsIDEsIDBdKSwgcy5yZXNvbHZlV2l0aChlLCBbY10pLCAhMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYyA9IHMucHJvbWlzZSh7CiAgICAgICAgICAgICAgICBlbGVtOiBlLAogICAgICAgICAgICAgICAgcHJvcHM6IHguZXh0ZW5kKHt9LCB0KSwKICAgICAgICAgICAgICAgIG9wdHM6IHguZXh0ZW5kKCEwLCB7CiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbEVhc2luZzoge30sCiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiB4LmVhc2luZy5fZGVmYXVsdAogICAgICAgICAgICAgICAgfSwgbiksCiAgICAgICAgICAgICAgICBvcmlnaW5hbFByb3BlcnRpZXM6IHQsCiAgICAgICAgICAgICAgICBvcmlnaW5hbE9wdGlvbnM6IG4sCiAgICAgICAgICAgICAgICBzdGFydFRpbWU6IEplIHx8IGF0KCksCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogbi5kdXJhdGlvbiwKICAgICAgICAgICAgICAgIHR3ZWVuczogW10sCiAgICAgICAgICAgICAgICBjcmVhdGVUd2VlbjogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0geC5Ud2VlbihlLCBjLm9wdHMsIHQsIG4sIGMub3B0cy5zcGVjaWFsRWFzaW5nW3RdIHx8IGMub3B0cy5lYXNpbmcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBjLnR3ZWVucy5wdXNoKGkpLCBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQgPyBjLnR3ZWVucy5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgICAgIGlmIChyKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAhMDsgbiA8IGk7IG4rKykgYy50d2VlbnNbbl0ucnVuKDEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gKHMubm90aWZ5V2l0aChlLCBbYywgMSwgMF0pLCBzLnJlc29sdmVXaXRoKGUsIFtjLCB0XSkpIDogcy5yZWplY3RXaXRoKGUsIFtjLCB0XSksIHRoaXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIHUgPSBjLnByb3BzOwogICAgICAgIGZvciAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8sIGE7CiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gZSkKICAgICAgICAgICAgICAgICAgICBpZiAociA9IHRbaSA9IFYobildLCBvID0gZVtuXSwgQXJyYXkuaXNBcnJheShvKSAmJiAociA9IG9bMV0sIG8gPSBlW25dID0gb1swXSksIG4gIT09IGkgJiYgKGVbaV0gPSBvLCBkZWxldGUgZVtuXSksIChhID0geC5jc3NIb29rc1tpXSkgJiYgImV4cGFuZCIgaW4gYSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuIGluIG8gPSBhLmV4cGFuZChvKSwgZGVsZXRlIGVbaV0sIG8pIG4gaW4gZSB8fCAoZVtuXSA9IG9bbl0sIHRbbl0gPSByKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHRbaV0gPSByCiAgICAgICAgICAgIH0odSwgYy5vcHRzLnNwZWNpYWxFYXNpbmcpOyBvIDwgYTsgbysrKQogICAgICAgICAgICBpZiAoaSA9IGN0LnByZWZpbHRlcnNbb10uY2FsbChjLCBlLCB1LCBjLm9wdHMpKSByZXR1cm4gcChpLnN0b3ApICYmICh4Ll9xdWV1ZUhvb2tzKGMuZWxlbSwgYy5vcHRzLnF1ZXVlKS5zdG9wID0gaS5zdG9wLmJpbmQoaSkpLCBpOwogICAgICAgIHJldHVybiB4Lm1hcCh1LCBsdCwgYyksIHAoYy5vcHRzLnN0YXJ0KSAmJiBjLm9wdHMuc3RhcnQuY2FsbChlLCBjKSwgYy5wcm9ncmVzcyhjLm9wdHMucHJvZ3Jlc3MpLmRvbmUoYy5vcHRzLmRvbmUsIGMub3B0cy5jb21wbGV0ZSkuZmFpbChjLm9wdHMuZmFpbCkuYWx3YXlzKGMub3B0cy5hbHdheXMpLCB4LmZ4LnRpbWVyKHguZXh0ZW5kKGwsIHsKICAgICAgICAgICAgZWxlbTogZSwKICAgICAgICAgICAgYW5pbTogYywKICAgICAgICAgICAgcXVldWU6IGMub3B0cy5xdWV1ZQogICAgICAgIH0pKSwgYwogICAgfQogICAgeC5BbmltYXRpb24gPSB4LmV4dGVuZChjdCwgewogICAgICAgIHR3ZWVuZXJzOiB7CiAgICAgICAgICAgICIqIjogW2Z1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5jcmVhdGVUd2VlbihlLCB0KTsKICAgICAgICAgICAgICAgIHJldHVybiBzZShuLmVsZW0sIGUsIHRlLmV4ZWModCksIG4pLCBuCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwKICAgICAgICB0d2VlbmVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHAoZSkgPyAodCA9IGUsIGUgPSBbIioiXSkgOiBlID0gZS5tYXRjaChqKTsKICAgICAgICAgICAgZm9yICh2YXIgbiwgaSA9IDAsIHIgPSBlLmxlbmd0aDsgaSA8IHI7IGkrKykgbiA9IGVbaV0sIGN0LnR3ZWVuZXJzW25dID0gY3QudHdlZW5lcnNbbl0gfHwgW10sIGN0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCkKICAgICAgICB9LAogICAgICAgIHByZWZpbHRlcnM6IFtmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjLCB1LCBkID0gIndpZHRoIiBpbiB0IHx8ICJoZWlnaHQiIGluIHQsCiAgICAgICAgICAgICAgICBoID0gdGhpcywKICAgICAgICAgICAgICAgIGYgPSB7fSwKICAgICAgICAgICAgICAgIHAgPSBlLnN0eWxlLAogICAgICAgICAgICAgICAgZyA9IGUubm9kZVR5cGUgJiYgYWUoZSksCiAgICAgICAgICAgICAgICBtID0gRy5nZXQoZSwgImZ4c2hvdyIpOwogICAgICAgICAgICBmb3IgKGkgaW4gbi5xdWV1ZSB8fCAobnVsbCA9PSAoYSA9IHguX3F1ZXVlSG9va3MoZSwgImZ4IikpLnVucXVldWVkICYmIChhLnVucXVldWVkID0gMCwgcyA9IGEuZW1wdHkuZmlyZSwgYS5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYS51bnF1ZXVlZCB8fCBzKCkKICAgICAgICAgICAgICAgIH0pLCBhLnVucXVldWVkKyssIGguYWx3YXlzKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBoLmFsd2F5cygoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEudW5xdWV1ZWQtLSwgeC5xdWV1ZShlLCAiZngiKS5sZW5ndGggfHwgYS5lbXB0eS5maXJlKCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKSksIHQpCiAgICAgICAgICAgICAgICBpZiAociA9IHRbaV0sIGl0LnRlc3QocikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlIHRbaV0sIG8gPSBvIHx8ICJ0b2dnbGUiID09PSByLCByID09PSAoZyA/ICJoaWRlIiA6ICJzaG93IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzaG93IiAhPT0gciB8fCAhbSB8fCB2b2lkIDAgPT09IG1baV0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZltpXSA9IG0gJiYgbVtpXSB8fCB4LnN0eWxlKGUsIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgobCA9ICF4LmlzRW1wdHlPYmplY3QodCkpIHx8ICF4LmlzRW1wdHlPYmplY3QoZikpCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZCAmJiAxID09PSBlLm5vZGVUeXBlICYmIChuLm92ZXJmbG93ID0gW3Aub3ZlcmZsb3csIHAub3ZlcmZsb3dYLCBwLm92ZXJmbG93WV0sIG51bGwgPT0gKGMgPSBtICYmIG0uZGlzcGxheSkgJiYgKGMgPSBHLmdldChlLCAiZGlzcGxheSIpKSwgIm5vbmUiID09PSAodSA9IHguY3NzKGUsICJkaXNwbGF5IikpICYmIChjID8gdSA9IGMgOiAoY2UoW2VdLCAhMCksIGMgPSBlLnN0eWxlLmRpc3BsYXkgfHwgYywgdSA9IHguY3NzKGUsICJkaXNwbGF5IiksIGNlKFtlXSkpKSwgKCJpbmxpbmUiID09PSB1IHx8ICJpbmxpbmUtYmxvY2siID09PSB1ICYmIG51bGwgIT0gYykgJiYgIm5vbmUiID09PSB4LmNzcyhlLCAiZmxvYXQiKSAmJiAobCB8fCAoaC5kb25lKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcC5kaXNwbGF5ID0gYwogICAgICAgICAgICAgICAgICAgIH0pKSwgbnVsbCA9PSBjICYmICh1ID0gcC5kaXNwbGF5LCBjID0gIm5vbmUiID09PSB1ID8gIiIgOiB1KSksIHAuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siKSksIG4ub3ZlcmZsb3cgJiYgKHAub3ZlcmZsb3cgPSAiaGlkZGVuIiwgaC5hbHdheXMoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwLm92ZXJmbG93ID0gbi5vdmVyZmxvd1swXSwgcC5vdmVyZmxvd1ggPSBuLm92ZXJmbG93WzFdLCBwLm92ZXJmbG93WSA9IG4ub3ZlcmZsb3dbMl0KICAgICAgICAgICAgICAgICAgICB9KSkpLCBsID0gITEsIGYpIGwgfHwgKG0gPyAiaGlkZGVuIiBpbiBtICYmIChnID0gbS5oaWRkZW4pIDogbSA9IEcuYWNjZXNzKGUsICJmeHNob3ciLCB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYwogICAgICAgICAgICAgICAgfSksIG8gJiYgKG0uaGlkZGVuID0gIWcpLCBnICYmIGNlKFtlXSwgITApLCBoLmRvbmUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiBnIHx8IGNlKFtlXSksIEcucmVtb3ZlKGUsICJmeHNob3ciKSwgZikgeC5zdHlsZShlLCBpLCBmW2ldKQogICAgICAgICAgICAgICAgfSkpKSwgbCA9IGx0KGcgPyBtW2ldIDogMCwgaSwgaCksIGkgaW4gbSB8fCAobVtpXSA9IGwuc3RhcnQsIGcgJiYgKGwuZW5kID0gbC5zdGFydCwgbC5zdGFydCA9IDApKQogICAgICAgIH1dLAogICAgICAgIHByZWZpbHRlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB0ID8gY3QucHJlZmlsdGVycy51bnNoaWZ0KGUpIDogY3QucHJlZmlsdGVycy5wdXNoKGUpCiAgICAgICAgfQogICAgfSksIHguc3BlZWQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIGkgPSBlICYmICJvYmplY3QiID09IHR5cGVvZiBlID8geC5leHRlbmQoe30sIGUpIDogewogICAgICAgICAgICBjb21wbGV0ZTogbiB8fCAhbiAmJiB0IHx8IHAoZSkgJiYgZSwKICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgIGVhc2luZzogbiAmJiB0IHx8IHQgJiYgIXAodCkgJiYgdAogICAgICAgIH07CiAgICAgICAgcmV0dXJuIHguZngub2ZmID8gaS5kdXJhdGlvbiA9IDAgOiAibnVtYmVyIiAhPSB0eXBlb2YgaS5kdXJhdGlvbiAmJiAoaS5kdXJhdGlvbiBpbiB4LmZ4LnNwZWVkcyA/IGkuZHVyYXRpb24gPSB4LmZ4LnNwZWVkc1tpLmR1cmF0aW9uXSA6IGkuZHVyYXRpb24gPSB4LmZ4LnNwZWVkcy5fZGVmYXVsdCksIG51bGwgIT0gaS5xdWV1ZSAmJiAhMCAhPT0gaS5xdWV1ZSB8fCAoaS5xdWV1ZSA9ICJmeCIpLCBpLm9sZCA9IGkuY29tcGxldGUsIGkuY29tcGxldGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcChpLm9sZCkgJiYgaS5vbGQuY2FsbCh0aGlzKSwgaS5xdWV1ZSAmJiB4LmRlcXVldWUodGhpcywgaS5xdWV1ZSkKICAgICAgICB9LCBpCiAgICB9LCB4LmZuLmV4dGVuZCh7CiAgICAgICAgZmFkZVRvOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihhZSkuY3NzKCJvcGFjaXR5IiwgMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgb3BhY2l0eTogdAogICAgICAgICAgICB9LCBlLCBuLCBpKQogICAgICAgIH0sCiAgICAgICAgYW5pbWF0ZTogZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciA9IHguaXNFbXB0eU9iamVjdChlKSwKICAgICAgICAgICAgICAgIG8gPSB4LnNwZWVkKHQsIG4sIGkpLAogICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gY3QodGhpcywgeC5leHRlbmQoe30sIGUpLCBvKTsKICAgICAgICAgICAgICAgICAgICAociB8fCBHLmdldCh0aGlzLCAiZmluaXNoIikpICYmIHQuc3RvcCghMCkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiBhLmZpbmlzaCA9IGEsIHIgfHwgITEgPT09IG8ucXVldWUgPyB0aGlzLmVhY2goYSkgOiB0aGlzLnF1ZXVlKG8ucXVldWUsIGEpCiAgICAgICAgfSwKICAgICAgICBzdG9wOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0b3A7CiAgICAgICAgICAgICAgICBkZWxldGUgZS5zdG9wLCB0KG4pCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiAobiA9IHQsIHQgPSBlLCBlID0gdm9pZCAwKSwgdCAmJiB0aGlzLnF1ZXVlKGUgfHwgImZ4IiwgW10pLCB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAhMCwKICAgICAgICAgICAgICAgICAgICByID0gbnVsbCAhPSBlICYmIGUgKyAicXVldWVIb29rcyIsCiAgICAgICAgICAgICAgICAgICAgbyA9IHgudGltZXJzLAogICAgICAgICAgICAgICAgICAgIGEgPSBHLmdldCh0aGlzKTsKICAgICAgICAgICAgICAgIGlmIChyKSBhW3JdICYmIGFbcl0uc3RvcCAmJiBpKGFbcl0pOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBhKSBhW3JdICYmIGFbcl0uc3RvcCAmJiBydC50ZXN0KHIpICYmIGkoYVtyXSk7CiAgICAgICAgICAgICAgICBmb3IgKHIgPSBvLmxlbmd0aDsgci0tOykgb1tyXS5lbGVtICE9PSB0aGlzIHx8IG51bGwgIT0gZSAmJiBvW3JdLnF1ZXVlICE9PSBlIHx8IChvW3JdLmFuaW0uc3RvcChuKSwgdCA9ICExLCBvLnNwbGljZShyLCAxKSk7CiAgICAgICAgICAgICAgICAhdCAmJiBuIHx8IHguZGVxdWV1ZSh0aGlzLCBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGZpbmlzaDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gITEgIT09IGUgJiYgKGUgPSBlIHx8ICJmeCIpLCB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBHLmdldCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBpID0gbltlICsgInF1ZXVlIl0sCiAgICAgICAgICAgICAgICAgICAgciA9IG5bZSArICJxdWV1ZUhvb2tzIl0sCiAgICAgICAgICAgICAgICAgICAgbyA9IHgudGltZXJzLAogICAgICAgICAgICAgICAgICAgIGEgPSBpID8gaS5sZW5ndGggOiAwOwogICAgICAgICAgICAgICAgZm9yIChuLmZpbmlzaCA9ICEwLCB4LnF1ZXVlKHRoaXMsIGUsIFtdKSwgciAmJiByLnN0b3AgJiYgci5zdG9wLmNhbGwodGhpcywgITApLCB0ID0gby5sZW5ndGg7IHQtLTspIG9bdF0uZWxlbSA9PT0gdGhpcyAmJiBvW3RdLnF1ZXVlID09PSBlICYmIChvW3RdLmFuaW0uc3RvcCghMCksIG8uc3BsaWNlKHQsIDEpKTsKICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBhOyB0KyspIGlbdF0gJiYgaVt0XS5maW5pc2ggJiYgaVt0XS5maW5pc2guY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgIGRlbGV0ZSBuLmZpbmlzaAogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9KSwgeC5lYWNoKFsidG9nZ2xlIiwgInNob3ciLCAiaGlkZSJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuID0geC5mblt0XTsKICAgICAgICB4LmZuW3RdID0gZnVuY3Rpb24oZSwgaSwgcikgewogICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlIHx8ICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXMuYW5pbWF0ZShzdCh0LCAhMCksIGUsIGksIHIpCiAgICAgICAgfQogICAgfSkpLCB4LmVhY2goewogICAgICAgIHNsaWRlRG93bjogc3QoInNob3ciKSwKICAgICAgICBzbGlkZVVwOiBzdCgiaGlkZSIpLAogICAgICAgIHNsaWRlVG9nZ2xlOiBzdCgidG9nZ2xlIiksCiAgICAgICAgZmFkZUluOiB7CiAgICAgICAgICAgIG9wYWNpdHk6ICJzaG93IgogICAgICAgIH0sCiAgICAgICAgZmFkZU91dDogewogICAgICAgICAgICBvcGFjaXR5OiAiaGlkZSIKICAgICAgICB9LAogICAgICAgIGZhZGVUb2dnbGU6IHsKICAgICAgICAgICAgb3BhY2l0eTogInRvZ2dsZSIKICAgICAgICB9CiAgICB9LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHguZm5bZV0gPSBmdW5jdGlvbihlLCBuLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUodCwgZSwgbiwgaSkKICAgICAgICB9CiAgICB9KSksIHgudGltZXJzID0gW10sIHguZngudGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlLCB0ID0gMCwKICAgICAgICAgICAgbiA9IHgudGltZXJzOwogICAgICAgIGZvciAoSmUgPSBEYXRlLm5vdygpOyB0IDwgbi5sZW5ndGg7IHQrKykoZSA9IG5bdF0pKCkgfHwgblt0XSAhPT0gZSB8fCBuLnNwbGljZSh0LS0sIDEpOwogICAgICAgIG4ubGVuZ3RoIHx8IHguZnguc3RvcCgpLCBKZSA9IHZvaWQgMAogICAgfSwgeC5meC50aW1lciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB4LnRpbWVycy5wdXNoKGUpLCB4LmZ4LnN0YXJ0KCkKICAgIH0sIHguZnguaW50ZXJ2YWwgPSAxMywgeC5meC5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGV0IHx8IChldCA9ICEwLCBvdCgpKQogICAgfSwgeC5meC5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZXQgPSBudWxsCiAgICB9LCB4LmZ4LnNwZWVkcyA9IHsKICAgICAgICBzbG93OiA2MDAsCiAgICAgICAgZmFzdDogMjAwLAogICAgICAgIF9kZWZhdWx0OiA0MDAKICAgIH0sIHguZm4uZGVsYXkgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgcmV0dXJuIHQgPSB4LmZ4ICYmIHguZnguc3BlZWRzW3RdIHx8IHQsIG4gPSBuIHx8ICJmeCIsIHRoaXMucXVldWUobiwgKGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgdmFyIHIgPSBlLnNldFRpbWVvdXQobiwgdCk7CiAgICAgICAgICAgIGkuc3RvcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS5jbGVhclRpbWVvdXQocikKICAgICAgICAgICAgfQogICAgICAgIH0pKQogICAgfSwgdHQgPSBtLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksIG50ID0gbS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChtLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSwgdHQudHlwZSA9ICJjaGVja2JveCIsIGYuY2hlY2tPbiA9ICIiICE9PSB0dC52YWx1ZSwgZi5vcHRTZWxlY3RlZCA9IG50LnNlbGVjdGVkLCAodHQgPSBtLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlID0gInQiLCB0dC50eXBlID0gInJhZGlvIiwgZi5yYWRpb1ZhbHVlID0gInQiID09PSB0dC52YWx1ZTsKICAgIHZhciB1dCwgZHQgPSB4LmV4cHIuYXR0ckhhbmRsZTsKICAgIHguZm4uZXh0ZW5kKHsKICAgICAgICBhdHRyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBCKHRoaXMsIHguYXR0ciwgZSwgdCwgMSA8IGFyZ3VtZW50cy5sZW5ndGgpCiAgICAgICAgfSwKICAgICAgICByZW1vdmVBdHRyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgeC5yZW1vdmVBdHRyKHRoaXMsIGUpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0pLCB4LmV4dGVuZCh7CiAgICAgICAgYXR0cjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciwgbyA9IGUubm9kZVR5cGU7CiAgICAgICAgICAgIGlmICgzICE9PSBvICYmIDggIT09IG8gJiYgMiAhPT0gbykgcmV0dXJuIHZvaWQgMCA9PT0gZS5nZXRBdHRyaWJ1dGUgPyB4LnByb3AoZSwgdCwgbikgOiAoMSA9PT0gbyAmJiB4LmlzWE1MRG9jKGUpIHx8IChyID0geC5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXSB8fCAoeC5leHByLm1hdGNoLmJvb2wudGVzdCh0KSA/IHV0IDogdm9pZCAwKSksIHZvaWQgMCAhPT0gbiA/IG51bGwgPT09IG4gPyB2b2lkIHgucmVtb3ZlQXR0cihlLCB0KSA6IHIgJiYgInNldCIgaW4gciAmJiB2b2lkIDAgIT09IChpID0gci5zZXQoZSwgbiwgdCkpID8gaSA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IHIgJiYgImdldCIgaW4gciAmJiBudWxsICE9PSAoaSA9IHIuZ2V0KGUsIHQpKSA/IGkgOiBudWxsID09IChpID0geC5maW5kLmF0dHIoZSwgdCkpID8gdm9pZCAwIDogaSkKICAgICAgICB9LAogICAgICAgIGF0dHJIb29rczogewogICAgICAgICAgICB0eXBlOiB7CiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYucmFkaW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIEEoZSwgImlucHV0IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZW1vdmVBdHRyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpID0gMCwKICAgICAgICAgICAgICAgIHIgPSB0ICYmIHQubWF0Y2goaik7CiAgICAgICAgICAgIGlmIChyICYmIDEgPT09IGUubm9kZVR5cGUpCiAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IHJbaSsrXTspIGUucmVtb3ZlQXR0cmlidXRlKG4pCiAgICAgICAgfQogICAgfSksIHV0ID0gewogICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gITEgPT09IHQgPyB4LnJlbW92ZUF0dHIoZSwgbikgOiBlLnNldEF0dHJpYnV0ZShuLCBuKSwgbgogICAgICAgIH0KICAgIH0sIHguZWFjaCh4LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IGR0W3RdIHx8IHguZmluZC5hdHRyOwogICAgICAgIGR0W3RdID0gZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgICB2YXIgciwgbywgYSA9IHQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIGkgfHwgKG8gPSBkdFthXSwgZHRbYV0gPSByLCByID0gbnVsbCAhPSBuKGUsIHQsIGkpID8gYSA6IG51bGwsIGR0W2FdID0gbyksIHIKICAgICAgICB9CiAgICB9KSk7CiAgICB2YXIgaHQgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLAogICAgICAgIGZ0ID0gL14oPzphfGFyZWEpJC9pOwoKICAgIGZ1bmN0aW9uIHB0KGUpIHsKICAgICAgICByZXR1cm4gKGUubWF0Y2goaikgfHwgW10pLmpvaW4oIiAiKQogICAgfQoKICAgIGZ1bmN0aW9uIGd0KGUpIHsKICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUgJiYgZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwgIiIKICAgIH0KCiAgICBmdW5jdGlvbiBtdChlKSB7CiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgPyBlIDogInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgZS5tYXRjaChqKSB8fCBbXQogICAgfQogICAgeC5mbi5leHRlbmQoewogICAgICAgIHByb3A6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIEIodGhpcywgeC5wcm9wLCBlLCB0LCAxIDwgYXJndW1lbnRzLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgdGhpc1t4LnByb3BGaXhbZV0gfHwgZV0KICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfSksIHguZXh0ZW5kKHsKICAgICAgICBwcm9wOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvID0gZS5ub2RlVHlwZTsKICAgICAgICAgICAgaWYgKDMgIT09IG8gJiYgOCAhPT0gbyAmJiAyICE9PSBvKSByZXR1cm4gMSA9PT0gbyAmJiB4LmlzWE1MRG9jKGUpIHx8ICh0ID0geC5wcm9wRml4W3RdIHx8IHQsIHIgPSB4LnByb3BIb29rc1t0XSksIHZvaWQgMCAhPT0gbiA/IHIgJiYgInNldCIgaW4gciAmJiB2b2lkIDAgIT09IChpID0gci5zZXQoZSwgbiwgdCkpID8gaSA6IGVbdF0gPSBuIDogciAmJiAiZ2V0IiBpbiByICYmIG51bGwgIT09IChpID0gci5nZXQoZSwgdCkpID8gaSA6IGVbdF0KICAgICAgICB9LAogICAgICAgIHByb3BIb29rczogewogICAgICAgICAgICB0YWJJbmRleDogewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB4LmZpbmQuYXR0cihlLCAidGFiaW5kZXgiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IGh0LnRlc3QoZS5ub2RlTmFtZSkgfHwgZnQudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogLTEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcHJvcEZpeDogewogICAgICAgICAgICBmb3I6ICJodG1sRm9yIiwKICAgICAgICAgICAgY2xhc3M6ICJjbGFzc05hbWUiCiAgICAgICAgfQogICAgfSksIGYub3B0U2VsZWN0ZWQgfHwgKHgucHJvcEhvb2tzLnNlbGVjdGVkID0gewogICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCBudWxsCiAgICAgICAgfSwKICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHQgJiYgKHQuc2VsZWN0ZWRJbmRleCwgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KQogICAgICAgIH0KICAgIH0pLCB4LmVhY2goWyJ0YWJJbmRleCIsICJyZWFkT25seSIsICJtYXhMZW5ndGgiLCAiY2VsbFNwYWNpbmciLCAiY2VsbFBhZGRpbmciLCAicm93U3BhbiIsICJjb2xTcGFuIiwgInVzZU1hcCIsICJmcmFtZUJvcmRlciIsICJjb250ZW50RWRpdGFibGUiXSwgKGZ1bmN0aW9uKCkgewogICAgICAgIHgucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldID0gdGhpcwogICAgfSkpLCB4LmZuLmV4dGVuZCh7CiAgICAgICAgYWRkQ2xhc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwgPSAwOwogICAgICAgICAgICBpZiAocChlKSkgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgeCh0aGlzKS5hZGRDbGFzcyhlLmNhbGwodGhpcywgdCwgZ3QodGhpcykpKQogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGlmICgodCA9IG10KGUpKS5sZW5ndGgpCiAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IHRoaXNbbCsrXTspCiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBndChuKSwgaSA9IDEgPT09IG4ubm9kZVR5cGUgJiYgIiAiICsgcHQocikgKyAiICIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gMDsgbyA9IHRbYSsrXTspIGkuaW5kZXhPZigiICIgKyBvICsgIiAiKSA8IDAgJiYgKGkgKz0gbyArICIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgIT09IChzID0gcHQoaSkpICYmIG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsIHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sCiAgICAgICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwgPSAwOwogICAgICAgICAgICBpZiAocChlKSkgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgeCh0aGlzKS5yZW1vdmVDbGFzcyhlLmNhbGwodGhpcywgdCwgZ3QodGhpcykpKQogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCAiIik7CiAgICAgICAgICAgIGlmICgodCA9IG10KGUpKS5sZW5ndGgpCiAgICAgICAgICAgICAgICBmb3IgKDsgbiA9IHRoaXNbbCsrXTspCiAgICAgICAgICAgICAgICAgICAgaWYgKHIgPSBndChuKSwgaSA9IDEgPT09IG4ubm9kZVR5cGUgJiYgIiAiICsgcHQocikgKyAiICIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gMDsgbyA9IHRbYSsrXTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgLSAxIDwgaS5pbmRleE9mKCIgIiArIG8gKyAiICIpOykgaSA9IGkucmVwbGFjZSgiICIgKyBvICsgIiAiLCAiICIpOwogICAgICAgICAgICAgICAgICAgICAgICByICE9PSAocyA9IHB0KGkpKSAmJiBuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCBzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdHlwZW9mIGUsCiAgICAgICAgICAgICAgICBpID0gInN0cmluZyIgPT09IG4gfHwgQXJyYXkuaXNBcnJheShlKTsKICAgICAgICAgICAgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgdCAmJiBpID8gdCA/IHRoaXMuYWRkQ2xhc3MoZSkgOiB0aGlzLnJlbW92ZUNsYXNzKGUpIDogcChlKSA/IHRoaXMuZWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgeCh0aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcywgbiwgZ3QodGhpcyksIHQpLCB0KQogICAgICAgICAgICB9KSkgOiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQsIHIsIG8sIGE7CiAgICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBvID0geCh0aGlzKSwgYSA9IG10KGUpOyB0ID0gYVtyKytdOykgby5oYXNDbGFzcyh0KSA/IG8ucmVtb3ZlQ2xhc3ModCkgOiBvLmFkZENsYXNzKHQpOwogICAgICAgICAgICAgICAgZWxzZSB2b2lkIDAgIT09IGUgJiYgImJvb2xlYW4iICE9PSBuIHx8ICgodCA9IGd0KHRoaXMpKSAmJiBHLnNldCh0aGlzLCAiX19jbGFzc05hbWVfXyIsIHQpLCB0aGlzLnNldEF0dHJpYnV0ZSAmJiB0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCB0IHx8ICExID09PSBlID8gIiIgOiBHLmdldCh0aGlzLCAiX19jbGFzc05hbWVfXyIpIHx8ICIiKSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBoYXNDbGFzczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSA9IDA7CiAgICAgICAgICAgIGZvciAodCA9ICIgIiArIGUgKyAiICI7IG4gPSB0aGlzW2krK107KQogICAgICAgICAgICAgICAgaWYgKDEgPT09IG4ubm9kZVR5cGUgJiYgLTEgPCAoIiAiICsgcHQoZ3QobikpICsgIiAiKS5pbmRleE9mKHQpKSByZXR1cm4gITA7CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIHZ0ID0gL1xyL2c7CiAgICB4LmZuLmV4dGVuZCh7CiAgICAgICAgdmFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gdGhpc1swXTsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaSA9IHAoZSksIHRoaXMuZWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgdmFyIHI7CiAgICAgICAgICAgICAgICAxID09PSB0aGlzLm5vZGVUeXBlICYmIChudWxsID09IChyID0gaSA/IGUuY2FsbCh0aGlzLCBuLCB4KHRoaXMpLnZhbCgpKSA6IGUpID8gciA9ICIiIDogIm51bWJlciIgPT0gdHlwZW9mIHIgPyByICs9ICIiIDogQXJyYXkuaXNBcnJheShyKSAmJiAociA9IHgubWFwKHIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/ICIiIDogZSArICIiCiAgICAgICAgICAgICAgICB9KSkpLCAodCA9IHgudmFsSG9va3NbdGhpcy50eXBlXSB8fCB4LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pICYmICJzZXQiIGluIHQgJiYgdm9pZCAwICE9PSB0LnNldCh0aGlzLCByLCAidmFsdWUiKSB8fCAodGhpcy52YWx1ZSA9IHIpKQogICAgICAgICAgICB9KSkpIDogciA/ICh0ID0geC52YWxIb29rc1tyLnR5cGVdIHx8IHgudmFsSG9va3Nbci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgImdldCIgaW4gdCAmJiB2b2lkIDAgIT09IChuID0gdC5nZXQociwgInZhbHVlIikpID8gbiA6ICJzdHJpbmciID09IHR5cGVvZihuID0gci52YWx1ZSkgPyBuLnJlcGxhY2UodnQsICIiKSA6IG51bGwgPT0gbiA/ICIiIDogbiA6IHZvaWQgMAogICAgICAgIH0KICAgIH0pLCB4LmV4dGVuZCh7CiAgICAgICAgdmFsSG9va3M6IHsKICAgICAgICAgICAgb3B0aW9uOiB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHguZmluZC5hdHRyKGUsICJ2YWx1ZSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgPyB0IDogcHQoeC50ZXh0KGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZWxlY3Q6IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5zZWxlY3RlZEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gInNlbGVjdC1vbmUiID09PSBlLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhID8gbnVsbCA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYSA/IG8gKyAxIDogci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gbyA8IDAgPyBsIDogYSA/IG8gOiAwOyBpIDwgbDsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChuID0gcltpXSkuc2VsZWN0ZWQgfHwgaSA9PT0gbykgJiYgIW4uZGlzYWJsZWQgJiYgKCFuLnBhcmVudE5vZGUuZGlzYWJsZWQgfHwgIUEobi5wYXJlbnROb2RlLCAib3B0Z3JvdXAiKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0geChuKS52YWwoKSwgYSkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnB1c2godCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiwgaSwgciA9IGUub3B0aW9ucywgbyA9IHgubWFrZUFycmF5KHQpLCBhID0gci5sZW5ndGg7IGEtLTspKChpID0gclthXSkuc2VsZWN0ZWQgPSAtMSA8IHguaW5BcnJheSh4LnZhbEhvb2tzLm9wdGlvbi5nZXQoaSksIG8pKSAmJiAobiA9ICEwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgeC5lYWNoKFsicmFkaW8iLCAiY2hlY2tib3giXSwgKGZ1bmN0aW9uKCkgewogICAgICAgIHgudmFsSG9va3NbdGhpc10gPSB7CiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSAtMSA8IHguaW5BcnJheSh4KGUpLnZhbCgpLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfSwgZi5jaGVja09uIHx8ICh4LnZhbEhvb2tzW3RoaXNdLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpID8gIm9uIiA6IGUudmFsdWUKICAgICAgICB9KQogICAgfSkpLCBmLmZvY3VzaW4gPSAib25mb2N1c2luIiBpbiBlOwogICAgdmFyIHl0ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLAogICAgICAgIGJ0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgfTsKICAgIHguZXh0ZW5kKHguZXZlbnQsIHsKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbih0LCBuLCBpLCByKSB7CiAgICAgICAgICAgIHZhciBvLCBhLCBzLCBsLCBjLCBkLCBoLCBmLCB2ID0gW2kgfHwgbV0sCiAgICAgICAgICAgICAgICB5ID0gdS5jYWxsKHQsICJ0eXBlIikgPyB0LnR5cGUgOiB0LAogICAgICAgICAgICAgICAgYiA9IHUuY2FsbCh0LCAibmFtZXNwYWNlIikgPyB0Lm5hbWVzcGFjZS5zcGxpdCgiLiIpIDogW107CiAgICAgICAgICAgIGlmIChhID0gZiA9IHMgPSBpID0gaSB8fCBtLCAzICE9PSBpLm5vZGVUeXBlICYmIDggIT09IGkubm9kZVR5cGUgJiYgIXl0LnRlc3QoeSArIHguZXZlbnQudHJpZ2dlcmVkKSAmJiAoLTEgPCB5LmluZGV4T2YoIi4iKSAmJiAoeSA9IChiID0geS5zcGxpdCgiLiIpKS5zaGlmdCgpLCBiLnNvcnQoKSksIGMgPSB5LmluZGV4T2YoIjoiKSA8IDAgJiYgIm9uIiArIHksICh0ID0gdFt4LmV4cGFuZG9dID8gdCA6IG5ldyB4LkV2ZW50KHksICJvYmplY3QiID09IHR5cGVvZiB0ICYmIHQpKS5pc1RyaWdnZXIgPSByID8gMiA6IDMsIHQubmFtZXNwYWNlID0gYi5qb2luKCIuIiksIHQucm5hbWVzcGFjZSA9IHQubmFtZXNwYWNlID8gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBiLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIikgOiBudWxsLCB0LnJlc3VsdCA9IHZvaWQgMCwgdC50YXJnZXQgfHwgKHQudGFyZ2V0ID0gaSksIG4gPSBudWxsID09IG4gPyBbdF0gOiB4Lm1ha2VBcnJheShuLCBbdF0pLCBoID0geC5ldmVudC5zcGVjaWFsW3ldIHx8IHt9LCByIHx8ICFoLnRyaWdnZXIgfHwgITEgIT09IGgudHJpZ2dlci5hcHBseShpLCBuKSkpIHsKICAgICAgICAgICAgICAgIGlmICghciAmJiAhaC5ub0J1YmJsZSAmJiAhZyhpKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAobCA9IGguZGVsZWdhdGVUeXBlIHx8IHksIHl0LnRlc3QobCArIHkpIHx8IChhID0gYS5wYXJlbnROb2RlKTsgYTsgYSA9IGEucGFyZW50Tm9kZSkgdi5wdXNoKGEpLCBzID0gYTsKICAgICAgICAgICAgICAgICAgICBzID09PSAoaS5vd25lckRvY3VtZW50IHx8IG0pICYmIHYucHVzaChzLmRlZmF1bHRWaWV3IHx8IHMucGFyZW50V2luZG93IHx8IGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKG8gPSAwOwogICAgICAgICAgICAgICAgICAgIChhID0gdltvKytdKSAmJiAhdC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOykgZiA9IGEsIHQudHlwZSA9IDEgPCBvID8gbCA6IGguYmluZFR5cGUgfHwgeSwgKGQgPSAoRy5nZXQoYSwgImV2ZW50cyIpIHx8IE9iamVjdC5jcmVhdGUobnVsbCkpW3QudHlwZV0gJiYgRy5nZXQoYSwgImhhbmRsZSIpKSAmJiBkLmFwcGx5KGEsIG4pLCAoZCA9IGMgJiYgYVtjXSkgJiYgZC5hcHBseSAmJiBZKGEpICYmICh0LnJlc3VsdCA9IGQuYXBwbHkoYSwgbiksICExID09PSB0LnJlc3VsdCAmJiB0LnByZXZlbnREZWZhdWx0KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQudHlwZSA9IHksIHIgfHwgdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSB8fCBoLl9kZWZhdWx0ICYmICExICE9PSBoLl9kZWZhdWx0LmFwcGx5KHYucG9wKCksIG4pIHx8ICFZKGkpIHx8IGMgJiYgcChpW3ldKSAmJiAhZyhpKSAmJiAoKHMgPSBpW2NdKSAmJiAoaVtjXSA9IG51bGwpLCB4LmV2ZW50LnRyaWdnZXJlZCA9IHksIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBmLmFkZEV2ZW50TGlzdGVuZXIoeSwgYnQpLCBpW3ldKCksIHQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSAmJiBmLnJlbW92ZUV2ZW50TGlzdGVuZXIoeSwgYnQpLCB4LmV2ZW50LnRyaWdnZXJlZCA9IHZvaWQgMCwgcyAmJiAoaVtjXSA9IHMpKSwgdC5yZXN1bHQKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2ltdWxhdGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSB4LmV4dGVuZChuZXcgeC5FdmVudCwgbiwgewogICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgIGlzU2ltdWxhdGVkOiAhMAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgeC5ldmVudC50cmlnZ2VyKGksIG51bGwsIHQpCiAgICAgICAgfQogICAgfSksIHguZm4uZXh0ZW5kKHsKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgeC5ldmVudC50cmlnZ2VyKGUsIHQsIHRoaXMpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzWzBdOwogICAgICAgICAgICBpZiAobikgcmV0dXJuIHguZXZlbnQudHJpZ2dlcihlLCB0LCBuLCAhMCkKICAgICAgICB9CiAgICB9KSwgZi5mb2N1c2luIHx8IHguZWFjaCh7CiAgICAgICAgZm9jdXM6ICJmb2N1c2luIiwKICAgICAgICBibHVyOiAiZm9jdXNvdXQiCiAgICB9LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB4LmV2ZW50LnNpbXVsYXRlKHQsIGUudGFyZ2V0LCB4LmV2ZW50LmZpeChlKSkKICAgICAgICB9OwogICAgICAgIHguZXZlbnQuc3BlY2lhbFt0XSA9IHsKICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLAogICAgICAgICAgICAgICAgICAgIHIgPSBHLmFjY2VzcyhpLCB0KTsKICAgICAgICAgICAgICAgIHIgfHwgaS5hZGRFdmVudExpc3RlbmVyKGUsIG4sICEwKSwgRy5hY2Nlc3MoaSwgdCwgKHIgfHwgMCkgKyAxKQogICAgICAgICAgICB9LAogICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLmRvY3VtZW50IHx8IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgciA9IEcuYWNjZXNzKGksIHQpIC0gMTsKICAgICAgICAgICAgICAgIHIgPyBHLmFjY2VzcyhpLCB0LCByKSA6IChpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgbiwgITApLCBHLnJlbW92ZShpLCB0KSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pKTsKICAgIHZhciB3dCA9IGUubG9jYXRpb24sCiAgICAgICAgeHQgPSB7CiAgICAgICAgICAgIGd1aWQ6IERhdGUubm93KCkKICAgICAgICB9LAogICAgICAgIF90ID0gL1w/LzsKICAgIHgucGFyc2VYTUwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIG4sIGk7CiAgICAgICAgaWYgKCF0IHx8ICJzdHJpbmciICE9IHR5cGVvZiB0KSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkgewogICAgICAgICAgICBuID0gKG5ldyBlLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHQsICJ0ZXh0L3htbCIpCiAgICAgICAgfSBjYXRjaCAodCkge30KICAgICAgICByZXR1cm4gaSA9IG4gJiYgbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKVswXSwgbiAmJiAhaSB8fCB4LmVycm9yKCJJbnZhbGlkIFhNTDogIiArIChpID8geC5tYXAoaS5jaGlsZE5vZGVzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZS50ZXh0Q29udGVudAogICAgICAgIH0pKS5qb2luKCJcbiIpIDogdCkpLCBuCiAgICB9OwogICAgdmFyIFN0ID0gL1xbXF0kLywKICAgICAgICBDdCA9IC9ccj9cbi9nLAogICAgICAgIGt0ID0gL14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLAogICAgICAgIFR0ID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOwoKICAgIGZ1bmN0aW9uIEF0KGUsIHQsIG4sIGkpIHsKICAgICAgICB2YXIgcjsKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0KSkgeC5lYWNoKHQsIChmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgIG4gfHwgU3QudGVzdChlKSA/IGkoZSwgcikgOiBBdChlICsgIlsiICsgKCJvYmplY3QiID09IHR5cGVvZiByICYmIG51bGwgIT0gciA/IHQgOiAiIikgKyAiXSIsIHIsIG4sIGkpCiAgICAgICAgfSkpOwogICAgICAgIGVsc2UgaWYgKG4gfHwgIm9iamVjdCIgIT09IGIodCkpIGkoZSwgdCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHIgaW4gdCkgQXQoZSArICJbIiArIHIgKyAiXSIsIHRbcl0sIG4sIGkpCiAgICB9CiAgICB4LnBhcmFtID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuLCBpID0gW10sCiAgICAgICAgICAgIHIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHAodCkgPyB0KCkgOiB0OwogICAgICAgICAgICAgICAgaVtpLmxlbmd0aF0gPSBlbmNvZGVVUklDb21wb25lbnQoZSkgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQobnVsbCA9PSBuID8gIiIgOiBuKQogICAgICAgICAgICB9OwogICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiAiIjsKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSB8fCBlLmpxdWVyeSAmJiAheC5pc1BsYWluT2JqZWN0KGUpKSB4LmVhY2goZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByKHRoaXMubmFtZSwgdGhpcy52YWx1ZSkKICAgICAgICB9KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKG4gaW4gZSkgQXQobiwgZVtuXSwgdCwgcik7CiAgICAgICAgcmV0dXJuIGkuam9pbigiJiIpCiAgICB9LCB4LmZuLmV4dGVuZCh7CiAgICAgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHgucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQogICAgICAgIH0sCiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB4LnByb3AodGhpcywgImVsZW1lbnRzIik7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IHgubWFrZUFycmF5KGUpIDogdGhpcwogICAgICAgICAgICB9KSkuZmlsdGVyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy50eXBlOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSAmJiAheCh0aGlzKS5pcygiOmRpc2FibGVkIikgJiYgVHQudGVzdCh0aGlzLm5vZGVOYW1lKSAmJiAha3QudGVzdChlKSAmJiAodGhpcy5jaGVja2VkIHx8ICFoZS50ZXN0KGUpKQogICAgICAgICAgICB9KSkubWFwKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHgodGhpcykudmFsKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBuID8gbnVsbCA6IEFycmF5LmlzQXJyYXkobikgPyB4Lm1hcChuLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHQubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUucmVwbGFjZShDdCwgIlxyXG4iKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKSA6IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiB0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG4ucmVwbGFjZShDdCwgIlxyXG4iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkuZ2V0KCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBFdCA9IC8lMjAvZywKICAgICAgICBEdCA9IC8jLiokLywKICAgICAgICBPdCA9IC8oWz8mXSlfPVteJl0qLywKICAgICAgICBNdCA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sCiAgICAgICAgSXQgPSAvXig/OkdFVHxIRUFEKSQvLAogICAgICAgIEx0ID0gL15cL1wvLywKICAgICAgICBQdCA9IHt9LAogICAgICAgIGp0ID0ge30sCiAgICAgICAgTnQgPSAiKi8iLmNvbmNhdCgiKiIpLAogICAgICAgIEZ0ID0gbS5jcmVhdGVFbGVtZW50KCJhIik7CgogICAgZnVuY3Rpb24gUnQoZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICJzdHJpbmciICE9IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9ICIqIik7CiAgICAgICAgICAgIHZhciBpLCByID0gMCwKICAgICAgICAgICAgICAgIG8gPSB0LnRvTG93ZXJDYXNlKCkubWF0Y2goaikgfHwgW107CiAgICAgICAgICAgIGlmIChwKG4pKQogICAgICAgICAgICAgICAgZm9yICg7IGkgPSBvW3IrK107KSAiKyIgPT09IGlbMF0gPyAoaSA9IGkuc2xpY2UoMSkgfHwgIioiLCAoZVtpXSA9IGVbaV0gfHwgW10pLnVuc2hpZnQobikpIDogKGVbaV0gPSBlW2ldIHx8IFtdKS5wdXNoKG4pCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uICR0KGUsIHQsIG4sIGkpIHsKICAgICAgICB2YXIgciA9IHt9LAogICAgICAgICAgICBvID0gZSA9PT0ganQ7CgogICAgICAgIGZ1bmN0aW9uIGEocykgewogICAgICAgICAgICB2YXIgbDsKICAgICAgICAgICAgcmV0dXJuIHJbc10gPSAhMCwgeC5lYWNoKGVbc10gfHwgW10sIChmdW5jdGlvbihlLCBzKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IHModCwgbiwgaSk7CiAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIGMgfHwgbyB8fCByW2NdID8gbyA/ICEobCA9IGMpIDogdm9pZCAwIDogKHQuZGF0YVR5cGVzLnVuc2hpZnQoYyksIGEoYyksICExKQogICAgICAgICAgICB9KSksIGwKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGEodC5kYXRhVHlwZXNbMF0pIHx8ICFyWyIqIl0gJiYgYSgiKiIpCiAgICB9CgogICAgZnVuY3Rpb24genQoZSwgdCkgewogICAgICAgIHZhciBuLCBpLCByID0geC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307CiAgICAgICAgZm9yIChuIGluIHQpIHZvaWQgMCAhPT0gdFtuXSAmJiAoKHJbbl0gPyBlIDogaSB8fCAoaSA9IHt9KSlbbl0gPSB0W25dKTsKICAgICAgICByZXR1cm4gaSAmJiB4LmV4dGVuZCghMCwgZSwgaSksIGUKICAgIH0KICAgIEZ0LmhyZWYgPSB3dC5ocmVmLCB4LmV4dGVuZCh7CiAgICAgICAgYWN0aXZlOiAwLAogICAgICAgIGxhc3RNb2RpZmllZDoge30sCiAgICAgICAgZXRhZzoge30sCiAgICAgICAgYWpheFNldHRpbmdzOiB7CiAgICAgICAgICAgIHVybDogd3QuaHJlZiwKICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAgICAgIGlzTG9jYWw6IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3Qod3QucHJvdG9jb2wpLAogICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICBwcm9jZXNzRGF0YTogITAsCiAgICAgICAgICAgIGFzeW5jOiAhMCwKICAgICAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLAogICAgICAgICAgICBhY2NlcHRzOiB7CiAgICAgICAgICAgICAgICAiKiI6IE50LAogICAgICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4iLAogICAgICAgICAgICAgICAgaHRtbDogInRleHQvaHRtbCIsCiAgICAgICAgICAgICAgICB4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKICAgICAgICAgICAgICAgIGpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbnRlbnRzOiB7CiAgICAgICAgICAgICAgICB4bWw6IC9cYnhtbFxiLywKICAgICAgICAgICAgICAgIGh0bWw6IC9cYmh0bWwvLAogICAgICAgICAgICAgICAganNvbjogL1xianNvblxiLwogICAgICAgICAgICB9LAogICAgICAgICAgICByZXNwb25zZUZpZWxkczogewogICAgICAgICAgICAgICAgeG1sOiAicmVzcG9uc2VYTUwiLAogICAgICAgICAgICAgICAgdGV4dDogInJlc3BvbnNlVGV4dCIsCiAgICAgICAgICAgICAgICBqc29uOiAicmVzcG9uc2VKU09OIgogICAgICAgICAgICB9LAogICAgICAgICAgICBjb252ZXJ0ZXJzOiB7CiAgICAgICAgICAgICAgICAiKiB0ZXh0IjogU3RyaW5nLAogICAgICAgICAgICAgICAgInRleHQgaHRtbCI6ICEwLAogICAgICAgICAgICAgICAgInRleHQganNvbiI6IEpTT04ucGFyc2UsCiAgICAgICAgICAgICAgICAidGV4dCB4bWwiOiB4LnBhcnNlWE1MCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsYXRPcHRpb25zOiB7CiAgICAgICAgICAgICAgICB1cmw6ICEwLAogICAgICAgICAgICAgICAgY29udGV4dDogITAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYWpheFNldHVwOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0ID8genQoenQoZSwgeC5hamF4U2V0dGluZ3MpLCB0KSA6IHp0KHguYWpheFNldHRpbmdzLCBlKQogICAgICAgIH0sCiAgICAgICAgYWpheFByZWZpbHRlcjogUnQoUHQpLAogICAgICAgIGFqYXhUcmFuc3BvcnQ6IFJ0KGp0KSwKICAgICAgICBhamF4OiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9IHZvaWQgMCksIG4gPSBuIHx8IHt9OwogICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcywgbCwgYywgdSwgZCwgaCwgZiA9IHguYWpheFNldHVwKHt9LCBuKSwKICAgICAgICAgICAgICAgIHAgPSBmLmNvbnRleHQgfHwgZiwKICAgICAgICAgICAgICAgIGcgPSBmLmNvbnRleHQgJiYgKHAubm9kZVR5cGUgfHwgcC5qcXVlcnkpID8geChwKSA6IHguZXZlbnQsCiAgICAgICAgICAgICAgICB2ID0geC5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgeSA9IHguQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLAogICAgICAgICAgICAgICAgYiA9IGYuc3RhdHVzQ29kZSB8fCB7fSwKICAgICAgICAgICAgICAgIHcgPSB7fSwKICAgICAgICAgICAgICAgIF8gPSB7fSwKICAgICAgICAgICAgICAgIFMgPSAiY2FuY2VsZWQiLAogICAgICAgICAgICAgICAgQyA9IHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiAwLAogICAgICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IHt9OyB0ID0gTXQuZXhlYyhvKTspIGFbdFsxXS50b0xvd2VyQ2FzZSgpICsgIiAiXSA9IChhW3RbMV0udG9Mb3dlckNhc2UoKSArICIgIl0gfHwgW10pLmNvbmNhdCh0WzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhW2UudG9Mb3dlckNhc2UoKSArICIgIl0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gbnVsbCA6IHQuam9pbigiLCAiKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMgPyBvIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBjICYmIChlID0gX1tlLnRvTG93ZXJDYXNlKCldID0gX1tlLnRvTG93ZXJDYXNlKCldIHx8IGUsIHdbZV0gPSB0KSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBjICYmIChmLm1pbWVUeXBlID0gZSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMpIEMuYWx3YXlzKGVbQy5zdGF0dXNdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gZSkgYlt0XSA9IFtiW3RdLCBlW3RdXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSB8fCBTOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiBpLmFib3J0KHQpLCBrKDAsIHQpLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHYucHJvbWlzZShDKSwgZi51cmwgPSAoKHQgfHwgZi51cmwgfHwgd3QuaHJlZikgKyAiIikucmVwbGFjZShMdCwgd3QucHJvdG9jb2wgKyAiLy8iKSwgZi50eXBlID0gbi5tZXRob2QgfHwgbi50eXBlIHx8IGYubWV0aG9kIHx8IGYudHlwZSwgZi5kYXRhVHlwZXMgPSAoZi5kYXRhVHlwZSB8fCAiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goaikgfHwgWyIiXSwgbnVsbCA9PSBmLmNyb3NzRG9tYWluKSB7CiAgICAgICAgICAgICAgICBsID0gbS5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGwuaHJlZiA9IGYudXJsLCBsLmhyZWYgPSBsLmhyZWYsIGYuY3Jvc3NEb21haW4gPSBGdC5wcm90b2NvbCArICIvLyIgKyBGdC5ob3N0ICE9IGwucHJvdG9jb2wgKyAiLy8iICsgbC5ob3N0CiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgZi5jcm9zc0RvbWFpbiA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGYuZGF0YSAmJiBmLnByb2Nlc3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiBmLmRhdGEgJiYgKGYuZGF0YSA9IHgucGFyYW0oZi5kYXRhLCBmLnRyYWRpdGlvbmFsKSksICR0KFB0LCBmLCBuLCBDKSwgYykgcmV0dXJuIEM7CiAgICAgICAgICAgIGZvciAoZCBpbiAodSA9IHguZXZlbnQgJiYgZi5nbG9iYWwpICYmIDAgPT0geC5hY3RpdmUrKyAmJiB4LmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLCBmLnR5cGUgPSBmLnR5cGUudG9VcHBlckNhc2UoKSwgZi5oYXNDb250ZW50ID0gIUl0LnRlc3QoZi50eXBlKSwgciA9IGYudXJsLnJlcGxhY2UoRHQsICIiKSwgZi5oYXNDb250ZW50ID8gZi5kYXRhICYmIGYucHJvY2Vzc0RhdGEgJiYgMCA9PT0gKGYuY29udGVudFR5cGUgfHwgIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIChmLmRhdGEgPSBmLmRhdGEucmVwbGFjZShFdCwgIisiKSkgOiAoaCA9IGYudXJsLnNsaWNlKHIubGVuZ3RoKSwgZi5kYXRhICYmIChmLnByb2Nlc3NEYXRhIHx8ICJzdHJpbmciID09IHR5cGVvZiBmLmRhdGEpICYmIChyICs9IChfdC50ZXN0KHIpID8gIiYiIDogIj8iKSArIGYuZGF0YSwgZGVsZXRlIGYuZGF0YSksICExID09PSBmLmNhY2hlICYmIChyID0gci5yZXBsYWNlKE90LCAiJDEiKSwgaCA9IChfdC50ZXN0KHIpID8gIiYiIDogIj8iKSArICJfPSIgKyB4dC5ndWlkKysgKyBoKSwgZi51cmwgPSByICsgaCksIGYuaWZNb2RpZmllZCAmJiAoeC5sYXN0TW9kaWZpZWRbcl0gJiYgQy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIHgubGFzdE1vZGlmaWVkW3JdKSwgeC5ldGFnW3JdICYmIEMuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIHguZXRhZ1tyXSkpLCAoZi5kYXRhICYmIGYuaGFzQ29udGVudCAmJiAhMSAhPT0gZi5jb250ZW50VHlwZSB8fCBuLmNvbnRlbnRUeXBlKSAmJiBDLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIGYuY29udGVudFR5cGUpLCBDLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIGYuZGF0YVR5cGVzWzBdICYmIGYuYWNjZXB0c1tmLmRhdGFUeXBlc1swXV0gPyBmLmFjY2VwdHNbZi5kYXRhVHlwZXNbMF1dICsgKCIqIiAhPT0gZi5kYXRhVHlwZXNbMF0gPyAiLCAiICsgTnQgKyAiOyBxPTAuMDEiIDogIiIpIDogZi5hY2NlcHRzWyIqIl0pLCBmLmhlYWRlcnMpIEMuc2V0UmVxdWVzdEhlYWRlcihkLCBmLmhlYWRlcnNbZF0pOwogICAgICAgICAgICBpZiAoZi5iZWZvcmVTZW5kICYmICghMSA9PT0gZi5iZWZvcmVTZW5kLmNhbGwocCwgQywgZikgfHwgYykpIHJldHVybiBDLmFib3J0KCk7CiAgICAgICAgICAgIGlmIChTID0gImFib3J0IiwgeS5hZGQoZi5jb21wbGV0ZSksIEMuZG9uZShmLnN1Y2Nlc3MpLCBDLmZhaWwoZi5lcnJvciksIGkgPSAkdChqdCwgZiwgbiwgQykpIHsKICAgICAgICAgICAgICAgIGlmIChDLnJlYWR5U3RhdGUgPSAxLCB1ICYmIGcudHJpZ2dlcigiYWpheFNlbmQiLCBbQywgZl0pLCBjKSByZXR1cm4gQzsKICAgICAgICAgICAgICAgIGYuYXN5bmMgJiYgMCA8IGYudGltZW91dCAmJiAocyA9IGUuc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgQy5hYm9ydCgidGltZW91dCIpCiAgICAgICAgICAgICAgICB9KSwgZi50aW1lb3V0KSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGMgPSAhMSwgaS5zZW5kKHcsIGspCiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHRocm93IHQ7CiAgICAgICAgICAgICAgICAgICAgaygtMSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGsoLTEsICJObyBUcmFuc3BvcnQiKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGsodCwgbiwgYSwgbCkgewogICAgICAgICAgICAgICAgdmFyIGQsIGgsIG0sIHcsIF8sIFMgPSBuOwogICAgICAgICAgICAgICAgYyB8fCAoYyA9ICEwLCBzICYmIGUuY2xlYXJUaW1lb3V0KHMpLCBpID0gdm9pZCAwLCBvID0gbCB8fCAiIiwgQy5yZWFkeVN0YXRlID0gMCA8IHQgPyA0IDogMCwgZCA9IDIwMCA8PSB0ICYmIHQgPCAzMDAgfHwgMzA0ID09PSB0LCBhICYmICh3ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGksIHIsIG8sIGEsIHMgPSBlLmNvbnRlbnRzLCBsID0gZS5kYXRhVHlwZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICIqIiA9PT0gbFswXTspIGwuc2hpZnQoKSwgdm9pZCAwID09PSBpICYmIChpID0gZS5taW1lVHlwZSB8fCB0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbcl0gJiYgc1tyXS50ZXN0KGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC51bnNoaWZ0KHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGxbMF0gaW4gbikgbyA9IGxbMF07CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxbMF0gfHwgZS5jb252ZXJ0ZXJzW3IgKyAiICIgKyBsWzBdXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHx8IChhID0gcikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvID0gbyB8fCBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvKSByZXR1cm4gbyAhPT0gbFswXSAmJiBsLnVuc2hpZnQobyksIG5bb10KICAgICAgICAgICAgICAgIH0oZiwgQywgYSkpLCAhZCAmJiAtMSA8IHguaW5BcnJheSgic2NyaXB0IiwgZi5kYXRhVHlwZXMpICYmIHguaW5BcnJheSgianNvbiIsIGYuZGF0YVR5cGVzKSA8IDAgJiYgKGYuY29udmVydGVyc1sidGV4dCBzY3JpcHQiXSA9IGZ1bmN0aW9uKCkge30pLCB3ID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBhLCBzLCBsLCBjID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBlLmRhdGFUeXBlcy5zbGljZSgpOwogICAgICAgICAgICAgICAgICAgIGlmICh1WzFdKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGEgaW4gZS5jb252ZXJ0ZXJzKSBjW2EudG9Mb3dlckNhc2UoKV0gPSBlLmNvbnZlcnRlcnNbYV07CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gdS5zaGlmdCgpOyBvOykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VGaWVsZHNbb10gJiYgKG5bZS5yZXNwb25zZUZpZWxkc1tvXV0gPSB0KSwgIWwgJiYgaSAmJiBlLmRhdGFGaWx0ZXIgJiYgKHQgPSBlLmRhdGFGaWx0ZXIodCwgZS5kYXRhVHlwZSkpLCBsID0gbywgbyA9IHUuc2hpZnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiKiIgPT09IG8pIG8gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIioiICE9PSBsICYmIGwgIT09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYSA9IGNbbCArICIgIiArIG9dIHx8IGNbIiogIiArIG9dKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociBpbiBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocyA9IHIuc3BsaXQoIiAiKSlbMV0gPT09IG8gJiYgKGEgPSBjW2wgKyAiICIgKyBzWzBdXSB8fCBjWyIqICIgKyBzWzBdXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITAgPT09IGEgPyBhID0gY1tyXSA6ICEwICE9PSBjW3JdICYmIChvID0gc1swXSwgdS51bnNoaWZ0KHNbMV0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghMCAhPT0gYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhICYmIGUudGhyb3dzKSB0ID0gYSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gYSh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiAicGFyc2VyZXJyb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogYSA/IGUgOiAiTm8gY29udmVyc2lvbiBmcm9tICIgKyBsICsgIiB0byAiICsgbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJzdWNjZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oZiwgdywgQywgZCksIGQgPyAoZi5pZk1vZGlmaWVkICYmICgoXyA9IEMuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkgJiYgKHgubGFzdE1vZGlmaWVkW3JdID0gXyksIChfID0gQy5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSAmJiAoeC5ldGFnW3JdID0gXykpLCAyMDQgPT09IHQgfHwgIkhFQUQiID09PSBmLnR5cGUgPyBTID0gIm5vY29udGVudCIgOiAzMDQgPT09IHQgPyBTID0gIm5vdG1vZGlmaWVkIiA6IChTID0gdy5zdGF0ZSwgaCA9IHcuZGF0YSwgZCA9ICEobSA9IHcuZXJyb3IpKSkgOiAobSA9IFMsICF0ICYmIFMgfHwgKFMgPSAiZXJyb3IiLCB0IDwgMCAmJiAodCA9IDApKSksIEMuc3RhdHVzID0gdCwgQy5zdGF0dXNUZXh0ID0gKG4gfHwgUykgKyAiIiwgZCA/IHYucmVzb2x2ZVdpdGgocCwgW2gsIFMsIENdKSA6IHYucmVqZWN0V2l0aChwLCBbQywgUywgbV0pLCBDLnN0YXR1c0NvZGUoYiksIGIgPSB2b2lkIDAsIHUgJiYgZy50cmlnZ2VyKGQgPyAiYWpheFN1Y2Nlc3MiIDogImFqYXhFcnJvciIsIFtDLCBmLCBkID8gaCA6IG1dKSwgeS5maXJlV2l0aChwLCBbQywgU10pLCB1ICYmIChnLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsIFtDLCBmXSksIC0teC5hY3RpdmUgfHwgeC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gQwogICAgICAgIH0sCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4geC5nZXQoZSwgdCwgbiwgImpzb24iKQogICAgICAgIH0sCiAgICAgICAgZ2V0U2NyaXB0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB4LmdldChlLCB2b2lkIDAsIHQsICJzY3JpcHQiKQogICAgICAgIH0KICAgIH0pLCB4LmVhY2goWyJnZXQiLCAicG9zdCJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHhbdF0gPSBmdW5jdGlvbihlLCBuLCBpLCByKSB7CiAgICAgICAgICAgIHJldHVybiBwKG4pICYmIChyID0gciB8fCBpLCBpID0gbiwgbiA9IHZvaWQgMCksIHguYWpheCh4LmV4dGVuZCh7CiAgICAgICAgICAgICAgICB1cmw6IGUsCiAgICAgICAgICAgICAgICB0eXBlOiB0LAogICAgICAgICAgICAgICAgZGF0YVR5cGU6IHIsCiAgICAgICAgICAgICAgICBkYXRhOiBuLAogICAgICAgICAgICAgICAgc3VjY2VzczogaQogICAgICAgICAgICB9LCB4LmlzUGxhaW5PYmplY3QoZSkgJiYgZSkpCiAgICAgICAgfQogICAgfSkpLCB4LmFqYXhQcmVmaWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdDsKICAgICAgICBmb3IgKHQgaW4gZS5oZWFkZXJzKSAiY29udGVudC10eXBlIiA9PT0gdC50b0xvd2VyQ2FzZSgpICYmIChlLmNvbnRlbnRUeXBlID0gZS5oZWFkZXJzW3RdIHx8ICIiKQogICAgfSkpLCB4Ll9ldmFsVXJsID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiB4LmFqYXgoewogICAgICAgICAgICB1cmw6IGUsCiAgICAgICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGNhY2hlOiAhMCwKICAgICAgICAgICAgYXN5bmM6ICExLAogICAgICAgICAgICBnbG9iYWw6ICExLAogICAgICAgICAgICBjb252ZXJ0ZXJzOiB7CiAgICAgICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbigpIHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhdGFGaWx0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHguZ2xvYmFsRXZhbChlLCB0LCBuKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIHguZm4uZXh0ZW5kKHsKICAgICAgICB3cmFwQWxsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0OwogICAgICAgICAgICByZXR1cm4gdGhpc1swXSAmJiAocChlKSAmJiAoZSA9IGUuY2FsbCh0aGlzWzBdKSksIHQgPSB4KGUsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLCB0aGlzWzBdLnBhcmVudE5vZGUgJiYgdC5pbnNlcnRCZWZvcmUodGhpc1swXSksIHQubWFwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzOyBlLmZpcnN0RWxlbWVudENoaWxkOykgZSA9IGUuZmlyc3RFbGVtZW50Q2hpbGQ7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9KSkuYXBwZW5kKHRoaXMpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgd3JhcElubmVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBwKGUpID8gdGhpcy5lYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB4KHRoaXMpLndyYXBJbm5lcihlLmNhbGwodGhpcywgdCkpCiAgICAgICAgICAgIH0pKSA6IHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHgodGhpcyksCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuY29udGVudHMoKTsKICAgICAgICAgICAgICAgIG4ubGVuZ3RoID8gbi53cmFwQWxsKGUpIDogdC5hcHBlbmQoZSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICB3cmFwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gcChlKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgeCh0aGlzKS53cmFwQWxsKHQgPyBlLmNhbGwodGhpcywgbikgOiBlKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHVud3JhcDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB4KHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2RlcykKICAgICAgICAgICAgfSkpLCB0aGlzCiAgICAgICAgfQogICAgfSksIHguZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gIXguZXhwci5wc2V1ZG9zLnZpc2libGUoZSkKICAgIH0sIHguZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuICEhKGUub2Zmc2V0V2lkdGggfHwgZS5vZmZzZXRIZWlnaHQgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkKICAgIH0sIHguYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgZS5YTUxIdHRwUmVxdWVzdAogICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICB9OwogICAgdmFyIEh0ID0gewogICAgICAgICAgICAwOiAyMDAsCiAgICAgICAgICAgIDEyMjM6IDIwNAogICAgICAgIH0sCiAgICAgICAgQnQgPSB4LmFqYXhTZXR0aW5ncy54aHIoKTsKICAgIGYuY29ycyA9ICEhQnQgJiYgIndpdGhDcmVkZW50aWFscyIgaW4gQnQsIGYuYWpheCA9IEJ0ID0gISFCdCwgeC5hamF4VHJhbnNwb3J0KChmdW5jdGlvbih0KSB7CiAgICAgICAgdmFyIG4sIGk7CiAgICAgICAgaWYgKGYuY29ycyB8fCBCdCAmJiAhdC5jcm9zc0RvbWFpbikgcmV0dXJuIHsKICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24ociwgbykgewogICAgICAgICAgICAgICAgdmFyIGEsIHMgPSB0LnhocigpOwogICAgICAgICAgICAgICAgaWYgKHMub3Blbih0LnR5cGUsIHQudXJsLCB0LmFzeW5jLCB0LnVzZXJuYW1lLCB0LnBhc3N3b3JkKSwgdC54aHJGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgZm9yIChhIGluIHQueGhyRmllbGRzKSBzW2FdID0gdC54aHJGaWVsZHNbYV07CiAgICAgICAgICAgICAgICBmb3IgKGEgaW4gdC5taW1lVHlwZSAmJiBzLm92ZXJyaWRlTWltZVR5cGUgJiYgcy5vdmVycmlkZU1pbWVUeXBlKHQubWltZVR5cGUpLCB0LmNyb3NzRG9tYWluIHx8IHJbIlgtUmVxdWVzdGVkLVdpdGgiXSB8fCAoclsiWC1SZXF1ZXN0ZWQtV2l0aCJdID0gIlhNTEh0dHBSZXF1ZXN0IiksIHIpIHMuc2V0UmVxdWVzdEhlYWRlcihhLCByW2FdKTsKICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuICYmIChuID0gaSA9IHMub25sb2FkID0gcy5vbmVycm9yID0gcy5vbmFib3J0ID0gcy5vbnRpbWVvdXQgPSBzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGwsICJhYm9ydCIgPT09IGUgPyBzLmFib3J0KCkgOiAiZXJyb3IiID09PSBlID8gIm51bWJlciIgIT0gdHlwZW9mIHMuc3RhdHVzID8gbygwLCAiZXJyb3IiKSA6IG8ocy5zdGF0dXMsIHMuc3RhdHVzVGV4dCkgOiBvKEh0W3Muc3RhdHVzXSB8fCBzLnN0YXR1cywgcy5zdGF0dXNUZXh0LCAidGV4dCIgIT09IChzLnJlc3BvbnNlVHlwZSB8fCAidGV4dCIpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBzLnJlc3BvbnNlVGV4dCA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeTogcy5yZXNwb25zZQogICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogcy5yZXNwb25zZVRleHQKICAgICAgICAgICAgICAgICAgICAgICAgfSwgcy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgcy5vbmxvYWQgPSBuKCksIGkgPSBzLm9uZXJyb3IgPSBzLm9udGltZW91dCA9IG4oImVycm9yIiksIHZvaWQgMCAhPT0gcy5vbmFib3J0ID8gcy5vbmFib3J0ID0gaSA6IHMub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgNCA9PT0gcy5yZWFkeVN0YXRlICYmIGUuc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgaSgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBuID0gbigiYWJvcnQiKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcy5zZW5kKHQuaGFzQ29udGVudCAmJiB0LmRhdGEgfHwgbnVsbCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobikgdGhyb3cgcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuICYmIG4oKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkpLCB4LmFqYXhQcmVmaWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLmNyb3NzRG9tYWluICYmIChlLmNvbnRlbnRzLnNjcmlwdCA9ICExKQogICAgfSkpLCB4LmFqYXhTZXR1cCh7CiAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIKICAgICAgICB9LAogICAgICAgIGNvbnRlbnRzOiB7CiAgICAgICAgICAgIHNjcmlwdDogL1xiKD86amF2YXxlY21hKXNjcmlwdFxiLwogICAgICAgIH0sCiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAidGV4dCBzY3JpcHQiOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geC5nbG9iYWxFdmFsKGUpLCBlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwgeC5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLCAoZnVuY3Rpb24oZSkgewogICAgICAgIHZvaWQgMCA9PT0gZS5jYWNoZSAmJiAoZS5jYWNoZSA9ICExKSwgZS5jcm9zc0RvbWFpbiAmJiAoZS50eXBlID0gIkdFVCIpCiAgICB9KSksIHguYWpheFRyYW5zcG9ydCgic2NyaXB0IiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCwgbjsKICAgICAgICBpZiAoZS5jcm9zc0RvbWFpbiB8fCBlLnNjcmlwdEF0dHJzKSByZXR1cm4gewogICAgICAgICAgICBzZW5kOiBmdW5jdGlvbihpLCByKSB7CiAgICAgICAgICAgICAgICB0ID0geCgiPHNjcmlwdD4iKS5hdHRyKGUuc2NyaXB0QXR0cnMgfHwge30pLnByb3AoewogICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ6IGUuc2NyaXB0Q2hhcnNldCwKICAgICAgICAgICAgICAgICAgICBzcmM6IGUudXJsCiAgICAgICAgICAgICAgICB9KS5vbigibG9hZCBlcnJvciIsIG4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmUoKSwgbiA9IG51bGwsIGUgJiYgcigiZXJyb3IiID09PSBlLnR5cGUgPyA0MDQgOiAyMDAsIGUudHlwZSkKICAgICAgICAgICAgICAgIH0pLCBtLmhlYWQuYXBwZW5kQ2hpbGQodFswXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbiAmJiBuKCkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pKTsKICAgIHZhciBXdCwgcXQgPSBbXSwKICAgICAgICBVdCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87CiAgICB4LmFqYXhTZXR1cCh7CiAgICAgICAganNvbnA6ICJjYWxsYmFjayIsCiAgICAgICAganNvbnBDYWxsYmFjazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gcXQucG9wKCkgfHwgeC5leHBhbmRvICsgIl8iICsgeHQuZ3VpZCsrOwogICAgICAgICAgICByZXR1cm4gdGhpc1tlXSA9ICEwLCBlCiAgICAgICAgfQogICAgfSksIHguYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsIChmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgdmFyIHIsIG8sIGEsIHMgPSAhMSAhPT0gdC5qc29ucCAmJiAoVXQudGVzdCh0LnVybCkgPyAidXJsIiA6ICJzdHJpbmciID09IHR5cGVvZiB0LmRhdGEgJiYgMCA9PT0gKHQuY29udGVudFR5cGUgfHwgIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIFV0LnRlc3QodC5kYXRhKSAmJiAiZGF0YSIpOwogICAgICAgIGlmIChzIHx8ICJqc29ucCIgPT09IHQuZGF0YVR5cGVzWzBdKSByZXR1cm4gciA9IHQuanNvbnBDYWxsYmFjayA9IHAodC5qc29ucENhbGxiYWNrKSA/IHQuanNvbnBDYWxsYmFjaygpIDogdC5qc29ucENhbGxiYWNrLCBzID8gdFtzXSA9IHRbc10ucmVwbGFjZShVdCwgIiQxIiArIHIpIDogITEgIT09IHQuanNvbnAgJiYgKHQudXJsICs9IChfdC50ZXN0KHQudXJsKSA/ICImIiA6ICI/IikgKyB0Lmpzb25wICsgIj0iICsgciksIHQuY29udmVydGVyc1sic2NyaXB0IGpzb24iXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gYSB8fCB4LmVycm9yKHIgKyAiIHdhcyBub3QgY2FsbGVkIiksIGFbMF0KICAgICAgICB9LCB0LmRhdGFUeXBlc1swXSA9ICJqc29uIiwgbyA9IGVbcl0sIGVbcl0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYSA9IGFyZ3VtZW50cwogICAgICAgIH0sIGkuYWx3YXlzKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBvID8geChlKS5yZW1vdmVQcm9wKHIpIDogZVtyXSA9IG8sIHRbcl0gJiYgKHQuanNvbnBDYWxsYmFjayA9IG4uanNvbnBDYWxsYmFjaywgcXQucHVzaChyKSksIGEgJiYgcChvKSAmJiBvKGFbMF0pLCBhID0gbyA9IHZvaWQgMAogICAgICAgIH0pKSwgInNjcmlwdCIKICAgIH0pKSwgZi5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoKFd0ID0gbS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IFd0LmNoaWxkTm9kZXMubGVuZ3RoKSwgeC5wYXJzZUhUTUwgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBlID8gW10gOiAoImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIChuID0gdCwgdCA9ICExKSwgdCB8fCAoZi5jcmVhdGVIVE1MRG9jdW1lbnQgPyAoKGkgPSAodCA9IG0uaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmID0gbS5sb2NhdGlvbi5ocmVmLCB0LmhlYWQuYXBwZW5kQ2hpbGQoaSkpIDogdCA9IG0pLCBvID0gIW4gJiYgW10sIChyID0gRS5leGVjKGUpKSA/IFt0LmNyZWF0ZUVsZW1lbnQoclsxXSldIDogKHIgPSBiZShbZV0sIHQsIG8pLCBvICYmIG8ubGVuZ3RoICYmIHgobykucmVtb3ZlKCksIHgubWVyZ2UoW10sIHIuY2hpbGROb2RlcykpKTsKICAgICAgICB2YXIgaSwgciwgbwogICAgfSwgeC5mbi5sb2FkID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBpLCByLCBvLCBhID0gdGhpcywKICAgICAgICAgICAgcyA9IGUuaW5kZXhPZigiICIpOwogICAgICAgIHJldHVybiAtMSA8IHMgJiYgKGkgPSBwdChlLnNsaWNlKHMpKSwgZSA9IGUuc2xpY2UoMCwgcykpLCBwKHQpID8gKG4gPSB0LCB0ID0gdm9pZCAwKSA6IHQgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgKHIgPSAiUE9TVCIpLCAwIDwgYS5sZW5ndGggJiYgeC5hamF4KHsKICAgICAgICAgICAgdXJsOiBlLAogICAgICAgICAgICB0eXBlOiByIHx8ICJHRVQiLAogICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgfSkuZG9uZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBvID0gYXJndW1lbnRzLCBhLmh0bWwoaSA/IHgoIjxkaXY+IikuYXBwZW5kKHgucGFyc2VIVE1MKGUpKS5maW5kKGkpIDogZSkKICAgICAgICB9KSkuYWx3YXlzKG4gJiYgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBhLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbi5hcHBseSh0aGlzLCBvIHx8IFtlLnJlc3BvbnNlVGV4dCwgdCwgZV0pCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pLCB0aGlzCiAgICB9LCB4LmV4cHIucHNldWRvcy5hbmltYXRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4geC5ncmVwKHgudGltZXJzLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gZSA9PT0gdC5lbGVtCiAgICAgICAgfSkpLmxlbmd0aAogICAgfSwgeC5vZmZzZXQgPSB7CiAgICAgICAgc2V0T2Zmc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjID0geC5jc3MoZSwgInBvc2l0aW9uIiksCiAgICAgICAgICAgICAgICB1ID0geChlKSwKICAgICAgICAgICAgICAgIGQgPSB7fTsKICAgICAgICAgICAgInN0YXRpYyIgPT09IGMgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgcyA9IHUub2Zmc2V0KCksIG8gPSB4LmNzcyhlLCAidG9wIiksIGwgPSB4LmNzcyhlLCAibGVmdCIpLCAoImFic29sdXRlIiA9PT0gYyB8fCAiZml4ZWQiID09PSBjKSAmJiAtMSA8IChvICsgbCkuaW5kZXhPZigiYXV0byIpID8gKGEgPSAoaSA9IHUucG9zaXRpb24oKSkudG9wLCByID0gaS5sZWZ0KSA6IChhID0gcGFyc2VGbG9hdChvKSB8fCAwLCByID0gcGFyc2VGbG9hdChsKSB8fCAwKSwgcCh0KSAmJiAodCA9IHQuY2FsbChlLCBuLCB4LmV4dGVuZCh7fSwgcykpKSwgbnVsbCAhPSB0LnRvcCAmJiAoZC50b3AgPSB0LnRvcCAtIHMudG9wICsgYSksIG51bGwgIT0gdC5sZWZ0ICYmIChkLmxlZnQgPSB0LmxlZnQgLSBzLmxlZnQgKyByKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGQpIDogdS5jc3MoZCkKICAgICAgICB9CiAgICB9LCB4LmZuLmV4dGVuZCh7CiAgICAgICAgb2Zmc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdm9pZCAwID09PSBlID8gdGhpcyA6IHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgeC5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsIGUsIHQpCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSB0aGlzWzBdOwogICAgICAgICAgICByZXR1cm4gaSA/IGkuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPyAodCA9IGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIG4gPSBpLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsIHsKICAgICAgICAgICAgICAgIHRvcDogdC50b3AgKyBuLnBhZ2VZT2Zmc2V0LAogICAgICAgICAgICAgICAgbGVmdDogdC5sZWZ0ICsgbi5wYWdlWE9mZnNldAogICAgICAgICAgICB9KSA6IHsKICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgfSA6IHZvaWQgMAogICAgICAgIH0sCiAgICAgICAgcG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAodGhpc1swXSkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGkgPSB0aGlzWzBdLAogICAgICAgICAgICAgICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoImZpeGVkIiA9PT0geC5jc3MoaSwgInBvc2l0aW9uIikpIHQgPSBpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gdGhpcy5vZmZzZXQoKSwgbiA9IGkub3duZXJEb2N1bWVudCwgZSA9IGkub2Zmc2V0UGFyZW50IHx8IG4uZG9jdW1lbnRFbGVtZW50OyBlICYmIChlID09PSBuLmJvZHkgfHwgZSA9PT0gbi5kb2N1bWVudEVsZW1lbnQpICYmICJzdGF0aWMiID09PSB4LmNzcyhlLCAicG9zaXRpb24iKTspIGUgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlICE9PSBpICYmIDEgPT09IGUubm9kZVR5cGUgJiYgKChyID0geChlKS5vZmZzZXQoKSkudG9wICs9IHguY3NzKGUsICJib3JkZXJUb3BXaWR0aCIsICEwKSwgci5sZWZ0ICs9IHguY3NzKGUsICJib3JkZXJMZWZ0V2lkdGgiLCAhMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHRvcDogdC50b3AgLSByLnRvcCAtIHguY3NzKGksICJtYXJnaW5Ub3AiLCAhMCksCiAgICAgICAgICAgICAgICAgICAgbGVmdDogdC5sZWZ0IC0gci5sZWZ0IC0geC5jc3MoaSwgIm1hcmdpbkxlZnQiLCAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgb2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsgZSAmJiAic3RhdGljIiA9PT0geC5jc3MoZSwgInBvc2l0aW9uIik7KSBlID0gZS5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gZSB8fCBpZQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9KSwgeC5lYWNoKHsKICAgICAgICBzY3JvbGxMZWZ0OiAicGFnZVhPZmZzZXQiLAogICAgICAgIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IgogICAgfSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9ICJwYWdlWU9mZnNldCIgPT09IHQ7CiAgICAgICAgeC5mbltlXSA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIEIodGhpcywgKGZ1bmN0aW9uKGUsIGksIHIpIHsKICAgICAgICAgICAgICAgIHZhciBvOwogICAgICAgICAgICAgICAgaWYgKGcoZSkgPyBvID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKG8gPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSByKSByZXR1cm4gbyA/IG9bdF0gOiBlW2ldOwogICAgICAgICAgICAgICAgbyA/IG8uc2Nyb2xsVG8obiA/IG8ucGFnZVhPZmZzZXQgOiByLCBuID8gciA6IG8ucGFnZVlPZmZzZXQpIDogZVtpXSA9IHIKICAgICAgICAgICAgfSksIGUsIGksIGFyZ3VtZW50cy5sZW5ndGgpCiAgICAgICAgfQogICAgfSkpLCB4LmVhY2goWyJ0b3AiLCAibGVmdCJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHguY3NzSG9va3NbdF0gPSB6ZShmLnBpeGVsUG9zaXRpb24sIChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgIGlmIChuKSByZXR1cm4gbiA9ICRlKGUsIHQpLCBqZS50ZXN0KG4pID8geChlKS5wb3NpdGlvbigpW3RdICsgInB4IiA6IG4KICAgICAgICB9KSkKICAgIH0pKSwgeC5lYWNoKHsKICAgICAgICBIZWlnaHQ6ICJoZWlnaHQiLAogICAgICAgIFdpZHRoOiAid2lkdGgiCiAgICB9LCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHguZWFjaCh7CiAgICAgICAgICAgIHBhZGRpbmc6ICJpbm5lciIgKyBlLAogICAgICAgICAgICBjb250ZW50OiB0LAogICAgICAgICAgICAiIjogIm91dGVyIiArIGUKICAgICAgICB9LCAoZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICB4LmZuW2ldID0gZnVuY3Rpb24ociwgbykgewogICAgICAgICAgICAgICAgdmFyIGEgPSBhcmd1bWVudHMubGVuZ3RoICYmIChuIHx8ICJib29sZWFuIiAhPSB0eXBlb2YgciksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4gfHwgKCEwID09PSByIHx8ICEwID09PSBvID8gIm1hcmdpbiIgOiAiYm9yZGVyIik7CiAgICAgICAgICAgICAgICByZXR1cm4gQih0aGlzLCAoZnVuY3Rpb24odCwgbiwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBnKHQpID8gMCA9PT0gaS5pbmRleE9mKCJvdXRlciIpID8gdFsiaW5uZXIiICsgZV0gOiB0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IiArIGVdIDogOSA9PT0gdC5ub2RlVHlwZSA/IChvID0gdC5kb2N1bWVudEVsZW1lbnQsIE1hdGgubWF4KHQuYm9keVsic2Nyb2xsIiArIGVdLCBvWyJzY3JvbGwiICsgZV0sIHQuYm9keVsib2Zmc2V0IiArIGVdLCBvWyJvZmZzZXQiICsgZV0sIG9bImNsaWVudCIgKyBlXSkpIDogdm9pZCAwID09PSByID8geC5jc3ModCwgbiwgcykgOiB4LnN0eWxlKHQsIG4sIHIsIHMpCiAgICAgICAgICAgICAgICB9KSwgdCwgYSA/IHIgOiB2b2lkIDAsIGEpCiAgICAgICAgICAgIH0KICAgICAgICB9KSkKICAgIH0pKSwgeC5lYWNoKFsiYWpheFN0YXJ0IiwgImFqYXhTdG9wIiwgImFqYXhDb21wbGV0ZSIsICJhamF4RXJyb3IiLCAiYWpheFN1Y2Nlc3MiLCAiYWpheFNlbmQiXSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB4LmZuW3RdID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vbih0LCBlKQogICAgICAgIH0KICAgIH0pKSwgeC5mbi5leHRlbmQoewogICAgICAgIGJpbmQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub24oZSwgbnVsbCwgdCwgbikKICAgICAgICB9LAogICAgICAgIHVuYmluZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vZmYoZSwgbnVsbCwgdCkKICAgICAgICB9LAogICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uKHQsIGUsIG4sIGkpCiAgICAgICAgfSwKICAgICAgICB1bmRlbGVnYXRlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiAxID09PSBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy5vZmYoZSwgIioqIikgOiB0aGlzLm9mZih0LCBlIHx8ICIqKiIsIG4pCiAgICAgICAgfSwKICAgICAgICBob3ZlcjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKQogICAgICAgIH0KICAgIH0pLCB4LmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgeC5mblt0XSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIDAgPCBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy5vbih0LCBudWxsLCBlLCBuKSA6IHRoaXMudHJpZ2dlcih0KQogICAgICAgIH0KICAgIH0pKTsKICAgIHZhciBWdCA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZzsKICAgIHgucHJveHkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4sIGksIG87CiAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiB0ICYmIChuID0gZVt0XSwgdCA9IGUsIGUgPSBuKSwgcChlKSkgcmV0dXJuIGkgPSByLmNhbGwoYXJndW1lbnRzLCAyKSwgKG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGUuYXBwbHkodCB8fCB0aGlzLCBpLmNvbmNhdChyLmNhbGwoYXJndW1lbnRzKSkpCiAgICAgICAgfSkuZ3VpZCA9IGUuZ3VpZCA9IGUuZ3VpZCB8fCB4Lmd1aWQrKywgbwogICAgfSwgeC5ob2xkUmVhZHkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZSA/IHgucmVhZHlXYWl0KysgOiB4LnJlYWR5KCEwKQogICAgfSwgeC5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSwgeC5wYXJzZUpTT04gPSBKU09OLnBhcnNlLCB4Lm5vZGVOYW1lID0gQSwgeC5pc0Z1bmN0aW9uID0gcCwgeC5pc1dpbmRvdyA9IGcsIHguY2FtZWxDYXNlID0gViwgeC50eXBlID0gYiwgeC5ub3cgPSBEYXRlLm5vdywgeC5pc051bWVyaWMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB4LnR5cGUoZSk7CiAgICAgICAgcmV0dXJuICgibnVtYmVyIiA9PT0gdCB8fCAic3RyaW5nIiA9PT0gdCkgJiYgIWlzTmFOKGUgLSBwYXJzZUZsb2F0KGUpKQogICAgfSwgeC50cmltID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBudWxsID09IGUgPyAiIiA6IChlICsgIiIpLnJlcGxhY2UoVnQsICIiKQogICAgfSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lKCJqcXVlcnkiLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB4CiAgICB9KSk7CiAgICB2YXIgWXQgPSBlLmpRdWVyeSwKICAgICAgICBYdCA9IGUuJDsKICAgIHJldHVybiB4Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgcmV0dXJuIGUuJCA9PT0geCAmJiAoZS4kID0gWHQpLCB0ICYmIGUualF1ZXJ5ID09PSB4ICYmIChlLmpRdWVyeSA9IFl0KSwgeAogICAgfSwgdm9pZCAwID09PSB0ICYmIChlLmpRdWVyeSA9IGUuJCA9IHgpLCB4Cn0pKSwKZnVuY3Rpb24oZSwgdCkgewogICAgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG1vZHVsZS5leHBvcnRzID0gdCgpIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUodCkgOiAoZSA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBnbG9iYWxUaGlzID8gZ2xvYmFsVGhpcyA6IGUgfHwgc2VsZikuYm9vdHN0cmFwID0gdCgpCn0odGhpcywgKGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwogICAgY29uc3QgZSA9ICJ0cmFuc2l0aW9uZW5kIiwKICAgICAgICB0ID0gZSA9PiB7CiAgICAgICAgICAgIGxldCB0ID0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtdGFyZ2V0Iik7CiAgICAgICAgICAgIGlmICghdCB8fCAiIyIgPT09IHQpIHsKICAgICAgICAgICAgICAgIGxldCBuID0gZS5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi5pbmNsdWRlcygiIyIpICYmICFuLnN0YXJ0c1dpdGgoIi4iKSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICBuLmluY2x1ZGVzKCIjIikgJiYgIW4uc3RhcnRzV2l0aCgiIyIpICYmIChuID0gIiMiICsgbi5zcGxpdCgiIyIpWzFdKSwgdCA9IG4gJiYgIiMiICE9PSBuID8gbi50cmltKCkgOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIG4gPSBlID0+IHsKICAgICAgICAgICAgY29uc3QgbiA9IHQoZSk7CiAgICAgICAgICAgIHJldHVybiBuICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobikgPyBuIDogbnVsbAogICAgICAgIH0sCiAgICAgICAgaSA9IGUgPT4gewogICAgICAgICAgICBjb25zdCBuID0gdChlKTsKICAgICAgICAgICAgcmV0dXJuIG4gPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pIDogbnVsbAogICAgICAgIH0sCiAgICAgICAgciA9IHQgPT4gewogICAgICAgICAgICB0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGUpKQogICAgICAgIH0sCiAgICAgICAgbyA9IGUgPT4gISghZSB8fCAib2JqZWN0IiAhPSB0eXBlb2YgZSkgJiYgKHZvaWQgMCAhPT0gZS5qcXVlcnkgJiYgKGUgPSBlWzBdKSwgdm9pZCAwICE9PSBlLm5vZGVUeXBlKSwKICAgICAgICBhID0gZSA9PiBvKGUpID8gZS5qcXVlcnkgPyBlWzBdIDogZSA6ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGUubGVuZ3RoID4gMCA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSkgOiBudWxsLAogICAgICAgIHMgPSAoZSwgdCwgbikgPT4gewogICAgICAgICAgICBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgciA9IG5baV0sCiAgICAgICAgICAgICAgICAgICAgYSA9IHRbaV0sCiAgICAgICAgICAgICAgICAgICAgcyA9IGEgJiYgbyhhKSA/ICJlbGVtZW50IiA6IG51bGwgPT0gKGwgPSBhKSA/ICIiICsgbCA6IHt9LnRvU3RyaW5nLmNhbGwobCkubWF0Y2goL1xzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgIHZhciBsOwogICAgICAgICAgICAgICAgaWYgKCFuZXcgUmVnRXhwKHIpLnRlc3QocykpIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7ZS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uICIke2l9IiBwcm92aWRlZCB0eXBlICIke3N9IiBidXQgZXhwZWN0ZWQgdHlwZSAiJHtyfSIuYCkKICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIGwgPSBlID0+ICEoIW8oZSkgfHwgMCA9PT0gZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkgJiYgInZpc2libGUiID09PSBnZXRDb21wdXRlZFN0eWxlKGUpLmdldFByb3BlcnR5VmFsdWUoInZpc2liaWxpdHkiKSwKICAgICAgICBjID0gZSA9PiAhZSB8fCBlLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCAhIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpIHx8ICh2b2lkIDAgIT09IGUuZGlzYWJsZWQgPyBlLmRpc2FibGVkIDogZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikgJiYgImZhbHNlIiAhPT0gZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpLAogICAgICAgIHUgPSBlID0+IHsKICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXR0YWNoU2hhZG93KSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUuZ2V0Um9vdE5vZGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLmdldFJvb3ROb2RlKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgPyB0IDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgU2hhZG93Um9vdCA/IGUgOiBlLnBhcmVudE5vZGUgPyB1KGUucGFyZW50Tm9kZSkgOiBudWxsCiAgICAgICAgfSwKICAgICAgICBkID0gKCkgPT4ge30sCiAgICAgICAgaCA9IGUgPT4gewogICAgICAgICAgICBlLm9mZnNldEhlaWdodAogICAgICAgIH0sCiAgICAgICAgZiA9ICgpID0+IHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgalF1ZXJ5OiBlCiAgICAgICAgICAgIH0gPSB3aW5kb3c7CiAgICAgICAgICAgIHJldHVybiBlICYmICFkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGF0YS1icy1uby1qcXVlcnkiKSA/IGUgOiBudWxsCiAgICAgICAgfSwKICAgICAgICBwID0gW10sCiAgICAgICAgZyA9ICgpID0+ICJydGwiID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyLAogICAgICAgIG0gPSBlID0+IHsKICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgIHQgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZigpOwogICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5mbltuXTsKICAgICAgICAgICAgICAgICAgICB0LmZuW25dID0gZS5qUXVlcnlJbnRlcmZhY2UsIHQuZm5bbl0uQ29uc3RydWN0b3IgPSBlLCB0LmZuW25dLm5vQ29uZmxpY3QgPSAoKSA9PiAodC5mbltuXSA9IGksIGUualF1ZXJ5SW50ZXJmYWNlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAibG9hZGluZyIgPT09IGRvY3VtZW50LnJlYWR5U3RhdGUgPyAocC5sZW5ndGggfHwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IHsKICAgICAgICAgICAgICAgIHAuZm9yRWFjaChlID0+IGUoKSkKICAgICAgICAgICAgfSksIHAucHVzaCh0KSkgOiB0KCkKICAgICAgICB9LAogICAgICAgIHYgPSBlID0+IHsKICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiBlKCkKICAgICAgICB9LAogICAgICAgIHkgPSAodCwgbiwgaSA9ICEwKSA9PiB7CiAgICAgICAgICAgIGlmICghaSkgcmV0dXJuIHZvaWQgdih0KTsKICAgICAgICAgICAgY29uc3QgbyA9IChlID0+IHsKICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdCwKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6IG4KICAgICAgICAgICAgICAgIH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBOdW1iZXIucGFyc2VGbG9hdCh0KSwKICAgICAgICAgICAgICAgICAgICByID0gTnVtYmVyLnBhcnNlRmxvYXQobik7CiAgICAgICAgICAgICAgICByZXR1cm4gaSB8fCByID8gKHQgPSB0LnNwbGl0KCIsIilbMF0sIG4gPSBuLnNwbGl0KCIsIilbMF0sIDFlMyAqIChOdW1iZXIucGFyc2VGbG9hdCh0KSArIE51bWJlci5wYXJzZUZsb2F0KG4pKSkgOiAwCiAgICAgICAgICAgIH0pKG4pICsgNTsKICAgICAgICAgICAgbGV0IGEgPSAhMTsKICAgICAgICAgICAgY29uc3QgcyA9ICh7CiAgICAgICAgICAgICAgICB0YXJnZXQ6IGkKICAgICAgICAgICAgfSkgPT4gewogICAgICAgICAgICAgICAgaSA9PT0gbiAmJiAoYSA9ICEwLCBuLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSwgcyksIHYodCkpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIG4uYWRkRXZlbnRMaXN0ZW5lcihlLCBzKSwgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICBhIHx8IHIobikKICAgICAgICAgICAgfSwgbykKICAgICAgICB9LAogICAgICAgIGIgPSAoZSwgdCwgbiwgaSkgPT4gewogICAgICAgICAgICBsZXQgciA9IGUuaW5kZXhPZih0KTsKICAgICAgICAgICAgaWYgKC0xID09PSByKSByZXR1cm4gZVshbiAmJiBpID8gZS5sZW5ndGggLSAxIDogMF07CiAgICAgICAgICAgIGNvbnN0IG8gPSBlLmxlbmd0aDsKICAgICAgICAgICAgcmV0dXJuIHIgKz0gbiA/IDEgOiAtMSwgaSAmJiAociA9IChyICsgbykgJSBvKSwgZVtNYXRoLm1heCgwLCBNYXRoLm1pbihyLCBvIC0gMSkpXQogICAgICAgIH0sCiAgICAgICAgdyA9IC9bXi5dKig/PVwuLiopXC58LiovLAogICAgICAgIHggPSAvXC4uKi8sCiAgICAgICAgXyA9IC86OlxkKyQvLAogICAgICAgIFMgPSB7fTsKICAgIGxldCBDID0gMTsKICAgIGNvbnN0IGsgPSB7CiAgICAgICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLAogICAgICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCiAgICAgICAgfSwKICAgICAgICBUID0gL14obW91c2VlbnRlcnxtb3VzZWxlYXZlKS9pLAogICAgICAgIEEgPSBuZXcgU2V0KFsiY2xpY2siLCAiZGJsY2xpY2siLCAibW91c2V1cCIsICJtb3VzZWRvd24iLCAiY29udGV4dG1lbnUiLCAibW91c2V3aGVlbCIsICJET01Nb3VzZVNjcm9sbCIsICJtb3VzZW92ZXIiLCAibW91c2VvdXQiLCAibW91c2Vtb3ZlIiwgInNlbGVjdHN0YXJ0IiwgInNlbGVjdGVuZCIsICJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIiwgIm9yaWVudGF0aW9uY2hhbmdlIiwgInRvdWNoc3RhcnQiLCAidG91Y2htb3ZlIiwgInRvdWNoZW5kIiwgInRvdWNoY2FuY2VsIiwgInBvaW50ZXJkb3duIiwgInBvaW50ZXJtb3ZlIiwgInBvaW50ZXJ1cCIsICJwb2ludGVybGVhdmUiLCAicG9pbnRlcmNhbmNlbCIsICJnZXN0dXJlc3RhcnQiLCAiZ2VzdHVyZWNoYW5nZSIsICJnZXN0dXJlZW5kIiwgImZvY3VzIiwgImJsdXIiLCAiY2hhbmdlIiwgInJlc2V0IiwgInNlbGVjdCIsICJzdWJtaXQiLCAiZm9jdXNpbiIsICJmb2N1c291dCIsICJsb2FkIiwgInVubG9hZCIsICJiZWZvcmV1bmxvYWQiLCAicmVzaXplIiwgIm1vdmUiLCAiRE9NQ29udGVudExvYWRlZCIsICJyZWFkeXN0YXRlY2hhbmdlIiwgImVycm9yIiwgImFib3J0IiwgInNjcm9sbCJdKTsKCiAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICByZXR1cm4gdCAmJiBgJHt0fTo6JHtDKyt9YCB8fCBlLnVpZEV2ZW50IHx8IEMrKwogICAgfQoKICAgIGZ1bmN0aW9uIEQoZSkgewogICAgICAgIGNvbnN0IHQgPSBFKGUpOwogICAgICAgIHJldHVybiBlLnVpZEV2ZW50ID0gdCwgU1t0XSA9IFNbdF0gfHwge30sIFNbdF0KICAgIH0KCiAgICBmdW5jdGlvbiBPKGUsIHQsIG4gPSBudWxsKSB7CiAgICAgICAgY29uc3QgaSA9IE9iamVjdC5rZXlzKGUpOwogICAgICAgIGZvciAobGV0IHIgPSAwLCBvID0gaS5sZW5ndGg7IHIgPCBvOyByKyspIHsKICAgICAgICAgICAgY29uc3QgbyA9IGVbaVtyXV07CiAgICAgICAgICAgIGlmIChvLm9yaWdpbmFsSGFuZGxlciA9PT0gdCAmJiBvLmRlbGVnYXRpb25TZWxlY3RvciA9PT0gbikgcmV0dXJuIG8KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGwKICAgIH0KCiAgICBmdW5jdGlvbiBNKGUsIHQsIG4pIHsKICAgICAgICBjb25zdCBpID0gInN0cmluZyIgPT0gdHlwZW9mIHQsCiAgICAgICAgICAgIHIgPSBpID8gbiA6IHQ7CiAgICAgICAgbGV0IG8gPSBQKGUpOwogICAgICAgIHJldHVybiBBLmhhcyhvKSB8fCAobyA9IGUpLCBbaSwgciwgb10KICAgIH0KCiAgICBmdW5jdGlvbiBJKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIHQgfHwgIWUpIHJldHVybjsKICAgICAgICBpZiAobiB8fCAobiA9IGksIGkgPSBudWxsKSwgVC50ZXN0KHQpKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSBlID0+IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICghdC5yZWxhdGVkVGFyZ2V0IHx8IHQucmVsYXRlZFRhcmdldCAhPT0gdC5kZWxlZ2F0ZVRhcmdldCAmJiAhdC5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpKSByZXR1cm4gZS5jYWxsKHRoaXMsIHQpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGkgPyBpID0gZShpKSA6IG4gPSBlKG4pCiAgICAgICAgfQogICAgICAgIGNvbnN0IFtvLCBhLCBzXSA9IE0odCwgbiwgaSksIGwgPSBEKGUpLCBjID0gbFtzXSB8fCAobFtzXSA9IHt9KSwgdSA9IE8oYywgYSwgbyA/IG4gOiBudWxsKTsKICAgICAgICBpZiAodSkgcmV0dXJuIHZvaWQodS5vbmVPZmYgPSB1Lm9uZU9mZiAmJiByKTsKICAgICAgICBjb25zdCBkID0gRShhLCB0LnJlcGxhY2UodywgIiIpKSwKICAgICAgICAgICAgaCA9IG8gPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gaShyKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGUucXVlcnlTZWxlY3RvckFsbCh0KTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHI7IGEgJiYgYSAhPT0gdGhpczsgYSA9IGEucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IG8ubGVuZ3RoOyBzLS07KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9bc10gPT09IGEpIHJldHVybiByLmRlbGVnYXRlVGFyZ2V0ID0gYSwgaS5vbmVPZmYgJiYgai5vZmYoZSwgci50eXBlLCB0LCBuKSwgbi5hcHBseShhLCBbcl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0oZSwgbiwgaSkgOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gbihpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuZGVsZWdhdGVUYXJnZXQgPSBlLCBuLm9uZU9mZiAmJiBqLm9mZihlLCBpLnR5cGUsIHQpLCB0LmFwcGx5KGUsIFtpXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCBuKTsKICAgICAgICBoLmRlbGVnYXRpb25TZWxlY3RvciA9IG8gPyBuIDogbnVsbCwgaC5vcmlnaW5hbEhhbmRsZXIgPSBhLCBoLm9uZU9mZiA9IHIsIGgudWlkRXZlbnQgPSBkLCBjW2RdID0gaCwgZS5hZGRFdmVudExpc3RlbmVyKHMsIGgsIG8pCiAgICB9CgogICAgZnVuY3Rpb24gTChlLCB0LCBuLCBpLCByKSB7CiAgICAgICAgY29uc3QgbyA9IE8odFtuXSwgaSwgcik7CiAgICAgICAgbyAmJiAoZS5yZW1vdmVFdmVudExpc3RlbmVyKG4sIG8sIEJvb2xlYW4ocikpLCBkZWxldGUgdFtuXVtvLnVpZEV2ZW50XSkKICAgIH0KCiAgICBmdW5jdGlvbiBQKGUpIHsKICAgICAgICByZXR1cm4gZSA9IGUucmVwbGFjZSh4LCAiIiksIGtbZV0gfHwgZQogICAgfQogICAgY29uc3QgaiA9IHsKICAgICAgICAgICAgb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgSShlLCB0LCBuLCBpLCAhMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25lKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIEkoZSwgdCwgbiwgaSwgITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9mZihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIHQgfHwgIWUpIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IFtyLCBvLCBhXSA9IE0odCwgbiwgaSksIHMgPSBhICE9PSB0LCBsID0gRChlKSwgYyA9IHQuc3RhcnRzV2l0aCgiLiIpOwogICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gbykgewogICAgICAgICAgICAgICAgICAgIGlmICghbCB8fCAhbFthXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIEwoZSwgbCwgYSwgbywgciA/IG4gOiBudWxsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYyAmJiBPYmplY3Qua2V5cyhsKS5mb3JFYWNoKG4gPT4gewogICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gdFtuXSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocikuZm9yRWFjaChvID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmluY2x1ZGVzKGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHJbb107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTChlLCB0LCBuLCBpLm9yaWdpbmFsSGFuZGxlciwgaS5kZWxlZ2F0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfShlLCBsLCBuLCB0LnNsaWNlKDEpKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBjb25zdCB1ID0gbFthXSB8fCB7fTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHUpLmZvckVhY2gobiA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IG4ucmVwbGFjZShfLCAiIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzIHx8IHQuaW5jbHVkZXMoaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHVbbl07CiAgICAgICAgICAgICAgICAgICAgICAgIEwoZSwgbCwgYSwgdC5vcmlnaW5hbEhhbmRsZXIsIHQuZGVsZWdhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRyaWdnZXIoZSwgdCwgbikgewogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiB0IHx8ICFlKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBmKCksCiAgICAgICAgICAgICAgICAgICAgciA9IFAodCksCiAgICAgICAgICAgICAgICAgICAgbyA9IHQgIT09IHIsCiAgICAgICAgICAgICAgICAgICAgYSA9IEEuaGFzKHIpOwogICAgICAgICAgICAgICAgbGV0IHMsIGwgPSAhMCwKICAgICAgICAgICAgICAgICAgICBjID0gITAsCiAgICAgICAgICAgICAgICAgICAgdSA9ICExLAogICAgICAgICAgICAgICAgICAgIGQgPSBudWxsOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gJiYgaSAmJiAocyA9IGkuRXZlbnQodCwgbiksIGkoZSkudHJpZ2dlcihzKSwgbCA9ICFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCksIGMgPSAhcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpLCB1ID0gcy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSksIGEgPyAoZCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIiksIGQuaW5pdEV2ZW50KHIsIGwsICEwKSkgOiBkID0gbmV3IEN1c3RvbUV2ZW50KHQsIHsKICAgICAgICAgICAgICAgICAgICBidWJibGVzOiBsLAogICAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6ICEwCiAgICAgICAgICAgICAgICB9KSwgdm9pZCAwICE9PSBuICYmIE9iamVjdC5rZXlzKG4pLmZvckVhY2goZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGQsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBuW2VdCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pLCB1ICYmIGQucHJldmVudERlZmF1bHQoKSwgYyAmJiBlLmRpc3BhdGNoRXZlbnQoZCksIGQuZGVmYXVsdFByZXZlbnRlZCAmJiB2b2lkIDAgIT09IHMgJiYgcy5wcmV2ZW50RGVmYXVsdCgpLCBkCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIE4gPSBuZXcgTWFwLAogICAgICAgIEYgPSB7CiAgICAgICAgICAgIHNldChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBOLmhhcyhlKSB8fCBOLnNldChlLCBuZXcgTWFwKTsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBOLmdldChlKTsKICAgICAgICAgICAgICAgIGkuaGFzKHQpIHx8IDAgPT09IGkuc2l6ZSA/IGkuc2V0KHQsIG4pIDogY29uc29sZS5lcnJvcihgQm9vdHN0cmFwIGRvZXNuJ3QgYWxsb3cgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudC4gQm91bmQgaW5zdGFuY2U6ICR7QXJyYXkuZnJvbShpLmtleXMoKSlbMF19LmApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldDogKGUsIHQpID0+IE4uaGFzKGUpICYmIE4uZ2V0KGUpLmdldCh0KSB8fCBudWxsLAogICAgICAgICAgICByZW1vdmUoZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKCFOLmhhcyhlKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IE4uZ2V0KGUpOwogICAgICAgICAgICAgICAgbi5kZWxldGUodCksIDAgPT09IG4uc2l6ZSAmJiBOLmRlbGV0ZShlKQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIGNsYXNzIFIgewogICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgKGUgPSBhKGUpKSAmJiAodGhpcy5fZWxlbWVudCA9IGUsIEYuc2V0KHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVksIHRoaXMpKQogICAgICAgIH0KICAgICAgICBkaXNwb3NlKCkgewogICAgICAgICAgICBGLnJlbW92ZSh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSwgai5vZmYodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FVkVOVF9LRVkpLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKS5mb3JFYWNoKGUgPT4gewogICAgICAgICAgICAgICAgdGhpc1tlXSA9IG51bGwKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgX3F1ZXVlQ2FsbGJhY2soZSwgdCwgbiA9ICEwKSB7CiAgICAgICAgICAgIHkoZSwgdCwgbikKICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldEluc3RhbmNlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEYuZ2V0KGEoZSksIHRoaXMuREFUQV9LRVkpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKGUsIHQgPSB7fSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRJbnN0YW5jZShlKSB8fCBuZXcgdGhpcyhlLCAib2JqZWN0IiA9PSB0eXBlb2YgdCA/IHQgOiBudWxsKQogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IFZFUlNJT04oKSB7CiAgICAgICAgICAgIHJldHVybiAiNS4xLjMiCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlIHN0YXRpYyBtZXRob2QgIk5BTUUiLCBmb3IgZWFjaCBjb21wb25lbnQhJykKICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBEQVRBX0tFWSgpIHsKICAgICAgICAgICAgcmV0dXJuICJicy4iICsgdGhpcy5OQU1FCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRVZFTlRfS0VZKCkgewogICAgICAgICAgICByZXR1cm4gIi4iICsgdGhpcy5EQVRBX0tFWQogICAgICAgIH0KICAgIH0KICAgIGNvbnN0ICQgPSAoZSwgdCA9ICJoaWRlIikgPT4gewogICAgICAgIGNvbnN0IG4gPSAiY2xpY2suZGlzbWlzcyIgKyBlLkVWRU5UX0tFWSwKICAgICAgICAgICAgciA9IGUuTkFNRTsKICAgICAgICBqLm9uKGRvY3VtZW50LCBuLCBgW2RhdGEtYnMtZGlzbWlzcz0iJHtyfSJdYCwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgaWYgKFsiQSIsICJBUkVBIl0uaW5jbHVkZXModGhpcy50YWdOYW1lKSAmJiBuLnByZXZlbnREZWZhdWx0KCksIGModGhpcykpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgbyA9IGkodGhpcykgfHwgdGhpcy5jbG9zZXN0KCIuIiArIHIpOwogICAgICAgICAgICBlLmdldE9yQ3JlYXRlSW5zdGFuY2UobylbdF0oKQogICAgICAgIH0pKQogICAgfTsKICAgIGNsYXNzIHogZXh0ZW5kcyBSIHsKICAgICAgICBzdGF0aWMgZ2V0IE5BTUUoKSB7CiAgICAgICAgICAgIHJldHVybiAiYWxlcnQiCiAgICAgICAgfQogICAgICAgIGNsb3NlKCkgewogICAgICAgICAgICBpZiAoai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJjbG9zZS5icy5hbGVydCIpLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93Iik7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZmFkZSIpOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2Rlc3Ryb3lFbGVtZW50KCksIHRoaXMuX2VsZW1lbnQsIGUpCiAgICAgICAgfQogICAgICAgIF9kZXN0cm95RWxlbWVudCgpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJjbG9zZWQuYnMuYWxlcnQiKSwgdGhpcy5kaXNwb3NlKCkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHouZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHRbZV0gfHwgZS5zdGFydHNXaXRoKCJfIikgfHwgImNvbnN0cnVjdG9yIiA9PT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke2V9ImApOwogICAgICAgICAgICAgICAgICAgIHRbZV0odGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfQogICAgJCh6LCAiY2xvc2UiKSwgbSh6KTsKICAgIGNvbnN0IEggPSAnW2RhdGEtYnMtdG9nZ2xlPSJidXR0b24iXSc7CiAgICBjbGFzcyBCIGV4dGVuZHMgUiB7CiAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICByZXR1cm4gImJ1dHRvbiIKICAgICAgICB9CiAgICAgICAgdG9nZ2xlKCkgewogICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKSkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IEIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTsKICAgICAgICAgICAgICAgICJ0b2dnbGUiID09PSBlICYmIHRbZV0oKQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gVyhlKSB7CiAgICAgICAgcmV0dXJuICJ0cnVlIiA9PT0gZSB8fCAiZmFsc2UiICE9PSBlICYmIChlID09PSBOdW1iZXIoZSkudG9TdHJpbmcoKSA/IE51bWJlcihlKSA6ICIiID09PSBlIHx8ICJudWxsIiA9PT0gZSA/IG51bGwgOiBlKQogICAgfQoKICAgIGZ1bmN0aW9uIHEoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoL1tBLVpdL2csIGUgPT4gIi0iICsgZS50b0xvd2VyQ2FzZSgpKQogICAgfQogICAgai5vbihkb2N1bWVudCwgImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsIEgsIGUgPT4gewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICBjb25zdCB0ID0gZS50YXJnZXQuY2xvc2VzdChIKTsKICAgICAgICBCLmdldE9yQ3JlYXRlSW5zdGFuY2UodCkudG9nZ2xlKCkKICAgIH0pLCBtKEIpOwogICAgY29uc3QgVSA9IHsKICAgICAgICAgICAgc2V0RGF0YUF0dHJpYnV0ZShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgiZGF0YS1icy0iICsgcSh0KSwgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVtb3ZlRGF0YUF0dHJpYnV0ZShlLCB0KSB7CiAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1icy0iICsgcSh0KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RGF0YUF0dHJpYnV0ZXMoZSkgewogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4ge307CiAgICAgICAgICAgICAgICBjb25zdCB0ID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZS5kYXRhc2V0KS5maWx0ZXIoZSA9PiBlLnN0YXJ0c1dpdGgoImJzIikpLmZvckVhY2gobiA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBuLnJlcGxhY2UoL15icy8sICIiKTsKICAgICAgICAgICAgICAgICAgICBpID0gaS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGkuc2xpY2UoMSwgaS5sZW5ndGgpLCB0W2ldID0gVyhlLmRhdGFzZXRbbl0pCiAgICAgICAgICAgICAgICB9KSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXREYXRhQXR0cmlidXRlOiAoZSwgdCkgPT4gVyhlLmdldEF0dHJpYnV0ZSgiZGF0YS1icy0iICsgcSh0KSkpLAogICAgICAgICAgICBvZmZzZXQoZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHRvcDogdC50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogdC5sZWZ0ICsgd2luZG93LnBhZ2VYT2Zmc2V0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBvc2l0aW9uOiBlID0+ICh7CiAgICAgICAgICAgICAgICB0b3A6IGUub2Zmc2V0VG9wLAogICAgICAgICAgICAgICAgbGVmdDogZS5vZmZzZXRMZWZ0CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICBWID0gewogICAgICAgICAgICBmaW5kOiAoZSwgdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgPT4gW10uY29uY2F0KC4uLkVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbCh0LCBlKSksCiAgICAgICAgICAgIGZpbmRPbmU6IChlLCB0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA9PiBFbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwodCwgZSksCiAgICAgICAgICAgIGNoaWxkcmVuOiAoZSwgdCkgPT4gW10uY29uY2F0KC4uLmUuY2hpbGRyZW4pLmZpbHRlcihlID0+IGUubWF0Y2hlcyh0KSksCiAgICAgICAgICAgIHBhcmVudHMoZSwgdCkgewogICAgICAgICAgICAgICAgY29uc3QgbiA9IFtdOwogICAgICAgICAgICAgICAgbGV0IGkgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICBmb3IgKDsgaSAmJiBpLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAzICE9PSBpLm5vZGVUeXBlOykgaS5tYXRjaGVzKHQpICYmIG4ucHVzaChpKSwgaSA9IGkucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHByZXYoZSwgdCkgewogICAgICAgICAgICAgICAgbGV0IG4gPSBlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgICAgICBmb3IgKDsgbjspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobi5tYXRjaGVzKHQpKSByZXR1cm4gW25dOwogICAgICAgICAgICAgICAgICAgIG4gPSBuLnByZXZpb3VzRWxlbWVudFNpYmxpbmcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZXh0KGUsIHQpIHsKICAgICAgICAgICAgICAgIGxldCBuID0gZS5uZXh0RWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgICAgICBmb3IgKDsgbjspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobi5tYXRjaGVzKHQpKSByZXR1cm4gW25dOwogICAgICAgICAgICAgICAgICAgIG4gPSBuLm5leHRFbGVtZW50U2libGluZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBbImEiLCAiYnV0dG9uIiwgImlucHV0IiwgInRleHRhcmVhIiwgInNlbGVjdCIsICJkZXRhaWxzIiwgIlt0YWJpbmRleF0iLCAnW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJ10ubWFwKGUgPT4gZSArICc6bm90KFt0YWJpbmRleF49Ii0iXSknKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZCh0LCBlKS5maWx0ZXIoZSA9PiAhYyhlKSAmJiBsKGUpKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBZID0gImNhcm91c2VsIiwKICAgICAgICBYID0gewogICAgICAgICAgICBpbnRlcnZhbDogNWUzLAogICAgICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAgICAgIHNsaWRlOiAhMSwKICAgICAgICAgICAgcGF1c2U6ICJob3ZlciIsCiAgICAgICAgICAgIHdyYXA6ICEwLAogICAgICAgICAgICB0b3VjaDogITAKICAgICAgICB9LAogICAgICAgIEcgPSB7CiAgICAgICAgICAgIGludGVydmFsOiAiKG51bWJlcnxib29sZWFuKSIsCiAgICAgICAgICAgIGtleWJvYXJkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgIHNsaWRlOiAiKGJvb2xlYW58c3RyaW5nKSIsCiAgICAgICAgICAgIHBhdXNlOiAiKHN0cmluZ3xib29sZWFuKSIsCiAgICAgICAgICAgIHdyYXA6ICJib29sZWFuIiwKICAgICAgICAgICAgdG91Y2g6ICJib29sZWFuIgogICAgICAgIH0sCiAgICAgICAgSyA9ICJuZXh0IiwKICAgICAgICBRID0gInByZXYiLAogICAgICAgIFogPSAibGVmdCIsCiAgICAgICAgSiA9ICJyaWdodCIsCiAgICAgICAgZWUgPSB7CiAgICAgICAgICAgIEFycm93TGVmdDogSiwKICAgICAgICAgICAgQXJyb3dSaWdodDogWgogICAgICAgIH0sCiAgICAgICAgdGUgPSAic2xpZC5icy5jYXJvdXNlbCIsCiAgICAgICAgbmUgPSAiYWN0aXZlIiwKICAgICAgICBpZSA9ICIuYWN0aXZlLmNhcm91c2VsLWl0ZW0iOwogICAgY2xhc3MgcmUgZXh0ZW5kcyBSIHsKICAgICAgICBjb25zdHJ1Y3RvcihlLCB0KSB7CiAgICAgICAgICAgIHN1cGVyKGUpLCB0aGlzLl9pdGVtcyA9IG51bGwsIHRoaXMuX2ludGVydmFsID0gbnVsbCwgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGwsIHRoaXMuX2lzUGF1c2VkID0gITEsIHRoaXMuX2lzU2xpZGluZyA9ICExLCB0aGlzLnRvdWNoVGltZW91dCA9IG51bGwsIHRoaXMudG91Y2hTdGFydFggPSAwLCB0aGlzLnRvdWNoRGVsdGFYID0gMCwgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKHQpLCB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCA9IFYuZmluZE9uZSgiLmNhcm91c2VsLWluZGljYXRvcnMiLCB0aGlzLl9lbGVtZW50KSwgdGhpcy5fdG91Y2hTdXBwb3J0ZWQgPSAib250b3VjaHN0YXJ0IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMCwgdGhpcy5fcG9pbnRlckV2ZW50ID0gQm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KSwgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKQogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7CiAgICAgICAgICAgIHJldHVybiBYCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgcmV0dXJuIFkKICAgICAgICB9CiAgICAgICAgbmV4dCgpIHsKICAgICAgICAgICAgdGhpcy5fc2xpZGUoSykKICAgICAgICB9CiAgICAgICAgbmV4dFdoZW5WaXNpYmxlKCkgewogICAgICAgICAgICAhZG9jdW1lbnQuaGlkZGVuICYmIGwodGhpcy5fZWxlbWVudCkgJiYgdGhpcy5uZXh0KCkKICAgICAgICB9CiAgICAgICAgcHJldigpIHsKICAgICAgICAgICAgdGhpcy5fc2xpZGUoUSkKICAgICAgICB9CiAgICAgICAgcGF1c2UoZSkgewogICAgICAgICAgICBlIHx8ICh0aGlzLl9pc1BhdXNlZCA9ICEwKSwgVi5maW5kT25lKCIuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IiwgdGhpcy5fZWxlbWVudCkgJiYgKHIodGhpcy5fZWxlbWVudCksIHRoaXMuY3ljbGUoITApKSwgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksIHRoaXMuX2ludGVydmFsID0gbnVsbAogICAgICAgIH0KICAgICAgICBjeWNsZShlKSB7CiAgICAgICAgICAgIGUgfHwgKHRoaXMuX2lzUGF1c2VkID0gITEpLCB0aGlzLl9pbnRlcnZhbCAmJiAoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksIHRoaXMuX2ludGVydmFsID0gbnVsbCksIHRoaXMuX2NvbmZpZyAmJiB0aGlzLl9jb25maWcuaW50ZXJ2YWwgJiYgIXRoaXMuX2lzUGF1c2VkICYmICh0aGlzLl91cGRhdGVJbnRlcnZhbCgpLCB0aGlzLl9pbnRlcnZhbCA9IHNldEludGVydmFsKChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPyB0aGlzLm5leHRXaGVuVmlzaWJsZSA6IHRoaXMubmV4dCkuYmluZCh0aGlzKSwgdGhpcy5fY29uZmlnLmludGVydmFsKSkKICAgICAgICB9CiAgICAgICAgdG8oZSkgewogICAgICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50ID0gVi5maW5kT25lKGllLCB0aGlzLl9lbGVtZW50KTsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2dldEl0ZW1JbmRleCh0aGlzLl9hY3RpdmVFbGVtZW50KTsKICAgICAgICAgICAgaWYgKGUgPiB0aGlzLl9pdGVtcy5sZW5ndGggLSAxIHx8IGUgPCAwKSByZXR1cm47CiAgICAgICAgICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHJldHVybiB2b2lkIGoub25lKHRoaXMuX2VsZW1lbnQsIHRlLCAoKSA9PiB0aGlzLnRvKGUpKTsKICAgICAgICAgICAgaWYgKHQgPT09IGUpIHJldHVybiB0aGlzLnBhdXNlKCksIHZvaWQgdGhpcy5jeWNsZSgpOwogICAgICAgICAgICBjb25zdCBuID0gZSA+IHQgPyBLIDogUTsKICAgICAgICAgICAgdGhpcy5fc2xpZGUobiwgdGhpcy5faXRlbXNbZV0pCiAgICAgICAgfQogICAgICAgIF9nZXRDb25maWcoZSkgewogICAgICAgICAgICByZXR1cm4gZSA9IHsgLi4uWCwKICAgICAgICAgICAgICAgIC4uLlUuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCksCiAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGUgOiB7fQogICAgICAgICAgICB9LCBzKFksIGUsIEcpLCBlCiAgICAgICAgfQogICAgICAgIF9oYW5kbGVTd2lwZSgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IE1hdGguYWJzKHRoaXMudG91Y2hEZWx0YVgpOwogICAgICAgICAgICBpZiAoZSA8PSA0MCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB0ID0gZSAvIHRoaXMudG91Y2hEZWx0YVg7CiAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwLCB0ICYmIHRoaXMuX3NsaWRlKHQgPiAwID8gSiA6IFopCiAgICAgICAgfQogICAgICAgIF9hZGRFdmVudExpc3RlbmVycygpIHsKICAgICAgICAgICAgdGhpcy5fY29uZmlnLmtleWJvYXJkICYmIGoub24odGhpcy5fZWxlbWVudCwgImtleWRvd24uYnMuY2Fyb3VzZWwiLCBlID0+IHRoaXMuX2tleWRvd24oZSkpLCAiaG92ZXIiID09PSB0aGlzLl9jb25maWcucGF1c2UgJiYgKGoub24odGhpcy5fZWxlbWVudCwgIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLCBlID0+IHRoaXMucGF1c2UoZSkpLCBqLm9uKHRoaXMuX2VsZW1lbnQsICJtb3VzZWxlYXZlLmJzLmNhcm91c2VsIiwgZSA9PiB0aGlzLmN5Y2xlKGUpKSksIHRoaXMuX2NvbmZpZy50b3VjaCAmJiB0aGlzLl90b3VjaFN1cHBvcnRlZCAmJiB0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCkKICAgICAgICB9CiAgICAgICAgX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSBlID0+IHRoaXMuX3BvaW50ZXJFdmVudCAmJiAoInBlbiIgPT09IGUucG9pbnRlclR5cGUgfHwgInRvdWNoIiA9PT0gZS5wb2ludGVyVHlwZSksCiAgICAgICAgICAgICAgICB0ID0gdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgZSh0KSA/IHRoaXMudG91Y2hTdGFydFggPSB0LmNsaWVudFggOiB0aGlzLl9wb2ludGVyRXZlbnQgfHwgKHRoaXMudG91Y2hTdGFydFggPSB0LnRvdWNoZXNbMF0uY2xpZW50WCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBuID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaERlbHRhWCA9IGUudG91Y2hlcyAmJiBlLnRvdWNoZXMubGVuZ3RoID4gMSA/IDAgOiBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMudG91Y2hTdGFydFgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpID0gdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgZSh0KSAmJiAodGhpcy50b3VjaERlbHRhWCA9IHQuY2xpZW50WCAtIHRoaXMudG91Y2hTdGFydFgpLCB0aGlzLl9oYW5kbGVTd2lwZSgpLCAiaG92ZXIiID09PSB0aGlzLl9jb25maWcucGF1c2UgJiYgKHRoaXMucGF1c2UoKSwgdGhpcy50b3VjaFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KSwgdGhpcy50b3VjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KGUgPT4gdGhpcy5jeWNsZShlKSwgNTAwICsgdGhpcy5fY29uZmlnLmludGVydmFsKSkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIFYuZmluZCgiLmNhcm91c2VsLWl0ZW0gaW1nIiwgdGhpcy5fZWxlbWVudCkuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgIGoub24oZSwgImRyYWdzdGFydC5icy5jYXJvdXNlbCIsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKQogICAgICAgICAgICB9KSwgdGhpcy5fcG9pbnRlckV2ZW50ID8gKGoub24odGhpcy5fZWxlbWVudCwgInBvaW50ZXJkb3duLmJzLmNhcm91c2VsIiwgZSA9PiB0KGUpKSwgai5vbih0aGlzLl9lbGVtZW50LCAicG9pbnRlcnVwLmJzLmNhcm91c2VsIiwgZSA9PiBpKGUpKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwb2ludGVyLWV2ZW50IikpIDogKGoub24odGhpcy5fZWxlbWVudCwgInRvdWNoc3RhcnQuYnMuY2Fyb3VzZWwiLCBlID0+IHQoZSkpLCBqLm9uKHRoaXMuX2VsZW1lbnQsICJ0b3VjaG1vdmUuYnMuY2Fyb3VzZWwiLCBlID0+IG4oZSkpLCBqLm9uKHRoaXMuX2VsZW1lbnQsICJ0b3VjaGVuZC5icy5jYXJvdXNlbCIsIGUgPT4gaShlKSkpCiAgICAgICAgfQogICAgICAgIF9rZXlkb3duKGUpIHsKICAgICAgICAgICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9IGVlW2Uua2V5XTsKICAgICAgICAgICAgdCAmJiAoZS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLl9zbGlkZSh0KSkKICAgICAgICB9CiAgICAgICAgX2dldEl0ZW1JbmRleChlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pdGVtcyA9IGUgJiYgZS5wYXJlbnROb2RlID8gVi5maW5kKCIuY2Fyb3VzZWwtaXRlbSIsIGUucGFyZW50Tm9kZSkgOiBbXSwgdGhpcy5faXRlbXMuaW5kZXhPZihlKQogICAgICAgIH0KICAgICAgICBfZ2V0SXRlbUJ5T3JkZXIoZSwgdCkgewogICAgICAgICAgICBjb25zdCBuID0gZSA9PT0gSzsKICAgICAgICAgICAgcmV0dXJuIGIodGhpcy5faXRlbXMsIHQsIG4sIHRoaXMuX2NvbmZpZy53cmFwKQogICAgICAgIH0KICAgICAgICBfdHJpZ2dlclNsaWRlRXZlbnQoZSwgdCkgewogICAgICAgICAgICBjb25zdCBuID0gdGhpcy5fZ2V0SXRlbUluZGV4KGUpLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuX2dldEl0ZW1JbmRleChWLmZpbmRPbmUoaWUsIHRoaXMuX2VsZW1lbnQpKTsKICAgICAgICAgICAgcmV0dXJuIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2xpZGUuYnMuY2Fyb3VzZWwiLCB7CiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBlLAogICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0LAogICAgICAgICAgICAgICAgZnJvbTogaSwKICAgICAgICAgICAgICAgIHRvOiBuCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIF9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KGUpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gVi5maW5kT25lKCIuYWN0aXZlIiwgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpOwogICAgICAgICAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKG5lKSwgdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IFYuZmluZCgiW2RhdGEtYnMtdGFyZ2V0XSIsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgbi5sZW5ndGg7IHQrKykKICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyLnBhcnNlSW50KG5bdF0uZ2V0QXR0cmlidXRlKCJkYXRhLWJzLXNsaWRlLXRvIiksIDEwKSA9PT0gdGhpcy5fZ2V0SXRlbUluZGV4KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bdF0uY2xhc3NMaXN0LmFkZChuZSksIG5bdF0uc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBfdXBkYXRlSW50ZXJ2YWwoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9hY3RpdmVFbGVtZW50IHx8IFYuZmluZE9uZShpZSwgdGhpcy5fZWxlbWVudCk7CiAgICAgICAgICAgIGlmICghZSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB0ID0gTnVtYmVyLnBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLWludGVydmFsIiksIDEwKTsKICAgICAgICAgICAgdCA/ICh0aGlzLl9jb25maWcuZGVmYXVsdEludGVydmFsID0gdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbCB8fCB0aGlzLl9jb25maWcuaW50ZXJ2YWwsIHRoaXMuX2NvbmZpZy5pbnRlcnZhbCA9IHQpIDogdGhpcy5fY29uZmlnLmludGVydmFsID0gdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbCB8fCB0aGlzLl9jb25maWcuaW50ZXJ2YWwKICAgICAgICB9CiAgICAgICAgX3NsaWRlKGUsIHQpIHsKICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoZSksCiAgICAgICAgICAgICAgICBpID0gVi5maW5kT25lKGllLCB0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9nZXRJdGVtSW5kZXgoaSksCiAgICAgICAgICAgICAgICBvID0gdCB8fCB0aGlzLl9nZXRJdGVtQnlPcmRlcihuLCBpKSwKICAgICAgICAgICAgICAgIGEgPSB0aGlzLl9nZXRJdGVtSW5kZXgobyksCiAgICAgICAgICAgICAgICBzID0gQm9vbGVhbih0aGlzLl9pbnRlcnZhbCksCiAgICAgICAgICAgICAgICBsID0gbiA9PT0gSywKICAgICAgICAgICAgICAgIGMgPSBsID8gImNhcm91c2VsLWl0ZW0tc3RhcnQiIDogImNhcm91c2VsLWl0ZW0tZW5kIiwKICAgICAgICAgICAgICAgIHUgPSBsID8gImNhcm91c2VsLWl0ZW0tbmV4dCIgOiAiY2Fyb3VzZWwtaXRlbS1wcmV2IiwKICAgICAgICAgICAgICAgIGQgPSB0aGlzLl9vcmRlclRvRGlyZWN0aW9uKG4pOwogICAgICAgICAgICBpZiAobyAmJiBvLmNsYXNzTGlzdC5jb250YWlucyhuZSkpIHJldHVybiB2b2lkKHRoaXMuX2lzU2xpZGluZyA9ICExKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2lzU2xpZGluZykgcmV0dXJuOwogICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlclNsaWRlRXZlbnQobywgZCkuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuOwogICAgICAgICAgICBpZiAoIWkgfHwgIW8pIHJldHVybjsKICAgICAgICAgICAgdGhpcy5faXNTbGlkaW5nID0gITAsIHMgJiYgdGhpcy5wYXVzZSgpLCB0aGlzLl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KG8pLCB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbzsKICAgICAgICAgICAgY29uc3QgZiA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0ZSwgewogICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IG8sCiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBkLAogICAgICAgICAgICAgICAgICAgIGZyb206IHIsCiAgICAgICAgICAgICAgICAgICAgdG86IGEKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2xpZGUiKSkgewogICAgICAgICAgICAgICAgby5jbGFzc0xpc3QuYWRkKHUpLCBoKG8pLCBpLmNsYXNzTGlzdC5hZGQoYyksIG8uY2xhc3NMaXN0LmFkZChjKTsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgby5jbGFzc0xpc3QucmVtb3ZlKGMsIHUpLCBvLmNsYXNzTGlzdC5hZGQobmUpLCBpLmNsYXNzTGlzdC5yZW1vdmUobmUsIHUsIGMpLCB0aGlzLl9pc1NsaWRpbmcgPSAhMSwgc2V0VGltZW91dChmLCAwKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soZSwgaSwgITApCiAgICAgICAgICAgIH0gZWxzZSBpLmNsYXNzTGlzdC5yZW1vdmUobmUpLCBvLmNsYXNzTGlzdC5hZGQobmUpLCB0aGlzLl9pc1NsaWRpbmcgPSAhMSwgZigpOwogICAgICAgICAgICBzICYmIHRoaXMuY3ljbGUoKQogICAgICAgIH0KICAgICAgICBfZGlyZWN0aW9uVG9PcmRlcihlKSB7CiAgICAgICAgICAgIHJldHVybiBbSiwgWl0uaW5jbHVkZXMoZSkgPyBnKCkgPyBlID09PSBaID8gUSA6IEsgOiBlID09PSBaID8gSyA6IFEgOiBlCiAgICAgICAgfQogICAgICAgIF9vcmRlclRvRGlyZWN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIFtLLCBRXS5pbmNsdWRlcyhlKSA/IGcoKSA/IGUgPT09IFEgPyBaIDogSiA6IGUgPT09IFEgPyBKIDogWiA6IGUKICAgICAgICB9CiAgICAgICAgc3RhdGljIGNhcm91c2VsSW50ZXJmYWNlKGUsIHQpIHsKICAgICAgICAgICAgY29uc3QgbiA9IHJlLmdldE9yQ3JlYXRlSW5zdGFuY2UoZSwgdCk7CiAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICBfY29uZmlnOiBpCiAgICAgICAgICAgIH0gPSBuOwogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAoaSA9IHsgLi4uaSwKICAgICAgICAgICAgICAgIC4uLnQKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNvbnN0IHIgPSAic3RyaW5nIiA9PSB0eXBlb2YgdCA/IHQgOiBpLnNsaWRlOwogICAgICAgICAgICBpZiAoIm51bWJlciIgPT0gdHlwZW9mIHQpIG4udG8odCk7CiAgICAgICAgICAgIGVsc2UgaWYgKCJzdHJpbmciID09IHR5cGVvZiByKSB7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBuW3JdKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7cn0iYCk7CiAgICAgICAgICAgICAgICBuW3JdKCkKICAgICAgICAgICAgfSBlbHNlIGkuaW50ZXJ2YWwgJiYgaS5yaWRlICYmIChuLnBhdXNlKCksIG4uY3ljbGUoKSkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmUuY2Fyb3VzZWxJbnRlcmZhY2UodGhpcywgZSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBkYXRhQXBpQ2xpY2tIYW5kbGVyKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IGkodGhpcyk7CiAgICAgICAgICAgIGlmICghdCB8fCAhdC5jbGFzc0xpc3QuY29udGFpbnMoImNhcm91c2VsIikpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgbiA9IHsgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0KSwKICAgICAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgciA9IHRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLXNsaWRlLXRvIik7CiAgICAgICAgICAgIHIgJiYgKG4uaW50ZXJ2YWwgPSAhMSksIHJlLmNhcm91c2VsSW50ZXJmYWNlKHQsIG4pLCByICYmIHJlLmdldEluc3RhbmNlKHQpLnRvKHIpLCBlLnByZXZlbnREZWZhdWx0KCkKICAgICAgICB9CiAgICB9CiAgICBqLm9uKGRvY3VtZW50LCAiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCAiW2RhdGEtYnMtc2xpZGVdLCBbZGF0YS1icy1zbGlkZS10b10iLCByZS5kYXRhQXBpQ2xpY2tIYW5kbGVyKSwgai5vbih3aW5kb3csICJsb2FkLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwgKCkgPT4gewogICAgICAgIGNvbnN0IGUgPSBWLmZpbmQoJ1tkYXRhLWJzLXJpZGU9ImNhcm91c2VsIl0nKTsKICAgICAgICBmb3IgKGxldCB0ID0gMCwgbiA9IGUubGVuZ3RoOyB0IDwgbjsgdCsrKSByZS5jYXJvdXNlbEludGVyZmFjZShlW3RdLCByZS5nZXRJbnN0YW5jZShlW3RdKSkKICAgIH0pLCBtKHJlKTsKICAgIGNvbnN0IG9lID0gImNvbGxhcHNlIiwKICAgICAgICBhZSA9IHsKICAgICAgICAgICAgdG9nZ2xlOiAhMCwKICAgICAgICAgICAgcGFyZW50OiBudWxsCiAgICAgICAgfSwKICAgICAgICBzZSA9IHsKICAgICAgICAgICAgdG9nZ2xlOiAiYm9vbGVhbiIsCiAgICAgICAgICAgIHBhcmVudDogIihudWxsfGVsZW1lbnQpIgogICAgICAgIH0sCiAgICAgICAgbGUgPSAic2hvdyIsCiAgICAgICAgY2UgPSAiY29sbGFwc2UiLAogICAgICAgIHVlID0gImNvbGxhcHNpbmciLAogICAgICAgIGRlID0gImNvbGxhcHNlZCIsCiAgICAgICAgaGUgPSAiOnNjb3BlIC5jb2xsYXBzZSAuY29sbGFwc2UiLAogICAgICAgIGZlID0gJ1tkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiXSc7CiAgICBjbGFzcyBwZSBleHRlbmRzIFIgewogICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgc3VwZXIoZSksIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcodCksIHRoaXMuX3RyaWdnZXJBcnJheSA9IFtdOwogICAgICAgICAgICBjb25zdCBpID0gVi5maW5kKGZlKTsKICAgICAgICAgICAgZm9yIChsZXQgZSA9IDAsIHQgPSBpLmxlbmd0aDsgZSA8IHQ7IGUrKykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGlbZV0sCiAgICAgICAgICAgICAgICAgICAgciA9IG4odCksCiAgICAgICAgICAgICAgICAgICAgbyA9IFYuZmluZChyKS5maWx0ZXIoZSA9PiBlID09PSB0aGlzLl9lbGVtZW50KTsKICAgICAgICAgICAgICAgIG51bGwgIT09IHIgJiYgby5sZW5ndGggJiYgKHRoaXMuX3NlbGVjdG9yID0gciwgdGhpcy5fdHJpZ2dlckFycmF5LnB1c2godCkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNoaWxkcmVuKCksIHRoaXMuX2NvbmZpZy5wYXJlbnQgfHwgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdGhpcy5faXNTaG93bigpKSwgdGhpcy5fY29uZmlnLnRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSgpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgcmV0dXJuIGFlCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgcmV0dXJuIG9lCiAgICAgICAgfQogICAgICAgIHRvZ2dsZSgpIHsKICAgICAgICAgICAgdGhpcy5faXNTaG93bigpID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coKQogICAgICAgIH0KICAgICAgICBzaG93KCkgewogICAgICAgICAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8IHRoaXMuX2lzU2hvd24oKSkgcmV0dXJuOwogICAgICAgICAgICBsZXQgZSwgdCA9IFtdOwogICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLnBhcmVudCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IFYuZmluZChoZSwgdGhpcy5fY29uZmlnLnBhcmVudCk7CiAgICAgICAgICAgICAgICB0ID0gVi5maW5kKCIuY29sbGFwc2Uuc2hvdywgLmNvbGxhcHNlLmNvbGxhcHNpbmciLCB0aGlzLl9jb25maWcucGFyZW50KS5maWx0ZXIodCA9PiAhZS5pbmNsdWRlcyh0KSkKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBuID0gVi5maW5kT25lKHRoaXMuX3NlbGVjdG9yKTsKICAgICAgICAgICAgaWYgKHQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5maW5kKGUgPT4gbiAhPT0gZSk7CiAgICAgICAgICAgICAgICBpZiAoZSA9IGkgPyBwZS5nZXRJbnN0YW5jZShpKSA6IG51bGwsIGUgJiYgZS5faXNUcmFuc2l0aW9uaW5nKSByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93LmJzLmNvbGxhcHNlIikuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuOwogICAgICAgICAgICB0LmZvckVhY2godCA9PiB7CiAgICAgICAgICAgICAgICBuICE9PSB0ICYmIHBlLmdldE9yQ3JlYXRlSW5zdGFuY2UodCwgewogICAgICAgICAgICAgICAgICAgIHRvZ2dsZTogITEKICAgICAgICAgICAgICAgIH0pLmhpZGUoKSwgZSB8fCBGLnNldCh0LCAiYnMuY29sbGFwc2UiLCBudWxsKQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2dldERpbWVuc2lvbigpOwogICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2UpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodWUpLCB0aGlzLl9lbGVtZW50LnN0eWxlW2ldID0gMCwgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgITApLCB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSAhMDsKICAgICAgICAgICAgY29uc3QgciA9ICJzY3JvbGwiICsgKGlbMF0udG9VcHBlckNhc2UoKSArIGkuc2xpY2UoMSkpOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodWUpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoY2UsIGxlKSwgdGhpcy5fZWxlbWVudC5zdHlsZVtpXSA9ICIiLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLmNvbGxhcHNlIikKICAgICAgICAgICAgfSwgdGhpcy5fZWxlbWVudCwgITApLCB0aGlzLl9lbGVtZW50LnN0eWxlW2ldID0gdGhpcy5fZWxlbWVudFtyXSArICJweCIKICAgICAgICB9CiAgICAgICAgaGlkZSgpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCAhdGhpcy5faXNTaG93bigpKSByZXR1cm47CiAgICAgICAgICAgIGlmIChqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGUuYnMuY29sbGFwc2UiKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9nZXREaW1lbnNpb24oKTsKICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtlXSA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbZV0gKyAicHgiLCBoKHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodWUpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2UsIGxlKTsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg7CiAgICAgICAgICAgIGZvciAobGV0IGUgPSAwOyBlIDwgdDsgZSsrKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fdHJpZ2dlckFycmF5W2VdLAogICAgICAgICAgICAgICAgICAgIG4gPSBpKHQpOwogICAgICAgICAgICAgICAgbiAmJiAhdGhpcy5faXNTaG93bihuKSAmJiB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RdLCAhMSkKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSAhMCwgdGhpcy5fZWxlbWVudC5zdHlsZVtlXSA9ICIiLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodWUpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoY2UpLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGRlbi5icy5jb2xsYXBzZSIpCiAgICAgICAgICAgIH0sIHRoaXMuX2VsZW1lbnQsICEwKQogICAgICAgIH0KICAgICAgICBfaXNTaG93bihlID0gdGhpcy5fZWxlbWVudCkgewogICAgICAgICAgICByZXR1cm4gZS5jbGFzc0xpc3QuY29udGFpbnMobGUpCiAgICAgICAgfQogICAgICAgIF9nZXRDb25maWcoZSkgewogICAgICAgICAgICByZXR1cm4gKGUgPSB7IC4uLmFlLAogICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgIC4uLmUKICAgICAgICAgICAgfSkudG9nZ2xlID0gQm9vbGVhbihlLnRvZ2dsZSksIGUucGFyZW50ID0gYShlLnBhcmVudCksIHMob2UsIGUsIHNlKSwgZQogICAgICAgIH0KICAgICAgICBfZ2V0RGltZW5zaW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImNvbGxhcHNlLWhvcml6b250YWwiKSA/ICJ3aWR0aCIgOiAiaGVpZ2h0IgogICAgICAgIH0KICAgICAgICBfaW5pdGlhbGl6ZUNoaWxkcmVuKCkgewogICAgICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJlbnQpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgZSA9IFYuZmluZChoZSwgdGhpcy5fY29uZmlnLnBhcmVudCk7CiAgICAgICAgICAgIFYuZmluZChmZSwgdGhpcy5fY29uZmlnLnBhcmVudCkuZmlsdGVyKHQgPT4gIWUuaW5jbHVkZXModCkpLmZvckVhY2goZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gaShlKTsKICAgICAgICAgICAgICAgIHQgJiYgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKFtlXSwgdGhpcy5faXNTaG93bih0KSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhlLCB0KSB7CiAgICAgICAgICAgIGUubGVuZ3RoICYmIGUuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgIHQgPyBlLmNsYXNzTGlzdC5yZW1vdmUoZGUpIDogZS5jbGFzc0xpc3QuYWRkKGRlKSwgZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCB0KQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0ge307CiAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAvc2hvd3xoaWRlLy50ZXN0KGUpICYmICh0LnRvZ2dsZSA9ICExKTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBwZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gbltlXSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke2V9ImApOwogICAgICAgICAgICAgICAgICAgIG5bZV0oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9CiAgICBqLm9uKGRvY3VtZW50LCAiY2xpY2suYnMuY29sbGFwc2UuZGF0YS1hcGkiLCBmZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAoIkEiID09PSBlLnRhcmdldC50YWdOYW1lIHx8IGUuZGVsZWdhdGVUYXJnZXQgJiYgIkEiID09PSBlLmRlbGVnYXRlVGFyZ2V0LnRhZ05hbWUpICYmIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICBjb25zdCB0ID0gbih0aGlzKTsKICAgICAgICBWLmZpbmQodCkuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgcGUuZ2V0T3JDcmVhdGVJbnN0YW5jZShlLCB7CiAgICAgICAgICAgICAgICB0b2dnbGU6ICExCiAgICAgICAgICAgIH0pLnRvZ2dsZSgpCiAgICAgICAgfSkKICAgIH0pKSwgbShwZSk7CiAgICB2YXIgZ2UgPSAidG9wIiwKICAgICAgICBtZSA9ICJib3R0b20iLAogICAgICAgIHZlID0gInJpZ2h0IiwKICAgICAgICB5ZSA9ICJsZWZ0IiwKICAgICAgICBiZSA9ICJhdXRvIiwKICAgICAgICB3ZSA9IFtnZSwgbWUsIHZlLCB5ZV0sCiAgICAgICAgeGUgPSAic3RhcnQiLAogICAgICAgIF9lID0gImVuZCIsCiAgICAgICAgU2UgPSAiY2xpcHBpbmdQYXJlbnRzIiwKICAgICAgICBDZSA9ICJ2aWV3cG9ydCIsCiAgICAgICAga2UgPSAicG9wcGVyIiwKICAgICAgICBUZSA9ICJyZWZlcmVuY2UiLAogICAgICAgIEFlID0gd2UucmVkdWNlKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLmNvbmNhdChbdCArICItIiArIHhlLCB0ICsgIi0iICsgX2VdKQogICAgICAgIH0pLCBbXSksCiAgICAgICAgRWUgPSBbXS5jb25jYXQod2UsIFtiZV0pLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gZS5jb25jYXQoW3QsIHQgKyAiLSIgKyB4ZSwgdCArICItIiArIF9lXSkKICAgICAgICB9KSwgW10pLAogICAgICAgIERlID0gImJlZm9yZVJlYWQiLAogICAgICAgIE9lID0gImFmdGVyUmVhZCIsCiAgICAgICAgTWUgPSAiYmVmb3JlTWFpbiIsCiAgICAgICAgSWUgPSAiYWZ0ZXJNYWluIiwKICAgICAgICBMZSA9ICJiZWZvcmVXcml0ZSIsCiAgICAgICAgUGUgPSAiYWZ0ZXJXcml0ZSIsCiAgICAgICAgamUgPSBbRGUsICJyZWFkIiwgT2UsIE1lLCAibWFpbiIsIEllLCBMZSwgIndyaXRlIiwgUGVdOwoKICAgIGZ1bmN0aW9uIE5lKGUpIHsKICAgICAgICByZXR1cm4gZSA/IChlLm5vZGVOYW1lIHx8ICIiKS50b0xvd2VyQ2FzZSgpIDogbnVsbAogICAgfQoKICAgIGZ1bmN0aW9uIEZlKGUpIHsKICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gd2luZG93OwogICAgICAgIGlmICgiW29iamVjdCBXaW5kb3ddIiAhPT0gZS50b1N0cmluZygpKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5vd25lckRvY3VtZW50OwogICAgICAgICAgICByZXR1cm4gdCAmJiB0LmRlZmF1bHRWaWV3IHx8IHdpbmRvdwogICAgICAgIH0KICAgICAgICByZXR1cm4gZQogICAgfQoKICAgIGZ1bmN0aW9uIFJlKGUpIHsKICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEZlKGUpLkVsZW1lbnQgfHwgZSBpbnN0YW5jZW9mIEVsZW1lbnQKICAgIH0KCiAgICBmdW5jdGlvbiAkZShlKSB7CiAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBGZShlKS5IVE1MRWxlbWVudCB8fCBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQKICAgIH0KCiAgICBmdW5jdGlvbiB6ZShlKSB7CiAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTaGFkb3dSb290ICYmIChlIGluc3RhbmNlb2YgRmUoZSkuU2hhZG93Um9vdCB8fCBlIGluc3RhbmNlb2YgU2hhZG93Um9vdCkKICAgIH0KICAgIGNvbnN0IEhlID0gewogICAgICAgIG5hbWU6ICJhcHBseVN0eWxlcyIsCiAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgcGhhc2U6ICJ3cml0ZSIsCiAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlOwogICAgICAgICAgICBPYmplY3Qua2V5cyh0LmVsZW1lbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHQuc3R5bGVzW2VdIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIGkgPSB0LmF0dHJpYnV0ZXNbZV0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgciA9IHQuZWxlbWVudHNbZV07CiAgICAgICAgICAgICAgICAkZShyKSAmJiBOZShyKSAmJiAoT2JqZWN0LmFzc2lnbihyLnN0eWxlLCBuKSwgT2JqZWN0LmtleXMoaSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gaVtlXTsKICAgICAgICAgICAgICAgICAgICAhMSA9PT0gdCA/IHIucmVtb3ZlQXR0cmlidXRlKGUpIDogci5zZXRBdHRyaWJ1dGUoZSwgITAgPT09IHQgPyAiIiA6IHQpCiAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgZWZmZWN0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5zdGF0ZSwKICAgICAgICAgICAgICAgIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB0Lm9wdGlvbnMuc3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogIjAiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhcnJvdzogewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOiB7fQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odC5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIG4ucG9wcGVyKSwgdC5zdHlsZXMgPSBuLCB0LmVsZW1lbnRzLmFycm93ICYmIE9iamVjdC5hc3NpZ24odC5lbGVtZW50cy5hcnJvdy5zdHlsZSwgbi5hcnJvdyksCiAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0LmVsZW1lbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5lbGVtZW50c1tlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmF0dHJpYnV0ZXNbZV0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gT2JqZWN0LmtleXModC5zdHlsZXMuaGFzT3duUHJvcGVydHkoZSkgPyB0LnN0eWxlc1tlXSA6IG5bZV0pLnJlZHVjZSgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdID0gIiIsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRlKGkpICYmIE5lKGkpICYmIChPYmplY3QuYXNzaWduKGkuc3R5bGUsIG8pLCBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnJlbW92ZUF0dHJpYnV0ZShlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZXF1aXJlczogWyJjb21wdXRlU3R5bGVzIl0KICAgIH07CgogICAgZnVuY3Rpb24gQmUoZSkgewogICAgICAgIHJldHVybiBlLnNwbGl0KCItIilbMF0KICAgIH0KCiAgICBmdW5jdGlvbiBXZShlLCB0KSB7CiAgICAgICAgdmFyIG4gPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHdpZHRoOiBuLndpZHRoIC8gMSwKICAgICAgICAgICAgaGVpZ2h0OiBuLmhlaWdodCAvIDEsCiAgICAgICAgICAgIHRvcDogbi50b3AgLyAxLAogICAgICAgICAgICByaWdodDogbi5yaWdodCAvIDEsCiAgICAgICAgICAgIGJvdHRvbTogbi5ib3R0b20gLyAxLAogICAgICAgICAgICBsZWZ0OiBuLmxlZnQgLyAxLAogICAgICAgICAgICB4OiBuLmxlZnQgLyAxLAogICAgICAgICAgICB5OiBuLnRvcCAvIDEKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcWUoZSkgewogICAgICAgIHZhciB0ID0gV2UoZSksCiAgICAgICAgICAgIG4gPSBlLm9mZnNldFdpZHRoLAogICAgICAgICAgICBpID0gZS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHQud2lkdGggLSBuKSA8PSAxICYmIChuID0gdC53aWR0aCksIE1hdGguYWJzKHQuaGVpZ2h0IC0gaSkgPD0gMSAmJiAoaSA9IHQuaGVpZ2h0KSwgewogICAgICAgICAgICB4OiBlLm9mZnNldExlZnQsCiAgICAgICAgICAgIHk6IGUub2Zmc2V0VG9wLAogICAgICAgICAgICB3aWR0aDogbiwKICAgICAgICAgICAgaGVpZ2h0OiBpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIFVlKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IHQuZ2V0Um9vdE5vZGUgJiYgdC5nZXRSb290Tm9kZSgpOwogICAgICAgIGlmIChlLmNvbnRhaW5zKHQpKSByZXR1cm4gITA7CiAgICAgICAgaWYgKG4gJiYgemUobikpIHsKICAgICAgICAgICAgdmFyIGkgPSB0OwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBpZiAoaSAmJiBlLmlzU2FtZU5vZGUoaSkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIGkgPSBpLnBhcmVudE5vZGUgfHwgaS5ob3N0CiAgICAgICAgICAgIH0gd2hpbGUgKGkpCiAgICAgICAgfQogICAgICAgIHJldHVybiAhMQogICAgfQoKICAgIGZ1bmN0aW9uIFZlKGUpIHsKICAgICAgICByZXR1cm4gRmUoZSkuZ2V0Q29tcHV0ZWRTdHlsZShlKQogICAgfQoKICAgIGZ1bmN0aW9uIFllKGUpIHsKICAgICAgICByZXR1cm4gWyJ0YWJsZSIsICJ0ZCIsICJ0aCJdLmluZGV4T2YoTmUoZSkpID49IDAKICAgIH0KCiAgICBmdW5jdGlvbiBYZShlKSB7CiAgICAgICAgcmV0dXJuICgoUmUoZSkgPyBlLm93bmVyRG9jdW1lbnQgOiBlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudAogICAgfQoKICAgIGZ1bmN0aW9uIEdlKGUpIHsKICAgICAgICByZXR1cm4gImh0bWwiID09PSBOZShlKSA/IGUgOiBlLmFzc2lnbmVkU2xvdCB8fCBlLnBhcmVudE5vZGUgfHwgKHplKGUpID8gZS5ob3N0IDogbnVsbCkgfHwgWGUoZSkKICAgIH0KCiAgICBmdW5jdGlvbiBLZShlKSB7CiAgICAgICAgcmV0dXJuICRlKGUpICYmICJmaXhlZCIgIT09IFZlKGUpLnBvc2l0aW9uID8gZS5vZmZzZXRQYXJlbnQgOiBudWxsCiAgICB9CgogICAgZnVuY3Rpb24gUWUoZSkgewogICAgICAgIGZvciAodmFyIHQgPSBGZShlKSwgbiA9IEtlKGUpOyBuICYmIFllKG4pICYmICJzdGF0aWMiID09PSBWZShuKS5wb3NpdGlvbjspIG4gPSBLZShuKTsKICAgICAgICByZXR1cm4gbiAmJiAoImh0bWwiID09PSBOZShuKSB8fCAiYm9keSIgPT09IE5lKG4pICYmICJzdGF0aWMiID09PSBWZShuKS5wb3NpdGlvbikgPyB0IDogbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gLTEgIT09IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik7CiAgICAgICAgICAgIGlmICgtMSAhPT0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJUcmlkZW50IikgJiYgJGUoZSkgJiYgImZpeGVkIiA9PT0gVmUoZSkucG9zaXRpb24pIHJldHVybiBudWxsOwogICAgICAgICAgICBmb3IgKHZhciBuID0gR2UoZSk7ICRlKG4pICYmIFsiaHRtbCIsICJib2R5Il0uaW5kZXhPZihOZShuKSkgPCAwOykgewogICAgICAgICAgICAgICAgdmFyIGkgPSBWZShuKTsKICAgICAgICAgICAgICAgIGlmICgibm9uZSIgIT09IGkudHJhbnNmb3JtIHx8ICJub25lIiAhPT0gaS5wZXJzcGVjdGl2ZSB8fCAicGFpbnQiID09PSBpLmNvbnRhaW4gfHwgLTEgIT09IFsidHJhbnNmb3JtIiwgInBlcnNwZWN0aXZlIl0uaW5kZXhPZihpLndpbGxDaGFuZ2UpIHx8IHQgJiYgImZpbHRlciIgPT09IGkud2lsbENoYW5nZSB8fCB0ICYmIGkuZmlsdGVyICYmICJub25lIiAhPT0gaS5maWx0ZXIpIHJldHVybiBuOwogICAgICAgICAgICAgICAgbiA9IG4ucGFyZW50Tm9kZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgfShlKSB8fCB0CiAgICB9CgogICAgZnVuY3Rpb24gWmUoZSkgewogICAgICAgIHJldHVybiBbInRvcCIsICJib3R0b20iXS5pbmRleE9mKGUpID49IDAgPyAieCIgOiAieSIKICAgIH0KICAgIHZhciBKZSA9IE1hdGgubWF4LAogICAgICAgIGV0ID0gTWF0aC5taW4sCiAgICAgICAgdHQgPSBNYXRoLnJvdW5kOwoKICAgIGZ1bmN0aW9uIG50KGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gSmUoZSwgZXQodCwgbikpCiAgICB9CgogICAgZnVuY3Rpb24gaXQoZSkgewogICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB7CiAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgcmlnaHQ6IDAsCiAgICAgICAgICAgIGJvdHRvbTogMCwKICAgICAgICAgICAgbGVmdDogMAogICAgICAgIH0sIGUpCiAgICB9CgogICAgZnVuY3Rpb24gcnQoZSwgdCkgewogICAgICAgIHJldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICByZXR1cm4gdFtuXSA9IGUsIHQKICAgICAgICB9KSwge30pCiAgICB9CiAgICBjb25zdCBvdCA9IHsKICAgICAgICBuYW1lOiAiYXJyb3ciLAogICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgIHBoYXNlOiAibWFpbiIsCiAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSBlLnN0YXRlLAogICAgICAgICAgICAgICAgaSA9IGUubmFtZSwKICAgICAgICAgICAgICAgIHIgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICBvID0gbi5lbGVtZW50cy5hcnJvdywKICAgICAgICAgICAgICAgIGEgPSBuLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cywKICAgICAgICAgICAgICAgIHMgPSBCZShuLnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICBsID0gWmUocyksCiAgICAgICAgICAgICAgICBjID0gW3llLCB2ZV0uaW5kZXhPZihzKSA+PSAwID8gImhlaWdodCIgOiAid2lkdGgiOwogICAgICAgICAgICBpZiAobyAmJiBhKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0KCJudW1iZXIiICE9IHR5cGVvZihlID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSA/IGUoT2JqZWN0LmFzc2lnbih7fSwgdC5yZWN0cywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiB0LnBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBlKSA/IGUgOiBydChlLCB3ZSkpCiAgICAgICAgICAgICAgICAgICAgfShyLnBhZGRpbmcsIG4pLAogICAgICAgICAgICAgICAgICAgIGQgPSBxZShvKSwKICAgICAgICAgICAgICAgICAgICBoID0gInkiID09PSBsID8gZ2UgOiB5ZSwKICAgICAgICAgICAgICAgICAgICBmID0gInkiID09PSBsID8gbWUgOiB2ZSwKICAgICAgICAgICAgICAgICAgICBwID0gbi5yZWN0cy5yZWZlcmVuY2VbY10gKyBuLnJlY3RzLnJlZmVyZW5jZVtsXSAtIGFbbF0gLSBuLnJlY3RzLnBvcHBlcltjXSwKICAgICAgICAgICAgICAgICAgICBnID0gYVtsXSAtIG4ucmVjdHMucmVmZXJlbmNlW2xdLAogICAgICAgICAgICAgICAgICAgIG0gPSBRZShvKSwKICAgICAgICAgICAgICAgICAgICB2ID0gbSA/ICJ5IiA9PT0gbCA/IG0uY2xpZW50SGVpZ2h0IHx8IDAgOiBtLmNsaWVudFdpZHRoIHx8IDAgOiAwLAogICAgICAgICAgICAgICAgICAgIHkgPSBwIC8gMiAtIGcgLyAyLAogICAgICAgICAgICAgICAgICAgIGIgPSB1W2hdLAogICAgICAgICAgICAgICAgICAgIHcgPSB2IC0gZFtjXSAtIHVbZl0sCiAgICAgICAgICAgICAgICAgICAgeCA9IHYgLyAyIC0gZFtjXSAvIDIgKyB5LAogICAgICAgICAgICAgICAgICAgIF8gPSBudChiLCB4LCB3KSwKICAgICAgICAgICAgICAgICAgICBTID0gbDsKICAgICAgICAgICAgICAgIG4ubW9kaWZpZXJzRGF0YVtpXSA9ICgodCA9IHt9KVtTXSA9IF8sIHQuY2VudGVyT2Zmc2V0ID0gXyAtIHgsIHQpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGVmZmVjdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUuc3RhdGUsCiAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLmVsZW1lbnQsCiAgICAgICAgICAgICAgICBpID0gdm9pZCAwID09PSBuID8gIltkYXRhLXBvcHBlci1hcnJvd10iIDogbjsKICAgICAgICAgICAgbnVsbCAhPSBpICYmICgic3RyaW5nIiAhPSB0eXBlb2YgaSB8fCAoaSA9IHQuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoaSkpKSAmJiBVZSh0LmVsZW1lbnRzLnBvcHBlciwgaSkgJiYgKHQuZWxlbWVudHMuYXJyb3cgPSBpKQogICAgICAgIH0sCiAgICAgICAgcmVxdWlyZXM6IFsicG9wcGVyT2Zmc2V0cyJdLAogICAgICAgIHJlcXVpcmVzSWZFeGlzdHM6IFsicHJldmVudE92ZXJmbG93Il0KICAgIH07CgogICAgZnVuY3Rpb24gYXQoZSkgewogICAgICAgIHJldHVybiBlLnNwbGl0KCItIilbMV0KICAgIH0KICAgIHZhciBzdCA9IHsKICAgICAgICB0b3A6ICJhdXRvIiwKICAgICAgICByaWdodDogImF1dG8iLAogICAgICAgIGJvdHRvbTogImF1dG8iLAogICAgICAgIGxlZnQ6ICJhdXRvIgogICAgfTsKCiAgICBmdW5jdGlvbiBsdChlKSB7CiAgICAgICAgdmFyIHQsIG4gPSBlLnBvcHBlciwKICAgICAgICAgICAgaSA9IGUucG9wcGVyUmVjdCwKICAgICAgICAgICAgciA9IGUucGxhY2VtZW50LAogICAgICAgICAgICBvID0gZS52YXJpYXRpb24sCiAgICAgICAgICAgIGEgPSBlLm9mZnNldHMsCiAgICAgICAgICAgIHMgPSBlLnBvc2l0aW9uLAogICAgICAgICAgICBsID0gZS5ncHVBY2NlbGVyYXRpb24sCiAgICAgICAgICAgIGMgPSBlLmFkYXB0aXZlLAogICAgICAgICAgICB1ID0gZS5yb3VuZE9mZnNldHMsCiAgICAgICAgICAgIGQgPSAhMCA9PT0gdSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS54LAogICAgICAgICAgICAgICAgICAgIG4gPSBlLnksCiAgICAgICAgICAgICAgICAgICAgaSA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHg6IHR0KHR0KHQgKiBpKSAvIGkpIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgeTogdHQodHQobiAqIGkpIC8gaSkgfHwgMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KGEpIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgdSA/IHUoYSkgOiBhLAogICAgICAgICAgICBoID0gZC54LAogICAgICAgICAgICBmID0gdm9pZCAwID09PSBoID8gMCA6IGgsCiAgICAgICAgICAgIHAgPSBkLnksCiAgICAgICAgICAgIGcgPSB2b2lkIDAgPT09IHAgPyAwIDogcCwKICAgICAgICAgICAgbSA9IGEuaGFzT3duUHJvcGVydHkoIngiKSwKICAgICAgICAgICAgdiA9IGEuaGFzT3duUHJvcGVydHkoInkiKSwKICAgICAgICAgICAgeSA9IHllLAogICAgICAgICAgICBiID0gZ2UsCiAgICAgICAgICAgIHcgPSB3aW5kb3c7CiAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgdmFyIHggPSBRZShuKSwKICAgICAgICAgICAgICAgIF8gPSAiY2xpZW50SGVpZ2h0IiwKICAgICAgICAgICAgICAgIFMgPSAiY2xpZW50V2lkdGgiOwogICAgICAgICAgICB4ID09PSBGZShuKSAmJiAic3RhdGljIiAhPT0gVmUoeCA9IFhlKG4pKS5wb3NpdGlvbiAmJiAiYWJzb2x1dGUiID09PSBzICYmIChfID0gInNjcm9sbEhlaWdodCIsIFMgPSAic2Nyb2xsV2lkdGgiKSwgeCA9IHgsIHIgIT09IGdlICYmIChyICE9PSB5ZSAmJiByICE9PSB2ZSB8fCBvICE9PSBfZSkgfHwgKGIgPSBtZSwgZyAtPSB4W19dIC0gaS5oZWlnaHQsIGcgKj0gbCA/IDEgOiAtMSksIHIgIT09IHllICYmIChyICE9PSBnZSAmJiByICE9PSBtZSB8fCBvICE9PSBfZSkgfHwgKHkgPSB2ZSwgZiAtPSB4W1NdIC0gaS53aWR0aCwgZiAqPSBsID8gMSA6IC0xKQogICAgICAgIH0KICAgICAgICB2YXIgQywgayA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICBwb3NpdGlvbjogcwogICAgICAgIH0sIGMgJiYgc3QpOwogICAgICAgIHJldHVybiBsID8gT2JqZWN0LmFzc2lnbih7fSwgaywgKChDID0ge30pW2JdID0gdiA/ICIwIiA6ICIiLCBDW3ldID0gbSA/ICIwIiA6ICIiLCBDLnRyYW5zZm9ybSA9ICh3LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/ICJ0cmFuc2xhdGUoIiArIGYgKyAicHgsICIgKyBnICsgInB4KSIgOiAidHJhbnNsYXRlM2QoIiArIGYgKyAicHgsICIgKyBnICsgInB4LCAwKSIsIEMpKSA6IE9iamVjdC5hc3NpZ24oe30sIGssICgodCA9IHt9KVtiXSA9IHYgPyBnICsgInB4IiA6ICIiLCB0W3ldID0gbSA/IGYgKyAicHgiIDogIiIsIHQudHJhbnNmb3JtID0gIiIsIHQpKQogICAgfQogICAgY29uc3QgY3QgPSB7CiAgICAgICAgbmFtZTogImNvbXB1dGVTdHlsZXMiLAogICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgIHBoYXNlOiAiYmVmb3JlV3JpdGUiLAogICAgICAgIGZuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS5zdGF0ZSwKICAgICAgICAgICAgICAgIG4gPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICBpID0gbi5ncHVBY2NlbGVyYXRpb24sCiAgICAgICAgICAgICAgICByID0gdm9pZCAwID09PSBpIHx8IGksCiAgICAgICAgICAgICAgICBvID0gbi5hZGFwdGl2ZSwKICAgICAgICAgICAgICAgIGEgPSB2b2lkIDAgPT09IG8gfHwgbywKICAgICAgICAgICAgICAgIHMgPSBuLnJvdW5kT2Zmc2V0cywKICAgICAgICAgICAgICAgIGwgPSB2b2lkIDAgPT09IHMgfHwgcywKICAgICAgICAgICAgICAgIGMgPSB7CiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiBCZSh0LnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uOiBhdCh0LnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiB0LmVsZW1lbnRzLnBvcHBlciwKICAgICAgICAgICAgICAgICAgICBwb3BwZXJSZWN0OiB0LnJlY3RzLnBvcHBlciwKICAgICAgICAgICAgICAgICAgICBncHVBY2NlbGVyYXRpb246IHIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIG51bGwgIT0gdC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgJiYgKHQuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHQuc3R5bGVzLnBvcHBlciwgbHQoT2JqZWN0LmFzc2lnbih7fSwgYywgewogICAgICAgICAgICAgICAgb2Zmc2V0czogdC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdC5vcHRpb25zLnN0cmF0ZWd5LAogICAgICAgICAgICAgICAgYWRhcHRpdmU6IGEsCiAgICAgICAgICAgICAgICByb3VuZE9mZnNldHM6IGwKICAgICAgICAgICAgfSkpKSksIG51bGwgIT0gdC5tb2RpZmllcnNEYXRhLmFycm93ICYmICh0LnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHQuc3R5bGVzLmFycm93LCBsdChPYmplY3QuYXNzaWduKHt9LCBjLCB7CiAgICAgICAgICAgICAgICBvZmZzZXRzOiB0Lm1vZGlmaWVyc0RhdGEuYXJyb3csCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgIGFkYXB0aXZlOiAhMSwKICAgICAgICAgICAgICAgIHJvdW5kT2Zmc2V0czogbAogICAgICAgICAgICB9KSkpKSwgdC5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHQuYXR0cmlidXRlcy5wb3BwZXIsIHsKICAgICAgICAgICAgICAgICJkYXRhLXBvcHBlci1wbGFjZW1lbnQiOiB0LnBsYWNlbWVudAogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgZGF0YToge30KICAgIH07CiAgICB2YXIgdXQgPSB7CiAgICAgICAgcGFzc2l2ZTogITAKICAgIH07CiAgICBjb25zdCBkdCA9IHsKICAgICAgICBuYW1lOiAiZXZlbnRMaXN0ZW5lcnMiLAogICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgIHBoYXNlOiAid3JpdGUiLAogICAgICAgIGZuOiBmdW5jdGlvbigpIHt9LAogICAgICAgIGVmZmVjdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUuc3RhdGUsCiAgICAgICAgICAgICAgICBuID0gZS5pbnN0YW5jZSwKICAgICAgICAgICAgICAgIGkgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICByID0gaS5zY3JvbGwsCiAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSByIHx8IHIsCiAgICAgICAgICAgICAgICBhID0gaS5yZXNpemUsCiAgICAgICAgICAgICAgICBzID0gdm9pZCAwID09PSBhIHx8IGEsCiAgICAgICAgICAgICAgICBsID0gRmUodC5lbGVtZW50cy5wb3BwZXIpLAogICAgICAgICAgICAgICAgYyA9IFtdLmNvbmNhdCh0LnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCB0LnNjcm9sbFBhcmVudHMucG9wcGVyKTsKICAgICAgICAgICAgcmV0dXJuIG8gJiYgYy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBuLnVwZGF0ZSwgdXQpCiAgICAgICAgICAgICAgICB9KSksIHMgJiYgbC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBuLnVwZGF0ZSwgdXQpLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgbyAmJiBjLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBuLnVwZGF0ZSwgdXQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBzICYmIGwucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbi51cGRhdGUsIHV0KQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZGF0YToge30KICAgIH07CiAgICB2YXIgaHQgPSB7CiAgICAgICAgbGVmdDogInJpZ2h0IiwKICAgICAgICByaWdodDogImxlZnQiLAogICAgICAgIGJvdHRvbTogInRvcCIsCiAgICAgICAgdG9wOiAiYm90dG9tIgogICAgfTsKCiAgICBmdW5jdGlvbiBmdChlKSB7CiAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBodFtlXQogICAgICAgIH0pKQogICAgfQogICAgdmFyIHB0ID0gewogICAgICAgIHN0YXJ0OiAiZW5kIiwKICAgICAgICBlbmQ6ICJzdGFydCIKICAgIH07CgogICAgZnVuY3Rpb24gZ3QoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcHRbZV0KICAgICAgICB9KSkKICAgIH0KCiAgICBmdW5jdGlvbiBtdChlKSB7CiAgICAgICAgdmFyIHQgPSBGZShlKTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBzY3JvbGxMZWZ0OiB0LnBhZ2VYT2Zmc2V0LAogICAgICAgICAgICBzY3JvbGxUb3A6IHQucGFnZVlPZmZzZXQKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdnQoZSkgewogICAgICAgIHJldHVybiBXZShYZShlKSkubGVmdCArIG10KGUpLnNjcm9sbExlZnQKICAgIH0KCiAgICBmdW5jdGlvbiB5dChlKSB7CiAgICAgICAgdmFyIHQgPSBWZShlKSwKICAgICAgICAgICAgbiA9IHQub3ZlcmZsb3csCiAgICAgICAgICAgIGkgPSB0Lm92ZXJmbG93WCwKICAgICAgICAgICAgciA9IHQub3ZlcmZsb3dZOwogICAgICAgIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3QobiArIHIgKyBpKQogICAgfQoKICAgIGZ1bmN0aW9uIGJ0KGUsIHQpIHsKICAgICAgICB2YXIgbjsKICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSBbXSk7CiAgICAgICAgdmFyIGkgPSBmdW5jdGlvbiBlKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbImh0bWwiLCAiYm9keSIsICIjZG9jdW1lbnQiXS5pbmRleE9mKE5lKHQpKSA+PSAwID8gdC5vd25lckRvY3VtZW50LmJvZHkgOiAkZSh0KSAmJiB5dCh0KSA/IHQgOiBlKEdlKHQpKQogICAgICAgICAgICB9KGUpLAogICAgICAgICAgICByID0gaSA9PT0gKG51bGwgPT0gKG4gPSBlLm93bmVyRG9jdW1lbnQpID8gdm9pZCAwIDogbi5ib2R5KSwKICAgICAgICAgICAgbyA9IEZlKGkpLAogICAgICAgICAgICBhID0gciA/IFtvXS5jb25jYXQoby52aXN1YWxWaWV3cG9ydCB8fCBbXSwgeXQoaSkgPyBpIDogW10pIDogaSwKICAgICAgICAgICAgcyA9IHQuY29uY2F0KGEpOwogICAgICAgIHJldHVybiByID8gcyA6IHMuY29uY2F0KGJ0KEdlKGEpKSkKICAgIH0KCiAgICBmdW5jdGlvbiB3dChlKSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGUsIHsKICAgICAgICAgICAgbGVmdDogZS54LAogICAgICAgICAgICB0b3A6IGUueSwKICAgICAgICAgICAgcmlnaHQ6IGUueCArIGUud2lkdGgsCiAgICAgICAgICAgIGJvdHRvbTogZS55ICsgZS5oZWlnaHQKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIHh0KGUsIHQpIHsKICAgICAgICByZXR1cm4gdCA9PT0gQ2UgPyB3dChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gRmUoZSksCiAgICAgICAgICAgICAgICBuID0gWGUoZSksCiAgICAgICAgICAgICAgICBpID0gdC52aXN1YWxWaWV3cG9ydCwKICAgICAgICAgICAgICAgIHIgPSBuLmNsaWVudFdpZHRoLAogICAgICAgICAgICAgICAgbyA9IG4uY2xpZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgcmV0dXJuIGkgJiYgKHIgPSBpLndpZHRoLCBvID0gaS5oZWlnaHQsIC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgKGEgPSBpLm9mZnNldExlZnQsIHMgPSBpLm9mZnNldFRvcCkpLCB7CiAgICAgICAgICAgICAgICB3aWR0aDogciwKICAgICAgICAgICAgICAgIGhlaWdodDogbywKICAgICAgICAgICAgICAgIHg6IGEgKyB2dChlKSwKICAgICAgICAgICAgICAgIHk6IHMKICAgICAgICAgICAgfQogICAgICAgIH0oZSkpIDogJGUodCkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gV2UoZSk7CiAgICAgICAgICAgIHJldHVybiB0LnRvcCA9IHQudG9wICsgZS5jbGllbnRUb3AsIHQubGVmdCA9IHQubGVmdCArIGUuY2xpZW50TGVmdCwgdC5ib3R0b20gPSB0LnRvcCArIGUuY2xpZW50SGVpZ2h0LCB0LnJpZ2h0ID0gdC5sZWZ0ICsgZS5jbGllbnRXaWR0aCwgdC53aWR0aCA9IGUuY2xpZW50V2lkdGgsIHQuaGVpZ2h0ID0gZS5jbGllbnRIZWlnaHQsIHQueCA9IHQubGVmdCwgdC55ID0gdC50b3AsIHQKICAgICAgICB9KHQpIDogd3QoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiA9IFhlKGUpLAogICAgICAgICAgICAgICAgaSA9IG10KGUpLAogICAgICAgICAgICAgICAgciA9IG51bGwgPT0gKHQgPSBlLm93bmVyRG9jdW1lbnQpID8gdm9pZCAwIDogdC5ib2R5LAogICAgICAgICAgICAgICAgbyA9IEplKG4uc2Nyb2xsV2lkdGgsIG4uY2xpZW50V2lkdGgsIHIgPyByLnNjcm9sbFdpZHRoIDogMCwgciA/IHIuY2xpZW50V2lkdGggOiAwKSwKICAgICAgICAgICAgICAgIGEgPSBKZShuLnNjcm9sbEhlaWdodCwgbi5jbGllbnRIZWlnaHQsIHIgPyByLnNjcm9sbEhlaWdodCA6IDAsIHIgPyByLmNsaWVudEhlaWdodCA6IDApLAogICAgICAgICAgICAgICAgcyA9IC1pLnNjcm9sbExlZnQgKyB2dChlKSwKICAgICAgICAgICAgICAgIGwgPSAtaS5zY3JvbGxUb3A7CiAgICAgICAgICAgIHJldHVybiAicnRsIiA9PT0gVmUociB8fCBuKS5kaXJlY3Rpb24gJiYgKHMgKz0gSmUobi5jbGllbnRXaWR0aCwgciA/IHIuY2xpZW50V2lkdGggOiAwKSAtIG8pLCB7CiAgICAgICAgICAgICAgICB3aWR0aDogbywKICAgICAgICAgICAgICAgIGhlaWdodDogYSwKICAgICAgICAgICAgICAgIHg6IHMsCiAgICAgICAgICAgICAgICB5OiBsCiAgICAgICAgICAgIH0KICAgICAgICB9KFhlKGUpKSkKICAgIH0KCiAgICBmdW5jdGlvbiBfdChlKSB7CiAgICAgICAgdmFyIHQsIG4gPSBlLnJlZmVyZW5jZSwKICAgICAgICAgICAgaSA9IGUuZWxlbWVudCwKICAgICAgICAgICAgciA9IGUucGxhY2VtZW50LAogICAgICAgICAgICBvID0gciA/IEJlKHIpIDogbnVsbCwKICAgICAgICAgICAgYSA9IHIgPyBhdChyKSA6IG51bGwsCiAgICAgICAgICAgIHMgPSBuLnggKyBuLndpZHRoIC8gMiAtIGkud2lkdGggLyAyLAogICAgICAgICAgICBsID0gbi55ICsgbi5oZWlnaHQgLyAyIC0gaS5oZWlnaHQgLyAyOwogICAgICAgIHN3aXRjaCAobykgewogICAgICAgICAgICBjYXNlIGdlOgogICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICB4OiBzLAogICAgICAgICAgICAgICAgICAgIHk6IG4ueSAtIGkuaGVpZ2h0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgbWU6CiAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgIHg6IHMsCiAgICAgICAgICAgICAgICAgICAgeTogbi55ICsgbi5oZWlnaHQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB2ZToKICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgeDogbi54ICsgbi53aWR0aCwKICAgICAgICAgICAgICAgICAgICB5OiBsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgeWU6CiAgICAgICAgICAgICAgICB0ID0gewogICAgICAgICAgICAgICAgICAgIHg6IG4ueCAtIGkud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgeTogbAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdCA9IHsKICAgICAgICAgICAgICAgICAgICB4OiBuLngsCiAgICAgICAgICAgICAgICAgICAgeTogbi55CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBjID0gbyA/IFplKG8pIDogbnVsbDsKICAgICAgICBpZiAobnVsbCAhPSBjKSB7CiAgICAgICAgICAgIHZhciB1ID0gInkiID09PSBjID8gImhlaWdodCIgOiAid2lkdGgiOwogICAgICAgICAgICBzd2l0Y2ggKGEpIHsKICAgICAgICAgICAgICAgIGNhc2UgeGU6CiAgICAgICAgICAgICAgICAgICAgdFtjXSA9IHRbY10gLSAoblt1XSAvIDIgLSBpW3VdIC8gMik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIF9lOgogICAgICAgICAgICAgICAgICAgIHRbY10gPSB0W2NdICsgKG5bdV0gLyAyIC0gaVt1XSAvIDIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHQKICAgIH0KCiAgICBmdW5jdGlvbiBTdChlLCB0KSB7CiAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0ge30pOwogICAgICAgIHZhciBuID0gdCwKICAgICAgICAgICAgaSA9IG4ucGxhY2VtZW50LAogICAgICAgICAgICByID0gdm9pZCAwID09PSBpID8gZS5wbGFjZW1lbnQgOiBpLAogICAgICAgICAgICBvID0gbi5ib3VuZGFyeSwKICAgICAgICAgICAgYSA9IHZvaWQgMCA9PT0gbyA/IFNlIDogbywKICAgICAgICAgICAgcyA9IG4ucm9vdEJvdW5kYXJ5LAogICAgICAgICAgICBsID0gdm9pZCAwID09PSBzID8gQ2UgOiBzLAogICAgICAgICAgICBjID0gbi5lbGVtZW50Q29udGV4dCwKICAgICAgICAgICAgdSA9IHZvaWQgMCA9PT0gYyA/IGtlIDogYywKICAgICAgICAgICAgZCA9IG4uYWx0Qm91bmRhcnksCiAgICAgICAgICAgIGggPSB2b2lkIDAgIT09IGQgJiYgZCwKICAgICAgICAgICAgZiA9IG4ucGFkZGluZywKICAgICAgICAgICAgcCA9IHZvaWQgMCA9PT0gZiA/IDAgOiBmLAogICAgICAgICAgICBnID0gaXQoIm51bWJlciIgIT0gdHlwZW9mIHAgPyBwIDogcnQocCwgd2UpKSwKICAgICAgICAgICAgbSA9IHUgPT09IGtlID8gVGUgOiBrZSwKICAgICAgICAgICAgdiA9IGUucmVjdHMucG9wcGVyLAogICAgICAgICAgICB5ID0gZS5lbGVtZW50c1toID8gbSA6IHVdLAogICAgICAgICAgICBiID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIGkgPSAiY2xpcHBpbmdQYXJlbnRzIiA9PT0gdCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBidChHZShlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gWyJhYnNvbHV0ZSIsICJmaXhlZCJdLmluZGV4T2YoVmUoZSkucG9zaXRpb24pID49IDAgJiYgJGUoZSkgPyBRZShlKSA6IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZShuKSA/IHQuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmUoZSkgJiYgVWUoZSwgbikgJiYgImJvZHkiICE9PSBOZShlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBbXQogICAgICAgICAgICAgICAgICAgIH0oZSkgOiBbXS5jb25jYXQodCksCiAgICAgICAgICAgICAgICAgICAgciA9IFtdLmNvbmNhdChpLCBbbl0pLAogICAgICAgICAgICAgICAgICAgIG8gPSByWzBdLAogICAgICAgICAgICAgICAgICAgIGEgPSByLnJlZHVjZSgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHh0KGUsIG4pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50b3AgPSBKZShpLnRvcCwgdC50b3ApLCB0LnJpZ2h0ID0gZXQoaS5yaWdodCwgdC5yaWdodCksIHQuYm90dG9tID0gZXQoaS5ib3R0b20sIHQuYm90dG9tKSwgdC5sZWZ0ID0gSmUoaS5sZWZ0LCB0LmxlZnQpLCB0CiAgICAgICAgICAgICAgICAgICAgfSksIHh0KGUsIG8pKTsKICAgICAgICAgICAgICAgIHJldHVybiBhLndpZHRoID0gYS5yaWdodCAtIGEubGVmdCwgYS5oZWlnaHQgPSBhLmJvdHRvbSAtIGEudG9wLCBhLnggPSBhLmxlZnQsIGEueSA9IGEudG9wLCBhCiAgICAgICAgICAgIH0oUmUoeSkgPyB5IDogeS5jb250ZXh0RWxlbWVudCB8fCBYZShlLmVsZW1lbnRzLnBvcHBlciksIGEsIGwpLAogICAgICAgICAgICB3ID0gV2UoZS5lbGVtZW50cy5yZWZlcmVuY2UpLAogICAgICAgICAgICB4ID0gX3QoewogICAgICAgICAgICAgICAgcmVmZXJlbmNlOiB3LAogICAgICAgICAgICAgICAgZWxlbWVudDogdiwKICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgcGxhY2VtZW50OiByCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBfID0gd3QoT2JqZWN0LmFzc2lnbih7fSwgdiwgeCkpLAogICAgICAgICAgICBTID0gdSA9PT0ga2UgPyBfIDogdywKICAgICAgICAgICAgQyA9IHsKICAgICAgICAgICAgICAgIHRvcDogYi50b3AgLSBTLnRvcCArIGcudG9wLAogICAgICAgICAgICAgICAgYm90dG9tOiBTLmJvdHRvbSAtIGIuYm90dG9tICsgZy5ib3R0b20sCiAgICAgICAgICAgICAgICBsZWZ0OiBiLmxlZnQgLSBTLmxlZnQgKyBnLmxlZnQsCiAgICAgICAgICAgICAgICByaWdodDogUy5yaWdodCAtIGIucmlnaHQgKyBnLnJpZ2h0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGsgPSBlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OwogICAgICAgIGlmICh1ID09PSBrZSAmJiBrKSB7CiAgICAgICAgICAgIHZhciBUID0ga1tyXTsKICAgICAgICAgICAgT2JqZWN0LmtleXMoQykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBbdmUsIG1lXS5pbmRleE9mKGUpID49IDAgPyAxIDogLTEsCiAgICAgICAgICAgICAgICAgICAgbiA9IFtnZSwgbWVdLmluZGV4T2YoZSkgPj0gMCA/ICJ5IiA6ICJ4IjsKICAgICAgICAgICAgICAgIENbZV0gKz0gVFtuXSAqIHQKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgICAgIHJldHVybiBDCiAgICB9CiAgICBjb25zdCBDdCA9IHsKICAgICAgICBuYW1lOiAiZmxpcCIsCiAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgcGhhc2U6ICJtYWluIiwKICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGUuc3RhdGUsCiAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgaSA9IGUubmFtZTsKICAgICAgICAgICAgaWYgKCF0Lm1vZGlmaWVyc0RhdGFbaV0uX3NraXApIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBuLm1haW5BeGlzLCBvID0gdm9pZCAwID09PSByIHx8IHIsIGEgPSBuLmFsdEF4aXMsIHMgPSB2b2lkIDAgPT09IGEgfHwgYSwgbCA9IG4uZmFsbGJhY2tQbGFjZW1lbnRzLCBjID0gbi5wYWRkaW5nLCB1ID0gbi5ib3VuZGFyeSwgZCA9IG4ucm9vdEJvdW5kYXJ5LCBoID0gbi5hbHRCb3VuZGFyeSwgZiA9IG4uZmxpcFZhcmlhdGlvbnMsIHAgPSB2b2lkIDAgPT09IGYgfHwgZiwgZyA9IG4uYWxsb3dlZEF1dG9QbGFjZW1lbnRzLCBtID0gdC5vcHRpb25zLnBsYWNlbWVudCwgdiA9IEJlKG0pLCB5ID0gbCB8fCAodiAhPT0gbSAmJiBwID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQmUoZSkgPT09IGJlKSByZXR1cm4gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbZ3QoZSksIHQsIGd0KHQpXQogICAgICAgICAgICAgICAgICAgIH0obSkgOiBbZnQobSldKSwgYiA9IFttXS5jb25jYXQoeSkucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmNvbmNhdChCZShuKSA9PT0gYmUgPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmJvdW5kYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLnJvb3RCb3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5wYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLmZsaXBWYXJpYXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuLmFsbG93ZWRBdXRvUGxhY2VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdm9pZCAwID09PSBsID8gRWUgOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBhdChpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gdSA/IHMgPyBBZSA6IEFlLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoZSkgPT09IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiB3ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZC5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuaW5kZXhPZihlKSA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gaC5sZW5ndGggJiYgKGggPSBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0gaC5yZWR1Y2UoKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFtuXSA9IFN0KGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdEJvdW5kYXJ5OiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbQmUobildLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwge30pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGYpLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZltlXSAtIGZbdF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdEJvdW5kYXJ5OiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsaXBWYXJpYXRpb25zOiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogbikKICAgICAgICAgICAgICAgICAgICB9KSwgW10pLCB3ID0gdC5yZWN0cy5yZWZlcmVuY2UsIHggPSB0LnJlY3RzLnBvcHBlciwgXyA9IG5ldyBNYXAsIFMgPSAhMCwgQyA9IGJbMF0sIGsgPSAwOyBrIDwgYi5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBUID0gYltrXSwKICAgICAgICAgICAgICAgICAgICAgICAgQSA9IEJlKFQpLAogICAgICAgICAgICAgICAgICAgICAgICBFID0gYXQoVCkgPT09IHhlLAogICAgICAgICAgICAgICAgICAgICAgICBEID0gW2dlLCBtZV0uaW5kZXhPZihBKSA+PSAwLAogICAgICAgICAgICAgICAgICAgICAgICBPID0gRCA/ICJ3aWR0aCIgOiAiaGVpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgTSA9IFN0KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdEJvdW5kYXJ5OiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBjCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBJID0gRCA/IEUgPyB2ZSA6IHllIDogRSA/IG1lIDogZ2U7CiAgICAgICAgICAgICAgICAgICAgd1tPXSA+IHhbT10gJiYgKEkgPSBmdChJKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIEwgPSBmdChJKSwKICAgICAgICAgICAgICAgICAgICAgICAgUCA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmIChvICYmIFAucHVzaChNW0FdIDw9IDApLCBzICYmIFAucHVzaChNW0ldIDw9IDAsIE1bTF0gPD0gMCksIFAuZXZlcnkoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgewogICAgICAgICAgICAgICAgICAgICAgICBDID0gVCwgUyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBfLnNldChULCBQKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKFMpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gYi5maW5kKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBfLmdldCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobikgcmV0dXJuIG4uc2xpY2UoMCwgZSkuZXZlcnkoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gQyA9IHQsICJicmVhayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwgTiA9IHAgPyAzIDogMTsgTiA+IDAgJiYgImJyZWFrIiAhPT0gaihOKTsgTi0tKTsKICAgICAgICAgICAgICAgIHQucGxhY2VtZW50ICE9PSBDICYmICh0Lm1vZGlmaWVyc0RhdGFbaV0uX3NraXAgPSAhMCwgdC5wbGFjZW1lbnQgPSBDLCB0LnJlc2V0ID0gITApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlcXVpcmVzSWZFeGlzdHM6IFsib2Zmc2V0Il0sCiAgICAgICAgZGF0YTogewogICAgICAgICAgICBfc2tpcDogITEKICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIGt0KGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSBuICYmIChuID0gewogICAgICAgICAgICB4OiAwLAogICAgICAgICAgICB5OiAwCiAgICAgICAgfSksIHsKICAgICAgICAgICAgdG9wOiBlLnRvcCAtIHQuaGVpZ2h0IC0gbi55LAogICAgICAgICAgICByaWdodDogZS5yaWdodCAtIHQud2lkdGggKyBuLngsCiAgICAgICAgICAgIGJvdHRvbTogZS5ib3R0b20gLSB0LmhlaWdodCArIG4ueSwKICAgICAgICAgICAgbGVmdDogZS5sZWZ0IC0gdC53aWR0aCAtIG4ueAogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBUdChlKSB7CiAgICAgICAgcmV0dXJuIFtnZSwgdmUsIG1lLCB5ZV0uc29tZSgoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gZVt0XSA+PSAwCiAgICAgICAgfSkpCiAgICB9CiAgICBjb25zdCBBdCA9IHsKICAgICAgICAgICAgbmFtZTogImhpZGUiLAogICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgcGhhc2U6ICJtYWluIiwKICAgICAgICAgICAgcmVxdWlyZXNJZkV4aXN0czogWyJwcmV2ZW50T3ZlcmZsb3ciXSwKICAgICAgICAgICAgZm46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICBuID0gZS5uYW1lLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LnJlY3RzLnJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICByID0gdC5yZWN0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgbyA9IHQubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgYSA9IFN0KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICJyZWZlcmVuY2UiCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgcyA9IFN0KHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6ICEwCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgbCA9IGt0KGEsIGkpLAogICAgICAgICAgICAgICAgICAgIGMgPSBrdChzLCByLCBvKSwKICAgICAgICAgICAgICAgICAgICB1ID0gVHQobCksCiAgICAgICAgICAgICAgICAgICAgZCA9IFR0KGMpOwogICAgICAgICAgICAgICAgdC5tb2RpZmllcnNEYXRhW25dID0gewogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogbCwKICAgICAgICAgICAgICAgICAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBjLAogICAgICAgICAgICAgICAgICAgIGlzUmVmZXJlbmNlSGlkZGVuOiB1LAogICAgICAgICAgICAgICAgICAgIGhhc1BvcHBlckVzY2FwZWQ6IGQKICAgICAgICAgICAgICAgIH0sIHQuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0LmF0dHJpYnV0ZXMucG9wcGVyLCB7CiAgICAgICAgICAgICAgICAgICAgImRhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4iOiB1LAogICAgICAgICAgICAgICAgICAgICJkYXRhLXBvcHBlci1lc2NhcGVkIjogZAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRXQgPSB7CiAgICAgICAgICAgIG5hbWU6ICJvZmZzZXQiLAogICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgcGhhc2U6ICJtYWluIiwKICAgICAgICAgICAgcmVxdWlyZXM6IFsicG9wcGVyT2Zmc2V0cyJdLAogICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgaSA9IGUubmFtZSwKICAgICAgICAgICAgICAgICAgICByID0gbi5vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgbyA9IHZvaWQgMCA9PT0gciA/IFswLCAwXSA6IHIsCiAgICAgICAgICAgICAgICAgICAgYSA9IEVlLnJlZHVjZSgoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZVtuXSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gQmUoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFt5ZSwgZ2VdLmluZGV4T2YoaSkgPj0gMCA/IC0xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiA/IG4oT2JqZWN0LmFzc2lnbih7fSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSBhIHx8IDAsIHMgPSAocyB8fCAwKSAqIHIsIFt5ZSwgdmVdLmluZGV4T2YoaSkgPj0gMCA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0obiwgdC5yZWN0cywgbyksIGUKICAgICAgICAgICAgICAgICAgICB9KSwge30pLAogICAgICAgICAgICAgICAgICAgIHMgPSBhW3QucGxhY2VtZW50XSwKICAgICAgICAgICAgICAgICAgICBsID0gcy54LAogICAgICAgICAgICAgICAgICAgIGMgPSBzLnk7CiAgICAgICAgICAgICAgICBudWxsICE9IHQubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICYmICh0Lm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IGwsIHQubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0gYyksIHQubW9kaWZpZXJzRGF0YVtpXSA9IGEKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgRHQgPSB7CiAgICAgICAgICAgIG5hbWU6ICJwb3BwZXJPZmZzZXRzIiwKICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgIHBoYXNlOiAicmVhZCIsCiAgICAgICAgICAgIGZuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgbiA9IGUubmFtZTsKICAgICAgICAgICAgICAgIHQubW9kaWZpZXJzRGF0YVtuXSA9IF90KHsKICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6IHQucmVjdHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHQucmVjdHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogdC5wbGFjZW1lbnQKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhdGE6IHt9CiAgICAgICAgfSwKICAgICAgICBPdCA9IHsKICAgICAgICAgICAgbmFtZTogInByZXZlbnRPdmVyZmxvdyIsCiAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICBwaGFzZTogIm1haW4iLAogICAgICAgICAgICBmbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLnN0YXRlLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgaSA9IGUubmFtZSwKICAgICAgICAgICAgICAgICAgICByID0gbi5tYWluQXhpcywKICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSByIHx8IHIsCiAgICAgICAgICAgICAgICAgICAgYSA9IG4uYWx0QXhpcywKICAgICAgICAgICAgICAgICAgICBzID0gdm9pZCAwICE9PSBhICYmIGEsCiAgICAgICAgICAgICAgICAgICAgbCA9IG4uYm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgYyA9IG4ucm9vdEJvdW5kYXJ5LAogICAgICAgICAgICAgICAgICAgIHUgPSBuLmFsdEJvdW5kYXJ5LAogICAgICAgICAgICAgICAgICAgIGQgPSBuLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgaCA9IG4udGV0aGVyLAogICAgICAgICAgICAgICAgICAgIGYgPSB2b2lkIDAgPT09IGggfHwgaCwKICAgICAgICAgICAgICAgICAgICBwID0gbi50ZXRoZXJPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgZyA9IHZvaWQgMCA9PT0gcCA/IDAgOiBwLAogICAgICAgICAgICAgICAgICAgIG0gPSBTdCh0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiBsLAogICAgICAgICAgICAgICAgICAgICAgICByb290Qm91bmRhcnk6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB1CiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgdiA9IEJlKHQucGxhY2VtZW50KSwKICAgICAgICAgICAgICAgICAgICB5ID0gYXQodC5wbGFjZW1lbnQpLAogICAgICAgICAgICAgICAgICAgIGIgPSAheSwKICAgICAgICAgICAgICAgICAgICB3ID0gWmUodiksCiAgICAgICAgICAgICAgICAgICAgeCA9ICJ4IiA9PT0gdyA/ICJ5IiA6ICJ4IiwKICAgICAgICAgICAgICAgICAgICBfID0gdC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgUyA9IHQucmVjdHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgIEMgPSB0LnJlY3RzLnBvcHBlciwKICAgICAgICAgICAgICAgICAgICBrID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZyA/IGcoT2JqZWN0LmFzc2lnbih7fSwgdC5yZWN0cywgewogICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHQucGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgfSkpIDogZywKICAgICAgICAgICAgICAgICAgICBUID0gewogICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmIChfKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8gfHwgcykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgQSA9ICJ5IiA9PT0gdyA/IGdlIDogeWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gInkiID09PSB3ID8gbWUgOiB2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQgPSAieSIgPT09IHcgPyAiaGVpZ2h0IiA6ICJ3aWR0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPID0gX1t3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSBfW3ddICsgbVtBXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgPSBfW3ddIC0gbVtFXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSBmID8gLUNbRF0gLyAyIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAgPSB5ID09PSB4ZSA/IFNbRF0gOiBDW0RdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHkgPT09IHhlID8gLUNbRF0gOiAtU1tEXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gPSB0LmVsZW1lbnRzLmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IGYgJiYgTiA/IHFlKE4pIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSB0Lm1vZGlmaWVyc0RhdGFbImFycm93I3BlcnNpc3RlbnQiXSA/IHQubW9kaWZpZXJzRGF0YVsiYXJyb3cjcGVyc2lzdGVudCJdLnBhZGRpbmcgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCA9IFJbQV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gUltFXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBudCgwLCBTW0RdLCBGW0RdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIgPSBiID8gU1tEXSAvIDIgLSBMIC0gSCAtICQgLSBrIDogUCAtIEggLSAkIC0gaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSBiID8gLVNbRF0gLyAyICsgTCArIEggKyB6ICsgayA6IGogKyBIICsgeiArIGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gdC5lbGVtZW50cy5hcnJvdyAmJiBRZSh0LmVsZW1lbnRzLmFycm93KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBxID8gInkiID09PSB3ID8gcS5jbGllbnRUb3AgfHwgMCA6IHEuY2xpZW50TGVmdCB8fCAwIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgPSB0Lm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gdC5tb2RpZmllcnNEYXRhLm9mZnNldFt0LnBsYWNlbWVudF1bd10gOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWSA9IF9bd10gKyBCIC0gViAtIFUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYID0gX1t3XSArIFcgLSBWOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEcgPSBudChmID8gZXQoTSwgWSkgOiBNLCBPLCBmID8gSmUoSSwgWCkgOiBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9bd10gPSBHLCBUW3ddID0gRyAtIE8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEsgPSAieCIgPT09IHcgPyBnZSA6IHllLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEgPSAieCIgPT09IHcgPyBtZSA6IHZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFogPSBfW3hdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEogPSBaICsgbVtLXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZSA9IFogLSBtW1FdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlID0gbnQoZiA/IGV0KEosIFkpIDogSiwgWiwgZiA/IEplKGVlLCBYKSA6IGVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9beF0gPSB0ZSwgVFt4XSA9IHRlIC0gWgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQubW9kaWZpZXJzRGF0YVtpXSA9IFQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVxdWlyZXNJZkV4aXN0czogWyJvZmZzZXQiXQogICAgICAgIH07CgogICAgZnVuY3Rpb24gTXQoZSwgdCwgbikgewogICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKTsKICAgICAgICB2YXIgaSA9ICRlKHQpOwogICAgICAgICRlKHQpICYmIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB0LndpZHRoLCBlLm9mZnNldFdpZHRoLCB0LmhlaWdodCwgZS5vZmZzZXRIZWlnaHQKICAgICAgICB9KHQpOwogICAgICAgIHZhciByLCBvLCBhID0gWGUodCksCiAgICAgICAgICAgIHMgPSBXZShlKSwKICAgICAgICAgICAgbCA9IHsKICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICB5OiAwCiAgICAgICAgICAgIH07CiAgICAgICAgcmV0dXJuIChpIHx8ICFpICYmICFuKSAmJiAoKCJib2R5IiAhPT0gTmUodCkgfHwgeXQoYSkpICYmIChsID0gKHIgPSB0KSAhPT0gRmUocikgJiYgJGUocikgPyB7CiAgICAgICAgICAgIHNjcm9sbExlZnQ6IChvID0gcikuc2Nyb2xsTGVmdCwKICAgICAgICAgICAgc2Nyb2xsVG9wOiBvLnNjcm9sbFRvcAogICAgICAgIH0gOiBtdChyKSksICRlKHQpID8gKChjID0gV2UodCkpLnggKz0gdC5jbGllbnRMZWZ0LCBjLnkgKz0gdC5jbGllbnRUb3ApIDogYSAmJiAoYy54ID0gdnQoYSkpKSwgewogICAgICAgICAgICB4OiBzLmxlZnQgKyBsLnNjcm9sbExlZnQgLSBjLngsCiAgICAgICAgICAgIHk6IHMudG9wICsgbC5zY3JvbGxUb3AgLSBjLnksCiAgICAgICAgICAgIHdpZHRoOiBzLndpZHRoLAogICAgICAgICAgICBoZWlnaHQ6IHMuaGVpZ2h0CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIEl0KGUpIHsKICAgICAgICB2YXIgdCA9IG5ldyBNYXAsCiAgICAgICAgICAgIG4gPSBuZXcgU2V0LAogICAgICAgICAgICBpID0gW107CiAgICAgICAgcmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0LnNldChlLm5hbWUsIGUpCiAgICAgICAgfSkpLCBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgbi5oYXMoZS5uYW1lKSB8fCBmdW5jdGlvbiBlKHIpIHsKICAgICAgICAgICAgICAgIG4uYWRkKHIubmFtZSksIFtdLmNvbmNhdChyLnJlcXVpcmVzIHx8IFtdLCByLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIW4uaGFzKGkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5nZXQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgZShyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKSwgaS5wdXNoKHIpCiAgICAgICAgICAgIH0oZSkKICAgICAgICB9KSksIGkKICAgIH0KICAgIHZhciBMdCA9IHsKICAgICAgICBwbGFjZW1lbnQ6ICJib3R0b20iLAogICAgICAgIG1vZGlmaWVyczogW10sCiAgICAgICAgc3RyYXRlZ3k6ICJhYnNvbHV0ZSIKICAgIH07CgogICAgZnVuY3Rpb24gUHQoKSB7CiAgICAgICAgZm9yICh2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsIHQgPSBuZXcgQXJyYXkoZSksIG4gPSAwOyBuIDwgZTsgbisrKSB0W25dID0gYXJndW1lbnRzW25dOwogICAgICAgIHJldHVybiAhdC5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAhKGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24ganQoZSkgewogICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHt9KTsKICAgICAgICB2YXIgdCA9IGUsCiAgICAgICAgICAgIG4gPSB0LmRlZmF1bHRNb2RpZmllcnMsCiAgICAgICAgICAgIGkgPSB2b2lkIDAgPT09IG4gPyBbXSA6IG4sCiAgICAgICAgICAgIHIgPSB0LmRlZmF1bHRPcHRpb25zLAogICAgICAgICAgICBvID0gdm9pZCAwID09PSByID8gTHQgOiByOwogICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gbiAmJiAobiA9IG8pOwogICAgICAgICAgICB2YXIgciwgYSwgcyA9IHsKICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIEx0LCBvKSwKICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNEYXRhOiB7fSwKICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHBlcjogdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sCiAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiB7fQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGwgPSBbXSwKICAgICAgICAgICAgICAgIGMgPSAhMSwKICAgICAgICAgICAgICAgIHUgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHMsCiAgICAgICAgICAgICAgICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIG4gPyBuKHMub3B0aW9ucykgOiBuOwogICAgICAgICAgICAgICAgICAgICAgICBkKCksIHMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG8sIHMub3B0aW9ucywgciksIHMuc2Nyb2xsUGFyZW50cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogUmUoZSkgPyBidChlKSA6IGUuY29udGV4dEVsZW1lbnQgPyBidChlLmNvbnRleHRFbGVtZW50KSA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiBidCh0KQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSwgYywgaCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gSXQoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gamUucmVkdWNlKChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY29uY2F0KHQuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnBoYXNlID09PSBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIFtdKQogICAgICAgICAgICAgICAgICAgICAgICB9KChhID0gW10uY29uY2F0KGksIHMub3B0aW9ucy5tb2RpZmllcnMpLCBjID0gYS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZVt0Lm5hbWVdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdC5uYW1lXSA9IG4gPyBPYmplY3QuYXNzaWduKHt9LCBuLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgbi5vcHRpb25zLCB0Lm9wdGlvbnMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IE9iamVjdC5hc3NpZ24oe30sIG4uZGF0YSwgdC5kYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiB0LCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksIE9iamVjdC5rZXlzKGMpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNbZV0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLm9yZGVyZWRNb2RpZmllcnMgPSBoLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZW5hYmxlZAogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHMub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB2b2lkIDAgPT09IG4gPyB7fSA6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuZWZmZWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2U6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnB1c2gobyB8fCBmdW5jdGlvbigpIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHUudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHMuZWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLnBvcHBlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQdCh0LCBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVjdHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogTXQodCwgUWUobiksICJmaXhlZCIgPT09IHMub3B0aW9ucy5zdHJhdGVneSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHBlcjogcWUobikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzLnJlc2V0ID0gITEsIHMucGxhY2VtZW50ID0gcy5vcHRpb25zLnBsYWNlbWVudCwgcy5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMubW9kaWZpZXJzRGF0YVtlLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgZS5kYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwICE9PSBzLnJlc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHMub3JkZXJlZE1vZGlmaWVyc1tpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gci5mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gci5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB2b2lkIDAgPT09IGEgPyB7fSA6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHIubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIG8gJiYgKHMgPSBvKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2U6IHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8IHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBzLnJlc2V0ID0gITEsIGkgPSAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IChyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5mb3JjZVVwZGF0ZSgpLCBlKHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSB8fCAoYSA9IG5ldyBQcm9taXNlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdm9pZCAwLCBlKHIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCBhCiAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQoKSwgYyA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFQdChlLCB0KSkgcmV0dXJuIHU7CgogICAgICAgICAgICBmdW5jdGlvbiBkKCkgewogICAgICAgICAgICAgICAgbC5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoKQogICAgICAgICAgICAgICAgfSkpLCBsID0gW10KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdS5zZXRPcHRpb25zKG4pLnRoZW4oKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICFjICYmIG4ub25GaXJzdFVwZGF0ZSAmJiBuLm9uRmlyc3RVcGRhdGUoZSkKICAgICAgICAgICAgfSkpLCB1CiAgICAgICAgfQogICAgfQogICAgdmFyIE50ID0ganQoKSwKICAgICAgICBGdCA9IGp0KHsKICAgICAgICAgICAgZGVmYXVsdE1vZGlmaWVyczogW2R0LCBEdCwgY3QsIEhlXQogICAgICAgIH0pLAogICAgICAgIFJ0ID0ganQoewogICAgICAgICAgICBkZWZhdWx0TW9kaWZpZXJzOiBbZHQsIER0LCBjdCwgSGUsIEV0LCBDdCwgT3QsIG90LCBBdF0KICAgICAgICB9KTsKICAgIGNvbnN0ICR0ID0gT2JqZWN0LmZyZWV6ZSh7CiAgICAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKICAgICAgICAgICAgcG9wcGVyR2VuZXJhdG9yOiBqdCwKICAgICAgICAgICAgZGV0ZWN0T3ZlcmZsb3c6IFN0LAogICAgICAgICAgICBjcmVhdGVQb3BwZXJCYXNlOiBOdCwKICAgICAgICAgICAgY3JlYXRlUG9wcGVyOiBSdCwKICAgICAgICAgICAgY3JlYXRlUG9wcGVyTGl0ZTogRnQsCiAgICAgICAgICAgIHRvcDogZ2UsCiAgICAgICAgICAgIGJvdHRvbTogbWUsCiAgICAgICAgICAgIHJpZ2h0OiB2ZSwKICAgICAgICAgICAgbGVmdDogeWUsCiAgICAgICAgICAgIGF1dG86IGJlLAogICAgICAgICAgICBiYXNlUGxhY2VtZW50czogd2UsCiAgICAgICAgICAgIHN0YXJ0OiB4ZSwKICAgICAgICAgICAgZW5kOiBfZSwKICAgICAgICAgICAgY2xpcHBpbmdQYXJlbnRzOiBTZSwKICAgICAgICAgICAgdmlld3BvcnQ6IENlLAogICAgICAgICAgICBwb3BwZXI6IGtlLAogICAgICAgICAgICByZWZlcmVuY2U6IFRlLAogICAgICAgICAgICB2YXJpYXRpb25QbGFjZW1lbnRzOiBBZSwKICAgICAgICAgICAgcGxhY2VtZW50czogRWUsCiAgICAgICAgICAgIGJlZm9yZVJlYWQ6IERlLAogICAgICAgICAgICByZWFkOiAicmVhZCIsCiAgICAgICAgICAgIGFmdGVyUmVhZDogT2UsCiAgICAgICAgICAgIGJlZm9yZU1haW46IE1lLAogICAgICAgICAgICBtYWluOiAibWFpbiIsCiAgICAgICAgICAgIGFmdGVyTWFpbjogSWUsCiAgICAgICAgICAgIGJlZm9yZVdyaXRlOiBMZSwKICAgICAgICAgICAgd3JpdGU6ICJ3cml0ZSIsCiAgICAgICAgICAgIGFmdGVyV3JpdGU6IFBlLAogICAgICAgICAgICBtb2RpZmllclBoYXNlczogamUsCiAgICAgICAgICAgIGFwcGx5U3R5bGVzOiBIZSwKICAgICAgICAgICAgYXJyb3c6IG90LAogICAgICAgICAgICBjb21wdXRlU3R5bGVzOiBjdCwKICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcnM6IGR0LAogICAgICAgICAgICBmbGlwOiBDdCwKICAgICAgICAgICAgaGlkZTogQXQsCiAgICAgICAgICAgIG9mZnNldDogRXQsCiAgICAgICAgICAgIHBvcHBlck9mZnNldHM6IER0LAogICAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IE90CiAgICAgICAgfSksCiAgICAgICAgenQgPSAiZHJvcGRvd24iLAogICAgICAgIEh0ID0gIkVzY2FwZSIsCiAgICAgICAgQnQgPSAiQXJyb3dVcCIsCiAgICAgICAgV3QgPSAiQXJyb3dEb3duIiwKICAgICAgICBxdCA9IG5ldyBSZWdFeHAoIkFycm93VXB8QXJyb3dEb3dufEVzY2FwZSIpLAogICAgICAgIFV0ID0gImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwKICAgICAgICBWdCA9ICJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwKICAgICAgICBZdCA9ICJzaG93IiwKICAgICAgICBYdCA9ICdbZGF0YS1icy10b2dnbGU9ImRyb3Bkb3duIl0nLAogICAgICAgIEd0ID0gIi5kcm9wZG93bi1tZW51IiwKICAgICAgICBLdCA9IGcoKSA/ICJ0b3AtZW5kIiA6ICJ0b3Atc3RhcnQiLAogICAgICAgIFF0ID0gZygpID8gInRvcC1zdGFydCIgOiAidG9wLWVuZCIsCiAgICAgICAgWnQgPSBnKCkgPyAiYm90dG9tLWVuZCIgOiAiYm90dG9tLXN0YXJ0IiwKICAgICAgICBKdCA9IGcoKSA/ICJib3R0b20tc3RhcnQiIDogImJvdHRvbS1lbmQiLAogICAgICAgIGVuID0gZygpID8gImxlZnQtc3RhcnQiIDogInJpZ2h0LXN0YXJ0IiwKICAgICAgICB0biA9IGcoKSA/ICJyaWdodC1zdGFydCIgOiAibGVmdC1zdGFydCIsCiAgICAgICAgbm4gPSB7CiAgICAgICAgICAgIG9mZnNldDogWzAsIDJdLAogICAgICAgICAgICBib3VuZGFyeTogImNsaXBwaW5nUGFyZW50cyIsCiAgICAgICAgICAgIHJlZmVyZW5jZTogInRvZ2dsZSIsCiAgICAgICAgICAgIGRpc3BsYXk6ICJkeW5hbWljIiwKICAgICAgICAgICAgcG9wcGVyQ29uZmlnOiBudWxsLAogICAgICAgICAgICBhdXRvQ2xvc2U6ICEwCiAgICAgICAgfSwKICAgICAgICBybiA9IHsKICAgICAgICAgICAgb2Zmc2V0OiAiKGFycmF5fHN0cmluZ3xmdW5jdGlvbikiLAogICAgICAgICAgICBib3VuZGFyeTogIihzdHJpbmd8ZWxlbWVudCkiLAogICAgICAgICAgICByZWZlcmVuY2U6ICIoc3RyaW5nfGVsZW1lbnR8b2JqZWN0KSIsCiAgICAgICAgICAgIGRpc3BsYXk6ICJzdHJpbmciLAogICAgICAgICAgICBwb3BwZXJDb25maWc6ICIobnVsbHxvYmplY3R8ZnVuY3Rpb24pIiwKICAgICAgICAgICAgYXV0b0Nsb3NlOiAiKGJvb2xlYW58c3RyaW5nKSIKICAgICAgICB9OwogICAgY2xhc3Mgb24gZXh0ZW5kcyBSIHsKICAgICAgICBjb25zdHJ1Y3RvcihlLCB0KSB7CiAgICAgICAgICAgIHN1cGVyKGUpLCB0aGlzLl9wb3BwZXIgPSBudWxsLCB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcodCksIHRoaXMuX21lbnUgPSB0aGlzLl9nZXRNZW51RWxlbWVudCgpLCB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgcmV0dXJuIG5uCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7CiAgICAgICAgICAgIHJldHVybiBybgogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IE5BTUUoKSB7CiAgICAgICAgICAgIHJldHVybiB6dAogICAgICAgIH0KICAgICAgICB0b2dnbGUoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3duKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpCiAgICAgICAgfQogICAgICAgIHNob3coKSB7CiAgICAgICAgICAgIGlmIChjKHRoaXMuX2VsZW1lbnQpIHx8IHRoaXMuX2lzU2hvd24odGhpcy5fbWVudSkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2hvdy5icy5kcm9wZG93biIsIGUpLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9IG9uLmdldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICB0aGlzLl9pbk5hdmJhciA/IFUuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAicG9wcGVyIiwgIm5vbmUiKSA6IHRoaXMuX2NyZWF0ZVBvcHBlcih0KSwgIm9udG91Y2hzdGFydCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICF0LmNsb3Nlc3QoIi5uYXZiYXItbmF2IikgJiYgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pLmZvckVhY2goZSA9PiBqLm9uKGUsICJtb3VzZW92ZXIiLCBkKSksIHRoaXMuX2VsZW1lbnQuZm9jdXMoKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAhMCksIHRoaXMuX21lbnUuY2xhc3NMaXN0LmFkZChZdCksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChZdCksIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2hvd24uYnMuZHJvcGRvd24iLCBlKQogICAgICAgIH0KICAgICAgICBoaWRlKCkgewogICAgICAgICAgICBpZiAoYyh0aGlzLl9lbGVtZW50KSB8fCAhdGhpcy5faXNTaG93bih0aGlzLl9tZW51KSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudAogICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLl9jb21wbGV0ZUhpZGUoZSkKICAgICAgICB9CiAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgdGhpcy5fcG9wcGVyICYmIHRoaXMuX3BvcHBlci5kZXN0cm95KCksIHN1cGVyLmRpc3Bvc2UoKQogICAgICAgIH0KICAgICAgICB1cGRhdGUoKSB7CiAgICAgICAgICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKCksIHRoaXMuX3BvcHBlciAmJiB0aGlzLl9wb3BwZXIudXBkYXRlKCkKICAgICAgICB9CiAgICAgICAgX2NvbXBsZXRlSGlkZShlKSB7CiAgICAgICAgICAgIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAiaGlkZS5icy5kcm9wZG93biIsIGUpLmRlZmF1bHRQcmV2ZW50ZWQgfHwgKCJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaChlID0+IGoub2ZmKGUsICJtb3VzZW92ZXIiLCBkKSksIHRoaXMuX3BvcHBlciAmJiB0aGlzLl9wb3BwZXIuZGVzdHJveSgpLCB0aGlzLl9tZW51LmNsYXNzTGlzdC5yZW1vdmUoWXQpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoWXQpLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsICJmYWxzZSIpLCBVLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgInBvcHBlciIpLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGRlbi5icy5kcm9wZG93biIsIGUpKQogICAgICAgIH0KICAgICAgICBfZ2V0Q29uZmlnKGUpIHsKICAgICAgICAgICAgaWYgKGUgPSB7IC4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgIC4uLmUKICAgICAgICAgICAgICAgIH0sIHMoenQsIGUsIHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLCAib2JqZWN0IiA9PSB0eXBlb2YgZS5yZWZlcmVuY2UgJiYgIW8oZS5yZWZlcmVuY2UpICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIGUucmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkgdGhyb3cgbmV3IFR5cGVFcnJvcih6dC50b1VwcGVyQ2FzZSgpICsgJzogT3B0aW9uICJyZWZlcmVuY2UiIHByb3ZpZGVkIHR5cGUgIm9iamVjdCIgd2l0aG91dCBhIHJlcXVpcmVkICJnZXRCb3VuZGluZ0NsaWVudFJlY3QiIG1ldGhvZC4nKTsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9CiAgICAgICAgX2NyZWF0ZVBvcHBlcihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09ICR0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAncyBkcm9wZG93bnMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZykiKTsKICAgICAgICAgICAgbGV0IHQgPSB0aGlzLl9lbGVtZW50OwogICAgICAgICAgICAicGFyZW50IiA9PT0gdGhpcy5fY29uZmlnLnJlZmVyZW5jZSA/IHQgPSBlIDogbyh0aGlzLl9jb25maWcucmVmZXJlbmNlKSA/IHQgPSBhKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpIDogIm9iamVjdCIgPT0gdHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgJiYgKHQgPSB0aGlzLl9jb25maWcucmVmZXJlbmNlKTsKICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX2dldFBvcHBlckNvbmZpZygpLAogICAgICAgICAgICAgICAgaSA9IG4ubW9kaWZpZXJzLmZpbmQoZSA9PiAiYXBwbHlTdHlsZXMiID09PSBlLm5hbWUgJiYgITEgPT09IGUuZW5hYmxlZCk7CiAgICAgICAgICAgIHRoaXMuX3BvcHBlciA9IFJ0KHQsIHRoaXMuX21lbnUsIG4pLCBpICYmIFUuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAicG9wcGVyIiwgInN0YXRpYyIpCiAgICAgICAgfQogICAgICAgIF9pc1Nob3duKGUgPSB0aGlzLl9lbGVtZW50KSB7CiAgICAgICAgICAgIHJldHVybiBlLmNsYXNzTGlzdC5jb250YWlucyhZdCkKICAgICAgICB9CiAgICAgICAgX2dldE1lbnVFbGVtZW50KCkgewogICAgICAgICAgICByZXR1cm4gVi5uZXh0KHRoaXMuX2VsZW1lbnQsIEd0KVswXQogICAgICAgIH0KICAgICAgICBfZ2V0UGxhY2VtZW50KCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlOwogICAgICAgICAgICBpZiAoZS5jbGFzc0xpc3QuY29udGFpbnMoImRyb3BlbmQiKSkgcmV0dXJuIGVuOwogICAgICAgICAgICBpZiAoZS5jbGFzc0xpc3QuY29udGFpbnMoImRyb3BzdGFydCIpKSByZXR1cm4gdG47CiAgICAgICAgICAgIGNvbnN0IHQgPSAiZW5kIiA9PT0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9tZW51KS5nZXRQcm9wZXJ0eVZhbHVlKCItLWJzLXBvc2l0aW9uIikudHJpbSgpOwogICAgICAgICAgICByZXR1cm4gZS5jbGFzc0xpc3QuY29udGFpbnMoImRyb3B1cCIpID8gdCA/IFF0IDogS3QgOiB0ID8gSnQgOiBadAogICAgICAgIH0KICAgICAgICBfZGV0ZWN0TmF2YmFyKCkgewogICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gdGhpcy5fZWxlbWVudC5jbG9zZXN0KCIubmF2YmFyIikKICAgICAgICB9CiAgICAgICAgX2dldE9mZnNldCgpIHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgb2Zmc2V0OiBlCiAgICAgICAgICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUuc3BsaXQoIiwiKS5tYXAoZSA9PiBOdW1iZXIucGFyc2VJbnQoZSwgMTApKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgPyB0ID0+IGUodCwgdGhpcy5fZWxlbWVudCkgOiBlCiAgICAgICAgfQogICAgICAgIF9nZXRQb3BwZXJDb25maWcoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB7CiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuX2dldFBsYWNlbWVudCgpLAogICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBbewogICAgICAgICAgICAgICAgICAgIG5hbWU6ICJwcmV2ZW50T3ZlcmZsb3ciLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAib2Zmc2V0IiwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gInN0YXRpYyIgPT09IHRoaXMuX2NvbmZpZy5kaXNwbGF5ICYmIChlLm1vZGlmaWVycyA9IFt7CiAgICAgICAgICAgICAgICBuYW1lOiAiYXBwbHlTdHlsZXMiLAogICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgfV0pLCB7IC4uLmUsCiAgICAgICAgICAgICAgICAuLi4iZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyhlKSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBfc2VsZWN0TWVudUl0ZW0oewogICAgICAgICAgICBrZXk6IGUsCiAgICAgICAgICAgIHRhcmdldDogdAogICAgICAgIH0pIHsKICAgICAgICAgICAgY29uc3QgbiA9IFYuZmluZCgiLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCkiLCB0aGlzLl9tZW51KS5maWx0ZXIobCk7CiAgICAgICAgICAgIG4ubGVuZ3RoICYmIGIobiwgdCwgZSA9PT0gV3QsICFuLmluY2x1ZGVzKHQpKS5mb2N1cygpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBvbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGUpOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdFtlXSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke2V9ImApOwogICAgICAgICAgICAgICAgICAgIHRbZV0oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGNsZWFyTWVudXMoZSkgewogICAgICAgICAgICBpZiAoZSAmJiAoMiA9PT0gZS5idXR0b24gfHwgImtleXVwIiA9PT0gZS50eXBlICYmICJUYWIiICE9PSBlLmtleSkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9IFYuZmluZChYdCk7CiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuKyspIHsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBvbi5nZXRJbnN0YW5jZSh0W25dKTsKICAgICAgICAgICAgICAgIGlmICghaSB8fCAhMSA9PT0gaS5fY29uZmlnLmF1dG9DbG9zZSkgY29udGludWU7CiAgICAgICAgICAgICAgICBpZiAoIWkuX2lzU2hvd24oKSkgY29udGludWU7CiAgICAgICAgICAgICAgICBjb25zdCByID0gewogICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGkuX2VsZW1lbnQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLmNvbXBvc2VkUGF0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5pbmNsdWRlcyhpLl9tZW51KTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5pbmNsdWRlcyhpLl9lbGVtZW50KSB8fCAiaW5zaWRlIiA9PT0gaS5fY29uZmlnLmF1dG9DbG9zZSAmJiAhbiB8fCAib3V0c2lkZSIgPT09IGkuX2NvbmZpZy5hdXRvQ2xvc2UgJiYgbikgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkuX21lbnUuY29udGFpbnMoZS50YXJnZXQpICYmICgia2V5dXAiID09PSBlLnR5cGUgJiYgIlRhYiIgPT09IGUua2V5IHx8IC9pbnB1dHxzZWxlY3R8b3B0aW9ufHRleHRhcmVhfGZvcm0vaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgImNsaWNrIiA9PT0gZS50eXBlICYmIChyLmNsaWNrRXZlbnQgPSBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaS5fY29tcGxldGVIaWRlKHIpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldFBhcmVudEZyb21FbGVtZW50KGUpIHsKICAgICAgICAgICAgcmV0dXJuIGkoZSkgfHwgZS5wYXJlbnROb2RlCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBkYXRhQXBpS2V5ZG93bkhhbmRsZXIoZSkgewogICAgICAgICAgICBpZiAoL2lucHV0fHRleHRhcmVhL2kudGVzdChlLnRhcmdldC50YWdOYW1lKSA/ICJTcGFjZSIgPT09IGUua2V5IHx8IGUua2V5ICE9PSBIdCAmJiAoZS5rZXkgIT09IFd0ICYmIGUua2V5ICE9PSBCdCB8fCBlLnRhcmdldC5jbG9zZXN0KEd0KSkgOiAhcXQudGVzdChlLmtleSkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuY2xhc3NMaXN0LmNvbnRhaW5zKFl0KTsKICAgICAgICAgICAgaWYgKCF0ICYmIGUua2V5ID09PSBIdCkgcmV0dXJuOwogICAgICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBjKHRoaXMpKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLm1hdGNoZXMoWHQpID8gdGhpcyA6IFYucHJldih0aGlzLCBYdClbMF0sCiAgICAgICAgICAgICAgICBpID0gb24uZ2V0T3JDcmVhdGVJbnN0YW5jZShuKTsKICAgICAgICAgICAgaWYgKGUua2V5ICE9PSBIdCkgcmV0dXJuIGUua2V5ID09PSBCdCB8fCBlLmtleSA9PT0gV3QgPyAodCB8fCBpLnNob3coKSwgdm9pZCBpLl9zZWxlY3RNZW51SXRlbShlKSkgOiB2b2lkKHQgJiYgIlNwYWNlIiAhPT0gZS5rZXkgfHwgb24uY2xlYXJNZW51cygpKTsKICAgICAgICAgICAgaS5oaWRlKCkKICAgICAgICB9CiAgICB9CiAgICBqLm9uKGRvY3VtZW50LCBWdCwgWHQsIG9uLmRhdGFBcGlLZXlkb3duSGFuZGxlciksIGoub24oZG9jdW1lbnQsIFZ0LCBHdCwgb24uZGF0YUFwaUtleWRvd25IYW5kbGVyKSwgai5vbihkb2N1bWVudCwgVXQsIG9uLmNsZWFyTWVudXMpLCBqLm9uKGRvY3VtZW50LCAia2V5dXAuYnMuZHJvcGRvd24uZGF0YS1hcGkiLCBvbi5jbGVhck1lbnVzKSwgai5vbihkb2N1bWVudCwgVXQsIFh0LCAoZnVuY3Rpb24oZSkgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgb24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS50b2dnbGUoKQogICAgfSkpLCBtKG9uKTsKICAgIGNvbnN0IGFuID0gIi5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AiLAogICAgICAgIHNuID0gIi5zdGlja3ktdG9wIjsKICAgIGNsYXNzIGxuIHsKICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmJvZHkKICAgICAgICB9CiAgICAgICAgZ2V0V2lkdGgoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIGUpCiAgICAgICAgfQogICAgICAgIGhpZGUoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldFdpZHRoKCk7CiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVPdmVyRmxvdygpLCB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCAicGFkZGluZ1JpZ2h0IiwgdCA9PiB0ICsgZSksIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKGFuLCAicGFkZGluZ1JpZ2h0IiwgdCA9PiB0ICsgZSksIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHNuLCAibWFyZ2luUmlnaHQiLCB0ID0+IHQgLSBlKQogICAgICAgIH0KICAgICAgICBfZGlzYWJsZU92ZXJGbG93KCkgewogICAgICAgICAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50LCAib3ZlcmZsb3ciKSwgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iCiAgICAgICAgfQogICAgICAgIF9zZXRFbGVtZW50QXR0cmlidXRlcyhlLCB0LCBuKSB7CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmdldFdpZHRoKCk7CiAgICAgICAgICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soZSwgZSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoZSAhPT0gdGhpcy5fZWxlbWVudCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+IGUuY2xpZW50V2lkdGggKyBpKSByZXR1cm47CiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlLCB0KTsKICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKVt0XTsKICAgICAgICAgICAgICAgIGUuc3R5bGVbdF0gPSBuKE51bWJlci5wYXJzZUZsb2F0KHIpKSArICJweCIKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgcmVzZXQoKSB7CiAgICAgICAgICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgIm92ZXJmbG93IiksIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgInBhZGRpbmdSaWdodCIpLCB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKGFuLCAicGFkZGluZ1JpZ2h0IiksIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoc24sICJtYXJnaW5SaWdodCIpCiAgICAgICAgfQogICAgICAgIF9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlLCB0KSB7CiAgICAgICAgICAgIGNvbnN0IG4gPSBlLnN0eWxlW3RdOwogICAgICAgICAgICBuICYmIFUuc2V0RGF0YUF0dHJpYnV0ZShlLCB0LCBuKQogICAgICAgIH0KICAgICAgICBfcmVzZXRFbGVtZW50QXR0cmlidXRlcyhlLCB0KSB7CiAgICAgICAgICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soZSwgZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0gVS5nZXREYXRhQXR0cmlidXRlKGUsIHQpOwogICAgICAgICAgICAgICAgdm9pZCAwID09PSBuID8gZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSA6IChVLnJlbW92ZURhdGFBdHRyaWJ1dGUoZSwgdCksIGUuc3R5bGVbdF0gPSBuKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBfYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhlLCB0KSB7CiAgICAgICAgICAgIG8oZSkgPyB0KGUpIDogVi5maW5kKGUsIHRoaXMuX2VsZW1lbnQpLmZvckVhY2godCkKICAgICAgICB9CiAgICAgICAgaXNPdmVyZmxvd2luZygpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSA+IDAKICAgICAgICB9CiAgICB9CiAgICBjb25zdCBjbiA9IHsKICAgICAgICAgICAgY2xhc3NOYW1lOiAibW9kYWwtYmFja2Ryb3AiLAogICAgICAgICAgICBpc1Zpc2libGU6ICEwLAogICAgICAgICAgICBpc0FuaW1hdGVkOiAhMSwKICAgICAgICAgICAgcm9vdEVsZW1lbnQ6ICJib2R5IiwKICAgICAgICAgICAgY2xpY2tDYWxsYmFjazogbnVsbAogICAgICAgIH0sCiAgICAgICAgdW4gPSB7CiAgICAgICAgICAgIGNsYXNzTmFtZTogInN0cmluZyIsCiAgICAgICAgICAgIGlzVmlzaWJsZTogImJvb2xlYW4iLAogICAgICAgICAgICBpc0FuaW1hdGVkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgIHJvb3RFbGVtZW50OiAiKGVsZW1lbnR8c3RyaW5nKSIsCiAgICAgICAgICAgIGNsaWNrQ2FsbGJhY2s6ICIoZnVuY3Rpb258bnVsbCkiCiAgICAgICAgfSwKICAgICAgICBkbiA9ICJtb3VzZWRvd24uYnMuYmFja2Ryb3AiOwogICAgY2xhc3MgaG4gewogICAgICAgIGNvbnN0cnVjdG9yKGUpIHsKICAgICAgICAgICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGUpLCB0aGlzLl9pc0FwcGVuZGVkID0gITEsIHRoaXMuX2VsZW1lbnQgPSBudWxsCiAgICAgICAgfQogICAgICAgIHNob3coZSkgewogICAgICAgICAgICB0aGlzLl9jb25maWcuaXNWaXNpYmxlID8gKHRoaXMuX2FwcGVuZCgpLCB0aGlzLl9jb25maWcuaXNBbmltYXRlZCAmJiBoKHRoaXMuX2dldEVsZW1lbnQoKSksIHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKCJzaG93IiksIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4gewogICAgICAgICAgICAgICAgdihlKQogICAgICAgICAgICB9KSkgOiB2KGUpCiAgICAgICAgfQogICAgICAgIGhpZGUoZSkgewogICAgICAgICAgICB0aGlzLl9jb25maWcuaXNWaXNpYmxlID8gKHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4gewogICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCksIHYoZSkKICAgICAgICAgICAgfSkpIDogdihlKQogICAgICAgIH0KICAgICAgICBfZ2V0RWxlbWVudCgpIHsKICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50KSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICBlLmNsYXNzTmFtZSA9IHRoaXMuX2NvbmZpZy5jbGFzc05hbWUsIHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkICYmIGUuY2xhc3NMaXN0LmFkZCgiZmFkZSIpLCB0aGlzLl9lbGVtZW50ID0gZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50CiAgICAgICAgfQogICAgICAgIF9nZXRDb25maWcoZSkgewogICAgICAgICAgICByZXR1cm4gKGUgPSB7IC4uLmNuLAogICAgICAgICAgICAgICAgLi4uIm9iamVjdCIgPT0gdHlwZW9mIGUgPyBlIDoge30KICAgICAgICAgICAgfSkucm9vdEVsZW1lbnQgPSBhKGUucm9vdEVsZW1lbnQpLCBzKCJiYWNrZHJvcCIsIGUsIHVuKSwgZQogICAgICAgIH0KICAgICAgICBfYXBwZW5kKCkgewogICAgICAgICAgICB0aGlzLl9pc0FwcGVuZGVkIHx8ICh0aGlzLl9jb25maWcucm9vdEVsZW1lbnQuYXBwZW5kKHRoaXMuX2dldEVsZW1lbnQoKSksIGoub24odGhpcy5fZ2V0RWxlbWVudCgpLCBkbiwgKCkgPT4gewogICAgICAgICAgICAgICAgdih0aGlzLl9jb25maWcuY2xpY2tDYWxsYmFjaykKICAgICAgICAgICAgfSksIHRoaXMuX2lzQXBwZW5kZWQgPSAhMCkKICAgICAgICB9CiAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgdGhpcy5faXNBcHBlbmRlZCAmJiAoai5vZmYodGhpcy5fZWxlbWVudCwgZG4pLCB0aGlzLl9lbGVtZW50LnJlbW92ZSgpLCB0aGlzLl9pc0FwcGVuZGVkID0gITEpCiAgICAgICAgfQogICAgICAgIF9lbXVsYXRlQW5pbWF0aW9uKGUpIHsKICAgICAgICAgICAgeShlLCB0aGlzLl9nZXRFbGVtZW50KCksIHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKQogICAgICAgIH0KICAgIH0KICAgIGNvbnN0IGZuID0gewogICAgICAgICAgICB0cmFwRWxlbWVudDogbnVsbCwKICAgICAgICAgICAgYXV0b2ZvY3VzOiAhMAogICAgICAgIH0sCiAgICAgICAgcG4gPSB7CiAgICAgICAgICAgIHRyYXBFbGVtZW50OiAiZWxlbWVudCIsCiAgICAgICAgICAgIGF1dG9mb2N1czogImJvb2xlYW4iCiAgICAgICAgfSwKICAgICAgICBnbiA9ICIuYnMuZm9jdXN0cmFwIiwKICAgICAgICBtbiA9ICJiYWNrd2FyZCI7CiAgICBjbGFzcyB2biB7CiAgICAgICAgY29uc3RydWN0b3IoZSkgewogICAgICAgICAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoZSksIHRoaXMuX2lzQWN0aXZlID0gITEsIHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPSBudWxsCiAgICAgICAgfQogICAgICAgIGFjdGl2YXRlKCkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICB0cmFwRWxlbWVudDogZSwKICAgICAgICAgICAgICAgIGF1dG9mb2N1czogdAogICAgICAgICAgICB9ID0gdGhpcy5fY29uZmlnOwogICAgICAgICAgICB0aGlzLl9pc0FjdGl2ZSB8fCAodCAmJiBlLmZvY3VzKCksIGoub2ZmKGRvY3VtZW50LCBnbiksIGoub24oZG9jdW1lbnQsICJmb2N1c2luLmJzLmZvY3VzdHJhcCIsIGUgPT4gdGhpcy5faGFuZGxlRm9jdXNpbihlKSksIGoub24oZG9jdW1lbnQsICJrZXlkb3duLnRhYi5icy5mb2N1c3RyYXAiLCBlID0+IHRoaXMuX2hhbmRsZUtleWRvd24oZSkpLCB0aGlzLl9pc0FjdGl2ZSA9ICEwKQogICAgICAgIH0KICAgICAgICBkZWFjdGl2YXRlKCkgewogICAgICAgICAgICB0aGlzLl9pc0FjdGl2ZSAmJiAodGhpcy5faXNBY3RpdmUgPSAhMSwgai5vZmYoZG9jdW1lbnQsIGduKSkKICAgICAgICB9CiAgICAgICAgX2hhbmRsZUZvY3VzaW4oZSkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICB0YXJnZXQ6IHQKICAgICAgICAgICAgfSA9IGUsIHsKICAgICAgICAgICAgICAgIHRyYXBFbGVtZW50OiBuCiAgICAgICAgICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICAgICAgICAgIGlmICh0ID09PSBkb2N1bWVudCB8fCB0ID09PSBuIHx8IG4uY29udGFpbnModCkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgaSA9IFYuZm9jdXNhYmxlQ2hpbGRyZW4obik7CiAgICAgICAgICAgIDAgPT09IGkubGVuZ3RoID8gbi5mb2N1cygpIDogdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9PT0gbW4gPyBpW2kubGVuZ3RoIC0gMV0uZm9jdXMoKSA6IGlbMF0uZm9jdXMoKQogICAgICAgIH0KICAgICAgICBfaGFuZGxlS2V5ZG93bihlKSB7CiAgICAgICAgICAgICJUYWIiID09PSBlLmtleSAmJiAodGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IGUuc2hpZnRLZXkgPyBtbiA6ICJmb3J3YXJkIikKICAgICAgICB9CiAgICAgICAgX2dldENvbmZpZyhlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0geyAuLi5mbiwKICAgICAgICAgICAgICAgIC4uLiJvYmplY3QiID09IHR5cGVvZiBlID8gZSA6IHt9CiAgICAgICAgICAgIH0sIHMoImZvY3VzdHJhcCIsIGUsIHBuKSwgZQogICAgICAgIH0KICAgIH0KICAgIGNvbnN0IHluID0gewogICAgICAgICAgICBiYWNrZHJvcDogITAsCiAgICAgICAgICAgIGtleWJvYXJkOiAhMCwKICAgICAgICAgICAgZm9jdXM6ICEwCiAgICAgICAgfSwKICAgICAgICBibiA9IHsKICAgICAgICAgICAgYmFja2Ryb3A6ICIoYm9vbGVhbnxzdHJpbmcpIiwKICAgICAgICAgICAga2V5Ym9hcmQ6ICJib29sZWFuIiwKICAgICAgICAgICAgZm9jdXM6ICJib29sZWFuIgogICAgICAgIH0sCiAgICAgICAgd24gPSAiaGlkZGVuLmJzLm1vZGFsIiwKICAgICAgICB4biA9ICJzaG93LmJzLm1vZGFsIiwKICAgICAgICBfbiA9ICJyZXNpemUuYnMubW9kYWwiLAogICAgICAgIFNuID0gImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLAogICAgICAgIENuID0gImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsCiAgICAgICAga24gPSAibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiLAogICAgICAgIFRuID0gIm1vZGFsLW9wZW4iLAogICAgICAgIEFuID0gIm1vZGFsLXN0YXRpYyI7CiAgICBjbGFzcyBFbiBleHRlbmRzIFIgewogICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgc3VwZXIoZSksIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyh0KSwgdGhpcy5fZGlhbG9nID0gVi5maW5kT25lKCIubW9kYWwtZGlhbG9nIiwgdGhpcy5fZWxlbWVudCksIHRoaXMuX2JhY2tkcm9wID0gdGhpcy5faW5pdGlhbGl6ZUJhY2tEcm9wKCksIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKSwgdGhpcy5faXNTaG93biA9ICExLCB0aGlzLl9pZ25vcmVCYWNrZHJvcENsaWNrID0gITEsIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9zY3JvbGxCYXIgPSBuZXcgbG4KICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgICAgICAgICByZXR1cm4geW4KICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICByZXR1cm4gIm1vZGFsIgogICAgICAgIH0KICAgICAgICB0b2dnbGUoZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KGUpCiAgICAgICAgfQogICAgICAgIHNob3coZSkgewogICAgICAgICAgICB0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgeG4sIHsKICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGUKICAgICAgICAgICAgfSkuZGVmYXVsdFByZXZlbnRlZCB8fCAodGhpcy5faXNTaG93biA9ICEwLCB0aGlzLl9pc0FuaW1hdGVkKCkgJiYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICEwKSwgdGhpcy5fc2Nyb2xsQmFyLmhpZGUoKSwgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFRuKSwgdGhpcy5fYWRqdXN0RGlhbG9nKCksIHRoaXMuX3NldEVzY2FwZUV2ZW50KCksIHRoaXMuX3NldFJlc2l6ZUV2ZW50KCksIGoub24odGhpcy5fZGlhbG9nLCBrbiwgKCkgPT4gewogICAgICAgICAgICAgICAgai5vbmUodGhpcy5fZWxlbWVudCwgIm1vdXNldXAuZGlzbWlzcy5icy5tb2RhbCIsIGUgPT4gewogICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0ID09PSB0aGlzLl9lbGVtZW50ICYmICh0aGlzLl9pZ25vcmVCYWNrZHJvcENsaWNrID0gITApCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgdGhpcy5fc2hvd0JhY2tkcm9wKCgpID0+IHRoaXMuX3Nob3dFbGVtZW50KGUpKSkKICAgICAgICB9CiAgICAgICAgaGlkZSgpIHsKICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykgcmV0dXJuOwogICAgICAgICAgICBpZiAoai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRlLmJzLm1vZGFsIikuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuOwogICAgICAgICAgICB0aGlzLl9pc1Nob3duID0gITE7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9pc0FuaW1hdGVkKCk7CiAgICAgICAgICAgIGUgJiYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICEwKSwgdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSwgdGhpcy5fc2V0UmVzaXplRXZlbnQoKSwgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIGoub2ZmKHRoaXMuX2VsZW1lbnQsIFNuKSwgai5vZmYodGhpcy5fZGlhbG9nLCBrbiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gdGhpcy5faGlkZU1vZGFsKCksIHRoaXMuX2VsZW1lbnQsIGUpCiAgICAgICAgfQogICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgIFt3aW5kb3csIHRoaXMuX2RpYWxvZ10uZm9yRWFjaChlID0+IGoub2ZmKGUsICIuYnMubW9kYWwiKSksIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKSwgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSwgc3VwZXIuZGlzcG9zZSgpCiAgICAgICAgfQogICAgICAgIGhhbmRsZVVwZGF0ZSgpIHsKICAgICAgICAgICAgdGhpcy5fYWRqdXN0RGlhbG9nKCkKICAgICAgICB9CiAgICAgICAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBobih7CiAgICAgICAgICAgICAgICBpc1Zpc2libGU6IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKSwKICAgICAgICAgICAgICAgIGlzQW5pbWF0ZWQ6IHRoaXMuX2lzQW5pbWF0ZWQoKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyB2bih7CiAgICAgICAgICAgICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBfZ2V0Q29uZmlnKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgPSB7IC4uLnluLAogICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgIC4uLiJvYmplY3QiID09IHR5cGVvZiBlID8gZSA6IHt9CiAgICAgICAgICAgIH0sIHMoIm1vZGFsIiwgZSwgYm4pLCBlCiAgICAgICAgfQogICAgICAgIF9zaG93RWxlbWVudChlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9pc0FuaW1hdGVkKCksCiAgICAgICAgICAgICAgICBuID0gVi5maW5kT25lKCIubW9kYWwtYm9keSIsIHRoaXMuX2RpYWxvZyk7CiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAmJiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCAhMCksIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgImRpYWxvZyIpLCB0aGlzLl9lbGVtZW50LnNjcm9sbFRvcCA9IDAsIG4gJiYgKG4uc2Nyb2xsVG9wID0gMCksIHQgJiYgaCh0aGlzLl9lbGVtZW50KSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaG93IiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLmZvY3VzICYmIHRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpLCB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSAhMSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93bi5icy5tb2RhbCIsIHsKICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBlCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCB0aGlzLl9kaWFsb2csIHQpCiAgICAgICAgfQogICAgICAgIF9zZXRFc2NhcGVFdmVudCgpIHsKICAgICAgICAgICAgdGhpcy5faXNTaG93biA/IGoub24odGhpcy5fZWxlbWVudCwgQ24sIGUgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLmtleWJvYXJkICYmICJFc2NhcGUiID09PSBlLmtleSA/IChlLnByZXZlbnREZWZhdWx0KCksIHRoaXMuaGlkZSgpKSA6IHRoaXMuX2NvbmZpZy5rZXlib2FyZCB8fCAiRXNjYXBlIiAhPT0gZS5rZXkgfHwgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpCiAgICAgICAgICAgIH0pIDogai5vZmYodGhpcy5fZWxlbWVudCwgQ24pCiAgICAgICAgfQogICAgICAgIF9zZXRSZXNpemVFdmVudCgpIHsKICAgICAgICAgICAgdGhpcy5faXNTaG93biA/IGoub24od2luZG93LCBfbiwgKCkgPT4gdGhpcy5fYWRqdXN0RGlhbG9nKCkpIDogai5vZmYod2luZG93LCBfbikKICAgICAgICB9CiAgICAgICAgX2hpZGVNb2RhbCgpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAhMCksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW1vZGFsIiksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9iYWNrZHJvcC5oaWRlKCgpID0+IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShUbiksIHRoaXMuX3Jlc2V0QWRqdXN0bWVudHMoKSwgdGhpcy5fc2Nyb2xsQmFyLnJlc2V0KCksIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB3bikKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgX3Nob3dCYWNrZHJvcChlKSB7CiAgICAgICAgICAgIGoub24odGhpcy5fZWxlbWVudCwgU24sIGUgPT4gewogICAgICAgICAgICAgICAgdGhpcy5faWdub3JlQmFja2Ryb3BDbGljayA/IHRoaXMuX2lnbm9yZUJhY2tkcm9wQ2xpY2sgPSAhMSA6IGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQgJiYgKCEwID09PSB0aGlzLl9jb25maWcuYmFja2Ryb3AgPyB0aGlzLmhpZGUoKSA6ICJzdGF0aWMiID09PSB0aGlzLl9jb25maWcuYmFja2Ryb3AgJiYgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpKQogICAgICAgICAgICB9KSwgdGhpcy5fYmFja2Ryb3Auc2hvdyhlKQogICAgICAgIH0KICAgICAgICBfaXNBbmltYXRlZCgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmYWRlIikKICAgICAgICB9CiAgICAgICAgX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKSB7CiAgICAgICAgICAgIGlmIChqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGVQcmV2ZW50ZWQuYnMubW9kYWwiKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIGNsYXNzTGlzdDogZSwKICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodDogdCwKICAgICAgICAgICAgICAgIHN0eWxlOiBuCiAgICAgICAgICAgIH0gPSB0aGlzLl9lbGVtZW50LCBpID0gdCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAgICFpICYmICJoaWRkZW4iID09PSBuLm92ZXJmbG93WSB8fCBlLmNvbnRhaW5zKEFuKSB8fCAoaSB8fCAobi5vdmVyZmxvd1kgPSAiaGlkZGVuIiksIGUuYWRkKEFuKSwgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICBlLnJlbW92ZShBbiksIGkgfHwgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbi5vdmVyZmxvd1kgPSAiIgogICAgICAgICAgICAgICAgfSwgdGhpcy5fZGlhbG9nKQogICAgICAgICAgICB9LCB0aGlzLl9kaWFsb2cpLCB0aGlzLl9lbGVtZW50LmZvY3VzKCkpCiAgICAgICAgfQogICAgICAgIF9hZGp1c3REaWFsb2coKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgICAgICB0ID0gdGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKCksCiAgICAgICAgICAgICAgICBuID0gdCA+IDA7CiAgICAgICAgICAgICghbiAmJiBlICYmICFnKCkgfHwgbiAmJiAhZSAmJiBnKCkpICYmICh0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0ID0gdCArICJweCIpLCAobiAmJiAhZSAmJiAhZygpIHx8ICFuICYmIGUgJiYgZygpKSAmJiAodGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0ICsgInB4IikKICAgICAgICB9CiAgICAgICAgX3Jlc2V0QWRqdXN0bWVudHMoKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQgPSAiIiwgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAiIgogICAgICAgIH0KICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0gRW4uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBlKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG5bZV0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtlfSJgKTsKICAgICAgICAgICAgICAgICAgICBuW2VdKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0KICAgIGoub24oZG9jdW1lbnQsICJjbGljay5icy5tb2RhbC5kYXRhLWFwaSIsICdbZGF0YS1icy10b2dnbGU9Im1vZGFsIl0nLCAoZnVuY3Rpb24oZSkgewogICAgICAgIGNvbnN0IHQgPSBpKHRoaXMpOwogICAgICAgIFsiQSIsICJBUkVBIl0uaW5jbHVkZXModGhpcy50YWdOYW1lKSAmJiBlLnByZXZlbnREZWZhdWx0KCksIGoub25lKHQsIHhuLCBlID0+IHsKICAgICAgICAgICAgZS5kZWZhdWx0UHJldmVudGVkIHx8IGoub25lKHQsIHduLCAoKSA9PiB7CiAgICAgICAgICAgICAgICBsKHRoaXMpICYmIHRoaXMuZm9jdXMoKQogICAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IG4gPSBWLmZpbmRPbmUoIi5tb2RhbC5zaG93Iik7CiAgICAgICAgbiAmJiBFbi5nZXRJbnN0YW5jZShuKS5oaWRlKCksIEVuLmdldE9yQ3JlYXRlSW5zdGFuY2UodCkudG9nZ2xlKHRoaXMpCiAgICB9KSksICQoRW4pLCBtKEVuKTsKICAgIGNvbnN0IERuID0gIm9mZmNhbnZhcyIsCiAgICAgICAgT24gPSB7CiAgICAgICAgICAgIGJhY2tkcm9wOiAhMCwKICAgICAgICAgICAga2V5Ym9hcmQ6ICEwLAogICAgICAgICAgICBzY3JvbGw6ICExCiAgICAgICAgfSwKICAgICAgICBNbiA9IHsKICAgICAgICAgICAgYmFja2Ryb3A6ICJib29sZWFuIiwKICAgICAgICAgICAga2V5Ym9hcmQ6ICJib29sZWFuIiwKICAgICAgICAgICAgc2Nyb2xsOiAiYm9vbGVhbiIKICAgICAgICB9LAogICAgICAgIEluID0gIi5vZmZjYW52YXMuc2hvdyIsCiAgICAgICAgTG4gPSAiaGlkZGVuLmJzLm9mZmNhbnZhcyI7CiAgICBjbGFzcyBQbiBleHRlbmRzIFIgewogICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgc3VwZXIoZSksIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyh0KSwgdGhpcy5faXNTaG93biA9ICExLCB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpLCB0aGlzLl9mb2N1c3RyYXAgPSB0aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKCksIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICByZXR1cm4gRG4KICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgICAgICAgICByZXR1cm4gT24KICAgICAgICB9CiAgICAgICAgdG9nZ2xlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdyhlKQogICAgICAgIH0KICAgICAgICBzaG93KGUpIHsKICAgICAgICAgICAgdGhpcy5faXNTaG93biB8fCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3cuYnMub2ZmY2FudmFzIiwgewogICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZQogICAgICAgICAgICB9KS5kZWZhdWx0UHJldmVudGVkIHx8ICh0aGlzLl9pc1Nob3duID0gITAsIHRoaXMuX2VsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIiwgdGhpcy5fYmFja2Ryb3Auc2hvdygpLCB0aGlzLl9jb25maWcuc2Nyb2xsIHx8IChuZXcgbG4pLmhpZGUoKSwgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgITApLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJkaWFsb2ciKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaG93IiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLnNjcm9sbCB8fCB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93bi5icy5vZmZjYW52YXMiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwgdGhpcy5fZWxlbWVudCwgITApKQogICAgICAgIH0KICAgICAgICBoaWRlKCkgewogICAgICAgICAgICB0aGlzLl9pc1Nob3duICYmIChqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGUuYnMub2ZmY2FudmFzIikuZGVmYXVsdFByZXZlbnRlZCB8fCAodGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSwgdGhpcy5fZWxlbWVudC5ibHVyKCksIHRoaXMuX2lzU2hvd24gPSAhMSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHRoaXMuX2JhY2tkcm9wLmhpZGUoKSwgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAhMCksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW1vZGFsIiksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksIHRoaXMuX2VsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iLCB0aGlzLl9jb25maWcuc2Nyb2xsIHx8IChuZXcgbG4pLnJlc2V0KCksIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBMbikKICAgICAgICAgICAgfSwgdGhpcy5fZWxlbWVudCwgITApKSkKICAgICAgICB9CiAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpLCB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpLCBzdXBlci5kaXNwb3NlKCkKICAgICAgICB9CiAgICAgICAgX2dldENvbmZpZyhlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0geyAuLi5PbiwKICAgICAgICAgICAgICAgIC4uLlUuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCksCiAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgZSA/IGUgOiB7fQogICAgICAgICAgICB9LCBzKERuLCBlLCBNbiksIGUKICAgICAgICB9CiAgICAgICAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBobih7CiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJvZmZjYW52YXMtYmFja2Ryb3AiLAogICAgICAgICAgICAgICAgaXNWaXNpYmxlOiB0aGlzLl9jb25maWcuYmFja2Ryb3AsCiAgICAgICAgICAgICAgICBpc0FuaW1hdGVkOiAhMCwKICAgICAgICAgICAgICAgIHJvb3RFbGVtZW50OiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICBjbGlja0NhbGxiYWNrOiAoKSA9PiB0aGlzLmhpZGUoKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyB2bih7CiAgICAgICAgICAgICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudAogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgIGoub24odGhpcy5fZWxlbWVudCwgImtleWRvd24uZGlzbWlzcy5icy5vZmZjYW52YXMiLCBlID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5rZXlib2FyZCAmJiAiRXNjYXBlIiA9PT0gZS5rZXkgJiYgdGhpcy5oaWRlKCkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IFBuLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgZSk7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0W2VdIHx8IGUuc3RhcnRzV2l0aCgiXyIpIHx8ICJjb25zdHJ1Y3RvciIgPT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtlfSJgKTsKICAgICAgICAgICAgICAgICAgICB0W2VdKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0KICAgIGoub24oZG9jdW1lbnQsICJjbGljay5icy5vZmZjYW52YXMuZGF0YS1hcGkiLCAnW2RhdGEtYnMtdG9nZ2xlPSJvZmZjYW52YXMiXScsIChmdW5jdGlvbihlKSB7CiAgICAgICAgY29uc3QgdCA9IGkodGhpcyk7CiAgICAgICAgaWYgKFsiQSIsICJBUkVBIl0uaW5jbHVkZXModGhpcy50YWdOYW1lKSAmJiBlLnByZXZlbnREZWZhdWx0KCksIGModGhpcykpIHJldHVybjsKICAgICAgICBqLm9uZSh0LCBMbiwgKCkgPT4gewogICAgICAgICAgICBsKHRoaXMpICYmIHRoaXMuZm9jdXMoKQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IG4gPSBWLmZpbmRPbmUoSW4pOwogICAgICAgIG4gJiYgbiAhPT0gdCAmJiBQbi5nZXRJbnN0YW5jZShuKS5oaWRlKCksIFBuLmdldE9yQ3JlYXRlSW5zdGFuY2UodCkudG9nZ2xlKHRoaXMpCiAgICB9KSksIGoub24od2luZG93LCAibG9hZC5icy5vZmZjYW52YXMuZGF0YS1hcGkiLCAoKSA9PiBWLmZpbmQoSW4pLmZvckVhY2goZSA9PiBQbi5nZXRPckNyZWF0ZUluc3RhbmNlKGUpLnNob3coKSkpLCAkKFBuKSwgbShQbik7CiAgICBjb25zdCBqbiA9IG5ldyBTZXQoWyJiYWNrZ3JvdW5kIiwgImNpdGUiLCAiaHJlZiIsICJpdGVtdHlwZSIsICJsb25nZGVzYyIsICJwb3N0ZXIiLCAic3JjIiwgInhsaW5rOmhyZWYiXSksCiAgICAgICAgTm4gPSAvXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlfHNtcyk6fFteIyYvOj9dKig/OlsjLz9dfCQpKS9pLAogICAgICAgIEZuID0gL15kYXRhOig/OmltYWdlXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnApfHZpZGVvXC8oPzptcGVnfG1wNHxvZ2d8d2VibSl8YXVkaW9cLyg/Om1wM3xvZ2F8b2dnfG9wdXMpKTtiYXNlNjQsW1xkKy9hLXpdKz0qJC9pLAogICAgICAgIFJuID0gKGUsIHQpID0+IHsKICAgICAgICAgICAgY29uc3QgbiA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgaWYgKHQuaW5jbHVkZXMobikpIHJldHVybiAham4uaGFzKG4pIHx8IEJvb2xlYW4oTm4udGVzdChlLm5vZGVWYWx1ZSkgfHwgRm4udGVzdChlLm5vZGVWYWx1ZSkpOwogICAgICAgICAgICBjb25zdCBpID0gdC5maWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgUmVnRXhwKTsKICAgICAgICAgICAgZm9yIChsZXQgZSA9IDAsIHQgPSBpLmxlbmd0aDsgZSA8IHQ7IGUrKykKICAgICAgICAgICAgICAgIGlmIChpW2VdLnRlc3QobikpIHJldHVybiAhMDsKICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiAkbihlLCB0LCBuKSB7CiAgICAgICAgaWYgKCFlLmxlbmd0aCkgcmV0dXJuIGU7CiAgICAgICAgaWYgKG4gJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbikgcmV0dXJuIG4oZSk7CiAgICAgICAgY29uc3QgaSA9IChuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsICJ0ZXh0L2h0bWwiKSwKICAgICAgICAgICAgciA9IFtdLmNvbmNhdCguLi5pLmJvZHkucXVlcnlTZWxlY3RvckFsbCgiKiIpKTsKICAgICAgICBmb3IgKGxldCBlID0gMCwgbiA9IHIubGVuZ3RoOyBlIDwgbjsgZSsrKSB7CiAgICAgICAgICAgIGNvbnN0IG4gPSByW2VdLAogICAgICAgICAgICAgICAgaSA9IG4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0KS5pbmNsdWRlcyhpKSkgewogICAgICAgICAgICAgICAgbi5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbyA9IFtdLmNvbmNhdCguLi5uLmF0dHJpYnV0ZXMpLAogICAgICAgICAgICAgICAgYSA9IFtdLmNvbmNhdCh0WyIqIl0gfHwgW10sIHRbaV0gfHwgW10pOwogICAgICAgICAgICBvLmZvckVhY2goZSA9PiB7CiAgICAgICAgICAgICAgICBSbihlLCBhKSB8fCBuLnJlbW92ZUF0dHJpYnV0ZShlLm5vZGVOYW1lKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgICAgICByZXR1cm4gaS5ib2R5LmlubmVySFRNTAogICAgfQogICAgY29uc3Qgem4gPSAidG9vbHRpcCIsCiAgICAgICAgSG4gPSBuZXcgU2V0KFsic2FuaXRpemUiLCAiYWxsb3dMaXN0IiwgInNhbml0aXplRm4iXSksCiAgICAgICAgQm4gPSB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogImJvb2xlYW4iLAogICAgICAgICAgICB0ZW1wbGF0ZTogInN0cmluZyIsCiAgICAgICAgICAgIHRpdGxlOiAiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKSIsCiAgICAgICAgICAgIHRyaWdnZXI6ICJzdHJpbmciLAogICAgICAgICAgICBkZWxheTogIihudW1iZXJ8b2JqZWN0KSIsCiAgICAgICAgICAgIGh0bWw6ICJib29sZWFuIiwKICAgICAgICAgICAgc2VsZWN0b3I6ICIoc3RyaW5nfGJvb2xlYW4pIiwKICAgICAgICAgICAgcGxhY2VtZW50OiAiKHN0cmluZ3xmdW5jdGlvbikiLAogICAgICAgICAgICBvZmZzZXQ6ICIoYXJyYXl8c3RyaW5nfGZ1bmN0aW9uKSIsCiAgICAgICAgICAgIGNvbnRhaW5lcjogIihzdHJpbmd8ZWxlbWVudHxib29sZWFuKSIsCiAgICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogImFycmF5IiwKICAgICAgICAgICAgYm91bmRhcnk6ICIoc3RyaW5nfGVsZW1lbnQpIiwKICAgICAgICAgICAgY3VzdG9tQ2xhc3M6ICIoc3RyaW5nfGZ1bmN0aW9uKSIsCiAgICAgICAgICAgIHNhbml0aXplOiAiYm9vbGVhbiIsCiAgICAgICAgICAgIHNhbml0aXplRm46ICIobnVsbHxmdW5jdGlvbikiLAogICAgICAgICAgICBhbGxvd0xpc3Q6ICJvYmplY3QiLAogICAgICAgICAgICBwb3BwZXJDb25maWc6ICIobnVsbHxvYmplY3R8ZnVuY3Rpb24pIgogICAgICAgIH0sCiAgICAgICAgV24gPSB7CiAgICAgICAgICAgIEFVVE86ICJhdXRvIiwKICAgICAgICAgICAgVE9QOiAidG9wIiwKICAgICAgICAgICAgUklHSFQ6IGcoKSA/ICJsZWZ0IiA6ICJyaWdodCIsCiAgICAgICAgICAgIEJPVFRPTTogImJvdHRvbSIsCiAgICAgICAgICAgIExFRlQ6IGcoKSA/ICJyaWdodCIgOiAibGVmdCIKICAgICAgICB9LAogICAgICAgIHFuID0gewogICAgICAgICAgICBhbmltYXRpb246ICEwLAogICAgICAgICAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsCiAgICAgICAgICAgIHRyaWdnZXI6ICJob3ZlciBmb2N1cyIsCiAgICAgICAgICAgIHRpdGxlOiAiIiwKICAgICAgICAgICAgZGVsYXk6IDAsCiAgICAgICAgICAgIGh0bWw6ICExLAogICAgICAgICAgICBzZWxlY3RvcjogITEsCiAgICAgICAgICAgIHBsYWNlbWVudDogInRvcCIsCiAgICAgICAgICAgIG9mZnNldDogWzAsIDBdLAogICAgICAgICAgICBjb250YWluZXI6ICExLAogICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IFsidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0Il0sCiAgICAgICAgICAgIGJvdW5kYXJ5OiAiY2xpcHBpbmdQYXJlbnRzIiwKICAgICAgICAgICAgY3VzdG9tQ2xhc3M6ICIiLAogICAgICAgICAgICBzYW5pdGl6ZTogITAsCiAgICAgICAgICAgIHNhbml0aXplRm46IG51bGwsCiAgICAgICAgICAgIGFsbG93TGlzdDogewogICAgICAgICAgICAgICAgIioiOiBbImNsYXNzIiwgImRpciIsICJpZCIsICJsYW5nIiwgInJvbGUiLCAvXmFyaWEtW1x3LV0qJC9pXSwKICAgICAgICAgICAgICAgIGE6IFsidGFyZ2V0IiwgImhyZWYiLCAidGl0bGUiLCAicmVsIl0sCiAgICAgICAgICAgICAgICBhcmVhOiBbXSwKICAgICAgICAgICAgICAgIGI6IFtdLAogICAgICAgICAgICAgICAgYnI6IFtdLAogICAgICAgICAgICAgICAgY29sOiBbXSwKICAgICAgICAgICAgICAgIGNvZGU6IFtdLAogICAgICAgICAgICAgICAgZGl2OiBbXSwKICAgICAgICAgICAgICAgIGVtOiBbXSwKICAgICAgICAgICAgICAgIGhyOiBbXSwKICAgICAgICAgICAgICAgIGgxOiBbXSwKICAgICAgICAgICAgICAgIGgyOiBbXSwKICAgICAgICAgICAgICAgIGgzOiBbXSwKICAgICAgICAgICAgICAgIGg0OiBbXSwKICAgICAgICAgICAgICAgIGg1OiBbXSwKICAgICAgICAgICAgICAgIGg2OiBbXSwKICAgICAgICAgICAgICAgIGk6IFtdLAogICAgICAgICAgICAgICAgaW1nOiBbInNyYyIsICJzcmNzZXQiLCAiYWx0IiwgInRpdGxlIiwgIndpZHRoIiwgImhlaWdodCJdLAogICAgICAgICAgICAgICAgbGk6IFtdLAogICAgICAgICAgICAgICAgb2w6IFtdLAogICAgICAgICAgICAgICAgcDogW10sCiAgICAgICAgICAgICAgICBwcmU6IFtdLAogICAgICAgICAgICAgICAgczogW10sCiAgICAgICAgICAgICAgICBzbWFsbDogW10sCiAgICAgICAgICAgICAgICBzcGFuOiBbXSwKICAgICAgICAgICAgICAgIHN1YjogW10sCiAgICAgICAgICAgICAgICBzdXA6IFtdLAogICAgICAgICAgICAgICAgc3Ryb25nOiBbXSwKICAgICAgICAgICAgICAgIHU6IFtdLAogICAgICAgICAgICAgICAgdWw6IFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBvcHBlckNvbmZpZzogbnVsbAogICAgICAgIH0sCiAgICAgICAgVW4gPSB7CiAgICAgICAgICAgIEhJREU6ICJoaWRlLmJzLnRvb2x0aXAiLAogICAgICAgICAgICBISURERU46ICJoaWRkZW4uYnMudG9vbHRpcCIsCiAgICAgICAgICAgIFNIT1c6ICJzaG93LmJzLnRvb2x0aXAiLAogICAgICAgICAgICBTSE9XTjogInNob3duLmJzLnRvb2x0aXAiLAogICAgICAgICAgICBJTlNFUlRFRDogImluc2VydGVkLmJzLnRvb2x0aXAiLAogICAgICAgICAgICBDTElDSzogImNsaWNrLmJzLnRvb2x0aXAiLAogICAgICAgICAgICBGT0NVU0lOOiAiZm9jdXNpbi5icy50b29sdGlwIiwKICAgICAgICAgICAgRk9DVVNPVVQ6ICJmb2N1c291dC5icy50b29sdGlwIiwKICAgICAgICAgICAgTU9VU0VFTlRFUjogIm1vdXNlZW50ZXIuYnMudG9vbHRpcCIsCiAgICAgICAgICAgIE1PVVNFTEVBVkU6ICJtb3VzZWxlYXZlLmJzLnRvb2x0aXAiCiAgICAgICAgfSwKICAgICAgICBWbiA9ICJmYWRlIiwKICAgICAgICBZbiA9ICJzaG93IiwKICAgICAgICBYbiA9ICJzaG93IiwKICAgICAgICBHbiA9ICIudG9vbHRpcC1pbm5lciIsCiAgICAgICAgS24gPSAiaGlkZS5icy5tb2RhbCIsCiAgICAgICAgUW4gPSAiaG92ZXIiOwogICAgY2xhc3MgWm4gZXh0ZW5kcyBSIHsKICAgICAgICBjb25zdHJ1Y3RvcihlLCB0KSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09ICR0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJCb290c3RyYXAncyB0b29sdGlwcyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKSIpOwogICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5faXNFbmFibGVkID0gITAsIHRoaXMuX3RpbWVvdXQgPSAwLCB0aGlzLl9ob3ZlclN0YXRlID0gIiIsIHRoaXMuX2FjdGl2ZVRyaWdnZXIgPSB7fSwgdGhpcy5fcG9wcGVyID0gbnVsbCwgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKHQpLCB0aGlzLnRpcCA9IG51bGwsIHRoaXMuX3NldExpc3RlbmVycygpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgcmV0dXJuIHFuCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgcmV0dXJuIHpuCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRXZlbnQoKSB7CiAgICAgICAgICAgIHJldHVybiBVbgogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkgewogICAgICAgICAgICByZXR1cm4gQm4KICAgICAgICB9CiAgICAgICAgZW5hYmxlKCkgewogICAgICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSAhMAogICAgICAgIH0KICAgICAgICBkaXNhYmxlKCkgewogICAgICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSAhMQogICAgICAgIH0KICAgICAgICB0b2dnbGVFbmFibGVkKCkgewogICAgICAgICAgICB0aGlzLl9pc0VuYWJsZWQgPSAhdGhpcy5faXNFbmFibGVkCiAgICAgICAgfQogICAgICAgIHRvZ2dsZShlKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9pc0VuYWJsZWQpCiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZSk7CiAgICAgICAgICAgICAgICAgICAgdC5fYWN0aXZlVHJpZ2dlci5jbGljayA9ICF0Ll9hY3RpdmVUcmlnZ2VyLmNsaWNrLCB0Ll9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkgPyB0Ll9lbnRlcihudWxsLCB0KSA6IHQuX2xlYXZlKG51bGwsIHQpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoWW4pKSByZXR1cm4gdm9pZCB0aGlzLl9sZWF2ZShudWxsLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbnRlcihudWxsLCB0aGlzKQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkaXNwb3NlKCkgewogICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksIGoub2ZmKHRoaXMuX2VsZW1lbnQuY2xvc2VzdCgiLm1vZGFsIiksIEtuLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKSwgdGhpcy50aXAgJiYgdGhpcy50aXAucmVtb3ZlKCksIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKSwgc3VwZXIuZGlzcG9zZSgpCiAgICAgICAgfQogICAgICAgIHNob3coKSB7CiAgICAgICAgICAgIGlmICgibm9uZSIgPT09IHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSkgdGhyb3cgbmV3IEVycm9yKCJQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50cyIpOwogICAgICAgICAgICBpZiAoIXRoaXMuaXNXaXRoQ29udGVudCgpIHx8ICF0aGlzLl9pc0VuYWJsZWQpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgZSA9IGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpLAogICAgICAgICAgICAgICAgdCA9IHUodGhpcy5fZWxlbWVudCksCiAgICAgICAgICAgICAgICBuID0gbnVsbCA9PT0gdCA/IHRoaXMuX2VsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModGhpcy5fZWxlbWVudCkgOiB0LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkIHx8ICFuKSByZXR1cm47CiAgICAgICAgICAgICJ0b29sdGlwIiA9PT0gdGhpcy5jb25zdHJ1Y3Rvci5OQU1FICYmIHRoaXMudGlwICYmIHRoaXMuZ2V0VGl0bGUoKSAhPT0gdGhpcy50aXAucXVlcnlTZWxlY3RvcihHbikuaW5uZXJIVE1MICYmICh0aGlzLl9kaXNwb3NlUG9wcGVyKCksIHRoaXMudGlwLnJlbW92ZSgpLCB0aGlzLnRpcCA9IG51bGwpOwogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5nZXRUaXBFbGVtZW50KCksCiAgICAgICAgICAgICAgICByID0gKGUgPT4gewogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSArPSBNYXRoLmZsb29yKDFlNiAqIE1hdGgucmFuZG9tKCkpCiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9KSh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpOwogICAgICAgICAgICBpLnNldEF0dHJpYnV0ZSgiaWQiLCByKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLCByKSwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbiAmJiBpLmNsYXNzTGlzdC5hZGQoVm4pOwogICAgICAgICAgICBjb25zdCBvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fY29uZmlnLnBsYWNlbWVudCA/IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQuY2FsbCh0aGlzLCBpLCB0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQsCiAgICAgICAgICAgICAgICBhID0gdGhpcy5fZ2V0QXR0YWNobWVudChvKTsKICAgICAgICAgICAgdGhpcy5fYWRkQXR0YWNobWVudENsYXNzKGEpOwogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBjb250YWluZXI6IHMKICAgICAgICAgICAgfSA9IHRoaXMuX2NvbmZpZzsKICAgICAgICAgICAgRi5zZXQoaSwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSwgdGhpcyksIHRoaXMuX2VsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModGhpcy50aXApIHx8IChzLmFwcGVuZChpKSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSU5TRVJURUQpKSwgdGhpcy5fcG9wcGVyID8gdGhpcy5fcG9wcGVyLnVwZGF0ZSgpIDogdGhpcy5fcG9wcGVyID0gUnQodGhpcy5fZWxlbWVudCwgaSwgdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGEpKSwgaS5jbGFzc0xpc3QuYWRkKFluKTsKICAgICAgICAgICAgY29uc3QgbCA9IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcyk7CiAgICAgICAgICAgIGwgJiYgaS5jbGFzc0xpc3QuYWRkKC4uLmwuc3BsaXQoIiAiKSksICJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgIGoub24oZSwgIm1vdXNlb3ZlciIsIGQpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjb25zdCBjID0gdGhpcy50aXAuY2xhc3NMaXN0LmNvbnRhaW5zKFZuKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5faG92ZXJTdGF0ZTsKICAgICAgICAgICAgICAgIHRoaXMuX2hvdmVyU3RhdGUgPSBudWxsLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5TSE9XTiksICJvdXQiID09PSBlICYmIHRoaXMuX2xlYXZlKG51bGwsIHRoaXMpCiAgICAgICAgICAgIH0sIHRoaXMudGlwLCBjKQogICAgICAgIH0KICAgICAgICBoaWRlKCkgewogICAgICAgICAgICBpZiAoIXRoaXMuX3BvcHBlcikgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICAgICAgICAgIGlmIChqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5ISURFKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47CiAgICAgICAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZShZbiksICJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaChlID0+IGoub2ZmKGUsICJtb3VzZW92ZXIiLCBkKSksIHRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2sgPSAhMSwgdGhpcy5fYWN0aXZlVHJpZ2dlci5mb2N1cyA9ICExLCB0aGlzLl9hY3RpdmVUcmlnZ2VyLmhvdmVyID0gITE7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoVm4pOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSB8fCAodGhpcy5faG92ZXJTdGF0ZSAhPT0gWG4gJiYgZS5yZW1vdmUoKSwgdGhpcy5fY2xlYW5UaXBDbGFzcygpLCB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5ISURERU4pLCB0aGlzLl9kaXNwb3NlUG9wcGVyKCkpCiAgICAgICAgICAgIH0sIHRoaXMudGlwLCB0KSwgdGhpcy5faG92ZXJTdGF0ZSA9ICIiCiAgICAgICAgfQogICAgICAgIHVwZGF0ZSgpIHsKICAgICAgICAgICAgbnVsbCAhPT0gdGhpcy5fcG9wcGVyICYmIHRoaXMuX3BvcHBlci51cGRhdGUoKQogICAgICAgIH0KICAgICAgICBpc1dpdGhDb250ZW50KCkgewogICAgICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLmdldFRpdGxlKCkpCiAgICAgICAgfQogICAgICAgIGdldFRpcEVsZW1lbnQoKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnRpcCkgcmV0dXJuIHRoaXMudGlwOwogICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIGUuaW5uZXJIVE1MID0gdGhpcy5fY29uZmlnLnRlbXBsYXRlOwogICAgICAgICAgICBjb25zdCB0ID0gZS5jaGlsZHJlblswXTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29udGVudCh0KSwgdC5jbGFzc0xpc3QucmVtb3ZlKFZuLCBZbiksIHRoaXMudGlwID0gdCwgdGhpcy50aXAKICAgICAgICB9CiAgICAgICAgc2V0Q29udGVudChlKSB7CiAgICAgICAgICAgIHRoaXMuX3Nhbml0aXplQW5kU2V0Q29udGVudChlLCB0aGlzLmdldFRpdGxlKCksIEduKQogICAgICAgIH0KICAgICAgICBfc2FuaXRpemVBbmRTZXRDb250ZW50KGUsIHQsIG4pIHsKICAgICAgICAgICAgY29uc3QgaSA9IFYuZmluZE9uZShuLCBlKTsKICAgICAgICAgICAgdCB8fCAhaSA/IHRoaXMuc2V0RWxlbWVudENvbnRlbnQoaSwgdCkgOiBpLnJlbW92ZSgpCiAgICAgICAgfQogICAgICAgIHNldEVsZW1lbnRDb250ZW50KGUsIHQpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09IGUpIHJldHVybiBvKHQpID8gKHQgPSBhKHQpLCB2b2lkKHRoaXMuX2NvbmZpZy5odG1sID8gdC5wYXJlbnROb2RlICE9PSBlICYmIChlLmlubmVySFRNTCA9ICIiLCBlLmFwcGVuZCh0KSkgOiBlLnRleHRDb250ZW50ID0gdC50ZXh0Q29udGVudCkpIDogdm9pZCh0aGlzLl9jb25maWcuaHRtbCA/ICh0aGlzLl9jb25maWcuc2FuaXRpemUgJiYgKHQgPSAkbih0LCB0aGlzLl9jb25maWcuYWxsb3dMaXN0LCB0aGlzLl9jb25maWcuc2FuaXRpemVGbikpLCBlLmlubmVySFRNTCA9IHQpIDogZS50ZXh0Q29udGVudCA9IHQpCiAgICAgICAgfQogICAgICAgIGdldFRpdGxlKCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtb3JpZ2luYWwtdGl0bGUiKSB8fCB0aGlzLl9jb25maWcudGl0bGU7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihlKQogICAgICAgIH0KICAgICAgICB1cGRhdGVBdHRhY2htZW50KGUpIHsKICAgICAgICAgICAgcmV0dXJuICJyaWdodCIgPT09IGUgPyAiZW5kIiA6ICJsZWZ0IiA9PT0gZSA/ICJzdGFydCIgOiBlCiAgICAgICAgfQogICAgICAgIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdCB8fCB0aGlzLmNvbnN0cnVjdG9yLmdldE9yQ3JlYXRlSW5zdGFuY2UoZS5kZWxlZ2F0ZVRhcmdldCwgdGhpcy5fZ2V0RGVsZWdhdGVDb25maWcoKSkKICAgICAgICB9CiAgICAgICAgX2dldE9mZnNldCgpIHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgb2Zmc2V0OiBlCiAgICAgICAgICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUuc3BsaXQoIiwiKS5tYXAoZSA9PiBOdW1iZXIucGFyc2VJbnQoZSwgMTApKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgPyB0ID0+IGUodCwgdGhpcy5fZWxlbWVudCkgOiBlCiAgICAgICAgfQogICAgICAgIF9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gZS5jYWxsKHRoaXMuX2VsZW1lbnQpIDogZQogICAgICAgIH0KICAgICAgICBfZ2V0UG9wcGVyQ29uZmlnKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IHsKICAgICAgICAgICAgICAgIHBsYWNlbWVudDogZSwKICAgICAgICAgICAgICAgIG1vZGlmaWVyczogW3sKICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZmxpcCIsCiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHRoaXMuX2NvbmZpZy5mYWxsYmFja1BsYWNlbWVudHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogIm9mZnNldCIsCiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMuX2dldE9mZnNldCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIG5hbWU6ICJwcmV2ZW50T3ZlcmZsb3ciLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAiYXJyb3ciLAogICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogYC4ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXJyb3dgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIG5hbWU6ICJvbkNoYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICJhZnRlcldyaXRlIiwKICAgICAgICAgICAgICAgICAgICBmbjogZSA9PiB0aGlzLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UoZSkKICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgb25GaXJzdFVwZGF0ZTogZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZS5vcHRpb25zLnBsYWNlbWVudCAhPT0gZS5wbGFjZW1lbnQgJiYgdGhpcy5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiB7IC4uLnQsCiAgICAgICAgICAgICAgICAuLi4iZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyh0KSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBfYWRkQXR0YWNobWVudENsYXNzKGUpIHsKICAgICAgICAgICAgdGhpcy5nZXRUaXBFbGVtZW50KCkuY2xhc3NMaXN0LmFkZChgJHt0aGlzLl9nZXRCYXNpY0NsYXNzUHJlZml4KCl9LSR7dGhpcy51cGRhdGVBdHRhY2htZW50KGUpfWApCiAgICAgICAgfQogICAgICAgIF9nZXRBdHRhY2htZW50KGUpIHsKICAgICAgICAgICAgcmV0dXJuIFduW2UudG9VcHBlckNhc2UoKV0KICAgICAgICB9CiAgICAgICAgX3NldExpc3RlbmVycygpIHsKICAgICAgICAgICAgdGhpcy5fY29uZmlnLnRyaWdnZXIuc3BsaXQoIiAiKS5mb3JFYWNoKGUgPT4gewogICAgICAgICAgICAgICAgaWYgKCJjbGljayIgPT09IGUpIGoub24odGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5DTElDSywgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBlID0+IHRoaXMudG9nZ2xlKGUpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJtYW51YWwiICE9PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUgPT09IFFuID8gdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUVOVEVSIDogdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5GT0NVU0lOLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZSA9PT0gUW4gPyB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50Lk1PVVNFTEVBVkUgOiB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTT1VUOwogICAgICAgICAgICAgICAgICAgIGoub24odGhpcy5fZWxlbWVudCwgdCwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBlID0+IHRoaXMuX2VudGVyKGUpKSwgai5vbih0aGlzLl9lbGVtZW50LCBuLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIGUgPT4gdGhpcy5fbGVhdmUoZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyID0gKCkgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudCAmJiB0aGlzLmhpZGUoKQogICAgICAgICAgICB9LCBqLm9uKHRoaXMuX2VsZW1lbnQuY2xvc2VzdCgiLm1vZGFsIiksIEtuLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKSwgdGhpcy5fY29uZmlnLnNlbGVjdG9yID8gdGhpcy5fY29uZmlnID0geyAuLi50aGlzLl9jb25maWcsCiAgICAgICAgICAgICAgICB0cmlnZ2VyOiAibWFudWFsIiwKICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAiIgogICAgICAgICAgICB9IDogdGhpcy5fZml4VGl0bGUoKQogICAgICAgIH0KICAgICAgICBfZml4VGl0bGUoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgidGl0bGUiKSwKICAgICAgICAgICAgICAgIHQgPSB0eXBlb2YgdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtb3JpZ2luYWwtdGl0bGUiKTsKICAgICAgICAgICAgKGUgfHwgInN0cmluZyIgIT09IHQpICYmICh0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1icy1vcmlnaW5hbC10aXRsZSIsIGUgfHwgIiIpLCAhZSB8fCB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpIHx8IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQgfHwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBlKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgIiIpKQogICAgICAgIH0KICAgICAgICBfZW50ZXIoZSwgdCkgewogICAgICAgICAgICB0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGUsIHQpLCBlICYmICh0Ll9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIiA9PT0gZS50eXBlID8gImZvY3VzIiA6IFFuXSA9ICEwKSwgdC5nZXRUaXBFbGVtZW50KCkuY2xhc3NMaXN0LmNvbnRhaW5zKFluKSB8fCB0Ll9ob3ZlclN0YXRlID09PSBYbiA/IHQuX2hvdmVyU3RhdGUgPSBYbiA6IChjbGVhclRpbWVvdXQodC5fdGltZW91dCksIHQuX2hvdmVyU3RhdGUgPSBYbiwgdC5fY29uZmlnLmRlbGF5ICYmIHQuX2NvbmZpZy5kZWxheS5zaG93ID8gdC5fdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgdC5faG92ZXJTdGF0ZSA9PT0gWG4gJiYgdC5zaG93KCkKICAgICAgICAgICAgfSwgdC5fY29uZmlnLmRlbGF5LnNob3cpIDogdC5zaG93KCkpCiAgICAgICAgfQogICAgICAgIF9sZWF2ZShlLCB0KSB7CiAgICAgICAgICAgIHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZSwgdCksIGUgJiYgKHQuX2FjdGl2ZVRyaWdnZXJbImZvY3Vzb3V0IiA9PT0gZS50eXBlID8gImZvY3VzIiA6IFFuXSA9IHQuX2VsZW1lbnQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSksIHQuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSB8fCAoY2xlYXJUaW1lb3V0KHQuX3RpbWVvdXQpLCB0Ll9ob3ZlclN0YXRlID0gIm91dCIsIHQuX2NvbmZpZy5kZWxheSAmJiB0Ll9jb25maWcuZGVsYXkuaGlkZSA/IHQuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICJvdXQiID09PSB0Ll9ob3ZlclN0YXRlICYmIHQuaGlkZSgpCiAgICAgICAgICAgIH0sIHQuX2NvbmZpZy5kZWxheS5oaWRlKSA6IHQuaGlkZSgpKQogICAgICAgIH0KICAgICAgICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHsKICAgICAgICAgICAgZm9yIChjb25zdCBlIGluIHRoaXMuX2FjdGl2ZVRyaWdnZXIpCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlVHJpZ2dlcltlXSkgcmV0dXJuICEwOwogICAgICAgICAgICByZXR1cm4gITEKICAgICAgICB9CiAgICAgICAgX2dldENvbmZpZyhlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSBVLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgIEhuLmhhcyhlKSAmJiBkZWxldGUgdFtlXQogICAgICAgICAgICB9KSwgKGUgPSB7IC4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCwKICAgICAgICAgICAgICAgIC4uLnQsCiAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlID8gZSA6IHt9CiAgICAgICAgICAgIH0pLmNvbnRhaW5lciA9ICExID09PSBlLmNvbnRhaW5lciA/IGRvY3VtZW50LmJvZHkgOiBhKGUuY29udGFpbmVyKSwgIm51bWJlciIgPT0gdHlwZW9mIGUuZGVsYXkgJiYgKGUuZGVsYXkgPSB7CiAgICAgICAgICAgICAgICBzaG93OiBlLmRlbGF5LAogICAgICAgICAgICAgICAgaGlkZTogZS5kZWxheQogICAgICAgICAgICB9KSwgIm51bWJlciIgPT0gdHlwZW9mIGUudGl0bGUgJiYgKGUudGl0bGUgPSBlLnRpdGxlLnRvU3RyaW5nKCkpLCAibnVtYmVyIiA9PSB0eXBlb2YgZS5jb250ZW50ICYmIChlLmNvbnRlbnQgPSBlLmNvbnRlbnQudG9TdHJpbmcoKSksIHMoem4sIGUsIHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLCBlLnNhbml0aXplICYmIChlLnRlbXBsYXRlID0gJG4oZS50ZW1wbGF0ZSwgZS5hbGxvd0xpc3QsIGUuc2FuaXRpemVGbikpLCBlCiAgICAgICAgfQogICAgICAgIF9nZXREZWxlZ2F0ZUNvbmZpZygpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHt9OwogICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gdGhpcy5fY29uZmlnKSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbdF0gIT09IHRoaXMuX2NvbmZpZ1t0XSAmJiAoZVt0XSA9IHRoaXMuX2NvbmZpZ1t0XSk7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfQogICAgICAgIF9jbGVhblRpcENsYXNzKCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRUaXBFbGVtZW50KCksCiAgICAgICAgICAgICAgICB0ID0gbmV3IFJlZ0V4cChgKF58XFxzKSR7dGhpcy5fZ2V0QmFzaWNDbGFzc1ByZWZpeCgpfVxcUytgLCAiZyIpLAogICAgICAgICAgICAgICAgbiA9IGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpLm1hdGNoKHQpOwogICAgICAgICAgICBudWxsICE9PSBuICYmIG4ubGVuZ3RoID4gMCAmJiBuLm1hcChlID0+IGUudHJpbSgpKS5mb3JFYWNoKHQgPT4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpKQogICAgICAgIH0KICAgICAgICBfZ2V0QmFzaWNDbGFzc1ByZWZpeCgpIHsKICAgICAgICAgICAgcmV0dXJuICJicy10b29sdGlwIgogICAgICAgIH0KICAgICAgICBfaGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKGUpIHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgc3RhdGU6IHQKICAgICAgICAgICAgfSA9IGU7CiAgICAgICAgICAgIHQgJiYgKHRoaXMudGlwID0gdC5lbGVtZW50cy5wb3BwZXIsIHRoaXMuX2NsZWFuVGlwQ2xhc3MoKSwgdGhpcy5fYWRkQXR0YWNobWVudENsYXNzKHRoaXMuX2dldEF0dGFjaG1lbnQodC5wbGFjZW1lbnQpKSkKICAgICAgICB9CiAgICAgICAgX2Rpc3Bvc2VQb3BwZXIoKSB7CiAgICAgICAgICAgIHRoaXMuX3BvcHBlciAmJiAodGhpcy5fcG9wcGVyLmRlc3Ryb3koKSwgdGhpcy5fcG9wcGVyID0gbnVsbCkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IFpuLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgZSk7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0W2VdKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7ZX0iYCk7CiAgICAgICAgICAgICAgICAgICAgdFtlXSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0KICAgIG0oWm4pOwogICAgY29uc3QgSm4gPSB7IC4uLlpuLkRlZmF1bHQsCiAgICAgICAgICAgIHBsYWNlbWVudDogInJpZ2h0IiwKICAgICAgICAgICAgb2Zmc2V0OiBbMCwgOF0sCiAgICAgICAgICAgIHRyaWdnZXI6ICJjbGljayIsCiAgICAgICAgICAgIGNvbnRlbnQ6ICIiLAogICAgICAgICAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InBvcG92ZXItYXJyb3ciPjwvZGl2PjxoMyBjbGFzcz0icG9wb3Zlci1oZWFkZXIiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1ib2R5Ij48L2Rpdj48L2Rpdj4nCiAgICAgICAgfSwKICAgICAgICBlaSA9IHsgLi4uWm4uRGVmYXVsdFR5cGUsCiAgICAgICAgICAgIGNvbnRlbnQ6ICIoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pIgogICAgICAgIH0sCiAgICAgICAgdGkgPSB7CiAgICAgICAgICAgIEhJREU6ICJoaWRlLmJzLnBvcG92ZXIiLAogICAgICAgICAgICBISURERU46ICJoaWRkZW4uYnMucG9wb3ZlciIsCiAgICAgICAgICAgIFNIT1c6ICJzaG93LmJzLnBvcG92ZXIiLAogICAgICAgICAgICBTSE9XTjogInNob3duLmJzLnBvcG92ZXIiLAogICAgICAgICAgICBJTlNFUlRFRDogImluc2VydGVkLmJzLnBvcG92ZXIiLAogICAgICAgICAgICBDTElDSzogImNsaWNrLmJzLnBvcG92ZXIiLAogICAgICAgICAgICBGT0NVU0lOOiAiZm9jdXNpbi5icy5wb3BvdmVyIiwKICAgICAgICAgICAgRk9DVVNPVVQ6ICJmb2N1c291dC5icy5wb3BvdmVyIiwKICAgICAgICAgICAgTU9VU0VFTlRFUjogIm1vdXNlZW50ZXIuYnMucG9wb3ZlciIsCiAgICAgICAgICAgIE1PVVNFTEVBVkU6ICJtb3VzZWxlYXZlLmJzLnBvcG92ZXIiCiAgICAgICAgfTsKICAgIGNsYXNzIG5pIGV4dGVuZHMgWm4gewogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgcmV0dXJuIEpuCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgcmV0dXJuICJwb3BvdmVyIgogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IEV2ZW50KCkgewogICAgICAgICAgICByZXR1cm4gdGkKICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHsKICAgICAgICAgICAgcmV0dXJuIGVpCiAgICAgICAgfQogICAgICAgIGlzV2l0aENvbnRlbnQoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRpdGxlKCkgfHwgdGhpcy5fZ2V0Q29udGVudCgpCiAgICAgICAgfQogICAgICAgIHNldENvbnRlbnQoZSkgewogICAgICAgICAgICB0aGlzLl9zYW5pdGl6ZUFuZFNldENvbnRlbnQoZSwgdGhpcy5nZXRUaXRsZSgpLCAiLnBvcG92ZXItaGVhZGVyIiksIHRoaXMuX3Nhbml0aXplQW5kU2V0Q29udGVudChlLCB0aGlzLl9nZXRDb250ZW50KCksICIucG9wb3Zlci1ib2R5IikKICAgICAgICB9CiAgICAgICAgX2dldENvbnRlbnQoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuY29udGVudCkKICAgICAgICB9CiAgICAgICAgX2dldEJhc2ljQ2xhc3NQcmVmaXgoKSB7CiAgICAgICAgICAgIHJldHVybiAiYnMtcG9wb3ZlciIKICAgICAgICB9CiAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZShlKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IG5pLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgZSk7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0W2VdKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7ZX0iYCk7CiAgICAgICAgICAgICAgICAgICAgdFtlXSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0KICAgIG0obmkpOwogICAgY29uc3QgaWkgPSAic2Nyb2xsc3B5IiwKICAgICAgICByaSA9IHsKICAgICAgICAgICAgb2Zmc2V0OiAxMCwKICAgICAgICAgICAgbWV0aG9kOiAiYXV0byIsCiAgICAgICAgICAgIHRhcmdldDogIiIKICAgICAgICB9LAogICAgICAgIG9pID0gewogICAgICAgICAgICBvZmZzZXQ6ICJudW1iZXIiLAogICAgICAgICAgICBtZXRob2Q6ICJzdHJpbmciLAogICAgICAgICAgICB0YXJnZXQ6ICIoc3RyaW5nfGVsZW1lbnQpIgogICAgICAgIH0sCiAgICAgICAgYWkgPSAiYWN0aXZlIiwKICAgICAgICBzaSA9ICIubmF2LWxpbmssIC5saXN0LWdyb3VwLWl0ZW0sIC5kcm9wZG93bi1pdGVtIiwKICAgICAgICBsaSA9ICJwb3NpdGlvbiI7CiAgICBjbGFzcyBjaSBleHRlbmRzIFIgewogICAgICAgIGNvbnN0cnVjdG9yKGUsIHQpIHsKICAgICAgICAgICAgc3VwZXIoZSksIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSAiQk9EWSIgPT09IHRoaXMuX2VsZW1lbnQudGFnTmFtZSA/IHdpbmRvdyA6IHRoaXMuX2VsZW1lbnQsIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyh0KSwgdGhpcy5fb2Zmc2V0cyA9IFtdLCB0aGlzLl90YXJnZXRzID0gW10sIHRoaXMuX2FjdGl2ZVRhcmdldCA9IG51bGwsIHRoaXMuX3Njcm9sbEhlaWdodCA9IDAsIGoub24odGhpcy5fc2Nyb2xsRWxlbWVudCwgInNjcm9sbC5icy5zY3JvbGxzcHkiLCAoKSA9PiB0aGlzLl9wcm9jZXNzKCkpLCB0aGlzLnJlZnJlc2goKSwgdGhpcy5fcHJvY2VzcygpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgcmV0dXJuIHJpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgcmV0dXJuIGlpCiAgICAgICAgfQogICAgICAgIHJlZnJlc2goKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9zY3JvbGxFbGVtZW50ID09PSB0aGlzLl9zY3JvbGxFbGVtZW50LndpbmRvdyA/ICJvZmZzZXQiIDogbGksCiAgICAgICAgICAgICAgICB0ID0gImF1dG8iID09PSB0aGlzLl9jb25maWcubWV0aG9kID8gZSA6IHRoaXMuX2NvbmZpZy5tZXRob2QsCiAgICAgICAgICAgICAgICBpID0gdCA9PT0gbGkgPyB0aGlzLl9nZXRTY3JvbGxUb3AoKSA6IDA7CiAgICAgICAgICAgIHRoaXMuX29mZnNldHMgPSBbXSwgdGhpcy5fdGFyZ2V0cyA9IFtdLCB0aGlzLl9zY3JvbGxIZWlnaHQgPSB0aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSwgVi5maW5kKHNpLCB0aGlzLl9jb25maWcudGFyZ2V0KS5tYXAoZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gbihlKSwKICAgICAgICAgICAgICAgICAgICBvID0gciA/IFYuZmluZE9uZShyKSA6IG51bGw7CiAgICAgICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlLndpZHRoIHx8IGUuaGVpZ2h0KSByZXR1cm4gW1VbdF0obykudG9wICsgaSwgcl0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0pLmZpbHRlcihlID0+IGUpLnNvcnQoKGUsIHQpID0+IGVbMF0gLSB0WzBdKS5mb3JFYWNoKGUgPT4gewogICAgICAgICAgICAgICAgdGhpcy5fb2Zmc2V0cy5wdXNoKGVbMF0pLCB0aGlzLl90YXJnZXRzLnB1c2goZVsxXSkKICAgICAgICAgICAgfSkKICAgICAgICB9CiAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgai5vZmYodGhpcy5fc2Nyb2xsRWxlbWVudCwgIi5icy5zY3JvbGxzcHkiKSwgc3VwZXIuZGlzcG9zZSgpCiAgICAgICAgfQogICAgICAgIF9nZXRDb25maWcoZSkgewogICAgICAgICAgICByZXR1cm4gKGUgPSB7IC4uLnJpLAogICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgIC4uLiJvYmplY3QiID09IHR5cGVvZiBlICYmIGUgPyBlIDoge30KICAgICAgICAgICAgfSkudGFyZ2V0ID0gYShlLnRhcmdldCkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzKGlpLCBlLCBvaSksIGUKICAgICAgICB9CiAgICAgICAgX2dldFNjcm9sbFRvcCgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbEVsZW1lbnQgPT09IHdpbmRvdyA/IHRoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQgOiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbFRvcAogICAgICAgIH0KICAgICAgICBfZ2V0U2Nyb2xsSGVpZ2h0KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxIZWlnaHQgfHwgTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpCiAgICAgICAgfQogICAgICAgIF9nZXRPZmZzZXRIZWlnaHQoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50ID09PSB3aW5kb3cgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodAogICAgICAgIH0KICAgICAgICBfcHJvY2VzcygpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuX2dldFNjcm9sbFRvcCgpICsgdGhpcy5fY29uZmlnLm9mZnNldCwKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSwKICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9jb25maWcub2Zmc2V0ICsgdCAtIHRoaXMuX2dldE9mZnNldEhlaWdodCgpOwogICAgICAgICAgICBpZiAodGhpcy5fc2Nyb2xsSGVpZ2h0ICE9PSB0ICYmIHRoaXMucmVmcmVzaCgpLCBlID49IG4pIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl90YXJnZXRzW3RoaXMuX3RhcmdldHMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVUYXJnZXQgIT09IGUgJiYgdGhpcy5fYWN0aXZhdGUoZSkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hY3RpdmVUYXJnZXQgJiYgZSA8IHRoaXMuX29mZnNldHNbMF0gJiYgdGhpcy5fb2Zmc2V0c1swXSA+IDApIHJldHVybiB0aGlzLl9hY3RpdmVUYXJnZXQgPSBudWxsLCB2b2lkIHRoaXMuX2NsZWFyKCk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gdGhpcy5fb2Zmc2V0cy5sZW5ndGg7IHQtLTspIHRoaXMuX2FjdGl2ZVRhcmdldCAhPT0gdGhpcy5fdGFyZ2V0c1t0XSAmJiBlID49IHRoaXMuX29mZnNldHNbdF0gJiYgKHZvaWQgMCA9PT0gdGhpcy5fb2Zmc2V0c1t0ICsgMV0gfHwgZSA8IHRoaXMuX29mZnNldHNbdCArIDFdKSAmJiB0aGlzLl9hY3RpdmF0ZSh0aGlzLl90YXJnZXRzW3RdKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIF9hY3RpdmF0ZShlKSB7CiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IGUsIHRoaXMuX2NsZWFyKCk7CiAgICAgICAgICAgIGNvbnN0IHQgPSBzaS5zcGxpdCgiLCIpLm1hcCh0ID0+IGAke3R9W2RhdGEtYnMtdGFyZ2V0PSIke2V9Il0sJHt0fVtocmVmPSIke2V9Il1gKSwKICAgICAgICAgICAgICAgIG4gPSBWLmZpbmRPbmUodC5qb2luKCIsIiksIHRoaXMuX2NvbmZpZy50YXJnZXQpOwogICAgICAgICAgICBuLmNsYXNzTGlzdC5hZGQoYWkpLCBuLmNsYXNzTGlzdC5jb250YWlucygiZHJvcGRvd24taXRlbSIpID8gVi5maW5kT25lKCIuZHJvcGRvd24tdG9nZ2xlIiwgbi5jbG9zZXN0KCIuZHJvcGRvd24iKSkuY2xhc3NMaXN0LmFkZChhaSkgOiBWLnBhcmVudHMobiwgIi5uYXYsIC5saXN0LWdyb3VwIikuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgIFYucHJldihlLCAiLm5hdi1saW5rLCAubGlzdC1ncm91cC1pdGVtIikuZm9yRWFjaChlID0+IGUuY2xhc3NMaXN0LmFkZChhaSkpLCBWLnByZXYoZSwgIi5uYXYtaXRlbSIpLmZvckVhY2goZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVi5jaGlsZHJlbihlLCAiLm5hdi1saW5rIikuZm9yRWFjaChlID0+IGUuY2xhc3NMaXN0LmFkZChhaSkpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgai50cmlnZ2VyKHRoaXMuX3Njcm9sbEVsZW1lbnQsICJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiLCB7CiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBlCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIF9jbGVhcigpIHsKICAgICAgICAgICAgVi5maW5kKHNpLCB0aGlzLl9jb25maWcudGFyZ2V0KS5maWx0ZXIoZSA9PiBlLmNsYXNzTGlzdC5jb250YWlucyhhaSkpLmZvckVhY2goZSA9PiBlLmNsYXNzTGlzdC5yZW1vdmUoYWkpKQogICAgICAgIH0KICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gY2kuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBlKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHRbZV0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtlfSJgKTsKICAgICAgICAgICAgICAgICAgICB0W2VdKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfQogICAgai5vbih3aW5kb3csICJsb2FkLmJzLnNjcm9sbHNweS5kYXRhLWFwaSIsICgpID0+IHsKICAgICAgICBWLmZpbmQoJ1tkYXRhLWJzLXNweT0ic2Nyb2xsIl0nKS5mb3JFYWNoKGUgPT4gbmV3IGNpKGUpKQogICAgfSksIG0oY2kpOwogICAgY29uc3QgdWkgPSAiYWN0aXZlIiwKICAgICAgICBkaSA9ICIuYWN0aXZlIiwKICAgICAgICBoaSA9ICI6c2NvcGUgPiBsaSA+IC5hY3RpdmUiOwogICAgY2xhc3MgZmkgZXh0ZW5kcyBSIHsKICAgICAgICBzdGF0aWMgZ2V0IE5BTUUoKSB7CiAgICAgICAgICAgIHJldHVybiAidGFiIgogICAgICAgIH0KICAgICAgICBzaG93KCkgewogICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICYmIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModWkpKSByZXR1cm47CiAgICAgICAgICAgIGxldCBlOwogICAgICAgICAgICBjb25zdCB0ID0gaSh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9lbGVtZW50LmNsb3Nlc3QoIi5uYXYsIC5saXN0LWdyb3VwIik7CiAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gIlVMIiA9PT0gbi5ub2RlTmFtZSB8fCAiT0wiID09PSBuLm5vZGVOYW1lID8gaGkgOiBkaTsKICAgICAgICAgICAgICAgIGUgPSBWLmZpbmQodCwgbiksIGUgPSBlW2UubGVuZ3RoIC0gMV0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCByID0gZSA/IGoudHJpZ2dlcihlLCAiaGlkZS5icy50YWIiLCB7CiAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50CiAgICAgICAgICAgIH0pIDogbnVsbDsKICAgICAgICAgICAgaWYgKGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2hvdy5icy50YWIiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZQogICAgICAgICAgICAgICAgfSkuZGVmYXVsdFByZXZlbnRlZCB8fCBudWxsICE9PSByICYmIHIuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuOwogICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZSh0aGlzLl9lbGVtZW50LCBuKTsKICAgICAgICAgICAgY29uc3QgbyA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGoudHJpZ2dlcihlLCAiaGlkZGVuLmJzLnRhYiIsIHsKICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50CiAgICAgICAgICAgICAgICB9KSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93bi5icy50YWIiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdCA/IHRoaXMuX2FjdGl2YXRlKHQsIHQucGFyZW50Tm9kZSwgbykgOiBvKCkKICAgICAgICB9CiAgICAgICAgX2FjdGl2YXRlKGUsIHQsIG4pIHsKICAgICAgICAgICAgY29uc3QgaSA9ICghdCB8fCAiVUwiICE9PSB0Lm5vZGVOYW1lICYmICJPTCIgIT09IHQubm9kZU5hbWUgPyBWLmNoaWxkcmVuKHQsIGRpKSA6IFYuZmluZChoaSwgdCkpWzBdLAogICAgICAgICAgICAgICAgciA9IG4gJiYgaSAmJiBpLmNsYXNzTGlzdC5jb250YWlucygiZmFkZSIpLAogICAgICAgICAgICAgICAgbyA9ICgpID0+IHRoaXMuX3RyYW5zaXRpb25Db21wbGV0ZShlLCBpLCBuKTsKICAgICAgICAgICAgaSAmJiByID8gKGkuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKG8sIGUsICEwKSkgOiBvKCkKICAgICAgICB9CiAgICAgICAgX3RyYW5zaXRpb25Db21wbGV0ZShlLCB0LCBuKSB7CiAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICB0LmNsYXNzTGlzdC5yZW1vdmUodWkpOwogICAgICAgICAgICAgICAgY29uc3QgZSA9IFYuZmluZE9uZSgiOnNjb3BlID4gLmRyb3Bkb3duLW1lbnUgLmFjdGl2ZSIsIHQucGFyZW50Tm9kZSk7CiAgICAgICAgICAgICAgICBlICYmIGUuY2xhc3NMaXN0LnJlbW92ZSh1aSksICJ0YWIiID09PSB0LmdldEF0dHJpYnV0ZSgicm9sZSIpICYmIHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgITEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5jbGFzc0xpc3QuYWRkKHVpKSwgInRhYiIgPT09IGUuZ2V0QXR0cmlidXRlKCJyb2xlIikgJiYgZS5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAhMCksIGgoZSksIGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmYWRlIikgJiYgZS5jbGFzc0xpc3QuYWRkKCJzaG93Iik7CiAgICAgICAgICAgIGxldCBpID0gZS5wYXJlbnROb2RlOwogICAgICAgICAgICBpZiAoaSAmJiAiTEkiID09PSBpLm5vZGVOYW1lICYmIChpID0gaS5wYXJlbnROb2RlKSwgaSAmJiBpLmNsYXNzTGlzdC5jb250YWlucygiZHJvcGRvd24tbWVudSIpKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5jbG9zZXN0KCIuZHJvcGRvd24iKTsKICAgICAgICAgICAgICAgIHQgJiYgVi5maW5kKCIuZHJvcGRvd24tdG9nZ2xlIiwgdCkuZm9yRWFjaChlID0+IGUuY2xhc3NMaXN0LmFkZCh1aSkpLCBlLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsICEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIG4gJiYgbigpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBmaS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpOwogICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdFtlXSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke2V9ImApOwogICAgICAgICAgICAgICAgICAgIHRbZV0oKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkKICAgICAgICB9CiAgICB9CiAgICBqLm9uKGRvY3VtZW50LCAiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwgJ1tkYXRhLWJzLXRvZ2dsZT0idGFiIl0sIFtkYXRhLWJzLXRvZ2dsZT0icGlsbCJdLCBbZGF0YS1icy10b2dnbGU9Imxpc3QiXScsIChmdW5jdGlvbihlKSB7CiAgICAgICAgWyJBIiwgIkFSRUEiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpICYmIGUucHJldmVudERlZmF1bHQoKSwgYyh0aGlzKSB8fCBmaS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnNob3coKQogICAgfSkpLCBtKGZpKTsKICAgIGNvbnN0IHBpID0gInNob3ciLAogICAgICAgIGdpID0gInNob3dpbmciLAogICAgICAgIG1pID0gewogICAgICAgICAgICBhbmltYXRpb246ICJib29sZWFuIiwKICAgICAgICAgICAgYXV0b2hpZGU6ICJib29sZWFuIiwKICAgICAgICAgICAgZGVsYXk6ICJudW1iZXIiCiAgICAgICAgfSwKICAgICAgICB2aSA9IHsKICAgICAgICAgICAgYW5pbWF0aW9uOiAhMCwKICAgICAgICAgICAgYXV0b2hpZGU6ICEwLAogICAgICAgICAgICBkZWxheTogNWUzCiAgICAgICAgfTsKICAgIGNsYXNzIHlpIGV4dGVuZHMgUiB7CiAgICAgICAgY29uc3RydWN0b3IoZSwgdCkgewogICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKHQpLCB0aGlzLl90aW1lb3V0ID0gbnVsbCwgdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiA9ICExLCB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uID0gITEsIHRoaXMuX3NldExpc3RlbmVycygpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7CiAgICAgICAgICAgIHJldHVybiBtaQogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7CiAgICAgICAgICAgIHJldHVybiB2aQogICAgICAgIH0KICAgICAgICBzdGF0aWMgZ2V0IE5BTUUoKSB7CiAgICAgICAgICAgIHJldHVybiAidG9hc3QiCiAgICAgICAgfQogICAgICAgIHNob3coKSB7CiAgICAgICAgICAgIGoudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2hvdy5icy50b2FzdCIpLmRlZmF1bHRQcmV2ZW50ZWQgfHwgKHRoaXMuX2NsZWFyVGltZW91dCgpLCB0aGlzLl9jb25maWcuYW5pbWF0aW9uICYmIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZmFkZSIpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUiKSwgaCh0aGlzLl9lbGVtZW50KSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHBpKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGdpKSwgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZ2kpLCBqLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLnRvYXN0IiksIHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCkKICAgICAgICAgICAgfSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbikpCiAgICAgICAgfQogICAgICAgIGhpZGUoKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHBpKSAmJiAoai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRlLmJzLnRvYXN0IikuZGVmYXVsdFByZXZlbnRlZCB8fCAodGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGdpKSwgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGUiKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGdpKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHBpKSwgai50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRkZW4uYnMudG9hc3QiKQogICAgICAgICAgICB9LCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKSkpCiAgICAgICAgfQogICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgIHRoaXMuX2NsZWFyVGltZW91dCgpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhwaSkgJiYgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHBpKSwgc3VwZXIuZGlzcG9zZSgpCiAgICAgICAgfQogICAgICAgIF9nZXRDb25maWcoZSkgewogICAgICAgICAgICByZXR1cm4gZSA9IHsgLi4udmksCiAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgLi4uIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSA/IGUgOiB7fQogICAgICAgICAgICB9LCBzKCJ0b2FzdCIsIGUsIHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLCBlCiAgICAgICAgfQogICAgICAgIF9tYXliZVNjaGVkdWxlSGlkZSgpIHsKICAgICAgICAgICAgdGhpcy5fY29uZmlnLmF1dG9oaWRlICYmICh0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uIHx8IHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gfHwgKHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpCiAgICAgICAgICAgIH0sIHRoaXMuX2NvbmZpZy5kZWxheSkpKQogICAgICAgIH0KICAgICAgICBfb25JbnRlcmFjdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJtb3VzZW92ZXIiOgogICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdXQiOgogICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSB0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNpbiI6CiAgICAgICAgICAgICAgICBjYXNlICJmb2N1c291dCI6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHQKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodCkgcmV0dXJuIHZvaWQgdGhpcy5fY2xlYXJUaW1lb3V0KCk7CiAgICAgICAgICAgIGNvbnN0IG4gPSBlLnJlbGF0ZWRUYXJnZXQ7CiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQgPT09IG4gfHwgdGhpcy5fZWxlbWVudC5jb250YWlucyhuKSB8fCB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpCiAgICAgICAgfQogICAgICAgIF9zZXRMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgIGoub24odGhpcy5fZWxlbWVudCwgIm1vdXNlb3Zlci5icy50b2FzdCIsIGUgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihlLCAhMCkpLCBqLm9uKHRoaXMuX2VsZW1lbnQsICJtb3VzZW91dC5icy50b2FzdCIsIGUgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihlLCAhMSkpLCBqLm9uKHRoaXMuX2VsZW1lbnQsICJmb2N1c2luLmJzLnRvYXN0IiwgZSA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGUsICEwKSksIGoub24odGhpcy5fZWxlbWVudCwgImZvY3Vzb3V0LmJzLnRvYXN0IiwgZSA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGUsICExKSkKICAgICAgICB9CiAgICAgICAgX2NsZWFyVGltZW91dCgpIHsKICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLCB0aGlzLl90aW1lb3V0ID0gbnVsbAogICAgICAgIH0KICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0geWkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBlKTsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHRbZV0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtlfSJgKTsKICAgICAgICAgICAgICAgICAgICB0W2VdKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkKHlpKSwgbSh5aSksIHsKICAgICAgICBBbGVydDogeiwKICAgICAgICBCdXR0b246IEIsCiAgICAgICAgQ2Fyb3VzZWw6IHJlLAogICAgICAgIENvbGxhcHNlOiBwZSwKICAgICAgICBEcm9wZG93bjogb24sCiAgICAgICAgTW9kYWw6IEVuLAogICAgICAgIE9mZmNhbnZhczogUG4sCiAgICAgICAgUG9wb3ZlcjogbmksCiAgICAgICAgU2Nyb2xsU3B5OiBjaSwKICAgICAgICBUYWI6IGZpLAogICAgICAgIFRvYXN0OiB5aSwKICAgICAgICBUb29sdGlwOiBabgogICAgfQp9KSk7CnZhciBOaW9BcHAgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgbiA9IHQod2luZG93KSwKICAgICAgICBpID0gdCgiYm9keSIpLAogICAgICAgIHIgPSAibGl0ZS1kYXNoIjsKCiAgICBmdW5jdGlvbiBvKGUsIHQpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICBlW25dID0gdFtuXQogICAgICAgIH0pKSwgZQogICAgfQogICAgcmV0dXJuIHQuZm4uZXhpc3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIDAgPCB0aGlzLmxlbmd0aAogICAgfSwgdC5mbi5jc3NrZXkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgZm9yICh2YXIgbiA9IHQgPyB0ICsgIi0iIDogIiIsIGkgPSBlID8gZS5zcGxpdCgiICIpIDogIiIsIHIgPSAwOyByIDwgaS5sZW5ndGg7IHIrKykgaVtyXSA9IG4gKyBpW3JdOwogICAgICAgIHJldHVybiBpLnRvU3RyaW5nKCkucmVwbGFjZSgiLCIsICIgIikKICAgIH0sIGUuQlMgPSB7fSwgZS5UR0wgPSB7fSwgZS5BbmkgPSB7fSwgZS5BZGRvbnMgPSB7fSwgZS5TbGlkZXIgPSB7fSwgZS5QaWNrZXIgPSB7fSwgZS5DdXN0b20gPSB7fSwgZS5XaW4gPSB7CiAgICAgICAgaGVpZ2h0OiBuLmhlaWdodCgpLAogICAgICAgIHdpZHRoOiBuLm91dGVyV2lkdGgoKQogICAgfSwgZS5CcmVhayA9IHsKICAgICAgICBtYjogNDIwLAogICAgICAgIHNtOiA1NzYsCiAgICAgICAgbWQ6IDc2OCwKICAgICAgICBsZzogOTkyLAogICAgICAgIHhsOiAxMjAwLAogICAgICAgIHh4bDogMTU0MCwKICAgICAgICBhbnk6IDEgLyAwCiAgICB9LCBlLkhvc3QgPSB7CiAgICAgICAgbmFtZTogd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLAogICAgICAgIGxvY2F0OiByLnNsaWNlKC00KSArIHIuc2xpY2UoMCwgNCkKICAgIH0sIGUuaXNEYXJrID0gISghaS5oYXNDbGFzcygiZGFyay1tb2RlIikgJiYgImRhcmsiICE9PSBpLmRhdGEoInRoZW1lIikpLCBlLlN0YXRlID0gewogICAgICAgIGlzUlRMOiAhKCFpLmhhc0NsYXNzKCJoYXMtcnRsIikgJiYgInJ0bCIgIT09IGkuYXR0cigiZGlyIikpLAogICAgICAgIGlzVG91Y2g6ICJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwKICAgICAgICBpc01vYmlsZTogISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pfFdpbmRvd3MgUGhvbmV8L2kpLAogICAgICAgIGFzTW9iaWxlOiBlLldpbi53aWR0aCA8IGUuQnJlYWsubWQsCiAgICAgICAgYXNTZXJ2ZTogZS5Ib3N0Lm5hbWUuc3BsaXQoIi4iKS5pbmRleE9mKGUuSG9zdC5sb2NhdCkKICAgIH0sIGUuaGV4UkdCID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGlmICh0ID0gdCB8fCAxLCAvXiMoW0EtRmEtZjAtOV17M30pezEsMn0kLy50ZXN0KGUpKSByZXR1cm4gZSA9IFsoZSA9ICIweCIgKyAoZSA9IDMgPT09IChlID0gZS5zdWJzdHJpbmcoMSkuc3BsaXQoIiIpKS5sZW5ndGggPyBbZVswXSwgZVswXSwgZVsxXSwgZVsxXSwgZVsyXSwgZVsyXV0gOiBlKS5qb2luKCIiKSkgPj4gMTYgJiAyNTUsIGUgPj4gOCAmIDI1NSwgMjU1ICYgZV0uam9pbigiLCIpLCAxIDw9IHQgPyAicmdiYSgiICsgZSArICIpIiA6ICJyZ2JhKCIgKyBlICsgIiwiICsgdCArICIpIjsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCBoZXgiKQogICAgfSwgZS5TdGF0ZVVwZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGUuV2luID0gewogICAgICAgICAgICBoZWlnaHQ6IG4uaGVpZ2h0KCksCiAgICAgICAgICAgIHdpZHRoOiBuLm91dGVyV2lkdGgoKQogICAgICAgIH0sIGUuU3RhdGUuYXNNb2JpbGUgPSBlLldpbi53aWR0aCA8IGUuQnJlYWsubWQKICAgIH0sIGUuQ2xhc3NJbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gdCgpIHsKICAgICAgICAgICAgITAgPT09IGUuU3RhdGUuYXNNb2JpbGUgPyBpLmFkZENsYXNzKCJhcy1tb2JpbGUiKSA6IGkucmVtb3ZlQ2xhc3MoImFzLW1vYmlsZSIpCiAgICAgICAgfSEwID09PSBlLlN0YXRlLmlzVG91Y2ggPyBpLmFkZENsYXNzKCJoYXMtdG91Y2giKSA6IGkuYWRkQ2xhc3MoIm5vLXRvdWNoIiksIHQoKSwgITAgPT09IGUuU3RhdGUuaXNSVEwgJiYgaS5hZGRDbGFzcygiaGFzLXJ0bCIpLCBpLmFkZENsYXNzKCJuay1uaW8tdGhlbWUiKSwgbi5vbigicmVzaXplIiwgdCkKICAgIH0sIGUuQ29sb3JCRyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZ1bmN0aW9uIGUoZSwgbikgewogICAgICAgICAgICBuID0gbiB8fCAiYmciOwogICAgICAgICAgICB2YXIgaSA9IChlID0gdChlKSkuZGF0YShuKTsKICAgICAgICAgICAgIiIgIT09IGkgJiYgKCJiZy1jb2xvciIgPT09IG4gPyBlLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIGkpIDogImJnLWltYWdlIiA9PT0gbiA/IGUuY3NzKCJiYWNrZ3JvdW5kLWltYWdlIiwgJ3VybCgiJyArIGkgKyAnIiknKSA6IGUuY3NzKCJiYWNrZ3JvdW5kIiwgaSkpCiAgICAgICAgfQogICAgICAgIHQoIltkYXRhLWJnXSIpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBlKHRoaXMsICJiZyIpCiAgICAgICAgfSkpLCB0KCJbZGF0YS1iZy1jb2xvcl0iKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZSh0aGlzLCAiYmctY29sb3IiKQogICAgICAgIH0pKSwgdCgiW2RhdGEtYmctaW1hZ2VdIikuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUodGhpcywgImJnLWltYWdlIikKICAgICAgICB9KSkKICAgIH0sIGUuQ29sb3JUWFQgPSBmdW5jdGlvbigpIHsKICAgICAgICB0KCJbZGF0YS1jb2xvcl0iKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUsIG47CiAgICAgICAgICAgIG4gPSAiY29sb3IiLCAiIiAhPT0gKG4gPSAoZSA9IHQoZSA9IHRoaXMpKS5kYXRhKG4gfHwgImNvbG9yIikpICYmIGUuY3NzKCJjb2xvciIsIG4pCiAgICAgICAgfSkpCiAgICB9LCBlLkJyZWFrQ2xhc3MgPSBmdW5jdGlvbihuLCBpLCByKSB7CiAgICAgICAgdmFyIGEgPSBuIHx8ICIuaGVhZGVyLW1lbnUiLAogICAgICAgICAgICBzID0gaSB8fCBlLkJyZWFrLm1kLAogICAgICAgICAgICBsID0gKG4gPSB7CiAgICAgICAgICAgICAgICB0aW1lT3V0OiAxZTMsCiAgICAgICAgICAgICAgICBjbGFzc0FkZDogIm1vYmlsZS1tZW51IgogICAgICAgICAgICB9LCByID8gbyhuLCByKSA6IG4pOwogICAgICAgIGlmICgoaSA9IGwuaWdub3JlIHx8ICExKSAmJiB0KGEpLmhhc0NsYXNzKGkpKSByZXR1cm4gITE7CiAgICAgICAgZS5XaW4ud2lkdGggPCBzID8gc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGUuV2luLndpZHRoIDwgcyAmJiB0KGEpLmFkZENsYXNzKGwuY2xhc3NBZGQpCiAgICAgICAgfSksIGwudGltZU91dCkgOiB0KGEpLnJlbW92ZUNsYXNzKGwuY2xhc3NBZGQpCiAgICB9LCBlLlBhc3Njb2RlID0gZnVuY3Rpb24oZSwgbikgewogICAgICAgIHZhciBpID0gewogICAgICAgICAgICAgICAgc2hvd0NsYXNzOiAiaXMtc2hvd24iLAogICAgICAgICAgICAgICAgaGlkZUNsYXNzOiAiaXMtaGlkZGVuIgogICAgICAgICAgICB9LAogICAgICAgICAgICByID0gbiA/IG8oaSwgbikgOiBpOwogICAgICAgIHQoZSkuZXhpc3RzKCkgJiYgdChlKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgbiA9IHQodGhpcyksCiAgICAgICAgICAgICAgICBpID0gbi5kYXRhKCJ0YXJnZXQiKTsKICAgICAgICAgICAgaSA9IHQoIiMiICsgaSk7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgaS5oYXNDbGFzcyhyLnNob3dDbGFzcykgPyAobi5hZGQoaSkuYWRkQ2xhc3Moci5oaWRlQ2xhc3MpLnJlbW92ZUNsYXNzKHIuc2hvd0NsYXNzKSwgaS5hdHRyKCJ0eXBlIiwgInBhc3N3b3JkIikpIDogKG4uYWRkKGkpLmFkZENsYXNzKHIuc2hvd0NsYXNzKS5yZW1vdmVDbGFzcyhyLmhpZGVDbGFzcyksIGkuYXR0cigidHlwZSIsICJ0ZXh0IikpCiAgICAgICAgfSkpCiAgICB9LCBlLkxpbmtPZmYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdChlKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCkKICAgICAgICB9KSkKICAgIH0sIGUuU2V0SFcgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgbiA9ICJoZWlnaHQiID09IG4gfHwgImgiID09IG4gPyAiaGVpZ2h0IiA6ICJ3aWR0aCIsIHQoZSA9IGUgfHwgIltkYXRhLSIgKyBuICsgIl0iKS5leGlzdHMoKSAmJiB0KGUpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0KHRoaXMpLmNzcyhuLCB0KHRoaXMpLmRhdGEobikpCiAgICAgICAgfSkpCiAgICB9LCBlLkFkZEluQm9keSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgcHJlZml4OiAibmstIiwKICAgICAgICAgICAgY2xhc3M6ICIiLAogICAgICAgICAgICBoYXM6ICJoYXMiCiAgICAgICAgfTsKICAgICAgICBuID0gbiA/IG8ociwgbikgOiByLCBlID0gciA9IGUucmVwbGFjZSgiLiIsICIiKS5yZXBsYWNlKG4ucHJlZml4LCAiIik7CiAgICAgICAgbi5wcmVmaXggPSAhMSAhPT0gbi5wcmVmaXggPyBuLnByZWZpeCA6ICIiLCBuLmhhcyA9ICIiICE9PSBuLmhhcyA/IG4uaGFzICsgIi0iIDogIiIsIGUgPSAiIiAhPT0gbi5jbGFzcyA/IG4uY2xhc3MgOiBuLmhhcyArIGUsIHQoIi4iICsgbi5wcmVmaXggKyByKS5leGlzdHMoKSAmJiAhaS5oYXNDbGFzcyhlKSAmJiBpLmFkZENsYXNzKGUpCiAgICB9LCBlLlRvZ2dsZSA9IHsKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gewogICAgICAgICAgICAgICAgICAgIHNlbGY6IGUsCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiAiYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAiZXhwYW5kZWQiLAogICAgICAgICAgICAgICAgICAgIGRhdGE6ICJjb250ZW50IiwKICAgICAgICAgICAgICAgICAgICBvbGF5OiAidG9nZ2xlLW92ZXJsYXkiLAogICAgICAgICAgICAgICAgICAgIHNwZWVkOiA0MDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhID0gKG4gPSBuID8gbyhyLCBuKSA6IHIsIHIgPSB0KCJbZGF0YS10YXJnZXQ9IiArIGUgKyAiXSIpLCAoZSA9IHQoIltkYXRhLSIgKyBuLmRhdGEgKyAiPSIgKyBlICsgIl0iKSkuZGF0YSgidG9nZ2xlLWJvZHkiKSk7CiAgICAgICAgICAgIGUuZGF0YSgidG9nZ2xlLW92ZXJsYXkiKSAmJiAobi5vdmVybGF5ID0gbi5vbGF5KSwgYSAmJiAobi5ib2R5ID0gInRvZ2dsZS1zaG93biIpLCBlLmhhc0NsYXNzKG4uY29udGVudCkgPyAoci5yZW1vdmVDbGFzcyhuLmFjdGl2ZSksICgxID09IG4udG9nZ2xlID8gZS5zbGlkZVVwKG4uc3BlZWQpIDogZSkucmVtb3ZlQ2xhc3Mobi5jb250ZW50KSkgOiAoci5hZGRDbGFzcyhuLmFjdGl2ZSksICgxID09IG4udG9nZ2xlID8gZS5zbGlkZURvd24obi5zcGVlZCkgOiBlKS5hZGRDbGFzcyhuLmNvbnRlbnQpKSwgbi5ib2R5ICYmIGkudG9nZ2xlQ2xhc3Mobi5ib2R5KSwgbi5vdmVybGF5ICYmIHRoaXMub3ZlcmxheShlLCBuLm92ZXJsYXksIG4pCiAgICAgICAgfSwKICAgICAgICByZW1vdmVkOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgIHZhciByID0gewogICAgICAgICAgICAgICAgICAgIHNlbGY6IGUsCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiAiYWN0aXZlIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAiZXhwYW5kZWQiLAogICAgICAgICAgICAgICAgICAgIGJvZHk6ICIiLAogICAgICAgICAgICAgICAgICAgIGRhdGE6ICJjb250ZW50IiwKICAgICAgICAgICAgICAgICAgICBvbGF5OiAidG9nZ2xlLW92ZXJsYXkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYSA9IChuID0gbiA/IG8ociwgbikgOiByLCByID0gdCgiW2RhdGEtdGFyZ2V0PSIgKyBlICsgIl0iKSwgKGUgPSB0KCJbZGF0YS0iICsgbi5kYXRhICsgIj0iICsgZSArICJdIikpLmRhdGEoInRvZ2dsZS1ib2R5IikpOwogICAgICAgICAgICBlLmRhdGEoInRvZ2dsZS1vdmVybGF5IikgJiYgKG4ub3ZlcmxheSA9IG4ub2xheSksIGEgJiYgKG4uYm9keSA9ICJ0b2dnbGUtc2hvd24iKSwgKHIuaGFzQ2xhc3Mobi5hY3RpdmUpIHx8IGUuaGFzQ2xhc3Mobi5jb250ZW50KSkgJiYgKHIucmVtb3ZlQ2xhc3Mobi5hY3RpdmUpLCBlLnJlbW92ZUNsYXNzKG4uY29udGVudCksICEwID09PSBuLnRvZ2dsZSAmJiBlLnNsaWRlVXAobi5zcGVlZCkpLCBuLmJvZHkgJiYgaS5oYXNDbGFzcyhuLmJvZHkpICYmIGkucmVtb3ZlQ2xhc3Mobi5ib2R5KSwgbi5jbG9zZSAmJiAoITAgPT09IG4uY2xvc2UucHJvZmlsZSAmJiB0aGlzLmNsb3NlUHJvZmlsZShlKSwgITAgPT09IG4uY2xvc2UubWVudSAmJiB0aGlzLmNsb3NlTWVudShlKSksIG4ub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXlSZW1vdmUobi5vdmVybGF5KQogICAgICAgIH0sCiAgICAgICAgb3ZlcmxheTogZnVuY3Rpb24obiwgaSwgcikgewogICAgICAgICAgICB2YXIgbzsKICAgICAgICAgICAgITAgPT09IHIuYnJlYWsgJiYgKG8gPSB0KG4pLmRhdGEoInRvZ2dsZS1zY3JlZW4iKSwgci5icmVhayA9IGUuQnJlYWtbb10pLCB0KG4pLmhhc0NsYXNzKHIuY29udGVudCkgJiYgZS5XaW4ud2lkdGggPCByLmJyZWFrID8gdChuKS5hZnRlcignPGRpdiBjbGFzcz0iJyArIGkgKyAnIiBkYXRhLXRhcmdldD0iJyArIHIuc2VsZiArICciPjwvZGl2PicpIDogdGhpcy5vdmVybGF5UmVtb3ZlKGkpCiAgICAgICAgfSwKICAgICAgICBvdmVybGF5UmVtb3ZlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHQoIi4iICsgZSkuZmFkZU91dCgzMDApLnJlbW92ZSgpCiAgICAgICAgfSwKICAgICAgICBkcm9wTWVudTogZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICB2YXIgaSA9IHsKICAgICAgICAgICAgICAgIGFjdGl2ZTogImFjdGl2ZSIsCiAgICAgICAgICAgICAgICBzZWxmOiAibGluay10b2dnbGUiLAogICAgICAgICAgICAgICAgY2hpbGQ6ICJtZW51LXN1YiIsCiAgICAgICAgICAgICAgICBzcGVlZDogNDAwCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIG4gPSBuID8gbyhpLCBuKSA6IGksIGUgPSAoaSA9IHQoZSkucGFyZW50KCkpLmNoaWxkcmVuKCIuIiArIG4uY2hpbGQpOwogICAgICAgICAgICBuLnNwZWVkID0gNSA8IGUuY2hpbGRyZW4oKS5sZW5ndGggPyBuLnNwZWVkICsgMjAgKiBlLmNoaWxkcmVuKCkubGVuZ3RoIDogbi5zcGVlZCwgZS5zbGlkZVRvZ2dsZShuLnNwZWVkKS5maW5kKCIuIiArIG4uY2hpbGQpLnNsaWRlVXAobi5zcGVlZCksIGkudG9nZ2xlQ2xhc3Mobi5hY3RpdmUpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3Mobi5hY3RpdmUpLmZpbmQoIi4iICsgbi5jaGlsZCkuc2xpZGVVcChuLnNwZWVkKQogICAgICAgIH0sCiAgICAgICAgY2xvc2VQcm9maWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBuID0gdChlKS5maW5kKCIubmstcHJvZmlsZS10b2dnbGUuYWN0aXZlIik7CiAgICAgICAgICAgIGUgPSB0KGUpLmZpbmQoIi5uay1wcm9maWxlLWNvbnRlbnQuZXhwYW5kZWQiKTsKICAgICAgICAgICAgbi5leGlzdHMoKSAmJiAobi5yZW1vdmVDbGFzcygiYWN0aXZlIiksIGUuc2xpZGVVcCgpLnJlbW92ZUNsYXNzKCJleHBhbmRlZCIpKQogICAgICAgIH0sCiAgICAgICAgY2xvc2VNZW51OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIChlID0gdChlKS5maW5kKCIubmstbWVudS1pdGVtLmFjdGl2ZSIpKS5leGlzdHMoKSAmJiBlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCIubmstbWVudS1zdWIiKS5zbGlkZVVwKCkKICAgICAgICB9CiAgICB9LCBlLkJTLnRvb2x0aXAgPSBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgdmFyIGkgPSB7CiAgICAgICAgICAgICAgICBib3VuZGFyeTogIndpbmRvdyIsCiAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiaG92ZXIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHIgPSBuID8gbyhpLCBuKSA6IGk7CiAgICAgICAgdChlKS5leGlzdHMoKSAmJiBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSB8fCAnW2RhdGEtYnMtdG9nZ2xlPSJ0b29sdGlwIl0nKSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgYm9vdHN0cmFwLlRvb2x0aXAoZSwgcikKICAgICAgICB9KSkKICAgIH0sIGUuQlMubWVudXRpcCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICBlLkJTLnRvb2x0aXAodCwgewogICAgICAgICAgICBib3VuZGFyeTogIndpbmRvdyIsCiAgICAgICAgICAgIHBsYWNlbWVudDogInJpZ2h0IgogICAgICAgIH0pCiAgICB9LCBlLkJTLnBvcG92ZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdChlKS5leGlzdHMoKSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmZuLnBvcG92ZXIgJiYgdChlKS5wb3BvdmVyKCkKICAgIH0sIGUuQlMucHJvZ3Jlc3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdChlKS5leGlzdHMoKSAmJiB0KGUpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0KHRoaXMpLmNzcygid2lkdGgiLCB0KHRoaXMpLmRhdGEoInByb2dyZXNzIikgKyAiJSIpCiAgICAgICAgfSkpCiAgICB9LCBlLkJTLm1vZGFsZml4ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHQoZSA9IGUgfHwgIi5tb2RhbCIpLmV4aXN0cygpICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuZm4ubW9kYWwgJiYgdChlKS5vbigic2hvd24uYnMubW9kYWwiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGkuaGFzQ2xhc3MoIm1vZGFsLW9wZW4iKSB8fCBpLmFkZENsYXNzKCJtb2RhbC1vcGVuIikKICAgICAgICB9KSkKICAgIH0sIGUuQlMuZmlsZWlucHV0ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHQoZSkuZXhpc3RzKCkgJiYgdChlKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0KHRoaXMpLm5leHQoKS50ZXh0KCksCiAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgIHQodGhpcykub24oImNoYW5nZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWxlcy5sZW5ndGg7IGkrKykgbltpXSA9IHRoaXMuZmlsZXNbaV0ubmFtZTsKICAgICAgICAgICAgICAgIGUgPSBuID8gbi5qb2luKCIsICIpIDogZSwgdCh0aGlzKS5uZXh0KCkuaHRtbChlKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGUuUGlja2VyLmRhdGUgPSBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgdChuKS5leGlzdHMoKSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmZuLmRhdGVwaWNrZXIgJiYgdChuKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIG4gPSB7CiAgICAgICAgICAgICAgICBmb3JtYXQ6ICIiICE9PSAobiA9IHQodGhpcykuZGF0YSgiZGF0ZS1mb3JtYXQiKSkgPyBuIDogIm1tL2RkL3l5eXkiLAogICAgICAgICAgICAgICAgbWF4Vmlld01vZGU6IDIsCiAgICAgICAgICAgICAgICBjbGVhckJ0bjogITAsCiAgICAgICAgICAgICAgICBhdXRvY2xvc2U6ICEwLAogICAgICAgICAgICAgICAgdG9kYXlIaWdobGlnaHQ6ICEwLAogICAgICAgICAgICAgICAgcnRsOiBlLlN0YXRlLmlzUlRMCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIG4gPSBpID8gbyhuLCBpKSA6IG47CiAgICAgICAgICAgIHQodGhpcykuZGF0ZXBpY2tlcihuKS5vbigiY2hhbmdlRGF0ZSIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAwICE9PSBlLmRhdGVzLmxlbmd0aCA/IHQodGhpcykucGFyZW50KCkuYWRkQ2xhc3MoImZvY3VzZWQiKSA6IHQodGhpcykucGFyZW50KCkucmVtb3ZlQ2xhc3MoImZvY3VzZWQiKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIGUuUGlja2VyLmRvYiA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICB2YXIgaSA9IHsKICAgICAgICAgICAgc3RhcnRWaWV3OiAyLAogICAgICAgICAgICB0b2RheUhpZ2hsaWdodDogITEKICAgICAgICB9OwogICAgICAgIG4gPSBuID8gbyhpLCBuKSA6IGk7CiAgICAgICAgZS5QaWNrZXIuZGF0ZSh0LCBuKQogICAgfSwgZS5QaWNrZXIudGltZSA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICB0KGUpLmV4aXN0cygpICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuZm4udGltZXBpY2tlciAmJiB0KGUpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0KHRoaXMpLnBhcmVudCgpLmFkZENsYXNzKCJoYXMtdGltZXBpY2tlciIpOwogICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0OiAiIiAhPT0gKGUgPSB0KHRoaXMpLmRhdGEoInRpbWUtZm9ybWF0IikpID8gZSA6ICJISDptbSIsCiAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWw6ICIiICE9PSAoaSA9IHQodGhpcykuZGF0YSgidGltZS1pbnRlcnZhbCIpKSA/IGkgOiAxNSwKICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgITEgIT09IGUgPyB0KHRoaXMpLnBhcmVudCgpLmFkZENsYXNzKCJmb2N1c2VkIikgOiB0KHRoaXMpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJmb2N1c2VkIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaSA9IG4gPyBvKGUsIG4pIDogZTsKICAgICAgICAgICAgdCh0aGlzKS50aW1lcGlja2VyKGkpCiAgICAgICAgfSkpCiAgICB9LCBlLlNlbGVjdDIgPSBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgdChuKS5leGlzdHMoKSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiB0LmZuLnNlbGVjdDIgJiYgdChuKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIG4gPSAoKHIgPSB7CiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IChuID0gdCh0aGlzKSkuZGF0YSgicGxhY2Vob2xkZXIiKSwKICAgICAgICAgICAgICAgICAgICBjbGVhcjogbi5kYXRhKCJjbGVhciIpLAogICAgICAgICAgICAgICAgICAgIHNlYXJjaDogbi5kYXRhKCJzZWFyY2giKSwKICAgICAgICAgICAgICAgICAgICB3aWR0aDogbi5kYXRhKCJ3aWR0aCIpLAogICAgICAgICAgICAgICAgICAgIHRoZW1lOiBuLmRhdGEoInRoZW1lIiksCiAgICAgICAgICAgICAgICAgICAgdWk6IG4uZGF0YSgidWkiKQogICAgICAgICAgICAgICAgfSkudWkgPSByLnVpID8gIiAiICsgbi5jc3NrZXkoci51aSwgInNlbGVjdDIiKSA6ICIiLCB7CiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHIudGhlbWUgPyByLnRoZW1lICsgIiAiICsgci51aSA6ICJkZWZhdWx0IiArIHIudWksCiAgICAgICAgICAgICAgICAgICAgYWxsb3dDbGVhcjogci5jbGVhciB8fCAhMSwKICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogci5wbGFjZWhvbGRlciB8fCAiIiwKICAgICAgICAgICAgICAgICAgICBkcm9wZG93bkF1dG9XaWR0aDogISghci53aWR0aCB8fCAiYXV0byIgIT09IHIud2lkdGgpLAogICAgICAgICAgICAgICAgICAgIG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOiByLnNlYXJjaCAmJiAib24iID09PSByLnNlYXJjaCA/IDEgOiAtMSwKICAgICAgICAgICAgICAgICAgICBkaXI6IGUuU3RhdGUuaXNSVEwgPyAicnRsIiA6ICJsdHIiCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHIgPSBpID8gbyhuLCBpKSA6IG47CiAgICAgICAgICAgIHQodGhpcykuc2VsZWN0MihyKQogICAgICAgIH0pKQogICAgfSwgZS5DdXN0b20uU3RlcHBlciA9IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICB2YXIgaSA9ICEoIWUuZGF0YXNldC5zdGVwSW5pdCB8fCBpc05hTihlLmRhdGFzZXQuc3RlcEluaXQpKSAmJiBwYXJzZUludChlLmRhdGFzZXQuc3RlcEluaXQpOwogICAgICAgIGkgPSB7CiAgICAgICAgICAgIHNlbGVjdG9yczogewogICAgICAgICAgICAgICAgbmF2OiBuLnNlbGVjdG9ycy5uYXYgfHwgInN0ZXBwZXItbmF2IiwKICAgICAgICAgICAgICAgIHByb2dyZXNzOiBuLnNlbGVjdG9ycy5wcm9ncmVzcyB8fCAic3RlcHBlci1wcm9ncmVzcyIsCiAgICAgICAgICAgICAgICBjb250ZW50OiBuLnNlbGVjdG9ycy5jb250ZW50IHx8ICJzdGVwcGVyLXN0ZXBzIiwKICAgICAgICAgICAgICAgIHByZXY6IG4uc2VsZWN0b3JzLnByZXYgfHwgInN0ZXAtcHJldiIsCiAgICAgICAgICAgICAgICBuZXh0OiBuLnNlbGVjdG9ycy5uZXh0IHx8ICJzdGVwLW5leHQiLAogICAgICAgICAgICAgICAgc3VibWl0OiBuLnNlbGVjdG9ycy5zdWJtaXQgfHwgInN0ZXAtc3VibWl0IgogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgICAgICBuYXZfY3VycmVudDogbi5jbGFzc2VzLm5hdl9jdXJyZW50IHx8ICJjdXJyZW50IiwKICAgICAgICAgICAgICAgIG5hdl9kb25lOiBuLmNsYXNzZXMubmF2X2RvbmUgfHwgImRvbmUiLAogICAgICAgICAgICAgICAgc3RlcF9hY3RpdmU6IG4uY2xhc3Nlcy5zdGVwX2FjdGl2ZSB8fCAiYWN0aXZlIiwKICAgICAgICAgICAgICAgIHN0ZXBfZG9uZTogbi5jbGFzc2VzLnN0ZXBfZG9uZSB8fCAiZG9uZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3VycmVudF9zdGVwOiBpIHx8IHBhcnNlSW50KG4uY3VycmVudF9zdGVwKQogICAgICAgIH07CiAgICAgICAgbGV0IHIgPSBlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke2kuc2VsZWN0b3JzLm5hdn0gPiAqYCksCiAgICAgICAgICAgIG8gPSBlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke2kuc2VsZWN0b3JzLmNvbnRlbnR9ID4gKmApLAogICAgICAgICAgICBhID0gKGUucXVlcnlTZWxlY3RvcigiLiIgKyBpLnNlbGVjdG9ycy5wcm9ncmVzcyksIGUucXVlcnlTZWxlY3RvcihgLiR7aS5zZWxlY3RvcnMucHJvZ3Jlc3N9LWNvdW50YCkpLAogICAgICAgICAgICBzID0gZS5xdWVyeVNlbGVjdG9yKGAuJHtpLnNlbGVjdG9ycy5wcm9ncmVzc30tYmFyYCksCiAgICAgICAgICAgIGwgPSBlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgaS5zZWxlY3RvcnMucHJldiksCiAgICAgICAgICAgIGMgPSBlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgaS5zZWxlY3RvcnMubmV4dCksCiAgICAgICAgICAgIHUgPSBlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgaS5zZWxlY3RvcnMuc3VibWl0KSwKICAgICAgICAgICAgZCA9IGkuY2xhc3Nlcy5uYXZfY3VycmVudCwKICAgICAgICAgICAgaCA9IGkuY2xhc3Nlcy5uYXZfZG9uZSwKICAgICAgICAgICAgZiA9IGkuY2xhc3Nlcy5zdGVwX2FjdGl2ZSwKICAgICAgICAgICAgcCA9IGkuY2xhc3Nlcy5zdGVwX2RvbmUsCiAgICAgICAgICAgIGcgPSBpLmN1cnJlbnRfc3RlcCB8fCAxLAogICAgICAgICAgICBtID0gZywKICAgICAgICAgICAgdiA9IHIubGVuZ3RoLAogICAgICAgICAgICB5ID0gby5sZW5ndGgsCiAgICAgICAgICAgIGIgPSAwIDwgZS5xdWVyeVNlbGVjdG9yQWxsKCIuIiArIGkuc2VsZWN0b3JzLm5hdikubGVuZ3RoLAogICAgICAgICAgICB3ID0gMCA8IGUucXVlcnlTZWxlY3RvckFsbCgiLiIgKyBpLnNlbGVjdG9ycy5wcm9ncmVzcykubGVuZ3RoOwoKICAgICAgICBmdW5jdGlvbiB4KHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0IC0gMTsKICAgICAgICAgICAgMSA9PT0gKG4gPSAoZS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIiwgYiAmJiAoci5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5yZW1vdmUoZCkKICAgICAgICAgICAgfSkpLCByW25dLmNsYXNzTGlzdC5hZGQoZCkpLCBvLmZvckVhY2goKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZShmKQogICAgICAgICAgICB9KSksIG9bbl0uY2xhc3NMaXN0LmFkZChmKSwgdCkpICYmIChjLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siLCBsLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIsIHUuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgZS5zZXRBdHRyaWJ1dGUoImRhdGEtc3RlcC1jdXJyZW50IiwgImZpcnN0IikpLCB5ICE9PSBuICYgMSAhPT0gbiAmJiAobC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIiwgYy5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIiwgdS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiLCBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zdGVwLWN1cnJlbnQiLCBuKSksIHkgPT09IG4gJiYgKGwuc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIHUuc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIGMuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgZS5zZXRBdHRyaWJ1dGUoImRhdGEtc3RlcC1jdXJyZW50IiwgImxhc3QiKSksIHcgJiYgKGEuaW5uZXJIVE1MID0gdCArICIgb2YgIiArIHksIHMuc3R5bGUud2lkdGggPSAxMDAgLyB5ICogdCArICIlIikKICAgICAgICB9CiAgICAgICAgdiAhPT0geSAmJiBiID8gY29uc29sZS5lcnJvcigiU3RlcHBlciBuYXYgc2hvdWxkIGhhdmUgc2FtZSBhbW91bnQgb2YgY2hpbGQgZWxlbWVudCBhcyBTdGVwcGVyIHN0ZXBzIikgOiB4KGcpOwogICAgICAgIGxldCBfID0gdCgiIyIgKyBlLmlkKS52YWxpZGF0ZSh7CiAgICAgICAgICAgIGVycm9yRWxlbWVudDogInNwYW4iLAogICAgICAgICAgICBlcnJvckNsYXNzOiAiaW52YWxpZCIsCiAgICAgICAgICAgIG9uZm9jdXNvdXQ6ICExLAogICAgICAgICAgICBlcnJvclBsYWNlbWVudDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdC5wYXJlbnRzKCkuaGFzQ2xhc3MoImlucHV0LWdyb3VwIikgPyBlLmFwcGVuZFRvKHQucGFyZW50KCkucGFyZW50KCkpIDogZS5hcHBlbmRUbyh0LnBhcmVudCgpKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgbC5xdWVyeVNlbGVjdG9yKCJidXR0b24iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZSA9IF8uZm9ybSgpOwogICAgICAgICAgICB2YXIgdCA9IG0gLSAxOwogICAgICAgICAgICBlID8geSAhPT0gbSAmJiAoYiAmJiByW3RdLmNsYXNzTGlzdC5hZGQoaCksIG9bdF0uY2xhc3NMaXN0LmFkZChwKSkgOiAoYiAmJiByW3RdLmNsYXNzTGlzdC5yZW1vdmUoaCksIG9bdF0uY2xhc3NMaXN0LnJlbW92ZShwKSksIHgoLS1tKQogICAgICAgIH0pKSwgYy5xdWVyeVNlbGVjdG9yKCJidXR0b24iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgXy5mb3JtKCkgJiYgKGUgPSBtIC0gMSwgYiAmJiByW2VdLmNsYXNzTGlzdC5hZGQoaCksIG9bZV0uY2xhc3NMaXN0LmFkZChwKSwgeCgrK20pKQogICAgICAgIH0pKSwgdS5xdWVyeVNlbGVjdG9yKCJidXR0b24iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgXy5mb3JtKCkKICAgICAgICB9KSkKICAgIH0sIGUuY29yZUluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBlLmNvbXMub25SZXNpemUucHVzaChlLlN0YXRlVXBkYXRlKSwgZS5jb21zLmRvY1JlYWR5LnB1c2goZS5DbGFzc0luaXQpCiAgICB9LCBlLmNvcmVJbml0KCksIGUKfShOaW9BcHAgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgaSA9IHsKICAgICAgICAgICAgQXBwSW5mbzogewogICAgICAgICAgICAgICAgbmFtZTogIk5pb0FwcCIsCiAgICAgICAgICAgICAgICB2ZXJzaW9uOiAiMS4wLjgiLAogICAgICAgICAgICAgICAgYXV0aG9yOiAiU29mdG5pbyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUGFja2FnZTogewogICAgICAgICAgICAgICAgbmFtZTogIkRhc2hMaXRlIiwKICAgICAgICAgICAgICAgIHZlcnNpb246ICIyLjMiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIGRvY1JlYWR5OiBbXSwKICAgICAgICAgICAgZG9jUmVhZHlEZWZlcjogW10sCiAgICAgICAgICAgIHdpbkxvYWQ6IFtdLAogICAgICAgICAgICB3aW5Mb2FkRGVmZXI6IFtdLAogICAgICAgICAgICBvblJlc2l6ZTogW10sCiAgICAgICAgICAgIG9uUmVzaXplRGVmZXI6IFtdCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICB0ID0gdm9pZCAwID09PSB0ID8gZSA6IHQsIHIuZG9jUmVhZHkuY29uY2F0KHIuZG9jUmVhZHlEZWZlcikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBudWxsICE9IGUgJiYgZSh0KQogICAgICAgIH0pKQogICAgfQoKICAgIGZ1bmN0aW9uIGEodCkgewogICAgICAgIHQgPSAib2JqZWN0IiA9PSB0eXBlb2YgdCA/IGUgOiB0LCByLndpbkxvYWQuY29uY2F0KHIud2luTG9hZERlZmVyKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIG51bGwgIT0gZSAmJiBlKHQpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24gcyh0KSB7CiAgICAgICAgdCA9ICJvYmplY3QiID09IHR5cGVvZiB0ID8gZSA6IHQsIHIub25SZXNpemUuY29uY2F0KHIub25SZXNpemVEZWZlcikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBudWxsICE9IGUgJiYgZSh0KQogICAgICAgIH0pKQogICAgfQogICAgcmV0dXJuIGUobikucmVhZHkobyksIGUodCkub24oImxvYWQiLCBhKSwgZSh0KS5vbigicmVzaXplIiwgcyksIGkuY29tcyA9IHIsIGkuZG9jUmVhZHkgPSBvLCBpLndpbkxvYWQgPSBhLCBpLm9uUmVzaXplID0gcywgaQp9KGpRdWVyeSwgd2luZG93LCBkb2N1bWVudCksIGpRdWVyeSk7CiEgZnVuY3Rpb24oZSwgdCkgewogICAgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IG1vZHVsZS5leHBvcnRzID0gdCgpIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUodCkgOiAoZSA9IGUgfHwgc2VsZikuU2ltcGxlQmFyID0gdCgpCn0odGhpcywgKGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwogICAgdmFyIGUgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZ2xvYmFsVGhpcyA/IGdsb2JhbFRoaXMgOiAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIGdsb2JhbCA/IGdsb2JhbCA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBzZWxmID8gc2VsZiA6IHt9OwoKICAgIGZ1bmN0aW9uIHQoZSwgdCkgewogICAgICAgIHJldHVybiBlKHQgPSB7CiAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgfSwgdC5leHBvcnRzKSwgdC5leHBvcnRzCiAgICB9CiAgICB2YXIgbiwgaSwgciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS5NYXRoID09IE1hdGggJiYgZQogICAgICAgIH0sCiAgICAgICAgbyA9IHIoIm9iamVjdCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHwgcigib2JqZWN0IiA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdykgfHwgcigib2JqZWN0IiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmKSB8fCByKCJvYmplY3QiID09IHR5cGVvZiBlICYmIGUpIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0oKSB8fCBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLAogICAgICAgIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksCiAgICAgICAgcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGEobywgZSwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9IGNhdGNoIChuKSB7CiAgICAgICAgICAgICAgICBvW2VdID0gdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfSwKICAgICAgICBsID0gb1siX19jb3JlLWpzX3NoYXJlZF9fIl0gfHwgcygiX19jb3JlLWpzX3NoYXJlZF9fIiwge30pLAogICAgICAgIGMgPSB0KChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIChlLmV4cG9ydHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbFtlXSB8fCAobFtlXSA9IHZvaWQgMCAhPT0gdCA/IHQgOiB7fSkKICAgICAgICAgICAgfSkoInZlcnNpb25zIiwgW10pLnB1c2goewogICAgICAgICAgICAgICAgdmVyc2lvbjogIjMuMjIuNiIsCiAgICAgICAgICAgICAgICBtb2RlOiAiZ2xvYmFsIiwKICAgICAgICAgICAgICAgIGNvcHlyaWdodDogIsKpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsCiAgICAgICAgICAgICAgICBsaWNlbnNlOiAiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMi42L0xJQ0VOU0UiLAogICAgICAgICAgICAgICAgc291cmNlOiAiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMiCiAgICAgICAgICAgIH0pCiAgICAgICAgfSkpLAogICAgICAgIHUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFlKCkKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGQgPSAhdSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24oKSB7fS5iaW5kKCk7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iICE9IHR5cGVvZiBlIHx8IGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpCiAgICAgICAgfSkpLAogICAgICAgIGggPSBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgZiA9IGguYmluZCwKICAgICAgICBwID0gaC5jYWxsLAogICAgICAgIGcgPSBkICYmIGYuYmluZChwLCBwKSwKICAgICAgICBtID0gZCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgZyhlKQogICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlICYmIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHAuYXBwbHkoZSwgYXJndW1lbnRzKQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB2ID0gby5UeXBlRXJyb3IsCiAgICAgICAgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT0gZSkgdGhyb3cgdigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIiArIGUpOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgYiA9IG8uT2JqZWN0LAogICAgICAgIHcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBiKHkoZSkpCiAgICAgICAgfSwKICAgICAgICB4ID0gbSh7fS5oYXNPd25Qcm9wZXJ0eSksCiAgICAgICAgXyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4geCh3KGUpLCB0KQogICAgICAgIH0sCiAgICAgICAgUyA9IDAsCiAgICAgICAgQyA9IE1hdGgucmFuZG9tKCksCiAgICAgICAgayA9IG0oMS4udG9TdHJpbmcpLAogICAgICAgIFQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiU3ltYm9sKCIgKyAodm9pZCAwID09PSBlID8gIiIgOiBlKSArICIpXyIgKyBrKCsrUyArIEMsIDM2KQogICAgICAgIH0sCiAgICAgICAgQSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUKICAgICAgICB9LAogICAgICAgIEUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBBKGUpID8gZSA6IHZvaWQgMAogICAgICAgIH0sCiAgICAgICAgRCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gRShvW2VdKSA6IG9bZV0gJiYgb1tlXVt0XQogICAgICAgIH0sCiAgICAgICAgTyA9IEQoIm5hdmlnYXRvciIsICJ1c2VyQWdlbnQiKSB8fCAiIiwKICAgICAgICBNID0gby5wcm9jZXNzLAogICAgICAgIEkgPSBvLkRlbm8sCiAgICAgICAgTCA9IE0gJiYgTS52ZXJzaW9ucyB8fCBJICYmIEkudmVyc2lvbiwKICAgICAgICBQID0gTCAmJiBMLnY4OwogICAgUCAmJiAoaSA9IChuID0gUC5zcGxpdCgiLiIpKVswXSA+IDAgJiYgblswXSA8IDQgPyAxIDogKyhuWzBdICsgblsxXSkpLCAhaSAmJiBPICYmICghKG4gPSBPLm1hdGNoKC9FZGdlXC8oXGQrKS8pKSB8fCBuWzFdID49IDc0KSAmJiAobiA9IE8ubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkgJiYgKGkgPSArblsxXSk7CiAgICB2YXIgaiA9IGksCiAgICAgICAgTiA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhdSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gU3ltYm9sKCk7CiAgICAgICAgICAgIHJldHVybiAhU3RyaW5nKGUpIHx8ICEoT2JqZWN0KGUpIGluc3RhbmNlb2YgU3ltYm9sKSB8fCAhU3ltYm9sLnNoYW0gJiYgaiAmJiBqIDwgNDEKICAgICAgICB9KSksCiAgICAgICAgRiA9IE4gJiYgIVN5bWJvbC5zaGFtICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IsCiAgICAgICAgUiA9IGMoIndrcyIpLAogICAgICAgICQgPSBvLlN5bWJvbCwKICAgICAgICB6ID0gJCAmJiAkLmZvciwKICAgICAgICBIID0gRiA/ICQgOiAkICYmICQud2l0aG91dFNldHRlciB8fCBULAogICAgICAgIEIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICghXyhSLCBlKSB8fCAhTiAmJiAic3RyaW5nIiAhPSB0eXBlb2YgUltlXSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAiU3ltYm9sLiIgKyBlOwogICAgICAgICAgICAgICAgTiAmJiBfKCQsIGUpID8gUltlXSA9ICRbZV0gOiBSW2VdID0gRiAmJiB6ID8geih0KSA6IEgodCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gUltlXQogICAgICAgIH0sCiAgICAgICAgVyA9IHt9OwogICAgV1tCKCJ0b1N0cmluZ1RhZyIpXSA9ICJ6IjsKICAgIHZhciBxID0gIltvYmplY3Qgel0iID09PSBTdHJpbmcoVyksCiAgICAgICAgVSA9ICF1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDcgIT0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiA3CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pWzFdCiAgICAgICAgfSkpLAogICAgICAgIFYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgZSA/IG51bGwgIT09IGUgOiBBKGUpCiAgICAgICAgfSwKICAgICAgICBZID0gby5kb2N1bWVudCwKICAgICAgICBYID0gVihZKSAmJiBWKFkuY3JlYXRlRWxlbWVudCksCiAgICAgICAgRyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIFggPyBZLmNyZWF0ZUVsZW1lbnQoZSkgOiB7fQogICAgICAgIH0sCiAgICAgICAgSyA9ICFVICYmICF1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDcgIT0gT2JqZWN0LmRlZmluZVByb3BlcnR5KEcoImRpdiIpLCAiYSIsIHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuYQogICAgICAgIH0pKSwKICAgICAgICBRID0gVSAmJiB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDQyICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKSB7fSksICJwcm90b3R5cGUiLCB7CiAgICAgICAgICAgICAgICB2YWx1ZTogNDIsCiAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgfSkucHJvdG90eXBlCiAgICAgICAgfSkpLAogICAgICAgIFogPSBvLlN0cmluZywKICAgICAgICBKID0gby5UeXBlRXJyb3IsCiAgICAgICAgZWUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChWKGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgdGhyb3cgSihaKGUpICsgIiBpcyBub3QgYW4gb2JqZWN0IikKICAgICAgICB9LAogICAgICAgIHRlID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsCiAgICAgICAgbmUgPSBkID8gdGUuYmluZCh0ZSkgOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRlLmFwcGx5KHRlLCBhcmd1bWVudHMpCiAgICAgICAgfSwKICAgICAgICBpZSA9IG0oe30uaXNQcm90b3R5cGVPZiksCiAgICAgICAgcmUgPSBvLk9iamVjdCwKICAgICAgICBvZSA9IEYgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAic3ltYm9sIiA9PSB0eXBlb2YgZQogICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gRCgiU3ltYm9sIik7CiAgICAgICAgICAgIHJldHVybiBBKHQpICYmIGllKHQucHJvdG90eXBlLCByZShlKSkKICAgICAgICB9LAogICAgICAgIGFlID0gby5TdHJpbmcsCiAgICAgICAgc2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYWUoZSkKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJPYmplY3QiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGxlID0gby5UeXBlRXJyb3IsCiAgICAgICAgY2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChBKGUpKSByZXR1cm4gZTsKICAgICAgICAgICAgdGhyb3cgbGUoc2UoZSkgKyAiIGlzIG5vdCBhIGZ1bmN0aW9uIikKICAgICAgICB9LAogICAgICAgIHVlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGVbdF07CiAgICAgICAgICAgIHJldHVybiBudWxsID09IG4gPyB2b2lkIDAgOiBjZShuKQogICAgICAgIH0sCiAgICAgICAgZGUgPSBvLlR5cGVFcnJvciwKICAgICAgICBoZSA9IG8uVHlwZUVycm9yLAogICAgICAgIGZlID0gQigidG9QcmltaXRpdmUiKSwKICAgICAgICBwZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoIVYoZSkgfHwgb2UoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgdmFyIG4sIGkgPSB1ZShlLCBmZSk7CiAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQgJiYgKHQgPSAiZGVmYXVsdCIpLCBuID0gbmUoaSwgZSwgdCksICFWKG4pIHx8IG9lKG4pKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBoZSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSAibnVtYmVyIiksCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09PSB0ICYmIEEobiA9IGUudG9TdHJpbmcpICYmICFWKGkgPSBuZShuLCBlKSkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQShuID0gZS52YWx1ZU9mKSAmJiAhVihpID0gbmUobiwgZSkpKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9PSB0ICYmIEEobiA9IGUudG9TdHJpbmcpICYmICFWKGkgPSBuZShuLCBlKSkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBkZSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIikKICAgICAgICAgICAgICAgICAgICB9KGUsIHQpCiAgICAgICAgICAgIH0oZSwgInN0cmluZyIpOwogICAgICAgICAgICByZXR1cm4gb2UodCkgPyB0IDogdCArICIiCiAgICAgICAgfSwKICAgICAgICBnZSA9IG8uVHlwZUVycm9yLAogICAgICAgIG1lID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgIHZlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwKICAgICAgICB5ZSA9IHsKICAgICAgICAgICAgZjogVSA/IFEgPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBpZiAoZWUoZSksIHQgPSBwZSh0KSwgZWUobiksICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgInByb3RvdHlwZSIgPT09IHQgJiYgInZhbHVlIiBpbiBuICYmICJ3cml0YWJsZSIgaW4gbiAmJiAhbi53cml0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdmUoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgaSAmJiBpLndyaXRhYmxlICYmIChlW3RdID0gbi52YWx1ZSwgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAiY29uZmlndXJhYmxlIiBpbiBuID8gbi5jb25maWd1cmFibGUgOiBpLmNvbmZpZ3VyYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogImVudW1lcmFibGUiIGluIG4gPyBuLmVudW1lcmFibGUgOiBpLmVudW1lcmFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbWUoZSwgdCwgbikKICAgICAgICAgICAgfSA6IG1lIDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgaWYgKGVlKGUpLCB0ID0gcGUodCksIGVlKG4pLCBLKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtZShlLCB0LCBuKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIGlmICgiZ2V0IiBpbiBuIHx8ICJzZXQiIGluIG4pIHRocm93IGdlKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZSIgaW4gbiAmJiAoZVt0XSA9IG4udmFsdWUpLCBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGJlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogISgxICYgZSksCiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEoMiAmIGUpLAogICAgICAgICAgICAgICAgd3JpdGFibGU6ICEoNCAmIGUpLAogICAgICAgICAgICAgICAgdmFsdWU6IHQKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgd2UgPSBVID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4geWUuZihlLCB0LCBiZSgxLCBuKSkKICAgICAgICB9IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICByZXR1cm4gZVt0XSA9IG4sIGUKICAgICAgICB9LAogICAgICAgIHhlID0gRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgIF9lID0gVSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLAogICAgICAgIFNlID0gXyh4ZSwgIm5hbWUiKSwKICAgICAgICBDZSA9IHsKICAgICAgICAgICAgRVhJU1RTOiBTZSwKICAgICAgICAgICAgUFJPUEVSOiBTZSAmJiAic29tZXRoaW5nIiA9PT0gZnVuY3Rpb24oKSB7fS5uYW1lLAogICAgICAgICAgICBDT05GSUdVUkFCTEU6IFNlICYmICghVSB8fCBVICYmIF9lKHhlLCAibmFtZSIpLmNvbmZpZ3VyYWJsZSkKICAgICAgICB9LAogICAgICAgIGtlID0gbShGdW5jdGlvbi50b1N0cmluZyk7CiAgICBBKGwuaW5zcGVjdFNvdXJjZSkgfHwgKGwuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4ga2UoZSkKICAgIH0pOwogICAgdmFyIFRlLCBBZSwgRWUsIERlID0gbC5pbnNwZWN0U291cmNlLAogICAgICAgIE9lID0gby5XZWFrTWFwLAogICAgICAgIE1lID0gQShPZSkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KERlKE9lKSksCiAgICAgICAgSWUgPSBjKCJrZXlzIiksCiAgICAgICAgTGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBJZVtlXSB8fCAoSWVbZV0gPSBUKGUpKQogICAgICAgIH0sCiAgICAgICAgUGUgPSB7fSwKICAgICAgICBqZSA9IG8uVHlwZUVycm9yLAogICAgICAgIE5lID0gby5XZWFrTWFwOwogICAgaWYgKE1lIHx8IGwuc3RhdGUpIHsKICAgICAgICB2YXIgRmUgPSBsLnN0YXRlIHx8IChsLnN0YXRlID0gbmV3IE5lKSwKICAgICAgICAgICAgUmUgPSBtKEZlLmdldCksCiAgICAgICAgICAgICRlID0gbShGZS5oYXMpLAogICAgICAgICAgICB6ZSA9IG0oRmUuc2V0KTsKICAgICAgICBUZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKCRlKEZlLCBlKSkgdGhyb3cgbmV3IGplKCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIpOwogICAgICAgICAgICByZXR1cm4gdC5mYWNhZGUgPSBlLCB6ZShGZSwgZSwgdCksIHQKICAgICAgICB9LCBBZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIFJlKEZlLCBlKSB8fCB7fQogICAgICAgIH0sIEVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gJGUoRmUsIGUpCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICB2YXIgSGUgPSBMZSgic3RhdGUiKTsKICAgICAgICBQZVtIZV0gPSAhMCwgVGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmIChfKGUsIEhlKSkgdGhyb3cgbmV3IGplKCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIpOwogICAgICAgICAgICByZXR1cm4gdC5mYWNhZGUgPSBlLCB3ZShlLCBIZSwgdCksIHQKICAgICAgICB9LCBBZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIF8oZSwgSGUpID8gZVtIZV0gOiB7fQogICAgICAgIH0sIEVlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gXyhlLCBIZSkKICAgICAgICB9CiAgICB9CiAgICB2YXIgQmUgPSB7CiAgICAgICAgICAgIHNldDogVGUsCiAgICAgICAgICAgIGdldDogQWUsCiAgICAgICAgICAgIGhhczogRWUsCiAgICAgICAgICAgIGVuZm9yY2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBFZShlKSA/IEFlKGUpIDogVGUoZSwge30pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldHRlckZvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgICAgICBpZiAoIVYodCkgfHwgKG4gPSBBZSh0KSkudHlwZSAhPT0gZSkgdGhyb3cgamUoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIiArIGUgKyAiIHJlcXVpcmVkIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgV2UgPSB0KChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gQ2UuQ09ORklHVVJBQkxFLAogICAgICAgICAgICAgICAgbiA9IEJlLmVuZm9yY2UsCiAgICAgICAgICAgICAgICBpID0gQmUuZ2V0LAogICAgICAgICAgICAgICAgciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwKICAgICAgICAgICAgICAgIG8gPSBVICYmICF1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gOCAhPT0gcigoZnVuY3Rpb24oKSB7fSksICJsZW5ndGgiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiA4CiAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoCiAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICBhID0gU3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLAogICAgICAgICAgICAgICAgcyA9IGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIGksIHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIlN5bWJvbCgiID09PSBTdHJpbmcoaSkuc2xpY2UoMCwgNykgJiYgKGkgPSAiWyIgKyBTdHJpbmcoaSkucmVwbGFjZSgvXlN5bWJvbFwoKFteKV0qKVwpLywgIiQxIikgKyAiXSIpLCBzICYmIHMuZ2V0dGVyICYmIChpID0gImdldCAiICsgaSksIHMgJiYgcy5zZXR0ZXIgJiYgKGkgPSAic2V0ICIgKyBpKSwgKCFfKGUsICJuYW1lIikgfHwgdCAmJiBlLm5hbWUgIT09IGkpICYmIHIoZSwgIm5hbWUiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8gJiYgcyAmJiBfKHMsICJhcml0eSIpICYmIGUubGVuZ3RoICE9PSBzLmFyaXR5ICYmIHIoZSwgImxlbmd0aCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLmFyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBzICYmIF8ocywgImNvbnN0cnVjdG9yIikgJiYgcy5jb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVSkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIoZSwgInByb3RvdHlwZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGUucHJvdG90eXBlID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gbihlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gXyhsLCAic291cmNlIikgfHwgKGwuc291cmNlID0gYS5qb2luKCJzdHJpbmciID09IHR5cGVvZiBpID8gaSA6ICIiKSksIGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IHMoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEEodGhpcykgJiYgaSh0aGlzKS5zb3VyY2UgfHwgRGUodGhpcykKICAgICAgICAgICAgfSksICJ0b1N0cmluZyIpCiAgICAgICAgfSkpLAogICAgICAgIHFlID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICBpIHx8IChpID0ge30pOwogICAgICAgICAgICB2YXIgciA9IGkuZW51bWVyYWJsZSwKICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgIT09IGkubmFtZSA/IGkubmFtZSA6IHQ7CiAgICAgICAgICAgIHJldHVybiBBKG4pICYmIFdlKG4sIG8sIGkpLCBpLmdsb2JhbCA/IHIgPyBlW3RdID0gbiA6IHModCwgbikgOiAoaS51bnNhZmUgPyBlW3RdICYmIChyID0gITApIDogZGVsZXRlIGVbdF0sIHIgPyBlW3RdID0gbiA6IHdlKGUsIHQsIG4pKSwgZQogICAgICAgIH0sCiAgICAgICAgVWUgPSBtKHt9LnRvU3RyaW5nKSwKICAgICAgICBWZSA9IG0oIiIuc2xpY2UpLAogICAgICAgIFllID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gVmUoVWUoZSksIDgsIC0xKQogICAgICAgIH0sCiAgICAgICAgWGUgPSBCKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgIEdlID0gby5PYmplY3QsCiAgICAgICAgS2UgPSAiQXJndW1lbnRzIiA9PSBZZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cwogICAgICAgIH0oKSksCiAgICAgICAgUWUgPSBxID8gWWUgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpOwogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gIlVuZGVmaW5lZCIgOiBudWxsID09PSBlID8gIk51bGwiIDogInN0cmluZyIgPT0gdHlwZW9mKG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlW3RdCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB9KHQgPSBHZShlKSwgWGUpKSA/IG4gOiBLZSA/IFllKHQpIDogIk9iamVjdCIgPT0gKGkgPSBZZSh0KSkgJiYgQSh0LmNhbGxlZSkgPyAiQXJndW1lbnRzIiA6IGkKICAgICAgICB9LAogICAgICAgIFplID0gcSA/IHt9LnRvU3RyaW5nIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAiW29iamVjdCAiICsgUWUodGhpcykgKyAiXSIKICAgICAgICB9OwogICAgcSB8fCBxZShPYmplY3QucHJvdG90eXBlLCAidG9TdHJpbmciLCBaZSwgewogICAgICAgIHVuc2FmZTogITAKICAgIH0pOwogICAgdmFyIEplID0gewogICAgICAgICAgICBDU1NSdWxlTGlzdDogMCwKICAgICAgICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCwKICAgICAgICAgICAgQ1NTVmFsdWVMaXN0OiAwLAogICAgICAgICAgICBDbGllbnRSZWN0TGlzdDogMCwKICAgICAgICAgICAgRE9NUmVjdExpc3Q6IDAsCiAgICAgICAgICAgIERPTVN0cmluZ0xpc3Q6IDAsCiAgICAgICAgICAgIERPTVRva2VuTGlzdDogMSwKICAgICAgICAgICAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsCiAgICAgICAgICAgIEZpbGVMaXN0OiAwLAogICAgICAgICAgICBIVE1MQWxsQ29sbGVjdGlvbjogMCwKICAgICAgICAgICAgSFRNTENvbGxlY3Rpb246IDAsCiAgICAgICAgICAgIEhUTUxGb3JtRWxlbWVudDogMCwKICAgICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsCiAgICAgICAgICAgIE1lZGlhTGlzdDogMCwKICAgICAgICAgICAgTWltZVR5cGVBcnJheTogMCwKICAgICAgICAgICAgTmFtZWROb2RlTWFwOiAwLAogICAgICAgICAgICBOb2RlTGlzdDogMSwKICAgICAgICAgICAgUGFpbnRSZXF1ZXN0TGlzdDogMCwKICAgICAgICAgICAgUGx1Z2luOiAwLAogICAgICAgICAgICBQbHVnaW5BcnJheTogMCwKICAgICAgICAgICAgU1ZHTGVuZ3RoTGlzdDogMCwKICAgICAgICAgICAgU1ZHTnVtYmVyTGlzdDogMCwKICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3Q6IDAsCiAgICAgICAgICAgIFNWR1BvaW50TGlzdDogMCwKICAgICAgICAgICAgU1ZHU3RyaW5nTGlzdDogMCwKICAgICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdDogMCwKICAgICAgICAgICAgU291cmNlQnVmZmVyTGlzdDogMCwKICAgICAgICAgICAgU3R5bGVTaGVldExpc3Q6IDAsCiAgICAgICAgICAgIFRleHRUcmFja0N1ZUxpc3Q6IDAsCiAgICAgICAgICAgIFRleHRUcmFja0xpc3Q6IDAsCiAgICAgICAgICAgIFRvdWNoTGlzdDogMAogICAgICAgIH0sCiAgICAgICAgZXQgPSBHKCJzcGFuIikuY2xhc3NMaXN0LAogICAgICAgIHR0ID0gZXQgJiYgZXQuY29uc3RydWN0b3IgJiYgZXQuY29uc3RydWN0b3IucHJvdG90eXBlLAogICAgICAgIG50ID0gdHQgPT09IE9iamVjdC5wcm90b3R5cGUgPyB2b2lkIDAgOiB0dCwKICAgICAgICBpdCA9IG0obS5iaW5kKSwKICAgICAgICBydCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGNlKGUpLCB2b2lkIDAgPT09IHQgPyBlIDogZCA/IGl0KGUsIHQpIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0LCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG90ID0gby5PYmplY3QsCiAgICAgICAgYXQgPSBtKCIiLnNwbGl0KSwKICAgICAgICBzdCA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gIW90KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCkKICAgICAgICB9KSkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiU3RyaW5nIiA9PSBZZShlKSA/IGF0KGUsICIiKSA6IG90KGUpCiAgICAgICAgfSA6IG90LAogICAgICAgIGx0ID0gTWF0aC5jZWlsLAogICAgICAgIGN0ID0gTWF0aC5mbG9vciwKICAgICAgICB1dCA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9ICtlOwogICAgICAgICAgICByZXR1cm4gKHQgPiAwID8gY3QgOiBsdCkodCkKICAgICAgICB9LAogICAgICAgIGR0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9ICtlOwogICAgICAgICAgICByZXR1cm4gdCAhPSB0IHx8IDAgPT09IHQgPyAwIDogdXQodCkKICAgICAgICB9LAogICAgICAgIGh0ID0gTWF0aC5taW4sCiAgICAgICAgZnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlID4gMCA/IGh0KGR0KGUpLCA5MDA3MTk5MjU0NzQwOTkxKSA6IDAKICAgICAgICB9LAogICAgICAgIHB0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnQoZS5sZW5ndGgpCiAgICAgICAgfSwKICAgICAgICBndCA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gIkFycmF5IiA9PSBZZShlKQogICAgICAgIH0sCiAgICAgICAgbXQgPSBmdW5jdGlvbigpIHt9LAogICAgICAgIHZ0ID0gW10sCiAgICAgICAgeXQgPSBEKCJSZWZsZWN0IiwgImNvbnN0cnVjdCIpLAogICAgICAgIGJ0ID0gL15ccyooPzpjbGFzc3xmdW5jdGlvbilcYi8sCiAgICAgICAgd3QgPSBtKGJ0LmV4ZWMpLAogICAgICAgIHh0ID0gIWJ0LmV4ZWMobXQpLAogICAgICAgIF90ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIUEoZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiB5dChtdCwgdnQsIGUpLCAhMAogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgU3QgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICghQShlKSkgcmV0dXJuICExOwogICAgICAgICAgICBzd2l0Y2ggKFFlKGUpKSB7CiAgICAgICAgICAgICAgICBjYXNlICJBc3luY0Z1bmN0aW9uIjoKICAgICAgICAgICAgICAgIGNhc2UgIkdlbmVyYXRvckZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgIGNhc2UgIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4geHQgfHwgISF3dChidCwgRGUoZSkpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIFN0LnNoYW0gPSAhMDsKICAgIHZhciBDdCA9ICF5dCB8fCB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgIHJldHVybiBfdChfdC5jYWxsKSB8fCAhX3QoT2JqZWN0KSB8fCAhX3QoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZSA9ICEwCiAgICAgICAgICAgIH0pKSB8fCBlCiAgICAgICAgfSkpID8gU3QgOiBfdCwKICAgICAgICBrdCA9IEIoInNwZWNpZXMiKSwKICAgICAgICBUdCA9IG8uQXJyYXksCiAgICAgICAgQXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBuZXcoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gZ3QoZSkgJiYgKHQgPSBlLmNvbnN0cnVjdG9yLCAoQ3QodCkgJiYgKHQgPT09IFR0IHx8IGd0KHQucHJvdG90eXBlKSkgfHwgVih0KSAmJiBudWxsID09PSAodCA9IHRba3RdKSkgJiYgKHQgPSB2b2lkIDApKSwgdm9pZCAwID09PSB0ID8gVHQgOiB0CiAgICAgICAgICAgIH0oZSkpKDAgPT09IHQgPyAwIDogdCkKICAgICAgICB9LAogICAgICAgIEV0ID0gbShbXS5wdXNoKSwKICAgICAgICBEdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSAxID09IGUsCiAgICAgICAgICAgICAgICBuID0gMiA9PSBlLAogICAgICAgICAgICAgICAgaSA9IDMgPT0gZSwKICAgICAgICAgICAgICAgIHIgPSA0ID09IGUsCiAgICAgICAgICAgICAgICBvID0gNiA9PSBlLAogICAgICAgICAgICAgICAgYSA9IDcgPT0gZSwKICAgICAgICAgICAgICAgIHMgPSA1ID09IGUgfHwgbzsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGwsIGMsIHUsIGQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGgsIGYsIHAgPSB3KGwpLCBnID0gc3QocCksIG0gPSBydChjLCB1KSwgdiA9IHB0KGcpLCB5ID0gMCwgYiA9IGQgfHwgQXQsIHggPSB0ID8gYihsLCB2KSA6IG4gfHwgYSA/IGIobCwgMCkgOiB2b2lkIDA7IHYgPiB5OyB5KyspCiAgICAgICAgICAgICAgICAgICAgaWYgKChzIHx8IHkgaW4gZykgJiYgKGYgPSBtKGggPSBnW3ldLCB5LCBwKSwgZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSB4W3ldID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZikgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaDsKICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgRXQoeCwgaCkKICAgICAgICAgICAgICAgIH0gZWxzZSBzd2l0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAgICAgICAgIEV0KHgsIGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbyA/IC0xIDogaSB8fCByID8gciA6IHgKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgT3QgPSB7CiAgICAgICAgICAgIGZvckVhY2g6IER0KDApLAogICAgICAgICAgICBtYXA6IER0KDEpLAogICAgICAgICAgICBmaWx0ZXI6IER0KDIpLAogICAgICAgICAgICBzb21lOiBEdCgzKSwKICAgICAgICAgICAgZXZlcnk6IER0KDQpLAogICAgICAgICAgICBmaW5kOiBEdCg1KSwKICAgICAgICAgICAgZmluZEluZGV4OiBEdCg2KSwKICAgICAgICAgICAgZmlsdGVyUmVqZWN0OiBEdCg3KQogICAgICAgIH0sCiAgICAgICAgTXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gW11bZV07CiAgICAgICAgICAgIHJldHVybiAhIW4gJiYgdSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuLmNhbGwobnVsbCwgdCB8fCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgICAgfSwgMSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICBJdCA9IE90LmZvckVhY2gsCiAgICAgICAgTHQgPSBNdCgiZm9yRWFjaCIpID8gW10uZm9yRWFjaCA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEl0KHRoaXMsIGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKQogICAgICAgIH0sCiAgICAgICAgUHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChlICYmIGUuZm9yRWFjaCAhPT0gTHQpIHRyeSB7CiAgICAgICAgICAgICAgICB3ZShlLCAiZm9yRWFjaCIsIEx0KQogICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICBlLmZvckVhY2ggPSBMdAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIGZvciAodmFyIGp0IGluIEplKSBKZVtqdF0gJiYgUHQob1tqdF0gJiYgb1tqdF0ucHJvdG90eXBlKTsKICAgIFB0KG50KTsKICAgIHZhciBOdCA9ICEoInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyB8fCAhd2luZG93LmRvY3VtZW50IHx8ICF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksCiAgICAgICAgRnQgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwKICAgICAgICBSdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgJHQgPSB7CiAgICAgICAgICAgIGY6IFJ0ICYmICFGdC5jYWxsKHsKICAgICAgICAgICAgICAgIDE6IDIKICAgICAgICAgICAgfSwgMSkgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFJ0KHRoaXMsIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICEhdCAmJiB0LmVudW1lcmFibGUKICAgICAgICAgICAgfSA6IEZ0CiAgICAgICAgfSwKICAgICAgICB6dCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHN0KHkoZSkpCiAgICAgICAgfSwKICAgICAgICBIdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgICAgICAgQnQgPSB7CiAgICAgICAgICAgIGY6IFUgPyBIdCA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGlmIChlID0genQoZSksIHQgPSBwZSh0KSwgSykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gSHQoZSwgdCkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICBpZiAoXyhlLCB0KSkgcmV0dXJuIGJlKCFuZSgkdC5mLCBlLCB0KSwgZVt0XSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgV3QgPSBNYXRoLm1heCwKICAgICAgICBxdCA9IE1hdGgubWluLAogICAgICAgIFV0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGR0KGUpOwogICAgICAgICAgICByZXR1cm4gbiA8IDAgPyBXdChuICsgdCwgMCkgOiBxdChuLCB0KQogICAgICAgIH0sCiAgICAgICAgVnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgbyA9IHp0KHQpLAogICAgICAgICAgICAgICAgICAgIGEgPSBwdChvKSwKICAgICAgICAgICAgICAgICAgICBzID0gVXQoaSwgYSk7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiBuICE9IG4pIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgYSA+IHM7KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgPSBvW3MrK10pICE9IHIpIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGEgPiBzOyBzKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSB8fCBzIGluIG8pICYmIG9bc10gPT09IG4pIHJldHVybiBlIHx8IHMgfHwgMDsKICAgICAgICAgICAgICAgIHJldHVybiAhZSAmJiAtMQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBZdCA9IChWdCghMCksIFZ0KCExKSksCiAgICAgICAgWHQgPSBtKFtdLnB1c2gpLAogICAgICAgIEd0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgaSA9IHp0KGUpLAogICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICBvID0gW107CiAgICAgICAgICAgIGZvciAobiBpbiBpKSAhXyhQZSwgbikgJiYgXyhpLCBuKSAmJiBYdChvLCBuKTsKICAgICAgICAgICAgZm9yICg7IHQubGVuZ3RoID4gcjspIF8oaSwgbiA9IHRbcisrXSkgJiYgKH5ZdChvLCBuKSB8fCBYdChvLCBuKSk7CiAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgfSwKICAgICAgICBLdCA9IFsiY29uc3RydWN0b3IiLCAiaGFzT3duUHJvcGVydHkiLCAiaXNQcm90b3R5cGVPZiIsICJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsICJ0b0xvY2FsZVN0cmluZyIsICJ0b1N0cmluZyIsICJ2YWx1ZU9mIl0sCiAgICAgICAgUXQgPSBLdC5jb25jYXQoImxlbmd0aCIsICJwcm90b3R5cGUiKSwKICAgICAgICBadCA9IHsKICAgICAgICAgICAgZjogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIEd0KGUsIFF0KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBKdCA9IHsKICAgICAgICAgICAgZjogT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwogICAgICAgIH0sCiAgICAgICAgZW4gPSBtKFtdLmNvbmNhdCksCiAgICAgICAgdG4gPSBEKCJSZWZsZWN0IiwgIm93bktleXMiKSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gWnQuZihlZShlKSksCiAgICAgICAgICAgICAgICBuID0gSnQuZjsKICAgICAgICAgICAgcmV0dXJuIG4gPyBlbih0LCBuKGUpKSA6IHQKICAgICAgICB9LAogICAgICAgIG5uID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpID0gdG4odCksIHIgPSB5ZS5mLCBvID0gQnQuZiwgYSA9IDA7IGEgPCBpLmxlbmd0aDsgYSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IGlbYV07CiAgICAgICAgICAgICAgICBfKGUsIHMpIHx8IG4gJiYgXyhuLCBzKSB8fCByKGUsIHMsIG8odCwgcykpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJuID0gLyN8XC5wcm90b3R5cGVcLi8sCiAgICAgICAgb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gc25bYW4oZSldOwogICAgICAgICAgICByZXR1cm4gbiA9PSBjbiB8fCBuICE9IGxuICYmIChBKHQpID8gdSh0KSA6ICEhdCkKICAgICAgICB9LAogICAgICAgIGFuID0gb24ubm9ybWFsaXplID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2Uocm4sICIuIikudG9Mb3dlckNhc2UoKQogICAgICAgIH0sCiAgICAgICAgc24gPSBvbi5kYXRhID0ge30sCiAgICAgICAgbG4gPSBvbi5OQVRJVkUgPSAiTiIsCiAgICAgICAgY24gPSBvbi5QT0xZRklMTCA9ICJQIiwKICAgICAgICB1biA9IG9uLAogICAgICAgIGRuID0gQnQuZiwKICAgICAgICBobiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4sIGksIHIsIGEsIGwsIGMgPSBlLnRhcmdldCwKICAgICAgICAgICAgICAgIHUgPSBlLmdsb2JhbCwKICAgICAgICAgICAgICAgIGQgPSBlLnN0YXQ7CiAgICAgICAgICAgIGlmIChuID0gdSA/IG8gOiBkID8gb1tjXSB8fCBzKGMsIHt9KSA6IChvW2NdIHx8IHt9KS5wcm90b3R5cGUpCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gdCkgewogICAgICAgICAgICAgICAgICAgIGlmIChhID0gdFtpXSwgciA9IGUuZG9udENhbGxHZXRTZXQgPyAobCA9IGRuKG4sIGkpKSAmJiBsLnZhbHVlIDogbltpXSwgIXVuKHUgPyBpIDogYyArIChkID8gIi4iIDogIiMiKSArIGksIGUuZm9yY2VkKSAmJiB2b2lkIDAgIT09IHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09IHR5cGVvZiByKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgbm4oYSwgcikKICAgICAgICAgICAgICAgICAgICB9KGUuc2hhbSB8fCByICYmIHIuc2hhbSkgJiYgd2UoYSwgInNoYW0iLCAhMCksIHFlKG4sIGksIGEsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBmbiA9IG8uU3RyaW5nLAogICAgICAgIHBuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIlN5bWJvbCIgPT09IFFlKGUpKSB0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7CiAgICAgICAgICAgIHJldHVybiBmbihlKQogICAgICAgIH0sCiAgICAgICAgZ24gPSAiXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiIsCiAgICAgICAgbW4gPSBtKCIiLnJlcGxhY2UpLAogICAgICAgIHZuID0gIlsiICsgZ24gKyAiXSIsCiAgICAgICAgeW4gPSBSZWdFeHAoIl4iICsgdm4gKyB2biArICIqIiksCiAgICAgICAgYm4gPSBSZWdFeHAodm4gKyB2biArICIqJCIpLAogICAgICAgIHduID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBwbih5KHQpKTsKICAgICAgICAgICAgICAgIHJldHVybiAxICYgZSAmJiAobiA9IG1uKG4sIHluLCAiIikpLCAyICYgZSAmJiAobiA9IG1uKG4sIGJuLCAiIikpLCBuCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHhuID0gKHduKDEpLCB3bigyKSwgd24oMykpLAogICAgICAgIF9uID0gby5wYXJzZUludCwKICAgICAgICBTbiA9IG8uU3ltYm9sLAogICAgICAgIENuID0gU24gJiYgU24uaXRlcmF0b3IsCiAgICAgICAga24gPSAvXlsrLV0/MHgvaSwKICAgICAgICBUbiA9IG0oa24uZXhlYyksCiAgICAgICAgQW4gPSA4ICE9PSBfbihnbiArICIwOCIpIHx8IDIyICE9PSBfbihnbiArICIweDE2IikgfHwgQ24gJiYgIXUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBfbihPYmplY3QoQ24pKQogICAgICAgIH0pKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB4bihwbihlKSk7CiAgICAgICAgICAgIHJldHVybiBfbihuLCB0ID4+PiAwIHx8IChUbihrbiwgbikgPyAxNiA6IDEwKSkKICAgICAgICB9IDogX247CiAgICBobih7CiAgICAgICAgZ2xvYmFsOiAhMCwKICAgICAgICBmb3JjZWQ6IHBhcnNlSW50ICE9IEFuCiAgICB9LCB7CiAgICAgICAgcGFyc2VJbnQ6IEFuCiAgICB9KTsKICAgIHZhciBFbiA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEd0KGUsIEt0KQogICAgICAgIH0sCiAgICAgICAgRG4gPSBPYmplY3QuYXNzaWduLAogICAgICAgIE9uID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LAogICAgICAgIE1uID0gbShbXS5jb25jYXQpLAogICAgICAgIEluID0gIURuIHx8IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoVSAmJiAxICE9PSBEbih7CiAgICAgICAgICAgICAgICAgICAgYjogMQogICAgICAgICAgICAgICAgfSwgRG4oT24oe30sICJhIiwgewogICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9uKHRoaXMsICJiIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCB7CiAgICAgICAgICAgICAgICAgICAgYjogMgogICAgICAgICAgICAgICAgfSkpLmIpIHJldHVybiAhMDsKICAgICAgICAgICAgdmFyIGUgPSB7fSwKICAgICAgICAgICAgICAgIHQgPSB7fSwKICAgICAgICAgICAgICAgIG4gPSBTeW1ib2woKTsKICAgICAgICAgICAgcmV0dXJuIGVbbl0gPSA3LCAiYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0W2VdID0gZQogICAgICAgICAgICB9KSksIDcgIT0gRG4oe30sIGUpW25dIHx8ICJhYmNkZWZnaGlqa2xtbm9wcXJzdCIgIT0gRW4oRG4oe30sIHQpKS5qb2luKCIiKQogICAgICAgIH0pKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IHcoZSksIGkgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gMSwgbyA9IEp0LmYsIGEgPSAkdC5mOyBpID4gcjspCiAgICAgICAgICAgICAgICBmb3IgKHZhciBzLCBsID0gc3QoYXJndW1lbnRzW3IrK10pLCBjID0gbyA/IE1uKEVuKGwpLCBvKGwpKSA6IEVuKGwpLCB1ID0gYy5sZW5ndGgsIGQgPSAwOyB1ID4gZDspIHMgPSBjW2QrK10sIFUgJiYgIW5lKGEsIGwsIHMpIHx8IChuW3NdID0gbFtzXSk7CiAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgfSA6IERuOwogICAgaG4oewogICAgICAgIHRhcmdldDogIk9iamVjdCIsCiAgICAgICAgc3RhdDogITAsCiAgICAgICAgYXJpdHk6IDIsCiAgICAgICAgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBJbgogICAgfSwgewogICAgICAgIGFzc2lnbjogSW4KICAgIH0pOwogICAgdmFyIExuID0gQigic3BlY2llcyIpLAogICAgICAgIFBuID0gT3QuZmlsdGVyLAogICAgICAgIGpuID0gKCJmaWx0ZXIiLCBqID49IDUxIHx8ICF1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgcmV0dXJuIChlLmNvbnN0cnVjdG9yID0ge30pW0xuXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBmb286IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgMSAhPT0gZS5maWx0ZXIoQm9vbGVhbikuZm9vCiAgICAgICAgfSkpKTsKICAgIGhuKHsKICAgICAgICB0YXJnZXQ6ICJBcnJheSIsCiAgICAgICAgcHJvdG86ICEwLAogICAgICAgIGZvcmNlZDogIWpuCiAgICB9LCB7CiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBQbih0aGlzLCBlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCkKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBObiwgRm4gPSB7CiAgICAgICAgICAgIGY6IFUgJiYgIVEgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGVlKGUpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbiwgaSA9IHp0KHQpLCByID0gRW4odCksIG8gPSByLmxlbmd0aCwgYSA9IDA7IG8gPiBhOykgeWUuZihlLCBuID0gclthKytdLCBpW25dKTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFJuID0gRCgiZG9jdW1lbnQiLCAiZG9jdW1lbnRFbGVtZW50IiksCiAgICAgICAgJG4gPSBMZSgiSUVfUFJPVE8iKSwKICAgICAgICB6biA9IGZ1bmN0aW9uKCkge30sCiAgICAgICAgSG4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiPHNjcmlwdD4iICsgZSArICI8XC9zY3JpcHQ+IgogICAgICAgIH0sCiAgICAgICAgQm4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUud3JpdGUoSG4oIiIpKSwgZS5jbG9zZSgpOwogICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50V2luZG93Lk9iamVjdDsKICAgICAgICAgICAgcmV0dXJuIGUgPSBudWxsLCB0CiAgICAgICAgfSwKICAgICAgICBXbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgTm4gPSBuZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB2YXIgZSwgdDsKICAgICAgICAgICAgV24gPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQgPyBkb2N1bWVudC5kb21haW4gJiYgTm4gPyBCbihObikgOiAoKHQgPSBHKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgUm4uYXBwZW5kQ2hpbGQodCksIHQuc3JjID0gU3RyaW5nKCJqYXZhc2NyaXB0OiIpLCAoZSA9IHQuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLCBlLndyaXRlKEhuKCJkb2N1bWVudC5GPU9iamVjdCIpKSwgZS5jbG9zZSgpLCBlLkYpIDogQm4oTm4pOwogICAgICAgICAgICBmb3IgKHZhciBuID0gS3QubGVuZ3RoOyBuLS07KSBkZWxldGUgV24ucHJvdG90eXBlW0t0W25dXTsKICAgICAgICAgICAgcmV0dXJuIFduKCkKICAgICAgICB9OwogICAgUGVbJG5dID0gITA7CiAgICB2YXIgcW4gPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlID8gKHpuLnByb3RvdHlwZSA9IGVlKGUpLCBuID0gbmV3IHpuLCB6bi5wcm90b3R5cGUgPSBudWxsLCBuWyRuXSA9IGUpIDogbiA9IFduKCksIHZvaWQgMCA9PT0gdCA/IG4gOiBGbi5mKG4sIHQpCiAgICAgICAgfSwKICAgICAgICBVbiA9IHllLmYsCiAgICAgICAgVm4gPSBCKCJ1bnNjb3BhYmxlcyIpLAogICAgICAgIFluID0gQXJyYXkucHJvdG90eXBlOwogICAgbnVsbCA9PSBZbltWbl0gJiYgVW4oWW4sIFZuLCB7CiAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICB2YWx1ZTogcW4obnVsbCkKICAgIH0pOwogICAgdmFyIFhuLCBHbiwgS24sIFFuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBZbltWbl1bZV0gPSAhMAogICAgICAgIH0sCiAgICAgICAgWm4gPSB7fSwKICAgICAgICBKbiA9ICF1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHt9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG51bGwsIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgZSkgIT09IGUucHJvdG90eXBlCiAgICAgICAgfSkpLAogICAgICAgIGVpID0gTGUoIklFX1BST1RPIiksCiAgICAgICAgdGkgPSBvLk9iamVjdCwKICAgICAgICBuaSA9IHRpLnByb3RvdHlwZSwKICAgICAgICBpaSA9IEpuID8gdGkuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdyhlKTsKICAgICAgICAgICAgaWYgKF8odCwgZWkpKSByZXR1cm4gdFtlaV07CiAgICAgICAgICAgIHZhciBuID0gdC5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgcmV0dXJuIEEobikgJiYgdCBpbnN0YW5jZW9mIG4gPyBuLnByb3RvdHlwZSA6IHQgaW5zdGFuY2VvZiB0aSA/IG5pIDogbnVsbAogICAgICAgIH0sCiAgICAgICAgcmkgPSBCKCJpdGVyYXRvciIpLAogICAgICAgIG9pID0gITE7CiAgICBbXS5rZXlzICYmICgibmV4dCIgaW4gKEtuID0gW10ua2V5cygpKSA/IChHbiA9IGlpKGlpKEtuKSkpICE9PSBPYmplY3QucHJvdG90eXBlICYmIChYbiA9IEduKSA6IG9pID0gITApLCAobnVsbCA9PSBYbiB8fCB1KChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHt9OwogICAgICAgIHJldHVybiBYbltyaV0uY2FsbChlKSAhPT0gZQogICAgfSkpKSAmJiAoWG4gPSB7fSksIEEoWG5bcmldKSB8fCBxZShYbiwgcmksIChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcwogICAgfSkpOwogICAgdmFyIGFpID0gewogICAgICAgICAgICBJdGVyYXRvclByb3RvdHlwZTogWG4sCiAgICAgICAgICAgIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IG9pCiAgICAgICAgfSwKICAgICAgICBzaSA9IHllLmYsCiAgICAgICAgbGkgPSBCKCJ0b1N0cmluZ1RhZyIpLAogICAgICAgIGNpID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBlICYmICFuICYmIChlID0gZS5wcm90b3R5cGUpLCBlICYmICFfKGUsIGxpKSAmJiBzaShlLCBsaSwgewogICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIHZhbHVlOiB0CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICB1aSA9IGFpLkl0ZXJhdG9yUHJvdG90eXBlLAogICAgICAgIGRpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICBoaSA9IG8uU3RyaW5nLAogICAgICAgIGZpID0gby5UeXBlRXJyb3IsCiAgICAgICAgcGkgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCJfX3Byb3RvX18iIGluIHt9ID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gITEsCiAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAoZSA9IG0oT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAiX19wcm90b19fIikuc2V0KSkobiwgW10pLCB0ID0gbiBpbnN0YW5jZW9mIEFycmF5CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWUobiksCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgQShlKSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGZpKCJDYW4ndCBzZXQgIiArIGhpKGUpICsgIiBhcyBhIHByb3RvdHlwZSIpCiAgICAgICAgICAgICAgICAgICAgfShpKSwgdCA/IGUobiwgaSkgOiBuLl9fcHJvdG9fXyA9IGksIG4KICAgICAgICAgICAgfQogICAgICAgIH0oKSA6IHZvaWQgMCksCiAgICAgICAgZ2kgPSBDZS5QUk9QRVIsCiAgICAgICAgbWkgPSBDZS5DT05GSUdVUkFCTEUsCiAgICAgICAgdmkgPSBhaS5JdGVyYXRvclByb3RvdHlwZSwKICAgICAgICB5aSA9IGFpLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsCiAgICAgICAgYmkgPSBCKCJpdGVyYXRvciIpLAogICAgICAgIHdpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwKICAgICAgICB4aSA9IGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIsIG8sIGEpIHsKICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IHQgKyAiIEl0ZXJhdG9yIjsKICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gcW4odWksIHsKICAgICAgICAgICAgICAgICAgICBuZXh0OiBiZSgxLCBuKQogICAgICAgICAgICAgICAgfSksIGNpKGUsIHIsICExKSwgWm5bcl0gPSBkaQogICAgICAgICAgICB9KG4sIHQsIGkpOwogICAgICAgICAgICB2YXIgcywgbCwgYywgdSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PT0gciAmJiBnKSByZXR1cm4gZzsKICAgICAgICAgICAgICAgICAgICBpZiAoIXlpICYmIGUgaW4gZikgcmV0dXJuIGZbZV07CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImtleXMiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ2YWx1ZXMiOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbnRyaWVzIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG4odGhpcywgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG4odGhpcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZCA9IHQgKyAiIEl0ZXJhdG9yIiwKICAgICAgICAgICAgICAgIGggPSAhMSwKICAgICAgICAgICAgICAgIGYgPSBlLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgIHAgPSBmW2JpXSB8fCBmWyJAQGl0ZXJhdG9yIl0gfHwgciAmJiBmW3JdLAogICAgICAgICAgICAgICAgZyA9ICF5aSAmJiBwIHx8IHUociksCiAgICAgICAgICAgICAgICBtID0gIkFycmF5IiA9PSB0ICYmIGYuZW50cmllcyB8fCBwOwogICAgICAgICAgICBpZiAobSAmJiAocyA9IGlpKG0uY2FsbChuZXcgZSkpKSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBzLm5leHQgJiYgKGlpKHMpICE9PSB2aSAmJiAocGkgPyBwaShzLCB2aSkgOiBBKHNbYmldKSB8fCBxZShzLCBiaSwgd2kpKSwgY2kocywgZCwgITApKSwgZ2kgJiYgInZhbHVlcyIgPT0gciAmJiBwICYmICJ2YWx1ZXMiICE9PSBwLm5hbWUgJiYgKG1pID8gd2UoZiwgIm5hbWUiLCAidmFsdWVzIikgOiAoaCA9ICEwLCBnID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5lKHAsIHRoaXMpCiAgICAgICAgICAgICAgICB9KSksIHIpCiAgICAgICAgICAgICAgICBpZiAobCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB1KCJ2YWx1ZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAga2V5czogbyA/IGcgOiB1KCJrZXlzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHUoImVudHJpZXMiKQogICAgICAgICAgICAgICAgICAgIH0sIGEpCiAgICAgICAgICAgICAgICAgICAgZm9yIChjIGluIGwpKHlpIHx8IGggfHwgIShjIGluIGYpKSAmJiBxZShmLCBjLCBsW2NdKTsKICAgICAgICAgICAgICAgIGVsc2UgaG4oewogICAgICAgICAgICAgICAgICAgIHRhcmdldDogdCwKICAgICAgICAgICAgICAgICAgICBwcm90bzogITAsCiAgICAgICAgICAgICAgICAgICAgZm9yY2VkOiB5aSB8fCBoCiAgICAgICAgICAgICAgICB9LCBsKTsKICAgICAgICAgICAgcmV0dXJuIGZbYmldICE9PSBnICYmIHFlKGYsIGJpLCBnLCB7CiAgICAgICAgICAgICAgICBuYW1lOiByCiAgICAgICAgICAgIH0pLCBablt0XSA9IGcsIGwKICAgICAgICB9LAogICAgICAgIF9pID0geWUuZiwKICAgICAgICBTaSA9IEJlLnNldCwKICAgICAgICBDaSA9IEJlLmdldHRlckZvcigiQXJyYXkgSXRlcmF0b3IiKSwKICAgICAgICBraSA9IHhpKEFycmF5LCAiQXJyYXkiLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBTaSh0aGlzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAiQXJyYXkgSXRlcmF0b3IiLAogICAgICAgICAgICAgICAgdGFyZ2V0OiB6dChlKSwKICAgICAgICAgICAgICAgIGluZGV4OiAwLAogICAgICAgICAgICAgICAga2luZDogdAogICAgICAgICAgICB9KQogICAgICAgIH0pLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gQ2kodGhpcyksCiAgICAgICAgICAgICAgICB0ID0gZS50YXJnZXQsCiAgICAgICAgICAgICAgICBuID0gZS5raW5kLAogICAgICAgICAgICAgICAgaSA9IGUuaW5kZXgrKzsKICAgICAgICAgICAgcmV0dXJuICF0IHx8IGkgPj0gdC5sZW5ndGggPyAoZS50YXJnZXQgPSB2b2lkIDAsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBkb25lOiAhMAogICAgICAgICAgICB9KSA6ICJrZXlzIiA9PSBuID8gewogICAgICAgICAgICAgICAgdmFsdWU6IGksCiAgICAgICAgICAgICAgICBkb25lOiAhMQogICAgICAgICAgICB9IDogInZhbHVlcyIgPT0gbiA/IHsKICAgICAgICAgICAgICAgIHZhbHVlOiB0W2ldLAogICAgICAgICAgICAgICAgZG9uZTogITEKICAgICAgICAgICAgfSA6IHsKICAgICAgICAgICAgICAgIHZhbHVlOiBbaSwgdFtpXV0sCiAgICAgICAgICAgICAgICBkb25lOiAhMQogICAgICAgICAgICB9CiAgICAgICAgfSksICJ2YWx1ZXMiKSwKICAgICAgICBUaSA9IFpuLkFyZ3VtZW50cyA9IFpuLkFycmF5OwogICAgaWYgKFFuKCJrZXlzIiksIFFuKCJ2YWx1ZXMiKSwgUW4oImVudHJpZXMiKSwgVSAmJiAidmFsdWVzIiAhPT0gVGkubmFtZSkgdHJ5IHsKICAgICAgICBfaShUaSwgIm5hbWUiLCB7CiAgICAgICAgICAgIHZhbHVlOiAidmFsdWVzIgogICAgICAgIH0pCiAgICB9IGNhdGNoIChlKSB7fQogICAgdmFyIEFpID0gbSgiIi5jaGFyQXQpLAogICAgICAgIEVpID0gbSgiIi5jaGFyQ29kZUF0KSwKICAgICAgICBEaSA9IG0oIiIuc2xpY2UpLAogICAgICAgIE9pID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgdmFyIGksIHIsIG8gPSBwbih5KHQpKSwKICAgICAgICAgICAgICAgICAgICBhID0gZHQobiksCiAgICAgICAgICAgICAgICAgICAgcyA9IG8ubGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIGEgPCAwIHx8IGEgPj0gcyA/IGUgPyAiIiA6IHZvaWQgMCA6IChpID0gRWkobywgYSkpIDwgNTUyOTYgfHwgaSA+IDU2MzE5IHx8IGEgKyAxID09PSBzIHx8IChyID0gRWkobywgYSArIDEpKSA8IDU2MzIwIHx8IHIgPiA1NzM0MyA/IGUgPyBBaShvLCBhKSA6IGkgOiBlID8gRGkobywgYSwgYSArIDIpIDogciAtIDU2MzIwICsgKGkgLSA1NTI5NiA8PCAxMCkgKyA2NTUzNgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBNaSA9IHsKICAgICAgICAgICAgY29kZUF0OiBPaSghMSksCiAgICAgICAgICAgIGNoYXJBdDogT2koITApCiAgICAgICAgfSwKICAgICAgICBJaSA9IE1pLmNoYXJBdCwKICAgICAgICBMaSA9IEJlLnNldCwKICAgICAgICBQaSA9IEJlLmdldHRlckZvcigiU3RyaW5nIEl0ZXJhdG9yIik7CiAgICB4aShTdHJpbmcsICJTdHJpbmciLCAoZnVuY3Rpb24oZSkgewogICAgICAgIExpKHRoaXMsIHsKICAgICAgICAgICAgdHlwZTogIlN0cmluZyBJdGVyYXRvciIsCiAgICAgICAgICAgIHN0cmluZzogcG4oZSksCiAgICAgICAgICAgIGluZGV4OiAwCiAgICAgICAgfSkKICAgIH0pLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQgPSBQaSh0aGlzKSwKICAgICAgICAgICAgbiA9IHQuc3RyaW5nLAogICAgICAgICAgICBpID0gdC5pbmRleDsKICAgICAgICByZXR1cm4gaSA+PSBuLmxlbmd0aCA/IHsKICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCwKICAgICAgICAgICAgZG9uZTogITAKICAgICAgICB9IDogKGUgPSBJaShuLCBpKSwgdC5pbmRleCArPSBlLmxlbmd0aCwgewogICAgICAgICAgICB2YWx1ZTogZSwKICAgICAgICAgICAgZG9uZTogITEKICAgICAgICB9KQogICAgfSkpOwogICAgdmFyIGppID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpIGluIHQpIHFlKGUsIGksIHRbaV0sIG4pOwogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgTmkgPSBvLkFycmF5LAogICAgICAgIEZpID0gTWF0aC5tYXgsCiAgICAgICAgUmkgPSBadC5mLAogICAgICAgICRpID0gIm9iamVjdCIgPT0gdHlwZW9mIHdpbmRvdyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW10sCiAgICAgICAgemkgPSB7CiAgICAgICAgICAgIGY6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaSAmJiAiV2luZG93IiA9PSBZZShlKSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmkoZSkKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpLCByLCBvLCBhLCBzID0gcHQoZSksIGwgPSBVdCh2b2lkIDAsIHMpLCBjID0gVXQocywgcyksIHUgPSBOaShGaShjIC0gbCwgMCkpLCBkID0gMDsgbCA8IGM7IGwrKywgZCsrKSBpID0gdSwgciA9IGQsIG8gPSBlW2xdLCB2b2lkIDAsIChhID0gcGUocikpIGluIGkgPyB5ZS5mKGksIGEsIGJlKDAsIG8pKSA6IGlbYV0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHUubGVuZ3RoID0gZCwgdQogICAgICAgICAgICAgICAgICAgICAgICB9KCRpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oZSkgOiBSaSh6dChlKSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgSGkgPSB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIEFycmF5QnVmZmVyKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBBcnJheUJ1ZmZlcig4KTsKICAgICAgICAgICAgICAgIE9iamVjdC5pc0V4dGVuc2libGUoZSkgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJhIiwgewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiA4CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkpLAogICAgICAgIEJpID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSwKICAgICAgICBXaSA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBCaSgxKQogICAgICAgIH0pKSB8fCBIaSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEhVihlKSAmJiAoIUhpIHx8ICJBcnJheUJ1ZmZlciIgIT0gWWUoZSkpICYmICghQmkgfHwgQmkoZSkpCiAgICAgICAgfSA6IEJpLAogICAgICAgIHFpID0gIXUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKQogICAgICAgIH0pKSwKICAgICAgICBVaSA9IHQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB5ZS5mLAogICAgICAgICAgICAgICAgbiA9ICExLAogICAgICAgICAgICAgICAgaSA9IFQoIm1ldGEiKSwKICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0KGUsIGksIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdElEOiAiTyIgKyByKyssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrRGF0YToge30KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYSA9IGUuZXhwb3J0cyA9IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBhLmVuYWJsZSA9IGZ1bmN0aW9uKCkge30sIG4gPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBadC5mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IG0oW10uc3BsaWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgcltpXSA9IDEsIGUocikubGVuZ3RoICYmIChadC5mID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUobiksIG8gPSAwLCBhID0gci5sZW5ndGg7IG8gPCBhOyBvKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJbb10gPT09IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdChyLCBvLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgICAgICAgICB9LCBobih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6ICJPYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZWQ6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5TmFtZXM6IHppLmYKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmYXN0S2V5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVihlKSkgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlID8gZSA6ICgic3RyaW5nIiA9PSB0eXBlb2YgZSA/ICJTIiA6ICJQIikgKyBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV8oZSwgaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghV2koZSkpIHJldHVybiAiRiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiAiRSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbaV0ub2JqZWN0SUQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldFdlYWtEYXRhOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghXyhlLCBpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXaShlKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbaV0ud2Vha0RhdGEKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9uRnJlZXplOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBxaSAmJiBuICYmIFdpKGUpICYmICFfKGUsIGkpICYmIG8oZSksIGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBQZVtpXSA9ICEwCiAgICAgICAgfSkpLAogICAgICAgIFZpID0gKFVpLmVuYWJsZSwgVWkuZmFzdEtleSwgVWkuZ2V0V2Vha0RhdGEsIFVpLm9uRnJlZXplLCBCKCJpdGVyYXRvciIpKSwKICAgICAgICBZaSA9IEFycmF5LnByb3RvdHlwZSwKICAgICAgICBYaSA9IEIoIml0ZXJhdG9yIiksCiAgICAgICAgR2kgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9IGUpIHJldHVybiB1ZShlLCBYaSkgfHwgdWUoZSwgIkBAaXRlcmF0b3IiKSB8fCBabltRZShlKV0KICAgICAgICB9LAogICAgICAgIEtpID0gby5UeXBlRXJyb3IsCiAgICAgICAgUWkgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByOwogICAgICAgICAgICBlZShlKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGlmICghKGkgPSB1ZShlLCAicmV0dXJuIikpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQpIHRocm93IG47CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGkgPSBuZShpLCBlKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByID0gITAsIGkgPSBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCJ0aHJvdyIgPT09IHQpIHRocm93IG47CiAgICAgICAgICAgIGlmIChyKSB0aHJvdyBpOwogICAgICAgICAgICByZXR1cm4gZWUoaSksIG4KICAgICAgICB9LAogICAgICAgIFppID0gby5UeXBlRXJyb3IsCiAgICAgICAgSmkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHRoaXMuc3RvcHBlZCA9IGUsIHRoaXMucmVzdWx0ID0gdAogICAgICAgIH0sCiAgICAgICAgZXIgPSBKaS5wcm90b3R5cGUsCiAgICAgICAgdHIgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjLCB1LCBkID0gbiAmJiBuLnRoYXQsCiAgICAgICAgICAgICAgICBoID0gISghbiB8fCAhbi5BU19FTlRSSUVTKSwKICAgICAgICAgICAgICAgIGYgPSAhKCFuIHx8ICFuLklTX0lURVJBVE9SKSwKICAgICAgICAgICAgICAgIHAgPSAhKCFuIHx8ICFuLklOVEVSUlVQVEVEKSwKICAgICAgICAgICAgICAgIGcgPSBydCh0LCBkKSwKICAgICAgICAgICAgICAgIG0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJiYgUWkoaSwgIm5vcm1hbCIsIGUpLCBuZXcgSmkoITAsIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCA/IChlZShlKSwgcCA/IGcoZVswXSwgZVsxXSwgbSkgOiBnKGVbMF0sIGVbMV0pKSA6IHAgPyBnKGUsIG0pIDogZyhlKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGYpIGkgPSBlOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghKHIgPSBHaShlKSkpIHRocm93IFppKHNlKGUpICsgIiBpcyBub3QgaXRlcmFibGUiKTsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09ICh1ID0gcikgJiYgKFpuLkFycmF5ID09PSB1IHx8IFlpW1ZpXSA9PT0gdSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAwLCBhID0gcHQoZSk7IGEgPiBvOyBvKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocyA9IHYoZVtvXSkpICYmIGllKGVyLCBzKSkgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKaSghMSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IEdpKGUpIDogdDsKICAgICAgICAgICAgICAgICAgICBpZiAoY2UobikpIHJldHVybiBlZShuZShuLCBlKSk7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgS2koc2UoZSkgKyAiIGlzIG5vdCBpdGVyYWJsZSIpCiAgICAgICAgICAgICAgICB9KGUsIHIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChsID0gaS5uZXh0OyAhKGMgPSBuZShsLCBpKSkuZG9uZTspIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcyA9IHYoYy52YWx1ZSkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICBRaShpLCAidGhyb3ciLCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBzICYmIHMgJiYgaWUoZXIsIHMpKSByZXR1cm4gcwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgSmkoITEpCiAgICAgICAgfSwKICAgICAgICBuciA9IG8uVHlwZUVycm9yLAogICAgICAgIGlyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBpZiAoaWUodCwgZSkpIHJldHVybiBlOwogICAgICAgICAgICB0aHJvdyBucigiSW5jb3JyZWN0IGludm9jYXRpb24iKQogICAgICAgIH0sCiAgICAgICAgcnIgPSBCKCJpdGVyYXRvciIpLAogICAgICAgIG9yID0gITE7CiAgICB0cnkgewogICAgICAgIHZhciBhciA9IDAsCiAgICAgICAgICAgIHNyID0gewogICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogISFhcisrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJldHVybjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgb3IgPSAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIHNyW3JyXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgIH0sIEFycmF5LmZyb20oc3IsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhyb3cgMgogICAgICAgIH0pKQogICAgfSBjYXRjaCAoZSkge30KICAgIHZhciBsciA9IFVpLmdldFdlYWtEYXRhLAogICAgICAgIGNyID0gQmUuc2V0LAogICAgICAgIHVyID0gQmUuZ2V0dGVyRm9yLAogICAgICAgIGRyID0gT3QuZmluZCwKICAgICAgICBociA9IE90LmZpbmRJbmRleCwKICAgICAgICBmciA9IG0oW10uc3BsaWNlKSwKICAgICAgICBwciA9IDAsCiAgICAgICAgZ3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLmZyb3plbiB8fCAoZS5mcm96ZW4gPSBuZXcgbXIpCiAgICAgICAgfSwKICAgICAgICBtciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmVudHJpZXMgPSBbXQogICAgICAgIH0sCiAgICAgICAgdnIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBkcihlLmVudHJpZXMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZVswXSA9PT0gdAogICAgICAgICAgICB9KSkKICAgICAgICB9OwogICAgbXIucHJvdG90eXBlID0gewogICAgICAgIGdldDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHZyKHRoaXMsIGUpOwogICAgICAgICAgICBpZiAodCkgcmV0dXJuIHRbMV0KICAgICAgICB9LAogICAgICAgIGhhczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gISF2cih0aGlzLCBlKQogICAgICAgIH0sCiAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdnIodGhpcywgZSk7CiAgICAgICAgICAgIG4gPyBuWzFdID0gdCA6IHRoaXMuZW50cmllcy5wdXNoKFtlLCB0XSkKICAgICAgICB9LAogICAgICAgIGRlbGV0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGhyKHRoaXMuZW50cmllcywgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0WzBdID09PSBlCiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgcmV0dXJuIH50ICYmIGZyKHRoaXMuZW50cmllcywgdCwgMSksICEhfnQKICAgICAgICB9CiAgICB9OwogICAgdmFyIHlyLCBiciA9IHsKICAgICAgICAgICAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIHZhciByID0gZSgoZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICBpcihlLCBvKSwgY3IoZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwcisrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuOiB2b2lkIDAKICAgICAgICAgICAgICAgICAgICAgICAgfSksIG51bGwgIT0gciAmJiB0cihyLCBlW2ldLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNfRU5UUklFUzogbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwKICAgICAgICAgICAgICAgICAgICBvID0gci5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgYSA9IHVyKHQpLAogICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gYShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBscihlZSh0KSwgITApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IHIgPyBncihpKS5zZXQodCwgbikgOiByW2kuaWRdID0gbiwgZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gamkobywgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGEodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVihlKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGxyKGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IG4gPyBncih0KS5kZWxldGUoZSkgOiBuICYmIF8obiwgdC5pZCkgJiYgZGVsZXRlIG5bdC5pZF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGEodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVihlKSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGxyKGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAgPT09IG4gPyBncih0KS5oYXMoZSkgOiBuICYmIF8obiwgdC5pZCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgamkobywgbiA/IHsKICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBhKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBscihlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhMCA9PT0gbiA/IGdyKHQpLmdldChlKSA6IG4gPyBuW3QuaWRdIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyh0aGlzLCBlLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHRoaXMsIGUsICEwKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLCByCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHdyID0gQmUuZW5mb3JjZSwKICAgICAgICB4ciA9ICFvLkFjdGl2ZVhPYmplY3QgJiYgIkFjdGl2ZVhPYmplY3QiIGluIG8sCiAgICAgICAgX3IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMF0gOiB2b2lkIDApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFNyID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IC0xICE9PSBlLmluZGV4T2YoIk1hcCIpLAogICAgICAgICAgICAgICAgciA9IC0xICE9PSBlLmluZGV4T2YoIldlYWsiKSwKICAgICAgICAgICAgICAgIGEgPSBpID8gInNldCIgOiAiYWRkIiwKICAgICAgICAgICAgICAgIHMgPSBvW2VdLAogICAgICAgICAgICAgICAgbCA9IHMgJiYgcy5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICBjID0gcywKICAgICAgICAgICAgICAgIGQgPSB7fSwKICAgICAgICAgICAgICAgIGggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBtKGxbZV0pOwogICAgICAgICAgICAgICAgICAgIHFlKGwsIGUsICJhZGQiID09IGUgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0KHRoaXMsIDAgPT09IGUgPyAwIDogZSksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9IDogImRlbGV0ZSIgPT0gZSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEociAmJiAhVihlKSkgJiYgdCh0aGlzLCAwID09PSBlID8gMCA6IGUpCiAgICAgICAgICAgICAgICAgICAgfSA6ICJnZXQiID09IGUgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByICYmICFWKGUpID8gdm9pZCAwIDogdCh0aGlzLCAwID09PSBlID8gMCA6IGUpCiAgICAgICAgICAgICAgICAgICAgfSA6ICJoYXMiID09IGUgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKHIgJiYgIVYoZSkpICYmIHQodGhpcywgMCA9PT0gZSA/IDAgOiBlKQogICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0KHRoaXMsIDAgPT09IGUgPyAwIDogZSwgbiksIHRoaXMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHVuKGUsICFBKHMpIHx8ICEociB8fCBsLmZvckVhY2ggJiYgIXUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIChuZXcgcykuZW50cmllcygpLm5leHQoKQogICAgICAgICAgICAgICAgfSkpKSkpIGMgPSBuLmdldENvbnN0cnVjdG9yKHQsIGUsIGksIGEpLCBVaS5lbmFibGUoKTsKICAgICAgICAgICAgZWxzZSBpZiAodW4oZSwgITApKSB7CiAgICAgICAgICAgICAgICB2YXIgZiA9IG5ldyBjLAogICAgICAgICAgICAgICAgICAgIHAgPSBmW2FdKHIgPyB7fSA6IC0wLCAxKSAhPSBmLAogICAgICAgICAgICAgICAgICAgIGcgPSB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZi5oYXMoMSkKICAgICAgICAgICAgICAgICAgICB9KSksCiAgICAgICAgICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlbcnJdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiBuID0gITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IHMoZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfSgpLAogICAgICAgICAgICAgICAgICAgIHkgPSAhciAmJiB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IG5ldyBzLCB0ID0gNTsgdC0tOykgZVthXSh0LCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFlLmhhcygtMCkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICB2IHx8ICgoYyA9IHQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpcihlLCBsKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwaSAmJiBBKGkgPSB0LmNvbnN0cnVjdG9yKSAmJiBpICE9PSBuICYmIFYociA9IGkucHJvdG90eXBlKSAmJiByICE9PSBuLnByb3RvdHlwZSAmJiBwaShlLCByKSwgZQogICAgICAgICAgICAgICAgICAgIH0obmV3IHMsIGUsIGMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgJiYgdHIodCwgblthXSwgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0OiBuLAogICAgICAgICAgICAgICAgICAgICAgICBBU19FTlRSSUVTOiBpCiAgICAgICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgICAgIH0pKSkucHJvdG90eXBlID0gbCwgbC5jb25zdHJ1Y3RvciA9IGMpLCAoZyB8fCB5KSAmJiAoaCgiZGVsZXRlIiksIGgoImhhcyIpLCBpICYmIGgoImdldCIpKSwgKHkgfHwgcCkgJiYgaChhKSwgciAmJiBsLmNsZWFyICYmIGRlbGV0ZSBsLmNsZWFyCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGRbZV0gPSBjLCBobih7CiAgICAgICAgICAgICAgICBnbG9iYWw6ICEwLAogICAgICAgICAgICAgICAgY29uc3RydWN0b3I6ICEwLAogICAgICAgICAgICAgICAgZm9yY2VkOiBjICE9IHMKICAgICAgICAgICAgfSwgZCksIGNpKGMsIGUpLCByIHx8IG4uc2V0U3Ryb25nKGMsIGUsIGkpLCBjCiAgICAgICAgfSgiV2Vha01hcCIsIF9yLCBicik7CiAgICBpZiAoTWUgJiYgeHIpIHsKICAgICAgICB5ciA9IGJyLmdldENvbnN0cnVjdG9yKF9yLCAiV2Vha01hcCIsICEwKSwgVWkuZW5hYmxlKCk7CiAgICAgICAgdmFyIENyID0gU3IucHJvdG90eXBlLAogICAgICAgICAgICBrciA9IG0oQ3IuZGVsZXRlKSwKICAgICAgICAgICAgVHIgPSBtKENyLmhhcyksCiAgICAgICAgICAgIEFyID0gbShDci5nZXQpLAogICAgICAgICAgICBFciA9IG0oQ3Iuc2V0KTsKICAgICAgICBqaShDciwgewogICAgICAgICAgICBkZWxldGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChWKGUpICYmICFXaShlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gd3IodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZnJvemVuIHx8ICh0LmZyb3plbiA9IG5ldyB5ciksIGtyKHRoaXMsIGUpIHx8IHQuZnJvemVuLmRlbGV0ZShlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGtyKHRoaXMsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKFYoZSkgJiYgIVdpKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB3cih0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5mcm96ZW4gfHwgKHQuZnJvemVuID0gbmV3IHlyKSwgVHIodGhpcywgZSkgfHwgdC5mcm96ZW4uaGFzKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gVHIodGhpcywgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoVihlKSAmJiAhV2koZSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHdyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZyb3plbiB8fCAodC5mcm96ZW4gPSBuZXcgeXIpLCBUcih0aGlzLCBlKSA/IEFyKHRoaXMsIGUpIDogdC5mcm96ZW4uZ2V0KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gQXIodGhpcywgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoVihlKSAmJiAhV2koZSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHdyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIG4uZnJvemVuIHx8IChuLmZyb3plbiA9IG5ldyB5ciksIFRyKHRoaXMsIGUpID8gRXIodGhpcywgZSwgdCkgOiBuLmZyb3plbi5zZXQoZSwgdCkKICAgICAgICAgICAgICAgIH0gZWxzZSBFcih0aGlzLCBlLCB0KTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgfQogICAgdmFyIERyID0gQigiaXRlcmF0b3IiKSwKICAgICAgICBPciA9IEIoInRvU3RyaW5nVGFnIiksCiAgICAgICAgTXIgPSBraS52YWx1ZXMsCiAgICAgICAgSXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoZVtEcl0gIT09IE1yKSB0cnkgewogICAgICAgICAgICAgICAgICAgIHdlKGUsIERyLCBNcikKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHsKICAgICAgICAgICAgICAgICAgICBlW0RyXSA9IE1yCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZVtPcl0gfHwgd2UoZSwgT3IsIHQpLCBKZVt0XSkKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIGtpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtuXSAhPT0ga2lbbl0pIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZShlLCBuLCBraVtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtuXSA9IGtpW25dCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICBmb3IgKHZhciBMciBpbiBKZSkgSXIob1tMcl0gJiYgb1tMcl0ucHJvdG90eXBlLCBMcik7CiAgICBJcihudCwgIkRPTVRva2VuTGlzdCIpOwogICAgdmFyIFByID0gL15ccyt8XHMrJC9nLAogICAgICAgIGpyID0gL15bLStdMHhbMC05YS1mXSskL2ksCiAgICAgICAgTnIgPSAvXjBiWzAxXSskL2ksCiAgICAgICAgRnIgPSAvXjBvWzAtN10rJC9pLAogICAgICAgIFJyID0gcGFyc2VJbnQsCiAgICAgICAgJHIgPSAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlICYmIGUuT2JqZWN0ID09PSBPYmplY3QgJiYgZSwKICAgICAgICB6ciA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgIEhyID0gJHIgfHwgenIgfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSwKICAgICAgICBCciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgV3IgPSBNYXRoLm1heCwKICAgICAgICBxciA9IE1hdGgubWluLAogICAgICAgIFVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBIci5EYXRlLm5vdygpCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBWcihlKSB7CiAgICAgICAgdmFyIHQgPSB0eXBlb2YgZTsKICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgIH0KCiAgICBmdW5jdGlvbiBZcihlKSB7CiAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBlKSByZXR1cm4gZTsKICAgICAgICBpZiAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICJvYmplY3QiID09IHR5cGVvZiBlCiAgICAgICAgICAgICAgICB9KGUpICYmICJbb2JqZWN0IFN5bWJvbF0iID09IEJyLmNhbGwoZSkKICAgICAgICAgICAgfShlKSkgcmV0dXJuIE5hTjsKICAgICAgICBpZiAoVnIoZSkpIHsKICAgICAgICAgICAgdmFyIHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnZhbHVlT2YgPyBlLnZhbHVlT2YoKSA6IGU7CiAgICAgICAgICAgIGUgPSBWcih0KSA/IHQgKyAiIiA6IHQKICAgICAgICB9CiAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gMCA9PT0gZSA/IGUgOiArZTsKICAgICAgICBlID0gZS5yZXBsYWNlKFByLCAiIik7CiAgICAgICAgdmFyIG4gPSBOci50ZXN0KGUpOwogICAgICAgIHJldHVybiBuIHx8IEZyLnRlc3QoZSkgPyBScihlLnNsaWNlKDIpLCBuID8gMiA6IDgpIDoganIudGVzdChlKSA/IE5hTiA6ICtlCiAgICB9CiAgICB2YXIgWHIgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpID0gITAsCiAgICAgICAgICAgICAgICByID0gITA7CiAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgIHJldHVybiBWcihuKSAmJiAoaSA9ICJsZWFkaW5nIiBpbiBuID8gISFuLmxlYWRpbmcgOiBpLCByID0gInRyYWlsaW5nIiBpbiBuID8gISFuLnRyYWlsaW5nIDogciksCiAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwsIGMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9ICEwOwogICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPSByID0gdm9pZCAwLCBjID0gdCwgYSA9IGUuYXBwbHkobywgbikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyA9IGUsIHMgPSBzZXRUaW1lb3V0KG0sIHQpLCB1ID8gZihlKSA6IGEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUgLSBsOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBsIHx8IG4gPj0gdCB8fCBuIDwgMCB8fCBkICYmIGUgLSBjID49IG8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG0oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gVXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcoZSkpIHJldHVybiB2KGUpOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gc2V0VGltZW91dChtLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQgLSAoZSAtIGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBxcihuLCBvIC0gKGUgLSBjKSkgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0oZSkpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB2KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB2b2lkIDAsIGggJiYgaSA/IGYoZSkgOiAoaSA9IHIgPSB2b2lkIDAsIGEpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5KCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSBhcmd1bWVudHMsIHIgPSB0aGlzLCBsID0gZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcykgcmV0dXJuIHAobCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCkgcmV0dXJuIHMgPSBzZXRUaW1lb3V0KG0sIHQpLCBmKGwpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9IHNldFRpbWVvdXQobSwgdCkpLCBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gWXIodCkgfHwgMCwgVnIobikgJiYgKHUgPSAhIW4ubGVhZGluZywgbyA9IChkID0gIm1heFdhaXQiIGluIG4pID8gV3IoWXIobi5tYXhXYWl0KSB8fCAwLCB0KSA6IG8sIGggPSAidHJhaWxpbmciIGluIG4gPyAhIW4udHJhaWxpbmcgOiBoKSwgeS5jYW5jZWwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBzICYmIGNsZWFyVGltZW91dChzKSwgYyA9IDAsIGkgPSBsID0gciA9IHMgPSB2b2lkIDAKICAgICAgICAgICAgICAgICAgICB9LCB5LmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHMgPyBhIDogdihVcigpKQogICAgICAgICAgICAgICAgICAgIH0sIHkKICAgICAgICAgICAgICAgIH0oZSwgdCwgewogICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IGksCiAgICAgICAgICAgICAgICAgICAgbWF4V2FpdDogdCwKICAgICAgICAgICAgICAgICAgICB0cmFpbGluZzogcgogICAgICAgICAgICAgICAgfSkKICAgICAgICB9LAogICAgICAgIEdyID0gL15ccyt8XHMrJC9nLAogICAgICAgIEtyID0gL15bLStdMHhbMC05YS1mXSskL2ksCiAgICAgICAgUXIgPSAvXjBiWzAxXSskL2ksCiAgICAgICAgWnIgPSAvXjBvWzAtN10rJC9pLAogICAgICAgIEpyID0gcGFyc2VJbnQsCiAgICAgICAgZW8gPSAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlICYmIGUuT2JqZWN0ID09PSBPYmplY3QgJiYgZSwKICAgICAgICB0byA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgIG5vID0gZW8gfHwgdG8gfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSwKICAgICAgICBpbyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgcm8gPSBNYXRoLm1heCwKICAgICAgICBvbyA9IE1hdGgubWluLAogICAgICAgIGFvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBuby5EYXRlLm5vdygpCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBzbyhlKSB7CiAgICAgICAgdmFyIHQgPSB0eXBlb2YgZTsKICAgICAgICByZXR1cm4gISFlICYmICgib2JqZWN0IiA9PSB0IHx8ICJmdW5jdGlvbiIgPT0gdCkKICAgIH0KCiAgICBmdW5jdGlvbiBsbyhlKSB7CiAgICAgICAgaWYgKCJudW1iZXIiID09IHR5cGVvZiBlKSByZXR1cm4gZTsKICAgICAgICBpZiAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJzeW1ib2wiID09IHR5cGVvZiBlIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFlICYmICJvYmplY3QiID09IHR5cGVvZiBlCiAgICAgICAgICAgICAgICB9KGUpICYmICJbb2JqZWN0IFN5bWJvbF0iID09IGlvLmNhbGwoZSkKICAgICAgICAgICAgfShlKSkgcmV0dXJuIE5hTjsKICAgICAgICBpZiAoc28oZSkpIHsKICAgICAgICAgICAgdmFyIHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnZhbHVlT2YgPyBlLnZhbHVlT2YoKSA6IGU7CiAgICAgICAgICAgIGUgPSBzbyh0KSA/IHQgKyAiIiA6IHQKICAgICAgICB9CiAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gMCA9PT0gZSA/IGUgOiArZTsKICAgICAgICBlID0gZS5yZXBsYWNlKEdyLCAiIik7CiAgICAgICAgdmFyIG4gPSBRci50ZXN0KGUpOwogICAgICAgIHJldHVybiBuIHx8IFpyLnRlc3QoZSkgPyBKcihlLnNsaWNlKDIpLCBuID8gMiA6IDgpIDogS3IudGVzdChlKSA/IE5hTiA6ICtlCiAgICB9CiAgICB2YXIgY28gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsLCBjID0gMCwKICAgICAgICAgICAgICAgIHUgPSAhMSwKICAgICAgICAgICAgICAgIGQgPSAhMSwKICAgICAgICAgICAgICAgIGggPSAhMDsKICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUpIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGYodCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBpLAogICAgICAgICAgICAgICAgICAgIG8gPSByOwogICAgICAgICAgICAgICAgcmV0dXJuIGkgPSByID0gdm9pZCAwLCBjID0gdCwgYSA9IGUuYXBwbHkobywgbikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYyA9IGUsIHMgPSBzZXRUaW1lb3V0KG0sIHQpLCB1ID8gZihlKSA6IGEKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUgLSBsOwogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbCB8fCBuID49IHQgfHwgbiA8IDAgfHwgZCAmJiBlIC0gYyA+PSBvCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG0oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGFvKCk7CiAgICAgICAgICAgICAgICBpZiAoZyhlKSkgcmV0dXJuIHYoZSk7CiAgICAgICAgICAgICAgICBzID0gc2V0VGltZW91dChtLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0IC0gKGUgLSBsKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA/IG9vKG4sIG8gLSAoZSAtIGMpKSA6IG4KICAgICAgICAgICAgICAgIH0oZSkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHYoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHMgPSB2b2lkIDAsIGggJiYgaSA/IGYoZSkgOiAoaSA9IHIgPSB2b2lkIDAsIGEpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHkoKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGFvKCksCiAgICAgICAgICAgICAgICAgICAgbiA9IGcoZSk7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGFyZ3VtZW50cywgciA9IHRoaXMsIGwgPSBlLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcykgcmV0dXJuIHAobCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHJldHVybiBzID0gc2V0VGltZW91dChtLCB0KSwgZihsKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyAmJiAocyA9IHNldFRpbWVvdXQobSwgdCkpLCBhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQgPSBsbyh0KSB8fCAwLCBzbyhuKSAmJiAodSA9ICEhbi5sZWFkaW5nLCBvID0gKGQgPSAibWF4V2FpdCIgaW4gbikgPyBybyhsbyhuLm1heFdhaXQpIHx8IDAsIHQpIDogbywgaCA9ICJ0cmFpbGluZyIgaW4gbiA/ICEhbi50cmFpbGluZyA6IGgpLCB5LmNhbmNlbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdm9pZCAwICE9PSBzICYmIGNsZWFyVGltZW91dChzKSwgYyA9IDAsIGkgPSBsID0gciA9IHMgPSB2b2lkIDAKICAgICAgICAgICAgfSwgeS5mbHVzaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcyA/IGEgOiB2KGFvKCkpCiAgICAgICAgICAgIH0sIHkKICAgICAgICB9LAogICAgICAgIHVvID0gL15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sCiAgICAgICAgaG8gPSAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiBlICYmIGUuT2JqZWN0ID09PSBPYmplY3QgJiYgZSwKICAgICAgICBmbyA9ICJvYmplY3QiID09IHR5cGVvZiBzZWxmICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmLAogICAgICAgIHBvID0gaG8gfHwgZm8gfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKSwKICAgICAgICBnbyA9IEFycmF5LnByb3RvdHlwZSwKICAgICAgICBtbyA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICB2byA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgeW8gPSBwb1siX19jb3JlLWpzX3NoYXJlZF9fIl0sCiAgICAgICAgYm8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSAvW14uXSskLy5leGVjKHlvICYmIHlvLmtleXMgJiYgeW8ua2V5cy5JRV9QUk9UTyB8fCAiIik7CiAgICAgICAgICAgIHJldHVybiBlID8gIlN5bWJvbChzcmMpXzEuIiArIGUgOiAiIgogICAgICAgIH0oKSwKICAgICAgICB3byA9IG1vLnRvU3RyaW5nLAogICAgICAgIHhvID0gdm8uaGFzT3duUHJvcGVydHksCiAgICAgICAgX28gPSB2by50b1N0cmluZywKICAgICAgICBTbyA9IFJlZ0V4cCgiXiIgKyB3by5jYWxsKHhvKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywgIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAiJDEuKj8iKSArICIkIiksCiAgICAgICAgQ28gPSBnby5zcGxpY2UsCiAgICAgICAga28gPSBJbyhwbywgIk1hcCIpLAogICAgICAgIFRvID0gSW8oT2JqZWN0LCAiY3JlYXRlIik7CgogICAgZnVuY3Rpb24gQW8oZSkgewogICAgICAgIHZhciB0ID0gLTEsCiAgICAgICAgICAgIG4gPSBlID8gZS5sZW5ndGggOiAwOwogICAgICAgIGZvciAodGhpcy5jbGVhcigpOyArK3QgPCBuOykgewogICAgICAgICAgICB2YXIgaSA9IGVbdF07CiAgICAgICAgICAgIHRoaXMuc2V0KGlbMF0sIGlbMV0pCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIEVvKGUpIHsKICAgICAgICB2YXIgdCA9IC0xLAogICAgICAgICAgICBuID0gZSA/IGUubGVuZ3RoIDogMDsKICAgICAgICBmb3IgKHRoaXMuY2xlYXIoKTsgKyt0IDwgbjspIHsKICAgICAgICAgICAgdmFyIGkgPSBlW3RdOwogICAgICAgICAgICB0aGlzLnNldChpWzBdLCBpWzFdKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBEbyhlKSB7CiAgICAgICAgdmFyIHQgPSAtMSwKICAgICAgICAgICAgbiA9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgZm9yICh0aGlzLmNsZWFyKCk7ICsrdCA8IG47KSB7CiAgICAgICAgICAgIHZhciBpID0gZVt0XTsKICAgICAgICAgICAgdGhpcy5zZXQoaVswXSwgaVsxXSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gT28oZSwgdCkgewogICAgICAgIGZvciAodmFyIG4sIGksIHIgPSBlLmxlbmd0aDsgci0tOykKICAgICAgICAgICAgaWYgKChuID0gZVtyXVswXSkgPT09IChpID0gdCkgfHwgbiAhPSBuICYmIGkgIT0gaSkgcmV0dXJuIHI7CiAgICAgICAgcmV0dXJuIC0xCiAgICB9CgogICAgZnVuY3Rpb24gTW8oZSwgdCkgewogICAgICAgIHZhciBuLCBpLCByID0gZS5fX2RhdGFfXzsKICAgICAgICByZXR1cm4gKCJzdHJpbmciID09IChpID0gdHlwZW9mKG4gPSB0KSkgfHwgIm51bWJlciIgPT0gaSB8fCAic3ltYm9sIiA9PSBpIHx8ICJib29sZWFuIiA9PSBpID8gIl9fcHJvdG9fXyIgIT09IG4gOiBudWxsID09PSBuKSA/IHJbInN0cmluZyIgPT0gdHlwZW9mIHQgPyAic3RyaW5nIiA6ICJoYXNoIl0gOiByLm1hcAogICAgfQoKICAgIGZ1bmN0aW9uIElvKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHZvaWQgMCA6IGVbdF0KICAgICAgICB9KGUsIHQpOwogICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAhKCFQbyhlKSB8fCAodCA9IGUsIGJvICYmIGJvIGluIHQpKSAmJiAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBQbyhlKSA/IF9vLmNhbGwoZSkgOiAiIjsKICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBGdW5jdGlvbl0iID09IHQgfHwgIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIiA9PSB0CiAgICAgICAgICAgIH0oZSkgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAhMTsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS50b1N0cmluZykgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB0ID0gISEoZSArICIiKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgIH0oZSkgPyBTbyA6IHVvKS50ZXN0KGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd28uY2FsbChlKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyAiIgogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgfShlKSk7CiAgICAgICAgICAgIHZhciB0CiAgICAgICAgfShuKSA/IG4gOiB2b2lkIDAKICAgIH0KCiAgICBmdW5jdGlvbiBMbyhlLCB0KSB7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIGUgfHwgdCAmJiAiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7CiAgICAgICAgdmFyIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGkgPSBhcmd1bWVudHMsCiAgICAgICAgICAgICAgICByID0gdCA/IHQuYXBwbHkodGhpcywgaSkgOiBpWzBdLAogICAgICAgICAgICAgICAgbyA9IG4uY2FjaGU7CiAgICAgICAgICAgIGlmIChvLmhhcyhyKSkgcmV0dXJuIG8uZ2V0KHIpOwogICAgICAgICAgICB2YXIgYSA9IGUuYXBwbHkodGhpcywgaSk7CiAgICAgICAgICAgIHJldHVybiBuLmNhY2hlID0gby5zZXQociwgYSksIGEKICAgICAgICB9OwogICAgICAgIHJldHVybiBuLmNhY2hlID0gbmV3KExvLkNhY2hlIHx8IERvKSwgbgogICAgfQoKICAgIGZ1bmN0aW9uIFBvKGUpIHsKICAgICAgICB2YXIgdCA9IHR5cGVvZiBlOwogICAgICAgIHJldHVybiAhIWUgJiYgKCJvYmplY3QiID09IHQgfHwgImZ1bmN0aW9uIiA9PSB0KQogICAgfQogICAgQW8ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5fX2RhdGFfXyA9IFRvID8gVG8obnVsbCkgOiB7fQogICAgfSwgQW8ucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5oYXMoZSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19bZV0KICAgIH0sIEFvLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLl9fZGF0YV9fOwogICAgICAgIGlmIChUbykgewogICAgICAgICAgICB2YXIgbiA9IHRbZV07CiAgICAgICAgICAgIHJldHVybiAiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIgPT09IG4gPyB2b2lkIDAgOiBuCiAgICAgICAgfQogICAgICAgIHJldHVybiB4by5jYWxsKHQsIGUpID8gdFtlXSA6IHZvaWQgMAogICAgfSwgQW8ucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX187CiAgICAgICAgcmV0dXJuIFRvID8gdm9pZCAwICE9PSB0W2VdIDogeG8uY2FsbCh0LCBlKQogICAgfSwgQW8ucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFfX1tlXSA9IFRvICYmIHZvaWQgMCA9PT0gdCA/ICJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiA6IHQsIHRoaXMKICAgIH0sIEVvLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX19kYXRhX18gPSBbXQogICAgfSwgRW8ucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXMuX19kYXRhX18sCiAgICAgICAgICAgIG4gPSBPbyh0LCBlKTsKICAgICAgICByZXR1cm4gIShuIDwgMCB8fCAobiA9PSB0Lmxlbmd0aCAtIDEgPyB0LnBvcCgpIDogQ28uY2FsbCh0LCBuLCAxKSwgMCkpCiAgICB9LCBFby5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0ID0gdGhpcy5fX2RhdGFfXywKICAgICAgICAgICAgbiA9IE9vKHQsIGUpOwogICAgICAgIHJldHVybiBuIDwgMCA/IHZvaWQgMCA6IHRbbl1bMV0KICAgIH0sIEVvLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIE9vKHRoaXMuX19kYXRhX18sIGUpID4gLTEKICAgIH0sIEVvLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4gPSB0aGlzLl9fZGF0YV9fLAogICAgICAgICAgICBpID0gT28obiwgZSk7CiAgICAgICAgcmV0dXJuIGkgPCAwID8gbi5wdXNoKFtlLCB0XSkgOiBuW2ldWzFdID0gdCwgdGhpcwogICAgfSwgRG8ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5fX2RhdGFfXyA9IHsKICAgICAgICAgICAgaGFzaDogbmV3IEFvLAogICAgICAgICAgICBtYXA6IG5ldyhrbyB8fCBFbyksCiAgICAgICAgICAgIHN0cmluZzogbmV3IEFvCiAgICAgICAgfQogICAgfSwgRG8ucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gTW8odGhpcywgZSkuZGVsZXRlKGUpCiAgICB9LCBEby5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBNbyh0aGlzLCBlKS5nZXQoZSkKICAgIH0sIERvLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIE1vKHRoaXMsIGUpLmhhcyhlKQogICAgfSwgRG8ucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gTW8odGhpcywgZSkuc2V0KGUsIHQpLCB0aGlzCiAgICB9LCBMby5DYWNoZSA9IERvOwogICAgdmFyIGpvLCBObyA9IExvLAogICAgICAgIEZvID0gW10sCiAgICAgICAgUm8gPSAiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiI7CiAgICAhIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLkJPUkRFUl9CT1ggPSAiYm9yZGVyLWJveCIsIGUuQ09OVEVOVF9CT1ggPSAiY29udGVudC1ib3giLCBlLkRFVklDRV9QSVhFTF9DT05URU5UX0JPWCA9ICJkZXZpY2UtcGl4ZWwtY29udGVudC1ib3giCiAgICB9KGpvIHx8IChqbyA9IHt9KSk7CiAgICB2YXIgJG8sIHpvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShlKQogICAgICAgIH0sCiAgICAgICAgSG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHRoaXMuaW5saW5lU2l6ZSA9IGUsIHRoaXMuYmxvY2tTaXplID0gdCwgem8odGhpcykKICAgICAgICB9LAogICAgICAgIEJvID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMueCA9IGUsIHRoaXMueSA9IHQsIHRoaXMud2lkdGggPSBuLCB0aGlzLmhlaWdodCA9IGksIHRoaXMudG9wID0gdGhpcy55LCB0aGlzLmxlZnQgPSB0aGlzLngsIHRoaXMuYm90dG9tID0gdGhpcy50b3AgKyB0aGlzLmhlaWdodCwgdGhpcy5yaWdodCA9IHRoaXMubGVmdCArIHRoaXMud2lkdGgsIHpvKHRoaXMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB4OiBlLngsCiAgICAgICAgICAgICAgICAgICAgeTogZS55LAogICAgICAgICAgICAgICAgICAgIHRvcDogZS50b3AsCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGUucmlnaHQsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlLmJvdHRvbSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLmhlaWdodAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBlLmZyb21SZWN0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHQueCwgdC55LCB0LndpZHRoLCB0LmhlaWdodCkKICAgICAgICAgICAgfSwgZQogICAgICAgIH0oKSwKICAgICAgICBXbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50ICYmICJnZXRCQm94IiBpbiBlCiAgICAgICAgfSwKICAgICAgICBxbyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKFdvKGUpKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZ2V0QkJveCgpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0LndpZHRoLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LmhlaWdodDsKICAgICAgICAgICAgICAgIHJldHVybiAhbiAmJiAhaQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciByID0gZSwKICAgICAgICAgICAgICAgIG8gPSByLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgYSA9IHIub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICByZXR1cm4gIShvIHx8IGEgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkKICAgICAgICB9LAogICAgICAgIFVvID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbjsKICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFbGVtZW50KSByZXR1cm4gITA7CiAgICAgICAgICAgIHZhciBpID0gbnVsbCA9PT0gKG4gPSBudWxsID09PSAodCA9IGUpIHx8IHZvaWQgMCA9PT0gdCA/IHZvaWQgMCA6IHQub3duZXJEb2N1bWVudCkgfHwgdm9pZCAwID09PSBuID8gdm9pZCAwIDogbi5kZWZhdWx0VmlldzsKICAgICAgICAgICAgcmV0dXJuICEhKGkgJiYgZSBpbnN0YW5jZW9mIGkuRWxlbWVudCkKICAgICAgICB9LAogICAgICAgIFZvID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHt9LAogICAgICAgIFlvID0gbmV3IFdlYWtNYXAsCiAgICAgICAgWG8gPSAvYXV0b3xzY3JvbGwvLAogICAgICAgIEdvID0gL150Ynx2ZXJ0aWNhbC8sCiAgICAgICAgS28gPSAvbXNpZXx0cmlkZW50L2kudGVzdChWby5uYXZpZ2F0b3IgJiYgVm8ubmF2aWdhdG9yLnVzZXJBZ2VudCksCiAgICAgICAgUW8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGUgfHwgIjAiKQogICAgICAgIH0sCiAgICAgICAgWm8gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSAwKSwgdm9pZCAwID09PSB0ICYmICh0ID0gMCksIHZvaWQgMCA9PT0gbiAmJiAobiA9ICExKSwgbmV3IEhvKChuID8gdCA6IGUpIHx8IDAsIChuID8gZSA6IHQpIHx8IDApCiAgICAgICAgfSwKICAgICAgICBKbyA9IHpvKHsKICAgICAgICAgICAgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogWm8oKSwKICAgICAgICAgICAgYm9yZGVyQm94U2l6ZTogWm8oKSwKICAgICAgICAgICAgY29udGVudEJveFNpemU6IFpvKCksCiAgICAgICAgICAgIGNvbnRlbnRSZWN0OiBuZXcgQm8oMCwgMCwgMCwgMCkKICAgICAgICB9KSwKICAgICAgICBlYSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKSwgWW8uaGFzKGUpICYmICF0KSByZXR1cm4gWW8uZ2V0KGUpOwogICAgICAgICAgICBpZiAocW8oZSkpIHJldHVybiBZby5zZXQoZSwgSm8pLCBKbzsKICAgICAgICAgICAgdmFyIG4gPSBnZXRDb21wdXRlZFN0eWxlKGUpLAogICAgICAgICAgICAgICAgaSA9IFdvKGUpICYmIGUub3duZXJTVkdFbGVtZW50ICYmIGUuZ2V0QkJveCgpLAogICAgICAgICAgICAgICAgciA9ICFLbyAmJiAiYm9yZGVyLWJveCIgPT09IG4uYm94U2l6aW5nLAogICAgICAgICAgICAgICAgbyA9IEdvLnRlc3Qobi53cml0aW5nTW9kZSB8fCAiIiksCiAgICAgICAgICAgICAgICBhID0gIWkgJiYgWG8udGVzdChuLm92ZXJmbG93WSB8fCAiIiksCiAgICAgICAgICAgICAgICBzID0gIWkgJiYgWG8udGVzdChuLm92ZXJmbG93WCB8fCAiIiksCiAgICAgICAgICAgICAgICBsID0gaSA/IDAgOiBRbyhuLnBhZGRpbmdUb3ApLAogICAgICAgICAgICAgICAgYyA9IGkgPyAwIDogUW8obi5wYWRkaW5nUmlnaHQpLAogICAgICAgICAgICAgICAgdSA9IGkgPyAwIDogUW8obi5wYWRkaW5nQm90dG9tKSwKICAgICAgICAgICAgICAgIGQgPSBpID8gMCA6IFFvKG4ucGFkZGluZ0xlZnQpLAogICAgICAgICAgICAgICAgaCA9IGkgPyAwIDogUW8obi5ib3JkZXJUb3BXaWR0aCksCiAgICAgICAgICAgICAgICBmID0gaSA/IDAgOiBRbyhuLmJvcmRlclJpZ2h0V2lkdGgpLAogICAgICAgICAgICAgICAgcCA9IGkgPyAwIDogUW8obi5ib3JkZXJCb3R0b21XaWR0aCksCiAgICAgICAgICAgICAgICBnID0gZCArIGMsCiAgICAgICAgICAgICAgICBtID0gbCArIHUsCiAgICAgICAgICAgICAgICB2ID0gKGkgPyAwIDogUW8obi5ib3JkZXJMZWZ0V2lkdGgpKSArIGYsCiAgICAgICAgICAgICAgICB5ID0gaCArIHAsCiAgICAgICAgICAgICAgICBiID0gcyA/IGUub2Zmc2V0SGVpZ2h0IC0geSAtIGUuY2xpZW50SGVpZ2h0IDogMCwKICAgICAgICAgICAgICAgIHcgPSBhID8gZS5vZmZzZXRXaWR0aCAtIHYgLSBlLmNsaWVudFdpZHRoIDogMCwKICAgICAgICAgICAgICAgIHggPSByID8gZyArIHYgOiAwLAogICAgICAgICAgICAgICAgXyA9IHIgPyBtICsgeSA6IDAsCiAgICAgICAgICAgICAgICBTID0gaSA/IGkud2lkdGggOiBRbyhuLndpZHRoKSAtIHggLSB3LAogICAgICAgICAgICAgICAgQyA9IGkgPyBpLmhlaWdodCA6IFFvKG4uaGVpZ2h0KSAtIF8gLSBiLAogICAgICAgICAgICAgICAgayA9IFMgKyBnICsgdyArIHYsCiAgICAgICAgICAgICAgICBUID0gQyArIG0gKyBiICsgeSwKICAgICAgICAgICAgICAgIEEgPSB6byh7CiAgICAgICAgICAgICAgICAgICAgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogWm8oTWF0aC5yb3VuZChTICogZGV2aWNlUGl4ZWxSYXRpbyksIE1hdGgucm91bmQoQyAqIGRldmljZVBpeGVsUmF0aW8pLCBvKSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3hTaXplOiBabyhrLCBULCBvKSwKICAgICAgICAgICAgICAgICAgICBjb250ZW50Qm94U2l6ZTogWm8oUywgQywgbyksCiAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Q6IG5ldyBCbyhkLCBsLCBTLCBDKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBZby5zZXQoZSwgQSksIEEKICAgICAgICB9LAogICAgICAgIHRhID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IGVhKGUsIG4pLAogICAgICAgICAgICAgICAgciA9IGkuYm9yZGVyQm94U2l6ZSwKICAgICAgICAgICAgICAgIG8gPSBpLmNvbnRlbnRCb3hTaXplLAogICAgICAgICAgICAgICAgYSA9IGkuZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTsKICAgICAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgICAgICBjYXNlIGpvLkRFVklDRV9QSVhFTF9DT05URU5UX0JPWDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTsKICAgICAgICAgICAgICAgIGNhc2Ugam8uQk9SREVSX0JPWDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbmEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZWEoZSk7CiAgICAgICAgICAgIHRoaXMudGFyZ2V0ID0gZSwgdGhpcy5jb250ZW50UmVjdCA9IHQuY29udGVudFJlY3QsIHRoaXMuYm9yZGVyQm94U2l6ZSA9IHpvKFt0LmJvcmRlckJveFNpemVdKSwgdGhpcy5jb250ZW50Qm94U2l6ZSA9IHpvKFt0LmNvbnRlbnRCb3hTaXplXSksIHRoaXMuZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZSA9IHpvKFt0LmRldmljZVBpeGVsQ29udGVudEJveFNpemVdKQogICAgICAgIH0sCiAgICAgICAgaWEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChxbyhlKSkgcmV0dXJuIDEgLyAwOwogICAgICAgICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IGUucGFyZW50Tm9kZTsgbjspIHQgKz0gMSwgbiA9IG4ucGFyZW50Tm9kZTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9LAogICAgICAgIHJhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gMSAvIDAsCiAgICAgICAgICAgICAgICB0ID0gW107CiAgICAgICAgICAgIEZvLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIGlmICgwICE9PSBuLmFjdGl2ZVRhcmdldHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBbXTsKICAgICAgICAgICAgICAgICAgICBuLmFjdGl2ZVRhcmdldHMuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG5ldyBuYSh0LnRhcmdldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gaWEodC50YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpLnB1c2gobiksIHQubGFzdFJlcG9ydGVkU2l6ZSA9IHRhKHQudGFyZ2V0LCB0Lm9ic2VydmVkQm94KSwgciA8IGUgJiYgKGUgPSByKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdC5wdXNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jYWxsYmFjay5jYWxsKG4ub2JzZXJ2ZXIsIGksIG4ub2JzZXJ2ZXIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmFjdGl2ZVRhcmdldHMuc3BsaWNlKDAsIG4uYWN0aXZlVGFyZ2V0cy5sZW5ndGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDAsIGkgPSB0OyBuIDwgaS5sZW5ndGg7IG4rKykoMCwgaVtuXSkoKTsKICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIG9hID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBGby5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICB0LmFjdGl2ZVRhcmdldHMuc3BsaWNlKDAsIHQuYWN0aXZlVGFyZ2V0cy5sZW5ndGgpLCB0LnNraXBwZWRUYXJnZXRzLnNwbGljZSgwLCB0LnNraXBwZWRUYXJnZXRzLmxlbmd0aCksIHQub2JzZXJ2YXRpb25UYXJnZXRzLmZvckVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICBuLmlzQWN0aXZlKCkgJiYgKGlhKG4udGFyZ2V0KSA+IGUgPyB0LmFjdGl2ZVRhcmdldHMucHVzaChuKSA6IHQuc2tpcHBlZFRhcmdldHMucHVzaChuKSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIGFhID0gW10sCiAgICAgICAgc2EgPSAwLAogICAgICAgIGxhID0gewogICAgICAgICAgICBhdHRyaWJ1dGVzOiAhMCwKICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogITAsCiAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgIHN1YnRyZWU6ICEwCiAgICAgICAgfSwKICAgICAgICBjYSA9IFsicmVzaXplIiwgImxvYWQiLCAidHJhbnNpdGlvbmVuZCIsICJhbmltYXRpb25lbmQiLCAiYW5pbWF0aW9uc3RhcnQiLCAiYW5pbWF0aW9uaXRlcmF0aW9uIiwgImtleXVwIiwgImtleWRvd24iLCAibW91c2V1cCIsICJtb3VzZWRvd24iLCAibW91c2VvdmVyIiwgIm1vdXNlb3V0IiwgImJsdXIiLCAiZm9jdXMiXSwKICAgICAgICB1YSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSAmJiAoZSA9IDApLCBEYXRlLm5vdygpICsgZQogICAgICAgIH0sCiAgICAgICAgZGEgPSAhMSwKICAgICAgICBoYSA9IG5ldyhmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIHRoaXMuc3RvcHBlZCA9ICEwLCB0aGlzLmxpc3RlbmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2NoZWR1bGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBlICYmIChlID0gMjUwKSwgIWRhKSB7CiAgICAgICAgICAgICAgICAgICAgZGEgPSAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSA9IHVhKGUpOwogICAgICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG9hKHQpOyBGby5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYWN0aXZlVGFyZ2V0cy5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7KSB0ID0gcmEoKSwgb2EodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGby5zb21lKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5za2lwcGVkVGFyZ2V0cy5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSAmJiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgRXJyb3JFdmVudCA/IGUgPSBuZXcgRXJyb3JFdmVudCgiZXJyb3IiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBSbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6ICgoZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpKS5pbml0RXZlbnQoImVycm9yIiwgITEsICExKSwgZS5tZXNzYWdlID0gUm8pLCB3aW5kb3cuZGlzcGF0Y2hFdmVudChlKSksIHQgPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYSA9ICExLCBlID0gaSAtIHVhKCksICFzYSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPyB0LnJ1bigxZTMpIDogZSA+IDAgPyB0LnJ1bihlKSA6IHQuc3RhcnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFhLnNwbGljZSgwKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5vYnNlcnZlKG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgJG8gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi50ZXh0Q29udGVudCA9ICIiICsgKHQgPyB0LS0gOiB0KyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWEucHVzaChlKSwgJG8oKQogICAgICAgICAgICAgICAgICAgICAgICB9KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShuKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpLCB0aGlzLnJ1bigpCiAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9ic2VydmVyICYmIGUub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCBsYSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keSA/IHQoKSA6IFZvLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB0KQogICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5zdG9wcGVkICYmICh0aGlzLnN0b3BwZWQgPSAhMSwgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMubGlzdGVuZXIpLCB0aGlzLm9ic2VydmUoKSwgY2EuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBWby5hZGRFdmVudExpc3RlbmVyKHQsIGUubGlzdGVuZXIsICEwKQogICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICB0aGlzLnN0b3BwZWQgfHwgKHRoaXMub2JzZXJ2ZXIgJiYgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksIGNhLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gVm8ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLmxpc3RlbmVyLCAhMCkKICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5zdG9wcGVkID0gITApCiAgICAgICAgICAgIH0sIGUKICAgICAgICB9KCkpLAogICAgICAgIGZhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAhc2EgJiYgZSA+IDAgJiYgaGEuc3RhcnQoKSwgIShzYSArPSBlKSAmJiBoYS5zdG9wKCkKICAgICAgICB9LAogICAgICAgIHBhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQgPSBlLCB0aGlzLm9ic2VydmVkQm94ID0gdCB8fCBqby5DT05URU5UX0JPWCwgdGhpcy5sYXN0UmVwb3J0ZWRTaXplID0gewogICAgICAgICAgICAgICAgICAgIGlubGluZVNpemU6IDAsCiAgICAgICAgICAgICAgICAgICAgYmxvY2tTaXplOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRhKHRoaXMudGFyZ2V0LCB0aGlzLm9ic2VydmVkQm94LCAhMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHRoaXMudGFyZ2V0LCBXbyhlKSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLnRhZ05hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiSU5QVVQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJpbWFnZSIgIT09IGUudHlwZSkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIlZJREVPIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiQVVESU8iOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJFTUJFRCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIk9CSkVDVCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIkNBTlZBUyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIklGUkFNRSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIklNRyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9KGUpIHx8ICJpbmxpbmUiICE9PSBnZXRDb21wdXRlZFN0eWxlKGUpLmRpc3BsYXkgfHwgKHRoaXMubGFzdFJlcG9ydGVkU2l6ZSA9IHQpLCB0aGlzLmxhc3RSZXBvcnRlZFNpemUuaW5saW5lU2l6ZSAhPT0gdC5pbmxpbmVTaXplIHx8IHRoaXMubGFzdFJlcG9ydGVkU2l6ZS5ibG9ja1NpemUgIT09IHQuYmxvY2tTaXplCiAgICAgICAgICAgIH0sIGUKICAgICAgICB9KCksCiAgICAgICAgZ2EgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0cyA9IFtdLCB0aGlzLnNraXBwZWRUYXJnZXRzID0gW10sIHRoaXMub2JzZXJ2YXRpb25UYXJnZXRzID0gW10sIHRoaXMub2JzZXJ2ZXIgPSBlLCB0aGlzLmNhbGxiYWNrID0gdAogICAgICAgIH0sCiAgICAgICAgbWEgPSBuZXcgV2Vha01hcCwKICAgICAgICB2YSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBlLmxlbmd0aDsgbiArPSAxKQogICAgICAgICAgICAgICAgaWYgKGVbbl0udGFyZ2V0ID09PSB0KSByZXR1cm4gbjsKICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgfSwKICAgICAgICB5YSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiBlKCkge30KICAgICAgICAgICAgcmV0dXJuIGUuY29ubmVjdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gbmV3IGdhKGUsIHQpOwogICAgICAgICAgICAgICAgbWEuc2V0KGUsIG4pCiAgICAgICAgICAgIH0sIGUub2JzZXJ2ZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gbWEuZ2V0KGUpLAogICAgICAgICAgICAgICAgICAgIHIgPSAwID09PSBpLm9ic2VydmF0aW9uVGFyZ2V0cy5sZW5ndGg7CiAgICAgICAgICAgICAgICB2YShpLm9ic2VydmF0aW9uVGFyZ2V0cywgdCkgPCAwICYmIChyICYmIEZvLnB1c2goaSksIGkub2JzZXJ2YXRpb25UYXJnZXRzLnB1c2gobmV3IHBhKHQsIG4gJiYgbi5ib3gpKSwgZmEoMSksIGhhLnNjaGVkdWxlKCkpCiAgICAgICAgICAgIH0sIGUudW5vYnNlcnZlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBtYS5nZXQoZSksCiAgICAgICAgICAgICAgICAgICAgaSA9IHZhKG4ub2JzZXJ2YXRpb25UYXJnZXRzLCB0KSwKICAgICAgICAgICAgICAgICAgICByID0gMSA9PT0gbi5vYnNlcnZhdGlvblRhcmdldHMubGVuZ3RoOwogICAgICAgICAgICAgICAgaSA+PSAwICYmIChyICYmIEZvLnNwbGljZShGby5pbmRleE9mKG4pLCAxKSwgbi5vYnNlcnZhdGlvblRhcmdldHMuc3BsaWNlKGksIDEpLCBmYSgtMSkpCiAgICAgICAgICAgIH0sIGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gbWEuZ2V0KGUpOwogICAgICAgICAgICAgICAgbi5vYnNlcnZhdGlvblRhcmdldHMuc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudW5vYnNlcnZlKGUsIG4udGFyZ2V0KQogICAgICAgICAgICAgICAgfSkpLCBuLmFjdGl2ZVRhcmdldHMuc3BsaWNlKDAsIG4uYWN0aXZlVGFyZ2V0cy5sZW5ndGgpCiAgICAgICAgICAgIH0sIGUKICAgICAgICB9KCksCiAgICAgICAgYmEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gZShlKSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gYXJndW1lbnRzLmxlbmd0aCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzaXplT2JzZXJ2ZXInOiAxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAwIHByZXNlbnQuIik7CiAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzaXplT2JzZXJ2ZXInOiBUaGUgY2FsbGJhY2sgcHJvdmlkZWQgYXMgcGFyYW1ldGVyIDEgaXMgbm90IGEgZnVuY3Rpb24uIik7CiAgICAgICAgICAgICAgICB5YS5jb25uZWN0KHRoaXMsIGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gYXJndW1lbnRzLmxlbmd0aCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGV4ZWN1dGUgJ29ic2VydmUnIG9uICdSZXNpemVPYnNlcnZlcic6IDEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4iKTsKICAgICAgICAgICAgICAgIGlmICghVW8oZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdvYnNlcnZlJyBvbiAnUmVzaXplT2JzZXJ2ZXInOiBwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnRWxlbWVudCIpOwogICAgICAgICAgICAgICAgeWEub2JzZXJ2ZSh0aGlzLCBlLCB0KQogICAgICAgICAgICB9LCBlLnByb3RvdHlwZS51bm9ic2VydmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gYXJndW1lbnRzLmxlbmd0aCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGV4ZWN1dGUgJ3Vub2JzZXJ2ZScgb24gJ1Jlc2l6ZU9ic2VydmVyJzogMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LiIpOwogICAgICAgICAgICAgICAgaWYgKCFVbyhlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmFpbGVkIHRvIGV4ZWN1dGUgJ3Vub2JzZXJ2ZScgb24gJ1Jlc2l6ZU9ic2VydmVyJzogcGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgJ0VsZW1lbnQiKTsKICAgICAgICAgICAgICAgIHlhLnVub2JzZXJ2ZSh0aGlzLCBlKQogICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5kaXNjb25uZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB5YS5kaXNjb25uZWN0KHRoaXMpCiAgICAgICAgICAgIH0sIGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXIgKCkgeyBbcG9seWZpbGwgY29kZV0gfSIKICAgICAgICAgICAgfSwgZQogICAgICAgIH0oKSwKICAgICAgICB3YSA9IG8uVHlwZUVycm9yLAogICAgICAgIHhhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odCwgbiwgaSwgcikgewogICAgICAgICAgICAgICAgY2Uobik7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHcodCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHN0KG8pLAogICAgICAgICAgICAgICAgICAgIHMgPSBwdChvKSwKICAgICAgICAgICAgICAgICAgICBsID0gZSA/IHMgLSAxIDogMCwKICAgICAgICAgICAgICAgICAgICBjID0gZSA/IC0xIDogMTsKICAgICAgICAgICAgICAgIGlmIChpIDwgMikKICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIGluIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBhW2xdLCBsICs9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsICs9IGMsIGUgPyBsIDwgMCA6IHMgPD0gbCkgdGhyb3cgd2EoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoOyBlID8gbCA+PSAwIDogcyA+IGw7IGwgKz0gYykgbCBpbiBhICYmIChyID0gbihyLCBhW2xdLCBsLCBvKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBfYSA9IHsKICAgICAgICAgICAgbGVmdDogeGEoITEpLAogICAgICAgICAgICByaWdodDogeGEoITApCiAgICAgICAgfSwKICAgICAgICBTYSA9ICJwcm9jZXNzIiA9PSBZZShvLnByb2Nlc3MpLAogICAgICAgIENhID0gX2EubGVmdCwKICAgICAgICBrYSA9IE10KCJyZWR1Y2UiKTsKICAgIGhuKHsKICAgICAgICB0YXJnZXQ6ICJBcnJheSIsCiAgICAgICAgcHJvdG86ICEwLAogICAgICAgIGZvcmNlZDogIWthIHx8ICFTYSAmJiBqID4gNzkgJiYgaiA8IDgzCiAgICB9LCB7CiAgICAgICAgcmVkdWNlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgcmV0dXJuIENhKHRoaXMsIGUsIHQsIHQgPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKQogICAgICAgIH0KICAgIH0pOwogICAgdmFyIFRhLCBBYSwgRWEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBlZSh0aGlzKSwKICAgICAgICAgICAgICAgIHQgPSAiIjsKICAgICAgICAgICAgcmV0dXJuIGUuaGFzSW5kaWNlcyAmJiAodCArPSAiZCIpLCBlLmdsb2JhbCAmJiAodCArPSAiZyIpLCBlLmlnbm9yZUNhc2UgJiYgKHQgKz0gImkiKSwgZS5tdWx0aWxpbmUgJiYgKHQgKz0gIm0iKSwgZS5kb3RBbGwgJiYgKHQgKz0gInMiKSwgZS51bmljb2RlICYmICh0ICs9ICJ1IiksIGUuc3RpY2t5ICYmICh0ICs9ICJ5IiksIHQKICAgICAgICB9LAogICAgICAgIERhID0gby5SZWdFeHAsCiAgICAgICAgT2EgPSB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBEYSgiYSIsICJ5Iik7CiAgICAgICAgICAgIHJldHVybiBlLmxhc3RJbmRleCA9IDIsIG51bGwgIT0gZS5leGVjKCJhYmNkIikKICAgICAgICB9KSksCiAgICAgICAgTWEgPSBPYSB8fCB1KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICFEYSgiYSIsICJ5Iikuc3RpY2t5CiAgICAgICAgfSkpLAogICAgICAgIElhID0gewogICAgICAgICAgICBCUk9LRU5fQ0FSRVQ6IE9hIHx8IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBEYSgiXnIiLCAiZ3kiKTsKICAgICAgICAgICAgICAgIHJldHVybiBlLmxhc3RJbmRleCA9IDIsIG51bGwgIT0gZS5leGVjKCJzdHIiKQogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIE1JU1NFRF9TVElDS1k6IE1hLAogICAgICAgICAgICBVTlNVUFBPUlRFRF9ZOiBPYQogICAgICAgIH0sCiAgICAgICAgTGEgPSBvLlJlZ0V4cCwKICAgICAgICBQYSA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IExhKCIuIiwgInMiKTsKICAgICAgICAgICAgcmV0dXJuICEoZS5kb3RBbGwgJiYgZS5leGVjKCJcbiIpICYmICJzIiA9PT0gZS5mbGFncykKICAgICAgICB9KSksCiAgICAgICAgamEgPSBvLlJlZ0V4cCwKICAgICAgICBOYSA9IHUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IGphKCIoPzxhPmIpIiwgImciKTsKICAgICAgICAgICAgcmV0dXJuICJiIiAhPT0gZS5leGVjKCJiIikuZ3JvdXBzLmEgfHwgImJjIiAhPT0gImIiLnJlcGxhY2UoZSwgIiQ8YT5jIikKICAgICAgICB9KSksCiAgICAgICAgRmEgPSBCZS5nZXQsCiAgICAgICAgUmEgPSBjKCJuYXRpdmUtc3RyaW5nLXJlcGxhY2UiLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLAogICAgICAgICRhID0gUmVnRXhwLnByb3RvdHlwZS5leGVjLAogICAgICAgIHphID0gJGEsCiAgICAgICAgSGEgPSBtKCIiLmNoYXJBdCksCiAgICAgICAgQmEgPSBtKCIiLmluZGV4T2YpLAogICAgICAgIFdhID0gbSgiIi5yZXBsYWNlKSwKICAgICAgICBxYSA9IG0oIiIuc2xpY2UpLAogICAgICAgIFVhID0gKEFhID0gL2IqL2csIG5lKCRhLCBUYSA9IC9hLywgImEiKSwgbmUoJGEsIEFhLCAiYSIpLCAwICE9PSBUYS5sYXN0SW5kZXggfHwgMCAhPT0gQWEubGFzdEluZGV4KSwKICAgICAgICBWYSA9IElhLkJST0tFTl9DQVJFVCwKICAgICAgICBZYSA9IHZvaWQgMCAhPT0gLygpPz8vLmV4ZWMoIiIpWzFdOwogICAgKFVhIHx8IFlhIHx8IFZhIHx8IFBhIHx8IE5hKSAmJiAoemEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwgPSB0aGlzLAogICAgICAgICAgICBjID0gRmEobCksCiAgICAgICAgICAgIHUgPSBwbihlKSwKICAgICAgICAgICAgZCA9IGMucmF3OwogICAgICAgIGlmIChkKSByZXR1cm4gZC5sYXN0SW5kZXggPSBsLmxhc3RJbmRleCwgdCA9IG5lKHphLCBkLCB1KSwgbC5sYXN0SW5kZXggPSBkLmxhc3RJbmRleCwgdDsKICAgICAgICB2YXIgaCA9IGMuZ3JvdXBzLAogICAgICAgICAgICBmID0gVmEgJiYgbC5zdGlja3ksCiAgICAgICAgICAgIHAgPSBuZShFYSwgbCksCiAgICAgICAgICAgIGcgPSBsLnNvdXJjZSwKICAgICAgICAgICAgbSA9IDAsCiAgICAgICAgICAgIHYgPSB1OwogICAgICAgIGlmIChmICYmIChwID0gV2EocCwgInkiLCAiIiksIC0xID09PSBCYShwLCAiZyIpICYmIChwICs9ICJnIiksIHYgPSBxYSh1LCBsLmxhc3RJbmRleCksIGwubGFzdEluZGV4ID4gMCAmJiAoIWwubXVsdGlsaW5lIHx8IGwubXVsdGlsaW5lICYmICJcbiIgIT09IEhhKHUsIGwubGFzdEluZGV4IC0gMSkpICYmIChnID0gIig/OiAiICsgZyArICIpIiwgdiA9ICIgIiArIHYsIG0rKyksIG4gPSBuZXcgUmVnRXhwKCJeKD86IiArIGcgKyAiKSIsIHApKSwgWWEgJiYgKG4gPSBuZXcgUmVnRXhwKCJeIiArIGcgKyAiJCg/IVxccykiLCBwKSksIFVhICYmIChpID0gbC5sYXN0SW5kZXgpLCByID0gbmUoJGEsIGYgPyBuIDogbCwgdiksIGYgPyByID8gKHIuaW5wdXQgPSBxYShyLmlucHV0LCBtKSwgclswXSA9IHFhKHJbMF0sIG0pLCByLmluZGV4ID0gbC5sYXN0SW5kZXgsIGwubGFzdEluZGV4ICs9IHJbMF0ubGVuZ3RoKSA6IGwubGFzdEluZGV4ID0gMCA6IFVhICYmIHIgJiYgKGwubGFzdEluZGV4ID0gbC5nbG9iYWwgPyByLmluZGV4ICsgclswXS5sZW5ndGggOiBpKSwgWWEgJiYgciAmJiByLmxlbmd0aCA+IDEgJiYgbmUoUmEsIHJbMF0sIG4sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAobyA9IDE7IG8gPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgbysrKSB2b2lkIDAgPT09IGFyZ3VtZW50c1tvXSAmJiAocltvXSA9IHZvaWQgMCkKICAgICAgICAgICAgfSkpLCByICYmIGgpCiAgICAgICAgICAgIGZvciAoci5ncm91cHMgPSBhID0gcW4obnVsbCksIG8gPSAwOyBvIDwgaC5sZW5ndGg7IG8rKykgYVsocyA9IGhbb10pWzBdXSA9IHJbc1sxXV07CiAgICAgICAgcmV0dXJuIHIKICAgIH0pOwogICAgdmFyIFhhID0gemE7CiAgICBobih7CiAgICAgICAgdGFyZ2V0OiAiUmVnRXhwIiwKICAgICAgICBwcm90bzogITAsCiAgICAgICAgZm9yY2VkOiAvLi8uZXhlYyAhPT0gWGEKICAgIH0sIHsKICAgICAgICBleGVjOiBYYQogICAgfSk7CiAgICB2YXIgR2EgPSBCKCJzcGVjaWVzIiksCiAgICAgICAgS2EgPSBSZWdFeHAucHJvdG90eXBlLAogICAgICAgIFFhID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciA9IEIoZSksCiAgICAgICAgICAgICAgICBvID0gIXUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbcl0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDcKICAgICAgICAgICAgICAgICAgICB9LCA3ICE9ICIiIFtlXSh0KQogICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgYSA9IG8gJiYgIXUoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAvYS87CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzcGxpdCIgPT09IGUgJiYgKChuID0ge30pLmNvbnN0cnVjdG9yID0ge30sIG4uY29uc3RydWN0b3JbR2FdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfSwgbi5mbGFncyA9ICIiLCBuW3JdID0gLy4vIFtyXSksIG4uZXhlYyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9ICEwLCBudWxsCiAgICAgICAgICAgICAgICAgICAgfSwgbltyXSgiIiksICF0CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGlmICghbyB8fCAhYSB8fCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IG0oLy4vIFtyXSksCiAgICAgICAgICAgICAgICAgICAgbCA9IHQociwgIiIgW2VdLCAoZnVuY3Rpb24oZSwgdCwgbiwgaSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG0oZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5leGVjOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbCA9PT0gWGEgfHwgbCA9PT0gS2EuZXhlYyA/IG8gJiYgIXIgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzKHQsIG4sIGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhKG4sIHQsIGkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lOiAhMQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgcWUoU3RyaW5nLnByb3RvdHlwZSwgZSwgbFswXSksIHFlKEthLCByLCBsWzFdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgJiYgd2UoS2Fbcl0sICJzaGFtIiwgITApCiAgICAgICAgfSwKICAgICAgICBaYSA9IE1pLmNoYXJBdCwKICAgICAgICBKYSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIHQgKyAobiA/IFphKGUsIHQpLmxlbmd0aCA6IDEpCiAgICAgICAgfSwKICAgICAgICBlcyA9IG8uVHlwZUVycm9yLAogICAgICAgIHRzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGUuZXhlYzsKICAgICAgICAgICAgaWYgKEEobikpIHsKICAgICAgICAgICAgICAgIHZhciBpID0gbmUobiwgZSwgdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPT0gaSAmJiBlZShpKSwgaQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgiUmVnRXhwIiA9PT0gWWUoZSkpIHJldHVybiBuZShYYSwgZSwgdCk7CiAgICAgICAgICAgIHRocm93IGVzKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyIikKICAgICAgICB9OwogICAgUWEoIm1hdGNoIiwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gW2Z1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB5KHRoaXMpLAogICAgICAgICAgICAgICAgaSA9IG51bGwgPT0gdCA/IHZvaWQgMCA6IHVlKHQsIGUpOwogICAgICAgICAgICByZXR1cm4gaSA/IG5lKGksIHQsIG4pIDogbmV3IFJlZ0V4cCh0KVtlXShwbihuKSkKICAgICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpID0gZWUodGhpcyksCiAgICAgICAgICAgICAgICByID0gcG4oZSksCiAgICAgICAgICAgICAgICBvID0gbih0LCBpLCByKTsKICAgICAgICAgICAgaWYgKG8uZG9uZSkgcmV0dXJuIG8udmFsdWU7CiAgICAgICAgICAgIGlmICghaS5nbG9iYWwpIHJldHVybiB0cyhpLCByKTsKICAgICAgICAgICAgdmFyIGEgPSBpLnVuaWNvZGU7CiAgICAgICAgICAgIGkubGFzdEluZGV4ID0gMDsKICAgICAgICAgICAgZm9yICh2YXIgcywgbCA9IFtdLCBjID0gMDsgbnVsbCAhPT0gKHMgPSB0cyhpLCByKSk7KSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IHBuKHNbMF0pOwogICAgICAgICAgICAgICAgbFtjXSA9IHUsICIiID09PSB1ICYmIChpLmxhc3RJbmRleCA9IEphKHIsIGZ0KGkubGFzdEluZGV4KSwgYSkpLCBjKysKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMCA9PT0gYyA/IG51bGwgOiBsCiAgICAgICAgfV0KICAgIH0pKTsKICAgIHZhciBucyA9IENlLkVYSVNUUywKICAgICAgICBpcyA9IHllLmYsCiAgICAgICAgcnMgPSBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgb3MgPSBtKHJzLnRvU3RyaW5nKSwKICAgICAgICBhcyA9IC9mdW5jdGlvblxiKD86XHN8XC9cKltcU1xzXSo/XCpcL3xcL1wvW15cblxyXSpbXG5ccl0rKSooW15ccygvXSopLywKICAgICAgICBzcyA9IG0oYXMuZXhlYyk7CiAgICBVICYmICFucyAmJiBpcyhycywgIm5hbWUiLCB7CiAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNzKGFzLCBvcyh0aGlzKSlbMV0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHZhciBscyA9IEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICBjcyA9IGxzLmFwcGx5LAogICAgICAgIHVzID0gbHMuY2FsbCwKICAgICAgICBkcyA9ICJvYmplY3QiID09IHR5cGVvZiBSZWZsZWN0ICYmIFJlZmxlY3QuYXBwbHkgfHwgKGQgPyB1cy5iaW5kKGNzKSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdXMuYXBwbHkoY3MsIGFyZ3VtZW50cykKICAgICAgICB9KSwKICAgICAgICBocyA9IE1hdGguZmxvb3IsCiAgICAgICAgZnMgPSBtKCIiLmNoYXJBdCksCiAgICAgICAgcHMgPSBtKCIiLnJlcGxhY2UpLAogICAgICAgIGdzID0gbSgiIi5zbGljZSksCiAgICAgICAgbXMgPSAvXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZywKICAgICAgICB2cyA9IC9cJChbJCYnYF18XGR7MSwyfSkvZywKICAgICAgICB5cyA9IGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIsIG8pIHsKICAgICAgICAgICAgdmFyIGEgPSBuICsgZS5sZW5ndGgsCiAgICAgICAgICAgICAgICBzID0gaS5sZW5ndGgsCiAgICAgICAgICAgICAgICBsID0gdnM7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHIgJiYgKHIgPSB3KHIpLCBsID0gbXMpLCBwcyhvLCBsLCAoZnVuY3Rpb24obywgbCkgewogICAgICAgICAgICAgICAgdmFyIGM7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZzKGwsIDApKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiJCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiJCI7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiJiI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImAiOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3ModCwgMCwgbik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiJyI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBncyh0LCBhKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICI8IjoKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHJbZ3MobCwgMSwgLTEpXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSArbDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT09IHUpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodSA+IHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gaHModSAvIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBkID8gbyA6IGQgPD0gcyA/IHZvaWQgMCA9PT0gaVtkIC0gMV0gPyBmcyhsLCAxKSA6IGlbZCAtIDFdICsgZnMobCwgMSkgOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGlbdSAtIDFdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBjID8gIiIgOiBjCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgYnMgPSBCKCJyZXBsYWNlIiksCiAgICAgICAgd3MgPSBNYXRoLm1heCwKICAgICAgICB4cyA9IE1hdGgubWluLAogICAgICAgIF9zID0gbShbXS5jb25jYXQpLAogICAgICAgIFNzID0gbShbXS5wdXNoKSwKICAgICAgICBDcyA9IG0oIiIuaW5kZXhPZiksCiAgICAgICAga3MgPSBtKCIiLnNsaWNlKSwKICAgICAgICBUcyA9ICIkMCIgPT09ICJhIi5yZXBsYWNlKC8uLywgIiQwIiksCiAgICAgICAgQXMgPSAhIS8uLyBbYnNdICYmICIiID09PSAvLi8gW2JzXSgiYSIsICIkMCIpOwogICAgUWEoInJlcGxhY2UiLCAoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBpID0gQXMgPyAiJCIgOiAiJDAiOwogICAgICAgIHJldHVybiBbZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICB2YXIgaSA9IHkodGhpcyksCiAgICAgICAgICAgICAgICByID0gbnVsbCA9PSBlID8gdm9pZCAwIDogdWUoZSwgYnMpOwogICAgICAgICAgICByZXR1cm4gciA/IG5lKHIsIGUsIGksIG4pIDogbmUodCwgcG4oaSksIGUsIG4pCiAgICAgICAgfSwgZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICB2YXIgbyA9IGVlKHRoaXMpLAogICAgICAgICAgICAgICAgYSA9IHBuKGUpOwogICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgLTEgPT09IENzKHIsIGkpICYmIC0xID09PSBDcyhyLCAiJDwiKSkgewogICAgICAgICAgICAgICAgdmFyIHMgPSBuKHQsIG8sIGEsIHIpOwogICAgICAgICAgICAgICAgaWYgKHMuZG9uZSkgcmV0dXJuIHMudmFsdWUKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbCA9IEEocik7CiAgICAgICAgICAgIGwgfHwgKHIgPSBwbihyKSk7CiAgICAgICAgICAgIHZhciBjID0gby5nbG9iYWw7CiAgICAgICAgICAgIGlmIChjKSB7CiAgICAgICAgICAgICAgICB2YXIgdSA9IG8udW5pY29kZTsKICAgICAgICAgICAgICAgIG8ubGFzdEluZGV4ID0gMAogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGQgPSBbXTs7KSB7CiAgICAgICAgICAgICAgICB2YXIgaCA9IHRzKG8sIGEpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGgpIGJyZWFrOwogICAgICAgICAgICAgICAgaWYgKFNzKGQsIGgpLCAhYykgYnJlYWs7CiAgICAgICAgICAgICAgICAiIiA9PT0gcG4oaFswXSkgJiYgKG8ubGFzdEluZGV4ID0gSmEoYSwgZnQoby5sYXN0SW5kZXgpLCB1KSkKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKHZhciBmLCBwID0gIiIsIGcgPSAwLCBtID0gMDsgbSA8IGQubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHYgPSBwbigoaCA9IGRbbV0pWzBdKSwgeSA9IHdzKHhzKGR0KGguaW5kZXgpLCBhLmxlbmd0aCksIDApLCBiID0gW10sIHcgPSAxOyB3IDwgaC5sZW5ndGg7IHcrKykgU3MoYiwgdm9pZCAwID09PSAoZiA9IGhbd10pID8gZiA6IFN0cmluZyhmKSk7CiAgICAgICAgICAgICAgICB2YXIgeCA9IGguZ3JvdXBzOwogICAgICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgXyA9IF9zKFt2XSwgYiwgeSwgYSk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSB4ICYmIFNzKF8sIHgpOwogICAgICAgICAgICAgICAgICAgIHZhciBTID0gcG4oZHMociwgdm9pZCAwLCBfKSkKICAgICAgICAgICAgICAgIH0gZWxzZSBTID0geXModiwgYSwgeSwgYiwgeCwgcik7CiAgICAgICAgICAgICAgICB5ID49IGcgJiYgKHAgKz0ga3MoYSwgZywgeSkgKyBTLCBnID0geSArIHYubGVuZ3RoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBwICsga3MoYSwgZykKICAgICAgICB9XQogICAgfSksICEhdSgoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSAvLi87CiAgICAgICAgcmV0dXJuIGUuZXhlYyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFtdOwogICAgICAgICAgICByZXR1cm4gZS5ncm91cHMgPSB7CiAgICAgICAgICAgICAgICBhOiAiNyIKICAgICAgICAgICAgfSwgZQogICAgICAgIH0sICI3IiAhPT0gIiIucmVwbGFjZShlLCAiJDxhPiIpCiAgICB9KSkgfHwgIVRzIHx8IEFzKTsKICAgIHZhciBFcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGUsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdC5uYW1lLm1hdGNoKC9kYXRhLXNpbXBsZWJhci0oLispLyk7CiAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IG5bMV0ucmVwbGFjZSgvXFcrKC4pL2csIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQudG9VcHBlckNhc2UoKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgc3dpdGNoICh0LnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAidHJ1ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGVbaV0gPSAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmFsc2UiOgogICAgICAgICAgICAgICAgICAgICAgICBlW2ldID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2Ugdm9pZCAwOgogICAgICAgICAgICAgICAgICAgICAgICBlW2ldID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGVbaV0gPSB0LnZhbHVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9KSwge30pCiAgICB9OwoKICAgIGZ1bmN0aW9uIERzKGUpIHsKICAgICAgICByZXR1cm4gZSAmJiBlLm93bmVyRG9jdW1lbnQgJiYgZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ID8gZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IDogd2luZG93CiAgICB9CgogICAgZnVuY3Rpb24gT3MoZSkgewogICAgICAgIHJldHVybiBlICYmIGUub3duZXJEb2N1bWVudCA/IGUub3duZXJEb2N1bWVudCA6IGRvY3VtZW50CiAgICB9CiAgICB2YXIgTXMgPSBudWxsLAogICAgICAgIElzID0gbnVsbDsKCiAgICBmdW5jdGlvbiBMcyhlKSB7CiAgICAgICAgaWYgKG51bGwgPT09IE1zKSB7CiAgICAgICAgICAgIHZhciB0ID0gT3MoZSk7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQpIHJldHVybiBNcyA9IDA7CiAgICAgICAgICAgIHZhciBuID0gdC5ib2R5LAogICAgICAgICAgICAgICAgaSA9IHQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIGkuY2xhc3NMaXN0LmFkZCgic2ltcGxlYmFyLWhpZGUtc2Nyb2xsYmFyIiksIG4uYXBwZW5kQ2hpbGQoaSk7CiAgICAgICAgICAgIHZhciByID0gaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDsKICAgICAgICAgICAgbi5yZW1vdmVDaGlsZChpKSwgTXMgPSByCiAgICAgICAgfQogICAgICAgIHJldHVybiBNcwogICAgfQogICAgTnQgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIChmdW5jdGlvbigpIHsKICAgICAgICBJcyAhPT0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gJiYgKElzID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8sIE1zID0gbnVsbCkKICAgIH0pKTsKICAgIHZhciBQcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZ1bmN0aW9uIGUodCwgbikgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIHRoaXMub25TY3JvbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gRHMoaS5lbCk7CiAgICAgICAgICAgICAgICBpLnNjcm9sbFhUaWNraW5nIHx8IChlLnJlcXVlc3RBbmltYXRpb25GcmFtZShpLnNjcm9sbFgpLCBpLnNjcm9sbFhUaWNraW5nID0gITApLCBpLnNjcm9sbFlUaWNraW5nIHx8IChlLnJlcXVlc3RBbmltYXRpb25GcmFtZShpLnNjcm9sbFkpLCBpLnNjcm9sbFlUaWNraW5nID0gITApCiAgICAgICAgICAgIH0sIHRoaXMuc2Nyb2xsWCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaS5heGlzLnguaXNPdmVyZmxvd2luZyAmJiAoaS5zaG93U2Nyb2xsYmFyKCJ4IiksIGkucG9zaXRpb25TY3JvbGxiYXIoIngiKSksIGkuc2Nyb2xsWFRpY2tpbmcgPSAhMQogICAgICAgICAgICB9LCB0aGlzLnNjcm9sbFkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuYXhpcy55LmlzT3ZlcmZsb3dpbmcgJiYgKGkuc2hvd1Njcm9sbGJhcigieSIpLCBpLnBvc2l0aW9uU2Nyb2xsYmFyKCJ5IikpLCBpLnNjcm9sbFlUaWNraW5nID0gITEKICAgICAgICAgICAgfSwgdGhpcy5vbk1vdXNlRW50ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkuc2hvd1Njcm9sbGJhcigieCIpLCBpLnNob3dTY3JvbGxiYXIoInkiKQogICAgICAgICAgICB9LCB0aGlzLm9uTW91c2VNb3ZlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaS5tb3VzZVggPSBlLmNsaWVudFgsIGkubW91c2VZID0gZS5jbGllbnRZLCAoaS5heGlzLnguaXNPdmVyZmxvd2luZyB8fCBpLmF4aXMueC5mb3JjZVZpc2libGUpICYmIGkub25Nb3VzZU1vdmVGb3JBeGlzKCJ4IiksIChpLmF4aXMueS5pc092ZXJmbG93aW5nIHx8IGkuYXhpcy55LmZvcmNlVmlzaWJsZSkgJiYgaS5vbk1vdXNlTW92ZUZvckF4aXMoInkiKQogICAgICAgICAgICB9LCB0aGlzLm9uTW91c2VMZWF2ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaS5vbk1vdXNlTW92ZS5jYW5jZWwoKSwgKGkuYXhpcy54LmlzT3ZlcmZsb3dpbmcgfHwgaS5heGlzLnguZm9yY2VWaXNpYmxlKSAmJiBpLm9uTW91c2VMZWF2ZUZvckF4aXMoIngiKSwgKGkuYXhpcy55LmlzT3ZlcmZsb3dpbmcgfHwgaS5heGlzLnkuZm9yY2VWaXNpYmxlKSAmJiBpLm9uTW91c2VMZWF2ZUZvckF4aXMoInkiKSwgaS5tb3VzZVggPSAtMSwgaS5tb3VzZVkgPSAtMQogICAgICAgICAgICB9LCB0aGlzLm9uV2luZG93UmVzaXplID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpLnNjcm9sbGJhcldpZHRoID0gaS5nZXRTY3JvbGxiYXJXaWR0aCgpLCBpLmhpZGVOYXRpdmVTY3JvbGxiYXIoKQogICAgICAgICAgICB9LCB0aGlzLmhpZGVTY3JvbGxiYXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpLmF4aXMueC50cmFjay5yZWN0ID0gaS5heGlzLngudHJhY2suZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGkuYXhpcy55LnRyYWNrLnJlY3QgPSBpLmF4aXMueS50cmFjay5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgaS5pc1dpdGhpbkJvdW5kcyhpLmF4aXMueS50cmFjay5yZWN0KSB8fCAoaS5heGlzLnkuc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5yZW1vdmUoaS5jbGFzc05hbWVzLnZpc2libGUpLCBpLmF4aXMueS5pc1Zpc2libGUgPSAhMSksIGkuaXNXaXRoaW5Cb3VuZHMoaS5heGlzLngudHJhY2sucmVjdCkgfHwgKGkuYXhpcy54LnNjcm9sbGJhci5lbC5jbGFzc0xpc3QucmVtb3ZlKGkuY2xhc3NOYW1lcy52aXNpYmxlKSwgaS5heGlzLnguaXNWaXNpYmxlID0gITEpCiAgICAgICAgICAgIH0sIHRoaXMub25Qb2ludGVyRXZlbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbjsKICAgICAgICAgICAgICAgIGkuYXhpcy54LnRyYWNrLnJlY3QgPSBpLmF4aXMueC50cmFjay5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgaS5heGlzLnkudHJhY2sucmVjdCA9IGkuYXhpcy55LnRyYWNrLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCAoaS5heGlzLnguaXNPdmVyZmxvd2luZyB8fCBpLmF4aXMueC5mb3JjZVZpc2libGUpICYmICh0ID0gaS5pc1dpdGhpbkJvdW5kcyhpLmF4aXMueC50cmFjay5yZWN0KSksIChpLmF4aXMueS5pc092ZXJmbG93aW5nIHx8IGkuYXhpcy55LmZvcmNlVmlzaWJsZSkgJiYgKG4gPSBpLmlzV2l0aGluQm91bmRzKGkuYXhpcy55LnRyYWNrLnJlY3QpKSwgKHQgfHwgbikgJiYgKGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSwgIm1vdXNlZG93biIgPT09IGUudHlwZSAmJiAodCAmJiAoaS5heGlzLnguc2Nyb2xsYmFyLnJlY3QgPSBpLmF4aXMueC5zY3JvbGxiYXIuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIGkuaXNXaXRoaW5Cb3VuZHMoaS5heGlzLnguc2Nyb2xsYmFyLnJlY3QpID8gaS5vbkRyYWdTdGFydChlLCAieCIpIDogaS5vblRyYWNrQ2xpY2soZSwgIngiKSksIG4gJiYgKGkuYXhpcy55LnNjcm9sbGJhci5yZWN0ID0gaS5heGlzLnkuc2Nyb2xsYmFyLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBpLmlzV2l0aGluQm91bmRzKGkuYXhpcy55LnNjcm9sbGJhci5yZWN0KSA/IGkub25EcmFnU3RhcnQoZSwgInkiKSA6IGkub25UcmFja0NsaWNrKGUsICJ5IikpKSkKICAgICAgICAgICAgfSwgdGhpcy5kcmFnID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBpLmF4aXNbaS5kcmFnZ2VkQXhpc10udHJhY2ssCiAgICAgICAgICAgICAgICAgICAgciA9IG4ucmVjdFtpLmF4aXNbaS5kcmFnZ2VkQXhpc10uc2l6ZUF0dHJdLAogICAgICAgICAgICAgICAgICAgIG8gPSBpLmF4aXNbaS5kcmFnZ2VkQXhpc10uc2Nyb2xsYmFyLAogICAgICAgICAgICAgICAgICAgIGEgPSBpLmNvbnRlbnRXcmFwcGVyRWxbaS5heGlzW2kuZHJhZ2dlZEF4aXNdLnNjcm9sbFNpemVBdHRyXSwKICAgICAgICAgICAgICAgICAgICBzID0gcGFyc2VJbnQoaS5lbFN0eWxlc1tpLmF4aXNbaS5kcmFnZ2VkQXhpc10uc2l6ZUF0dHJdLCAxMCk7CiAgICAgICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCksIHQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICB2YXIgbCA9ICgoInkiID09PSBpLmRyYWdnZWRBeGlzID8gdC5wYWdlWSA6IHQucGFnZVgpIC0gbi5yZWN0W2kuYXhpc1tpLmRyYWdnZWRBeGlzXS5vZmZzZXRBdHRyXSAtIGkuYXhpc1tpLmRyYWdnZWRBeGlzXS5kcmFnT2Zmc2V0KSAvIChyIC0gby5zaXplKSAqIChhIC0gcyk7CiAgICAgICAgICAgICAgICAieCIgPT09IGkuZHJhZ2dlZEF4aXMgJiYgKGwgPSBpLmlzUnRsICYmIGUuZ2V0UnRsSGVscGVycygpLmlzUnRsU2Nyb2xsYmFySW52ZXJ0ZWQgPyBsIC0gKHIgKyBvLnNpemUpIDogbCwgbCA9IGkuaXNSdGwgJiYgZS5nZXRSdGxIZWxwZXJzKCkuaXNSdGxTY3JvbGxpbmdJbnZlcnRlZCA/IC1sIDogbCksIGkuY29udGVudFdyYXBwZXJFbFtpLmF4aXNbaS5kcmFnZ2VkQXhpc10uc2Nyb2xsT2Zmc2V0QXR0cl0gPSBsCiAgICAgICAgICAgIH0sIHRoaXMub25FbmREcmFnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBPcyhpLmVsKSwKICAgICAgICAgICAgICAgICAgICBuID0gRHMoaS5lbCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCksIGkuZWwuY2xhc3NMaXN0LnJlbW92ZShpLmNsYXNzTmFtZXMuZHJhZ2dpbmcpLCB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIGkuZHJhZywgITApLCB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCBpLm9uRW5kRHJhZywgITApLCBpLnJlbW92ZVByZXZlbnRDbGlja0lkID0gbi5zZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaS5wcmV2ZW50Q2xpY2ssICEwKSwgdC5yZW1vdmVFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIGkucHJldmVudENsaWNrLCAhMCksIGkucmVtb3ZlUHJldmVudENsaWNrSWQgPSBudWxsCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwgdGhpcy5wcmV2ZW50Q2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgfSwgdGhpcy5lbCA9IHQsIHRoaXMubWluU2Nyb2xsYmFyV2lkdGggPSAyMCwgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZS5kZWZhdWx0T3B0aW9ucywgbiksIHRoaXMuY2xhc3NOYW1lcyA9IE9iamVjdC5hc3NpZ24oe30sIGUuZGVmYXVsdE9wdGlvbnMuY2xhc3NOYW1lcywgdGhpcy5vcHRpb25zLmNsYXNzTmFtZXMpLCB0aGlzLmF4aXMgPSB7CiAgICAgICAgICAgICAgICB4OiB7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0QXR0cjogInNjcm9sbExlZnQiLAogICAgICAgICAgICAgICAgICAgIHNpemVBdHRyOiAid2lkdGgiLAogICAgICAgICAgICAgICAgICAgIHNjcm9sbFNpemVBdHRyOiAic2Nyb2xsV2lkdGgiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldFNpemVBdHRyOiAib2Zmc2V0V2lkdGgiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldEF0dHI6ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd0F0dHI6ICJvdmVyZmxvd1giLAogICAgICAgICAgICAgICAgICAgIGRyYWdPZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICAgICAgaXNPdmVyZmxvd2luZzogITAsCiAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICBmb3JjZVZpc2libGU6ICExLAogICAgICAgICAgICAgICAgICAgIHRyYWNrOiB7fSwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IHt9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeTogewogICAgICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldEF0dHI6ICJzY3JvbGxUb3AiLAogICAgICAgICAgICAgICAgICAgIHNpemVBdHRyOiAiaGVpZ2h0IiwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxTaXplQXR0cjogInNjcm9sbEhlaWdodCIsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0U2l6ZUF0dHI6ICJvZmZzZXRIZWlnaHQiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldEF0dHI6ICJ0b3AiLAogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93QXR0cjogIm92ZXJmbG93WSIsCiAgICAgICAgICAgICAgICAgICAgZHJhZ09mZnNldDogMCwKICAgICAgICAgICAgICAgICAgICBpc092ZXJmbG93aW5nOiAhMCwKICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6ICExLAogICAgICAgICAgICAgICAgICAgIGZvcmNlVmlzaWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgdHJhY2s6IHt9LAogICAgICAgICAgICAgICAgICAgIHNjcm9sbGJhcjoge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgdGhpcy5yZW1vdmVQcmV2ZW50Q2xpY2tJZCA9IG51bGwsIGUuaW5zdGFuY2VzLmhhcyh0aGlzLmVsKSB8fCAodGhpcy5yZWNhbGN1bGF0ZSA9IFhyKHRoaXMucmVjYWxjdWxhdGUuYmluZCh0aGlzKSwgNjQpLCB0aGlzLm9uTW91c2VNb3ZlID0gWHIodGhpcy5vbk1vdXNlTW92ZS5iaW5kKHRoaXMpLCA2NCksIHRoaXMuaGlkZVNjcm9sbGJhcnMgPSBjbyh0aGlzLmhpZGVTY3JvbGxiYXJzLmJpbmQodGhpcyksIHRoaXMub3B0aW9ucy50aW1lb3V0KSwgdGhpcy5vbldpbmRvd1Jlc2l6ZSA9IGNvKHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKSwgNjQsIHsKICAgICAgICAgICAgICAgIGxlYWRpbmc6ICEwCiAgICAgICAgICAgIH0pLCBlLmdldFJ0bEhlbHBlcnMgPSBObyhlLmdldFJ0bEhlbHBlcnMpLCB0aGlzLmluaXQoKSkKICAgICAgICB9CiAgICAgICAgZS5nZXRSdGxIZWxwZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgIHQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImhzLWR1bW15LXNjcm9sbGJhci1zaXplIj48ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMCU7IHdpZHRoOiAyMDAlOyBtYXJnaW46IDEwcHggMDsiPjwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgIHZhciBuID0gdC5maXJzdEVsZW1lbnRDaGlsZDsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKTsKICAgICAgICAgICAgdmFyIGkgPSBuLmZpcnN0RWxlbWVudENoaWxkOwogICAgICAgICAgICBuLnNjcm9sbExlZnQgPSAwOwogICAgICAgICAgICB2YXIgciA9IGUuZ2V0T2Zmc2V0KG4pLAogICAgICAgICAgICAgICAgbyA9IGUuZ2V0T2Zmc2V0KGkpOwogICAgICAgICAgICBuLnNjcm9sbExlZnQgPSA5OTk7CiAgICAgICAgICAgIHZhciBhID0gZS5nZXRPZmZzZXQoaSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBpc1J0bFNjcm9sbGluZ0ludmVydGVkOiByLmxlZnQgIT09IG8ubGVmdCAmJiBvLmxlZnQgLSBhLmxlZnQgIT0gMCwKICAgICAgICAgICAgICAgIGlzUnRsU2Nyb2xsYmFySW52ZXJ0ZWQ6IHIubGVmdCAhPT0gby5sZWZ0CiAgICAgICAgICAgIH0KICAgICAgICB9LCBlLmdldE9mZnNldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgbiA9IE9zKGUpLAogICAgICAgICAgICAgICAgaSA9IERzKGUpOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdG9wOiB0LnRvcCArIChpLnBhZ2VZT2Zmc2V0IHx8IG4uZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCksCiAgICAgICAgICAgICAgICBsZWZ0OiB0LmxlZnQgKyAoaS5wYWdlWE9mZnNldCB8fCBuLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0KQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB2YXIgdCA9IGUucHJvdG90eXBlOwogICAgICAgIHJldHVybiB0LmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZS5pbnN0YW5jZXMuc2V0KHRoaXMuZWwsIHRoaXMpLCBOdCAmJiAodGhpcy5pbml0RE9NKCksIHRoaXMuc2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMoKSwgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKSwgdGhpcy5yZWNhbGN1bGF0ZSgpLCB0aGlzLmluaXRMaXN0ZW5lcnMoKSkKICAgICAgICB9LCB0LmluaXRET00gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICBpZiAoQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHRoaXMuZWwuY2hpbGRyZW4sIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKGUuY2xhc3NOYW1lcy53cmFwcGVyKQogICAgICAgICAgICAgICAgfSkpLmxlbmd0aCkgdGhpcy53cmFwcGVyRWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLndyYXBwZXIpLCB0aGlzLmNvbnRlbnRXcmFwcGVyRWwgPSB0aGlzLm9wdGlvbnMuc2Nyb2xsYWJsZU5vZGUgfHwgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCIuIiArIHRoaXMuY2xhc3NOYW1lcy5jb250ZW50V3JhcHBlciksIHRoaXMuY29udGVudEVsID0gdGhpcy5vcHRpb25zLmNvbnRlbnROb2RlIHx8IHRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIgKyB0aGlzLmNsYXNzTmFtZXMuY29udGVudEVsKSwgdGhpcy5vZmZzZXRFbCA9IHRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIgKyB0aGlzLmNsYXNzTmFtZXMub2Zmc2V0KSwgdGhpcy5tYXNrRWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLm1hc2spLCB0aGlzLnBsYWNlaG9sZGVyRWwgPSB0aGlzLmZpbmRDaGlsZCh0aGlzLndyYXBwZXJFbCwgIi4iICsgdGhpcy5jbGFzc05hbWVzLnBsYWNlaG9sZGVyKSwgdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLmhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbCksIHRoaXMuaGVpZ2h0QXV0b09ic2VydmVyRWwgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLmhlaWdodEF1dG9PYnNlcnZlckVsKSwgdGhpcy5heGlzLngudHJhY2suZWwgPSB0aGlzLmZpbmRDaGlsZCh0aGlzLmVsLCAiLiIgKyB0aGlzLmNsYXNzTmFtZXMudHJhY2sgKyAiLiIgKyB0aGlzLmNsYXNzTmFtZXMuaG9yaXpvbnRhbCksIHRoaXMuYXhpcy55LnRyYWNrLmVsID0gdGhpcy5maW5kQ2hpbGQodGhpcy5lbCwgIi4iICsgdGhpcy5jbGFzc05hbWVzLnRyYWNrICsgIi4iICsgdGhpcy5jbGFzc05hbWVzLnZlcnRpY2FsKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKHRoaXMud3JhcHBlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHRoaXMuY29udGVudFdyYXBwZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCB0aGlzLm9mZnNldEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHRoaXMubWFza0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHRoaXMuY29udGVudEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHRoaXMucGxhY2Vob2xkZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCB0aGlzLmhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCB0aGlzLmhlaWdodEF1dG9PYnNlcnZlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHRoaXMud3JhcHBlckVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLndyYXBwZXIpLCB0aGlzLmNvbnRlbnRXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuY29udGVudFdyYXBwZXIpLCB0aGlzLm9mZnNldEVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLm9mZnNldCksIHRoaXMubWFza0VsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLm1hc2spLCB0aGlzLmNvbnRlbnRFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5jb250ZW50RWwpLCB0aGlzLnBsYWNlaG9sZGVyRWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMucGxhY2Vob2xkZXIpLCB0aGlzLmhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwpLCB0aGlzLmhlaWdodEF1dG9PYnNlcnZlckVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLmhlaWdodEF1dG9PYnNlcnZlckVsKTsgdGhpcy5lbC5maXJzdENoaWxkOykgdGhpcy5jb250ZW50RWwuYXBwZW5kQ2hpbGQodGhpcy5lbC5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFdyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbCksIHRoaXMub2Zmc2V0RWwuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50V3JhcHBlckVsKSwgdGhpcy5tYXNrRWwuYXBwZW5kQ2hpbGQodGhpcy5vZmZzZXRFbCksIHRoaXMuaGVpZ2h0QXV0b09ic2VydmVyV3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMuaGVpZ2h0QXV0b09ic2VydmVyRWwpLCB0aGlzLndyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbCksIHRoaXMud3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMubWFza0VsKSwgdGhpcy53cmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5wbGFjZWhvbGRlckVsKSwgdGhpcy5lbC5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXJFbCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIXRoaXMuYXhpcy54LnRyYWNrLmVsIHx8ICF0aGlzLmF4aXMueS50cmFjay5lbCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgICAgICAgICBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICB0LmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnRyYWNrKSwgbi5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5zY3JvbGxiYXIpLCB0LmFwcGVuZENoaWxkKG4pLCB0aGlzLmF4aXMueC50cmFjay5lbCA9IHQuY2xvbmVOb2RlKCEwKSwgdGhpcy5heGlzLngudHJhY2suZWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuaG9yaXpvbnRhbCksIHRoaXMuYXhpcy55LnRyYWNrLmVsID0gdC5jbG9uZU5vZGUoITApLCB0aGlzLmF4aXMueS50cmFjay5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy52ZXJ0aWNhbCksIHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy5heGlzLngudHJhY2suZWwpLCB0aGlzLmVsLmFwcGVuZENoaWxkKHRoaXMuYXhpcy55LnRyYWNrLmVsKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuYXhpcy54LnNjcm9sbGJhci5lbCA9IHRoaXMuYXhpcy54LnRyYWNrLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLnNjcm9sbGJhciksIHRoaXMuYXhpcy55LnNjcm9sbGJhci5lbCA9IHRoaXMuYXhpcy55LnRyYWNrLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iICsgdGhpcy5jbGFzc05hbWVzLnNjcm9sbGJhciksIHRoaXMub3B0aW9ucy5hdXRvSGlkZSB8fCAodGhpcy5heGlzLnguc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnZpc2libGUpLCB0aGlzLmF4aXMueS5zY3JvbGxiYXIuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMudmlzaWJsZSkpLCB0aGlzLmVsLnNldEF0dHJpYnV0ZSgiZGF0YS1zaW1wbGViYXIiLCAiaW5pdCIpCiAgICAgICAgfSwgdC5zZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMub3B0aW9ucy5hcmlhTGFiZWwgfHwgInNjcm9sbGFibGUgY29udGVudCI7CiAgICAgICAgICAgIHRoaXMuY29udGVudFdyYXBwZXJFbC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwgIjAiKSwgdGhpcy5jb250ZW50V3JhcHBlckVsLnNldEF0dHJpYnV0ZSgicm9sZSIsICJyZWdpb24iKSwgdGhpcy5jb250ZW50V3JhcHBlckVsLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGUpCiAgICAgICAgfSwgdC5pbml0TGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgIHQgPSBEcyh0aGlzLmVsKTsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9IaWRlICYmIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMub25Nb3VzZUVudGVyKSwgWyJtb3VzZWRvd24iLCAiY2xpY2siLCAiZGJsY2xpY2siXS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBlLmVsLmFkZEV2ZW50TGlzdGVuZXIodCwgZS5vblBvaW50ZXJFdmVudCwgITApCiAgICAgICAgICAgIH0pKSwgWyJ0b3VjaHN0YXJ0IiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSJdLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuZWwuYWRkRXZlbnRMaXN0ZW5lcih0LCBlLm9uUG9pbnRlckV2ZW50LCB7CiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITAsCiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uTW91c2VNb3ZlKSwgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5vbk1vdXNlTGVhdmUpLCB0aGlzLmNvbnRlbnRXcmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5vblNjcm9sbCksIHQuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcy5vbldpbmRvd1Jlc2l6ZSk7CiAgICAgICAgICAgIHZhciBuID0gITEsCiAgICAgICAgICAgICAgICBpID0gdC5SZXNpemVPYnNlcnZlciB8fCBiYTsKICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBpKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4gJiYgZS5yZWNhbGN1bGF0ZSgpCiAgICAgICAgICAgIH0pKSwgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWwpLCB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5jb250ZW50RWwpLCB0LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuID0gITAKICAgICAgICAgICAgfSkpLCB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgdC5NdXRhdGlvbk9ic2VydmVyKHRoaXMucmVjYWxjdWxhdGUpLCB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnRFbCwgewogICAgICAgICAgICAgICAgY2hpbGRMaXN0OiAhMCwKICAgICAgICAgICAgICAgIHN1YnRyZWU6ICEwLAogICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogITAKICAgICAgICAgICAgfSkKICAgICAgICB9LCB0LnJlY2FsY3VsYXRlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gRHModGhpcy5lbCk7CiAgICAgICAgICAgIHRoaXMuZWxTdHlsZXMgPSBlLmdldENvbXB1dGVkU3R5bGUodGhpcy5lbCksIHRoaXMuaXNSdGwgPSAicnRsIiA9PT0gdGhpcy5lbFN0eWxlcy5kaXJlY3Rpb247CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJFbC5vZmZzZXRIZWlnaHQgPD0gMSwKICAgICAgICAgICAgICAgIG4gPSB0aGlzLmhlaWdodEF1dG9PYnNlcnZlckVsLm9mZnNldFdpZHRoIDw9IDEsCiAgICAgICAgICAgICAgICBpID0gdGhpcy5jb250ZW50RWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICByID0gdGhpcy5jb250ZW50V3JhcHBlckVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgbyA9IHRoaXMuZWxTdHlsZXMub3ZlcmZsb3dYLAogICAgICAgICAgICAgICAgYSA9IHRoaXMuZWxTdHlsZXMub3ZlcmZsb3dZOwogICAgICAgICAgICB0aGlzLmNvbnRlbnRFbC5zdHlsZS5wYWRkaW5nID0gdGhpcy5lbFN0eWxlcy5wYWRkaW5nVG9wICsgIiAiICsgdGhpcy5lbFN0eWxlcy5wYWRkaW5nUmlnaHQgKyAiICIgKyB0aGlzLmVsU3R5bGVzLnBhZGRpbmdCb3R0b20gKyAiICIgKyB0aGlzLmVsU3R5bGVzLnBhZGRpbmdMZWZ0LCB0aGlzLndyYXBwZXJFbC5zdHlsZS5tYXJnaW4gPSAiLSIgKyB0aGlzLmVsU3R5bGVzLnBhZGRpbmdUb3AgKyAiIC0iICsgdGhpcy5lbFN0eWxlcy5wYWRkaW5nUmlnaHQgKyAiIC0iICsgdGhpcy5lbFN0eWxlcy5wYWRkaW5nQm90dG9tICsgIiAtIiArIHRoaXMuZWxTdHlsZXMucGFkZGluZ0xlZnQ7CiAgICAgICAgICAgIHZhciBzID0gdGhpcy5jb250ZW50RWwuc2Nyb2xsSGVpZ2h0LAogICAgICAgICAgICAgICAgbCA9IHRoaXMuY29udGVudEVsLnNjcm9sbFdpZHRoOwogICAgICAgICAgICB0aGlzLmNvbnRlbnRXcmFwcGVyRWwuc3R5bGUuaGVpZ2h0ID0gdCA/ICJhdXRvIiA6ICIxMDAlIiwgdGhpcy5wbGFjZWhvbGRlckVsLnN0eWxlLndpZHRoID0gbiA/IGkgKyAicHgiIDogImF1dG8iLCB0aGlzLnBsYWNlaG9sZGVyRWwuc3R5bGUuaGVpZ2h0ID0gcyArICJweCI7CiAgICAgICAgICAgIHZhciBjID0gdGhpcy5jb250ZW50V3JhcHBlckVsLm9mZnNldEhlaWdodDsKICAgICAgICAgICAgdGhpcy5heGlzLnguaXNPdmVyZmxvd2luZyA9IGwgPiBpLCB0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nID0gcyA+IGMsIHRoaXMuYXhpcy54LmlzT3ZlcmZsb3dpbmcgPSAiaGlkZGVuIiAhPT0gbyAmJiB0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nLCB0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nID0gImhpZGRlbiIgIT09IGEgJiYgdGhpcy5heGlzLnkuaXNPdmVyZmxvd2luZywgdGhpcy5heGlzLnguZm9yY2VWaXNpYmxlID0gIngiID09PSB0aGlzLm9wdGlvbnMuZm9yY2VWaXNpYmxlIHx8ICEwID09PSB0aGlzLm9wdGlvbnMuZm9yY2VWaXNpYmxlLCB0aGlzLmF4aXMueS5mb3JjZVZpc2libGUgPSAieSIgPT09IHRoaXMub3B0aW9ucy5mb3JjZVZpc2libGUgfHwgITAgPT09IHRoaXMub3B0aW9ucy5mb3JjZVZpc2libGUsIHRoaXMuaGlkZU5hdGl2ZVNjcm9sbGJhcigpOwogICAgICAgICAgICB2YXIgdSA9IHRoaXMuYXhpcy54LmlzT3ZlcmZsb3dpbmcgPyB0aGlzLnNjcm9sbGJhcldpZHRoIDogMCwKICAgICAgICAgICAgICAgIGQgPSB0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nID8gdGhpcy5zY3JvbGxiYXJXaWR0aCA6IDA7CiAgICAgICAgICAgIHRoaXMuYXhpcy54LmlzT3ZlcmZsb3dpbmcgPSB0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nICYmIGwgPiByIC0gZCwgdGhpcy5heGlzLnkuaXNPdmVyZmxvd2luZyA9IHRoaXMuYXhpcy55LmlzT3ZlcmZsb3dpbmcgJiYgcyA+IGMgLSB1LCB0aGlzLmF4aXMueC5zY3JvbGxiYXIuc2l6ZSA9IHRoaXMuZ2V0U2Nyb2xsYmFyU2l6ZSgieCIpLCB0aGlzLmF4aXMueS5zY3JvbGxiYXIuc2l6ZSA9IHRoaXMuZ2V0U2Nyb2xsYmFyU2l6ZSgieSIpLCB0aGlzLmF4aXMueC5zY3JvbGxiYXIuZWwuc3R5bGUud2lkdGggPSB0aGlzLmF4aXMueC5zY3JvbGxiYXIuc2l6ZSArICJweCIsIHRoaXMuYXhpcy55LnNjcm9sbGJhci5lbC5zdHlsZS5oZWlnaHQgPSB0aGlzLmF4aXMueS5zY3JvbGxiYXIuc2l6ZSArICJweCIsIHRoaXMucG9zaXRpb25TY3JvbGxiYXIoIngiKSwgdGhpcy5wb3NpdGlvblNjcm9sbGJhcigieSIpLCB0aGlzLnRvZ2dsZVRyYWNrVmlzaWJpbGl0eSgieCIpLCB0aGlzLnRvZ2dsZVRyYWNrVmlzaWJpbGl0eSgieSIpCiAgICAgICAgfSwgdC5nZXRTY3JvbGxiYXJTaXplID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlICYmIChlID0gInkiKSwgIXRoaXMuYXhpc1tlXS5pc092ZXJmbG93aW5nKSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIHQsIG4gPSB0aGlzLmNvbnRlbnRFbFt0aGlzLmF4aXNbZV0uc2Nyb2xsU2l6ZUF0dHJdLAogICAgICAgICAgICAgICAgaSA9IHRoaXMuYXhpc1tlXS50cmFjay5lbFt0aGlzLmF4aXNbZV0ub2Zmc2V0U2l6ZUF0dHJdLAogICAgICAgICAgICAgICAgciA9IGkgLyBuOwogICAgICAgICAgICByZXR1cm4gdCA9IE1hdGgubWF4KH5+KHIgKiBpKSwgdGhpcy5vcHRpb25zLnNjcm9sbGJhck1pblNpemUpLCB0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyTWF4U2l6ZSAmJiAodCA9IE1hdGgubWluKHQsIHRoaXMub3B0aW9ucy5zY3JvbGxiYXJNYXhTaXplKSksIHQKICAgICAgICB9LCB0LnBvc2l0aW9uU2Nyb2xsYmFyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gInkiKSwgdGhpcy5heGlzW3RdLmlzT3ZlcmZsb3dpbmcpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5jb250ZW50V3JhcHBlckVsW3RoaXMuYXhpc1t0XS5zY3JvbGxTaXplQXR0cl0sCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuYXhpc1t0XS50cmFjay5lbFt0aGlzLmF4aXNbdF0ub2Zmc2V0U2l6ZUF0dHJdLAogICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCh0aGlzLmVsU3R5bGVzW3RoaXMuYXhpc1t0XS5zaXplQXR0cl0sIDEwKSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5heGlzW3RdLnNjcm9sbGJhciwKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5jb250ZW50V3JhcHBlckVsW3RoaXMuYXhpc1t0XS5zY3JvbGxPZmZzZXRBdHRyXSwKICAgICAgICAgICAgICAgICAgICBzID0gKGEgPSAieCIgPT09IHQgJiYgdGhpcy5pc1J0bCAmJiBlLmdldFJ0bEhlbHBlcnMoKS5pc1J0bFNjcm9sbGluZ0ludmVydGVkID8gLWEgOiBhKSAvIChuIC0gciksCiAgICAgICAgICAgICAgICAgICAgbCA9IH5+KChpIC0gby5zaXplKSAqIHMpOwogICAgICAgICAgICAgICAgbCA9ICJ4IiA9PT0gdCAmJiB0aGlzLmlzUnRsICYmIGUuZ2V0UnRsSGVscGVycygpLmlzUnRsU2Nyb2xsYmFySW52ZXJ0ZWQgPyBsICsgKGkgLSBvLnNpemUpIDogbCwgby5lbC5zdHlsZS50cmFuc2Zvcm0gPSAieCIgPT09IHQgPyAidHJhbnNsYXRlM2QoIiArIGwgKyAicHgsIDAsIDApIiA6ICJ0cmFuc2xhdGUzZCgwLCAiICsgbCArICJweCwgMCkiCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0LnRvZ2dsZVRyYWNrVmlzaWJpbGl0eSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gInkiKTsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmF4aXNbZV0udHJhY2suZWwsCiAgICAgICAgICAgICAgICBuID0gdGhpcy5heGlzW2VdLnNjcm9sbGJhci5lbDsKICAgICAgICAgICAgdGhpcy5heGlzW2VdLmlzT3ZlcmZsb3dpbmcgfHwgdGhpcy5heGlzW2VdLmZvcmNlVmlzaWJsZSA/ICh0LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSIsIHRoaXMuY29udGVudFdyYXBwZXJFbC5zdHlsZVt0aGlzLmF4aXNbZV0ub3ZlcmZsb3dBdHRyXSA9ICJzY3JvbGwiKSA6ICh0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIiwgdGhpcy5jb250ZW50V3JhcHBlckVsLnN0eWxlW3RoaXMuYXhpc1tlXS5vdmVyZmxvd0F0dHJdID0gImhpZGRlbiIpLCB0aGlzLmF4aXNbZV0uaXNPdmVyZmxvd2luZyA/IG4uc3R5bGUuZGlzcGxheSA9ICJibG9jayIgOiBuLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIKICAgICAgICB9LCB0LmhpZGVOYXRpdmVTY3JvbGxiYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5vZmZzZXRFbC5zdHlsZVt0aGlzLmlzUnRsID8gImxlZnQiIDogInJpZ2h0Il0gPSB0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nIHx8IHRoaXMuYXhpcy55LmZvcmNlVmlzaWJsZSA/ICItIiArIHRoaXMuc2Nyb2xsYmFyV2lkdGggKyAicHgiIDogMCwgdGhpcy5vZmZzZXRFbC5zdHlsZS5ib3R0b20gPSB0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nIHx8IHRoaXMuYXhpcy54LmZvcmNlVmlzaWJsZSA/ICItIiArIHRoaXMuc2Nyb2xsYmFyV2lkdGggKyAicHgiIDogMAogICAgICAgIH0sIHQub25Nb3VzZU1vdmVGb3JBeGlzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAieSIpLCB0aGlzLmF4aXNbZV0udHJhY2sucmVjdCA9IHRoaXMuYXhpc1tlXS50cmFjay5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgdGhpcy5heGlzW2VdLnNjcm9sbGJhci5yZWN0ID0gdGhpcy5heGlzW2VdLnNjcm9sbGJhci5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgdGhpcy5pc1dpdGhpbkJvdW5kcyh0aGlzLmF4aXNbZV0uc2Nyb2xsYmFyLnJlY3QpID8gdGhpcy5heGlzW2VdLnNjcm9sbGJhci5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5ob3ZlcikgOiB0aGlzLmF4aXNbZV0uc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc05hbWVzLmhvdmVyKSwgdGhpcy5pc1dpdGhpbkJvdW5kcyh0aGlzLmF4aXNbZV0udHJhY2sucmVjdCkgPyAodGhpcy5zaG93U2Nyb2xsYmFyKGUpLCB0aGlzLmF4aXNbZV0udHJhY2suZWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuaG92ZXIpKSA6IHRoaXMuYXhpc1tlXS50cmFjay5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5ob3ZlcikKICAgICAgICB9LCB0Lm9uTW91c2VMZWF2ZUZvckF4aXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICJ5IiksIHRoaXMuYXhpc1tlXS50cmFjay5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5ob3ZlciksIHRoaXMuYXhpc1tlXS5zY3JvbGxiYXIuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzTmFtZXMuaG92ZXIpCiAgICAgICAgfSwgdC5zaG93U2Nyb2xsYmFyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAieSIpOwogICAgICAgICAgICB2YXIgdCA9IHRoaXMuYXhpc1tlXS5zY3JvbGxiYXIuZWw7CiAgICAgICAgICAgIHRoaXMuYXhpc1tlXS5pc1Zpc2libGUgfHwgKHQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMudmlzaWJsZSksIHRoaXMuYXhpc1tlXS5pc1Zpc2libGUgPSAhMCksIHRoaXMub3B0aW9ucy5hdXRvSGlkZSAmJiB0aGlzLmhpZGVTY3JvbGxiYXJzKCkKICAgICAgICB9LCB0Lm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSAieSIpOwogICAgICAgICAgICB2YXIgbiA9IE9zKHRoaXMuZWwpLAogICAgICAgICAgICAgICAgaSA9IERzKHRoaXMuZWwpLAogICAgICAgICAgICAgICAgciA9IHRoaXMuYXhpc1t0XS5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICBvID0gInkiID09PSB0ID8gZS5wYWdlWSA6IGUucGFnZVg7CiAgICAgICAgICAgIHRoaXMuYXhpc1t0XS5kcmFnT2Zmc2V0ID0gbyAtIHIucmVjdFt0aGlzLmF4aXNbdF0ub2Zmc2V0QXR0cl0sIHRoaXMuZHJhZ2dlZEF4aXMgPSB0LCB0aGlzLmVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLmRyYWdnaW5nKSwgbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLmRyYWcsICEwKSwgbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5vbkVuZERyYWcsICEwKSwgbnVsbCA9PT0gdGhpcy5yZW1vdmVQcmV2ZW50Q2xpY2tJZCA/IChuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5wcmV2ZW50Q2xpY2ssICEwKSwgbi5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMucHJldmVudENsaWNrLCAhMCkpIDogKGkuY2xlYXJUaW1lb3V0KHRoaXMucmVtb3ZlUHJldmVudENsaWNrSWQpLCB0aGlzLnJlbW92ZVByZXZlbnRDbGlja0lkID0gbnVsbCkKICAgICAgICB9LCB0Lm9uVHJhY2tDbGljayA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0gInkiKSwgdGhpcy5vcHRpb25zLmNsaWNrT25UcmFjaykgewogICAgICAgICAgICAgICAgdmFyIGkgPSBEcyh0aGlzLmVsKTsKICAgICAgICAgICAgICAgIHRoaXMuYXhpc1t0XS5zY3JvbGxiYXIucmVjdCA9IHRoaXMuYXhpc1t0XS5zY3JvbGxiYXIuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMuYXhpc1t0XS5zY3JvbGxiYXIucmVjdFt0aGlzLmF4aXNbdF0ub2Zmc2V0QXR0cl0sCiAgICAgICAgICAgICAgICAgICAgbyA9IHBhcnNlSW50KHRoaXMuZWxTdHlsZXNbdGhpcy5heGlzW3RdLnNpemVBdHRyXSwgMTApLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmNvbnRlbnRXcmFwcGVyRWxbdGhpcy5heGlzW3RdLnNjcm9sbE9mZnNldEF0dHJdLAogICAgICAgICAgICAgICAgICAgIHMgPSAoInkiID09PSB0ID8gdGhpcy5tb3VzZVkgLSByIDogdGhpcy5tb3VzZVggLSByKSA8IDAgPyAtMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgbCA9IC0xID09PSBzID8gYSAtIG8gOiBhICsgbzsKICAgICAgICAgICAgICAgICEgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbzsgLSAxID09PSBzID8gYSA+IGwgJiYgKGEgLT0gbi5vcHRpb25zLmNsaWNrT25UcmFja1NwZWVkLCBuLmNvbnRlbnRXcmFwcGVyRWwuc2Nyb2xsVG8oKChyID0ge30pW24uYXhpc1t0XS5vZmZzZXRBdHRyXSA9IGEsIHIpKSwgaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpIDogYSA8IGwgJiYgKGEgKz0gbi5vcHRpb25zLmNsaWNrT25UcmFja1NwZWVkLCBuLmNvbnRlbnRXcmFwcGVyRWwuc2Nyb2xsVG8oKChvID0ge30pW24uYXhpc1t0XS5vZmZzZXRBdHRyXSA9IGEsIG8pKSwgaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpCiAgICAgICAgICAgICAgICB9KCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHQuZ2V0Q29udGVudEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEVsCiAgICAgICAgfSwgdC5nZXRTY3JvbGxFbGVtZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRXcmFwcGVyRWwKICAgICAgICB9LCB0LmdldFNjcm9sbGJhcldpZHRoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIm5vbmUiID09PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29udGVudFdyYXBwZXJFbCwgIjo6LXdlYmtpdC1zY3JvbGxiYXIiKS5kaXNwbGF5IHx8ICJzY3JvbGxiYXJXaWR0aCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlIHx8ICItbXMtb3ZlcmZsb3ctc3R5bGUiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSA/IDAgOiBMcyh0aGlzLmVsKQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTHModGhpcy5lbCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHQucmVtb3ZlTGlzdGVuZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgIHQgPSBEcyh0aGlzLmVsKTsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9IaWRlICYmIHRoaXMuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsIHRoaXMub25Nb3VzZUVudGVyKSwgWyJtb3VzZWRvd24iLCAiY2xpY2siLCAiZGJsY2xpY2siXS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBlLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodCwgZS5vblBvaW50ZXJFdmVudCwgITApCiAgICAgICAgICAgIH0pKSwgWyJ0b3VjaHN0YXJ0IiwgInRvdWNoZW5kIiwgInRvdWNobW92ZSJdLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBlLm9uUG9pbnRlckV2ZW50LCB7CiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITAsCiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKSwgdGhpcy5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLm9uTW91c2VNb3ZlKSwgdGhpcy5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5vbk1vdXNlTGVhdmUpLCB0aGlzLmNvbnRlbnRXcmFwcGVyRWwgJiYgdGhpcy5jb250ZW50V3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMub25TY3JvbGwpLCB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMub25XaW5kb3dSZXNpemUpLCB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgJiYgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKSwgdGhpcy5yZXNpemVPYnNlcnZlciAmJiB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSwgdGhpcy5yZWNhbGN1bGF0ZS5jYW5jZWwoKSwgdGhpcy5vbk1vdXNlTW92ZS5jYW5jZWwoKSwgdGhpcy5oaWRlU2Nyb2xsYmFycy5jYW5jZWwoKSwgdGhpcy5vbldpbmRvd1Jlc2l6ZS5jYW5jZWwoKQogICAgICAgIH0sIHQudW5Nb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpLCBlLmluc3RhbmNlcy5kZWxldGUodGhpcy5lbCkKICAgICAgICB9LCB0LmlzV2l0aGluQm91bmRzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5tb3VzZVggPj0gZS5sZWZ0ICYmIHRoaXMubW91c2VYIDw9IGUubGVmdCArIGUud2lkdGggJiYgdGhpcy5tb3VzZVkgPj0gZS50b3AgJiYgdGhpcy5tb3VzZVkgPD0gZS50b3AgKyBlLmhlaWdodAogICAgICAgIH0sIHQuZmluZENoaWxkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGUubWF0Y2hlcyB8fCBlLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBlLm1vek1hdGNoZXNTZWxlY3RvciB8fCBlLm1zTWF0Y2hlc1NlbGVjdG9yOwogICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGUuY2hpbGRyZW4sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbi5jYWxsKGUsIHQpCiAgICAgICAgICAgIH0pKVswXQogICAgICAgIH0sIGUKICAgIH0oKTsKICAgIHJldHVybiBQcy5kZWZhdWx0T3B0aW9ucyA9IHsKICAgICAgICBhdXRvSGlkZTogITAsCiAgICAgICAgZm9yY2VWaXNpYmxlOiAhMSwKICAgICAgICBjbGlja09uVHJhY2s6ICEwLAogICAgICAgIGNsaWNrT25UcmFja1NwZWVkOiA0MCwKICAgICAgICBjbGFzc05hbWVzOiB7CiAgICAgICAgICAgIGNvbnRlbnRFbDogInNpbXBsZWJhci1jb250ZW50IiwKICAgICAgICAgICAgY29udGVudFdyYXBwZXI6ICJzaW1wbGViYXItY29udGVudC13cmFwcGVyIiwKICAgICAgICAgICAgb2Zmc2V0OiAic2ltcGxlYmFyLW9mZnNldCIsCiAgICAgICAgICAgIG1hc2s6ICJzaW1wbGViYXItbWFzayIsCiAgICAgICAgICAgIHdyYXBwZXI6ICJzaW1wbGViYXItd3JhcHBlciIsCiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAic2ltcGxlYmFyLXBsYWNlaG9sZGVyIiwKICAgICAgICAgICAgc2Nyb2xsYmFyOiAic2ltcGxlYmFyLXNjcm9sbGJhciIsCiAgICAgICAgICAgIHRyYWNrOiAic2ltcGxlYmFyLXRyYWNrIiwKICAgICAgICAgICAgaGVpZ2h0QXV0b09ic2VydmVyV3JhcHBlckVsOiAic2ltcGxlYmFyLWhlaWdodC1hdXRvLW9ic2VydmVyLXdyYXBwZXIiLAogICAgICAgICAgICBoZWlnaHRBdXRvT2JzZXJ2ZXJFbDogInNpbXBsZWJhci1oZWlnaHQtYXV0by1vYnNlcnZlciIsCiAgICAgICAgICAgIHZpc2libGU6ICJzaW1wbGViYXItdmlzaWJsZSIsCiAgICAgICAgICAgIGhvcml6b250YWw6ICJzaW1wbGViYXItaG9yaXpvbnRhbCIsCiAgICAgICAgICAgIHZlcnRpY2FsOiAic2ltcGxlYmFyLXZlcnRpY2FsIiwKICAgICAgICAgICAgaG92ZXI6ICJzaW1wbGViYXItaG92ZXIiLAogICAgICAgICAgICBkcmFnZ2luZzogInNpbXBsZWJhci1kcmFnZ2luZyIKICAgICAgICB9LAogICAgICAgIHNjcm9sbGJhck1pblNpemU6IDI1LAogICAgICAgIHNjcm9sbGJhck1heFNpemU6IDAsCiAgICAgICAgdGltZW91dDogMWUzCiAgICB9LCBQcy5pbnN0YW5jZXMgPSBuZXcgV2Vha01hcCwgUHMuaW5pdERPTUxvYWRlZEVsZW1lbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuaW5pdERPTUxvYWRlZEVsZW1lbnRzKSwgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCB0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cyksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtc2ltcGxlYmFyXSIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAiaW5pdCIgPT09IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXNpbXBsZWJhciIpIHx8IFBzLmluc3RhbmNlcy5oYXMoZSkgfHwgbmV3IFBzKGUsIEVzKGUuYXR0cmlidXRlcykpCiAgICAgICAgfSkpCiAgICB9LCBQcy5yZW1vdmVPYnNlcnZlciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuZ2xvYmFsT2JzZXJ2ZXIuZGlzY29ubmVjdCgpCiAgICB9LCBQcy5pbml0SHRtbEFwaSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuaW5pdERPTUxvYWRlZEVsZW1lbnRzID0gdGhpcy5pbml0RE9NTG9hZGVkRWxlbWVudHMuYmluZCh0aGlzKSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgJiYgKHRoaXMuZ2xvYmFsT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihQcy5oYW5kbGVNdXRhdGlvbnMpLCB0aGlzLmdsb2JhbE9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHsKICAgICAgICAgICAgY2hpbGRMaXN0OiAhMCwKICAgICAgICAgICAgc3VidHJlZTogITAKICAgICAgICB9KSksICJjb21wbGV0ZSIgPT09IGRvY3VtZW50LnJlYWR5U3RhdGUgfHwgImxvYWRpbmciICE9PSBkb2N1bWVudC5yZWFkeVN0YXRlICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgPyB3aW5kb3cuc2V0VGltZW91dCh0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cykgOiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuaW5pdERPTUxvYWRlZEVsZW1lbnRzKSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cykpCiAgICB9LCBQcy5oYW5kbGVNdXRhdGlvbnMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5hZGRlZE5vZGVzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgMSA9PT0gZS5ub2RlVHlwZSAmJiAoZS5oYXNBdHRyaWJ1dGUoImRhdGEtc2ltcGxlYmFyIikgPyAhUHMuaW5zdGFuY2VzLmhhcyhlKSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMoZSkgJiYgbmV3IFBzKGUsIEVzKGUuYXR0cmlidXRlcykpIDogQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXNpbXBsZWJhcl0iKSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAiaW5pdCIgIT09IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXNpbXBsZWJhciIpICYmICFQcy5pbnN0YW5jZXMuaGFzKGUpICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyhlKSAmJiBuZXcgUHMoZSwgRXMoZS5hdHRyaWJ1dGVzKSkKICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgfSkpLCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUucmVtb3ZlZE5vZGVzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgMSA9PT0gZS5ub2RlVHlwZSAmJiAoImluaXQiID09PSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zaW1wbGViYXIiKSA/IFBzLmluc3RhbmNlcy5oYXMoZSkgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyhlKSAmJiBQcy5pbnN0YW5jZXMuZ2V0KGUpLnVuTW91bnQoKSA6IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zaW1wbGViYXI9ImluaXQiXScpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIFBzLmluc3RhbmNlcy5oYXMoZSkgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyhlKSAmJiBQcy5pbnN0YW5jZXMuZ2V0KGUpLnVuTW91bnQoKQogICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICB9KSkKICAgICAgICB9KSkKICAgIH0sIFBzLmdldE9wdGlvbnMgPSBFcywgTnQgJiYgUHMuaW5pdEh0bWxBcGkoKSwgUHMKfSkpLApmdW5jdGlvbihlKSB7CiAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCBlKSA6ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgbW9kdWxlLmV4cG9ydHMgPyBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSBuICYmIChuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHJlcXVpcmUoImpxdWVyeSIpIDogcmVxdWlyZSgianF1ZXJ5IikodCkpLCBlKG4pLCBuCiAgICB9IDogZShqUXVlcnkpCn0oKGZ1bmN0aW9uKGUpIHsKICAgIHZhciB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChlICYmIGUuZm4gJiYgZS5mbi5zZWxlY3QyICYmIGUuZm4uc2VsZWN0Mi5hbWQpIHZhciB0ID0gZS5mbi5zZWxlY3QyLmFtZDsKICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAsIGcsIG0sIHY7CgogICAgICAgICAgICBmdW5jdGlvbiB5KGUsIHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwLmNhbGwoZSwgdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gYihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciwgbywgYSwgcywgbCwgYywgdSwgZCwgZiwgcCA9IHQgJiYgdC5zcGxpdCgiLyIpLAogICAgICAgICAgICAgICAgICAgIGcgPSBoLm1hcCwKICAgICAgICAgICAgICAgICAgICB2ID0gZyAmJiBnWyIqIl0gfHwge307CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IChlID0gZS5zcGxpdCgiLyIpKS5sZW5ndGggLSAxLCBoLm5vZGVJZENvbXBhdCAmJiBtLnRlc3QoZVthXSkgJiYgKGVbYV0gPSBlW2FdLnJlcGxhY2UobSwgIiIpKSwgIi4iID09PSBlWzBdLmNoYXJBdCgwKSAmJiBwICYmIChlID0gcC5zbGljZSgwLCBwLmxlbmd0aCAtIDEpLmNvbmNhdChlKSksIHUgPSAwOyB1IDwgZS5sZW5ndGg7IHUrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIuIiA9PT0gKGYgPSBlW3VdKSkgZS5zcGxpY2UodSwgMSksIC0tdTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIi4uIiA9PT0gZikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdSB8fCAxID09PSB1ICYmICIuLiIgPT09IGVbMl0gfHwgIi4uIiA9PT0gZVt1IC0gMV0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAwIDwgdSAmJiAoZS5zcGxpY2UodSAtIDEsIDIpLCB1IC09IDIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUgPSBlLmpvaW4oIi8iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChwIHx8IHYpICYmIGcpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHUgPSAobiA9IGUuc3BsaXQoIi8iKSkubGVuZ3RoOyAwIDwgdTsgLS11KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0gbi5zbGljZSgwLCB1KS5qb2luKCIvIiksIHApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGQgPSBwLmxlbmd0aDsgMCA8IGQ7IC0tZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IChyID0gZ1twLnNsaWNlKDAsIGQpLmpvaW4oIi8iKV0pICYmIHJbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIsIHMgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8pIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAhbCAmJiB2ICYmIHZbaV0gJiYgKGwgPSB2W2ldLCBjID0gdSkKICAgICAgICAgICAgICAgICAgICB9IW8gJiYgbCAmJiAobyA9IGwsIHMgPSBjKSwgbyAmJiAobi5zcGxpY2UoMCwgcywgbyksIGUgPSBuLmpvaW4oIi8iKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHcoZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZy5jYWxsKGFyZ3VtZW50cywgMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBuWzBdICYmIDEgPT09IG4ubGVuZ3RoICYmIG4ucHVzaChudWxsKSwgcy5hcHBseShvLCBuLmNvbmNhdChbZSwgdF0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB4KGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdVtlXSA9IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gXyhlKSB7CiAgICAgICAgICAgICAgICBpZiAoeShkLCBlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZFtlXTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgZFtlXSwgZltlXSA9ICEwLCBhLmFwcGx5KG8sIHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXkodSwgZSkgJiYgIXkoZiwgZSkpIHRocm93IG5ldyBFcnJvcigiTm8gIiArIGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHVbZV0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUgPyBlLmluZGV4T2YoIiEiKSA6IC0xOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xIDwgbiAmJiAodCA9IGUuc3Vic3RyaW5nKDAsIG4pLCBlID0gZS5zdWJzdHJpbmcobiArIDEsIGUubGVuZ3RoKSksIFt0LCBlXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBDKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlID8gUyhlKSA6IFtdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5yZXF1aXJlanMgfHwgKHQgPyBpID0gdCA6IHQgPSB7fSwgdSA9IHt9LCBkID0ge30sIGggPSB7fSwgZiA9IHt9LCBwID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSwgZyA9IFtdLnNsaWNlLCBtID0gL1wuanMkLywgbCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBpLCByID0gUyhlKSwKICAgICAgICAgICAgICAgICAgICBvID0gclswXSwKICAgICAgICAgICAgICAgICAgICBhID0gdFsxXTsKICAgICAgICAgICAgICAgIHJldHVybiBlID0gclsxXSwgbyAmJiAobiA9IF8obyA9IGIobywgYSkpKSwgbyA/IGUgPSBuICYmIG4ubm9ybWFsaXplID8gbi5ub3JtYWxpemUoZSwgKGkgPSBhLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIoZSwgaSkKICAgICAgICAgICAgICAgIH0pKSA6IGIoZSwgYSkgOiAobyA9IChyID0gUyhlID0gYihlLCBhKSkpWzBdLCBlID0gclsxXSwgbyAmJiAobiA9IF8obykpKSwgewogICAgICAgICAgICAgICAgICAgIGY6IG8gPyBvICsgIiEiICsgZSA6IGUsCiAgICAgICAgICAgICAgICAgICAgbjogZSwKICAgICAgICAgICAgICAgICAgICBwcjogbywKICAgICAgICAgICAgICAgICAgICBwOiBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIGMgPSB7CiAgICAgICAgICAgICAgICByZXF1aXJlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHcoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleHBvcnRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1W2VdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgPyB0IDogdVtlXSA9IHt9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbW9kdWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IHVbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogKHQgPSBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoICYmIGguY29uZmlnICYmIGguY29uZmlnW3RdIHx8IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB2YXIgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBhID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgdmFyIHIsIGEsIHMsIGgsIHAsIGcsIG0sIHYgPSBbXSwKICAgICAgICAgICAgICAgICAgICBiID0gdHlwZW9mIG47CiAgICAgICAgICAgICAgICBpZiAoZyA9IEMoaSA9IGkgfHwgZSksICJ1bmRlZmluZWQiID09IGIgfHwgImZ1bmN0aW9uIiA9PSBiKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gIXQubGVuZ3RoICYmIG4ubGVuZ3RoID8gWyJyZXF1aXJlIiwgImV4cG9ydHMiLCAibW9kdWxlIl0gOiB0LCBwID0gMDsgcCA8IHQubGVuZ3RoOyBwICs9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgicmVxdWlyZSIgPT09IChhID0gKGggPSBsKHRbcF0sIGcpKS5mKSkgdltwXSA9IGMucmVxdWlyZShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoImV4cG9ydHMiID09PSBhKSB2W3BdID0gYy5leHBvcnRzKGUpLCBtID0gITA7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIm1vZHVsZSIgPT09IGEpIHIgPSB2W3BdID0gYy5tb2R1bGUoZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeSh1LCBhKSB8fCB5KGQsIGEpIHx8IHkoZiwgYSkpIHZbcF0gPSBfKGEpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWgucCkgdGhyb3cgbmV3IEVycm9yKGUgKyAiIG1pc3NpbmcgIiArIGEpOwogICAgICAgICAgICAgICAgICAgICAgICBoLnAubG9hZChoLm4sIHcoaSwgITApLCB4KGEpLCB7fSksIHZbcF0gPSB1W2FdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHMgPSBuID8gbi5hcHBseSh1W2VdLCB2KSA6IHZvaWQgMCwgZSAmJiAociAmJiByLmV4cG9ydHMgIT09IG8gJiYgci5leHBvcnRzICE9PSB1W2VdID8gdVtlXSA9IHIuZXhwb3J0cyA6IHMgPT09IG8gJiYgbSB8fCAodVtlXSA9IHMpKQogICAgICAgICAgICAgICAgfSBlbHNlIGUgJiYgKHVbZV0gPSBuKQogICAgICAgICAgICB9LCBuID0gaSA9IHMgPSBmdW5jdGlvbihlLCB0LCBuLCBpLCByKSB7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBjW2VdID8gY1tlXSh0KSA6IF8obChlLCBDKHQpKS5mKTsKICAgICAgICAgICAgICAgIGlmICghZS5zcGxpY2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGggPSBlKS5kZXBzICYmIHMoaC5kZXBzLCBoLmNhbGxiYWNrKSwgIXQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0LnNwbGljZSA/IChlID0gdCwgdCA9IG4sIG4gPSBudWxsKSA6IGUgPSBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHQgfHwgZnVuY3Rpb24oKSB7fSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbiAmJiAobiA9IGksIGkgPSByKSwgaSA/IGEobywgZSwgdCwgbikgOiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBhKG8sIGUsIHQsIG4pCiAgICAgICAgICAgICAgICB9KSwgNCksIHMKICAgICAgICAgICAgfSwgcy5jb25maWcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcyhlKQogICAgICAgICAgICB9LCBuLl9kZWZpbmVkID0gdSwgKHIgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIGUpIHRocm93IG5ldyBFcnJvcigiU2VlIGFsbW9uZCBSRUFETUU6IGluY29ycmVjdCBtb2R1bGUgYnVpbGQsIG5vIG1vZHVsZSBuYW1lIik7CiAgICAgICAgICAgICAgICB0LnNwbGljZSB8fCAobiA9IHQsIHQgPSBbXSksIHkodSwgZSkgfHwgeShkLCBlKSB8fCAoZFtlXSA9IFtlLCB0LCBuXSkKICAgICAgICAgICAgfSkuYW1kID0gewogICAgICAgICAgICAgICAgalF1ZXJ5OiAhMAogICAgICAgICAgICB9LCB0LnJlcXVpcmVqcyA9IG4sIHQucmVxdWlyZSA9IGksIHQuZGVmaW5lID0gciksIHQuZGVmaW5lKCJhbG1vbmQiLCAoZnVuY3Rpb24oKSB7fSkpLCB0LmRlZmluZSgianF1ZXJ5IiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZSB8fCAkOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gdCAmJiBjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IgJiYgY29uc29sZS5lcnJvcigiU2VsZWN0MjogQW4gaW5zdGFuY2Ugb2YgalF1ZXJ5IG9yIGEgalF1ZXJ5LWNvbXBhdGlibGUgbGlicmFyeSB3YXMgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGluY2x1ZGluZyBqUXVlcnkgYmVmb3JlIFNlbGVjdDIgb24geW91ciB3ZWIgcGFnZS4iKSwgdAogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL3V0aWxzIiwgWyJqcXVlcnkiXSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0ge307CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdCkgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdFtpXSAmJiAiY29uc3RydWN0b3IiICE9PSBpICYmIG4ucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5FeHRlbmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0KSBuLmNhbGwodCwgcikgJiYgKGVbcl0gPSB0W3JdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgZS5wcm90b3R5cGUgPSBuZXcgaSwgZS5fX3N1cGVyX18gPSB0LnByb3RvdHlwZSwgZQogICAgICAgICAgICAgICAgfSwgdC5EZWNvcmF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG4odCksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuKGUpOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQucHJvdG90eXBlLmNvbnN0cnVjdG9yLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgMCA8IGkgJiYgKG4uY2FsbChhcmd1bWVudHMsIGUucHJvdG90eXBlLmNvbnN0cnVjdG9yKSwgciA9IHQucHJvdG90eXBlLmNvbnN0cnVjdG9yKSwgci5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuZGlzcGxheU5hbWUgPSBlLmRpc3BsYXlOYW1lLCBvLnByb3RvdHlwZSA9IG5ldyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IG8KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgci5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHJbYV07CiAgICAgICAgICAgICAgICAgICAgICAgIG8ucHJvdG90eXBlW3NdID0gZS5wcm90b3R5cGVbc10KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGZ1bmN0aW9uKCkge307CiAgICAgICAgICAgICAgICAgICAgICAgIGUgaW4gby5wcm90b3R5cGUgJiYgKG4gPSBvLnByb3RvdHlwZVtlXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5wcm90b3R5cGVbZV07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKGFyZ3VtZW50cywgbiksIGkuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgaS5sZW5ndGg7IGMrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGlbY107CiAgICAgICAgICAgICAgICAgICAgICAgIG8ucHJvdG90eXBlW3VdID0gbCh1KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbwogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUub24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycyB8fCB7fSwgZSBpbiB0aGlzLmxpc3RlbmVycyA/IHRoaXMubGlzdGVuZXJzW2VdLnB1c2godCkgOiB0aGlzLmxpc3RlbmVyc1tlXSA9IFt0XQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuY2FsbChhcmd1bWVudHMsIDEpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge30sIG51bGwgPT0gbiAmJiAobiA9IFtdKSwgMCA9PT0gbi5sZW5ndGggJiYgbi5wdXNoKHt9KSwgKG5bMF0uX3R5cGUgPSBlKSBpbiB0aGlzLmxpc3RlbmVycyAmJiB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tlXSwgdC5jYWxsKGFyZ3VtZW50cywgMSkpLCAiKiIgaW4gdGhpcy5saXN0ZW5lcnMgJiYgdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbIioiXSwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyBuKyspIGVbbl0uYXBwbHkodGhpcywgdCkKICAgICAgICAgICAgICAgIH0sIHQuT2JzZXJ2YWJsZSA9IGksIHQuZ2VuZXJhdGVDaGFycyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gIiIsIG4gPSAwOyBuIDwgZTsgbisrKSB0ICs9IE1hdGguZmxvb3IoMzYgKiBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0sIHQuYmluZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuYXBwbHkodCwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQuX2NvbnZlcnREYXRhID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgaW4gZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuc3BsaXQoIi0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSAhPT0gbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbltyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobyA9IG8uc3Vic3RyaW5nKDAsIDEpLnRvTG93ZXJDYXNlKCkgKyBvLnN1YnN0cmluZygxKSkgaW4gaSB8fCAoaVtvXSA9IHt9KSwgciA9PSBuLmxlbmd0aCAtIDEgJiYgKGlbb10gPSBlW3RdKSwgaSA9IGlbb10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlW3RdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0sIHQuaGFzU2Nyb2xsID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gZShuKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IG4uc3R5bGUub3ZlcmZsb3dYLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5zdHlsZS5vdmVyZmxvd1k7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyICE9PSBvIHx8ICJoaWRkZW4iICE9PSBvICYmICJ2aXNpYmxlIiAhPT0gbykgJiYgKCJzY3JvbGwiID09PSByIHx8ICJzY3JvbGwiID09PSBvIHx8IGkuaW5uZXJIZWlnaHQoKSA8IG4uc2Nyb2xsSGVpZ2h0IHx8IGkuaW5uZXJXaWR0aCgpIDwgbi5zY3JvbGxXaWR0aCkKICAgICAgICAgICAgICAgIH0sIHQuZXNjYXBlTWFya3VwID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAiXFwiOiAiJiM5MjsiLAogICAgICAgICAgICAgICAgICAgICAgICAiJiI6ICImYW1wOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICI8IjogIiZsdDsiLAogICAgICAgICAgICAgICAgICAgICAgICAiPiI6ICImZ3Q7IiwKICAgICAgICAgICAgICAgICAgICAgICAgJyInOiAiJnF1b3Q7IiwKICAgICAgICAgICAgICAgICAgICAgICAgIiciOiAiJiMzOTsiLAogICAgICAgICAgICAgICAgICAgICAgICAiLyI6ICImIzQ3OyIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiAhPSB0eXBlb2YgZSA/IGUgOiBTdHJpbmcoZSkucmVwbGFjZSgvWyY8PiInXC9cXF0vZywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZV0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHQuYXBwZW5kTWFueSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIjEuNyIgPT09IGUuZm4uanF1ZXJ5LnN1YnN0cigwLCAzKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5tYXAobiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpLmFkZChlKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4gPSBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuYXBwZW5kKG4pCiAgICAgICAgICAgICAgICB9LCB0Ll9fY2FjaGUgPSB7fTsKICAgICAgICAgICAgICAgIHZhciByID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiB0LkdldFVuaXF1ZUVsZW1lbnRJZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXNlbGVjdDItaWQiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ICYmIChlLmlkID8gKHQgPSBlLmlkLCBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zZWxlY3QyLWlkIiwgdCkpIDogKGUuc2V0QXR0cmlidXRlKCJkYXRhLXNlbGVjdDItaWQiLCArK3IpLCB0ID0gci50b1N0cmluZygpKSksIHQKICAgICAgICAgICAgICAgIH0sIHQuU3RvcmVEYXRhID0gZnVuY3Rpb24oZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5HZXRVbmlxdWVFbGVtZW50SWQoZSk7CiAgICAgICAgICAgICAgICAgICAgdC5fX2NhY2hlW3JdIHx8ICh0Ll9fY2FjaGVbcl0gPSB7fSksIHQuX19jYWNoZVtyXVtuXSA9IGkKICAgICAgICAgICAgICAgIH0sIHQuR2V0RGF0YSA9IGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQuR2V0VW5pcXVlRWxlbWVudElkKG4pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID8gdC5fX2NhY2hlW3JdICYmIG51bGwgIT0gdC5fX2NhY2hlW3JdW2ldID8gdC5fX2NhY2hlW3JdW2ldIDogZShuKS5kYXRhKGkpIDogdC5fX2NhY2hlW3JdCiAgICAgICAgICAgICAgICB9LCB0LlJlbW92ZURhdGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LkdldFVuaXF1ZUVsZW1lbnRJZChlKTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9IHQuX19jYWNoZVtuXSAmJiBkZWxldGUgdC5fX2NhY2hlW25dLCBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zZWxlY3QyLWlkIikKICAgICAgICAgICAgICAgIH0sIHQKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9yZXN1bHRzIiwgWyJqcXVlcnkiLCAiLi91dGlscyJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlLCB0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudCA9IGUsIHRoaXMuZGF0YSA9IGksIHRoaXMub3B0aW9ucyA9IHQsIG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0LkV4dGVuZChuLCB0Lk9ic2VydmFibGUpLCBuLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUoJzx1bCBjbGFzcz0ic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIiByb2xlPSJsaXN0Ym94Ij48L3VsPicpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJtdWx0aXBsZSIpICYmIHQuYXR0cigiYXJpYS1tdWx0aXNlbGVjdGFibGUiLCAidHJ1ZSIpLCB0aGlzLiRyZXN1bHRzID0gdAogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCkKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLmRpc3BsYXlNZXNzYWdlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5vcHRpb25zLmdldCgiZXNjYXBlTWFya3VwIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpLCB0aGlzLmhpZGVMb2FkaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKCc8bGkgcm9sZT0iYWxlcnQiIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBjbGFzcz0ic2VsZWN0Mi1yZXN1bHRzX19vcHRpb24iPjwvbGk+JyksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLm9wdGlvbnMuZ2V0KCJ0cmFuc2xhdGlvbnMiKS5nZXQodC5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICBpLmFwcGVuZChuKHIodC5hcmdzKSkpLCBpWzBdLmNsYXNzTmFtZSArPSAiIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZSIsIHRoaXMuJHJlc3VsdHMuYXBwZW5kKGkpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5oaWRlTWVzc2FnZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UiKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGUucmVzdWx0cyAmJiAwICE9PSBlLnJlc3VsdHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzdWx0cyA9IHRoaXMuc29ydChlLnJlc3VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGUucmVzdWx0cy5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnJlc3VsdHNbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMub3B0aW9uKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQodCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgMCA9PT0gdGhpcy4kcmVzdWx0cy5jaGlsZHJlbigpLmxlbmd0aCAmJiB0aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIm5vUmVzdWx0cyIKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5maW5kKCIuc2VsZWN0Mi1yZXN1bHRzIikuYXBwZW5kKGUpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJzb3J0ZXIiKShlKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLiRyZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSIpLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5maWx0ZXIoIlthcmlhLXNlbGVjdGVkPXRydWVdIik7CiAgICAgICAgICAgICAgICAgICAgMCA8IHQubGVuZ3RoID8gdC5maXJzdCgpLnRyaWdnZXIoIm1vdXNlZW50ZXIiKSA6IGUuZmlyc3QoKS50cmlnZ2VyKCJtb3VzZWVudGVyIiksIHRoaXMuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5zZXRDbGFzc2VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5jdXJyZW50KChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5tYXAoaSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlkLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBuLiRyZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSIpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LkdldERhdGEodGhpcywgImRhdGEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIiIgKyBpLmlkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBpLmVsZW1lbnQgJiYgaS5lbGVtZW50LnNlbGVjdGVkIHx8IG51bGwgPT0gaS5lbGVtZW50ICYmIC0xIDwgZS5pbkFycmF5KG8sIHIpID8gbi5hdHRyKCJhcmlhLXNlbGVjdGVkIiwgInRydWUiKSA6IG4uYXR0cigiYXJpYS1zZWxlY3RlZCIsICJmYWxzZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuc2hvd0xvYWRpbmcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlTG9hZGluZygpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMuZ2V0KCJ0cmFuc2xhdGlvbnMiKS5nZXQoInNlYXJjaGluZyIpKGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLm9wdGlvbih0KTsKICAgICAgICAgICAgICAgICAgICBuLmNsYXNzTmFtZSArPSAiIGxvYWRpbmctcmVzdWx0cyIsIHRoaXMuJHJlc3VsdHMucHJlcGVuZChuKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuaGlkZUxvYWRpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLmZpbmQoIi5sb2FkaW5nLXJlc3VsdHMiKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUub3B0aW9uID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICAgICAgICAgICAgICAgICBpLmNsYXNzTmFtZSA9ICJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAib3B0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLXNlbGVjdGVkIjogImZhbHNlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gd2luZG93LkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgfHwgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiAobnVsbCAhPSBuLmVsZW1lbnQgJiYgby5jYWxsKG4uZWxlbWVudCwgIjpkaXNhYmxlZCIpIHx8IG51bGwgPT0gbi5lbGVtZW50ICYmIG4uZGlzYWJsZWQpICYmIChkZWxldGUgclsiYXJpYS1zZWxlY3RlZCJdLCByWyJhcmlhLWRpc2FibGVkIl0gPSAidHJ1ZSIpLCBudWxsID09IG4uaWQgJiYgZGVsZXRlIHJbImFyaWEtc2VsZWN0ZWQiXSwgbnVsbCAhPSBuLl9yZXN1bHRJZCAmJiAoaS5pZCA9IG4uX3Jlc3VsdElkKSwgbi50aXRsZSAmJiAoaS50aXRsZSA9IG4udGl0bGUpLCBuLmNoaWxkcmVuICYmIChyLnJvbGUgPSAiZ3JvdXAiLCByWyJhcmlhLWxhYmVsIl0gPSBuLnRleHQsIGRlbGV0ZSByWyJhcmlhLXNlbGVjdGVkIl0pLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gclthXTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGUoYSwgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0cm9uZyIpOwogICAgICAgICAgICAgICAgICAgICAgICBjLmNsYXNzTmFtZSA9ICJzZWxlY3QyLXJlc3VsdHNfX2dyb3VwIiwgZShjKSwgdGhpcy50ZW1wbGF0ZShuLCBjKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdSA9IFtdLCBkID0gMDsgZCA8IG4uY2hpbGRyZW4ubGVuZ3RoOyBkKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gbi5jaGlsZHJlbltkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy5vcHRpb24oaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnB1c2goZikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IGUoIjx1bD48L3VsPiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHNlbGVjdDItcmVzdWx0c19fb3B0aW9ucy0tbmVzdGVkIgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgcC5hcHBlbmQodSksIGwuYXBwZW5kKGMpLCBsLmFwcGVuZChwKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLnRlbXBsYXRlKG4sIGkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LlN0b3JlRGF0YShpLCAiZGF0YSIsIG4pLCBpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uaWQgKyAiLXJlc3VsdHMiOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlc3VsdHMuYXR0cigiaWQiLCBvKSwgbi5vbigicmVzdWx0czphbGwiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByLmNsZWFyKCksIHIuYXBwZW5kKGUuZGF0YSksIG4uaXNPcGVuKCkgJiYgKHIuc2V0Q2xhc3NlcygpLCByLmhpZ2hsaWdodEZpcnN0SXRlbSgpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vbigicmVzdWx0czphcHBlbmQiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByLmFwcGVuZChlLmRhdGEpLCBuLmlzT3BlbigpICYmIHIuc2V0Q2xhc3NlcygpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJxdWVyeSIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuaGlkZU1lc3NhZ2VzKCksIHIuc2hvd0xvYWRpbmcoZSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oInNlbGVjdCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5pc09wZW4oKSAmJiAoci5zZXRDbGFzc2VzKCksIHIub3B0aW9ucy5nZXQoInNjcm9sbEFmdGVyU2VsZWN0IikgJiYgci5oaWdobGlnaHRGaXJzdEl0ZW0oKSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oInVuc2VsZWN0IiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBuLmlzT3BlbigpICYmIChyLnNldENsYXNzZXMoKSwgci5vcHRpb25zLmdldCgic2Nyb2xsQWZ0ZXJTZWxlY3QiKSAmJiByLmhpZ2hsaWdodEZpcnN0SXRlbSgpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vbigib3BlbiIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgci4kcmVzdWx0cy5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgInRydWUiKSwgci4kcmVzdWx0cy5hdHRyKCJhcmlhLWhpZGRlbiIsICJmYWxzZSIpLCByLnNldENsYXNzZXMoKSwgci5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCkKICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oImNsb3NlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByLiRyZXN1bHRzLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAiZmFsc2UiKSwgci4kcmVzdWx0cy5hdHRyKCJhcmlhLWhpZGRlbiIsICJ0cnVlIiksIHIuJHJlc3VsdHMucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IikKICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oInJlc3VsdHM6dG9nZ2xlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHIuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IGUubGVuZ3RoICYmIGUudHJpZ2dlcigibW91c2V1cCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJyZXN1bHRzOnNlbGVjdCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSByLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5HZXREYXRhKGVbMF0sICJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJ1ZSIgPT0gZS5hdHRyKCJhcmlhLXNlbGVjdGVkIikgPyByLnRyaWdnZXIoImNsb3NlIiwge30pIDogci50cmlnZ2VyKCJzZWxlY3QiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vbigicmVzdWx0czpwcmV2aW91cyIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSByLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHIuJHJlc3VsdHMuZmluZCgiW2FyaWEtc2VsZWN0ZWRdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5pbmRleChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEobiA8PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGUubGVuZ3RoICYmIChpID0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHQuZXEoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnRyaWdnZXIoIm1vdXNlZW50ZXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gci4kcmVzdWx0cy5vZmZzZXQoKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG8ub2Zmc2V0KCkudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgKHMgLSBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IGkgPyByLiRyZXN1bHRzLnNjcm9sbFRvcCgwKSA6IHMgLSBhIDwgMCAmJiByLiRyZXN1bHRzLnNjcm9sbFRvcChsKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJyZXN1bHRzOm5leHQiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gci5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSByLiRyZXN1bHRzLmZpbmQoIlthcmlhLXNlbGVjdGVkXSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuaW5kZXgoZSkgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuID49IHQubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LmVxKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS50cmlnZ2VyKCJtb3VzZWVudGVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIuJHJlc3VsdHMub2Zmc2V0KCkudG9wICsgci4kcmVzdWx0cy5vdXRlckhlaWdodCghMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkub2Zmc2V0KCkudG9wICsgaS5vdXRlckhlaWdodCghMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyBhIC0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IG4gPyByLiRyZXN1bHRzLnNjcm9sbFRvcCgwKSA6IG8gPCBhICYmIHIuJHJlc3VsdHMuc2Nyb2xsVG9wKHMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oInJlc3VsdHM6Zm9jdXMiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmVsZW1lbnQuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJyZXN1bHRzOm1lc3NhZ2UiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByLmRpc3BsYXlNZXNzYWdlKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLmZuLm1vdXNld2hlZWwgJiYgdGhpcy4kcmVzdWx0cy5vbigibW91c2V3aGVlbCIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gci4kcmVzdWx0cy5zY3JvbGxUb3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSB0ICsgZS5kZWx0YVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMCA8IGUuZGVsdGFZICYmIHQgLSBlLmRlbHRhWSA8PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuZGVsdGFZIDwgMCAmJiBuIDw9IHIuJHJlc3VsdHMuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPyAoci4kcmVzdWx0cy5zY3JvbGxUb3AoMCksIGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wUHJvcGFnYXRpb24oKSkgOiBvICYmIChyLiRyZXN1bHRzLnNjcm9sbFRvcChyLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQgLSByLiRyZXN1bHRzLmhlaWdodCgpKSwgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kcmVzdWx0cy5vbigibW91c2V1cCIsICIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0iLCAoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5HZXREYXRhKHRoaXMsICJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0cnVlIiAhPT0gaS5hdHRyKCJhcmlhLXNlbGVjdGVkIikgPyByLnRyaWdnZXIoInNlbGVjdCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogci5vcHRpb25zLmdldCgibXVsdGlwbGUiKSA/IHIudHJpZ2dlcigidW5zZWxlY3QiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbwogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHIudHJpZ2dlcigiY2xvc2UiLCB7fSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuJHJlc3VsdHMub24oIm1vdXNlZW50ZXIiLCAiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIiwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LkdldERhdGEodGhpcywgImRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKS5yZW1vdmVDbGFzcygic2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkIiksIHIudHJpZ2dlcigicmVzdWx0czpmb2N1cyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5nZXRIaWdobGlnaHRlZFJlc3VsdHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kcmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkIikKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZXN1bHRzLnJlbW92ZSgpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5lbnN1cmVIaWdobGlnaHRWaXNpYmxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuJHJlc3VsdHMuZmluZCgiW2FyaWEtc2VsZWN0ZWRdIikuaW5kZXgoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5vZmZzZXQoKS50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChpIC0gbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gaSAtIG47CiAgICAgICAgICAgICAgICAgICAgICAgIHIgLT0gMiAqIGUub3V0ZXJIZWlnaHQoITEpLCB0IDw9IDIgPyB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgwKSA6IChvID4gdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCgpIHx8IG8gPCAwKSAmJiB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcChyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLnRlbXBsYXRlID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5vcHRpb25zLmdldCgidGVtcGxhdGVSZXN1bHQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaSh0LCBuKTsKICAgICAgICAgICAgICAgICAgICBudWxsID09IG8gPyBuLnN0eWxlLmRpc3BsYXkgPSAibm9uZSIgOiAic3RyaW5nIiA9PSB0eXBlb2YgbyA/IG4uaW5uZXJIVE1MID0gcihvKSA6IGUobikuYXBwZW5kKG8pCiAgICAgICAgICAgICAgICB9LCBuCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIva2V5cyIsIFtdLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIEJBQ0tTUEFDRTogOCwKICAgICAgICAgICAgICAgICAgICBUQUI6IDksCiAgICAgICAgICAgICAgICAgICAgRU5URVI6IDEzLAogICAgICAgICAgICAgICAgICAgIFNISUZUOiAxNiwKICAgICAgICAgICAgICAgICAgICBDVFJMOiAxNywKICAgICAgICAgICAgICAgICAgICBBTFQ6IDE4LAogICAgICAgICAgICAgICAgICAgIEVTQzogMjcsCiAgICAgICAgICAgICAgICAgICAgU1BBQ0U6IDMyLAogICAgICAgICAgICAgICAgICAgIFBBR0VfVVA6IDMzLAogICAgICAgICAgICAgICAgICAgIFBBR0VfRE9XTjogMzQsCiAgICAgICAgICAgICAgICAgICAgRU5EOiAzNSwKICAgICAgICAgICAgICAgICAgICBIT01FOiAzNiwKICAgICAgICAgICAgICAgICAgICBMRUZUOiAzNywKICAgICAgICAgICAgICAgICAgICBVUDogMzgsCiAgICAgICAgICAgICAgICAgICAgUklHSFQ6IDM5LAogICAgICAgICAgICAgICAgICAgIERPV046IDQwLAogICAgICAgICAgICAgICAgICAgIERFTEVURTogNDYKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vYmFzZSIsIFsianF1ZXJ5IiwgIi4uL3V0aWxzIiwgIi4uL2tleXMiXSwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQgPSBlLCB0aGlzLm9wdGlvbnMgPSB0LCBpLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5FeHRlbmQoaSwgdC5PYnNlcnZhYmxlKSwgaS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlKCc8c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb24iIHJvbGU9ImNvbWJvYm94IiAgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXggPSAwLCBudWxsICE9IHQuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAib2xkLXRhYmluZGV4IikgPyB0aGlzLl90YWJpbmRleCA9IHQuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAib2xkLXRhYmluZGV4IikgOiBudWxsICE9IHRoaXMuJGVsZW1lbnQuYXR0cigidGFiaW5kZXgiKSAmJiAodGhpcy5fdGFiaW5kZXggPSB0aGlzLiRlbGVtZW50LmF0dHIoInRhYmluZGV4IikpLCBuLmF0dHIoInRpdGxlIiwgdGhpcy4kZWxlbWVudC5hdHRyKCJ0aXRsZSIpKSwgbi5hdHRyKCJ0YWJpbmRleCIsIHRoaXMuX3RhYmluZGV4KSwgbi5hdHRyKCJhcmlhLWRpc2FibGVkIiwgImZhbHNlIiksIHRoaXMuJHNlbGVjdGlvbiA9IG4KICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS5pZCArICItcmVzdWx0cyI7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBlLCB0aGlzLiRzZWxlY3Rpb24ub24oImZvY3VzIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS50cmlnZ2VyKCJmb2N1cyIsIGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImJsdXIiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9oYW5kbGVCbHVyKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImtleWRvd24iLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLnRyaWdnZXIoImtleXByZXNzIiwgZSksIGUud2hpY2ggPT09IG4uU1BBQ0UgJiYgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLm9uKCJyZXN1bHRzOmZvY3VzIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsIGUuZGF0YS5fcmVzdWx0SWQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLm9uKCJzZWxlY3Rpb246dXBkYXRlIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS51cGRhdGUoZS5kYXRhKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5vbigib3BlbiIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtZXhwYW5kZWQiLCAidHJ1ZSIpLCBpLiRzZWxlY3Rpb24uYXR0cigiYXJpYS1vd25zIiwgciksIGkuX2F0dGFjaENsb3NlSGFuZGxlcihlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5vbigiY2xvc2UiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWV4cGFuZGVkIiwgImZhbHNlIiksIGkuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSwgaS4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoImFyaWEtb3ducyIpLCBpLiRzZWxlY3Rpb24udHJpZ2dlcigiZm9jdXMiKSwgaS5fZGV0YWNoQ2xvc2VIYW5kbGVyKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLm9uKCJlbmFibGUiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuJHNlbGVjdGlvbi5hdHRyKCJ0YWJpbmRleCIsIGkuX3RhYmluZGV4KSwgaS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtZGlzYWJsZWQiLCAiZmFsc2UiKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5vbigiZGlzYWJsZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS4kc2VsZWN0aW9uLmF0dHIoInRhYmluZGV4IiwgIi0xIiksIGkuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWRpc2FibGVkIiwgInRydWUiKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuX2hhbmRsZUJsdXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBuLiRzZWxlY3Rpb25bMF0gfHwgZS5jb250YWlucyhuLiRzZWxlY3Rpb25bMF0sIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHx8IG4udHJpZ2dlcigiYmx1ciIsIHQpCiAgICAgICAgICAgICAgICAgICAgfSksIDEpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5fYXR0YWNoQ2xvc2VIYW5kbGVyID0gZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgIGUoZG9jdW1lbnQuYm9keSkub24oIm1vdXNlZG93bi5zZWxlY3QyLiIgKyBuLmlkLCAoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUobi50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUoIi5zZWxlY3QyLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIikuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzICE9IGlbMF0gJiYgdC5HZXREYXRhKHRoaXMsICJlbGVtZW50Iikuc2VsZWN0MigiY2xvc2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLl9kZXRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgZShkb2N1bWVudC5ib2R5KS5vZmYoIm1vdXNlZG93bi5zZWxlY3QyLiIgKyB0LmlkKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdC5maW5kKCIuc2VsZWN0aW9uIikuYXBwZW5kKGUpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGV0YWNoQ2xvc2VIYW5kbGVyKHRoaXMuY29udGFpbmVyKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGhlIGB1cGRhdGVgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4iKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuaXNFbmFibGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJkaXNhYmxlZCIpCiAgICAgICAgICAgICAgICB9LCBpCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL3NpbmdsZSIsIFsianF1ZXJ5IiwgIi4vYmFzZSIsICIuLi91dGlscyIsICIuLi9rZXlzIl0sIChmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiByKCkgewogICAgICAgICAgICAgICAgICAgIHIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBuLkV4dGVuZChyLCB0KSwgci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSByLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSIpLCBlLmh0bWwoJzxzcGFuIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IiByb2xlPSJwcmVzZW50YXRpb24iPjxiIHJvbGU9InByZXNlbnRhdGlvbiI+PC9iPjwvc3Bhbj4nKSwgZQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgci5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5pZCArICItY29udGFpbmVyIjsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLmF0dHIoImlkIiwgaSkuYXR0cigicm9sZSIsICJ0ZXh0Ym94IikuYXR0cigiYXJpYS1yZWFkb25seSIsICJ0cnVlIiksIHRoaXMuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLCBpKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJtb3VzZWRvd24iLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAxID09PSBlLndoaWNoICYmIG4udHJpZ2dlcigidG9nZ2xlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJmb2N1cyIsIChmdW5jdGlvbihlKSB7fSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImJsdXIiLCAoZnVuY3Rpb24oZSkge30pKSwgZS5vbigiZm9jdXMiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmlzT3BlbigpIHx8IG4uJHNlbGVjdGlvbi50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKTsKICAgICAgICAgICAgICAgICAgICBlLmVtcHR5KCksIGUucmVtb3ZlQXR0cigidGl0bGUiKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMub3B0aW9ucy5nZXQoInRlbXBsYXRlU2VsZWN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpKG4oZSwgdCkpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgiPHNwYW4+PC9zcGFuPiIpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZGlzcGxheSh0LCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5lbXB0eSgpLmFwcGVuZChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0LnRpdGxlIHx8IHQudGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgciA/IG4uYXR0cigidGl0bGUiLCByKSA6IG4ucmVtb3ZlQXR0cigidGl0bGUiKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLmNsZWFyKCkKICAgICAgICAgICAgICAgIH0sIHIKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vbXVsdGlwbGUiLCBbImpxdWVyeSIsICIuL2Jhc2UiLCAiLi4vdXRpbHMiXSwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGkuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBuLkV4dGVuZChpLCB0KSwgaS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBpLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIiksIGUuaHRtbCgnPHVsIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiPjwvdWw+JyksIGUKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGkuX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8udHJpZ2dlcigidG9nZ2xlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJjbGljayIsICIuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvLmlzRGlzYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlKHRoaXMpLnBhcmVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLkdldERhdGEoaVswXSwgImRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8udHJpZ2dlcigidW5zZWxlY3QiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKTsKICAgICAgICAgICAgICAgICAgICBlLmVtcHR5KCksIGUucmVtb3ZlQXR0cigidGl0bGUiKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuZGlzcGxheSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMub3B0aW9ucy5nZXQoInRlbXBsYXRlU2VsZWN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpKG4oZSwgdCkpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgnPGxpIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIj48c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIiByb2xlPSJwcmVzZW50YXRpb24iPiZ0aW1lczs8L3NwYW4+PC9saT4nKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyKCksIDAgIT09IGUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBbXSwgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGVbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuZGlzcGxheShyLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uYXBwZW5kKGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSByLnRpdGxlIHx8IHIudGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgJiYgby5hdHRyKCJ0aXRsZSIsIHMpLCBuLlN0b3JlRGF0YShvWzBdLCAiZGF0YSIsIHIpLCB0LnB1c2gobykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uYXBwZW5kTWFueShsLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIGkKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vcGxhY2Vob2xkZXIiLCBbIi4uL3V0aWxzIl0sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihuLmdldCgicGxhY2Vob2xkZXIiKSksIGUuY2FsbCh0aGlzLCB0LCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAodCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0CiAgICAgICAgICAgICAgICAgICAgfSksIHQKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNyZWF0ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5zZWxlY3Rpb25Db250YWluZXIoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5odG1sKHRoaXMuZGlzcGxheSh0KSksIG4uYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIiksIG4KICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IDEgPT0gdC5sZW5ndGggJiYgdFswXS5pZCAhPSB0aGlzLnBsYWNlaG9sZGVyLmlkOwogICAgICAgICAgICAgICAgICAgIGlmICgxIDwgdC5sZW5ndGggfHwgbikgcmV0dXJuIGUuY2FsbCh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmNyZWF0ZVBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuYXBwZW5kKGkpCiAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL2FsbG93Q2xlYXIiLCBbImpxdWVyeSIsICIuLi9rZXlzIiwgIi4uL3V0aWxzIl0sIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkge30KICAgICAgICAgICAgICAgIHJldHVybiBpLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBlLmNhbGwodGhpcywgdCwgbiksIG51bGwgPT0gdGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLm9wdGlvbnMuZ2V0KCJkZWJ1ZyIpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IgJiYgY29uc29sZS5lcnJvcigiU2VsZWN0MjogVGhlIGBhbGxvd0NsZWFyYCBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHBsYWNlaG9sZGVyYCBvcHRpb24uIiksIHRoaXMuJHNlbGVjdGlvbi5vbigibW91c2Vkb3duIiwgIi5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9oYW5kbGVDbGVhcihlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdC5vbigia2V5cHJlc3MiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9oYW5kbGVLZXlib2FyZENsZWFyKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5faGFuZGxlQ2xlYXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSBpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5HZXREYXRhKGlbMF0sICJkYXRhIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuJGVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnBsYWNlaG9sZGVyLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyKCJjbGVhciIsIGEpLCBhLnByZXZlbnRlZCkgdGhpcy4kZWxlbWVudC52YWwobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHIubGVuZ3RoOyBzKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHJbc10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMudHJpZ2dlcigidW5zZWxlY3QiLCBhKSwgYS5wcmV2ZW50ZWQpIHJldHVybiB2b2lkIHRoaXMuJGVsZW1lbnQudmFsKG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKSwgdGhpcy50cmlnZ2VyKCJ0b2dnbGUiLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLl9oYW5kbGVLZXlib2FyZENsZWFyID0gZnVuY3Rpb24oZSwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGkuaXNPcGVuKCkgfHwgbi53aGljaCAhPSB0LkRFTEVURSAmJiBuLndoaWNoICE9IHQuQkFDS1NQQUNFIHx8IHRoaXMuX2hhbmRsZUNsZWFyKG4pCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuY2FsbCh0aGlzLCBpKSwgISgwIDwgdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIiKS5sZW5ndGggfHwgMCA9PT0gaS5sZW5ndGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5vcHRpb25zLmdldCgidHJhbnNsYXRpb25zIikuZ2V0KCJyZW1vdmVBbGxJdGVtcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUoJzxzcGFuIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIiIHRpdGxlPSInICsgcigpICsgJyI+JnRpbWVzOzwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5TdG9yZURhdGEob1swXSwgImRhdGEiLCBpKSwgdGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiKS5wcmVwZW5kKG8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgaQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9zZWFyY2giLCBbImpxdWVyeSIsICIuLi91dGlscyIsICIuLi9rZXlzIl0sIChmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBpLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlKCc8bGkgY2xhc3M9InNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1pbmxpbmUiPjxpbnB1dCBjbGFzcz0ic2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIiB0eXBlPSJzZWFyY2giIHRhYmluZGV4PSItMSIgYXV0b2NvbXBsZXRlPSJvZmYiIGF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJub25lIiBzcGVsbGNoZWNrPSJmYWxzZSIgcm9sZT0ic2VhcmNoYm94IiBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIgLz48L2xpPicpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9IG4sIHRoaXMuJHNlYXJjaCA9IG4uZmluZCgiaW5wdXQiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHQuY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpLCBpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZSwgaSwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkuaWQgKyAiLXJlc3VsdHMiOwogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCBpLCByKSwgaS5vbigib3BlbiIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby4kc2VhcmNoLmF0dHIoImFyaWEtY29udHJvbHMiLCBhKSwgby4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgICAgICB9KSksIGkub24oImNsb3NlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBvLiRzZWFyY2gudmFsKCIiKSwgby4kc2VhcmNoLnJlbW92ZUF0dHIoImFyaWEtY29udHJvbHMiKSwgby4kc2VhcmNoLnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLCBvLiRzZWFyY2gudHJpZ2dlcigiZm9jdXMiKQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5vbigiZW5hYmxlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBvLiRzZWFyY2gucHJvcCgiZGlzYWJsZWQiLCAhMSksIG8uX3RyYW5zZmVyVGFiSW5kZXgoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS5vbigiZGlzYWJsZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby4kc2VhcmNoLnByb3AoImRpc2FibGVkIiwgITApCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpLm9uKCJmb2N1cyIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBpLm9uKCJyZXN1bHRzOmZvY3VzIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhLl9yZXN1bHRJZCA/IG8uJHNlYXJjaC5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCBlLmRhdGEuX3Jlc3VsdElkKSA6IG8uJHNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJmb2N1c2luIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby50cmlnZ2VyKCJmb2N1cyIsIGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImZvY3Vzb3V0IiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby5faGFuZGxlQmx1cihlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kc2VsZWN0aW9uLm9uKCJrZXlkb3duIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9uKCksIG8udHJpZ2dlcigia2V5cHJlc3MiLCBlKSwgby5fa2V5VXBQcmV2ZW50ZWQgPSBlLmlzRGVmYXVsdFByZXZlbnRlZCgpLCBlLndoaWNoID09PSBuLkJBQ0tTUEFDRSAmJiAiIiA9PT0gby4kc2VhcmNoLnZhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG8uJHNlYXJjaENvbnRhaW5lci5wcmV2KCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPCBpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5HZXREYXRhKGlbMF0sICJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5zZWFyY2hSZW1vdmVDaG9pY2UociksIGUucHJldmVudERlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImNsaWNrIiwgIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgby4kc2VhcmNoLnZhbCgpICYmIGUuc3RvcFByb3BhZ2F0aW9uKCkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5kb2N1bWVudE1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzICYmIHMgPD0gMTE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VsZWN0aW9uLm9uKCJpbnB1dC5zZWFyY2hjaGVjayIsICIuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPyBvLiRzZWxlY3Rpb24ub2ZmKCJpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2siKSA6IG8uJHNlbGVjdGlvbi5vZmYoImtleXVwLnNlYXJjaCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWxlY3Rpb24ub24oImtleXVwLnNlYXJjaCBpbnB1dC5zZWFyY2giLCAiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmJiAiaW5wdXQiID09PSBlLnR5cGUpIG8uJHNlbGVjdGlvbi5vZmYoImlucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjayIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS53aGljaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgIT0gbi5TSElGVCAmJiB0ICE9IG4uQ1RSTCAmJiB0ICE9IG4uQUxUICYmIHQgIT0gbi5UQUIgJiYgby5oYW5kbGVTZWFyY2goZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuX3RyYW5zZmVyVGFiSW5kZXggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VhcmNoLmF0dHIoInRhYmluZGV4IiwgdGhpcy4kc2VsZWN0aW9uLmF0dHIoInRhYmluZGV4IikpLCB0aGlzLiRzZWxlY3Rpb24uYXR0cigidGFiaW5kZXgiLCAiLTEiKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VhcmNoLmF0dHIoInBsYWNlaG9sZGVyIiwgdC50ZXh0KQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy4kc2VhcmNoWzBdID09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VhcmNoLmF0dHIoInBsYWNlaG9sZGVyIiwgIiIpLCBlLmNhbGwodGhpcywgdCksIHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikuYXBwZW5kKHRoaXMuJHNlYXJjaENvbnRhaW5lciksIHRoaXMucmVzaXplU2VhcmNoKCksIG4gJiYgdGhpcy4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmhhbmRsZVNlYXJjaCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZVNlYXJjaCgpLCAhdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLiRzZWFyY2gudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigicXVlcnkiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gITEKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLnNlYXJjaFJlbW92ZUNob2ljZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoInVuc2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJHNlYXJjaC52YWwodC50ZXh0KSwgdGhpcy5oYW5kbGVTZWFyY2goKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUucmVzaXplU2VhcmNoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2VhcmNoLmNzcygid2lkdGgiLCAiMjVweCIpOwogICAgICAgICAgICAgICAgICAgIHZhciBlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZSA9ICIiICE9PSB0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiKSA/IHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIikud2lkdGgoKSA6IC43NSAqICh0aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoICsgMSkgKyAiZW0iLCB0aGlzLiRzZWFyY2guY3NzKCJ3aWR0aCIsIGUpCiAgICAgICAgICAgICAgICB9LCBpCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL2V2ZW50UmVsYXkiLCBbImpxdWVyeSJdLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gdCgpIHt9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBbIm9wZW4iLCAib3BlbmluZyIsICJjbG9zZSIsICJjbG9zaW5nIiwgInNlbGVjdCIsICJzZWxlY3RpbmciLCAidW5zZWxlY3QiLCAidW5zZWxlY3RpbmciLCAiY2xlYXIiLCAiY2xlYXJpbmciXSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IFsib3BlbmluZyIsICJjbG9zaW5nIiwgInNlbGVjdGluZyIsICJ1bnNlbGVjdGluZyIsICJjbGVhcmluZyJdOwogICAgICAgICAgICAgICAgICAgIHQuY2FsbCh0aGlzLCBuLCBpKSwgbi5vbigiKiIsIChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gZS5pbkFycmF5KHQsIG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbiB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gZS5FdmVudCgic2VsZWN0MjoiICsgdCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLiRlbGVtZW50LnRyaWdnZXIoaSksIC0xICE9PSBlLmluQXJyYXkodCwgYSkgJiYgKG4ucHJldmVudGVkID0gaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgdAogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL3RyYW5zbGF0aW9uIiwgWyJqcXVlcnkiLCAicmVxdWlyZSJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWN0ID0gZSB8fCB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG4ucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpY3QKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaWN0W2VdCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWN0ID0gZS5leHRlbmQoe30sIHQuYWxsKCksIHRoaXMuZGljdCkKICAgICAgICAgICAgICAgIH0sIG4uX2NhY2hlID0ge30sIG4ubG9hZFBhdGggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbiBuLl9jYWNoZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0KGUpOwogICAgICAgICAgICAgICAgICAgICAgICBuLl9jYWNoZVtlXSA9IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBuKG4uX2NhY2hlW2VdKQogICAgICAgICAgICAgICAgfSwgbgogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RpYWNyaXRpY3MiLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAi4pK2IjogIkEiLAogICAgICAgICAgICAgICAgICAgICLvvKEiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIsOAIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLDgSI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAiw4IiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuG6piI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAi4bqkIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLhuqoiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuG6qCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAiw4MiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIsSAIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLEgiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAi4bqwIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLhuq4iOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuG6tCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAi4bqyIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLIpiI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAix6AiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIsOEIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLHniI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAi4bqiIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLDhSI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAix7oiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIseNIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLIgCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAiyIIiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuG6oCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAi4bqsIjogIkEiLAogICAgICAgICAgICAgICAgICAgICLhurYiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuG4gCI6ICJBIiwKICAgICAgICAgICAgICAgICAgICAixIQiOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIsi6IjogIkEiLAogICAgICAgICAgICAgICAgICAgICLisa8iOiAiQSIsCiAgICAgICAgICAgICAgICAgICAgIuqcsiI6ICJBQSIsCiAgICAgICAgICAgICAgICAgICAgIsOGIjogIkFFIiwKICAgICAgICAgICAgICAgICAgICAix7wiOiAiQUUiLAogICAgICAgICAgICAgICAgICAgICLHoiI6ICJBRSIsCiAgICAgICAgICAgICAgICAgICAgIuqctCI6ICJBTyIsCiAgICAgICAgICAgICAgICAgICAgIuqctiI6ICJBVSIsCiAgICAgICAgICAgICAgICAgICAgIuqcuCI6ICJBViIsCiAgICAgICAgICAgICAgICAgICAgIuqcuiI6ICJBViIsCiAgICAgICAgICAgICAgICAgICAgIuqcvCI6ICJBWSIsCiAgICAgICAgICAgICAgICAgICAgIuKStyI6ICJCIiwKICAgICAgICAgICAgICAgICAgICAi77yiIjogIkIiLAogICAgICAgICAgICAgICAgICAgICLhuIIiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgIuG4hCI6ICJCIiwKICAgICAgICAgICAgICAgICAgICAi4biGIjogIkIiLAogICAgICAgICAgICAgICAgICAgICLJgyI6ICJCIiwKICAgICAgICAgICAgICAgICAgICAixoIiOiAiQiIsCiAgICAgICAgICAgICAgICAgICAgIsaBIjogIkIiLAogICAgICAgICAgICAgICAgICAgICLikrgiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgIu+8oyI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAixIYiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgIsSIIjogIkMiLAogICAgICAgICAgICAgICAgICAgICLEiiI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAixIwiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgIsOHIjogIkMiLAogICAgICAgICAgICAgICAgICAgICLhuIgiOiAiQyIsCiAgICAgICAgICAgICAgICAgICAgIsaHIjogIkMiLAogICAgICAgICAgICAgICAgICAgICLIuyI6ICJDIiwKICAgICAgICAgICAgICAgICAgICAi6py+IjogIkMiLAogICAgICAgICAgICAgICAgICAgICLikrkiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgIu+8pCI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAi4biKIjogIkQiLAogICAgICAgICAgICAgICAgICAgICLEjiI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAi4biMIjogIkQiLAogICAgICAgICAgICAgICAgICAgICLhuJAiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgIuG4kiI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAi4biOIjogIkQiLAogICAgICAgICAgICAgICAgICAgICLEkCI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAixosiOiAiRCIsCiAgICAgICAgICAgICAgICAgICAgIsaKIjogIkQiLAogICAgICAgICAgICAgICAgICAgICLGiSI6ICJEIiwKICAgICAgICAgICAgICAgICAgICAi6p25IjogIkQiLAogICAgICAgICAgICAgICAgICAgICLHsSI6ICJEWiIsCiAgICAgICAgICAgICAgICAgICAgIseEIjogIkRaIiwKICAgICAgICAgICAgICAgICAgICAix7IiOiAiRHoiLAogICAgICAgICAgICAgICAgICAgICLHhSI6ICJEeiIsCiAgICAgICAgICAgICAgICAgICAgIuKSuiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi77ylIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLDiCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAiw4kiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIsOKIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLhu4AiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIuG6viI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4buEIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLhu4IiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIuG6vCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAixJIiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIuG4lCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4biWIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLElCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAixJYiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIsOLIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLhuroiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIsSaIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLIhCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAiyIYiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIuG6uCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4buGIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLIqCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4bicIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLEmCI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4biYIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLhuJoiOiAiRSIsCiAgICAgICAgICAgICAgICAgICAgIsaQIjogIkUiLAogICAgICAgICAgICAgICAgICAgICLGjiI6ICJFIiwKICAgICAgICAgICAgICAgICAgICAi4pK7IjogIkYiLAogICAgICAgICAgICAgICAgICAgICLvvKYiOiAiRiIsCiAgICAgICAgICAgICAgICAgICAgIuG4niI6ICJGIiwKICAgICAgICAgICAgICAgICAgICAixpEiOiAiRiIsCiAgICAgICAgICAgICAgICAgICAgIuqduyI6ICJGIiwKICAgICAgICAgICAgICAgICAgICAi4pK8IjogIkciLAogICAgICAgICAgICAgICAgICAgICLvvKciOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgIse0IjogIkciLAogICAgICAgICAgICAgICAgICAgICLEnCI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAi4bigIjogIkciLAogICAgICAgICAgICAgICAgICAgICLEniI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAixKAiOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgIsemIjogIkciLAogICAgICAgICAgICAgICAgICAgICLEoiI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAix6QiOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgIsaTIjogIkciLAogICAgICAgICAgICAgICAgICAgICLqnqAiOiAiRyIsCiAgICAgICAgICAgICAgICAgICAgIuqdvSI6ICJHIiwKICAgICAgICAgICAgICAgICAgICAi6p2+IjogIkciLAogICAgICAgICAgICAgICAgICAgICLikr0iOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgIu+8qCI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAixKQiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgIuG4oiI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAi4bimIjogIkgiLAogICAgICAgICAgICAgICAgICAgICLIniI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAi4bikIjogIkgiLAogICAgICAgICAgICAgICAgICAgICLhuKgiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgIuG4qiI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAixKYiOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgIuKxpyI6ICJIIiwKICAgICAgICAgICAgICAgICAgICAi4rG1IjogIkgiLAogICAgICAgICAgICAgICAgICAgICLqno0iOiAiSCIsCiAgICAgICAgICAgICAgICAgICAgIuKSviI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAi77ypIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLDjCI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAiw40iOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIsOOIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLEqCI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAixKoiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIsSsIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLEsCI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAiw48iOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIuG4riI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAi4buIIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLHjyI6ICJJIiwKICAgICAgICAgICAgICAgICAgICAiyIgiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIsiKIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLhu4oiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIsSuIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLhuKwiOiAiSSIsCiAgICAgICAgICAgICAgICAgICAgIsaXIjogIkkiLAogICAgICAgICAgICAgICAgICAgICLikr8iOiAiSiIsCiAgICAgICAgICAgICAgICAgICAgIu+8qiI6ICJKIiwKICAgICAgICAgICAgICAgICAgICAixLQiOiAiSiIsCiAgICAgICAgICAgICAgICAgICAgIsmIIjogIkoiLAogICAgICAgICAgICAgICAgICAgICLik4AiOiAiSyIsCiAgICAgICAgICAgICAgICAgICAgIu+8qyI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAi4biwIjogIksiLAogICAgICAgICAgICAgICAgICAgICLHqCI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAi4biyIjogIksiLAogICAgICAgICAgICAgICAgICAgICLEtiI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAi4bi0IjogIksiLAogICAgICAgICAgICAgICAgICAgICLGmCI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAi4rGpIjogIksiLAogICAgICAgICAgICAgICAgICAgICLqnYAiOiAiSyIsCiAgICAgICAgICAgICAgICAgICAgIuqdgiI6ICJLIiwKICAgICAgICAgICAgICAgICAgICAi6p2EIjogIksiLAogICAgICAgICAgICAgICAgICAgICLqnqIiOiAiSyIsCiAgICAgICAgICAgICAgICAgICAgIuKTgSI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAi77ysIjogIkwiLAogICAgICAgICAgICAgICAgICAgICLEvyI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAixLkiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgIsS9IjogIkwiLAogICAgICAgICAgICAgICAgICAgICLhuLYiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgIuG4uCI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAixLsiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgIuG4vCI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAi4bi6IjogIkwiLAogICAgICAgICAgICAgICAgICAgICLFgSI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAiyL0iOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgIuKxoiI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAi4rGgIjogIkwiLAogICAgICAgICAgICAgICAgICAgICLqnYgiOiAiTCIsCiAgICAgICAgICAgICAgICAgICAgIuqdhiI6ICJMIiwKICAgICAgICAgICAgICAgICAgICAi6p6AIjogIkwiLAogICAgICAgICAgICAgICAgICAgICLHhyI6ICJMSiIsCiAgICAgICAgICAgICAgICAgICAgIseIIjogIkxqIiwKICAgICAgICAgICAgICAgICAgICAi4pOCIjogIk0iLAogICAgICAgICAgICAgICAgICAgICLvvK0iOiAiTSIsCiAgICAgICAgICAgICAgICAgICAgIuG4viI6ICJNIiwKICAgICAgICAgICAgICAgICAgICAi4bmAIjogIk0iLAogICAgICAgICAgICAgICAgICAgICLhuYIiOiAiTSIsCiAgICAgICAgICAgICAgICAgICAgIuKxriI6ICJNIiwKICAgICAgICAgICAgICAgICAgICAixpwiOiAiTSIsCiAgICAgICAgICAgICAgICAgICAgIuKTgyI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAi77yuIjogIk4iLAogICAgICAgICAgICAgICAgICAgICLHuCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAixYMiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIsORIjogIk4iLAogICAgICAgICAgICAgICAgICAgICLhuYQiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIsWHIjogIk4iLAogICAgICAgICAgICAgICAgICAgICLhuYYiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIsWFIjogIk4iLAogICAgICAgICAgICAgICAgICAgICLhuYoiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIuG5iCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAiyKAiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIsadIjogIk4iLAogICAgICAgICAgICAgICAgICAgICLqnpAiOiAiTiIsCiAgICAgICAgICAgICAgICAgICAgIuqepCI6ICJOIiwKICAgICAgICAgICAgICAgICAgICAix4oiOiAiTkoiLAogICAgICAgICAgICAgICAgICAgICLHiyI6ICJOaiIsCiAgICAgICAgICAgICAgICAgICAgIuKThCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAi77yvIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLDkiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAiw5MiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsOUIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhu5IiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIuG7kCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAi4buWIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhu5QiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsOVIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhuYwiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsisIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhuY4iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsWMIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhuZAiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIuG5kiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAixY4iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsiuIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLIsCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAiw5YiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsiqIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhu44iOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsWQIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLHkSI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAiyIwiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsiOIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLGoCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAi4bucIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhu5oiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIuG7oCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAi4bueIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLhu6IiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIuG7jCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAi4buYIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLHqiI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAix6wiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsOYIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLHviI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAixoYiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIsafIjogIk8iLAogICAgICAgICAgICAgICAgICAgICLqnYoiOiAiTyIsCiAgICAgICAgICAgICAgICAgICAgIuqdjCI6ICJPIiwKICAgICAgICAgICAgICAgICAgICAixZIiOiAiT0UiLAogICAgICAgICAgICAgICAgICAgICLGoiI6ICJPSSIsCiAgICAgICAgICAgICAgICAgICAgIuqdjiI6ICJPTyIsCiAgICAgICAgICAgICAgICAgICAgIsiiIjogIk9VIiwKICAgICAgICAgICAgICAgICAgICAi4pOFIjogIlAiLAogICAgICAgICAgICAgICAgICAgICLvvLAiOiAiUCIsCiAgICAgICAgICAgICAgICAgICAgIuG5lCI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAi4bmWIjogIlAiLAogICAgICAgICAgICAgICAgICAgICLGpCI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAi4rGjIjogIlAiLAogICAgICAgICAgICAgICAgICAgICLqnZAiOiAiUCIsCiAgICAgICAgICAgICAgICAgICAgIuqdkiI6ICJQIiwKICAgICAgICAgICAgICAgICAgICAi6p2UIjogIlAiLAogICAgICAgICAgICAgICAgICAgICLik4YiOiAiUSIsCiAgICAgICAgICAgICAgICAgICAgIu+8sSI6ICJRIiwKICAgICAgICAgICAgICAgICAgICAi6p2WIjogIlEiLAogICAgICAgICAgICAgICAgICAgICLqnZgiOiAiUSIsCiAgICAgICAgICAgICAgICAgICAgIsmKIjogIlEiLAogICAgICAgICAgICAgICAgICAgICLik4ciOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIu+8siI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAixZQiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIuG5mCI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAixZgiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIsiQIjogIlIiLAogICAgICAgICAgICAgICAgICAgICLIkiI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAi4bmaIjogIlIiLAogICAgICAgICAgICAgICAgICAgICLhuZwiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIsWWIjogIlIiLAogICAgICAgICAgICAgICAgICAgICLhuZ4iOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIsmMIjogIlIiLAogICAgICAgICAgICAgICAgICAgICLisaQiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIuqdmiI6ICJSIiwKICAgICAgICAgICAgICAgICAgICAi6p6mIjogIlIiLAogICAgICAgICAgICAgICAgICAgICLqnoIiOiAiUiIsCiAgICAgICAgICAgICAgICAgICAgIuKTiCI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAi77yzIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLhup4iOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIsWaIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLhuaQiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIsWcIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLhuaAiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIsWgIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLhuaYiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIuG5oiI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAi4bmoIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLImCI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAixZ4iOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIuKxviI6ICJTIiwKICAgICAgICAgICAgICAgICAgICAi6p6oIjogIlMiLAogICAgICAgICAgICAgICAgICAgICLqnoQiOiAiUyIsCiAgICAgICAgICAgICAgICAgICAgIuKTiSI6ICJUIiwKICAgICAgICAgICAgICAgICAgICAi77y0IjogIlQiLAogICAgICAgICAgICAgICAgICAgICLhuaoiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgIsWkIjogIlQiLAogICAgICAgICAgICAgICAgICAgICLhuawiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgIsiaIjogIlQiLAogICAgICAgICAgICAgICAgICAgICLFoiI6ICJUIiwKICAgICAgICAgICAgICAgICAgICAi4bmwIjogIlQiLAogICAgICAgICAgICAgICAgICAgICLhua4iOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgIsWmIjogIlQiLAogICAgICAgICAgICAgICAgICAgICLGrCI6ICJUIiwKICAgICAgICAgICAgICAgICAgICAixq4iOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgIsi+IjogIlQiLAogICAgICAgICAgICAgICAgICAgICLqnoYiOiAiVCIsCiAgICAgICAgICAgICAgICAgICAgIuqcqCI6ICJUWiIsCiAgICAgICAgICAgICAgICAgICAgIuKTiiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi77y1IjogIlUiLAogICAgICAgICAgICAgICAgICAgICLDmSI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAiw5oiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIsObIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLFqCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4bm4IjogIlUiLAogICAgICAgICAgICAgICAgICAgICLFqiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4bm6IjogIlUiLAogICAgICAgICAgICAgICAgICAgICLFrCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAiw5wiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIsebIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLHlyI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAix5UiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIseZIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLhu6YiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIsWuIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLFsCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAix5MiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIsiUIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLIliI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAixq8iOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIuG7qiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4buoIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLhu64iOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIuG7rCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4buwIjogIlUiLAogICAgICAgICAgICAgICAgICAgICLhu6QiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIuG5siI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAixbIiOiAiVSIsCiAgICAgICAgICAgICAgICAgICAgIuG5tiI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4bm0IjogIlUiLAogICAgICAgICAgICAgICAgICAgICLJhCI6ICJVIiwKICAgICAgICAgICAgICAgICAgICAi4pOLIjogIlYiLAogICAgICAgICAgICAgICAgICAgICLvvLYiOiAiViIsCiAgICAgICAgICAgICAgICAgICAgIuG5vCI6ICJWIiwKICAgICAgICAgICAgICAgICAgICAi4bm+IjogIlYiLAogICAgICAgICAgICAgICAgICAgICLGsiI6ICJWIiwKICAgICAgICAgICAgICAgICAgICAi6p2eIjogIlYiLAogICAgICAgICAgICAgICAgICAgICLJhSI6ICJWIiwKICAgICAgICAgICAgICAgICAgICAi6p2gIjogIlZZIiwKICAgICAgICAgICAgICAgICAgICAi4pOMIjogIlciLAogICAgICAgICAgICAgICAgICAgICLvvLciOiAiVyIsCiAgICAgICAgICAgICAgICAgICAgIuG6gCI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAi4bqCIjogIlciLAogICAgICAgICAgICAgICAgICAgICLFtCI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAi4bqGIjogIlciLAogICAgICAgICAgICAgICAgICAgICLhuoQiOiAiVyIsCiAgICAgICAgICAgICAgICAgICAgIuG6iCI6ICJXIiwKICAgICAgICAgICAgICAgICAgICAi4rGyIjogIlciLAogICAgICAgICAgICAgICAgICAgICLik40iOiAiWCIsCiAgICAgICAgICAgICAgICAgICAgIu+8uCI6ICJYIiwKICAgICAgICAgICAgICAgICAgICAi4bqKIjogIlgiLAogICAgICAgICAgICAgICAgICAgICLhuowiOiAiWCIsCiAgICAgICAgICAgICAgICAgICAgIuKTjiI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAi77y5IjogIlkiLAogICAgICAgICAgICAgICAgICAgICLhu7IiOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgIsOdIjogIlkiLAogICAgICAgICAgICAgICAgICAgICLFtiI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAi4bu4IjogIlkiLAogICAgICAgICAgICAgICAgICAgICLIsiI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAi4bqOIjogIlkiLAogICAgICAgICAgICAgICAgICAgICLFuCI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAi4bu2IjogIlkiLAogICAgICAgICAgICAgICAgICAgICLhu7QiOiAiWSIsCiAgICAgICAgICAgICAgICAgICAgIsazIjogIlkiLAogICAgICAgICAgICAgICAgICAgICLJjiI6ICJZIiwKICAgICAgICAgICAgICAgICAgICAi4bu+IjogIlkiLAogICAgICAgICAgICAgICAgICAgICLik48iOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIu+8uiI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAixbkiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIuG6kCI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAixbsiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIsW9IjogIloiLAogICAgICAgICAgICAgICAgICAgICLhupIiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIuG6lCI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAixrUiOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIsikIjogIloiLAogICAgICAgICAgICAgICAgICAgICLisb8iOiAiWiIsCiAgICAgICAgICAgICAgICAgICAgIuKxqyI6ICJaIiwKICAgICAgICAgICAgICAgICAgICAi6p2iIjogIloiLAogICAgICAgICAgICAgICAgICAgICLik5AiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIu+9gSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAi4bqaIjogImEiLAogICAgICAgICAgICAgICAgICAgICLDoCI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAiw6EiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsOiIjogImEiLAogICAgICAgICAgICAgICAgICAgICLhuqciOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIuG6pSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAi4bqrIjogImEiLAogICAgICAgICAgICAgICAgICAgICLhuqkiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsOjIjogImEiLAogICAgICAgICAgICAgICAgICAgICLEgSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAixIMiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIuG6sSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAi4bqvIjogImEiLAogICAgICAgICAgICAgICAgICAgICLhurUiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIuG6syI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAiyKciOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsehIjogImEiLAogICAgICAgICAgICAgICAgICAgICLDpCI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAix58iOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIuG6oyI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAiw6UiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIse7IjogImEiLAogICAgICAgICAgICAgICAgICAgICLHjiI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAiyIEiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsiDIjogImEiLAogICAgICAgICAgICAgICAgICAgICLhuqEiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIuG6rSI6ICJhIiwKICAgICAgICAgICAgICAgICAgICAi4bq3IjogImEiLAogICAgICAgICAgICAgICAgICAgICLhuIEiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsSFIjogImEiLAogICAgICAgICAgICAgICAgICAgICLisaUiOiAiYSIsCiAgICAgICAgICAgICAgICAgICAgIsmQIjogImEiLAogICAgICAgICAgICAgICAgICAgICLqnLMiOiAiYWEiLAogICAgICAgICAgICAgICAgICAgICLDpiI6ICJhZSIsCiAgICAgICAgICAgICAgICAgICAgIse9IjogImFlIiwKICAgICAgICAgICAgICAgICAgICAix6MiOiAiYWUiLAogICAgICAgICAgICAgICAgICAgICLqnLUiOiAiYW8iLAogICAgICAgICAgICAgICAgICAgICLqnLciOiAiYXUiLAogICAgICAgICAgICAgICAgICAgICLqnLkiOiAiYXYiLAogICAgICAgICAgICAgICAgICAgICLqnLsiOiAiYXYiLAogICAgICAgICAgICAgICAgICAgICLqnL0iOiAiYXkiLAogICAgICAgICAgICAgICAgICAgICLik5EiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgIu+9giI6ICJiIiwKICAgICAgICAgICAgICAgICAgICAi4biDIjogImIiLAogICAgICAgICAgICAgICAgICAgICLhuIUiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgIuG4hyI6ICJiIiwKICAgICAgICAgICAgICAgICAgICAixoAiOiAiYiIsCiAgICAgICAgICAgICAgICAgICAgIsaDIjogImIiLAogICAgICAgICAgICAgICAgICAgICLJkyI6ICJiIiwKICAgICAgICAgICAgICAgICAgICAi4pOSIjogImMiLAogICAgICAgICAgICAgICAgICAgICLvvYMiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgIsSHIjogImMiLAogICAgICAgICAgICAgICAgICAgICLEiSI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAixIsiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgIsSNIjogImMiLAogICAgICAgICAgICAgICAgICAgICLDpyI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAi4biJIjogImMiLAogICAgICAgICAgICAgICAgICAgICLGiCI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAiyLwiOiAiYyIsCiAgICAgICAgICAgICAgICAgICAgIuqcvyI6ICJjIiwKICAgICAgICAgICAgICAgICAgICAi4oaEIjogImMiLAogICAgICAgICAgICAgICAgICAgICLik5MiOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgIu+9hCI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAi4biLIjogImQiLAogICAgICAgICAgICAgICAgICAgICLEjyI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAi4biNIjogImQiLAogICAgICAgICAgICAgICAgICAgICLhuJEiOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgIuG4kyI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAi4biPIjogImQiLAogICAgICAgICAgICAgICAgICAgICLEkSI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAixowiOiAiZCIsCiAgICAgICAgICAgICAgICAgICAgIsmWIjogImQiLAogICAgICAgICAgICAgICAgICAgICLJlyI6ICJkIiwKICAgICAgICAgICAgICAgICAgICAi6p26IjogImQiLAogICAgICAgICAgICAgICAgICAgICLHsyI6ICJkeiIsCiAgICAgICAgICAgICAgICAgICAgIseGIjogImR6IiwKICAgICAgICAgICAgICAgICAgICAi4pOUIjogImUiLAogICAgICAgICAgICAgICAgICAgICLvvYUiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsOoIjogImUiLAogICAgICAgICAgICAgICAgICAgICLDqSI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAiw6oiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIuG7gSI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAi4bq/IjogImUiLAogICAgICAgICAgICAgICAgICAgICLhu4UiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIuG7gyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAi4bq9IjogImUiLAogICAgICAgICAgICAgICAgICAgICLEkyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAi4biVIjogImUiLAogICAgICAgICAgICAgICAgICAgICLhuJciOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsSVIjogImUiLAogICAgICAgICAgICAgICAgICAgICLElyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAiw6siOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIuG6uyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAixJsiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsiFIjogImUiLAogICAgICAgICAgICAgICAgICAgICLIhyI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAi4bq5IjogImUiLAogICAgICAgICAgICAgICAgICAgICLhu4ciOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsipIjogImUiLAogICAgICAgICAgICAgICAgICAgICLhuJ0iOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsSZIjogImUiLAogICAgICAgICAgICAgICAgICAgICLhuJkiOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIuG4myI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAiyYciOiAiZSIsCiAgICAgICAgICAgICAgICAgICAgIsmbIjogImUiLAogICAgICAgICAgICAgICAgICAgICLHnSI6ICJlIiwKICAgICAgICAgICAgICAgICAgICAi4pOVIjogImYiLAogICAgICAgICAgICAgICAgICAgICLvvYYiOiAiZiIsCiAgICAgICAgICAgICAgICAgICAgIuG4nyI6ICJmIiwKICAgICAgICAgICAgICAgICAgICAixpIiOiAiZiIsCiAgICAgICAgICAgICAgICAgICAgIuqdvCI6ICJmIiwKICAgICAgICAgICAgICAgICAgICAi4pOWIjogImciLAogICAgICAgICAgICAgICAgICAgICLvvYciOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgIse1IjogImciLAogICAgICAgICAgICAgICAgICAgICLEnSI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAi4bihIjogImciLAogICAgICAgICAgICAgICAgICAgICLEnyI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAixKEiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgIsenIjogImciLAogICAgICAgICAgICAgICAgICAgICLEoyI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAix6UiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgIsmgIjogImciLAogICAgICAgICAgICAgICAgICAgICLqnqEiOiAiZyIsCiAgICAgICAgICAgICAgICAgICAgIuG1uSI6ICJnIiwKICAgICAgICAgICAgICAgICAgICAi6p2/IjogImciLAogICAgICAgICAgICAgICAgICAgICLik5ciOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgIu+9iCI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAixKUiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgIuG4oyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAi4binIjogImgiLAogICAgICAgICAgICAgICAgICAgICLInyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAi4bilIjogImgiLAogICAgICAgICAgICAgICAgICAgICLhuKkiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgIuG4qyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAi4bqWIjogImgiLAogICAgICAgICAgICAgICAgICAgICLEpyI6ICJoIiwKICAgICAgICAgICAgICAgICAgICAi4rGoIjogImgiLAogICAgICAgICAgICAgICAgICAgICLisbYiOiAiaCIsCiAgICAgICAgICAgICAgICAgICAgIsmlIjogImgiLAogICAgICAgICAgICAgICAgICAgICLGlSI6ICJodiIsCiAgICAgICAgICAgICAgICAgICAgIuKTmCI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAi772JIjogImkiLAogICAgICAgICAgICAgICAgICAgICLDrCI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAiw60iOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIsOuIjogImkiLAogICAgICAgICAgICAgICAgICAgICLEqSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAixKsiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIsStIjogImkiLAogICAgICAgICAgICAgICAgICAgICLDryI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAi4bivIjogImkiLAogICAgICAgICAgICAgICAgICAgICLhu4kiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIseQIjogImkiLAogICAgICAgICAgICAgICAgICAgICLIiSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAiyIsiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIuG7iyI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAixK8iOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIuG4rSI6ICJpIiwKICAgICAgICAgICAgICAgICAgICAiyagiOiAiaSIsCiAgICAgICAgICAgICAgICAgICAgIsSxIjogImkiLAogICAgICAgICAgICAgICAgICAgICLik5kiOiAiaiIsCiAgICAgICAgICAgICAgICAgICAgIu+9iiI6ICJqIiwKICAgICAgICAgICAgICAgICAgICAixLUiOiAiaiIsCiAgICAgICAgICAgICAgICAgICAgIsewIjogImoiLAogICAgICAgICAgICAgICAgICAgICLJiSI6ICJqIiwKICAgICAgICAgICAgICAgICAgICAi4pOaIjogImsiLAogICAgICAgICAgICAgICAgICAgICLvvYsiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgIuG4sSI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAix6kiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgIuG4syI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAixLciOiAiayIsCiAgICAgICAgICAgICAgICAgICAgIuG4tSI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAixpkiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgIuKxqiI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAi6p2BIjogImsiLAogICAgICAgICAgICAgICAgICAgICLqnYMiOiAiayIsCiAgICAgICAgICAgICAgICAgICAgIuqdhSI6ICJrIiwKICAgICAgICAgICAgICAgICAgICAi6p6jIjogImsiLAogICAgICAgICAgICAgICAgICAgICLik5siOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIu+9jCI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAixYAiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIsS6IjogImwiLAogICAgICAgICAgICAgICAgICAgICLEviI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAi4bi3IjogImwiLAogICAgICAgICAgICAgICAgICAgICLhuLkiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIsS8IjogImwiLAogICAgICAgICAgICAgICAgICAgICLhuL0iOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIuG4uyI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAixb8iOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIsWCIjogImwiLAogICAgICAgICAgICAgICAgICAgICLGmiI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAiyasiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIuKxoSI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAi6p2JIjogImwiLAogICAgICAgICAgICAgICAgICAgICLqnoEiOiAibCIsCiAgICAgICAgICAgICAgICAgICAgIuqdhyI6ICJsIiwKICAgICAgICAgICAgICAgICAgICAix4kiOiAibGoiLAogICAgICAgICAgICAgICAgICAgICLik5wiOiAibSIsCiAgICAgICAgICAgICAgICAgICAgIu+9jSI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAi4bi/IjogIm0iLAogICAgICAgICAgICAgICAgICAgICLhuYEiOiAibSIsCiAgICAgICAgICAgICAgICAgICAgIuG5gyI6ICJtIiwKICAgICAgICAgICAgICAgICAgICAiybEiOiAibSIsCiAgICAgICAgICAgICAgICAgICAgIsmvIjogIm0iLAogICAgICAgICAgICAgICAgICAgICLik50iOiAibiIsCiAgICAgICAgICAgICAgICAgICAgIu+9jiI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAix7kiOiAibiIsCiAgICAgICAgICAgICAgICAgICAgIsWEIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLDsSI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAi4bmFIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLFiCI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAi4bmHIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLFhiI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAi4bmLIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLhuYkiOiAibiIsCiAgICAgICAgICAgICAgICAgICAgIsaeIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLJsiI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAixYkiOiAibiIsCiAgICAgICAgICAgICAgICAgICAgIuqekSI6ICJuIiwKICAgICAgICAgICAgICAgICAgICAi6p6lIjogIm4iLAogICAgICAgICAgICAgICAgICAgICLHjCI6ICJuaiIsCiAgICAgICAgICAgICAgICAgICAgIuKTniI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi772PIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLDsiI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAiw7MiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsO0IjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhu5MiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIuG7kSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi4buXIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhu5UiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsO1IjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhuY0iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsitIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhuY8iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsWNIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhuZEiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIuG5kyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAixY8iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsivIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLIsSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAiw7YiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsirIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhu48iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsWRIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLHkiI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAiyI0iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsiPIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLGoSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi4budIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhu5siOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIuG7oSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi4bufIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLhu6MiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIuG7jSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi4buZIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLHqyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAix60iOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIsO4IjogIm8iLAogICAgICAgICAgICAgICAgICAgICLHvyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAiyZQiOiAibyIsCiAgICAgICAgICAgICAgICAgICAgIuqdiyI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAi6p2NIjogIm8iLAogICAgICAgICAgICAgICAgICAgICLJtSI6ICJvIiwKICAgICAgICAgICAgICAgICAgICAixZMiOiAib2UiLAogICAgICAgICAgICAgICAgICAgICLGoyI6ICJvaSIsCiAgICAgICAgICAgICAgICAgICAgIsijIjogIm91IiwKICAgICAgICAgICAgICAgICAgICAi6p2PIjogIm9vIiwKICAgICAgICAgICAgICAgICAgICAi4pOfIjogInAiLAogICAgICAgICAgICAgICAgICAgICLvvZAiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgIuG5lSI6ICJwIiwKICAgICAgICAgICAgICAgICAgICAi4bmXIjogInAiLAogICAgICAgICAgICAgICAgICAgICLGpSI6ICJwIiwKICAgICAgICAgICAgICAgICAgICAi4bW9IjogInAiLAogICAgICAgICAgICAgICAgICAgICLqnZEiOiAicCIsCiAgICAgICAgICAgICAgICAgICAgIuqdkyI6ICJwIiwKICAgICAgICAgICAgICAgICAgICAi6p2VIjogInAiLAogICAgICAgICAgICAgICAgICAgICLik6AiOiAicSIsCiAgICAgICAgICAgICAgICAgICAgIu+9kSI6ICJxIiwKICAgICAgICAgICAgICAgICAgICAiyYsiOiAicSIsCiAgICAgICAgICAgICAgICAgICAgIuqdlyI6ICJxIiwKICAgICAgICAgICAgICAgICAgICAi6p2ZIjogInEiLAogICAgICAgICAgICAgICAgICAgICLik6EiOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIu+9kiI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAixZUiOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIuG5mSI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAixZkiOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIsiRIjogInIiLAogICAgICAgICAgICAgICAgICAgICLIkyI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAi4bmbIjogInIiLAogICAgICAgICAgICAgICAgICAgICLhuZ0iOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIsWXIjogInIiLAogICAgICAgICAgICAgICAgICAgICLhuZ8iOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIsmNIjogInIiLAogICAgICAgICAgICAgICAgICAgICLJvSI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAi6p2bIjogInIiLAogICAgICAgICAgICAgICAgICAgICLqnqciOiAiciIsCiAgICAgICAgICAgICAgICAgICAgIuqegyI6ICJyIiwKICAgICAgICAgICAgICAgICAgICAi4pOiIjogInMiLAogICAgICAgICAgICAgICAgICAgICLvvZMiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgIsOfIjogInMiLAogICAgICAgICAgICAgICAgICAgICLFmyI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAi4bmlIjogInMiLAogICAgICAgICAgICAgICAgICAgICLFnSI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAi4bmhIjogInMiLAogICAgICAgICAgICAgICAgICAgICLFoSI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAi4bmnIjogInMiLAogICAgICAgICAgICAgICAgICAgICLhuaMiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgIuG5qSI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAiyJkiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgIsWfIjogInMiLAogICAgICAgICAgICAgICAgICAgICLIvyI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAi6p6pIjogInMiLAogICAgICAgICAgICAgICAgICAgICLqnoUiOiAicyIsCiAgICAgICAgICAgICAgICAgICAgIuG6myI6ICJzIiwKICAgICAgICAgICAgICAgICAgICAi4pOjIjogInQiLAogICAgICAgICAgICAgICAgICAgICLvvZQiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgIuG5qyI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAi4bqXIjogInQiLAogICAgICAgICAgICAgICAgICAgICLFpSI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAi4bmtIjogInQiLAogICAgICAgICAgICAgICAgICAgICLImyI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAixaMiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgIuG5sSI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAi4bmvIjogInQiLAogICAgICAgICAgICAgICAgICAgICLFpyI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAixq0iOiAidCIsCiAgICAgICAgICAgICAgICAgICAgIsqIIjogInQiLAogICAgICAgICAgICAgICAgICAgICLisaYiOiAidCIsCiAgICAgICAgICAgICAgICAgICAgIuqehyI6ICJ0IiwKICAgICAgICAgICAgICAgICAgICAi6pypIjogInR6IiwKICAgICAgICAgICAgICAgICAgICAi4pOkIjogInUiLAogICAgICAgICAgICAgICAgICAgICLvvZUiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsO5IjogInUiLAogICAgICAgICAgICAgICAgICAgICLDuiI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAiw7siOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsWpIjogInUiLAogICAgICAgICAgICAgICAgICAgICLhubkiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsWrIjogInUiLAogICAgICAgICAgICAgICAgICAgICLhubsiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsWtIjogInUiLAogICAgICAgICAgICAgICAgICAgICLDvCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAix5wiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIseYIjogInUiLAogICAgICAgICAgICAgICAgICAgICLHliI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAix5oiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIuG7pyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAixa8iOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsWxIjogInUiLAogICAgICAgICAgICAgICAgICAgICLHlCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAiyJUiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsiXIjogInUiLAogICAgICAgICAgICAgICAgICAgICLGsCI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAi4burIjogInUiLAogICAgICAgICAgICAgICAgICAgICLhu6kiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIuG7ryI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAi4butIjogInUiLAogICAgICAgICAgICAgICAgICAgICLhu7EiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIuG7pSI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAi4bmzIjogInUiLAogICAgICAgICAgICAgICAgICAgICLFsyI6ICJ1IiwKICAgICAgICAgICAgICAgICAgICAi4bm3IjogInUiLAogICAgICAgICAgICAgICAgICAgICLhubUiOiAidSIsCiAgICAgICAgICAgICAgICAgICAgIsqJIjogInUiLAogICAgICAgICAgICAgICAgICAgICLik6UiOiAidiIsCiAgICAgICAgICAgICAgICAgICAgIu+9liI6ICJ2IiwKICAgICAgICAgICAgICAgICAgICAi4bm9IjogInYiLAogICAgICAgICAgICAgICAgICAgICLhub8iOiAidiIsCiAgICAgICAgICAgICAgICAgICAgIsqLIjogInYiLAogICAgICAgICAgICAgICAgICAgICLqnZ8iOiAidiIsCiAgICAgICAgICAgICAgICAgICAgIsqMIjogInYiLAogICAgICAgICAgICAgICAgICAgICLqnaEiOiAidnkiLAogICAgICAgICAgICAgICAgICAgICLik6YiOiAidyIsCiAgICAgICAgICAgICAgICAgICAgIu+9lyI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAi4bqBIjogInciLAogICAgICAgICAgICAgICAgICAgICLhuoMiOiAidyIsCiAgICAgICAgICAgICAgICAgICAgIsW1IjogInciLAogICAgICAgICAgICAgICAgICAgICLhuociOiAidyIsCiAgICAgICAgICAgICAgICAgICAgIuG6hSI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAi4bqYIjogInciLAogICAgICAgICAgICAgICAgICAgICLhuokiOiAidyIsCiAgICAgICAgICAgICAgICAgICAgIuKxsyI6ICJ3IiwKICAgICAgICAgICAgICAgICAgICAi4pOnIjogIngiLAogICAgICAgICAgICAgICAgICAgICLvvZgiOiAieCIsCiAgICAgICAgICAgICAgICAgICAgIuG6iyI6ICJ4IiwKICAgICAgICAgICAgICAgICAgICAi4bqNIjogIngiLAogICAgICAgICAgICAgICAgICAgICLik6giOiAieSIsCiAgICAgICAgICAgICAgICAgICAgIu+9mSI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAi4buzIjogInkiLAogICAgICAgICAgICAgICAgICAgICLDvSI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAixbciOiAieSIsCiAgICAgICAgICAgICAgICAgICAgIuG7uSI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAiyLMiOiAieSIsCiAgICAgICAgICAgICAgICAgICAgIuG6jyI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAiw78iOiAieSIsCiAgICAgICAgICAgICAgICAgICAgIuG7tyI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAi4bqZIjogInkiLAogICAgICAgICAgICAgICAgICAgICLhu7UiOiAieSIsCiAgICAgICAgICAgICAgICAgICAgIsa0IjogInkiLAogICAgICAgICAgICAgICAgICAgICLJjyI6ICJ5IiwKICAgICAgICAgICAgICAgICAgICAi4bu/IjogInkiLAogICAgICAgICAgICAgICAgICAgICLik6kiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIu+9miI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAixboiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIuG6kSI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAixbwiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIsW+IjogInoiLAogICAgICAgICAgICAgICAgICAgICLhupMiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIuG6lSI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAixrYiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIsilIjogInoiLAogICAgICAgICAgICAgICAgICAgICLJgCI6ICJ6IiwKICAgICAgICAgICAgICAgICAgICAi4rGsIjogInoiLAogICAgICAgICAgICAgICAgICAgICLqnaMiOiAieiIsCiAgICAgICAgICAgICAgICAgICAgIs6GIjogIs6RIiwKICAgICAgICAgICAgICAgICAgICAizogiOiAizpUiLAogICAgICAgICAgICAgICAgICAgICLOiSI6ICLOlyIsCiAgICAgICAgICAgICAgICAgICAgIs6KIjogIs6ZIiwKICAgICAgICAgICAgICAgICAgICAizqoiOiAizpkiLAogICAgICAgICAgICAgICAgICAgICLOjCI6ICLOnyIsCiAgICAgICAgICAgICAgICAgICAgIs6OIjogIs6lIiwKICAgICAgICAgICAgICAgICAgICAizqsiOiAizqUiLAogICAgICAgICAgICAgICAgICAgICLOjyI6ICLOqSIsCiAgICAgICAgICAgICAgICAgICAgIs6sIjogIs6xIiwKICAgICAgICAgICAgICAgICAgICAizq0iOiAizrUiLAogICAgICAgICAgICAgICAgICAgICLOriI6ICLOtyIsCiAgICAgICAgICAgICAgICAgICAgIs6vIjogIs65IiwKICAgICAgICAgICAgICAgICAgICAiz4oiOiAizrkiLAogICAgICAgICAgICAgICAgICAgICLOkCI6ICLOuSIsCiAgICAgICAgICAgICAgICAgICAgIs+MIjogIs6/IiwKICAgICAgICAgICAgICAgICAgICAiz40iOiAiz4UiLAogICAgICAgICAgICAgICAgICAgICLPiyI6ICLPhSIsCiAgICAgICAgICAgICAgICAgICAgIs6wIjogIs+FIiwKICAgICAgICAgICAgICAgICAgICAiz44iOiAiz4kiLAogICAgICAgICAgICAgICAgICAgICLPgiI6ICLPgyIsCiAgICAgICAgICAgICAgICAgICAgIuKAmSI6ICInIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYmFzZSIsIFsiLi4vdXRpbHMiXSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSwgbikgewogICAgICAgICAgICAgICAgICAgIHQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlLkV4dGVuZCh0LCBlLk9ic2VydmFibGUpLCB0LnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGhlIGBjdXJyZW50YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuIikKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGhlIGBxdWVyeWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLiIpCiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZSwgdCkge30sIHQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHt9LCB0LnByb3RvdHlwZS5nZW5lcmF0ZVJlc3VsdElkID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5pZCArICItcmVzdWx0LSI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgKz0gZS5nZW5lcmF0ZUNoYXJzKDQpLCBudWxsICE9IG4uaWQgPyBpICs9ICItIiArIG4uaWQudG9TdHJpbmcoKSA6IGkgKz0gIi0iICsgZS5nZW5lcmF0ZUNoYXJzKDQpLCBpCiAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZGF0YS9zZWxlY3QiLCBbIi4vYmFzZSIsICIuLi91dGlscyIsICJqcXVlcnkiXSwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQgPSBlLCB0aGlzLm9wdGlvbnMgPSB0LCBpLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5FeHRlbmQoaSwgZSksIGkucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCI6c2VsZWN0ZWQiKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuaXRlbShlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wdXNoKHIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlKHQpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnNlbGVjdGVkID0gITAsIG4oZS5lbGVtZW50KS5pcygib3B0aW9uIikpIHJldHVybiBlLmVsZW1lbnQuc2VsZWN0ZWQgPSAhMCwgdm9pZCB0aGlzLiRlbGVtZW50LnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgibXVsdGlwbGUiKSkgdGhpcy5jdXJyZW50KChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIChlID0gW2VdKS5wdXNoLmFwcGx5KGUsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGUubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZVtvXS5pZDsgLSAxID09PSBuLmluQXJyYXkoYSwgcikgJiYgci5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdC4kZWxlbWVudC52YWwociksIHQuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLmlkOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LnZhbChpKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbGVtZW50LnByb3AoIm11bHRpcGxlIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc2VsZWN0ZWQgPSAhMSwgbihlLmVsZW1lbnQpLmlzKCJvcHRpb24iKSkgcmV0dXJuIGUuZWxlbWVudC5zZWxlY3RlZCA9ICExLCB2b2lkIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50KChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByID0gW10sIG8gPSAwOyBvIDwgaS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaVtvXS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICE9PSBlLmlkICYmIC0xID09PSBuLmluQXJyYXkoYSwgcikgJiYgci5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LiRlbGVtZW50LnZhbChyKSwgdC4kZWxlbWVudC50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRhaW5lciA9IGUpLm9uKCJzZWxlY3QiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuLnNlbGVjdChlLmRhdGEpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLm9uKCJ1bnNlbGVjdCIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4udW5zZWxlY3QoZS5kYXRhKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgiKiIpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LlJlbW92ZURhdGEodGhpcykKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuY2hpbGRyZW4oKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pcygib3B0aW9uIikgfHwgdC5pcygib3B0Z3JvdXAiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByLml0ZW0odCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIubWF0Y2hlcyhlLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGEgJiYgaS5wdXNoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIHQoewogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzOiBpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmFkZE9wdGlvbnMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdC5hcHBlbmRNYW55KHRoaXMuJGVsZW1lbnQsIGUpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgICAgZS5jaGlsZHJlbiA/IChpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0Z3JvdXAiKSkubGFiZWwgPSBlLnRleHQgOiB2b2lkIDAgIT09IChpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnRleHRDb250ZW50ID8gaS50ZXh0Q29udGVudCA9IGUudGV4dCA6IGkuaW5uZXJUZXh0ID0gZS50ZXh0LCB2b2lkIDAgIT09IGUuaWQgJiYgKGkudmFsdWUgPSBlLmlkKSwgZS5kaXNhYmxlZCAmJiAoaS5kaXNhYmxlZCA9ICEwKSwgZS5zZWxlY3RlZCAmJiAoaS5zZWxlY3RlZCA9ICEwKSwgZS50aXRsZSAmJiAoaS50aXRsZSA9IGUudGl0bGUpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gbihpKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuX25vcm1hbGl6ZUl0ZW0oZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uZWxlbWVudCA9IGksIHQuU3RvcmVEYXRhKGksICJkYXRhIiwgbyksIHIKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLml0ZW0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSAoaSA9IHQuR2V0RGF0YShlWzBdLCAiZGF0YSIpKSkgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuaXMoIm9wdGlvbiIpKSBpID0gewogICAgICAgICAgICAgICAgICAgICAgICBpZDogZS52YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBlLnByb3AoImRpc2FibGVkIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBlLnByb3AoInNlbGVjdGVkIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlLnByb3AoInRpdGxlIikKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUuaXMoIm9wdGdyb3VwIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGUucHJvcCgibGFiZWwiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlLnByb3AoInRpdGxlIikKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgciA9IGUuY2hpbGRyZW4oIm9wdGlvbiIpLCBvID0gW10sIGEgPSAwOyBhIDwgci5sZW5ndGg7IGErKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBuKHJbYV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLml0ZW0ocyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnB1c2gobCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpLmNoaWxkcmVuID0gbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGkgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGkpKS5lbGVtZW50ID0gZVswXSwgdC5TdG9yZURhdGEoZVswXSwgImRhdGEiLCBpKSwgaQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUuX25vcm1hbGl6ZUl0ZW0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgIT09IE9iamVjdChlKSAmJiAoZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGUKICAgICAgICAgICAgICAgICAgICB9KSwgbnVsbCAhPSAoZSA9IG4uZXh0ZW5kKHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICIiCiAgICAgICAgICAgICAgICAgICAgfSwgZSkpLmlkICYmIChlLmlkID0gZS5pZC50b1N0cmluZygpKSwgbnVsbCAhPSBlLnRleHQgJiYgKGUudGV4dCA9IGUudGV4dC50b1N0cmluZygpKSwgbnVsbCA9PSBlLl9yZXN1bHRJZCAmJiBlLmlkICYmIG51bGwgIT0gdGhpcy5jb250YWluZXIgJiYgKGUuX3Jlc3VsdElkID0gdGhpcy5nZW5lcmF0ZVJlc3VsdElkKHRoaXMuY29udGFpbmVyLCBlKSksIG4uZXh0ZW5kKHt9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICExCiAgICAgICAgICAgICAgICAgICAgfSwgZSkKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLm1hdGNoZXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoIm1hdGNoZXIiKShlLCB0KQogICAgICAgICAgICAgICAgfSwgaQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYXJyYXkiLCBbIi4vc2VsZWN0IiwgIi4uL3V0aWxzIiwgImpxdWVyeSJdLCAoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gaShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVRvQ29udmVydCA9IHQuZ2V0KCJkYXRhIikgfHwgW10sIGkuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgZSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0LkV4dGVuZChpLCBlKSwgaS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBpLl9fc3VwZXJfXy5iaW5kLmNhbGwodGhpcywgZSwgdCksIHRoaXMuYWRkT3B0aW9ucyh0aGlzLmNvbnZlcnRUb09wdGlvbnModGhpcy5fZGF0YVRvQ29udmVydCkpCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRlbGVtZW50LmZpbmQoIm9wdGlvbiIpLmZpbHRlcigoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi52YWx1ZSA9PSBlLmlkLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgMCA9PT0gdC5sZW5ndGggJiYgKHQgPSB0aGlzLm9wdGlvbihlKSwgdGhpcy5hZGRPcHRpb25zKHQpKSwgaS5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgIH0sIGkucHJvdG90eXBlLmNvbnZlcnRUb09wdGlvbnMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy4kZWxlbWVudC5maW5kKCJvcHRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIubWFwKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLml0ZW0obih0aGlzKSkuaWQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gW107CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbih0aGlzKS52YWwoKSA9PSBlLmlkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBlLmxlbmd0aDsgbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gdGhpcy5fbm9ybWFsaXplSXRlbShlW2xdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPD0gbi5pbkFycmF5KGMuaWQsIG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHIuZmlsdGVyKHMoYykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLml0ZW0odSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4uZXh0ZW5kKCEwLCB7fSwgYywgZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMub3B0aW9uKGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5yZXBsYWNlV2l0aChmKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLm9wdGlvbihjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0aGlzLmNvbnZlcnRUb09wdGlvbnMoYy5jaGlsZHJlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hcHBlbmRNYW55KHAsIGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2gocCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQogICAgICAgICAgICAgICAgfSwgaQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYWpheCIsIFsiLi9hcnJheSIsICIuLi91dGlscyIsICJqcXVlcnkiXSwgKGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYWpheE9wdGlvbnMgPSB0aGlzLl9hcHBseURlZmF1bHRzKHQuZ2V0KCJhamF4IikpLCBudWxsICE9IHRoaXMuYWpheE9wdGlvbnMucHJvY2Vzc1Jlc3VsdHMgJiYgKHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzKSwgaS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCBlLCB0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQuRXh0ZW5kKGksIGUpLCBpLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZXh0ZW5kKHt9LCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcTogZS50ZXJtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5hamF4KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIudGhlbih0KSwgci5mYWlsKGkpLCByCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmV4dGVuZCh7fSwgdCwgZSwgITApCiAgICAgICAgICAgICAgICB9LCBpLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSwgaS5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT0gdGhpcy5fcmVxdWVzdCAmJiAobi5pc0Z1bmN0aW9uKHRoaXMuX3JlcXVlc3QuYWJvcnQpICYmIHRoaXMuX3JlcXVlc3QuYWJvcnQoKSwgdGhpcy5fcmVxdWVzdCA9IG51bGwpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gbi5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiR0VUIgogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYWpheE9wdGlvbnMpOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIudHJhbnNwb3J0KHIsIChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGkucHJvY2Vzc1Jlc3VsdHMociwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLm9wdGlvbnMuZ2V0KCJkZWJ1ZyIpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUuZXJyb3IgJiYgKG8gJiYgby5yZXN1bHRzICYmIG4uaXNBcnJheShvLnJlc3VsdHMpIHx8IGNvbnNvbGUuZXJyb3IoIlNlbGVjdDI6IFRoZSBBSkFYIHJlc3VsdHMgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgaW4gdGhlIGByZXN1bHRzYCBrZXkgb2YgdGhlIHJlc3BvbnNlLiIpKSwgdChvKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyIgaW4gbyAmJiAoMCA9PT0gby5zdGF0dXMgfHwgIjAiID09PSBvLnN0YXR1cykgfHwgaS50cmlnZ2VyKCJyZXN1bHRzOm1lc3NhZ2UiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogImVycm9yTG9hZGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgaS5fcmVxdWVzdCA9IG8KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2Ygci51cmwgJiYgKHIudXJsID0gci51cmwuY2FsbCh0aGlzLiRlbGVtZW50LCBlKSksICJmdW5jdGlvbiIgPT0gdHlwZW9mIHIuZGF0YSAmJiAoci5kYXRhID0gci5kYXRhLmNhbGwodGhpcy4kZWxlbWVudCwgZSkpLCB0aGlzLmFqYXhPcHRpb25zLmRlbGF5ICYmIG51bGwgIT0gZS50ZXJtID8gKHRoaXMuX3F1ZXJ5VGltZW91dCAmJiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3F1ZXJ5VGltZW91dCksIHRoaXMuX3F1ZXJ5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KG8sIHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpKSA6IG8oKQogICAgICAgICAgICAgICAgfSwgaQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RhdGEvdGFncyIsIFsianF1ZXJ5Il0sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuZ2V0KCJ0YWdzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmdldCgiY3JlYXRlVGFnIik7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvICYmICh0aGlzLmNyZWF0ZVRhZyA9IG8pOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gaS5nZXQoImluc2VydFRhZyIpOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGEgJiYgKHRoaXMuaW5zZXJ0VGFnID0gYSksIHQuY2FsbCh0aGlzLCBuLCBpKSwgZS5pc0FycmF5KHIpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHIubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gcltzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy5fbm9ybWFsaXplSXRlbShsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdGhpcy5vcHRpb24oYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmFwcGVuZCh1KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9sZFRhZ3MoKSwgbnVsbCAhPSB0LnRlcm0gJiYgbnVsbCA9PSB0LnBhZ2UgPyBlLmNhbGwodGhpcywgdCwgKGZ1bmN0aW9uIGUociwgbykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gci5yZXN1bHRzLCBzID0gMDsgcyA8IGEubGVuZ3RoOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gYVtzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbnVsbCAhPSBsLmNoaWxkcmVuICYmICFlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogbC5jaGlsZHJlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobC50ZXh0IHx8ICIiKS50b1VwcGVyQ2FzZSgpID09PSAodC50ZXJtIHx8ICIiKS50b1VwcGVyQ2FzZSgpIHx8IGMpIHJldHVybiAhbyAmJiAoci5kYXRhID0gYSwgdm9pZCBuKHIpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gaS5jcmVhdGVUYWcodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gaS5vcHRpb24odSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmF0dHIoImRhdGEtc2VsZWN0Mi10YWciLCAhMCksIGkuYWRkT3B0aW9ucyhbZF0pLCBpLmluc2VydFRhZyhhLCB1KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzdWx0cyA9IGEsIG4ocikKICAgICAgICAgICAgICAgICAgICB9KSkgOiBlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmNyZWF0ZVRhZyA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUudHJpbShuLnRlcm0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiA9PT0gaSA/IG51bGwgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5zZXJ0VGFnID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHQudW5zaGlmdChuKQogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUuX3JlbW92ZU9sZFRhZ3MgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5maW5kKCJvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ10iKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCB8fCBlKHRoaXMpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZGF0YS90b2tlbml6ZXIiLCBbImpxdWVyeSJdLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLmdldCgidG9rZW5pemVyIik7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBpICYmICh0aGlzLnRva2VuaXplciA9IGkpLCBlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCB0LCBuKSwgdGhpcy4kc2VhcmNoID0gdC5kcm9wZG93bi4kc2VhcmNoIHx8IHQuc2VsZWN0aW9uLiRzZWFyY2ggfHwgbi5maW5kKCIuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIikKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBuLnRlcm0gPSBuLnRlcm0gfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnRva2VuaXplcihuLCB0aGlzLm9wdGlvbnMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpID0gci5fbm9ybWFsaXplSXRlbSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLiRlbGVtZW50LmZpbmQoIm9wdGlvbiIpLmZpbHRlcigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcykudmFsKCkgPT09IGkuaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gci5vcHRpb24oaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmF0dHIoImRhdGEtc2VsZWN0Mi10YWciLCAhMCksIHIuX3JlbW92ZU9sZFRhZ3MoKSwgci5hZGRPcHRpb25zKFtvXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuID0gaSwgci50cmlnZ2VyKCJzZWxlY3QiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBuCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIG8udGVybSAhPT0gbi50ZXJtICYmICh0aGlzLiRzZWFyY2gubGVuZ3RoICYmICh0aGlzLiRzZWFyY2gudmFsKG8udGVybSksIHRoaXMuJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpKSwgbi50ZXJtID0gby50ZXJtKSwgdC5jYWxsKHRoaXMsIG4sIGkpCiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS50b2tlbml6ZXIgPSBmdW5jdGlvbih0LCBuLCBpLCByKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IGkuZ2V0KCJ0b2tlblNlcGFyYXRvcnMiKSB8fCBbXSwgYSA9IG4udGVybSwgcyA9IDAsIGwgPSB0aGlzLmNyZWF0ZVRhZyB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBlLnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZS50ZXJtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH07IHMgPCBhLmxlbmd0aDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhW3NdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT09IGUuaW5BcnJheShjLCBvKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBhLnN1YnN0cigwLCBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gbChlLmV4dGVuZCh7fSwgbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtOiB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBkID8gKHIoZCksIGEgPSBhLnN1YnN0cihzICsgMSkgfHwgIiIsIHMgPSAwKSA6IHMrKwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgcysrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm06IGEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0CiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgiLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5taW5pbXVtSW5wdXRMZW5ndGggPSBuLmdldCgibWluaW11bUlucHV0TGVuZ3RoIiksIGUuY2FsbCh0aGlzLCB0LCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHQudGVybSA9IHQudGVybSB8fCAiIiwgdC50ZXJtLmxlbmd0aCA8IHRoaXMubWluaW11bUlucHV0TGVuZ3RoID8gdGhpcy50cmlnZ2VyKCJyZXN1bHRzOm1lc3NhZ2UiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJpbnB1dFRvb1Nob3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogdC50ZXJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSA6IGUuY2FsbCh0aGlzLCB0LCBuKQogICAgICAgICAgICAgICAgfSwgZQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoIiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMubWF4aW11bUlucHV0TGVuZ3RoID0gbi5nZXQoIm1heGltdW1JbnB1dExlbmd0aCIpLCBlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0LnRlcm0gPSB0LnRlcm0gfHwgIiIsIDAgPCB0aGlzLm1heGltdW1JbnB1dExlbmd0aCAmJiB0LnRlcm0ubGVuZ3RoID4gdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGggPyB0aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogImlucHV0VG9vTG9uZyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHQudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogdAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkgOiBlLmNhbGwodGhpcywgdCwgbikKICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGgiLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoID0gbi5nZXQoIm1heGltdW1TZWxlY3Rpb25MZW5ndGgiKSwgZS5jYWxsKHRoaXMsIHQsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgZS5jYWxsKHRoaXMsIHQsIG4pLCB0Lm9uKCJzZWxlY3QiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmNhbGwoaSwgdCwgbikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIGUucHJvdG90eXBlLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBudWxsICE9IGUgPyBlLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIDAgPCBuLm1heGltdW1TZWxlY3Rpb25MZW5ndGggJiYgaSA+PSBuLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPyBuLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJtYXhpbXVtU2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IG4ubWF4aW11bVNlbGVjdGlvbkxlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHQgJiYgdCgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24iLCBbImpxdWVyeSIsICIuL3V0aWxzIl0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50ID0gZSwgdGhpcy5vcHRpb25zID0gdCwgbi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQuRXh0ZW5kKG4sIHQuT2JzZXJ2YWJsZSksIG4ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSgnPHNwYW4gY2xhc3M9InNlbGVjdDItZHJvcGRvd24iPjxzcGFuIGNsYXNzPSJzZWxlY3QyLXJlc3VsdHMiPjwvc3Bhbj48L3NwYW4+Jyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXR0cigiZGlyIiwgdGhpcy5vcHRpb25zLmdldCgiZGlyIikpLCB0aGlzLiRkcm9wZG93biA9IHQKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbigpIHt9LCBuLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uKGUsIHQpIHt9LCBuLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZHJvcGRvd24ucmVtb3ZlKCkKICAgICAgICAgICAgICAgIH0sIG4KICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9zZWFyY2giLCBbImpxdWVyeSIsICIuLi91dGlscyJdLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gbigpIHt9CiAgICAgICAgICAgICAgICByZXR1cm4gbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5jYWxsKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZSgnPHNwYW4gY2xhc3M9InNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93biI+PGlucHV0IGNsYXNzPSJzZWxlY3QyLXNlYXJjaF9fZmllbGQiIHR5cGU9InNlYXJjaCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NhcGl0YWxpemU9Im5vbmUiIHNwZWxsY2hlY2s9ImZhbHNlIiByb2xlPSJzZWFyY2hib3giIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IiAvPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc2VhcmNoQ29udGFpbmVyID0gaSwgdGhpcy4kc2VhcmNoID0gaS5maW5kKCJpbnB1dCIpLCBuLnByZXBlbmQoaSksIG4KICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5pZCArICItcmVzdWx0cyI7CiAgICAgICAgICAgICAgICAgICAgdC5jYWxsKHRoaXMsIG4sIGkpLCB0aGlzLiRzZWFyY2gub24oImtleWRvd24iLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByLnRyaWdnZXIoImtleXByZXNzIiwgZSksIHIuX2tleVVwUHJldmVudGVkID0gZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kc2VhcmNoLm9uKCJpbnB1dCIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUodGhpcykub2ZmKCJrZXl1cCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRzZWFyY2gub24oImtleXVwIGlucHV0IiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgci5oYW5kbGVTZWFyY2goZSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4ub24oIm9wZW4iLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuJHNlYXJjaC5hdHRyKCJ0YWJpbmRleCIsIDApLCByLiRzZWFyY2guYXR0cigiYXJpYS1jb250cm9scyIsIG8pLCByLiRzZWFyY2gudHJpZ2dlcigiZm9jdXMiKSwgd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIikKICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJjbG9zZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgci4kc2VhcmNoLmF0dHIoInRhYmluZGV4IiwgLTEpLCByLiRzZWFyY2gucmVtb3ZlQXR0cigiYXJpYS1jb250cm9scyIpLCByLiRzZWFyY2gucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IiksIHIuJHNlYXJjaC52YWwoIiIpLCByLiRzZWFyY2gudHJpZ2dlcigiYmx1ciIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJmb2N1cyIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5pc09wZW4oKSB8fCByLiRzZWFyY2gudHJpZ2dlcigiZm9jdXMiKQogICAgICAgICAgICAgICAgICAgIH0pKSwgbi5vbigicmVzdWx0czphbGwiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUucXVlcnkudGVybSAmJiAiIiAhPT0gZS5xdWVyeS50ZXJtIHx8IChyLnNob3dTZWFyY2goZSkgPyByLiRzZWFyY2hDb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItc2VhcmNoLS1oaWRlIikgOiByLiRzZWFyY2hDb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItc2VhcmNoLS1oaWRlIikpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuLm9uKCJyZXN1bHRzOmZvY3VzIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhLl9yZXN1bHRJZCA/IHIuJHNlYXJjaC5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCBlLmRhdGEuX3Jlc3VsdElkKSA6IHIuJHNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuaGFuZGxlU2VhcmNoID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLiRzZWFyY2gudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcigicXVlcnkiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtOiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gITEKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9LCBuCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyIiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG4uZ2V0KCJwbGFjZWhvbGRlciIpKSwgZS5jYWxsKHRoaXMsIHQsIG4sIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHQucmVzdWx0cyA9IHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIodC5yZXN1bHRzKSwgZS5jYWxsKHRoaXMsIHQpCiAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5ub3JtYWxpemVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdAogICAgICAgICAgICAgICAgICAgIH0pLCB0CiAgICAgICAgICAgICAgICB9LCBlLnByb3RvdHlwZS5yZW1vdmVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gdC5zbGljZSgwKSwgaSA9IHQubGVuZ3RoIC0gMTsgMCA8PSBpOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLmlkID09PSByLmlkICYmIG4uc3BsaWNlKGksIDEpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vaW5maW5pdGVTY3JvbGwiLCBbImpxdWVyeSJdLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gdChlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0UGFyYW1zID0ge30sIGUuY2FsbCh0aGlzLCB0LCBuLCBpKSwgdGhpcy4kbG9hZGluZ01vcmUgPSB0aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCksIHRoaXMubG9hZGluZyA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGxvYWRpbmdNb3JlLnJlbW92ZSgpLCB0aGlzLmxvYWRpbmcgPSAhMSwgZS5jYWxsKHRoaXMsIHQpLCB0aGlzLnNob3dMb2FkaW5nTW9yZSh0KSAmJiAodGhpcy4kcmVzdWx0cy5hcHBlbmQodGhpcy4kbG9hZGluZ01vcmUpLCB0aGlzLmxvYWRNb3JlSWZOZWVkZWQoKSkKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCB0LCBuKSwgdC5vbigicXVlcnkiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLmxhc3RQYXJhbXMgPSBlLCBpLmxvYWRpbmcgPSAhMAogICAgICAgICAgICAgICAgICAgIH0pKSwgdC5vbigicXVlcnk6YXBwZW5kIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5sYXN0UGFyYW1zID0gZSwgaS5sb2FkaW5nID0gITAKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMuJHJlc3VsdHMub24oInNjcm9sbCIsIHRoaXMubG9hZE1vcmVJZk5lZWRlZC5iaW5kKHRoaXMpKQogICAgICAgICAgICAgICAgfSwgdC5wcm90b3R5cGUubG9hZE1vcmVJZk5lZWRlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuJGxvYWRpbmdNb3JlWzBdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3AgKyB0aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KCExKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9hZGluZ01vcmUub2Zmc2V0KCkudG9wICsgdGhpcy4kbG9hZGluZ01vcmUub3V0ZXJIZWlnaHQoITEpIDw9IG4gKyA1MCAmJiB0aGlzLmxvYWRNb3JlKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5sb2FkTW9yZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9ICEwOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5leHRlbmQoe30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogMQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMubGFzdFBhcmFtcyk7CiAgICAgICAgICAgICAgICAgICAgdC5wYWdlKyssIHRoaXMudHJpZ2dlcigicXVlcnk6YXBwZW5kIiwgdCkKICAgICAgICAgICAgICAgIH0sIHQucHJvdG90eXBlLnNob3dMb2FkaW5nTW9yZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5wYWdpbmF0aW9uICYmIHQucGFnaW5hdGlvbi5tb3JlCiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5jcmVhdGVMb2FkaW5nTW9yZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZSgnPGxpIGNsYXNzPSJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlInJvbGU9Im9wdGlvbiIgYXJpYS1kaXNhYmxlZD0idHJ1ZSI+PC9saT4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMub3B0aW9ucy5nZXQoInRyYW5zbGF0aW9ucyIpLmdldCgibG9hZGluZ01vcmUiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5odG1sKG4odGhpcy5sYXN0UGFyYW1zKSksIHQKICAgICAgICAgICAgICAgIH0sIHQKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9hdHRhY2hCb2R5IiwgWyJqcXVlcnkiLCAiLi4vdXRpbHMiXSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGRyb3Bkb3duUGFyZW50ID0gZShpLmdldCgiZHJvcGRvd25QYXJlbnQiKSB8fCBkb2N1bWVudC5ib2R5KSwgdC5jYWxsKHRoaXMsIG4sIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgZS5jYWxsKHRoaXMsIHQsIG4pLCB0Lm9uKCJvcGVuIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9zaG93RHJvcGRvd24oKSwgaS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpLCBpLl9iaW5kQ29udGFpbmVyUmVzdWx0SGFuZGxlcnModCkKICAgICAgICAgICAgICAgICAgICB9KSksIHQub24oImNsb3NlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9oaWRlRHJvcGRvd24oKSwgaS5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5vbigibW91c2Vkb3duIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLmNhbGwodGhpcyksIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0LmF0dHIoImNsYXNzIiwgbi5hdHRyKCJjbGFzcyIpKSwgdC5yZW1vdmVDbGFzcygic2VsZWN0MiIpLCB0LmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpLCB0LmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IC05OTk5OTkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kY29udGFpbmVyID0gbgogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZSgiPHNwYW4+PC9zcGFuPiIpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmFwcGVuZChpKSwgdGhpcy4kZHJvcGRvd25Db250YWluZXIgPSBuCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5faGlkZURyb3Bkb3duID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5fYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICB0Lm9uKCJyZXN1bHRzOmFsbCIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uX3Bvc2l0aW9uRHJvcGRvd24oKSwgbi5fcmVzaXplRHJvcGRvd24oKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQub24oInJlc3VsdHM6YXBwZW5kIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fcG9zaXRpb25Ecm9wZG93bigpLCBuLl9yZXNpemVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5vbigicmVzdWx0czptZXNzYWdlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fcG9zaXRpb25Ecm9wZG93bigpLCBuLl9yZXNpemVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5vbigic2VsZWN0IiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5fcG9zaXRpb25Ecm9wZG93bigpLCBuLl9yZXNpemVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5vbigidW5zZWxlY3QiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLl9wb3NpdGlvbkRyb3Bkb3duKCksIG4uX3Jlc2l6ZURyb3Bkb3duKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZCA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuX2F0dGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9IGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAic2Nyb2xsLnNlbGVjdDIuIiArIGkuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAicmVzaXplLnNlbGVjdDIuIiArIGkuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAib3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4iICsgaS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKHQuaGFzU2Nyb2xsKTsKICAgICAgICAgICAgICAgICAgICBsLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LlN0b3JlRGF0YSh0aGlzLCAic2VsZWN0Mi1zY3JvbGwtcG9zaXRpb24iLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBlKHRoaXMpLnNjcm9sbExlZnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUodGhpcykuc2Nyb2xsVG9wKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSksIGwub24obywgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0LkdldERhdGEodGhpcywgInNlbGVjdDItc2Nyb2xsLXBvc2l0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUodGhpcykuc2Nyb2xsVG9wKGkueSkKICAgICAgICAgICAgICAgICAgICB9KSksIGUod2luZG93KS5vbihvICsgIiAiICsgYSArICIgIiArIHMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuX3Bvc2l0aW9uRHJvcGRvd24oKSwgci5fcmVzaXplRHJvcGRvd24oKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlciA9IGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICJzY3JvbGwuc2VsZWN0Mi4iICsgaS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJyZXNpemUuc2VsZWN0Mi4iICsgaS5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICJvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLiIgKyBpLmlkOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKHQuaGFzU2Nyb2xsKS5vZmYociksIGUod2luZG93KS5vZmYociArICIgIiArIG8gKyAiICIgKyBhKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuX3Bvc2l0aW9uRHJvcGRvd24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUod2luZG93KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuJGRyb3Bkb3duLmhhc0NsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy4kZHJvcGRvd24uaGFzQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tLWJlbG93IiksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy4kY29udGFpbmVyLm9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgIG8uYm90dG9tID0gby50b3AgKyB0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoITEpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodCghMSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGEudG9wID0gby50b3AsIGEuYm90dG9tID0gby50b3AgKyBhLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuJGRyb3Bkb3duLm91dGVySGVpZ2h0KCExKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQuc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LnNjcm9sbFRvcCgpICsgdC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGwgPCBvLnRvcCAtIHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjID4gby5ib3R0b20gKyBzLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogby5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBhLmJvdHRvbQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdGhpcy4kZHJvcGRvd25QYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgInN0YXRpYyIgPT09IGYuY3NzKCJwb3NpdGlvbiIpICYmIChmID0gZi5vZmZzZXRQYXJlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgKGUuY29udGFpbnMoZG9jdW1lbnQuYm9keSwgZlswXSkgfHwgZlswXS5pc0Nvbm5lY3RlZCkgJiYgKHAgPSBmLm9mZnNldCgpKSwgaC50b3AgLT0gcC50b3AsIGgubGVmdCAtPSBwLmxlZnQsIG4gfHwgaSB8fCAociA9ICJiZWxvdyIpLCBkIHx8ICF1IHx8IG4gPyAhdSAmJiBkICYmIG4gJiYgKHIgPSAiYmVsb3ciKSA6IHIgPSAiYWJvdmUiLCAoImFib3ZlIiA9PSByIHx8IG4gJiYgImJlbG93IiAhPT0gcikgJiYgKGgudG9wID0gYS50b3AgLSBwLnRvcCAtIHMpLCBudWxsICE9IHIgJiYgKHRoaXMuJGRyb3Bkb3duLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyBzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZSIpLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS0iICsgciksIHRoaXMuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWJlbG93IHNlbGVjdDItY29udGFpbmVyLS1hYm92ZSIpLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tIiArIHIpKSwgdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGgpCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5fcmVzaXplRHJvcGRvd24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuJGNvbnRhaW5lci5vdXRlcldpZHRoKCExKSArICJweCIKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZXQoImRyb3Bkb3duQXV0b1dpZHRoIikgJiYgKGUubWluV2lkdGggPSBlLndpZHRoLCBlLnBvc2l0aW9uID0gInJlbGF0aXZlIiwgZS53aWR0aCA9ICJhdXRvIiksIHRoaXMuJGRyb3Bkb3duLmNzcyhlKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUuX3Nob3dEcm9wZG93biA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5hcHBlbmRUbyh0aGlzLiRkcm9wZG93blBhcmVudCksIHRoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKSwgdGhpcy5fcmVzaXplRHJvcGRvd24oKQogICAgICAgICAgICAgICAgfSwgbgogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL21pbmltdW1SZXN1bHRzRm9yU2VhcmNoIiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBuLmdldCgibWluaW11bVJlc3VsdHNGb3JTZWFyY2giKSwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA8IDAgJiYgKHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSAxIC8gMCksIGUuY2FsbCh0aGlzLCB0LCBuLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoZnVuY3Rpb24gZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwLCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuY2hpbGRyZW4gPyBuICs9IGUoci5jaGlsZHJlbikgOiBuKysKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgIH0odC5kYXRhLnJlc3VsdHMpIDwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkgJiYgZS5jYWxsKHRoaXMsIHQpCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZSIsIFsiLi4vdXRpbHMiXSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCB0LCBuKSwgdC5vbigiY2xvc2UiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9oYW5kbGVTZWxlY3RPbkNsb3NlKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCB0LnByb3RvdHlwZS5faGFuZGxlU2VsZWN0T25DbG9zZSA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAobiAmJiBudWxsICE9IG4ub3JpZ2luYWxTZWxlY3QyRXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLm9yaWdpbmFsU2VsZWN0MkV2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInNlbGVjdCIgPT09IGkuX3R5cGUgfHwgInVuc2VsZWN0IiA9PT0gaS5fdHlwZSkgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIShyLmxlbmd0aCA8IDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5HZXREYXRhKHJbMF0sICJkYXRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIT0gby5lbGVtZW50ICYmIG8uZWxlbWVudC5zZWxlY3RlZCB8fCBudWxsID09IG8uZWxlbWVudCAmJiBvLnNlbGVjdGVkIHx8IHRoaXMudHJpZ2dlcigic2VsZWN0IiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbwogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHQKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0IiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCB0LCBuKSwgdC5vbigic2VsZWN0IiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5fc2VsZWN0VHJpZ2dlcmVkKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0Lm9uKCJ1bnNlbGVjdCIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuX3NlbGVjdFRyaWdnZXJlZChlKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgZS5wcm90b3R5cGUuX3NlbGVjdFRyaWdnZXJlZCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgICAgICAgICBuICYmIChuLmN0cmxLZXkgfHwgbi5tZXRhS2V5KSB8fCB0aGlzLnRyaWdnZXIoImNsb3NlIiwgewogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBuLAogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFNlbGVjdDJFdmVudDogdAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvaTE4bi9lbiIsIFtdLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGVycm9yTG9hZGluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiVGhlIHJlc3VsdHMgY291bGQgbm90IGJlIGxvYWRlZC4iCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbnB1dFRvb0xvbmc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmlucHV0Lmxlbmd0aCAtIGUubWF4aW11bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiUGxlYXNlIGRlbGV0ZSAiICsgdCArICIgY2hhcmFjdGVyIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgIT0gdCAmJiAobiArPSAicyIpLCBuCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBpbnB1dFRvb1Nob3J0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiUGxlYXNlIGVudGVyICIgKyAoZS5taW5pbXVtIC0gZS5pbnB1dC5sZW5ndGgpICsgIiBvciBtb3JlIGNoYXJhY3RlcnMiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsb2FkaW5nTW9yZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiTG9hZGluZyBtb3JlIHJlc3VsdHPigKYiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtYXhpbXVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAiWW91IGNhbiBvbmx5IHNlbGVjdCAiICsgZS5tYXhpbXVtICsgIiBpdGVtIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgIT0gZS5tYXhpbXVtICYmICh0ICs9ICJzIiksIHQKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG5vUmVzdWx0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiTm8gcmVzdWx0cyBmb3VuZCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiU2VhcmNoaW5n4oCmIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWxsSXRlbXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlJlbW92ZSBhbGwgaXRlbXMiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2RlZmF1bHRzIiwgWyJqcXVlcnkiLCAicmVxdWlyZSIsICIuL3Jlc3VsdHMiLCAiLi9zZWxlY3Rpb24vc2luZ2xlIiwgIi4vc2VsZWN0aW9uL211bHRpcGxlIiwgIi4vc2VsZWN0aW9uL3BsYWNlaG9sZGVyIiwgIi4vc2VsZWN0aW9uL2FsbG93Q2xlYXIiLCAiLi9zZWxlY3Rpb24vc2VhcmNoIiwgIi4vc2VsZWN0aW9uL2V2ZW50UmVsYXkiLCAiLi91dGlscyIsICIuL3RyYW5zbGF0aW9uIiwgIi4vZGlhY3JpdGljcyIsICIuL2RhdGEvc2VsZWN0IiwgIi4vZGF0YS9hcnJheSIsICIuL2RhdGEvYWpheCIsICIuL2RhdGEvdGFncyIsICIuL2RhdGEvdG9rZW5pemVyIiwgIi4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgiLCAiLi9kYXRhL21heGltdW1JbnB1dExlbmd0aCIsICIuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCIsICIuL2Ryb3Bkb3duIiwgIi4vZHJvcGRvd24vc2VhcmNoIiwgIi4vZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyIiwgIi4vZHJvcGRvd24vaW5maW5pdGVTY3JvbGwiLCAiLi9kcm9wZG93bi9hdHRhY2hCb2R5IiwgIi4vZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCAiLi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlIiwgIi4vZHJvcGRvd24vY2xvc2VPblNlbGVjdCIsICIuL2kxOG4vZW4iXSwgKGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAsIGcsIG0sIHYsIHksIGIsIHcsIHgsIF8sIFMsIEMsIGssIFQsIEEsIEUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gRC5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbih1KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gKHUgPSBlLmV4dGVuZCghMCwge30sIHRoaXMuZGVmYXVsdHMsIHUpKS5kYXRhQWRhcHRlcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB1LmFqYXggPyB1LmRhdGFBZGFwdGVyID0gcCA6IG51bGwgIT0gdS5kYXRhID8gdS5kYXRhQWRhcHRlciA9IGYgOiB1LmRhdGFBZGFwdGVyID0gaCwgMCA8IHUubWluaW11bUlucHV0TGVuZ3RoICYmICh1LmRhdGFBZGFwdGVyID0gYy5EZWNvcmF0ZSh1LmRhdGFBZGFwdGVyLCB2KSksIDAgPCB1Lm1heGltdW1JbnB1dExlbmd0aCAmJiAodS5kYXRhQWRhcHRlciA9IGMuRGVjb3JhdGUodS5kYXRhQWRhcHRlciwgeSkpLCAwIDwgdS5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoICYmICh1LmRhdGFBZGFwdGVyID0gYy5EZWNvcmF0ZSh1LmRhdGFBZGFwdGVyLCBiKSksIHUudGFncyAmJiAodS5kYXRhQWRhcHRlciA9IGMuRGVjb3JhdGUodS5kYXRhQWRhcHRlciwgZykpLCBudWxsID09IHUudG9rZW5TZXBhcmF0b3JzICYmIG51bGwgPT0gdS50b2tlbml6ZXIgfHwgKHUuZGF0YUFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuZGF0YUFkYXB0ZXIsIG0pKSwgbnVsbCAhPSB1LnF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHQodS5hbWRCYXNlICsgImNvbXBhdC9xdWVyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5kYXRhQWRhcHRlciA9IGMuRGVjb3JhdGUodS5kYXRhQWRhcHRlciwgZCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB1LmluaXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBFID0gdCh1LmFtZEJhc2UgKyAiY29tcGF0L2luaXRTZWxlY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUuZGF0YUFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuZGF0YUFkYXB0ZXIsIEUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdS5yZXN1bHRzQWRhcHRlciAmJiAodS5yZXN1bHRzQWRhcHRlciA9IG4sIG51bGwgIT0gdS5hamF4ICYmICh1LnJlc3VsdHNBZGFwdGVyID0gYy5EZWNvcmF0ZSh1LnJlc3VsdHNBZGFwdGVyLCBTKSksIG51bGwgIT0gdS5wbGFjZWhvbGRlciAmJiAodS5yZXN1bHRzQWRhcHRlciA9IGMuRGVjb3JhdGUodS5yZXN1bHRzQWRhcHRlciwgXykpLCB1LnNlbGVjdE9uQ2xvc2UgJiYgKHUucmVzdWx0c0FkYXB0ZXIgPSBjLkRlY29yYXRlKHUucmVzdWx0c0FkYXB0ZXIsIFQpKSksIG51bGwgPT0gdS5kcm9wZG93bkFkYXB0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUubXVsdGlwbGUpIHUuZHJvcGRvd25BZGFwdGVyID0gdzsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRCA9IGMuRGVjb3JhdGUodywgeCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LmRyb3Bkb3duQWRhcHRlciA9IEQKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPT0gdS5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCAmJiAodS5kcm9wZG93bkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuZHJvcGRvd25BZGFwdGVyLCBrKSksIHUuY2xvc2VPblNlbGVjdCAmJiAodS5kcm9wZG93bkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuZHJvcGRvd25BZGFwdGVyLCBBKSksIG51bGwgIT0gdS5kcm9wZG93bkNzc0NsYXNzIHx8IG51bGwgIT0gdS5kcm9wZG93bkNzcyB8fCBudWxsICE9IHUuYWRhcHREcm9wZG93bkNzc0NsYXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTyA9IHQodS5hbWRCYXNlICsgImNvbXBhdC9kcm9wZG93bkNzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5kcm9wZG93bkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuZHJvcGRvd25BZGFwdGVyLCBPKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHUuZHJvcGRvd25BZGFwdGVyID0gYy5EZWNvcmF0ZSh1LmRyb3Bkb3duQWRhcHRlciwgQykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdS5zZWxlY3Rpb25BZGFwdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1Lm11bHRpcGxlID8gdS5zZWxlY3Rpb25BZGFwdGVyID0gciA6IHUuc2VsZWN0aW9uQWRhcHRlciA9IGksIG51bGwgIT0gdS5wbGFjZWhvbGRlciAmJiAodS5zZWxlY3Rpb25BZGFwdGVyID0gYy5EZWNvcmF0ZSh1LnNlbGVjdGlvbkFkYXB0ZXIsIG8pKSwgdS5hbGxvd0NsZWFyICYmICh1LnNlbGVjdGlvbkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlciwgYSkpLCB1Lm11bHRpcGxlICYmICh1LnNlbGVjdGlvbkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlciwgcykpLCBudWxsICE9IHUuY29udGFpbmVyQ3NzQ2xhc3MgfHwgbnVsbCAhPSB1LmNvbnRhaW5lckNzcyB8fCBudWxsICE9IHUuYWRhcHRDb250YWluZXJDc3NDbGFzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIE0gPSB0KHUuYW1kQmFzZSArICJjb21wYXQvY29udGFpbmVyQ3NzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LnNlbGVjdGlvbkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlciwgTSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB1LnNlbGVjdGlvbkFkYXB0ZXIgPSBjLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlciwgbCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdS5sYW5ndWFnZSA9IHRoaXMuX3Jlc29sdmVMYW5ndWFnZSh1Lmxhbmd1YWdlKSwgdS5sYW5ndWFnZS5wdXNoKCJlbiIpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIEkgPSBbXSwgTCA9IDA7IEwgPCB1Lmxhbmd1YWdlLmxlbmd0aDsgTCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBQID0gdS5sYW5ndWFnZVtMXTsgLSAxID09PSBJLmluZGV4T2YoUCkgJiYgSS5wdXNoKFApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB1Lmxhbmd1YWdlID0gSSwgdS50cmFuc2xhdGlvbnMgPSB0aGlzLl9wcm9jZXNzVHJhbnNsYXRpb25zKHUubGFuZ3VhZ2UsIHUuZGVidWcpLCB1CiAgICAgICAgICAgICAgICB9LCBELnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5yZXBsYWNlKC9bXlx1MDAwMC1cdTAwN0VdL2csIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZFtlXSB8fCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gewogICAgICAgICAgICAgICAgICAgICAgICBhbWRCYXNlOiAiLi8iLAogICAgICAgICAgICAgICAgICAgICAgICBhbWRMYW5ndWFnZUJhc2U6ICIuL2kxOG4vIiwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VPblNlbGVjdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25BdXRvV2lkdGg6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVNYXJrdXA6IGMuZXNjYXBlTWFya3VwLAogICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZToge30sCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI6IGZ1bmN0aW9uIG4oaSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCIiID09PSBlLnRyaW0oaS50ZXJtKSkgcmV0dXJuIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5jaGlsZHJlbiAmJiAwIDwgci5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gZS5leHRlbmQoITAsIHt9LCByKSwgYSA9IHIuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgMCA8PSBhOyBhLS0pIG51bGwgPT0gbihpLCByLmNoaWxkcmVuW2FdKSAmJiBvLmNoaWxkcmVuLnNwbGljZShhLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA8IG8uY2hpbGRyZW4ubGVuZ3RoID8gbyA6IG4oaSwgbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gdChyLnRleHQpLnRvVXBwZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHQoaS50ZXJtKS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xIDwgcy5pbmRleE9mKGwpID8gciA6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUlucHV0TGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtSW5wdXRMZW5ndGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPbkNsb3NlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQWZ0ZXJTZWxlY3Q6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlUmVzdWx0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlU2VsZWN0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiAiZGVmYXVsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAicmVzb2x2ZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCBELnByb3RvdHlwZS5hcHBseUZyb21FbGVtZW50ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5sYW5ndWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZGVmYXVsdHMubGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnByb3AoImxhbmciKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuY2xvc2VzdCgiW2xhbmddIikucHJvcCgibGFuZyIpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKHRoaXMuX3Jlc29sdmVMYW5ndWFnZShyKSwgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG4pLCB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UoaSksIHRoaXMuX3Jlc29sdmVMYW5ndWFnZShvKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUubGFuZ3VhZ2UgPSBhLCBlCiAgICAgICAgICAgICAgICB9LCBELnByb3RvdHlwZS5fcmVzb2x2ZUxhbmd1YWdlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmICghdCkgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmlzRW1wdHlPYmplY3QodCkpIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc1BsYWluT2JqZWN0KHQpKSByZXR1cm4gW3RdOwogICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgIG4gPSBlLmlzQXJyYXkodCkgPyB0IDogW3RdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgciA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5wdXNoKG5bcl0pLCAic3RyaW5nIiA9PSB0eXBlb2YgbltyXSAmJiAwIDwgbltyXS5pbmRleE9mKCItIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbltyXS5zcGxpdCgiLSIpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfSwgRC5wcm90b3R5cGUuX3Byb2Nlc3NUcmFuc2xhdGlvbnMgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IG5ldyB1LCByID0gMDsgciA8IHQubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuZXcgdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0W3JdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGEpIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdS5sb2FkUGF0aChhKQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIGEsIG8gPSB1LmxvYWRQYXRoKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCdTZWxlY3QyOiBUaGUgbGFuZ3VhZ2UgZmlsZSBmb3IgIicgKyBhICsgJyIgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBBIGZhbGxiYWNrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBvID0gZS5pc1BsYWluT2JqZWN0KGEpID8gbmV3IHUoYSkgOiBhOwogICAgICAgICAgICAgICAgICAgICAgICBpLmV4dGVuZChvKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICAgICAgICAgfSwgRC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0ge307CiAgICAgICAgICAgICAgICAgICAgaVtlLmNhbWVsQ2FzZSh0KV0gPSBuOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gYy5fY29udmVydERhdGEoaSk7CiAgICAgICAgICAgICAgICAgICAgZS5leHRlbmQoITAsIHRoaXMuZGVmYXVsdHMsIHIpCiAgICAgICAgICAgICAgICB9LCBuZXcgRAogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL29wdGlvbnMiLCBbInJlcXVpcmUiLCAianF1ZXJ5IiwgIi4vZGVmYXVsdHMiLCAiLi91dGlscyJdLCAoZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gcih0LCByKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucyA9IHQsIG51bGwgIT0gciAmJiB0aGlzLmZyb21FbGVtZW50KHIpLCBudWxsICE9IHIgJiYgKHRoaXMub3B0aW9ucyA9IG4uYXBwbHlGcm9tRWxlbWVudCh0aGlzLm9wdGlvbnMsIHIpKSwgdGhpcy5vcHRpb25zID0gbi5hcHBseSh0aGlzLm9wdGlvbnMpLCByICYmIHIuaXMoImlucHV0IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlKHRoaXMuZ2V0KCJhbWRCYXNlIikgKyAiY29tcGF0L2lucHV0RGF0YSIpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBpLkRlY29yYXRlKHRoaXMub3B0aW9ucy5kYXRhQWRhcHRlciwgbykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gci5wcm90b3R5cGUuZnJvbUVsZW1lbnQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBbInNlbGVjdDIiXTsKICAgICAgICAgICAgICAgICAgICBudWxsID09IHRoaXMub3B0aW9ucy5tdWx0aXBsZSAmJiAodGhpcy5vcHRpb25zLm11bHRpcGxlID0gZS5wcm9wKCJtdWx0aXBsZSIpKSwgbnVsbCA9PSB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgJiYgKHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IGUucHJvcCgiZGlzYWJsZWQiKSksIG51bGwgPT0gdGhpcy5vcHRpb25zLmRpciAmJiAoZS5wcm9wKCJkaXIiKSA/IHRoaXMub3B0aW9ucy5kaXIgPSBlLnByb3AoImRpciIpIDogZS5jbG9zZXN0KCJbZGlyXSIpLnByb3AoImRpciIpID8gdGhpcy5vcHRpb25zLmRpciA9IGUuY2xvc2VzdCgiW2Rpcl0iKS5wcm9wKCJkaXIiKSA6IHRoaXMub3B0aW9ucy5kaXIgPSAibHRyIiksIGUucHJvcCgiZGlzYWJsZWQiLCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpLCBlLnByb3AoIm11bHRpcGxlIiwgdGhpcy5vcHRpb25zLm11bHRpcGxlKSwgaS5HZXREYXRhKGVbMF0sICJzZWxlY3QyVGFncyIpICYmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBkYXRhLXNlbGVjdDItdGFnc2AgYXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gdXNlIHRoZSBgZGF0YS1kYXRhYCBhbmQgYGRhdGEtdGFncz0idHJ1ZSJgIGF0dHJpYnV0ZXMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nKSwgaS5TdG9yZURhdGEoZVswXSwgImRhdGEiLCBpLkdldERhdGEoZVswXSwgInNlbGVjdDJUYWdzIikpLCBpLlN0b3JlRGF0YShlWzBdLCAidGFncyIsICEwKSksIGkuR2V0RGF0YShlWzBdLCAiYWpheFVybCIpICYmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byBgZGF0YS1hamF4LS11cmxgIGFuZCBzdXBwb3J0IGZvciB0aGUgb2xkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuIiksIGUuYXR0cigiYWpheC0tdXJsIiwgaS5HZXREYXRhKGVbMF0sICJhamF4VXJsIikpLCBpLlN0b3JlRGF0YShlWzBdLCAiYWpheC1VcmwiLCBpLkdldERhdGEoZVswXSwgImFqYXhVcmwiKSkpOwogICAgICAgICAgICAgICAgICAgIHZhciByID0ge307CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC50b1VwcGVyQ2FzZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDsgYSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gZVswXS5hdHRyaWJ1dGVzW2FdLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gImRhdGEtIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMuc3Vic3RyKDAsIGwubGVuZ3RoKSA9PSBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHMuc3Vic3RyaW5nKGwubGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gaS5HZXREYXRhKGVbMF0sIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcltjLnJlcGxhY2UoLy0oW2Etel0pL2csIG8pXSA9IHUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LmZuLmpxdWVyeSAmJiAiMS4iID09IHQuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSAmJiBlWzBdLmRhdGFzZXQgJiYgKHIgPSB0LmV4dGVuZCghMCwge30sIGVbMF0uZGF0YXNldCwgcikpOwogICAgICAgICAgICAgICAgICAgIHZhciBkID0gdC5leHRlbmQoITAsIHt9LCBpLkdldERhdGEoZVswXSksIHIpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGggaW4gZCA9IGkuX2NvbnZlcnREYXRhKGQpKSAtIDEgPCB0LmluQXJyYXkoaCwgbikgfHwgKHQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNbaF0pID8gdC5leHRlbmQodGhpcy5vcHRpb25zW2hdLCBkW2hdKSA6IHRoaXMub3B0aW9uc1toXSA9IGRbaF0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1tlXQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1tlXSA9IHQKICAgICAgICAgICAgICAgIH0sIHIKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9jb3JlIiwgWyJqcXVlcnkiLCAiLi9vcHRpb25zIiwgIi4vdXRpbHMiLCAiLi9rZXlzIl0sIChmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBudWxsICE9IG4uR2V0RGF0YShlWzBdLCAic2VsZWN0MiIpICYmIG4uR2V0RGF0YShlWzBdLCAic2VsZWN0MiIpLmRlc3Ryb3koKSwgdGhpcy4kZWxlbWVudCA9IGUsIHRoaXMuaWQgPSB0aGlzLl9nZW5lcmF0ZUlkKGUpLCBpID0gaSB8fCB7fSwgdGhpcy5vcHRpb25zID0gbmV3IHQoaSwgZSksIHIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBlLmF0dHIoInRhYmluZGV4IikgfHwgMDsKICAgICAgICAgICAgICAgICAgICBuLlN0b3JlRGF0YShlWzBdLCAib2xkLXRhYmluZGV4IiwgbyksIGUuYXR0cigidGFiaW5kZXgiLCAiLTEiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMub3B0aW9ucy5nZXQoImRhdGFBZGFwdGVyIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhQWRhcHRlciA9IG5ldyBhKGUsIHRoaXMub3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLnJlbmRlcigpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3BsYWNlQ29udGFpbmVyKHMpOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gdGhpcy5vcHRpb25zLmdldCgic2VsZWN0aW9uQWRhcHRlciIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IGwoZSwgdGhpcy5vcHRpb25zKSwgdGhpcy4kc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24ucmVuZGVyKCksIHRoaXMuc2VsZWN0aW9uLnBvc2l0aW9uKHRoaXMuJHNlbGVjdGlvbiwgcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSB0aGlzLm9wdGlvbnMuZ2V0KCJkcm9wZG93bkFkYXB0ZXIiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duID0gbmV3IGMoZSwgdGhpcy5vcHRpb25zKSwgdGhpcy4kZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLnJlbmRlcigpLCB0aGlzLmRyb3Bkb3duLnBvc2l0aW9uKHRoaXMuJGRyb3Bkb3duLCBzKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IHRoaXMub3B0aW9ucy5nZXQoInJlc3VsdHNBZGFwdGVyIik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gbmV3IHUoZSwgdGhpcy5vcHRpb25zLCB0aGlzLmRhdGFBZGFwdGVyKSwgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKSwgdGhpcy5yZXN1bHRzLnBvc2l0aW9uKHRoaXMuJHJlc3VsdHMsIHRoaXMuJGRyb3Bkb3duKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmluZEFkYXB0ZXJzKCksIHRoaXMuX3JlZ2lzdGVyRG9tRXZlbnRzKCksIHRoaXMuX3JlZ2lzdGVyRGF0YUV2ZW50cygpLCB0aGlzLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cygpLCB0aGlzLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzKCksIHRoaXMuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cygpLCB0aGlzLl9yZWdpc3RlckV2ZW50cygpLCB0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgZS5hZGRDbGFzcygic2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLCBlLmF0dHIoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgdGhpcy5fc3luY0F0dHJpYnV0ZXMoKSwgbi5TdG9yZURhdGEoZVswXSwgInNlbGVjdDIiLCB0aGlzKSwgZS5kYXRhKCJzZWxlY3QyIiwgdGhpcykKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gbi5FeHRlbmQociwgbi5PYnNlcnZhYmxlKSwgci5wcm90b3R5cGUuX2dlbmVyYXRlSWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzZWxlY3QyLSIgKyAobnVsbCAhPSBlLmF0dHIoImlkIikgPyBlLmF0dHIoImlkIikgOiBudWxsICE9IGUuYXR0cigibmFtZSIpID8gZS5hdHRyKCJuYW1lIikgKyAiLSIgKyBuLmdlbmVyYXRlQ2hhcnMoMikgOiBuLmdlbmVyYXRlQ2hhcnMoNCkpLnJlcGxhY2UoLyg6fFwufFxbfFxdfCwpL2csICIiKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuX3BsYWNlQ29udGFpbmVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9yZXNvbHZlV2lkdGgodGhpcy4kZWxlbWVudCwgdGhpcy5vcHRpb25zLmdldCgid2lkdGgiKSk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSB0ICYmIGUuY3NzKCJ3aWR0aCIsIHQpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5fcmVzb2x2ZVdpZHRoID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gL153aWR0aDooKFstK10/KFswLTldKlwuKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pOwogICAgICAgICAgICAgICAgICAgIGlmICgicmVzb2x2ZSIgPT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuX3Jlc29sdmVXaWR0aChlLCAic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gaSA/IGkgOiB0aGlzLl9yZXNvbHZlV2lkdGgoZSwgImVsZW1lbnQiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoImVsZW1lbnQiID09IHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLm91dGVyV2lkdGgoITEpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA8PSAwID8gImF1dG8iIDogciArICJweCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHlsZSIgIT0gdCkgcmV0dXJuICJjb21wdXRlZHN0eWxlIiAhPSB0ID8gdCA6IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVbMF0pLndpZHRoOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gZS5hdHRyKCJzdHlsZSIpOwogICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgbykgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IG8uc3BsaXQoIjsiKSwgcyA9IDAsIGwgPSBhLmxlbmd0aDsgcyA8IGw7IHMgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGFbc10ucmVwbGFjZSgvXHMvZywgIiIpLm1hdGNoKG4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gYyAmJiAxIDw9IGMubGVuZ3RoKSByZXR1cm4gY1sxXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuX2JpbmRBZGFwdGVycyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpLCB0aGlzLnNlbGVjdGlvbi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lciksIHRoaXMuZHJvcGRvd24uYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpLCB0aGlzLnJlc3VsdHMuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5fcmVnaXN0ZXJEb21FdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5vbigiY2hhbmdlLnNlbGVjdDIiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YUFkYXB0ZXIuY3VycmVudCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kZWxlbWVudC5vbigiZm9jdXMuc2VsZWN0MiIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudHJpZ2dlcigiZm9jdXMiLCB0KQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5fc3luY0EgPSBuLmJpbmQodGhpcy5fc3luY0F0dHJpYnV0ZXMsIHRoaXMpLCB0aGlzLl9zeW5jUyA9IG4uYmluZCh0aGlzLl9zeW5jU3VidHJlZSwgdGhpcyksIHRoaXMuJGVsZW1lbnRbMF0uYXR0YWNoRXZlbnQgJiYgdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsIHRoaXMuX3N5bmNBKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5Nb3pNdXRhdGlvbk9ic2VydmVyOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT0gdCA/ICh0aGlzLl9vYnNlcnZlciA9IG5ldyB0KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuX3N5bmNBKCksIGUuX3N5bmNTKG51bGwsIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRyZWU6ICExCiAgICAgICAgICAgICAgICAgICAgfSkpIDogdGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyICYmICh0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsIGUuX3N5bmNBLCAhMSksIHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgZS5fc3luY1MsICExKSwgdGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIGUuX3N5bmNTLCAhMSkpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIub24oIioiLCAoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBlLnRyaWdnZXIodCwgbikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHIucHJvdG90eXBlLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IFsidG9nZ2xlIiwgImZvY3VzIl07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24ub24oInRvZ2dsZSIsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC50b2dnbGVEcm9wZG93bigpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnNlbGVjdGlvbi5vbigiZm9jdXMiLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvY3VzKGUpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnNlbGVjdGlvbi5vbigiKiIsIChmdW5jdGlvbihpLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC0xID09PSBlLmluQXJyYXkoaSwgbikgJiYgdC50cmlnZ2VyKGksIHIpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm9uKCIqIiwgKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50cmlnZ2VyKHQsIG4pCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cy5vbigiKiIsIChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudHJpZ2dlcih0LCBuKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuX3JlZ2lzdGVyRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMub24oIm9wZW4iLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuJGNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5vbigiY2xvc2UiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5vbigiZW5hYmxlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9uKCJkaXNhYmxlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLiRjb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9uKCJibHVyIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1mb2N1cyIpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9uKCJxdWVyeSIsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuaXNPcGVuKCkgfHwgZS50cmlnZ2VyKCJvcGVuIiwge30pLCB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHQsIChmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnRyaWdnZXIoInJlc3VsdHM6YWxsIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5vbigicXVlcnk6YXBwZW5kIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhQWRhcHRlci5xdWVyeSh0LCAoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50cmlnZ2VyKCJyZXN1bHRzOmFwcGVuZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXMub24oImtleXByZXNzIiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LndoaWNoOwogICAgICAgICAgICAgICAgICAgICAgICBlLmlzT3BlbigpID8gbiA9PT0gaS5FU0MgfHwgbiA9PT0gaS5UQUIgfHwgbiA9PT0gaS5VUCAmJiB0LmFsdEtleSA/IChlLmNsb3NlKHQpLCB0LnByZXZlbnREZWZhdWx0KCkpIDogbiA9PT0gaS5FTlRFUiA/IChlLnRyaWdnZXIoInJlc3VsdHM6c2VsZWN0Iiwge30pLCB0LnByZXZlbnREZWZhdWx0KCkpIDogbiA9PT0gaS5TUEFDRSAmJiB0LmN0cmxLZXkgPyAoZS50cmlnZ2VyKCJyZXN1bHRzOnRvZ2dsZSIsIHt9KSwgdC5wcmV2ZW50RGVmYXVsdCgpKSA6IG4gPT09IGkuVVAgPyAoZS50cmlnZ2VyKCJyZXN1bHRzOnByZXZpb3VzIiwge30pLCB0LnByZXZlbnREZWZhdWx0KCkpIDogbiA9PT0gaS5ET1dOICYmIChlLnRyaWdnZXIoInJlc3VsdHM6bmV4dCIsIHt9KSwgdC5wcmV2ZW50RGVmYXVsdCgpKSA6IChuID09PSBpLkVOVEVSIHx8IG4gPT09IGkuU1BBQ0UgfHwgbiA9PT0gaS5ET1dOICYmIHQuYWx0S2V5KSAmJiAoZS5vcGVuKCksIHQucHJldmVudERlZmF1bHQoKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHIucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXQoImRpc2FibGVkIiwgdGhpcy4kZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpKSwgdGhpcy5pc0Rpc2FibGVkKCkgPyAodGhpcy5pc09wZW4oKSAmJiB0aGlzLmNsb3NlKCksIHRoaXMudHJpZ2dlcigiZGlzYWJsZSIsIHt9KSkgOiB0aGlzLnRyaWdnZXIoImVuYWJsZSIsIHt9KQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuX2lzQ2hhbmdlTXV0YXRpb24gPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0IHx8ICF0LnRhcmdldCB8fCAiT1BUSU9OIiA9PT0gdC50YXJnZXQubm9kZU5hbWUgfHwgIk9QVEdST1VQIiA9PT0gdC50YXJnZXQubm9kZU5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5hZGRlZE5vZGVzICYmIDAgPCBuLmFkZGVkTm9kZXMubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSAwOyBvIDwgbi5hZGRlZE5vZGVzLmxlbmd0aDsgbysrKSBuLmFkZGVkTm9kZXNbb10uc2VsZWN0ZWQgJiYgKGkgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG4ucmVtb3ZlZE5vZGVzICYmIDAgPCBuLnJlbW92ZWROb2Rlcy5sZW5ndGggPyBpID0gITAgOiBlLmlzQXJyYXkobikgJiYgZS5lYWNoKG4sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuX2lzQ2hhbmdlTXV0YXRpb24oZSwgdCkpIHJldHVybiAhKGkgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuX3N5bmNTdWJ0cmVlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5faXNDaGFuZ2VNdXRhdGlvbihlLCB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgbiAmJiB0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHIuX19zdXBlcl9fLnRyaWdnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiAib3BlbmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTogImNsb3NpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiAic2VsZWN0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0OiAidW5zZWxlY3RpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI6ICJjbGVhcmluZyIKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSB0ICYmICh0ID0ge30pLCBlIGluIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBpW2VdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50ZWQ6ICExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uY2FsbCh0aGlzLCBvLCBhKSwgYS5wcmV2ZW50ZWQpIHJldHVybiB2b2lkKHQucHJldmVudGVkID0gITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4uY2FsbCh0aGlzLCBlLCB0KQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWQoKSB8fCAodGhpcy5pc09wZW4oKSA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuKCkgfHwgdGhpcy5pc0Rpc2FibGVkKCkgfHwgdGhpcy50cmlnZ2VyKCJxdWVyeSIsIHt9KQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc09wZW4oKSAmJiB0aGlzLnRyaWdnZXIoImNsb3NlIiwgewogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0sIHIucHJvdG90eXBlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0Rpc2FibGVkKCkKICAgICAgICAgICAgICAgIH0sIHIucHJvdG90eXBlLmlzRGlzYWJsZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgiZGlzYWJsZWQiKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuaXNPcGVuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuaGFzRm9jdXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMiKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGb2N1cygpIHx8ICh0aGlzLiRjb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1mb2N1cyIpLCB0aGlzLnRyaWdnZXIoImZvY3VzIiwge30pKQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZXQoImRlYnVnIikgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBzZWxlY3QyKCJlbmFibGUiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKSBpbnN0ZWFkLicpLCBudWxsICE9IGUgJiYgMCAhPT0gZS5sZW5ndGggfHwgKGUgPSBbITBdKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9ICFlWzBdOwogICAgICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQucHJvcCgiZGlzYWJsZWQiLCB0KQogICAgICAgICAgICAgICAgfSwgci5wcm90b3R5cGUuZGF0YSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5nZXQoImRlYnVnIikgJiYgMCA8IGFyZ3VtZW50cy5sZW5ndGggJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MigiZGF0YSIpYC4gWW91IHNob3VsZCBjb25zaWRlciBzZXR0aW5nIHRoZSB2YWx1ZSBpbnN0ZWFkIHVzaW5nIGAkZWxlbWVudC52YWwoKWAuJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBbXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0CiAgICAgICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS52YWwgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoImRlYnVnIikgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuICYmIGNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBzZWxlY3QyKCJ2YWwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nKSwgbnVsbCA9PSB0IHx8IDAgPT09IHQubGVuZ3RoKSByZXR1cm4gdGhpcy4kZWxlbWVudC52YWwoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRbMF07CiAgICAgICAgICAgICAgICAgICAgZS5pc0FycmF5KG4pICYmIChuID0gZS5tYXAobiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIH0pKSksIHRoaXMuJGVsZW1lbnQudmFsKG4pLnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIikKICAgICAgICAgICAgICAgIH0sIHIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCksIHRoaXMuJGVsZW1lbnRbMF0uZGV0YWNoRXZlbnQgJiYgdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsIHRoaXMuX3N5bmNBKSwgbnVsbCAhPSB0aGlzLl9vYnNlcnZlciA/ICh0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksIHRoaXMuX29ic2VydmVyID0gbnVsbCkgOiB0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIgJiYgKHRoaXMuJGVsZW1lbnRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQXR0ck1vZGlmaWVkIiwgdGhpcy5fc3luY0EsICExKSwgdGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0aGlzLl9zeW5jUywgITEpLCB0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgdGhpcy5fc3luY1MsICExKSksIHRoaXMuX3N5bmNBID0gbnVsbCwgdGhpcy5fc3luY1MgPSBudWxsLCB0aGlzLiRlbGVtZW50Lm9mZigiLnNlbGVjdDIiKSwgdGhpcy4kZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIsIG4uR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCAib2xkLXRhYmluZGV4IikpLCB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIiksIHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSwgbi5SZW1vdmVEYXRhKHRoaXMuJGVsZW1lbnRbMF0pLCB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoInNlbGVjdDIiKSwgdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCksIHRoaXMuc2VsZWN0aW9uLmRlc3Ryb3koKSwgdGhpcy5kcm9wZG93bi5kZXN0cm95KCksIHRoaXMucmVzdWx0cy5kZXN0cm95KCksIHRoaXMuZGF0YUFkYXB0ZXIgPSBudWxsLCB0aGlzLnNlbGVjdGlvbiA9IG51bGwsIHRoaXMuZHJvcGRvd24gPSBudWxsLCB0aGlzLnJlc3VsdHMgPSBudWxsCiAgICAgICAgICAgICAgICB9LCByLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUoJzxzcGFuIGNsYXNzPSJzZWxlY3QyIHNlbGVjdDItY29udGFpbmVyIj48c3BhbiBjbGFzcz0ic2VsZWN0aW9uIj48L3NwYW4+PHNwYW4gY2xhc3M9ImRyb3Bkb3duLXdyYXBwZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+PC9zcGFuPicpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmF0dHIoImRpciIsIHRoaXMub3B0aW9ucy5nZXQoImRpciIpKSwgdGhpcy4kY29udGFpbmVyID0gdCwgdGhpcy4kY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tIiArIHRoaXMub3B0aW9ucy5nZXQoInRoZW1lIikpLCBuLlN0b3JlRGF0YSh0WzBdLCAiZWxlbWVudCIsIHRoaXMuJGVsZW1lbnQpLCB0CiAgICAgICAgICAgICAgICB9LCByCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvY29tcGF0L3V0aWxzIiwgWyJqcXVlcnkiXSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc3luY0Nzc0NsYXNzZXM6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8sIGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgKHIgPSBlLnRyaW0odC5hdHRyKCJjbGFzcyIpKSkgJiYgZSgociA9ICIiICsgcikuc3BsaXQoL1xzKy8pKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSAmJiBhLnB1c2godGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAociA9IGUudHJpbShuLmF0dHIoImNsYXNzIikpKSAmJiBlKChyID0gIiIgKyByKS5zcGxpdCgvXHMrLykpLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAhPT0gdGhpcy5pbmRleE9mKCJzZWxlY3QyLSIpICYmIG51bGwgIT0gKG8gPSBpKHRoaXMpKSAmJiBhLnB1c2gobykKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0LmF0dHIoImNsYXNzIiwgYS5qb2luKCIgIikpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIHQuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC9jb250YWluZXJDc3MiLCBbImpxdWVyeSIsICIuL3V0aWxzIl0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIGkucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuY2FsbCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMub3B0aW9ucy5nZXQoImNvbnRhaW5lckNzc0NsYXNzIikgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgZS5pc0Z1bmN0aW9uKG8pICYmIChvID0gbyh0aGlzLiRlbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLm9wdGlvbnMuZ2V0KCJhZGFwdENvbnRhaW5lckNzc0NsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEgPSBhIHx8IG4sIC0xICE9PSBvLmluZGV4T2YoIjphbGw6IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG8ucmVwbGFjZSgiOmFsbDoiLCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9IHQgPyB0ICsgIiAiICsgZSA6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMub3B0aW9ucy5nZXQoImNvbnRhaW5lckNzcyIpIHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlzRnVuY3Rpb24obCkgJiYgKGwgPSBsKHRoaXMuJGVsZW1lbnQpKSwgdC5zeW5jQ3NzQ2xhc3NlcyhyLCB0aGlzLiRlbGVtZW50LCBhKSwgci5jc3MobCksIHIuYWRkQ2xhc3MobyksIHIKICAgICAgICAgICAgICAgIH0sIGkKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9jb21wYXQvZHJvcGRvd25Dc3MiLCBbImpxdWVyeSIsICIuL3V0aWxzIl0sIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7fQogICAgICAgICAgICAgICAgcmV0dXJuIGkucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuY2FsbCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMub3B0aW9ucy5nZXQoImRyb3Bkb3duQ3NzQ2xhc3MiKSB8fCAiIjsKICAgICAgICAgICAgICAgICAgICBlLmlzRnVuY3Rpb24obykgJiYgKG8gPSBvKHRoaXMuJGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMub3B0aW9ucy5nZXQoImFkYXB0RHJvcGRvd25Dc3NDbGFzcyIpOwogICAgICAgICAgICAgICAgICAgIGlmIChhID0gYSB8fCBuLCAtMSAhPT0gby5pbmRleE9mKCI6YWxsOiIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBvLnJlcGxhY2UoIjphbGw6IiwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCAhPSB0ID8gdCArICIgIiArIGUgOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSB0aGlzLm9wdGlvbnMuZ2V0KCJkcm9wZG93bkNzcyIpIHx8IHt9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmlzRnVuY3Rpb24obCkgJiYgKGwgPSBsKHRoaXMuJGVsZW1lbnQpKSwgdC5zeW5jQ3NzQ2xhc3NlcyhyLCB0aGlzLiRlbGVtZW50LCBhKSwgci5jc3MobCksIHIuYWRkQ2xhc3MobyksIHIKICAgICAgICAgICAgICAgIH0sIGkKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9jb21wYXQvaW5pdFNlbGVjdGlvbiIsIFsianF1ZXJ5Il0sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBuLmdldCgiZGVidWciKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGluaXRTZWxlY3Rpb25gIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgY3VzdG9tIGRhdGEgYWRhcHRlciB0aGF0IG92ZXJyaWRlcyB0aGUgYGN1cnJlbnRgIG1ldGhvZC4gVGhpcyBtZXRob2QgaXMgbm93IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbnN0ZWFkIG9mIGEgc2luZ2xlIHRpbWUgd2hlbiB0aGUgaW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQuIFN1cHBvcnQgd2lsbCBiZSByZW1vdmVkIGZvciB0aGUgYGluaXRTZWxlY3Rpb25gIG9wdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0MiIpLCB0aGlzLmluaXRTZWxlY3Rpb24gPSBuLmdldCgiaW5pdFNlbGVjdGlvbiIpLCB0aGlzLl9pc0luaXRpYWxpemVkID0gITEsIGUuY2FsbCh0aGlzLCB0LCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQucHJvdG90eXBlLmN1cnJlbnQgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPyB0LmNhbGwodGhpcywgbikgOiB0aGlzLmluaXRTZWxlY3Rpb24uY2FsbChudWxsLCB0aGlzLiRlbGVtZW50LCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBpLl9pc0luaXRpYWxpemVkID0gITAsIGUuaXNBcnJheSh0KSB8fCAodCA9IFt0XSksIG4odCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sIHQKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9jb21wYXQvaW5wdXREYXRhIiwgWyJqcXVlcnkiLCAiLi4vdXRpbHMiXSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhID0gW10sIHRoaXMuX3ZhbHVlU2VwYXJhdG9yID0gbi5nZXQoInZhbHVlU2VwYXJhdG9yIikgfHwgIiwiLCAiaGlkZGVuIiA9PT0gdC5wcm9wKCJ0eXBlIikgJiYgbi5nZXQoImRlYnVnIikgJiYgY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCJTZWxlY3QyOiBVc2luZyBhIGhpZGRlbiBpbnB1dCB3aXRoIFNlbGVjdDIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhbmQgbWF5IHN0b3Agd29ya2luZyBpbiB0aGUgZnV0dXJlLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBgPHNlbGVjdD5gIGVsZW1lbnQgaW5zdGVhZC4iKSwgZS5jYWxsKHRoaXMsIHQsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbi5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuc2VsZWN0ZWQgfHwgLTEgIT09IGUuaW5BcnJheSh0LmlkLCBuKSA/ICh0LnNlbGVjdGVkID0gITAsIHIucHVzaCh0KSkgOiB0LnNlbGVjdGVkID0gITEsIHQuY2hpbGRyZW4gJiYgci5wdXNoLmFwcGx5KHIsIGkodC5jaGlsZHJlbiwgbikpLCByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBbXSwgbyA9IDA7IG8gPCB0aGlzLl9jdXJyZW50RGF0YS5sZW5ndGg7IG8rKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX2N1cnJlbnREYXRhW29dOwogICAgICAgICAgICAgICAgICAgICAgICByLnB1c2guYXBwbHkociwgaShhLCB0aGlzLiRlbGVtZW50LnZhbCgpLnNwbGl0KHRoaXMuX3ZhbHVlU2VwYXJhdG9yKSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4ocikKICAgICAgICAgICAgICAgIH0sIG4ucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmdldCgibXVsdGlwbGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuJGVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gdGhpcy5fdmFsdWVTZXBhcmF0b3IgKyBuLmlkLCB0aGlzLiRlbGVtZW50LnZhbChpKSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuY3VycmVudCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLm1hcCh0LCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zZWxlY3RlZCA9ICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy4kZWxlbWVudC52YWwobi5pZCksIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIHQuc2VsZWN0ZWQgPSAhMSwgdGhpcy5jdXJyZW50KChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgciA9IDA7IHIgPCBlLmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGVbcl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmlkICE9IG8uaWQgJiYgaS5wdXNoKG8uaWQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbi4kZWxlbWVudC52YWwoaS5qb2luKG4uX3ZhbHVlU2VwYXJhdG9yKSksIG4uJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwgbi5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IFtdLCByID0gMDsgciA8IHRoaXMuX2N1cnJlbnREYXRhLmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5fY3VycmVudERhdGFbcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5tYXRjaGVzKHQsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBhICYmIGkucHVzaChhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBuKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogaQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCBuLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5tYXAoaSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuR2V0RGF0YShlWzBdLCAiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhLnB1c2guYXBwbHkodGhpcy5fY3VycmVudERhdGEsIHIpCiAgICAgICAgICAgICAgICB9LCBuCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvY29tcGF0L21hdGNoZXIiLCBbImpxdWVyeSJdLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZXh0ZW5kKCEwLCB7fSwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IG4udGVybSB8fCAiIiA9PT0gZS50cmltKG4udGVybSkpIHJldHVybiByOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaGlsZHJlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IGkuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgMCA8PSBvOyBvLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGkuY2hpbGRyZW5bb107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdChuLnRlcm0sIGEudGV4dCwgYSkgfHwgci5jaGlsZHJlbi5zcGxpY2UobywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgwIDwgci5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQobi50ZXJtLCBpLnRleHQsIGkpID8gciA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvY29tcGF0L3F1ZXJ5IiwgW10sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGUoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIG4uZ2V0KCJkZWJ1ZyIpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgcXVlcnlgIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgY3VzdG9tIGRhdGEgYWRhcHRlciB0aGF0IG92ZXJyaWRlcyB0aGUgYHF1ZXJ5YCBtZXRob2QuIFN1cHBvcnQgd2lsbCBiZSByZW1vdmVkIGZvciB0aGUgYHF1ZXJ5YCBvcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuIiksIGUuY2FsbCh0aGlzLCB0LCBuKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGUucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHQuY2FsbGJhY2sgPSBuLCB0aGlzLm9wdGlvbnMuZ2V0KCJxdWVyeSIpLmNhbGwobnVsbCwgdCkKICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9hdHRhY2hDb250YWluZXIiLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZShlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgZS5jYWxsKHRoaXMsIHQsIG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgbi5maW5kKCIuZHJvcGRvd24td3JhcHBlciIpLmFwcGVuZCh0KSwgdC5hZGRDbGFzcygic2VsZWN0Mi1kcm9wZG93bi0tYmVsb3ciKSwgbi5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWJlbG93IikKICAgICAgICAgICAgICAgIH0sIGUKICAgICAgICAgICAgfSkpLCB0LmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9zdG9wUHJvcGFnYXRpb24iLCBbXSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHt9CiAgICAgICAgICAgICAgICByZXR1cm4gZS5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBlLmNhbGwodGhpcywgdCwgbiksIHRoaXMuJGRyb3Bkb3duLm9uKFsiYmx1ciIsICJjaGFuZ2UiLCAiY2xpY2siLCAiZGJsY2xpY2siLCAiZm9jdXMiLCAiZm9jdXNpbiIsICJmb2N1c291dCIsICJpbnB1dCIsICJrZXlkb3duIiwgImtleXVwIiwgImtleXByZXNzIiwgIm1vdXNlZG93biIsICJtb3VzZWVudGVyIiwgIm1vdXNlbGVhdmUiLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgInNlYXJjaCIsICJ0b3VjaGVuZCIsICJ0b3VjaHN0YXJ0Il0uam9pbigiICIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdC5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL3N0b3BQcm9wYWdhdGlvbiIsIFtdLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKCkge30KICAgICAgICAgICAgICAgIHJldHVybiBlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGUuY2FsbCh0aGlzLCB0LCBuKSwgdGhpcy4kc2VsZWN0aW9uLm9uKFsiYmx1ciIsICJjaGFuZ2UiLCAiY2xpY2siLCAiZGJsY2xpY2siLCAiZm9jdXMiLCAiZm9jdXNpbiIsICJmb2N1c291dCIsICJpbnB1dCIsICJrZXlkb3duIiwgImtleXVwIiwgImtleXByZXNzIiwgIm1vdXNlZG93biIsICJtb3VzZWVudGVyIiwgIm1vdXNlbGVhdmUiLCAibW91c2Vtb3ZlIiwgIm1vdXNlb3ZlciIsICJtb3VzZXVwIiwgInNlYXJjaCIsICJ0b3VjaGVuZCIsICJ0b3VjaHN0YXJ0Il0uam9pbigiICIpLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LCBlCiAgICAgICAgICAgIH0pKSwgdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpID0gWyJ3aGVlbCIsICJtb3VzZXdoZWVsIiwgIkRPTU1vdXNlU2Nyb2xsIiwgIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSwKICAgICAgICAgICAgICAgICAgICByID0gIm9ud2hlZWwiIGluIGRvY3VtZW50IHx8IDkgPD0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlID8gWyJ3aGVlbCJdIDogWyJtb3VzZXdoZWVsIiwgIkRvbU1vdXNlU2Nyb2xsIiwgIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSwKICAgICAgICAgICAgICAgICAgICBvID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwogICAgICAgICAgICAgICAgaWYgKGUuZXZlbnQuZml4SG9va3MpCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IGkubGVuZ3RoOyBhOykgZS5ldmVudC5maXhIb29rc1tpWy0tYV1dID0gZS5ldmVudC5tb3VzZUhvb2tzOwogICAgICAgICAgICAgICAgdmFyIHMgPSBlLmV2ZW50LnNwZWNpYWwubW91c2V3aGVlbCA9IHsKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAiMy4xLjEyIiwKICAgICAgICAgICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFkZEV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gci5sZW5ndGg7IHQ7KSB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoclstLXRdLCBsLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5vbm1vdXNld2hlZWwgPSBsOwogICAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEodGhpcywgIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiLCBzLmdldExpbmVIZWlnaHQodGhpcykpLCBlLmRhdGEodGhpcywgIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiLCBzLmdldFBhZ2VIZWlnaHQodGhpcykpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gci5sZW5ndGg7IHQ7KSB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoclstLXRdLCBsLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5vbm1vdXNld2hlZWwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZURhdGEodGhpcywgIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiKSwgZS5yZW1vdmVEYXRhKHRoaXMsICJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0IikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldExpbmVIZWlnaHQ6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG5bIm9mZnNldFBhcmVudCIgaW4gZS5mbiA/ICJvZmZzZXRQYXJlbnQiIDogInBhcmVudCJdKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmxlbmd0aCB8fCAoaSA9IGUoImJvZHkiKSksIHBhcnNlSW50KGkuY3NzKCJmb250U2l6ZSIpLCAxMCkgfHwgcGFyc2VJbnQobi5jc3MoImZvbnRTaXplIiksIDEwKSB8fCAxNgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZ2V0UGFnZUhlaWdodDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0KS5oZWlnaHQoKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0T2xkRGVsdGFzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplT2Zmc2V0OiAhMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIsIGEgPSBpIHx8IHdpbmRvdy5ldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uY2FsbChhcmd1bWVudHMsIDEpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChpID0gZS5ldmVudC5maXgoYSkpLnR5cGUgPSAibW91c2V3aGVlbCIsICJkZXRhaWwiIGluIGEgJiYgKGYgPSAtMSAqIGEuZGV0YWlsKSwgIndoZWVsRGVsdGEiIGluIGEgJiYgKGYgPSBhLndoZWVsRGVsdGEpLCAid2hlZWxEZWx0YVkiIGluIGEgJiYgKGYgPSBhLndoZWVsRGVsdGFZKSwgIndoZWVsRGVsdGFYIiBpbiBhICYmIChoID0gLTEgKiBhLndoZWVsRGVsdGFYKSwgImF4aXMiIGluIGEgJiYgYS5heGlzID09PSBhLkhPUklaT05UQUxfQVhJUyAmJiAoaCA9IC0xICogZiwgZiA9IDApLCBkID0gMCA9PT0gZiA/IGggOiBmLCAiZGVsdGFZIiBpbiBhICYmIChkID0gZiA9IC0xICogYS5kZWx0YVkpLCAiZGVsdGFYIiBpbiBhICYmIChoID0gYS5kZWx0YVgsIDAgPT09IGYgJiYgKGQgPSAtMSAqIGgpKSwgMCAhPT0gZiB8fCAwICE9PSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxID09PSBhLmRlbHRhTW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBlLmRhdGEodGhpcywgIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKj0gbSwgZiAqPSBtLCBoICo9IG0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgyID09PSBhLmRlbHRhTW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBlLmRhdGEodGhpcywgIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKj0gdiwgZiAqPSB2LCBoICo9IHYKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IE1hdGgubWF4KE1hdGguYWJzKGYpLCBNYXRoLmFicyhoKSksICghbiB8fCByIDwgbikgJiYgdShhLCBuID0gcikgJiYgKG4gLz0gNDApLCB1KGEsIHIpICYmIChkIC89IDQwLCBoIC89IDQwLCBmIC89IDQwKSwgZCA9IE1hdGhbMSA8PSBkID8gImZsb29yIiA6ICJjZWlsIl0oZCAvIG4pLCBoID0gTWF0aFsxIDw9IGggPyAiZmxvb3IiIDogImNlaWwiXShoIC8gbiksIGYgPSBNYXRoWzEgPD0gZiA/ICJmbG9vciIgOiAiY2VpbCJdKGYgLyBuKSwgcy5zZXR0aW5ncy5ub3JtYWxpemVPZmZzZXQgJiYgdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpLmNsaWVudFggLSB5LmxlZnQsIGcgPSBpLmNsaWVudFkgLSB5LnRvcAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpLmRlbHRhWCA9IGgsIGkuZGVsdGFZID0gZiwgaS5kZWx0YUZhY3RvciA9IG4sIGkub2Zmc2V0WCA9IHAsIGkub2Zmc2V0WSA9IGcsIGkuZGVsdGFNb2RlID0gMCwgbC51bnNoaWZ0KGksIGQsIGgsIGYpLCB0ICYmIGNsZWFyVGltZW91dCh0KSwgdCA9IHNldFRpbWVvdXQoYywgMjAwKSwgKGUuZXZlbnQuZGlzcGF0Y2ggfHwgZS5ldmVudC5oYW5kbGUpLmFwcGx5KHRoaXMsIGwpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoKSB7CiAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5zZXR0aW5ncy5hZGp1c3RPbGREZWx0YXMgJiYgIm1vdXNld2hlZWwiID09PSBlLnR5cGUgJiYgdCAlIDEyMCA9PSAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmZuLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgbW91c2V3aGVlbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA/IHRoaXMuYmluZCgibW91c2V3aGVlbCIsIGUpIDogdGhpcy50cmlnZ2VyKCJtb3VzZXdoZWVsIikKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHVubW91c2V3aGVlbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51bmJpbmQoIm1vdXNld2hlZWwiLCBlKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuZGVmaW5lICYmIHQuZGVmaW5lLmFtZCA/IHQuZGVmaW5lKCJqcXVlcnktbW91c2V3aGVlbCIsIFsianF1ZXJ5Il0sIHYpIDogIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgPyBtb2R1bGUuZXhwb3J0cyA9IHYgOiB2KGUpLCB0LmRlZmluZSgianF1ZXJ5LnNlbGVjdDIiLCBbImpxdWVyeSIsICJqcXVlcnktbW91c2V3aGVlbCIsICIuL3NlbGVjdDIvY29yZSIsICIuL3NlbGVjdDIvZGVmYXVsdHMiLCAiLi9zZWxlY3QyL3V0aWxzIl0sIChmdW5jdGlvbihlLCB0LCBuLCBpLCByKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlLmZuLnNlbGVjdDIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IFsib3BlbiIsICJjbG9zZSIsICJkZXN0cm95Il07CiAgICAgICAgICAgICAgICAgICAgZS5mbi5zZWxlY3QyID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mKHQgPSB0IHx8IHt9KSkgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUuZXh0ZW5kKCEwLCB7fSwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbihlKHRoaXMpLCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgdCkgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgU2VsZWN0MjogIiArIHQpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSByLkdldERhdGEodGhpcywgInNlbGVjdDIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgPT0gZSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yICYmIGNvbnNvbGUuZXJyb3IoIlRoZSBzZWxlY3QyKCciICsgdCArICInKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiBlbGVtZW50IHRoYXQgaXMgbm90IHVzaW5nIFNlbGVjdDIuIiksIGkgPSBlW3RdLmFwcGx5KGUsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgLTEgPCBlLmluQXJyYXkodCwgbykgPyB0aGlzIDogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUuZm4uc2VsZWN0Mi5kZWZhdWx0cyAmJiAoZS5mbi5zZWxlY3QyLmRlZmF1bHRzID0gaSksIG4KICAgICAgICAgICAgfSkpLCB7CiAgICAgICAgICAgICAgICBkZWZpbmU6IHQuZGVmaW5lLAogICAgICAgICAgICAgICAgcmVxdWlyZTogdC5yZXF1aXJlCiAgICAgICAgICAgIH0KICAgICAgICB9KCksCiAgICAgICAgbiA9IHQucmVxdWlyZSgianF1ZXJ5LnNlbGVjdDIiKTsKICAgIHJldHVybiBlLmZuLnNlbGVjdDIuYW1kID0gdCwgbgp9KSksCmZ1bmN0aW9uKGUsIHQpIHsKICAgICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IHQoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKHQpIDogKGUgPSBlIHx8IHNlbGYpLlN3ZWV0YWxlcnQyID0gdCgpCn0odGhpcywgKGZ1bmN0aW9uKCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIGZ1bmN0aW9uIGUodCkgewogICAgICAgIHJldHVybiAoZSA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAic3ltYm9sIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdHlwZW9mIGUKICAgICAgICB9IDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgZS5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIGUgIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBlCiAgICAgICAgfSkodCkKICAgIH0KCiAgICBmdW5jdGlvbiB0KGUsIHQpIHsKICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpCiAgICB9CgogICAgZnVuY3Rpb24gbihlLCB0KSB7CiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCB0Lmxlbmd0aDsgbisrKSB7CiAgICAgICAgICAgIHZhciBpID0gdFtuXTsKICAgICAgICAgICAgaS5lbnVtZXJhYmxlID0gaS5lbnVtZXJhYmxlIHx8ICExLCBpLmNvbmZpZ3VyYWJsZSA9ICEwLCAidmFsdWUiIGluIGkgJiYgKGkud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBpLmtleSwgaSkKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaShlLCB0LCBpKSB7CiAgICAgICAgcmV0dXJuIHQgJiYgbihlLnByb3RvdHlwZSwgdCksIGkgJiYgbihlLCBpKSwgZQogICAgfQoKICAgIGZ1bmN0aW9uIHIoKSB7CiAgICAgICAgcmV0dXJuIChyID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGFyZ3VtZW50c1t0XTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIGkpICYmIChlW2ldID0gbltpXSkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0pLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgIH0KCiAgICBmdW5jdGlvbiBvKGUpIHsKICAgICAgICByZXR1cm4gKG8gPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkKICAgICAgICB9KShlKQogICAgfQoKICAgIGZ1bmN0aW9uIGEoZSwgdCkgewogICAgICAgIHJldHVybiAoYSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLl9fcHJvdG9fXyA9IHQsIGUKICAgICAgICB9KShlLCB0KQogICAgfQoKICAgIGZ1bmN0aW9uIHMoKSB7CiAgICAgICAgaWYgKCJ1bmRlZmluZWQiID09IHR5cGVvZiBSZWZsZWN0IHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuICExOwogICAgICAgIGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gITE7CiAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIFByb3h5KSByZXR1cm4gITA7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIChmdW5jdGlvbigpIHt9KSkpLCAhMAogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGwoZSwgdCwgbikgewogICAgICAgIHJldHVybiAobCA9IHMoKSA/IFJlZmxlY3QuY29uc3RydWN0IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IFtudWxsXTsKICAgICAgICAgICAgaS5wdXNoLmFwcGx5KGksIHQpOwogICAgICAgICAgICB2YXIgciA9IG5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGUsIGkpKTsKICAgICAgICAgICAgcmV0dXJuIG4gJiYgYShyLCBuLnByb3RvdHlwZSksIHIKICAgICAgICB9KS5hcHBseShudWxsLCBhcmd1bWVudHMpCiAgICB9CgogICAgZnVuY3Rpb24gYyhlLCB0KSB7CiAgICAgICAgcmV0dXJuICF0IHx8ICJvYmplY3QiICE9IHR5cGVvZiB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfShlKSA6IHQKICAgIH0KCiAgICBmdW5jdGlvbiB1KGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gKHUgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmdldCA/IFJlZmxlY3QuZ2V0IDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZvciAoOyAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIHQpICYmIG51bGwgIT09IChlID0gbyhlKSk7KTsKICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgIH0oZSwgdCk7CiAgICAgICAgICAgIGlmIChpKSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSwgdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5nZXQgPyByLmdldC5jYWxsKG4pIDogci52YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgfSkoZSwgdCwgbiB8fCBlKQogICAgfQoKICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlKS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgcmV0dXJuIGVbdF0KICAgICAgICB9KSkKICAgIH0KCiAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkKICAgIH0KCiAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICB2YXIgbjsKICAgICAgICBuID0gJyInLmNvbmNhdChlLCAnIiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHVzZSAiJykuY29uY2F0KHQsICciIGluc3RlYWQuJyksIC0xID09PSBxLmluZGV4T2YobikgJiYgKHEucHVzaChuKSwgQihuKSkKICAgIH0KCiAgICBmdW5jdGlvbiBwKGUpIHsKICAgICAgICByZXR1cm4gZSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnRvUHJvbWlzZQogICAgfQoKICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgIHJldHVybiBwKGUpID8gZS50b1Byb21pc2UoKSA6IFByb21pc2UucmVzb2x2ZShlKQogICAgfQoKICAgIGZ1bmN0aW9uIG0oZSkgewogICAgICAgIHJldHVybiBlICYmIFByb21pc2UucmVzb2x2ZShlKSA9PT0gZQogICAgfQoKICAgIGZ1bmN0aW9uIHYodCkgewogICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgRWxlbWVudCB8fCAib2JqZWN0IiA9PT0gZShuID0gdCkgJiYgbi5qcXVlcnk7CiAgICAgICAgdmFyIG4KICAgIH0KCiAgICBmdW5jdGlvbiB5KGUpIHsKICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgIGZvciAodmFyIG4gaW4gZSkgdFtlW25dXSA9ICJzd2FsMi0iICsgZVtuXTsKICAgICAgICByZXR1cm4gdAogICAgfQoKICAgIGZ1bmN0aW9uIGIoZSkgewogICAgICAgIHZhciB0ID0gRygpOwogICAgICAgIHJldHVybiB0ID8gdC5xdWVyeVNlbGVjdG9yKGUpIDogbnVsbAogICAgfQoKICAgIGZ1bmN0aW9uIHcoZSkgewogICAgICAgIHJldHVybiBiKCIuIi5jb25jYXQoZSkpCiAgICB9CgogICAgZnVuY3Rpb24geCgpIHsKICAgICAgICByZXR1cm4gaChLKCkucXVlcnlTZWxlY3RvckFsbCgiLiIuY29uY2F0KFkuaWNvbikpKQogICAgfQoKICAgIGZ1bmN0aW9uIF8oKSB7CiAgICAgICAgdmFyIGUgPSB4KCkuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBtZShlKQogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZS5sZW5ndGggPyBlWzBdIDogbnVsbAogICAgfQoKICAgIGZ1bmN0aW9uIFMoKSB7CiAgICAgICAgcmV0dXJuIHcoWS50aXRsZSkKICAgIH0KCiAgICBmdW5jdGlvbiBDKCkgewogICAgICAgIHJldHVybiB3KFkuY29udGVudCkKICAgIH0KCiAgICBmdW5jdGlvbiBrKCkgewogICAgICAgIHJldHVybiB3KFkuaW1hZ2UpCiAgICB9CgogICAgZnVuY3Rpb24gVCgpIHsKICAgICAgICByZXR1cm4gdyhZWyJwcm9ncmVzcy1zdGVwcyJdKQogICAgfQoKICAgIGZ1bmN0aW9uIEEoKSB7CiAgICAgICAgcmV0dXJuIHcoWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0pCiAgICB9CgogICAgZnVuY3Rpb24gRSgpIHsKICAgICAgICByZXR1cm4gYigiLiIuY29uY2F0KFkuYWN0aW9ucywgIiAuIikuY29uY2F0KFkuY29uZmlybSkpCiAgICB9CgogICAgZnVuY3Rpb24gRCgpIHsKICAgICAgICByZXR1cm4gYigiLiIuY29uY2F0KFkuYWN0aW9ucywgIiAuIikuY29uY2F0KFkuY2FuY2VsKSkKICAgIH0KCiAgICBmdW5jdGlvbiBPKCkgewogICAgICAgIHJldHVybiB3KFkuYWN0aW9ucykKICAgIH0KCiAgICBmdW5jdGlvbiBNKCkgewogICAgICAgIHJldHVybiB3KFkuaGVhZGVyKQogICAgfQoKICAgIGZ1bmN0aW9uIEkoKSB7CiAgICAgICAgcmV0dXJuIHcoWS5mb290ZXIpCiAgICB9CgogICAgZnVuY3Rpb24gTCgpIHsKICAgICAgICByZXR1cm4gdyhZWyJ0aW1lci1wcm9ncmVzcy1iYXIiXSkKICAgIH0KCiAgICBmdW5jdGlvbiBQKCkgewogICAgICAgIHJldHVybiB3KFkuY2xvc2UpCiAgICB9CgogICAgZnVuY3Rpb24gaigpIHsKICAgICAgICB2YXIgZSA9IGgoSygpLnF1ZXJ5U2VsZWN0b3JBbGwoJ1t0YWJpbmRleF06bm90KFt0YWJpbmRleD0iLTEiXSk6bm90KFt0YWJpbmRleD0iMCJdKScpKS5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA9IHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpKSwgKHQgPSBwYXJzZUludCh0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSkpIDwgZSA/IDEgOiBlIDwgdCA/IC0xIDogMAogICAgICAgICAgICB9KSksCiAgICAgICAgICAgIHQgPSBoKEsoKS5xdWVyeVNlbGVjdG9yQWxsKCdcbiAgYVtocmVmXSxcbiAgYXJlYVtocmVmXSxcbiAgaW5wdXQ6bm90KFtkaXNhYmxlZF0pLFxuICBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pLFxuICB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksXG4gIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSksXG4gIGlmcmFtZSxcbiAgb2JqZWN0LFxuICBlbWJlZCxcbiAgW3RhYmluZGV4PSIwIl0sXG4gIFtjb250ZW50ZWRpdGFibGVdLFxuICBhdWRpb1tjb250cm9sc10sXG4gIHZpZGVvW2NvbnRyb2xzXSxcbiAgc3VtbWFyeVxuJykpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICItMSIgIT09IGUuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpCiAgICAgICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gW10sIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgLSAxID09PSB0LmluZGV4T2YoZVtuXSkgJiYgdC5wdXNoKGVbbl0pOwogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIH0oZS5jb25jYXQodCkpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gbWUoZSkKICAgICAgICB9KSkKICAgIH0KCiAgICBmdW5jdGlvbiBOKCkgewogICAgICAgIHJldHVybiAhUSgpICYmICFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhZWyJuby1iYWNrZHJvcCJdKQogICAgfQoKICAgIGZ1bmN0aW9uIEYoKSB7CiAgICAgICAgcmV0dXJuIEsoKS5oYXNBdHRyaWJ1dGUoImRhdGEtbG9hZGluZyIpCiAgICB9CgogICAgZnVuY3Rpb24gUihlLCB0KSB7CiAgICAgICAgdmFyIG47CiAgICAgICAgZS50ZXh0Q29udGVudCA9ICIiLCB0ICYmIChoKChuID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LCAidGV4dC9odG1sIikpLnF1ZXJ5U2VsZWN0b3IoImhlYWQiKS5jaGlsZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGUuYXBwZW5kQ2hpbGQodCkKICAgICAgICB9KSksIGgobi5xdWVyeVNlbGVjdG9yKCJib2R5IikuY2hpbGROb2RlcykuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICBlLmFwcGVuZENoaWxkKHQpCiAgICAgICAgfSkpKQogICAgfQoKICAgIGZ1bmN0aW9uICQoZSwgdCkgewogICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSB0LnNwbGl0KC9ccysvKSwgaSA9IDA7IGkgPCBuLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAgICAgaWYgKCFlLmNsYXNzTGlzdC5jb250YWlucyhuW2ldKSkgcmV0dXJuOwogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB6KHQsIG4sIGkpIHsKICAgICAgICB2YXIgciwgbzsKICAgICAgICBpZiAobyA9IG4sIGgoKHIgPSB0KS5jbGFzc0xpc3QpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIC0xID09PSBkKFkpLmluZGV4T2YoZSkgJiYgLTEgPT09IGQoWCkuaW5kZXhPZihlKSAmJiAtMSA9PT0gZChvLnNob3dDbGFzcykuaW5kZXhPZihlKSAmJiByLmNsYXNzTGlzdC5yZW1vdmUoZSkKICAgICAgICAgICAgfSkpLCBuLmN1c3RvbUNsYXNzICYmIG4uY3VzdG9tQ2xhc3NbaV0pIHsKICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBuLmN1c3RvbUNsYXNzW2ldICYmICFuLmN1c3RvbUNsYXNzW2ldLmZvckVhY2gpIHJldHVybiBCKCJJbnZhbGlkIHR5cGUgb2YgY3VzdG9tQ2xhc3MuIi5jb25jYXQoaSwgJyEgRXhwZWN0ZWQgc3RyaW5nIG9yIGl0ZXJhYmxlIG9iamVjdCwgZ290ICInKS5jb25jYXQoZShuLmN1c3RvbUNsYXNzW2ldKSwgJyInKSk7CiAgICAgICAgICAgIGZlKHQsIG4uY3VzdG9tQ2xhc3NbaV0pCiAgICAgICAgfQogICAgfQogICAgdmFyIEggPSAiU3dlZXRBbGVydDI6IiwKICAgICAgICBCID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjb25zb2xlLndhcm4oIiIuY29uY2F0KEgsICIgIikuY29uY2F0KGUpKQogICAgICAgIH0sCiAgICAgICAgVyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigiIi5jb25jYXQoSCwgIiAiKS5jb25jYXQoZSkpCiAgICAgICAgfSwKICAgICAgICBxID0gW10sCiAgICAgICAgVSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgPyBlKCkgOiBlCiAgICAgICAgfSwKICAgICAgICBWID0gT2JqZWN0LmZyZWV6ZSh7CiAgICAgICAgICAgIGNhbmNlbDogImNhbmNlbCIsCiAgICAgICAgICAgIGJhY2tkcm9wOiAiYmFja2Ryb3AiLAogICAgICAgICAgICBjbG9zZTogImNsb3NlIiwKICAgICAgICAgICAgZXNjOiAiZXNjIiwKICAgICAgICAgICAgdGltZXI6ICJ0aW1lciIKICAgICAgICB9KSwKICAgICAgICBZID0geShbImNvbnRhaW5lciIsICJzaG93biIsICJoZWlnaHQtYXV0byIsICJpb3NmaXgiLCAicG9wdXAiLCAibW9kYWwiLCAibm8tYmFja2Ryb3AiLCAibm8tdHJhbnNpdGlvbiIsICJ0b2FzdCIsICJ0b2FzdC1zaG93biIsICJ0b2FzdC1jb2x1bW4iLCAic2hvdyIsICJoaWRlIiwgImNsb3NlIiwgInRpdGxlIiwgImhlYWRlciIsICJjb250ZW50IiwgImh0bWwtY29udGFpbmVyIiwgImFjdGlvbnMiLCAiY29uZmlybSIsICJjYW5jZWwiLCAiZm9vdGVyIiwgImljb24iLCAiaWNvbi1jb250ZW50IiwgImltYWdlIiwgImlucHV0IiwgImZpbGUiLCAicmFuZ2UiLCAic2VsZWN0IiwgInJhZGlvIiwgImNoZWNrYm94IiwgImxhYmVsIiwgInRleHRhcmVhIiwgImlucHV0ZXJyb3IiLCAidmFsaWRhdGlvbi1tZXNzYWdlIiwgInByb2dyZXNzLXN0ZXBzIiwgImFjdGl2ZS1wcm9ncmVzcy1zdGVwIiwgInByb2dyZXNzLXN0ZXAiLCAicHJvZ3Jlc3Mtc3RlcC1saW5lIiwgImxvYWRpbmciLCAic3R5bGVkIiwgInRvcCIsICJ0b3Atc3RhcnQiLCAidG9wLWVuZCIsICJ0b3AtbGVmdCIsICJ0b3AtcmlnaHQiLCAiY2VudGVyIiwgImNlbnRlci1zdGFydCIsICJjZW50ZXItZW5kIiwgImNlbnRlci1sZWZ0IiwgImNlbnRlci1yaWdodCIsICJib3R0b20iLCAiYm90dG9tLXN0YXJ0IiwgImJvdHRvbS1lbmQiLCAiYm90dG9tLWxlZnQiLCAiYm90dG9tLXJpZ2h0IiwgImdyb3ctcm93IiwgImdyb3ctY29sdW1uIiwgImdyb3ctZnVsbHNjcmVlbiIsICJydGwiLCAidGltZXItcHJvZ3Jlc3MtYmFyIiwgInRpbWVyLXByb2dyZXNzLWJhci1jb250YWluZXIiLCAic2Nyb2xsYmFyLW1lYXN1cmUiLCAiaWNvbi1zdWNjZXNzIiwgImljb24td2FybmluZyIsICJpY29uLWluZm8iLCAiaWNvbi1xdWVzdGlvbiIsICJpY29uLWVycm9yIl0pLAogICAgICAgIFggPSB5KFsic3VjY2VzcyIsICJ3YXJuaW5nIiwgImluZm8iLCAicXVlc3Rpb24iLCAiZXJyb3IiXSksCiAgICAgICAgRyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQoWS5jb250YWluZXIpKQogICAgICAgIH0sCiAgICAgICAgSyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdyhZLnBvcHVwKQogICAgICAgIH0sCiAgICAgICAgUSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoWVsidG9hc3Qtc2hvd24iXSkKICAgICAgICB9LAogICAgICAgIFogPSB7CiAgICAgICAgICAgIHByZXZpb3VzQm9keVBhZGRpbmc6IG51bGwKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIEooZSwgdCkgewogICAgICAgIGlmICghdCkgcmV0dXJuIG51bGw7CiAgICAgICAgc3dpdGNoICh0KSB7CiAgICAgICAgICAgIGNhc2UgInNlbGVjdCI6CiAgICAgICAgICAgIGNhc2UgInRleHRhcmVhIjoKICAgICAgICAgICAgY2FzZSAiZmlsZSI6CiAgICAgICAgICAgICAgICByZXR1cm4gZ2UoZSwgWVt0XSk7CiAgICAgICAgICAgIGNhc2UgImNoZWNrYm94IjoKICAgICAgICAgICAgICAgIHJldHVybiBlLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLmNoZWNrYm94LCAiIGlucHV0IikpOwogICAgICAgICAgICBjYXNlICJyYWRpbyI6CiAgICAgICAgICAgICAgICByZXR1cm4gZS5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQoWS5yYWRpbywgIiBpbnB1dDpjaGVja2VkIikpIHx8IGUucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KFkucmFkaW8sICIgaW5wdXQ6Zmlyc3QtY2hpbGQiKSk7CiAgICAgICAgICAgIGNhc2UgInJhbmdlIjoKICAgICAgICAgICAgICAgIHJldHVybiBlLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLnJhbmdlLCAiIGlucHV0IikpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuIGdlKGUsIFkuaW5wdXQpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGVlKGUpIHsKICAgICAgICB2YXIgdDsKICAgICAgICBlLmZvY3VzKCksICJmaWxlIiAhPT0gZS50eXBlICYmICh0ID0gZS52YWx1ZSwgZS52YWx1ZSA9ICIiLCBlLnZhbHVlID0gdCkKICAgIH0KCiAgICBmdW5jdGlvbiB0ZShlLCB0LCBuKSB7CiAgICAgICAgZSAmJiB0ICYmICgic3RyaW5nIiA9PSB0eXBlb2YgdCAmJiAodCA9IHQuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKSksIHQuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICBlLmZvckVhY2ggPyBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIG4gPyBlLmNsYXNzTGlzdC5hZGQodCkgOiBlLmNsYXNzTGlzdC5yZW1vdmUodCkKICAgICAgICAgICAgfSkpIDogbiA/IGUuY2xhc3NMaXN0LmFkZCh0KSA6IGUuY2xhc3NMaXN0LnJlbW92ZSh0KQogICAgICAgIH0pKSkKICAgIH0KCiAgICBmdW5jdGlvbiBuZShlLCB0LCBuKSB7CiAgICAgICAgbiB8fCAwID09PSBwYXJzZUludChuKSA/IGUuc3R5bGVbdF0gPSAibnVtYmVyIiA9PSB0eXBlb2YgbiA/ICIiLmNvbmNhdChuLCAicHgiKSA6IG4gOiBlLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpCiAgICB9CgogICAgZnVuY3Rpb24gaWUoZSwgdCkgewogICAgICAgIHZhciBuID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSB0ID8gdCA6ICJmbGV4IjsKICAgICAgICBlLnN0eWxlLm9wYWNpdHkgPSAiIiwgZS5zdHlsZS5kaXNwbGF5ID0gbgogICAgfQoKICAgIGZ1bmN0aW9uIHJlKGUpIHsKICAgICAgICBlLnN0eWxlLm9wYWNpdHkgPSAiIiwgZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiCiAgICB9CgogICAgZnVuY3Rpb24gb2UoZSwgdCwgbikgewogICAgICAgIHQgPyBpZShlLCBuKSA6IHJlKGUpCiAgICB9CgogICAgZnVuY3Rpb24gYWUoZSkgewogICAgICAgIHJldHVybiAhIShlLnNjcm9sbEhlaWdodCA+IGUuY2xpZW50SGVpZ2h0KQogICAgfQoKICAgIGZ1bmN0aW9uIHNlKGUpIHsKICAgICAgICB2YXIgdCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLAogICAgICAgICAgICBuID0gcGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoImFuaW1hdGlvbi1kdXJhdGlvbiIpIHx8ICIwIiksCiAgICAgICAgICAgIGkgPSBwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNpdGlvbi1kdXJhdGlvbiIpIHx8ICIwIik7CiAgICAgICAgcmV0dXJuIDAgPCBuIHx8IDAgPCBpCiAgICB9CgogICAgZnVuY3Rpb24gbGUoZSwgdCkgewogICAgICAgIHZhciBuID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSB0ICYmIHQsCiAgICAgICAgICAgIGkgPSBMKCk7CiAgICAgICAgbWUoaSkgJiYgKG4gJiYgKGkuc3R5bGUudHJhbnNpdGlvbiA9ICJub25lIiwgaS5zdHlsZS53aWR0aCA9ICIxMDAlIiksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpLnN0eWxlLnRyYW5zaXRpb24gPSAid2lkdGggIi5jb25jYXQoZSAvIDFlMywgInMgbGluZWFyIiksIGkuc3R5bGUud2lkdGggPSAiMCUiCiAgICAgICAgfSksIDEwKSkKICAgIH0KCiAgICBmdW5jdGlvbiBjZSgpIHsKICAgICAgICByZXR1cm4gInVuZGVmaW5lZCIgPT0gdHlwZW9mIHdpbmRvdyB8fCAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZG9jdW1lbnQKICAgIH0KCiAgICBmdW5jdGlvbiB1ZShlKSB7CiAgICAgICAgUnQuaXNWaXNpYmxlKCkgJiYgaGUgIT09IGUudGFyZ2V0LnZhbHVlICYmIFJ0LnJlc2V0VmFsaWRhdGlvbk1lc3NhZ2UoKSwgaGUgPSBlLnRhcmdldC52YWx1ZQogICAgfQoKICAgIGZ1bmN0aW9uIGRlKHQsIG4pIHsKICAgICAgICB0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBuLmFwcGVuZENoaWxkKHQpIDogIm9iamVjdCIgPT09IGUodCkgPyB5ZSh0LCBuKSA6IHQgJiYgUihuLCB0KQogICAgfQogICAgdmFyIGhlLCBmZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdGUoZSwgdCwgITApCiAgICAgICAgfSwKICAgICAgICBwZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdGUoZSwgdCwgITEpCiAgICAgICAgfSwKICAgICAgICBnZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBlLmNoaWxkTm9kZXMubGVuZ3RoOyBuKyspCiAgICAgICAgICAgICAgICBpZiAoJChlLmNoaWxkTm9kZXNbbl0sIHQpKSByZXR1cm4gZS5jaGlsZE5vZGVzW25dCiAgICAgICAgfSwKICAgICAgICBtZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICEoIWUgfHwgIShlLm9mZnNldFdpZHRoIHx8IGUub2Zmc2V0SGVpZ2h0IHx8IGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKQogICAgICAgIH0sCiAgICAgICAgdmUgPSAnXG4gPGRpdiBhcmlhLWxhYmVsbGVkYnk9IicuY29uY2F0KFkudGl0bGUsICciIGFyaWEtZGVzY3JpYmVkYnk9IicpLmNvbmNhdChZLmNvbnRlbnQsICciIGNsYXNzPSInKS5jb25jYXQoWS5wb3B1cCwgJyIgdGFiaW5kZXg9Ii0xIj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmhlYWRlciwgJyI+XG4gICAgIDx1bCBjbGFzcz0iJykuY29uY2F0KFlbInByb2dyZXNzLXN0ZXBzIl0sICciPjwvdWw+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmljb24sICIgIikuY29uY2F0KFguZXJyb3IsICciPjwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5pY29uLCAiICIpLmNvbmNhdChYLnF1ZXN0aW9uLCAnIj48L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFkuaWNvbiwgIiAiKS5jb25jYXQoWC53YXJuaW5nLCAnIj48L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFkuaWNvbiwgIiAiKS5jb25jYXQoWC5pbmZvLCAnIj48L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFkuaWNvbiwgIiAiKS5jb25jYXQoWC5zdWNjZXNzLCAnIj48L2Rpdj5cbiAgICAgPGltZyBjbGFzcz0iJykuY29uY2F0KFkuaW1hZ2UsICciIC8+XG4gICAgIDxoMiBjbGFzcz0iJykuY29uY2F0KFkudGl0bGUsICciIGlkPSInKS5jb25jYXQoWS50aXRsZSwgJyI+PC9oMj5cbiAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInKS5jb25jYXQoWS5jbG9zZSwgJyI+PC9idXR0b24+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmNvbnRlbnQsICciPlxuICAgICA8ZGl2IGlkPSInKS5jb25jYXQoWS5jb250ZW50LCAnIiBjbGFzcz0iJykuY29uY2F0KFlbImh0bWwtY29udGFpbmVyIl0sICciPjwvZGl2PlxuICAgICA8aW5wdXQgY2xhc3M9IicpLmNvbmNhdChZLmlucHV0LCAnIiAvPlxuICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgY2xhc3M9IicpLmNvbmNhdChZLmZpbGUsICciIC8+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLnJhbmdlLCAnIj5cbiAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIC8+XG4gICAgICAgPG91dHB1dD48L291dHB1dD5cbiAgICAgPC9kaXY+XG4gICAgIDxzZWxlY3QgY2xhc3M9IicpLmNvbmNhdChZLnNlbGVjdCwgJyI+PC9zZWxlY3Q+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLnJhZGlvLCAnIj48L2Rpdj5cbiAgICAgPGxhYmVsIGZvcj0iJykuY29uY2F0KFkuY2hlY2tib3gsICciIGNsYXNzPSInKS5jb25jYXQoWS5jaGVja2JveCwgJyI+XG4gICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiAvPlxuICAgICAgIDxzcGFuIGNsYXNzPSInKS5jb25jYXQoWS5sYWJlbCwgJyI+PC9zcGFuPlxuICAgICA8L2xhYmVsPlxuICAgICA8dGV4dGFyZWEgY2xhc3M9IicpLmNvbmNhdChZLnRleHRhcmVhLCAnIj48L3RleHRhcmVhPlxuICAgICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0sICciIGlkPSInKS5jb25jYXQoWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0sICciPjwvZGl2PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5hY3Rpb25zLCAnIj5cbiAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInKS5jb25jYXQoWS5jb25maXJtLCAnIj5PSzwvYnV0dG9uPlxuICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicpLmNvbmNhdChZLmNhbmNlbCwgJyI+Q2FuY2VsPC9idXR0b24+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmZvb3RlciwgJyI+PC9kaXY+XG4gICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWVsidGltZXItcHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciJdLCAnIj5cbiAgICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFlbInRpbWVyLXByb2dyZXNzLWJhciJdLCAnIj48L2Rpdj5cbiAgIDwvZGl2PlxuIDwvZGl2PlxuJykucmVwbGFjZSgvKF58XG4pXHMqL2csICIiKSwKICAgICAgICB5ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZS5qcXVlcnkgPyBiZSh0LCBlKSA6IFIodCwgZS50b1N0cmluZygpKQogICAgICAgIH0sCiAgICAgICAgYmUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGlmIChlLnRleHRDb250ZW50ID0gIiIsIDAgaW4gdCkKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIGluIHQ7IG4rKykgZS5hcHBlbmRDaGlsZCh0W25dLmNsb25lTm9kZSghMCkpOwogICAgICAgICAgICBlbHNlIGUuYXBwZW5kQ2hpbGQodC5jbG9uZU5vZGUoITApKQogICAgICAgIH0sCiAgICAgICAgd2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKGNlKCkpIHJldHVybiAhMTsKICAgICAgICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgICAgIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgV2Via2l0QW5pbWF0aW9uOiAid2Via2l0QW5pbWF0aW9uRW5kIiwKICAgICAgICAgICAgICAgICAgICBPQW5pbWF0aW9uOiAib0FuaW1hdGlvbkVuZCBvYW5pbWF0aW9uZW5kIiwKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246ICJhbmltYXRpb25lbmQiCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKHZhciBuIGluIHQpCiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIG4pICYmIHZvaWQgMCAhPT0gZS5zdHlsZVtuXSkgcmV0dXJuIHRbbl07CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0oKTsKCiAgICBmdW5jdGlvbiB4ZShlLCB0LCBuKSB7CiAgICAgICAgdmFyIGk7CiAgICAgICAgb2UoZSwgblsic2hvdyIuY29uY2F0KChpID0gdCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBpLnNsaWNlKDEpLCAiQnV0dG9uIildLCAiaW5saW5lLWJsb2NrIiksIFIoZSwgblsiIi5jb25jYXQodCwgIkJ1dHRvblRleHQiKV0pLCBlLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIG5bIiIuY29uY2F0KHQsICJCdXR0b25BcmlhTGFiZWwiKV0pLCBlLmNsYXNzTmFtZSA9IFlbdF0sIHooZSwgbiwgIiIuY29uY2F0KHQsICJCdXR0b24iKSksIGZlKGUsIG5bIiIuY29uY2F0KHQsICJCdXR0b25DbGFzcyIpXSkKICAgIH0KCiAgICBmdW5jdGlvbiBfZShlLCB0KSB7CiAgICAgICAgZS5wbGFjZWhvbGRlciAmJiAhdC5pbnB1dFBsYWNlaG9sZGVyIHx8IChlLnBsYWNlaG9sZGVyID0gdC5pbnB1dFBsYWNlaG9sZGVyKQogICAgfQogICAgdmFyIFNlID0gewogICAgICAgICAgICBwcm9taXNlOiBuZXcgV2Vha01hcCwKICAgICAgICAgICAgaW5uZXJQYXJhbXM6IG5ldyBXZWFrTWFwLAogICAgICAgICAgICBkb21DYWNoZTogbmV3IFdlYWtNYXAKICAgICAgICB9LAogICAgICAgIENlID0gWyJpbnB1dCIsICJmaWxlIiwgInJhbmdlIiwgInNlbGVjdCIsICJyYWRpbyIsICJjaGVja2JveCIsICJ0ZXh0YXJlYSJdLAogICAgICAgIGtlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IFlbZV0gPyBZW2VdIDogWS5pbnB1dDsKICAgICAgICAgICAgcmV0dXJuIGdlKEMoKSwgdCkKICAgICAgICB9LAogICAgICAgIFRlID0ge307CgogICAgZnVuY3Rpb24gQWUoZSwgdCkgewogICAgICAgIHZhciBuLCBpLCByLCBvLCBhLCBzID0gQygpLnF1ZXJ5U2VsZWN0b3IoIiMiLmNvbmNhdChZLmNvbnRlbnQpKTsKICAgICAgICB0Lmh0bWwgPyAoZGUodC5odG1sLCBzKSwgaWUocywgImJsb2NrIikpIDogdC50ZXh0ID8gKHMudGV4dENvbnRlbnQgPSB0LnRleHQsIGllKHMsICJibG9jayIpKSA6IHJlKHMpLCBuID0gZSwgaSA9IHQsIHIgPSBDKCksIG8gPSBTZS5pbm5lclBhcmFtcy5nZXQobiksIGEgPSAhbyB8fCBpLmlucHV0ICE9PSBvLmlucHV0LCBDZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gWVtlXSwKICAgICAgICAgICAgICAgIG4gPSBnZShyLCB0KTsKICAgICAgICAgICAgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gSihDKCksIGUpOwogICAgICAgICAgICAgICAgaWYgKG4pCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IGUuYXR0cmlidXRlcy5sZW5ndGg7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5hdHRyaWJ1dGVzW3RdLm5hbWU7IC0gMSA9PT0gWyJ0eXBlIiwgInZhbHVlIiwgInN0eWxlIl0uaW5kZXhPZihuKSAmJiBlLnJlbW92ZUF0dHJpYnV0ZShuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KG4pLCB0KSAicmFuZ2UiID09PSBlICYmICJwbGFjZWhvbGRlciIgPT09IGkgfHwgbi5zZXRBdHRyaWJ1dGUoaSwgdFtpXSkKICAgICAgICAgICAgfSkoZSwgaS5pbnB1dEF0dHJpYnV0ZXMpLCBuLmNsYXNzTmFtZSA9IHQsIGEgJiYgcmUobikKICAgICAgICB9KSksIGkuaW5wdXQgJiYgKGEgJiYgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIVRlW2UuaW5wdXRdKSByZXR1cm4gVygnVW5leHBlY3RlZCB0eXBlIG9mIGlucHV0ISBFeHBlY3RlZCAidGV4dCIsICJlbWFpbCIsICJwYXNzd29yZCIsICJudW1iZXIiLCAidGVsIiwgInNlbGVjdCIsICJyYWRpbyIsICJjaGVja2JveCIsICJ0ZXh0YXJlYSIsICJmaWxlIiBvciAidXJsIiwgZ290ICInLmNvbmNhdChlLmlucHV0LCAnIicpKTsKICAgICAgICAgICAgdmFyIHQgPSBrZShlLmlucHV0KSwKICAgICAgICAgICAgICAgIG4gPSBUZVtlLmlucHV0XSh0LCBlKTsKICAgICAgICAgICAgaWUobiksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZWUobikKICAgICAgICAgICAgfSkpCiAgICAgICAgfShpKSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IGtlKGUuaW5wdXQpOwogICAgICAgICAgICBlLmN1c3RvbUNsYXNzICYmIGZlKHQsIGUuY3VzdG9tQ2xhc3MuaW5wdXQpCiAgICAgICAgfShpKSksIHooQygpLCB0LCAiY29udGVudCIpCiAgICB9CgogICAgZnVuY3Rpb24gRWUoKSB7CiAgICAgICAgcmV0dXJuIEcoKSAmJiBHKCkuZ2V0QXR0cmlidXRlKCJkYXRhLXF1ZXVlLXN0ZXAiKQogICAgfQoKICAgIGZ1bmN0aW9uIERlKGUsIHQpIHsKICAgICAgICB2YXIgbiwgaSwgciwgbywgYSwgcywgbCwgYzsKICAgICAgICB6KE0oKSwgdCwgImhlYWRlciIpLAogICAgICAgICAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IFQoKTsKICAgICAgICAgICAgICAgIGlmICghdC5wcm9ncmVzc1N0ZXBzIHx8IDAgPT09IHQucHJvZ3Jlc3NTdGVwcy5sZW5ndGgpIHJldHVybiByZShuKSwgMDsKICAgICAgICAgICAgICAgIGllKG4pLCBuLnRleHRDb250ZW50ID0gIiI7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHBhcnNlSW50KHZvaWQgMCA9PT0gdC5jdXJyZW50UHJvZ3Jlc3NTdGVwID8gRWUoKSA6IHQuY3VycmVudFByb2dyZXNzU3RlcCk7CiAgICAgICAgICAgICAgICBpID49IHQucHJvZ3Jlc3NTdGVwcy5sZW5ndGggJiYgQigiSW52YWxpZCBjdXJyZW50UHJvZ3Jlc3NTdGVwIHBhcmFtZXRlciwgaXQgc2hvdWxkIGJlIGxlc3MgdGhhbiBwcm9ncmVzc1N0ZXBzLmxlbmd0aCAoY3VycmVudFByb2dyZXNzU3RlcCBsaWtlIEpTIGFycmF5cyBzdGFydHMgZnJvbSAwKSIpLCB0LnByb2dyZXNzU3RlcHMuZm9yRWFjaCgoZnVuY3Rpb24oZSwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCBzLCBsLCBjLCB1ID0gKG8gPSBlLCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSwgZmUoYSwgWVsicHJvZ3Jlc3Mtc3RlcCJdKSwgUihhLCBvKSwgYSk7CiAgICAgICAgICAgICAgICAgICAgbi5hcHBlbmRDaGlsZCh1KSwgciA9PT0gaSAmJiBmZSh1LCBZWyJhY3RpdmUtcHJvZ3Jlc3Mtc3RlcCJdKSwgciAhPT0gdC5wcm9ncmVzc1N0ZXBzLmxlbmd0aCAtIDEgJiYgKGwgPSB0LCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSwgZmUoYywgWVsicHJvZ3Jlc3Mtc3RlcC1saW5lIl0pLCBsLnByb2dyZXNzU3RlcHNEaXN0YW5jZSAmJiAoYy5zdHlsZS53aWR0aCA9IGwucHJvZ3Jlc3NTdGVwc0Rpc3RhbmNlKSwgcyA9IGMsIG4uYXBwZW5kQ2hpbGQocykpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSgwLCB0KSwgbiA9IGUsIGkgPSB0LCAobyA9IFNlLmlubmVyUGFyYW1zLmdldChuKSkgJiYgaS5pY29uID09PSBvLmljb24gJiYgXygpID8geihfKCksIGksICJpY29uIikgOiAoSWUoKSwgaS5pY29uICYmICgtMSAhPT0gT2JqZWN0LmtleXMoWCkuaW5kZXhPZihpLmljb24pID8gKGllKHIgPSBiKCIuIi5jb25jYXQoWS5pY29uLCAiLiIpLmNvbmNhdChYW2kuaWNvbl0pKSksIFBlKHIsIGkpLCBMZSgpLCB6KHIsIGksICJpY29uIiksIGZlKHIsIGkuc2hvd0NsYXNzLmljb24pKSA6IFcoJ1Vua25vd24gaWNvbiEgRXhwZWN0ZWQgInN1Y2Nlc3MiLCAiZXJyb3IiLCAid2FybmluZyIsICJpbmZvIiBvciAicXVlc3Rpb24iLCBnb3QgIicuY29uY2F0KGkuaWNvbiwgJyInKSkpKSwKICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBrKCk7CiAgICAgICAgICAgICAgICBpZiAoIWUuaW1hZ2VVcmwpIHJldHVybiByZSh0KTsKICAgICAgICAgICAgICAgIGllKHQsICIiKSwgdC5zZXRBdHRyaWJ1dGUoInNyYyIsIGUuaW1hZ2VVcmwpLCB0LnNldEF0dHJpYnV0ZSgiYWx0IiwgZS5pbWFnZUFsdCksIG5lKHQsICJ3aWR0aCIsIGUuaW1hZ2VXaWR0aCksIG5lKHQsICJoZWlnaHQiLCBlLmltYWdlSGVpZ2h0KSwgdC5jbGFzc05hbWUgPSBZLmltYWdlLCB6KHQsIGUsICJpbWFnZSIpCiAgICAgICAgICAgIH0odCksIGEgPSB0LCBvZShzID0gUygpLCBhLnRpdGxlIHx8IGEudGl0bGVUZXh0KSwgYS50aXRsZSAmJiBkZShhLnRpdGxlLCBzKSwgYS50aXRsZVRleHQgJiYgKHMuaW5uZXJUZXh0ID0gYS50aXRsZVRleHQpLCB6KHMsIGEsICJ0aXRsZSIpLCBsID0gdCwgUihjID0gUCgpLCBsLmNsb3NlQnV0dG9uSHRtbCksIHooYywgbCwgImNsb3NlQnV0dG9uIiksIG9lKGMsIGwuc2hvd0Nsb3NlQnV0dG9uKSwgYy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsLmNsb3NlQnV0dG9uQXJpYUxhYmVsKQogICAgfQoKICAgIGZ1bmN0aW9uIE9lKGUsIHQpIHsKICAgICAgICB2YXIgbiwgaSwgciwgbzsKICAgICAgICBuID0gdCwgbmUoaSA9IEsoKSwgIndpZHRoIiwgbi53aWR0aCksIG5lKGksICJwYWRkaW5nIiwgbi5wYWRkaW5nKSwgbi5iYWNrZ3JvdW5kICYmIChpLnN0eWxlLmJhY2tncm91bmQgPSBuLmJhY2tncm91bmQpLCBGZShpLCBuKSwKICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUgPSBHKCk7CiAgICAgICAgICAgICAgICB1ICYmIChuID0gdSwgInN0cmluZyIgPT0gdHlwZW9mKGkgPSB0LmJhY2tkcm9wKSA/IG4uc3R5bGUuYmFja2dyb3VuZCA9IGkgOiBpIHx8IGZlKFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmJvZHldLCBZWyJuby1iYWNrZHJvcCJdKSwgIXQuYmFja2Ryb3AgJiYgdC5hbGxvd091dHNpZGVDbGljayAmJiBCKCciYWxsb3dPdXRzaWRlQ2xpY2siIHBhcmFtZXRlciByZXF1aXJlcyBgYmFja2Ryb3BgIHBhcmFtZXRlciB0byBiZSBzZXQgdG8gYHRydWVgJyksIHIgPSB1LCAobyA9IHQucG9zaXRpb24pIGluIFkgPyBmZShyLCBZW29dKSA6IChCKCdUaGUgInBvc2l0aW9uIiBwYXJhbWV0ZXIgaXMgbm90IHZhbGlkLCBkZWZhdWx0aW5nIHRvICJjZW50ZXIiJyksIGZlKHIsIFkuY2VudGVyKSksIGEgPSB1LCAhKHMgPSB0Lmdyb3cpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBzIHx8IChsID0gImdyb3ctIi5jb25jYXQocykpIGluIFkgJiYgZmUoYSwgWVtsXSksIHoodSwgdCwgImNvbnRhaW5lciIpLCAoYyA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJkYXRhLXN3YWwyLXF1ZXVlLXN0ZXAiKSkgJiYgKHUuc2V0QXR0cmlidXRlKCJkYXRhLXF1ZXVlLXN0ZXAiLCBjKSwgZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc3dhbDItcXVldWUtc3RlcCIpKSkKICAgICAgICAgICAgfSgwLCB0KSwgRGUoZSwgdCksIEFlKGUsIHQpLAogICAgICAgICAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IE8oKSwKICAgICAgICAgICAgICAgICAgICBpID0gRSgpLAogICAgICAgICAgICAgICAgICAgIHIgPSBEKCk7CiAgICAgICAgICAgICAgICB0LnNob3dDb25maXJtQnV0dG9uIHx8IHQuc2hvd0NhbmNlbEJ1dHRvbiB8fCByZShuKSwgeihuLCB0LCAiYWN0aW9ucyIpLCB4ZShpLCAiY29uZmlybSIsIHQpLCB4ZShyLCAiY2FuY2VsIiwgdCksIHQuYnV0dG9uc1N0eWxpbmcgPyBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgICAgZmUoW2UsIHRdLCBZLnN0eWxlZCksIG4uY29uZmlybUJ1dHRvbkNvbG9yICYmIChlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IG4uY29uZmlybUJ1dHRvbkNvbG9yKSwgbi5jYW5jZWxCdXR0b25Db2xvciAmJiAodC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBuLmNhbmNlbEJ1dHRvbkNvbG9yKSwgRigpIHx8IChpID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpLCBlLnN0eWxlLmJvcmRlckxlZnRDb2xvciA9IGksIGUuc3R5bGUuYm9yZGVyUmlnaHRDb2xvciA9IGkpCiAgICAgICAgICAgICAgICB9KGksIHIsIHQpIDogKHBlKFtpLCByXSwgWS5zdHlsZWQpLCBpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGkuc3R5bGUuYm9yZGVyTGVmdENvbG9yID0gaS5zdHlsZS5ib3JkZXJSaWdodENvbG9yID0gIiIsIHIuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gci5zdHlsZS5ib3JkZXJMZWZ0Q29sb3IgPSByLnN0eWxlLmJvcmRlclJpZ2h0Q29sb3IgPSAiIiksIHQucmV2ZXJzZUJ1dHRvbnMgJiYgaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLCBpKQogICAgICAgICAgICB9KDAsIHQpLCByID0gdCwgb2UobyA9IEkoKSwgci5mb290ZXIpLCByLmZvb3RlciAmJiBkZShyLmZvb3RlciwgbyksIHoobywgciwgImZvb3RlciIpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0Lm9uUmVuZGVyICYmIHQub25SZW5kZXIoSygpKQogICAgfQoKICAgIGZ1bmN0aW9uIE1lKCkgewogICAgICAgIHJldHVybiBFKCkgJiYgRSgpLmNsaWNrKCkKICAgIH0KICAgIFRlLnRleHQgPSBUZS5lbWFpbCA9IFRlLnBhc3N3b3JkID0gVGUubnVtYmVyID0gVGUudGVsID0gVGUudXJsID0gZnVuY3Rpb24odCwgbikgewogICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2Ygbi5pbnB1dFZhbHVlIHx8ICJudW1iZXIiID09IHR5cGVvZiBuLmlucHV0VmFsdWUgPyB0LnZhbHVlID0gbi5pbnB1dFZhbHVlIDogbShuLmlucHV0VmFsdWUpIHx8IEIoJ1VuZXhwZWN0ZWQgdHlwZSBvZiBpbnB1dFZhbHVlISBFeHBlY3RlZCAic3RyaW5nIiwgIm51bWJlciIgb3IgIlByb21pc2UiLCBnb3QgIicuY29uY2F0KGUobi5pbnB1dFZhbHVlKSwgJyInKSksIF9lKHQsIG4pLCB0LnR5cGUgPSBuLmlucHV0LCB0CiAgICB9LCBUZS5maWxlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiBfZShlLCB0KSwgZQogICAgfSwgVGUucmFuZ2UgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4gPSBlLnF1ZXJ5U2VsZWN0b3IoImlucHV0IiksCiAgICAgICAgICAgIGkgPSBlLnF1ZXJ5U2VsZWN0b3IoIm91dHB1dCIpOwogICAgICAgIHJldHVybiBuLnZhbHVlID0gdC5pbnB1dFZhbHVlLCBuLnR5cGUgPSB0LmlucHV0LCBpLnZhbHVlID0gdC5pbnB1dFZhbHVlLCBlCiAgICB9LCBUZS5zZWxlY3QgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG47CiAgICAgICAgcmV0dXJuIGUudGV4dENvbnRlbnQgPSAiIiwgdC5pbnB1dFBsYWNlaG9sZGVyICYmIChSKG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSwgdC5pbnB1dFBsYWNlaG9sZGVyKSwgbi52YWx1ZSA9ICIiLCBuLmRpc2FibGVkID0gITAsIG4uc2VsZWN0ZWQgPSAhMCwgZS5hcHBlbmRDaGlsZChuKSksIGUKICAgIH0sIFRlLnJhZGlvID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBlLnRleHRDb250ZW50ID0gIiIsIGUKICAgIH0sIFRlLmNoZWNrYm94ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuID0gSihDKCksICJjaGVja2JveCIpOwogICAgICAgIHJldHVybiBuLnZhbHVlID0gMSwgbi5pZCA9IFkuY2hlY2tib3gsIG4uY2hlY2tlZCA9IEJvb2xlYW4odC5pbnB1dFZhbHVlKSwgUihlLnF1ZXJ5U2VsZWN0b3IoInNwYW4iKSwgdC5pbnB1dFBsYWNlaG9sZGVyKSwgZQogICAgfSwgVGUudGV4dGFyZWEgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4sIGk7CiAgICAgICAgcmV0dXJuIGUudmFsdWUgPSB0LmlucHV0VmFsdWUsIF9lKGUsIHQpLCAiTXV0YXRpb25PYnNlcnZlciIgaW4gd2luZG93ICYmIChuID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoSygpKS53aWR0aCksIGkgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShLKCkpLnBhZGRpbmdMZWZ0KSArIHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKEsoKSkucGFkZGluZ1JpZ2h0KSwgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IGUub2Zmc2V0V2lkdGggKyBpOwogICAgICAgICAgICBLKCkuc3R5bGUud2lkdGggPSBuIDwgdCA/ICIiLmNvbmNhdCh0LCAicHgiKSA6IG51bGwKICAgICAgICB9KSkub2JzZXJ2ZShlLCB7CiAgICAgICAgICAgIGF0dHJpYnV0ZXM6ICEwLAogICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsic3R5bGUiXQogICAgICAgIH0pKSwgZQogICAgfTsKICAgIHZhciBJZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0geCgpLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0KyspIHJlKGVbdF0pCiAgICAgICAgfSwKICAgICAgICBMZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmb3IgKHZhciBlID0gSygpLCB0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpLCBuID0gZS5xdWVyeVNlbGVjdG9yQWxsKCJbY2xhc3NePXN3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZV0sIC5zd2FsMi1zdWNjZXNzLWZpeCIpLCBpID0gMDsgaSA8IG4ubGVuZ3RoOyBpKyspIG5baV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdAogICAgICAgIH0sCiAgICAgICAgUGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSAiIiwgdC5pY29uSHRtbCA/IFIoZSwgamUodC5pY29uSHRtbCkpIDogInN1Y2Nlc3MiID09PSB0Lmljb24gPyBSKGUsICdcbiAgICAgIDxkaXYgY2xhc3M9InN3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZS1sZWZ0Ij48L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPSJzd2FsMi1zdWNjZXNzLWxpbmUtdGlwIj48L3NwYW4+IDxzcGFuIGNsYXNzPSJzd2FsMi1zdWNjZXNzLWxpbmUtbG9uZyI+PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz0ic3dhbDItc3VjY2Vzcy1yaW5nIj48L2Rpdj4gPGRpdiBjbGFzcz0ic3dhbDItc3VjY2Vzcy1maXgiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ic3dhbDItc3VjY2Vzcy1jaXJjdWxhci1saW5lLXJpZ2h0Ij48L2Rpdj5cbiAgICAnKSA6ICJlcnJvciIgPT09IHQuaWNvbiA/IFIoZSwgJ1xuICAgICAgPHNwYW4gY2xhc3M9InN3YWwyLXgtbWFyayI+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJzd2FsMi14LW1hcmstbGluZS1sZWZ0Ij48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJzd2FsMi14LW1hcmstbGluZS1yaWdodCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICcpIDogUihlLCBqZSh7CiAgICAgICAgICAgICAgICBxdWVzdGlvbjogIj8iLAogICAgICAgICAgICAgICAgd2FybmluZzogIiEiLAogICAgICAgICAgICAgICAgaW5mbzogImkiCiAgICAgICAgICAgIH1bdC5pY29uXSkpCiAgICAgICAgfSwKICAgICAgICBqZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSInLmNvbmNhdChZWyJpY29uLWNvbnRlbnQiXSwgJyI+JykuY29uY2F0KGUsICI8L2Rpdj4iKQogICAgICAgIH0sCiAgICAgICAgTmUgPSBbXSwKICAgICAgICBGZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgZS5jbGFzc05hbWUgPSAiIi5jb25jYXQoWS5wb3B1cCwgIiAiKS5jb25jYXQobWUoZSkgPyB0LnNob3dDbGFzcy5wb3B1cCA6ICIiKSwgdC50b2FzdCA/IChmZShbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSwgWVsidG9hc3Qtc2hvd24iXSksIGZlKGUsIFkudG9hc3QpKSA6IGZlKGUsIFkubW9kYWwpLCB6KGUsIHQsICJwb3B1cCIpLCAic3RyaW5nIiA9PSB0eXBlb2YgdC5jdXN0b21DbGFzcyAmJiBmZShlLCB0LmN1c3RvbUNsYXNzKSwgdC5pY29uICYmIGZlKGUsIFlbImljb24tIi5jb25jYXQodC5pY29uKV0pCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBSZSgpIHsKICAgICAgICB2YXIgZSA9IEsoKTsKICAgICAgICBlIHx8IFJ0LmZpcmUoKSwgZSA9IEsoKTsKICAgICAgICB2YXIgdCA9IE8oKSwKICAgICAgICAgICAgbiA9IEUoKTsKICAgICAgICBpZSh0KSwgaWUobiwgImlubGluZS1ibG9jayIpLCBmZShbZSwgdF0sIFkubG9hZGluZyksIG4uZGlzYWJsZWQgPSAhMCwgZS5zZXRBdHRyaWJ1dGUoImRhdGEtbG9hZGluZyIsICEwKSwgZS5zZXRBdHRyaWJ1dGUoImFyaWEtYnVzeSIsICEwKSwgZS5mb2N1cygpCiAgICB9CgogICAgZnVuY3Rpb24gJGUoKSB7CiAgICAgICAgaWYgKFdlLnRpbWVvdXQpIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBMKCksCiAgICAgICAgICAgICAgICB0ID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkud2lkdGgpOwogICAgICAgICAgICBlLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIiksIGUuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgICAgIHZhciBuID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkud2lkdGgpLAogICAgICAgICAgICAgICAgaSA9IHBhcnNlSW50KHQgLyBuICogMTAwKTsKICAgICAgICAgICAgZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNpdGlvbiIpLCBlLnN0eWxlLndpZHRoID0gIiIuY29uY2F0KGksICIlIikKICAgICAgICB9KCksIFdlLnRpbWVvdXQuc3RvcCgpCiAgICB9CgogICAgZnVuY3Rpb24gemUoKSB7CiAgICAgICAgaWYgKFdlLnRpbWVvdXQpIHsKICAgICAgICAgICAgdmFyIGUgPSBXZS50aW1lb3V0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBsZShlKSwgZQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBIZShlKSB7CiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChxZSwgZSkKICAgIH0KCiAgICBmdW5jdGlvbiBCZShlKSB7CiAgICAgICAgcmV0dXJuIFZlW2VdCiAgICB9CiAgICB2YXIgV2UgPSB7fSwKICAgICAgICBxZSA9IHsKICAgICAgICAgICAgdGl0bGU6ICIiLAogICAgICAgICAgICB0aXRsZVRleHQ6ICIiLAogICAgICAgICAgICB0ZXh0OiAiIiwKICAgICAgICAgICAgaHRtbDogIiIsCiAgICAgICAgICAgIGZvb3RlcjogIiIsCiAgICAgICAgICAgIGljb246IHZvaWQgMCwKICAgICAgICAgICAgaWNvbkh0bWw6IHZvaWQgMCwKICAgICAgICAgICAgdG9hc3Q6ICExLAogICAgICAgICAgICBhbmltYXRpb246ICEwLAogICAgICAgICAgICBzaG93Q2xhc3M6IHsKICAgICAgICAgICAgICAgIHBvcHVwOiAic3dhbDItc2hvdyIsCiAgICAgICAgICAgICAgICBiYWNrZHJvcDogInN3YWwyLWJhY2tkcm9wLXNob3ciLAogICAgICAgICAgICAgICAgaWNvbjogInN3YWwyLWljb24tc2hvdyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGlkZUNsYXNzOiB7CiAgICAgICAgICAgICAgICBwb3B1cDogInN3YWwyLWhpZGUiLAogICAgICAgICAgICAgICAgYmFja2Ryb3A6ICJzd2FsMi1iYWNrZHJvcC1oaWRlIiwKICAgICAgICAgICAgICAgIGljb246ICJzd2FsMi1pY29uLWhpZGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB2b2lkIDAsCiAgICAgICAgICAgIHRhcmdldDogImJvZHkiLAogICAgICAgICAgICBiYWNrZHJvcDogITAsCiAgICAgICAgICAgIGhlaWdodEF1dG86ICEwLAogICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogITAsCiAgICAgICAgICAgIGFsbG93RXNjYXBlS2V5OiAhMCwKICAgICAgICAgICAgYWxsb3dFbnRlcktleTogITAsCiAgICAgICAgICAgIHN0b3BLZXlkb3duUHJvcGFnYXRpb246ICEwLAogICAgICAgICAgICBrZXlkb3duTGlzdGVuZXJDYXB0dXJlOiAhMSwKICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246ICEwLAogICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiAhMSwKICAgICAgICAgICAgcHJlQ29uZmlybTogdm9pZCAwLAogICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIk9LIiwKICAgICAgICAgICAgY29uZmlybUJ1dHRvbkFyaWFMYWJlbDogIiIsCiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogdm9pZCAwLAogICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAiQ2FuY2VsIiwKICAgICAgICAgICAgY2FuY2VsQnV0dG9uQXJpYUxhYmVsOiAiIiwKICAgICAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6IHZvaWQgMCwKICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6ICEwLAogICAgICAgICAgICByZXZlcnNlQnV0dG9uczogITEsCiAgICAgICAgICAgIGZvY3VzQ29uZmlybTogITAsCiAgICAgICAgICAgIGZvY3VzQ2FuY2VsOiAhMSwKICAgICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiAhMSwKICAgICAgICAgICAgY2xvc2VCdXR0b25IdG1sOiAiJnRpbWVzOyIsCiAgICAgICAgICAgIGNsb3NlQnV0dG9uQXJpYUxhYmVsOiAiQ2xvc2UgdGhpcyBkaWFsb2ciLAogICAgICAgICAgICBzaG93TG9hZGVyT25Db25maXJtOiAhMSwKICAgICAgICAgICAgaW1hZ2VVcmw6IHZvaWQgMCwKICAgICAgICAgICAgaW1hZ2VXaWR0aDogdm9pZCAwLAogICAgICAgICAgICBpbWFnZUhlaWdodDogdm9pZCAwLAogICAgICAgICAgICBpbWFnZUFsdDogIiIsCiAgICAgICAgICAgIHRpbWVyOiB2b2lkIDAsCiAgICAgICAgICAgIHRpbWVyUHJvZ3Jlc3NCYXI6ICExLAogICAgICAgICAgICB3aWR0aDogdm9pZCAwLAogICAgICAgICAgICBwYWRkaW5nOiB2b2lkIDAsCiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZvaWQgMCwKICAgICAgICAgICAgaW5wdXQ6IHZvaWQgMCwKICAgICAgICAgICAgaW5wdXRQbGFjZWhvbGRlcjogIiIsCiAgICAgICAgICAgIGlucHV0VmFsdWU6ICIiLAogICAgICAgICAgICBpbnB1dE9wdGlvbnM6IHt9LAogICAgICAgICAgICBpbnB1dEF1dG9UcmltOiAhMCwKICAgICAgICAgICAgaW5wdXRBdHRyaWJ1dGVzOiB7fSwKICAgICAgICAgICAgaW5wdXRWYWxpZGF0b3I6IHZvaWQgMCwKICAgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHZvaWQgMCwKICAgICAgICAgICAgZ3JvdzogITEsCiAgICAgICAgICAgIHBvc2l0aW9uOiAiY2VudGVyIiwKICAgICAgICAgICAgcHJvZ3Jlc3NTdGVwczogW10sCiAgICAgICAgICAgIGN1cnJlbnRQcm9ncmVzc1N0ZXA6IHZvaWQgMCwKICAgICAgICAgICAgcHJvZ3Jlc3NTdGVwc0Rpc3RhbmNlOiB2b2lkIDAsCiAgICAgICAgICAgIG9uQmVmb3JlT3Blbjogdm9pZCAwLAogICAgICAgICAgICBvbk9wZW46IHZvaWQgMCwKICAgICAgICAgICAgb25SZW5kZXI6IHZvaWQgMCwKICAgICAgICAgICAgb25DbG9zZTogdm9pZCAwLAogICAgICAgICAgICBvbkFmdGVyQ2xvc2U6IHZvaWQgMCwKICAgICAgICAgICAgb25EZXN0cm95OiB2b2lkIDAsCiAgICAgICAgICAgIHNjcm9sbGJhclBhZGRpbmc6ICEwCiAgICAgICAgfSwKICAgICAgICBVZSA9IFsiYWxsb3dFc2NhcGVLZXkiLCAiYWxsb3dPdXRzaWRlQ2xpY2siLCAiYnV0dG9uc1N0eWxpbmciLCAiY2FuY2VsQnV0dG9uQXJpYUxhYmVsIiwgImNhbmNlbEJ1dHRvbkNvbG9yIiwgImNhbmNlbEJ1dHRvblRleHQiLCAiY2xvc2VCdXR0b25BcmlhTGFiZWwiLCAiY2xvc2VCdXR0b25IdG1sIiwgImNvbmZpcm1CdXR0b25BcmlhTGFiZWwiLCAiY29uZmlybUJ1dHRvbkNvbG9yIiwgImNvbmZpcm1CdXR0b25UZXh0IiwgImN1cnJlbnRQcm9ncmVzc1N0ZXAiLCAiY3VzdG9tQ2xhc3MiLCAiZm9vdGVyIiwgImhpZGVDbGFzcyIsICJodG1sIiwgImljb24iLCAiaW1hZ2VBbHQiLCAiaW1hZ2VIZWlnaHQiLCAiaW1hZ2VVcmwiLCAiaW1hZ2VXaWR0aCIsICJvbkFmdGVyQ2xvc2UiLCAib25DbG9zZSIsICJvbkRlc3Ryb3kiLCAicHJvZ3Jlc3NTdGVwcyIsICJyZXZlcnNlQnV0dG9ucyIsICJzaG93Q2FuY2VsQnV0dG9uIiwgInNob3dDbG9zZUJ1dHRvbiIsICJzaG93Q29uZmlybUJ1dHRvbiIsICJ0ZXh0IiwgInRpdGxlIiwgInRpdGxlVGV4dCJdLAogICAgICAgIFZlID0gewogICAgICAgICAgICBhbmltYXRpb246ICdzaG93Q2xhc3MiIGFuZCAiaGlkZUNsYXNzJwogICAgICAgIH0sCiAgICAgICAgWWUgPSBbImFsbG93T3V0c2lkZUNsaWNrIiwgImFsbG93RW50ZXJLZXkiLCAiYmFja2Ryb3AiLCAiZm9jdXNDb25maXJtIiwgImZvY3VzQ2FuY2VsIiwgImhlaWdodEF1dG8iLCAia2V5ZG93bkxpc3RlbmVyQ2FwdHVyZSJdLAogICAgICAgIFhlID0gT2JqZWN0LmZyZWV6ZSh7CiAgICAgICAgICAgIGlzVmFsaWRQYXJhbWV0ZXI6IEhlLAogICAgICAgICAgICBpc1VwZGF0YWJsZVBhcmFtZXRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIC0xICE9PSBVZS5pbmRleE9mKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzRGVwcmVjYXRlZFBhcmFtZXRlcjogQmUsCiAgICAgICAgICAgIGFyZ3NUb1BhcmFtczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB7fTsKICAgICAgICAgICAgICAgIHJldHVybiAib2JqZWN0IiAhPT0gZSh0WzBdKSB8fCB2KHRbMF0pID8gWyJ0aXRsZSIsICJodG1sIiwgImljb24iXS5mb3JFYWNoKChmdW5jdGlvbihpLCByKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdOwogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBvIHx8IHYobykgPyBuW2ldID0gbyA6IHZvaWQgMCAhPT0gbyAmJiBXKCJVbmV4cGVjdGVkIHR5cGUgb2YgIi5jb25jYXQoaSwgJyEgRXhwZWN0ZWQgInN0cmluZyIgb3IgIkVsZW1lbnQiLCBnb3QgJykuY29uY2F0KGUobykpKQogICAgICAgICAgICAgICAgfSkpIDogcihuLCB0WzBdKSwgbgogICAgICAgICAgICB9LAogICAgICAgICAgICBpc1Zpc2libGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1lKEsoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xpY2tDb25maXJtOiBNZSwKICAgICAgICAgICAgY2xpY2tDYW5jZWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEQoKSAmJiBEKCkuY2xpY2soKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRDb250YWluZXI6IEcsCiAgICAgICAgICAgIGdldFBvcHVwOiBLLAogICAgICAgICAgICBnZXRUaXRsZTogUywKICAgICAgICAgICAgZ2V0Q29udGVudDogQywKICAgICAgICAgICAgZ2V0SHRtbENvbnRhaW5lcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdyhZWyJodG1sLWNvbnRhaW5lciJdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRJbWFnZTogaywKICAgICAgICAgICAgZ2V0SWNvbjogXywKICAgICAgICAgICAgZ2V0SWNvbnM6IHgsCiAgICAgICAgICAgIGdldENsb3NlQnV0dG9uOiBQLAogICAgICAgICAgICBnZXRBY3Rpb25zOiBPLAogICAgICAgICAgICBnZXRDb25maXJtQnV0dG9uOiBFLAogICAgICAgICAgICBnZXRDYW5jZWxCdXR0b246IEQsCiAgICAgICAgICAgIGdldEhlYWRlcjogTSwKICAgICAgICAgICAgZ2V0Rm9vdGVyOiBJLAogICAgICAgICAgICBnZXRUaW1lclByb2dyZXNzQmFyOiBMLAogICAgICAgICAgICBnZXRGb2N1c2FibGVFbGVtZW50czogaiwKICAgICAgICAgICAgZ2V0VmFsaWRhdGlvbk1lc3NhZ2U6IEEsCiAgICAgICAgICAgIGlzTG9hZGluZzogRiwKICAgICAgICAgICAgZmlyZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IG5ldyBBcnJheShlKSwgbiA9IDA7IG4gPCBlOyBuKyspIHRbbl0gPSBhcmd1bWVudHNbbl07CiAgICAgICAgICAgICAgICByZXR1cm4gbCh0aGlzLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBtaXhpbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCkgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQgJiYgdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSksIHQgJiYgYShlLCB0KQogICAgICAgICAgICAgICAgICAgIH0oZiwgbik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwsIGQsIGggPSAobCA9IGYsIGQgPSBzKCksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IG8obCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKHRoaXMsIGQgPyAoZSA9IG8odGhpcykuY29uc3RydWN0b3IsIFJlZmxlY3QuY29uc3RydWN0KHQsIGFyZ3VtZW50cywgZSkpIDogdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCh0aGlzLCBmKSwgaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKGYsIFt7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIl9tYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1KG8oZi5wcm90b3R5cGUpLCAiX21haW4iLCB0aGlzKS5jYWxsKHRoaXMsIHIoe30sIGUsIHQpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfV0pLCBmCiAgICAgICAgICAgICAgICB9KHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHF1ZXVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgTmUgPSBbXSwgZSh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgTmUgPSBlOwogICAgICAgICAgICAgICAgdmFyIGkgPSBbXTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24gcihvLCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPCBOZS5sZW5ndGggPyAoZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoImRhdGEtc3dhbDItcXVldWUtc3RlcCIsIG8pLCB0LmZpcmUoTmVbb10pLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdC52YWx1ZSA/IChpLnB1c2godC52YWx1ZSksIHIobyArIDEsIGEpKSA6IG4oZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3M6IHQuZGlzbWlzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSA6IG4oZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KDApCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0UXVldWVTdGVwOiBFZSwKICAgICAgICAgICAgaW5zZXJ0UXVldWVTdGVwOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiB0IDwgTmUubGVuZ3RoID8gTmUuc3BsaWNlKHQsIDAsIGUpIDogTmUucHVzaChlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkZWxldGVRdWV1ZVN0ZXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gTmVbZV0gJiYgTmUuc3BsaWNlKGUsIDEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNob3dMb2FkaW5nOiBSZSwKICAgICAgICAgICAgZW5hYmxlTG9hZGluZzogUmUsCiAgICAgICAgICAgIGdldFRpbWVyTGVmdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gV2UudGltZW91dCAmJiBXZS50aW1lb3V0LmdldFRpbWVyTGVmdCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0b3BUaW1lcjogJGUsCiAgICAgICAgICAgIHJlc3VtZVRpbWVyOiB6ZSwKICAgICAgICAgICAgdG9nZ2xlVGltZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBXZS50aW1lb3V0OwogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgKGUucnVubmluZyA/ICRlIDogemUpKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5jcmVhc2VUaW1lcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKFdlLnRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFdlLnRpbWVvdXQuaW5jcmVhc2UoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlKHQsICEwKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpc1RpbWVyUnVubmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gV2UudGltZW91dCAmJiBXZS50aW1lb3V0LmlzUnVubmluZygpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICBmdW5jdGlvbiBHZSgpIHsKICAgICAgICB2YXIgZSwgdCA9IFNlLmlubmVyUGFyYW1zLmdldCh0aGlzKTsKICAgICAgICB0ICYmIChlID0gU2UuZG9tQ2FjaGUuZ2V0KHRoaXMpLCB0LnNob3dDb25maXJtQnV0dG9uIHx8IChyZShlLmNvbmZpcm1CdXR0b24pLCB0LnNob3dDYW5jZWxCdXR0b24gfHwgcmUoZS5hY3Rpb25zKSksIHBlKFtlLnBvcHVwLCBlLmFjdGlvbnNdLCBZLmxvYWRpbmcpLCBlLnBvcHVwLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1idXN5IiksIGUucG9wdXAucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWxvYWRpbmciKSwgZS5jb25maXJtQnV0dG9uLmRpc2FibGVkID0gITEsIGUuY2FuY2VsQnV0dG9uLmRpc2FibGVkID0gITEpCiAgICB9CgogICAgZnVuY3Rpb24gS2UoKSB7CiAgICAgICAgcmV0dXJuICEhd2luZG93Lk1TSW5wdXRNZXRob2RDb250ZXh0ICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlCiAgICB9CgogICAgZnVuY3Rpb24gUWUoKSB7CiAgICAgICAgdmFyIGUgPSBHKCksCiAgICAgICAgICAgIHQgPSBLKCk7CiAgICAgICAgZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiYWxpZ24taXRlbXMiKSwgdC5vZmZzZXRUb3AgPCAwICYmIChlLnN0eWxlLmFsaWduSXRlbXMgPSAiZmxleC1zdGFydCIpCiAgICB9CiAgICB2YXIgWmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gRygpOwogICAgICAgICAgICByZXR1cm4gZSA9PT0gdCB8fCAhKGFlKHQpIHx8ICJJTlBVVCIgPT09IGUudGFnTmFtZSB8fCBhZShDKCkpICYmIEMoKS5jb250YWlucyhlKSkKICAgICAgICB9LAogICAgICAgIEplID0gewogICAgICAgICAgICBzd2FsUHJvbWlzZVJlc29sdmU6IG5ldyBXZWFrTWFwCiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBldChlLCB0LCBuLCBpKSB7CiAgICAgICAgdmFyIHI7CiAgICAgICAgbiA/IGl0KGUsIGkpIDogKG5ldyBQcm9taXNlKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gd2luZG93LnNjcm9sbFgsCiAgICAgICAgICAgICAgICBuID0gd2luZG93LnNjcm9sbFk7CiAgICAgICAgICAgIFdlLnJlc3RvcmVGb2N1c1RpbWVvdXQgPSBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFdlLnByZXZpb3VzQWN0aXZlRWxlbWVudCAmJiBXZS5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMgPyAoV2UucHJldmlvdXNBY3RpdmVFbGVtZW50LmZvY3VzKCksIFdlLnByZXZpb3VzQWN0aXZlRWxlbWVudCA9IG51bGwpIDogZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmZvY3VzKCksIGUoKQogICAgICAgICAgICB9KSwgMTAwKSwgdm9pZCAwICE9PSB0ICYmIHZvaWQgMCAhPT0gbiAmJiB3aW5kb3cuc2Nyb2xsVG8odCwgbikKICAgICAgICB9KSkudGhlbigoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBpdChlLCBpKQogICAgICAgIH0pKSwgV2Uua2V5ZG93blRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgV2Uua2V5ZG93bkhhbmRsZXIsIHsKICAgICAgICAgICAgY2FwdHVyZTogV2Uua2V5ZG93bkxpc3RlbmVyQ2FwdHVyZQogICAgICAgIH0pLCBXZS5rZXlkb3duSGFuZGxlckFkZGVkID0gITEpLCB0LnBhcmVudE5vZGUgJiYgIWRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJkYXRhLXN3YWwyLXF1ZXVlLXN0ZXAiKSAmJiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksIE4oKSAmJiAobnVsbCAhPT0gWi5wcmV2aW91c0JvZHlQYWRkaW5nICYmIChkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9ICIiLmNvbmNhdChaLnByZXZpb3VzQm9keVBhZGRpbmcsICJweCIpLCBaLnByZXZpb3VzQm9keVBhZGRpbmcgPSBudWxsKSwgJChkb2N1bWVudC5ib2R5LCBZLmlvc2ZpeCkgJiYgKHIgPSBwYXJzZUludChkb2N1bWVudC5ib2R5LnN0eWxlLnRvcCwgMTApLCBwZShkb2N1bWVudC5ib2R5LCBZLmlvc2ZpeCksIGRvY3VtZW50LmJvZHkuc3R5bGUudG9wID0gIiIsIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gLTEgKiByKSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiBLZSgpICYmIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCBRZSksIGgoZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLmhhc0F0dHJpYnV0ZSgiZGF0YS1wcmV2aW91cy1hcmlhLWhpZGRlbiIpID8gKGUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsIGUuZ2V0QXR0cmlidXRlKCJkYXRhLXByZXZpb3VzLWFyaWEtaGlkZGVuIikpLCBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1wcmV2aW91cy1hcmlhLWhpZGRlbiIpKSA6IGUucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpCiAgICAgICAgfSkpKSwgcGUoW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keV0sIFtZLnNob3duLCBZWyJoZWlnaHQtYXV0byJdLCBZWyJuby1iYWNrZHJvcCJdLCBZWyJ0b2FzdC1zaG93biJdLCBZWyJ0b2FzdC1jb2x1bW4iXV0pCiAgICB9CgogICAgZnVuY3Rpb24gdHQoZSkgewogICAgICAgIHZhciB0LCBuLCBpLCByID0gSygpOwogICAgICAgIHIgJiYgKHQgPSBTZS5pbm5lclBhcmFtcy5nZXQodGhpcykpICYmICEkKHIsIHQuaGlkZUNsYXNzLnBvcHVwKSAmJiAobiA9IEplLnN3YWxQcm9taXNlUmVzb2x2ZS5nZXQodGhpcyksIHBlKHIsIHQuc2hvd0NsYXNzLnBvcHVwKSwgZmUociwgdC5oaWRlQ2xhc3MucG9wdXApLCBpID0gRygpLCBwZShpLCB0LnNob3dDbGFzcy5iYWNrZHJvcCksIGZlKGksIHQuaGlkZUNsYXNzLmJhY2tkcm9wKSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IEcoKSwKICAgICAgICAgICAgICAgIHIgPSB3ZSAmJiBzZSh0KSwKICAgICAgICAgICAgICAgIG8gPSBuLm9uQ2xvc2UsCiAgICAgICAgICAgICAgICBhID0gbi5vbkFmdGVyQ2xvc2U7CiAgICAgICAgICAgIG51bGwgIT09IG8gJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbyAmJiBvKHQpLCByID8gbnQoZSwgdCwgaSwgYSkgOiBldChlLCBpLCBRKCksIGEpCiAgICAgICAgfSh0aGlzLCByLCB0KSwgdm9pZCAwICE9PSBlID8gKGUuaXNEaXNtaXNzZWQgPSB2b2lkIDAgIT09IGUuZGlzbWlzcywgZS5pc0NvbmZpcm1lZCA9IHZvaWQgMCA9PT0gZS5kaXNtaXNzKSA6IGUgPSB7CiAgICAgICAgICAgIGlzRGlzbWlzc2VkOiAhMCwKICAgICAgICAgICAgaXNDb25maXJtZWQ6ICExCiAgICAgICAgfSwgbihlIHx8IHt9KSkKICAgIH0KICAgIHZhciBudCA9IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgV2Uuc3dhbENsb3NlRXZlbnRGaW5pc2hlZENhbGxiYWNrID0gZXQuYmluZChudWxsLCBlLCBuLCBRKCksIGkpLCB0LmFkZEV2ZW50TGlzdGVuZXIod2UsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlLnRhcmdldCA9PT0gdCAmJiAoV2Uuc3dhbENsb3NlRXZlbnRGaW5pc2hlZENhbGxiYWNrKCksIGRlbGV0ZSBXZS5zd2FsQ2xvc2VFdmVudEZpbmlzaGVkQ2FsbGJhY2spCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgaXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdCAmJiB0KCksIGUuX2Rlc3Ryb3koKQogICAgICAgICAgICB9KSkKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIHJ0KGUsIHQsIG4pIHsKICAgICAgICB2YXIgaSA9IFNlLmRvbUNhY2hlLmdldChlKTsKICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaVtlXS5kaXNhYmxlZCA9IG4KICAgICAgICB9KSkKICAgIH0KCiAgICBmdW5jdGlvbiBvdChlLCB0KSB7CiAgICAgICAgaWYgKCFlKSByZXR1cm4gITE7CiAgICAgICAgaWYgKCJyYWRpbyIgPT09IGUudHlwZSkKICAgICAgICAgICAgZm9yICh2YXIgbiA9IGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0IiksIGkgPSAwOyBpIDwgbi5sZW5ndGg7IGkrKykgbltpXS5kaXNhYmxlZCA9IHQ7CiAgICAgICAgZWxzZSBlLmRpc2FibGVkID0gdAogICAgfQogICAgdmFyIGF0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGUobiwgaSkgewogICAgICAgICAgICAgICAgdCh0aGlzLCBlKSwgdGhpcy5jYWxsYmFjayA9IG4sIHRoaXMucmVtYWluaW5nID0gaSwgdGhpcy5ydW5uaW5nID0gITEsIHRoaXMuc3RhcnQoKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBpKGUsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJzdGFydCIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVubmluZyB8fCAodGhpcy5ydW5uaW5nID0gITAsIHRoaXMuc3RhcnRlZCA9IG5ldyBEYXRlLCB0aGlzLmlkID0gc2V0VGltZW91dCh0aGlzLmNhbGxiYWNrLCB0aGlzLnJlbWFpbmluZykpLCB0aGlzLnJlbWFpbmluZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJzdG9wIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ydW5uaW5nICYmICh0aGlzLnJ1bm5pbmcgPSAhMSwgY2xlYXJUaW1lb3V0KHRoaXMuaWQpLCB0aGlzLnJlbWFpbmluZyAtPSBuZXcgRGF0ZSAtIHRoaXMuc3RhcnRlZCksIHRoaXMucmVtYWluaW5nCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGtleTogImluY3JlYXNlIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnJ1bm5pbmc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdGhpcy5zdG9wKCksIHRoaXMucmVtYWluaW5nICs9IGUsIHQgJiYgdGhpcy5zdGFydCgpLCB0aGlzLnJlbWFpbmluZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJnZXRUaW1lckxlZnQiLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmcgJiYgKHRoaXMuc3RvcCgpLCB0aGlzLnN0YXJ0KCkpLCB0aGlzLnJlbWFpbmluZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICBrZXk6ICJpc1J1bm5pbmciLAogICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfV0pLCBlCiAgICAgICAgfSgpLAogICAgICAgIHN0ID0gewogICAgICAgICAgICBlbWFpbDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIC9eW2EtekEtWjAtOS4rXy1dK0BbYS16QS1aMC05Li1dK1wuW2EtekEtWjAtOS1dezIsMjR9JC8udGVzdChlKSA/IFByb21pc2UucmVzb2x2ZSgpIDogUHJvbWlzZS5yZXNvbHZlKHQgfHwgIkludmFsaWQgZW1haWwgYWRkcmVzcyIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVybDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIC9eaHR0cHM/OlwvXC8od3d3XC4pP1stYS16QS1aMC05QDolLl8rfiM9XXsxLDI1Nn1cLlthLXpdezIsNjN9XGIoWy1hLXpBLVowLTlAOiVfKy5+Iz8mLz1dKikkLy50ZXN0KGUpID8gUHJvbWlzZS5yZXNvbHZlKCkgOiBQcm9taXNlLnJlc29sdmUodCB8fCAiSW52YWxpZCBVUkwiKQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICBmdW5jdGlvbiBsdChlKSB7CiAgICAgICAgdmFyIHQsIG47CiAgICAgICAgKHQgPSBlKS5pbnB1dFZhbGlkYXRvciB8fCBPYmplY3Qua2V5cyhzdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdC5pbnB1dCA9PT0gZSAmJiAodC5pbnB1dFZhbGlkYXRvciA9IHN0W2VdKQogICAgICAgICAgICB9KSksIGUuc2hvd0xvYWRlck9uQ29uZmlybSAmJiAhZS5wcmVDb25maXJtICYmIEIoInNob3dMb2FkZXJPbkNvbmZpcm0gaXMgc2V0IHRvIHRydWUsIGJ1dCBwcmVDb25maXJtIGlzIG5vdCBkZWZpbmVkLlxuc2hvd0xvYWRlck9uQ29uZmlybSBzaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHByZUNvbmZpcm0sIHNlZSB1c2FnZSBleGFtcGxlOlxuaHR0cHM6Ly9zd2VldGFsZXJ0Mi5naXRodWIuaW8vI2FqYXgtcmVxdWVzdCIpLCBlLmFuaW1hdGlvbiA9IFUoZS5hbmltYXRpb24pLCAobiA9IGUpLnRhcmdldCAmJiAoInN0cmluZyIgIT0gdHlwZW9mIG4udGFyZ2V0IHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iobi50YXJnZXQpKSAmJiAoInN0cmluZyIgPT0gdHlwZW9mIG4udGFyZ2V0IHx8IG4udGFyZ2V0LmFwcGVuZENoaWxkKSB8fCAoQignVGFyZ2V0IHBhcmFtZXRlciBpcyBub3QgdmFsaWQsIGRlZmF1bHRpbmcgdG8gImJvZHkiJyksIG4udGFyZ2V0ID0gImJvZHkiKSwgInN0cmluZyIgPT0gdHlwZW9mIGUudGl0bGUgJiYgKGUudGl0bGUgPSBlLnRpdGxlLnNwbGl0KCJcbiIpLmpvaW4oIjxiciAvPiIpKSwKICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAsIGcsIG0gPSAhISh0ID0gRygpKSAmJiAodC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLCBwZShbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSwgW1lbIm5vLWJhY2tkcm9wIl0sIFlbInRvYXN0LXNob3duIl0sIFlbImhhcy1jb2x1bW4iXV0pLCAhMCk7CiAgICAgICAgICAgICAgICBjZSgpID8gVygiU3dlZXRBbGVydDIgcmVxdWlyZXMgZG9jdW1lbnQgdG8gaW5pdGlhbGl6ZSIpIDogKChuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZSA9IFkuY29udGFpbmVyLCBtICYmIGZlKG4sIFlbIm5vLXRyYW5zaXRpb24iXSksIFIobiwgdmUpLCAoaSA9ICJzdHJpbmciID09IHR5cGVvZihyID0gZS50YXJnZXQpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihyKSA6IHIpLmFwcGVuZENoaWxkKG4pLCBvID0gZSwgKGEgPSBLKCkpLnNldEF0dHJpYnV0ZSgicm9sZSIsIG8udG9hc3QgPyAiYWxlcnQiIDogImRpYWxvZyIpLCBhLnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwgby50b2FzdCA/ICJwb2xpdGUiIDogImFzc2VydGl2ZSIpLCBvLnRvYXN0IHx8IGEuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgInRydWUiKSwgcyA9IGksICJydGwiID09PSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzKS5kaXJlY3Rpb24gJiYgZmUoRygpLCBZLnJ0bCksIGwgPSBDKCksIGMgPSBnZShsLCBZLmlucHV0KSwgdSA9IGdlKGwsIFkuZmlsZSksIGQgPSBsLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLnJhbmdlLCAiIGlucHV0IikpLCBoID0gbC5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQoWS5yYW5nZSwgIiBvdXRwdXQiKSksIGYgPSBnZShsLCBZLnNlbGVjdCksIHAgPSBsLnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLmNoZWNrYm94LCAiIGlucHV0IikpLCBnID0gZ2UobCwgWS50ZXh0YXJlYSksIGMub25pbnB1dCA9IHVlLCB1Lm9uY2hhbmdlID0gdWUsIGYub25jaGFuZ2UgPSB1ZSwgcC5vbmNoYW5nZSA9IHVlLCBnLm9uaW5wdXQgPSB1ZSwgZC5vbmlucHV0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHVlKGUpLCBoLnZhbHVlID0gZC52YWx1ZQogICAgICAgICAgICAgICAgfSwgZC5vbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB1ZShlKSwgZC5uZXh0U2libGluZy52YWx1ZSA9IGQudmFsdWUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0oZSkKICAgIH0KCiAgICBmdW5jdGlvbiBjdChlKSB7CiAgICAgICAgdmFyIHQsIG4gPSBLKCk7CiAgICAgICAgZS50YXJnZXQgPT09IG4gJiYgKHQgPSBHKCksIG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcih3ZSwgY3QpLCB0LnN0eWxlLm92ZXJmbG93WSA9ICJhdXRvIikKICAgIH0KCiAgICBmdW5jdGlvbiB1dChlLCB0KSB7CiAgICAgICAgZS5jbG9zZVBvcHVwKHsKICAgICAgICAgICAgdmFsdWU6IHQKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIGR0KGUsIHQsIG4pIHsKICAgICAgICB2YXIgaSA9IGooKTsKICAgICAgICBpZiAoMCA8IGkubGVuZ3RoKSByZXR1cm4gKHQgKz0gbikgPT09IGkubGVuZ3RoID8gdCA9IDAgOiAtMSA9PT0gdCAmJiAodCA9IGkubGVuZ3RoIC0gMSksIGlbdF0uZm9jdXMoKTsKICAgICAgICBLKCkuZm9jdXMoKQogICAgfQogICAgdmFyIGh0LCBmdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgd2UgJiYgc2UodCkgPyAoZS5zdHlsZS5vdmVyZmxvd1kgPSAiaGlkZGVuIiwgdC5hZGRFdmVudExpc3RlbmVyKHdlLCBjdCkpIDogZS5zdHlsZS5vdmVyZmxvd1kgPSAiYXV0byIKICAgICAgICB9LAogICAgICAgIHB0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICF3aW5kb3cuTVNTdHJlYW0gfHwgIk1hY0ludGVsIiA9PT0gbmF2aWdhdG9yLnBsYXRmb3JtICYmIDEgPCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMpICYmICEkKGRvY3VtZW50LmJvZHksIFkuaW9zZml4KSAmJiAoaSA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLCBkb2N1bWVudC5ib2R5LnN0eWxlLnRvcCA9ICIiLmNvbmNhdCgtMSAqIGksICJweCIpLCBmZShkb2N1bWVudC5ib2R5LCBZLmlvc2ZpeCksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQgPSBHKCk7CiAgICAgICAgICAgICAgICB0Lm9udG91Y2hzdGFydCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICBlID0gWmUodC50YXJnZXQpCiAgICAgICAgICAgICAgICB9LCB0Lm9udG91Y2htb3ZlID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGUgJiYgKHQucHJldmVudERlZmF1bHQoKSwgdC5zdG9wUHJvcGFnYXRpb24oKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSgpLCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC8oQ3JpT1N8RnhpT1N8RWRnaU9TfFlhQnJvd3NlcnxVQ0Jyb3dzZXIpL2kpIHx8IEsoKS5zY3JvbGxIZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSA0NCAmJiAoRygpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAiIi5jb25jYXQoNDQsICJweCIpKSksICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgS2UoKSAmJiAoUWUoKSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIFFlKSksIHQgJiYgImhpZGRlbiIgIT09IG4gJiYgbnVsbCA9PT0gWi5wcmV2aW91c0JvZHlQYWRkaW5nICYmIGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gd2luZG93LmlubmVySGVpZ2h0ICYmIChaLnByZXZpb3VzQm9keVBhZGRpbmcgPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLXJpZ2h0IikpLCBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9ICIiLmNvbmNhdChaLnByZXZpb3VzQm9keVBhZGRpbmcgKyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICBlLmNsYXNzTmFtZSA9IFlbInNjcm9sbGJhci1tZWFzdXJlIl0sIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSBlLmNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSksIHQKICAgICAgICAgICAgfSgpLCAicHgiKSksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS5zY3JvbGxUb3AgPSAwCiAgICAgICAgICAgIH0pKQogICAgICAgIH0sCiAgICAgICAgZ3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIGZlKGUsIG4uc2hvd0NsYXNzLmJhY2tkcm9wKSwgaWUodCksIGZlKHQsIG4uc2hvd0NsYXNzLnBvcHVwKSwgZmUoW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keV0sIFkuc2hvd24pLCBuLmhlaWdodEF1dG8gJiYgbi5iYWNrZHJvcCAmJiAhbi50b2FzdCAmJiBmZShbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSwgWVsiaGVpZ2h0LWF1dG8iXSkKICAgICAgICB9LAogICAgICAgIG10ID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB5dFtuLmlucHV0XShyLCBidChlKSwgbikKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgciA9IEMoKTsKICAgICAgICAgICAgcChuLmlucHV0T3B0aW9ucykgfHwgbShuLmlucHV0T3B0aW9ucykgPyAoUmUoKSwgZyhuLmlucHV0T3B0aW9ucykudGhlbigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdC5oaWRlTG9hZGluZygpLCBpKGUpCiAgICAgICAgICAgIH0pKSkgOiAib2JqZWN0IiA9PT0gZShuLmlucHV0T3B0aW9ucykgPyBpKG4uaW5wdXRPcHRpb25zKSA6IFcoIlVuZXhwZWN0ZWQgdHlwZSBvZiBpbnB1dE9wdGlvbnMhIEV4cGVjdGVkIG9iamVjdCwgTWFwIG9yIFByb21pc2UsIGdvdCAiLmNvbmNhdChlKG4uaW5wdXRPcHRpb25zKSkpCiAgICAgICAgfSwKICAgICAgICB2dCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSBlLmdldElucHV0KCk7CiAgICAgICAgICAgIHJlKG4pLCBnKHQuaW5wdXRWYWx1ZSkudGhlbigoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgbi52YWx1ZSA9ICJudW1iZXIiID09PSB0LmlucHV0ID8gcGFyc2VGbG9hdChpKSB8fCAwIDogIiIuY29uY2F0KGkpLCBpZShuKSwgbi5mb2N1cygpLCBlLmhpZGVMb2FkaW5nKCkKICAgICAgICAgICAgfSkpLmNhdGNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICBXKCJFcnJvciBpbiBpbnB1dFZhbHVlIHByb21pc2U6ICIuY29uY2F0KHQpKSwgbi52YWx1ZSA9ICIiLCBpZShuKSwgbi5mb2N1cygpLCBlLmhpZGVMb2FkaW5nKCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwKICAgICAgICB5dCA9IHsKICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKGUsIHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgICAgICAgICAgICAgICAgIHIudmFsdWUgPSBpLCBSKHIsIHQpLCBuLmlucHV0VmFsdWUudG9TdHJpbmcoKSA9PT0gaS50b1N0cmluZygpICYmIChyLnNlbGVjdGVkID0gITApLCBlLmFwcGVuZENoaWxkKHIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgciA9IGdlKGUsIFkuc2VsZWN0KTsKICAgICAgICAgICAgICAgIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbMV07CiAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShvKSA/ICgodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGdyb3VwIikpLmxhYmVsID0gbiwgdC5kaXNhYmxlZCA9ICExLCByLmFwcGVuZENoaWxkKHQpLCBvLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkodCwgZVsxXSwgZVswXSkKICAgICAgICAgICAgICAgICAgICB9KSkpIDogaShyLCBvLCBuKQogICAgICAgICAgICAgICAgfSkpLCByLmZvY3VzKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmFkaW86IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gZ2UoZSwgWS5yYWRpbyk7CiAgICAgICAgICAgICAgICB0LmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgICAgICAgICAgICAgby50eXBlID0gInJhZGlvIiwgby5uYW1lID0gWS5yYWRpbywgby52YWx1ZSA9IHQsIG4uaW5wdXRWYWx1ZS50b1N0cmluZygpID09PSB0LnRvU3RyaW5nKCkgJiYgKG8uY2hlY2tlZCA9ICEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICAgICBSKHMsIHIpLCBzLmNsYXNzTmFtZSA9IFkubGFiZWwsIGEuYXBwZW5kQ2hpbGQobyksIGEuYXBwZW5kQ2hpbGQocyksIGkuYXBwZW5kQ2hpbGQoYSkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHZhciByID0gaS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpOwogICAgICAgICAgICAgICAgci5sZW5ndGggJiYgclswXS5mb2N1cygpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGJ0ID0gZnVuY3Rpb24gdChuKSB7CiAgICAgICAgICAgIHZhciBpID0gW107CiAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgTWFwICYmIG4gaW5zdGFuY2VvZiBNYXAgPyBuLmZvckVhY2goKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gbjsKICAgICAgICAgICAgICAgICJvYmplY3QiID09PSBlKG8pICYmIChvID0gdChvKSksIGkucHVzaChbciwgb10pCiAgICAgICAgICAgIH0pKSA6IE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBvID0gbltyXTsKICAgICAgICAgICAgICAgICJvYmplY3QiID09PSBlKG8pICYmIChvID0gdChvKSksIGkucHVzaChbciwgb10pCiAgICAgICAgICAgIH0pKSwgaQogICAgICAgIH0sCiAgICAgICAgd3QgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLmdldElucHV0KCk7CiAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgc3dpdGNoICh0LmlucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2hlY2tib3giOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2hlY2tlZCA/IDEgOiAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0obik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicmFkaW8iOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuY2hlY2tlZCA/IGUudmFsdWUgOiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0obik7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmlsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5maWxlcy5sZW5ndGggPyBudWxsICE9PSBlLmdldEF0dHJpYnV0ZSgibXVsdGlwbGUiKSA/IGUuZmlsZXMgOiBlLmZpbGVzWzBdIDogbnVsbAogICAgICAgICAgICAgICAgICAgICAgICB9KG4pOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlucHV0QXV0b1RyaW0gPyBuLnZhbHVlLnRyaW0oKSA6IG4udmFsdWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfShlLCB0KTsKICAgICAgICAgICAgdC5pbnB1dFZhbGlkYXRvciA/IChlLmRpc2FibGVJbnB1dCgpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnKHQuaW5wdXRWYWxpZGF0b3IobiwgdC52YWxpZGF0aW9uTWVzc2FnZSkpCiAgICAgICAgICAgIH0pKS50aGVuKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICBlLmVuYWJsZUJ1dHRvbnMoKSwgZS5lbmFibGVJbnB1dCgpLCBpID8gZS5zaG93VmFsaWRhdGlvbk1lc3NhZ2UoaSkgOiB4dChlLCB0LCBuKQogICAgICAgICAgICB9KSkpIDogZS5nZXRJbnB1dCgpLmNoZWNrVmFsaWRpdHkoKSA/IHh0KGUsIHQsIG4pIDogKGUuZW5hYmxlQnV0dG9ucygpLCBlLnNob3dWYWxpZGF0aW9uTWVzc2FnZSh0LnZhbGlkYXRpb25NZXNzYWdlKSkKICAgICAgICB9LAogICAgICAgIHh0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB0LnNob3dMb2FkZXJPbkNvbmZpcm0gJiYgUmUoKSwgdC5wcmVDb25maXJtID8gKGUucmVzZXRWYWxpZGF0aW9uTWVzc2FnZSgpLCBQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBnKHQucHJlQ29uZmlybShuLCB0LnZhbGlkYXRpb25NZXNzYWdlKSkKICAgICAgICAgICAgfSkpLnRoZW4oKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIG1lKEEoKSkgfHwgITEgPT09IHQgPyBlLmhpZGVMb2FkaW5nKCkgOiB1dChlLCB2b2lkIDAgPT09IHQgPyBuIDogdCkKICAgICAgICAgICAgfSkpKSA6IHV0KGUsIG4pCiAgICAgICAgfSwKICAgICAgICBfdCA9IFsiQXJyb3dMZWZ0IiwgIkFycm93UmlnaHQiLCAiQXJyb3dVcCIsICJBcnJvd0Rvd24iLCAiTGVmdCIsICJSaWdodCIsICJVcCIsICJEb3duIl0sCiAgICAgICAgU3QgPSBbIkVzY2FwZSIsICJFc2MiXSwKICAgICAgICBDdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSBTZS5pbm5lclBhcmFtcy5nZXQoZSk7CiAgICAgICAgICAgIGkuc3RvcEtleWRvd25Qcm9wYWdhdGlvbiAmJiB0LnN0b3BQcm9wYWdhdGlvbigpLCAiRW50ZXIiID09PSB0LmtleSA/IGt0KGUsIHQsIGkpIDogIlRhYiIgPT09IHQua2V5ID8gVHQodCwgaSkgOiAtMSAhPT0gX3QuaW5kZXhPZih0LmtleSkgPyBBdCgpIDogLTEgIT09IFN0LmluZGV4T2YodC5rZXkpICYmIEV0KHQsIGksIG4pCiAgICAgICAgfSwKICAgICAgICBrdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgaWYgKCF0LmlzQ29tcG9zaW5nICYmIHQudGFyZ2V0ICYmIGUuZ2V0SW5wdXQoKSAmJiB0LnRhcmdldC5vdXRlckhUTUwgPT09IGUuZ2V0SW5wdXQoKS5vdXRlckhUTUwpIHsKICAgICAgICAgICAgICAgIGlmICgtMSAhPT0gWyJ0ZXh0YXJlYSIsICJmaWxlIl0uaW5kZXhPZihuLmlucHV0KSkgcmV0dXJuOwogICAgICAgICAgICAgICAgTWUoKSwgdC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFR0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ID0gZS50YXJnZXQsIG4gPSBqKCksIGkgPSAtMSwgciA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKQogICAgICAgICAgICAgICAgaWYgKHQgPT09IG5bcl0pIHsKICAgICAgICAgICAgICAgICAgICBpID0gcjsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBlLnNoaWZ0S2V5ID8gZHQoMCwgaSwgLTEpIDogZHQoMCwgaSwgMSksIGUuc3RvcFByb3BhZ2F0aW9uKCksIGUucHJldmVudERlZmF1bHQoKQogICAgICAgIH0sCiAgICAgICAgQXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBFKCksCiAgICAgICAgICAgICAgICB0ID0gRCgpOwogICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlICYmIG1lKHQpID8gdC5mb2N1cygpIDogZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdCAmJiBtZShlKSAmJiBlLmZvY3VzKCkKICAgICAgICB9LAogICAgICAgIEV0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICBVKHQuYWxsb3dFc2NhcGVLZXkpICYmIChlLnByZXZlbnREZWZhdWx0KCksIG4oVi5lc2MpKQogICAgICAgIH0sCiAgICAgICAgRHQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHQucG9wdXAub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBTZS5pbm5lclBhcmFtcy5nZXQoZSk7CiAgICAgICAgICAgICAgICB0LnNob3dDb25maXJtQnV0dG9uIHx8IHQuc2hvd0NhbmNlbEJ1dHRvbiB8fCB0LnNob3dDbG9zZUJ1dHRvbiB8fCB0LmlucHV0IHx8IG4oVi5jbG9zZSkKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgT3QgPSAhMSwKICAgICAgICBNdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5wb3B1cC5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZS5jb250YWluZXIub25tb3VzZXVwID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGUuY29udGFpbmVyLm9ubW91c2V1cCA9IHZvaWQgMCwgdC50YXJnZXQgPT09IGUuY29udGFpbmVyICYmIChPdCA9ICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBJdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5jb250YWluZXIub25tb3VzZWRvd24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGUucG9wdXAub25tb3VzZXVwID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGUucG9wdXAub25tb3VzZXVwID0gdm9pZCAwLCB0LnRhcmdldCAhPT0gZS5wb3B1cCAmJiAhZS5wb3B1cC5jb250YWlucyh0LnRhcmdldCkgfHwgKE90ID0gITApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIEx0ID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB0LmNvbnRhaW5lci5vbmNsaWNrID0gZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBTZS5pbm5lclBhcmFtcy5nZXQoZSk7CiAgICAgICAgICAgICAgICBPdCA/IE90ID0gITEgOiBpLnRhcmdldCA9PT0gdC5jb250YWluZXIgJiYgVShyLmFsbG93T3V0c2lkZUNsaWNrKSAmJiBuKFYuYmFja2Ryb3ApCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIFB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpCiAgICAgICAgfSwKICAgICAgICBqdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBlKSBlW3RdID0gbmV3IFdlYWtNYXAKICAgICAgICB9LAogICAgICAgIE50ID0gT2JqZWN0LmZyZWV6ZSh7CiAgICAgICAgICAgIGhpZGVMb2FkaW5nOiBHZSwKICAgICAgICAgICAgZGlzYWJsZUxvYWRpbmc6IEdlLAogICAgICAgICAgICBnZXRJbnB1dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBTZS5pbm5lclBhcmFtcy5nZXQoZSB8fCB0aGlzKSwKICAgICAgICAgICAgICAgICAgICBuID0gU2UuZG9tQ2FjaGUuZ2V0KGUgfHwgdGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gbiA/IEoobi5jb250ZW50LCB0LmlucHV0KSA6IG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xvc2U6IHR0LAogICAgICAgICAgICBjbG9zZVBvcHVwOiB0dCwKICAgICAgICAgICAgY2xvc2VNb2RhbDogdHQsCiAgICAgICAgICAgIGNsb3NlVG9hc3Q6IHR0LAogICAgICAgICAgICBlbmFibGVCdXR0b25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJ0KHRoaXMsIFsiY29uZmlybUJ1dHRvbiIsICJjYW5jZWxCdXR0b24iXSwgITEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRpc2FibGVCdXR0b25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJ0KHRoaXMsIFsiY29uZmlybUJ1dHRvbiIsICJjYW5jZWxCdXR0b24iXSwgITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVuYWJsZUlucHV0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvdCh0aGlzLmdldElucHV0KCksICExKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlSW5wdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG90KHRoaXMuZ2V0SW5wdXQoKSwgITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNob3dWYWxpZGF0aW9uTWVzc2FnZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBTZS5kb21DYWNoZS5nZXQodGhpcyk7CiAgICAgICAgICAgICAgICBSKHQudmFsaWRhdGlvbk1lc3NhZ2UsIGUpOwogICAgICAgICAgICAgICAgdmFyIG4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0LnBvcHVwKTsKICAgICAgICAgICAgICAgIHQudmFsaWRhdGlvbk1lc3NhZ2Uuc3R5bGUubWFyZ2luTGVmdCA9ICItIi5jb25jYXQobi5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLWxlZnQiKSksIHQudmFsaWRhdGlvbk1lc3NhZ2Uuc3R5bGUubWFyZ2luUmlnaHQgPSAiLSIuY29uY2F0KG4uZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy1yaWdodCIpKSwgaWUodC52YWxpZGF0aW9uTWVzc2FnZSk7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZ2V0SW5wdXQoKTsKICAgICAgICAgICAgICAgIGkgJiYgKGkuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCAhMCksIGkuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZEJ5IiwgWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0pLCBlZShpKSwgZmUoaSwgWS5pbnB1dGVycm9yKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzZXRWYWxpZGF0aW9uTWVzc2FnZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IFNlLmRvbUNhY2hlLmdldCh0aGlzKTsKICAgICAgICAgICAgICAgIGUudmFsaWRhdGlvbk1lc3NhZ2UgJiYgcmUoZS52YWxpZGF0aW9uTWVzc2FnZSk7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0SW5wdXQoKTsKICAgICAgICAgICAgICAgIHQgJiYgKHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKSwgdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkQnkiKSwgcGUodCwgWS5pbnB1dGVycm9yKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0UHJvZ3Jlc3NTdGVwczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gU2UuZG9tQ2FjaGUuZ2V0KHRoaXMpLnByb2dyZXNzU3RlcHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX21haW46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBlKSBIZShyID0gdCkgfHwgQignVW5rbm93biBwYXJhbWV0ZXIgIicuY29uY2F0KHIsICciJykpLCBlLnRvYXN0ICYmIChpID0gdCwgLTEgIT09IFllLmluZGV4T2YoaSkgJiYgQignVGhlIHBhcmFtZXRlciAiJy5jb25jYXQoaSwgJyIgaXMgaW5jb21wYXRpYmxlIHdpdGggdG9hc3RzJykpKSwgQmUobiA9IHQpICYmIGYobiwgQmUobikpOwogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByCiAgICAgICAgICAgICAgICB9KShlKSwgV2UuY3VycmVudEluc3RhbmNlICYmIFdlLmN1cnJlbnRJbnN0YW5jZS5fZGVzdHJveSgpLCBXZS5jdXJyZW50SW5zdGFuY2UgPSB0aGlzOwogICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSByKHt9LCBxZS5zaG93Q2xhc3MsIGUuc2hvd0NsYXNzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHIoe30sIHFlLmhpZGVDbGFzcywgZS5oaWRlQ2xhc3MpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gcih7fSwgcWUsIGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLnNob3dDbGFzcyA9IHQsIGkuaGlkZUNsYXNzID0gbiwgITEgPT09IGUuYW5pbWF0aW9uICYmIChpLnNob3dDbGFzcyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXA6ICJzd2FsMi1ub2FuaW1hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wOiAic3dhbDItbm9hbmltYXRpb24iCiAgICAgICAgICAgICAgICAgICAgfSwgaS5oaWRlQ2xhc3MgPSB7fSksIGkKICAgICAgICAgICAgICAgIH0oZSk7CiAgICAgICAgICAgICAgICBsdCh0KSwgT2JqZWN0LmZyZWV6ZSh0KSwgV2UudGltZW91dCAmJiAoV2UudGltZW91dC5zdG9wKCksIGRlbGV0ZSBXZS50aW1lb3V0KSwgY2xlYXJUaW1lb3V0KFdlLnJlc3RvcmVGb2N1c1RpbWVvdXQpOwogICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwOiBLKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogRygpLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBDKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IE8oKSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogRSgpLAogICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IEQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IFAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IEEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NTdGVwczogVCgpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2UuZG9tQ2FjaGUuc2V0KGUsIHQpLCB0CiAgICAgICAgICAgICAgICB9KHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIE9lKHRoaXMsIHQpLCBTZS5pbm5lclBhcmFtcy5zZXQodGhpcywgdCksCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xvc2VQb3B1cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3M6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEplLnN3YWxQcm9taXNlUmVzb2x2ZS5zZXQoZSwgaSksIHQuY29uZmlybUJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmRpc2FibGVCdXR0b25zKCksIHQuaW5wdXQgPyB3dChlLCB0KSA6IHh0KGUsIHQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5jYW5jZWxCdXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5kaXNhYmxlQnV0dG9ucygpLCB0KFYuY2FuY2VsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5jbG9zZUJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByKFYuY2xvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlLmlubmVyUGFyYW1zLmdldChlKS50b2FzdCA/IER0KGUsIHQsIG4pIDogKE10KHQpLCBJdCh0KSwgTHQoZSwgdCwgbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfShlLCB0LCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQua2V5ZG93blRhcmdldCAmJiB0LmtleWRvd25IYW5kbGVyQWRkZWQgJiYgKHQua2V5ZG93blRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdC5rZXlkb3duSGFuZGxlciwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdC5rZXlkb3duTGlzdGVuZXJDYXB0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LmtleWRvd25IYW5kbGVyQWRkZWQgPSAhMSksIG4udG9hc3QgfHwgKHQua2V5ZG93bkhhbmRsZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3QoZSwgdCwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdC5rZXlkb3duVGFyZ2V0ID0gbi5rZXlkb3duTGlzdGVuZXJDYXB0dXJlID8gd2luZG93IDogSygpLCB0LmtleWRvd25MaXN0ZW5lckNhcHR1cmUgPSBuLmtleWRvd25MaXN0ZW5lckNhcHR1cmUsIHQua2V5ZG93blRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdC5rZXlkb3duSGFuZGxlciwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdC5rZXlkb3duTGlzdGVuZXJDYXB0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0LmtleWRvd25IYW5kbGVyQWRkZWQgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUsIFdlLCBuLCByKSwgbi50b2FzdCAmJiAobi5pbnB1dCB8fCBuLmZvb3RlciB8fCBuLnNob3dDbG9zZUJ1dHRvbikgPyBmZShkb2N1bWVudC5ib2R5LCBZWyJ0b2FzdC1jb2x1bW4iXSkgOiBwZShkb2N1bWVudC5ib2R5LCBZWyJ0b2FzdC1jb2x1bW4iXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZWN0IiA9PT0gdC5pbnB1dCB8fCAicmFkaW8iID09PSB0LmlucHV0ID8gbXQoZSwgdCkgOiAtMSAhPT0gWyJ0ZXh0IiwgImVtYWlsIiwgIm51bWJlciIsICJ0ZWwiLCAidGV4dGFyZWEiXS5pbmRleE9mKHQuaW5wdXQpICYmIChwKHQuaW5wdXRWYWx1ZSkgfHwgbSh0LmlucHV0VmFsdWUpKSAmJiB2dChlLCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IEcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBLKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUub25CZWZvcmVPcGVuICYmIGUub25CZWZvcmVPcGVuKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm92ZXJmbG93WTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3QodCwgbiwgZSksIGZ0KHQsIG4pLCBOKCkgJiYgKHB0KHQsIGUuc2Nyb2xsYmFyUGFkZGluZywgaSksIGgoZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9PT0gRygpIHx8IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5jb250YWlucykgcmV0dXJuIGUuY29udGFpbnModCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgRygpKSB8fCAoZS5oYXNBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikgJiYgZS5zZXRBdHRyaWJ1dGUoImRhdGEtcHJldmlvdXMtYXJpYS1oaWRkZW4iLCBlLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSksIGUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsICJ0cnVlIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSksIFEoKSB8fCBXZS5wcmV2aW91c0FjdGl2ZUVsZW1lbnQgfHwgKFdlLnByZXZpb3VzQWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLCAiZnVuY3Rpb24iID09IHR5cGVvZiBlLm9uT3BlbiAmJiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLm9uT3BlbihuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIHBlKHQsIFlbIm5vLXRyYW5zaXRpb24iXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBMKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlKGkpLCB0LnRpbWVyICYmIChlLnRpbWVvdXQgPSBuZXcgYXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbigidGltZXIiKSwgZGVsZXRlIGUudGltZW91dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC50aW1lciksIHQudGltZXJQcm9ncmVzc0JhciAmJiAoaWUoaSksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS50aW1lb3V0LnJ1bm5pbmcgJiYgbGUodC50aW1lcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KFdlLCBuLCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdC50b2FzdCkgVSh0LmFsbG93RW50ZXJLZXkpID8gdC5mb2N1c0NhbmNlbCAmJiBtZShlLmNhbmNlbEJ1dHRvbikgPyBlLmNhbmNlbEJ1dHRvbi5mb2N1cygpIDogdC5mb2N1c0NvbmZpcm0gJiYgbWUoZS5jb25maXJtQnV0dG9uKSA/IGUuY29uZmlybUJ1dHRvbi5mb2N1cygpIDogZHQoMCwgLTEsIDEpIDogUHQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0odCwgbiksIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNvbnRhaW5lci5zY3JvbGxUb3AgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0odGhpcywgbiwgdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IEsoKSwKICAgICAgICAgICAgICAgICAgICBuID0gU2UuaW5uZXJQYXJhbXMuZ2V0KHRoaXMpOwogICAgICAgICAgICAgICAgaWYgKCF0IHx8ICQodCwgbi5oaWRlQ2xhc3MucG9wdXApKSByZXR1cm4gQigiWW91J3JlIHRyeWluZyB0byB1cGRhdGUgdGhlIGNsb3NlZCBvciBjbG9zaW5nIHBvcHVwLCB0aGF0IHdvbid0IHdvcmsuIFVzZSB0aGUgdXBkYXRlKCkgbWV0aG9kIGluIHByZUNvbmZpcm0gcGFyYW1ldGVyIG9yIHNob3cgYSBuZXcgcG9wdXAuIik7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHt9OwogICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIFJ0LmlzVXBkYXRhYmxlUGFyYW1ldGVyKHQpID8gaVt0XSA9IGVbdF0gOiBCKCdJbnZhbGlkIHBhcmFtZXRlciB0byB1cGRhdGU6ICInLmNvbmNhdCh0LCAnIi4gVXBkYXRhYmxlIHBhcmFtcyBhcmUgbGlzdGVkIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9zd2VldGFsZXJ0Mi9zd2VldGFsZXJ0Mi9ibG9iL21hc3Rlci9zcmMvdXRpbHMvcGFyYW1zLmpzJykpCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICB2YXIgbyA9IHIoe30sIG4sIGkpOwogICAgICAgICAgICAgICAgT2UodGhpcywgbyksIFNlLmlubmVyUGFyYW1zLnNldCh0aGlzLCBvKSwgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywgewogICAgICAgICAgICAgICAgICAgIHBhcmFtczogewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcih7fSwgdGhpcy5wYXJhbXMsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBTZS5kb21DYWNoZS5nZXQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgdCA9IFNlLmlubmVyUGFyYW1zLmdldCh0aGlzKTsKICAgICAgICAgICAgICAgIHQgJiYgKGUucG9wdXAgJiYgV2Uuc3dhbENsb3NlRXZlbnRGaW5pc2hlZENhbGxiYWNrICYmIChXZS5zd2FsQ2xvc2VFdmVudEZpbmlzaGVkQ2FsbGJhY2soKSwgZGVsZXRlIFdlLnN3YWxDbG9zZUV2ZW50RmluaXNoZWRDYWxsYmFjayksIFdlLmRlZmVyRGlzcG9zYWxUaW1lciAmJiAoY2xlYXJUaW1lb3V0KFdlLmRlZmVyRGlzcG9zYWxUaW1lciksIGRlbGV0ZSBXZS5kZWZlckRpc3Bvc2FsVGltZXIpLCAiZnVuY3Rpb24iID09IHR5cGVvZiB0Lm9uRGVzdHJveSAmJiB0Lm9uRGVzdHJveSgpLCBkZWxldGUgdGhpcy5wYXJhbXMsIGRlbGV0ZSBXZS5rZXlkb3duSGFuZGxlciwgZGVsZXRlIFdlLmtleWRvd25UYXJnZXQsIGp0KFNlKSwganQoSmUpKQogICAgICAgICAgICB9CiAgICAgICAgfSksCiAgICAgICAgRnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZnVuY3Rpb24gZSgpIHsKICAgICAgICAgICAgICAgIGlmICh0KHRoaXMsIGUpLCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93KSB7CiAgICAgICAgICAgICAgICAgICAgInVuZGVmaW5lZCIgPT0gdHlwZW9mIFByb21pc2UgJiYgVygiVGhpcyBwYWNrYWdlIHJlcXVpcmVzIGEgUHJvbWlzZSBsaWJyYXJ5LCBwbGVhc2UgaW5jbHVkZSBhIHNoaW0gdG8gZW5hYmxlIGl0IGluIHRoaXMgYnJvd3NlciAoU2VlOiBodHRwczovL2dpdGh1Yi5jb20vc3dlZXRhbGVydDIvc3dlZXRhbGVydDIvd2lraS9NaWdyYXRpb24tZnJvbS1Td2VldEFsZXJ0LXRvLVN3ZWV0QWxlcnQyIzEtaWUtc3VwcG9ydCkiKSwgaHQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBpID0gbmV3IEFycmF5KG4pLCByID0gMDsgciA8IG47IHIrKykgaVtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IE9iamVjdC5mcmVlemUodGhpcy5jb25zdHJ1Y3Rvci5hcmdzVG9QYXJhbXMoaSkpOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9tYWluKHRoaXMucGFyYW1zKTsKICAgICAgICAgICAgICAgICAgICBTZS5wcm9taXNlLnNldCh0aGlzLCBhKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBpKGUsIFt7CiAgICAgICAgICAgICAgICBrZXk6ICJ0aGVuIiwKICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlLnByb21pc2UuZ2V0KHRoaXMpLnRoZW4oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAga2V5OiAiZmluYWxseSIsCiAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBTZS5wcm9taXNlLmdldCh0aGlzKS5maW5hbGx5KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dKSwgZQogICAgICAgIH0oKTsKICAgIHIoRnQucHJvdG90eXBlLCBOdCksIHIoRnQsIFhlKSwgT2JqZWN0LmtleXMoTnQpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICBGdFtlXSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoaHQpIHJldHVybiBodFtlXS5hcHBseShodCwgYXJndW1lbnRzKQogICAgICAgIH0KICAgIH0pKSwgRnQuRGlzbWlzc1JlYXNvbiA9IFYsIEZ0LnZlcnNpb24gPSAiOS4xNy4yIjsKICAgIHZhciBSdCA9IEZ0OwogICAgcmV0dXJuIFJ0LmRlZmF1bHQgPSBSdAp9KSksIHZvaWQgMCAhPT0gdGhpcyAmJiB0aGlzLlN3ZWV0YWxlcnQyICYmICh0aGlzLnN3YWwgPSB0aGlzLnN3ZWV0QWxlcnQgPSB0aGlzLlN3YWwgPSB0aGlzLlN3ZWV0QWxlcnQgPSB0aGlzLlN3ZWV0YWxlcnQyKSwKICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlKFsianF1ZXJ5Il0sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHQodCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IHx8ICh0ID0gYSgpKSwgKGwgPSBlKCIjIiArIHQuY29udGFpbmVySWQpKS5sZW5ndGggfHwgbiAmJiAobCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsID0gZSgiPGRpdi8+IikuYXR0cigiaWQiLCB0LmNvbnRhaW5lcklkKS5hZGRDbGFzcyh0LnBvc2l0aW9uQ2xhc3MpKS5hcHBlbmRUbyhlKHQudGFyZ2V0KSksIGwKICAgICAgICAgICAgICAgICAgICB9KHQpKSwgbAogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG4odCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBsLmNoaWxkcmVuKCksIHIgPSBuLmxlbmd0aCAtIDE7IHIgPj0gMDsgci0tKSBpKGUobltyXSksIHQpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaSh0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAhKCFpIHx8ICFpLmZvcmNlKSAmJiBpLmZvcmNlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCF0IHx8ICFyICYmIDAgIT09IGUoIjpmb2N1cyIsIHQpLmxlbmd0aCB8fCAodFtuLmhpZGVNZXRob2RdKHsKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IG4uaGlkZUR1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IG4uaGlkZUVhc2luZywKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyh0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSksIDApKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHIoZSkgewogICAgICAgICAgICAgICAgICAgIGMgJiYgYyhlKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG8obikgewogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGkoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBlICYmIChlID0gIiIpLCBlLnJlcGxhY2UoLyYvZywgIiZhbXA7IikucmVwbGFjZSgvIi9nLCAiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCAiJiMzOTsiKS5yZXBsYWNlKC88L2csICImbHQ7IikucmVwbGFjZSgvPi9nLCAiJmd0OyIpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0ICYmICExICE9PSBwLmNsb3NlTWV0aG9kID8gcC5jbG9zZU1ldGhvZCA6IHAuaGlkZU1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ICYmICExICE9PSBwLmNsb3NlRHVyYXRpb24gPyBwLmNsb3NlRHVyYXRpb24gOiBwLmhpZGVEdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0ICYmICExICE9PSBwLmNsb3NlRWFzaW5nID8gcC5jbG9zZUVhc2luZyA6IHAuaGlkZUVhc2luZzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKCI6Zm9jdXMiLCB2KS5sZW5ndGggfHwgdCkgcmV0dXJuIGNsZWFyVGltZW91dChfLmludGVydmFsSWQpLCB2W25dKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHModiksIGNsZWFyVGltZW91dChtKSwgcC5vbkhpZGRlbiAmJiAiaGlkZGVuIiAhPT0gUy5zdGF0ZSAmJiBwLm9uSGlkZGVuKCksIFMuc3RhdGUgPSAiaGlkZGVuIiwgUy5lbmRUaW1lID0gbmV3IERhdGUsIHIoUykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIChwLnRpbWVPdXQgPiAwIHx8IHAuZXh0ZW5kZWRUaW1lT3V0ID4gMCkgJiYgKG0gPSBzZXRUaW1lb3V0KG8sIHAuZXh0ZW5kZWRUaW1lT3V0KSwgXy5tYXhIaWRlVGltZSA9IHBhcnNlRmxvYXQocC5leHRlbmRlZFRpbWVPdXQpLCBfLmhpZGVFdGEgPSAobmV3IERhdGUpLmdldFRpbWUoKSArIF8ubWF4SGlkZVRpbWUpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBoKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobSksIF8uaGlkZUV0YSA9IDAsIHYuc3RvcCghMCwgITApW3Auc2hvd01ldGhvZF0oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IHAuc2hvd0R1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBwLnNob3dFYXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gKF8uaGlkZUV0YSAtIChuZXcgRGF0ZSkuZ2V0VGltZSgpKSAvIF8ubWF4SGlkZVRpbWUgKiAxMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHcud2lkdGgoZSArICIlIikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBuLmljb25DbGFzcyB8fCBwLmljb25DbGFzczsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBuLm9wdGlvbnNPdmVycmlkZSAmJiAocCA9IGUuZXh0ZW5kKHAsIG4ub3B0aW9uc092ZXJyaWRlKSwgZyA9IG4ub3B0aW9uc092ZXJyaWRlLmljb25DbGFzcyB8fCBnKSwgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5wcmV2ZW50RHVwbGljYXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm1lc3NhZ2UgPT09IHUpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gdC5tZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgfShwLCBuKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkKyssIGwgPSB0KHAsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGUoIjxkaXYvPiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGUoIjxkaXYvPiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGUoIjxkaXYvPiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IGUoIjxkaXYvPiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGUocC5jbG9zZUh0bWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbElkOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFdGE6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGlkZVRpbWU6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0SWQ6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICJ2aXNpYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IG5ldyBEYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5pY29uQ2xhc3MgJiYgdi5hZGRDbGFzcyhwLnRvYXN0Q2xhc3MpLmFkZENsYXNzKGcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4udGl0bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuLnRpdGxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmVzY2FwZUh0bWwgJiYgKGUgPSBpKG4udGl0bGUpKSwgeS5hcHBlbmQoZSkuYWRkQ2xhc3MocC50aXRsZUNsYXNzKSwgdi5hcHBlbmQoeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5tZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5tZXNzYWdlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmVzY2FwZUh0bWwgJiYgKGUgPSBpKG4ubWVzc2FnZSkpLCBiLmFwcGVuZChlKS5hZGRDbGFzcyhwLm1lc3NhZ2VDbGFzcyksIHYuYXBwZW5kKGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgpLCBwLmNsb3NlQnV0dG9uICYmICh4LmFkZENsYXNzKHAuY2xvc2VDbGFzcykuYXR0cigicm9sZSIsICJidXR0b24iKSwgdi5wcmVwZW5kKHgpKSwgcC5wcm9ncmVzc0JhciAmJiAody5hZGRDbGFzcyhwLnByb2dyZXNzQ2xhc3MpLCB2LnByZXBlbmQodykpLCBwLnJ0bCAmJiB2LmFkZENsYXNzKCJydGwiKSwgcC5uZXdlc3RPblRvcCA/IGwucHJlcGVuZCh2KSA6IGwuYXBwZW5kKHYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG4uaWNvbkNsYXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRvYXN0LXN1Y2Nlc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b2FzdC1pbmZvIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAicG9saXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICJhc3NlcnRpdmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYuYXR0cigiYXJpYS1saXZlIiwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oKSwgdi5oaWRlKCksIHZbcC5zaG93TWV0aG9kXSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IHAuc2hvd0R1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogcC5zaG93RWFzaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBwLm9uU2hvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBwLnRpbWVPdXQgPiAwICYmIChtID0gc2V0VGltZW91dChvLCBwLnRpbWVPdXQpLCBfLm1heEhpZGVUaW1lID0gcGFyc2VGbG9hdChwLnRpbWVPdXQpLCBfLmhpZGVFdGEgPSAobmV3IERhdGUpLmdldFRpbWUoKSArIF8ubWF4SGlkZVRpbWUsIHAucHJvZ3Jlc3NCYXIgJiYgKF8uaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGYsIDEwKSkpLCBwLmNsb3NlT25Ib3ZlciAmJiB2LmhvdmVyKGgsIGMpLCAhcC5vbmNsaWNrICYmIHAudGFwVG9EaXNtaXNzICYmIHYuY2xpY2sobyksIHAuY2xvc2VCdXR0b24gJiYgeCAmJiB4LmNsaWNrKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24gPyBlLnN0b3BQcm9wYWdhdGlvbigpIDogdm9pZCAwICE9PSBlLmNhbmNlbEJ1YmJsZSAmJiAhMCAhPT0gZS5jYW5jZWxCdWJibGUgJiYgKGUuY2FuY2VsQnViYmxlID0gITApLCBwLm9uQ2xvc2VDbGljayAmJiBwLm9uQ2xvc2VDbGljayhlKSwgbyghMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcC5vbmNsaWNrICYmIHYuY2xpY2soKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLm9uY2xpY2soZSksIG8oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCByKFMpLCBwLmRlYnVnICYmIGNvbnNvbGUgJiYgY29uc29sZS5sb2coUyksIHYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5leHRlbmQoe30sIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFwVG9EaXNtaXNzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RDbGFzczogInRvYXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySWQ6ICJ0b2FzdC1jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNZXRob2Q6ICJmYWRlSW4iLAogICAgICAgICAgICAgICAgICAgICAgICBzaG93RHVyYXRpb246IDMwMCwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vhc2luZzogInN3aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgb25TaG93bjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlTWV0aG9kOiAiZmFkZU91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVEdXJhdGlvbjogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICBoaWRlRWFzaW5nOiAic3dpbmciLAogICAgICAgICAgICAgICAgICAgICAgICBvbkhpZGRlbjogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZU1ldGhvZDogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlRHVyYXRpb246ICExLAogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVhc2luZzogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlT25Ib3ZlcjogITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkVGltZU91dDogMWUzLAogICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3NlczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICJ0b2FzdC1lcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvOiAidG9hc3QtaW5mbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAidG9hc3Qtc3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nOiAidG9hc3Qtd2FybmluZyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzOiAidG9hc3QtaW5mbyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQ2xhc3M6ICJ0b2FzdC10b3AtcmlnaHQiLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0OiA1ZTMsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ2xhc3M6ICJ0b2FzdC10aXRsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VDbGFzczogInRvYXN0LW1lc3NhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVIdG1sOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiYm9keSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlSHRtbDogJzxidXR0b24gdHlwZT0iYnV0dG9uIj4mdGltZXM7PC9idXR0b24+JywKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VDbGFzczogInRvYXN0LWNsb3NlLWJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VzdE9uVG9wOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudER1cGxpY2F0ZXM6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc0JhcjogITEsCiAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzQ2xhc3M6ICJ0b2FzdC1wcm9ncmVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogITEKICAgICAgICAgICAgICAgICAgICB9LCBmLm9wdGlvbnMpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcyhlKSB7CiAgICAgICAgICAgICAgICAgICAgbCB8fCAobCA9IHQoKSksIGUuaXMoIjp2aXNpYmxlIikgfHwgKGUucmVtb3ZlKCksIGUgPSBudWxsLCAwID09PSBsLmNoaWxkcmVuKCkubGVuZ3RoICYmIChsLnJlbW92ZSgpLCB1ID0gdm9pZCAwKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBsLCBjLCB1LCBkID0gMCwKICAgICAgICAgICAgICAgICAgICBoID0gewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogImVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgaW5mbzogImluZm8iLAogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAic3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmc6ICJ3YXJuaW5nIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI6IGZ1bmN0aW9uKGUsIHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCB8fCB0KG8pLCBpKGUsIG8sIHIpIHx8IG4obykKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsIHx8IHQoaSksIG4gJiYgMCA9PT0gZSgiOmZvY3VzIiwgbikubGVuZ3RoID8gdm9pZCBzKG4pIDogdm9pZChsLmNoaWxkcmVuKCkubGVuZ3RoICYmIGwucmVtb3ZlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaC5lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M6IGEoKS5pY29uQ2xhc3Nlcy5lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNPdmVycmlkZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGFpbmVyOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBpbmZvOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaC5pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzczogYSgpLmljb25DbGFzc2VzLmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zT3ZlcnJpZGU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBoLnN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzOiBhKCkuaWNvbkNsYXNzZXMuc3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNPdmVycmlkZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogIjIuMS40IiwKICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGgud2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M6IGEoKS5pY29uQ2xhc3Nlcy53YXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc092ZXJyaWRlOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgICAgIH0oKQogICAgICAgIH0pKQogICAgfSgiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSA6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSB0KHJlcXVpcmUoImpxdWVyeSIpKSA6IHdpbmRvdy50b2FzdHIgPSB0KHdpbmRvdy5qUXVlcnkpCiAgICB9KSwKICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCBlKSA6ICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUgJiYgbW9kdWxlLmV4cG9ydHMgPyBtb2R1bGUuZXhwb3J0cyA9IGUocmVxdWlyZSgianF1ZXJ5IikpIDogZShqUXVlcnkpCiAgICB9KChmdW5jdGlvbihlKSB7CiAgICAgICAgZS5leHRlbmQoZS5mbiwgewogICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBlLmRhdGEodGhpc1swXSwgInZhbGlkYXRvciIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIHx8ICh0aGlzLmF0dHIoIm5vdmFsaWRhdGUiLCAibm92YWxpZGF0ZSIpLCBuID0gbmV3IGUudmFsaWRhdG9yKHQsIHRoaXNbMF0pLCBlLmRhdGEodGhpc1swXSwgInZhbGlkYXRvciIsIG4pLCBuLnNldHRpbmdzLm9uc3VibWl0ICYmICh0aGlzLm9uKCJjbGljay52YWxpZGF0ZSIsICI6c3VibWl0IiwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5zdWJtaXRCdXR0b24gPSB0LmN1cnJlbnRUYXJnZXQsIGUodGhpcykuaGFzQ2xhc3MoImNhbmNlbCIpICYmIChuLmNhbmNlbFN1Ym1pdCA9ICEwKSwgdm9pZCAwICE9PSBlKHRoaXMpLmF0dHIoImZvcm1ub3ZhbGlkYXRlIikgJiYgKG4uY2FuY2VsU3VibWl0ID0gITApCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLm9uKCJzdWJtaXQudmFsaWRhdGUiLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5zdWJtaXRCdXR0b24gJiYgKG4uc2V0dGluZ3Muc3VibWl0SGFuZGxlciB8fCBuLmZvcm1TdWJtaXR0ZWQpICYmIChpID0gZSgiPGlucHV0IHR5cGU9J2hpZGRlbicvPiIpLmF0dHIoIm5hbWUiLCBuLnN1Ym1pdEJ1dHRvbi5uYW1lKS52YWwoZShuLnN1Ym1pdEJ1dHRvbikudmFsKCkpLmFwcGVuZFRvKG4uY3VycmVudEZvcm0pKSwgIShuLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXIgJiYgIW4uc2V0dGluZ3MuZGVidWcpIHx8IChyID0gbi5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyLmNhbGwobiwgbi5jdXJyZW50Rm9ybSwgdCksIGkgJiYgaS5yZW1vdmUoKSwgdm9pZCAwICE9PSByICYmIHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc2V0dGluZ3MuZGVidWcgJiYgdC5wcmV2ZW50RGVmYXVsdCgpLCBuLmNhbmNlbFN1Ym1pdCA/IChuLmNhbmNlbFN1Ym1pdCA9ICExLCBpKCkpIDogbi5mb3JtKCkgPyBuLnBlbmRpbmdSZXF1ZXN0ID8gKG4uZm9ybVN1Ym1pdHRlZCA9ICEwLCAhMSkgOiBpKCkgOiAobi5mb2N1c0ludmFsaWQoKSwgITEpCiAgICAgICAgICAgICAgICAgICAgfSkpKSwgbikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQgJiYgdC5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4oIk5vdGhpbmcgc2VsZWN0ZWQsIGNhbid0IHZhbGlkYXRlLCByZXR1cm5pbmcgbm90aGluZy4iKQogICAgICAgICAgICB9LAogICAgICAgICAgICB2YWxpZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaTsKICAgICAgICAgICAgICAgIHJldHVybiBlKHRoaXNbMF0pLmlzKCJmb3JtIikgPyB0ID0gdGhpcy52YWxpZGF0ZSgpLmZvcm0oKSA6IChpID0gW10sIHQgPSAhMCwgbiA9IGUodGhpc1swXS5mb3JtKS52YWxpZGF0ZSgpLCB0aGlzLmVhY2goKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICh0ID0gbi5lbGVtZW50KHRoaXMpICYmIHQpIHx8IChpID0gaS5jb25jYXQobi5lcnJvckxpc3QpKQogICAgICAgICAgICAgICAgfSkpLCBuLmVycm9yTGlzdCA9IGkpLCB0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJ1bGVzOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcywgbCwgYyA9IHRoaXNbMF0sCiAgICAgICAgICAgICAgICAgICAgdSA9IHZvaWQgMCAhPT0gdGhpcy5hdHRyKCJjb250ZW50ZWRpdGFibGUiKSAmJiAiZmFsc2UiICE9PSB0aGlzLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gYyAmJiAoIWMuZm9ybSAmJiB1ICYmIChjLmZvcm0gPSB0aGlzLmNsb3Nlc3QoImZvcm0iKVswXSwgYy5uYW1lID0gdGhpcy5hdHRyKCJuYW1lIikpLCBudWxsICE9IGMuZm9ybSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodCkgc3dpdGNoIChpID0gZS5kYXRhKGMuZm9ybSwgInZhbGlkYXRvciIpLnNldHRpbmdzLCByID0gaS5ydWxlcywgbyA9IGUudmFsaWRhdG9yLnN0YXRpY1J1bGVzKGMpLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImFkZCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmV4dGVuZChvLCBlLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKG4pKSwgZGVsZXRlIG8ubWVzc2FnZXMsIHJbYy5uYW1lXSA9IG8sIG4ubWVzc2FnZXMgJiYgKGkubWVzc2FnZXNbYy5uYW1lXSA9IGUuZXh0ZW5kKGkubWVzc2FnZXNbYy5uYW1lXSwgbi5tZXNzYWdlcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJlbW92ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA/IChsID0ge30sIGUuZWFjaChuLnNwbGl0KC9ccy8pLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxbdF0gPSBvW3RdLCBkZWxldGUgb1t0XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBsKSA6IChkZWxldGUgcltjLm5hbWVdLCBvKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEgPSBlLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlcyhlLmV4dGVuZCh7fSwgZS52YWxpZGF0b3IuY2xhc3NSdWxlcyhjKSwgZS52YWxpZGF0b3IuYXR0cmlidXRlUnVsZXMoYyksIGUudmFsaWRhdG9yLmRhdGFSdWxlcyhjKSwgZS52YWxpZGF0b3Iuc3RhdGljUnVsZXMoYykpLCBjKSkucmVxdWlyZWQgJiYgKHMgPSBhLnJlcXVpcmVkLCBkZWxldGUgYS5yZXF1aXJlZCwgYSA9IGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHMKICAgICAgICAgICAgICAgICAgICB9LCBhKSksIGEucmVtb3RlICYmIChzID0gYS5yZW1vdGUsIGRlbGV0ZSBhLnJlbW90ZSwgYSA9IGUuZXh0ZW5kKGEsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlOiBzCiAgICAgICAgICAgICAgICAgICAgfSkpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csICIiKQogICAgICAgIH07CiAgICAgICAgZS5leHRlbmQoZS5leHByLnBzZXVkb3MgfHwgZS5leHByWyI6Il0sIHsKICAgICAgICAgICAgYmxhbms6IGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAhdCgiIiArIGUobikudmFsKCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZpbGxlZDogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgdmFyIGkgPSBlKG4pLnZhbCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IGkgJiYgISF0KCIiICsgaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW5jaGVja2VkOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWUodCkucHJvcCgiY2hlY2tlZCIpCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgZS52YWxpZGF0b3IgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSBlLmV4dGVuZCghMCwge30sIGUudmFsaWRhdG9yLmRlZmF1bHRzLCB0KSwgdGhpcy5jdXJyZW50Rm9ybSA9IG4sIHRoaXMuaW5pdCgpCiAgICAgICAgfSwgZS52YWxpZGF0b3IuZm9ybWF0ID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gYXJndW1lbnRzLmxlbmd0aCA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLm1ha2VBcnJheShhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4udW5zaGlmdCh0KSwgZS52YWxpZGF0b3IuZm9ybWF0LmFwcGx5KHRoaXMsIG4pCiAgICAgICAgICAgIH0gOiAodm9pZCAwID09PSBuIHx8IChhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBuLmNvbnN0cnVjdG9yICE9PSBBcnJheSAmJiAobiA9IGUubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMSkpLCBuLmNvbnN0cnVjdG9yICE9PSBBcnJheSAmJiAobiA9IFtuXSksIGUuZWFjaChuLCAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShuZXcgUmVnRXhwKCJcXHsiICsgZSArICJcXH0iLCAiZyIpLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSkpLCB0KQogICAgICAgIH0sIGUuZXh0ZW5kKGUudmFsaWRhdG9yLCB7CiAgICAgICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgICAgICBtZXNzYWdlczoge30sCiAgICAgICAgICAgICAgICBncm91cHM6IHt9LAogICAgICAgICAgICAgICAgcnVsZXM6IHt9LAogICAgICAgICAgICAgICAgZXJyb3JDbGFzczogImVycm9yIiwKICAgICAgICAgICAgICAgIHBlbmRpbmdDbGFzczogInBlbmRpbmciLAogICAgICAgICAgICAgICAgdmFsaWRDbGFzczogInZhbGlkIiwKICAgICAgICAgICAgICAgIGVycm9yRWxlbWVudDogImxhYmVsIiwKICAgICAgICAgICAgICAgIGZvY3VzQ2xlYW51cDogITEsCiAgICAgICAgICAgICAgICBmb2N1c0ludmFsaWQ6ICEwLAogICAgICAgICAgICAgICAgZXJyb3JDb250YWluZXI6IGUoW10pLAogICAgICAgICAgICAgICAgZXJyb3JMYWJlbENvbnRhaW5lcjogZShbXSksCiAgICAgICAgICAgICAgICBvbnN1Ym1pdDogITAsCiAgICAgICAgICAgICAgICBpZ25vcmU6ICI6aGlkZGVuIiwKICAgICAgICAgICAgICAgIGlnbm9yZVRpdGxlOiAhMSwKICAgICAgICAgICAgICAgIG9uZm9jdXNpbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZSA9IGUsIHRoaXMuc2V0dGluZ3MuZm9jdXNDbGVhbnVwICYmICh0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0ICYmIHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLCBlLCB0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsIHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyksIHRoaXMuaGlkZVRoZXNlKHRoaXMuZXJyb3JzRm9yKGUpKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbmZvY3Vzb3V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2FibGUoZSkgfHwgIShlLm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQpICYmIHRoaXMub3B0aW9uYWwoZSkgfHwgdGhpcy5lbGVtZW50KGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25rZXl1cDogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIDkgPT09IG4ud2hpY2ggJiYgIiIgPT09IHRoaXMuZWxlbWVudFZhbHVlKHQpIHx8IC0xICE9PSBlLmluQXJyYXkobi5rZXlDb2RlLCBbMTYsIDE3LCAxOCwgMjAsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQ1LCAxNDQsIDIyNV0pIHx8ICh0Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQgfHwgdC5uYW1lIGluIHRoaXMuaW52YWxpZCkgJiYgdGhpcy5lbGVtZW50KHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25jbGljazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCA/IHRoaXMuZWxlbWVudChlKSA6IGUucGFyZW50Tm9kZS5uYW1lIGluIHRoaXMuc3VibWl0dGVkICYmIHRoaXMuZWxlbWVudChlLnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgInJhZGlvIiA9PT0gdC50eXBlID8gdGhpcy5maW5kQnlOYW1lKHQubmFtZSkuYWRkQ2xhc3MobikucmVtb3ZlQ2xhc3MoaSkgOiBlKHQpLmFkZENsYXNzKG4pLnJlbW92ZUNsYXNzKGkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQ6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAicmFkaW8iID09PSB0LnR5cGUgPyB0aGlzLmZpbmRCeU5hbWUodC5uYW1lKS5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhpKSA6IGUodCkucmVtb3ZlQ2xhc3MobikuYWRkQ2xhc3MoaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0RGVmYXVsdHM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGUuZXh0ZW5kKGUudmFsaWRhdG9yLmRlZmF1bHRzLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICBtZXNzYWdlczogewogICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIsCiAgICAgICAgICAgICAgICByZW1vdGU6ICJQbGVhc2UgZml4IHRoaXMgZmllbGQuIiwKICAgICAgICAgICAgICAgIGVtYWlsOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iLAogICAgICAgICAgICAgICAgdXJsOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLiIsCiAgICAgICAgICAgICAgICBkYXRlOiAiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZS4iLAogICAgICAgICAgICAgICAgZGF0ZUlTTzogIlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuIiwKICAgICAgICAgICAgICAgIG51bWJlcjogIlBsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlci4iLAogICAgICAgICAgICAgICAgZGlnaXRzOiAiUGxlYXNlIGVudGVyIG9ubHkgZGlnaXRzLiIsCiAgICAgICAgICAgICAgICBlcXVhbFRvOiAiUGxlYXNlIGVudGVyIHRoZSBzYW1lIHZhbHVlIGFnYWluLiIsCiAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IGUudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIG5vIG1vcmUgdGhhbiB7MH0gY2hhcmFjdGVycy4iKSwKICAgICAgICAgICAgICAgIG1pbmxlbmd0aDogZS52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYXQgbGVhc3QgezB9IGNoYXJhY3RlcnMuIiksCiAgICAgICAgICAgICAgICByYW5nZWxlbmd0aDogZS52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9IGNoYXJhY3RlcnMgbG9uZy4iKSwKICAgICAgICAgICAgICAgIHJhbmdlOiBlLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0uIiksCiAgICAgICAgICAgICAgICBtYXg6IGUudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHswfS4iKSwKICAgICAgICAgICAgICAgIG1pbjogZS52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpLAogICAgICAgICAgICAgICAgc3RlcDogZS52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSBtdWx0aXBsZSBvZiB7MH0uIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXV0b0NyZWF0ZVJhbmdlczogITEsCiAgICAgICAgICAgIHByb3RvdHlwZTogewogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdm9pZCAwICE9PSBlKHRoaXMpLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpICYmICJmYWxzZSIgIT09IGUodGhpcykuYXR0cigiY29udGVudGVkaXRhYmxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3JtICYmIG4gJiYgKHRoaXMuZm9ybSA9IGUodGhpcykuY2xvc2VzdCgiZm9ybSIpWzBdLCB0aGlzLm5hbWUgPSBlKHRoaXMpLmF0dHIoIm5hbWUiKSksIGkgPT09IHRoaXMuZm9ybSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmRhdGEodGhpcy5mb3JtLCAidmFsaWRhdG9yIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICJvbiIgKyB0LnR5cGUucmVwbGFjZSgvXnZhbGlkYXRlLywgIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByLnNldHRpbmdzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtvXSAmJiAhZSh0aGlzKS5pcyhhLmlnbm9yZSkgJiYgYVtvXS5jYWxsKHIsIHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbENvbnRhaW5lciA9IGUodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKSwgdGhpcy5lcnJvckNvbnRleHQgPSB0aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCAmJiB0aGlzLmxhYmVsQ29udGFpbmVyIHx8IGUodGhpcy5jdXJyZW50Rm9ybSksIHRoaXMuY29udGFpbmVycyA9IGUodGhpcy5zZXR0aW5ncy5lcnJvckNvbnRhaW5lcikuYWRkKHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lciksIHRoaXMuc3VibWl0dGVkID0ge30sIHRoaXMudmFsdWVDYWNoZSA9IHt9LCB0aGlzLnBlbmRpbmdSZXF1ZXN0ID0gMCwgdGhpcy5wZW5kaW5nID0ge30sIHRoaXMuaW52YWxpZCA9IHt9LCB0aGlzLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGkgPSB0aGlzLmN1cnJlbnRGb3JtLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5ncm91cHMgPSB7fTsKICAgICAgICAgICAgICAgICAgICBlLmVhY2godGhpcy5zZXR0aW5ncy5ncm91cHMsIChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBuICYmIChuID0gbi5zcGxpdCgvXHMvKSksIGUuZWFjaChuLCAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcltuXSA9IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBuID0gdGhpcy5zZXR0aW5ncy5ydWxlcywgZS5lYWNoKG4sIChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5bdF0gPSBlLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCBlKHRoaXMuY3VycmVudEZvcm0pLm9uKCJmb2N1c2luLnZhbGlkYXRlIGZvY3Vzb3V0LnZhbGlkYXRlIGtleXVwLnZhbGlkYXRlIiwgIjp0ZXh0LCBbdHlwZT0ncGFzc3dvcmQnXSwgW3R5cGU9J2ZpbGUnXSwgc2VsZWN0LCB0ZXh0YXJlYSwgW3R5cGU9J251bWJlciddLCBbdHlwZT0nc2VhcmNoJ10sIFt0eXBlPSd0ZWwnXSwgW3R5cGU9J3VybCddLCBbdHlwZT0nZW1haWwnXSwgW3R5cGU9J2RhdGV0aW1lJ10sIFt0eXBlPSdkYXRlJ10sIFt0eXBlPSdtb250aCddLCBbdHlwZT0nd2VlayddLCBbdHlwZT0ndGltZSddLCBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSwgW3R5cGU9J3JhbmdlJ10sIFt0eXBlPSdjb2xvciddLCBbdHlwZT0ncmFkaW8nXSwgW3R5cGU9J2NoZWNrYm94J10sIFtjb250ZW50ZWRpdGFibGVdLCBbdHlwZT0nYnV0dG9uJ10iLCB0KS5vbigiY2xpY2sudmFsaWRhdGUiLCAic2VsZWN0LCBvcHRpb24sIFt0eXBlPSdyYWRpbyddLCBbdHlwZT0nY2hlY2tib3gnXSIsIHQpLCB0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyICYmIGUodGhpcy5jdXJyZW50Rm9ybSkub24oImludmFsaWQtZm9ybS52YWxpZGF0ZSIsIHRoaXMuc2V0dGluZ3MuaW52YWxpZEhhbmRsZXIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZm9ybTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGb3JtKCksIGUuZXh0ZW5kKHRoaXMuc3VibWl0dGVkLCB0aGlzLmVycm9yTWFwKSwgdGhpcy5pbnZhbGlkID0gZS5leHRlbmQoe30sIHRoaXMuZXJyb3JNYXApLCB0aGlzLnZhbGlkKCkgfHwgZSh0aGlzLmN1cnJlbnRGb3JtKS50cmlnZ2VySGFuZGxlcigiaW52YWxpZC1mb3JtIiwgW3RoaXNdKSwgdGhpcy5zaG93RXJyb3JzKCksIHRoaXMudmFsaWQoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNoZWNrRm9ybTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybSgpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCB0ID0gdGhpcy5jdXJyZW50RWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCk7IHRbZV07IGUrKykgdGhpcy5jaGVjayh0W2VdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWxlbWVudDogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByID0gdGhpcy5jbGVhbih0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMudmFsaWRhdGlvblRhcmdldEZvcihyKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBvID8gZGVsZXRlIHRoaXMuaW52YWxpZFtyLm5hbWVdIDogKHRoaXMucHJlcGFyZUVsZW1lbnQobyksIHRoaXMuY3VycmVudEVsZW1lbnRzID0gZShvKSwgKGkgPSB0aGlzLmdyb3Vwc1tvLm5hbWVdKSAmJiBlLmVhY2godGhpcy5ncm91cHMsIChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPT09IGkgJiYgZSAhPT0gby5uYW1lICYmICgociA9IGEudmFsaWRhdGlvblRhcmdldEZvcihhLmNsZWFuKGEuZmluZEJ5TmFtZShlKSkpKSAmJiByLm5hbWUgaW4gYS5pbnZhbGlkICYmIChhLmN1cnJlbnRFbGVtZW50cy5wdXNoKHIpLCBzID0gYS5jaGVjayhyKSAmJiBzKSkKICAgICAgICAgICAgICAgICAgICB9KSksIG4gPSAhMSAhPT0gdGhpcy5jaGVjayhvKSwgcyA9IHMgJiYgbiwgdGhpcy5pbnZhbGlkW28ubmFtZV0gPSAhbiwgdGhpcy5udW1iZXJPZkludmFsaWRzKCkgfHwgKHRoaXMudG9IaWRlID0gdGhpcy50b0hpZGUuYWRkKHRoaXMuY29udGFpbmVycykpLCB0aGlzLnNob3dFcnJvcnMoKSwgZSh0KS5hdHRyKCJhcmlhLWludmFsaWQiLCAhbikpLCBzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2hvd0Vycm9yczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgZS5leHRlbmQodGhpcy5lcnJvck1hcCwgdCksIHRoaXMuZXJyb3JMaXN0ID0gZS5tYXAodGhpcy5lcnJvck1hcCwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBuLmZpbmRCeU5hbWUodClbMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLnN1Y2Nlc3NMaXN0ID0gZS5ncmVwKHRoaXMuc3VjY2Vzc0xpc3QsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShlLm5hbWUgaW4gdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycyA/IHRoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycy5jYWxsKHRoaXMsIHRoaXMuZXJyb3JNYXAsIHRoaXMuZXJyb3JMaXN0KSA6IHRoaXMuZGVmYXVsdFNob3dFcnJvcnMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc2V0Rm9ybTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZS5mbi5yZXNldEZvcm0gJiYgZSh0aGlzLmN1cnJlbnRGb3JtKS5yZXNldEZvcm0oKSwgdGhpcy5pbnZhbGlkID0ge30sIHRoaXMuc3VibWl0dGVkID0ge30sIHRoaXMucHJlcGFyZUZvcm0oKSwgdGhpcy5oaWRlRXJyb3JzKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmVsZW1lbnRzKCkucmVtb3ZlRGF0YSgicHJldmlvdXNWYWx1ZSIpLnJlbW92ZUF0dHIoImFyaWEtaW52YWxpZCIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRFbGVtZW50cyh0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc2V0RWxlbWVudHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgZVt0XTsgdCsrKSB0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0LmNhbGwodGhpcywgZVt0XSwgdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCAiIiksIHRoaXMuZmluZEJ5TmFtZShlW3RdLm5hbWUpLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBlLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG51bWJlck9mSW52YWxpZHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdExlbmd0aCh0aGlzLmludmFsaWQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2JqZWN0TGVuZ3RoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKSB2b2lkIDAgIT09IGVbdF0gJiYgbnVsbCAhPT0gZVt0XSAmJiAhMSAhPT0gZVt0XSAmJiBuKys7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoaWRlRXJyb3JzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaGVzZSh0aGlzLnRvSGlkZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoaWRlVGhlc2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLm5vdCh0aGlzLmNvbnRhaW5lcnMpLnRleHQoIiIpLCB0aGlzLmFkZFdyYXBwZXIoZSkuaGlkZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdmFsaWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSB0aGlzLnNpemUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yTGlzdC5sZW5ndGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBmb2N1c0ludmFsaWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmZvY3VzSW52YWxpZCkgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZSh0aGlzLmZpbmRMYXN0QWN0aXZlKCkgfHwgdGhpcy5lcnJvckxpc3QubGVuZ3RoICYmIHRoaXMuZXJyb3JMaXN0WzBdLmVsZW1lbnQgfHwgW10pLmZpbHRlcigiOnZpc2libGUiKS50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoImZvY3VzaW4iKQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmluZExhc3RBY3RpdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5sYXN0QWN0aXZlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIDEgPT09IGUuZ3JlcCh0aGlzLmVycm9yTGlzdCwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuZWxlbWVudC5uYW1lID09PSB0Lm5hbWUKICAgICAgICAgICAgICAgICAgICB9KSkubGVuZ3RoICYmIHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcy5jdXJyZW50Rm9ybSkuZmluZCgiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtjb250ZW50ZWRpdGFibGVdIikubm90KCI6c3VibWl0LCA6cmVzZXQsIDppbWFnZSwgOmRpc2FibGVkIikubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKS5maWx0ZXIoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMubmFtZSB8fCBlKHRoaXMpLmF0dHIoIm5hbWUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB2b2lkIDAgIT09IGUodGhpcykuYXR0cigiY29udGVudGVkaXRhYmxlIikgJiYgImZhbHNlIiAhPT0gZSh0aGlzKS5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpICYmIHQuc2V0dGluZ3MuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS5lcnJvcigiJW8gaGFzIG5vIG5hbWUgYXNzaWduZWQiLCB0aGlzKSwgciAmJiAodGhpcy5mb3JtID0gZSh0aGlzKS5jbG9zZXN0KCJmb3JtIilbMF0sIHRoaXMubmFtZSA9IGkpLCAhKHRoaXMuZm9ybSAhPT0gdC5jdXJyZW50Rm9ybSB8fCBpIGluIG4gfHwgIXQub2JqZWN0TGVuZ3RoKGUodGhpcykucnVsZXMoKSkgfHwgKG5baV0gPSAhMCwgMCkpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0KVswXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVycm9yczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3Muc3BsaXQoIiAiKS5qb2luKCIuIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQgKyAiLiIgKyB0LCB0aGlzLmVycm9yQ29udGV4dCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXNldEludGVybmFsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzTGlzdCA9IFtdLCB0aGlzLmVycm9yTGlzdCA9IFtdLCB0aGlzLmVycm9yTWFwID0ge30sIHRoaXMudG9TaG93ID0gZShbXSksIHRoaXMudG9IaWRlID0gZShbXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEludGVybmFscygpLCB0aGlzLmN1cnJlbnRFbGVtZW50cyA9IGUoW10pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcHJlcGFyZUZvcm06IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKSwgdGhpcy50b0hpZGUgPSB0aGlzLmVycm9ycygpLmFkZCh0aGlzLmNvbnRhaW5lcnMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcHJlcGFyZUVsZW1lbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCksIHRoaXMudG9IaWRlID0gdGhpcy5lcnJvcnNGb3IoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbGVtZW50VmFsdWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciA9IGUodCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB2b2lkIDAgIT09IHIuYXR0cigiY29udGVudGVkaXRhYmxlIikgJiYgImZhbHNlIiAhPT0gci5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJhZGlvIiA9PT0gbyB8fCAiY2hlY2tib3giID09PSBvID8gdGhpcy5maW5kQnlOYW1lKHQubmFtZSkuZmlsdGVyKCI6Y2hlY2tlZCIpLnZhbCgpIDogIm51bWJlciIgPT09IG8gJiYgdm9pZCAwICE9PSB0LnZhbGlkaXR5ID8gdC52YWxpZGl0eS5iYWRJbnB1dCA/ICJOYU4iIDogci52YWwoKSA6IChuID0gYSA/IHIudGV4dCgpIDogci52YWwoKSwgImZpbGUiID09PSBvID8gIkM6XFxmYWtlcGF0aFxcIiA9PT0gbi5zdWJzdHIoMCwgMTIpID8gbi5zdWJzdHIoMTIpIDogKGkgPSBuLmxhc3RJbmRleE9mKCIvIikpID49IDAgPyBuLnN1YnN0cihpICsgMSkgOiAoaSA9IG4ubGFzdEluZGV4T2YoIlxcIikpID49IDAgPyBuLnN1YnN0cihpICsgMSkgOiBuIDogInN0cmluZyIgPT0gdHlwZW9mIG4gPyBuLnJlcGxhY2UoL1xyL2csICIiKSA6IG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2hlY2s6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKHRoaXMuY2xlYW4odCkpOwogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByLCBvLCBhID0gZSh0KS5ydWxlcygpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5tYXAoYSwgKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRoaXMuZWxlbWVudFZhbHVlKHQpOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiAiZnVuY3Rpb24iID09IHR5cGVvZiBhLm5vcm1hbGl6ZXIgPyBvID0gYS5ub3JtYWxpemVyIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5zZXR0aW5ncy5ub3JtYWxpemVyICYmIChvID0gdGhpcy5zZXR0aW5ncy5ub3JtYWxpemVyKSwgbyAmJiAoYyA9IG8uY2FsbCh0LCBjKSwgZGVsZXRlIGEubm9ybWFsaXplciksIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IGFbaV0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZGVwZW5kZW5jeS1taXNtYXRjaCIgPT09IChuID0gZS52YWxpZGF0b3IubWV0aG9kc1tpXS5jYWxsKHRoaXMsIGMsIHQsIHIucGFyYW1ldGVycykpICYmIDEgPT09IHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID0gITEsICJwZW5kaW5nIiA9PT0gbikgcmV0dXJuIHZvaWQodGhpcy50b0hpZGUgPSB0aGlzLnRvSGlkZS5ub3QodGhpcy5lcnJvcnNGb3IodCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbikgcmV0dXJuIHRoaXMuZm9ybWF0QW5kQWRkKHQsIHIpLCAhMQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLnNldHRpbmdzLmRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUubG9nKCJFeGNlcHRpb24gb2NjdXJyZWQgd2hlbiBjaGVja2luZyBlbGVtZW50ICIgKyB0LmlkICsgIiwgY2hlY2sgdGhlICciICsgci5tZXRob2QgKyAiJyBtZXRob2QuIiwgZSksIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgKGUubWVzc2FnZSArPSAiLiAgRXhjZXB0aW9uIG9jY3VycmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCAiICsgdC5pZCArICIsIGNoZWNrIHRoZSAnIiArIHIubWV0aG9kICsgIicgbWV0aG9kLiIpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSByZXR1cm4gdGhpcy5vYmplY3RMZW5ndGgoYSkgJiYgdGhpcy5zdWNjZXNzTGlzdC5wdXNoKHQpLCAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGN1c3RvbURhdGFNZXNzYWdlOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodCkuZGF0YSgibXNnIiArIG4uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuLnN1YnN0cmluZygxKS50b0xvd2VyQ2FzZSgpKSB8fCBlKHQpLmRhdGEoIm1zZyIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY3VzdG9tTWVzc2FnZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tlXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiAobi5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nID8gbiA6IG5bdF0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZmluZERlZmluZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBhcmd1bWVudHNbZV0pIHJldHVybiBhcmd1bWVudHNbZV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBuICYmIChuID0gewogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG4KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMuZmluZERlZmluZWQodGhpcy5jdXN0b21NZXNzYWdlKHQubmFtZSwgbi5tZXRob2QpLCB0aGlzLmN1c3RvbURhdGFNZXNzYWdlKHQsIG4ubWV0aG9kKSwgIXRoaXMuc2V0dGluZ3MuaWdub3JlVGl0bGUgJiYgdC50aXRsZSB8fCB2b2lkIDAsIGUudmFsaWRhdG9yLm1lc3NhZ2VzW24ubWV0aG9kXSwgIjxzdHJvbmc+V2FybmluZzogTm8gbWVzc2FnZSBkZWZpbmVkIGZvciAiICsgdC5uYW1lICsgIjwvc3Ryb25nPiIpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gL1wkP1x7KFxkKylcfS9nOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBpID8gaSA9IGkuY2FsbCh0aGlzLCBuLnBhcmFtZXRlcnMsIHQpIDogci50ZXN0KGkpICYmIChpID0gZS52YWxpZGF0b3IuZm9ybWF0KGkucmVwbGFjZShyLCAieyQxfSIpLCBuLnBhcmFtZXRlcnMpKSwgaQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZvcm1hdEFuZEFkZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5kZWZhdWx0TWVzc2FnZShlLCB0KTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTGlzdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0Lm1ldGhvZAogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmVycm9yTWFwW2UubmFtZV0gPSBuLCB0aGlzLnN1Ym1pdHRlZFtlLm5hbWVdID0gbgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZFdyYXBwZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy53cmFwcGVyICYmIChlID0gZS5hZGQoZS5wYXJlbnQodGhpcy5zZXR0aW5ncy53cmFwcGVyKSkpLCBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVmYXVsdFNob3dFcnJvcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuOwogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IHRoaXMuZXJyb3JMaXN0W2VdOyBlKyspIG4gPSB0aGlzLmVycm9yTGlzdFtlXSwgdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQgJiYgdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQuY2FsbCh0aGlzLCBuLmVsZW1lbnQsIHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcywgdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKSwgdGhpcy5zaG93TGFiZWwobi5lbGVtZW50LCBuLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVycm9yTGlzdC5sZW5ndGggJiYgKHRoaXMudG9TaG93ID0gdGhpcy50b1Nob3cuYWRkKHRoaXMuY29udGFpbmVycykpLCB0aGlzLnNldHRpbmdzLnN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IHRoaXMuc3VjY2Vzc0xpc3RbZV07IGUrKykgdGhpcy5zaG93TGFiZWwodGhpcy5zdWNjZXNzTGlzdFtlXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDAsIHQgPSB0aGlzLnZhbGlkRWxlbWVudHMoKTsgdFtlXTsgZSsrKSB0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0LmNhbGwodGhpcywgdFtlXSwgdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCB0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudG9IaWRlID0gdGhpcy50b0hpZGUubm90KHRoaXMudG9TaG93KSwgdGhpcy5oaWRlRXJyb3JzKCksIHRoaXMuYWRkV3JhcHBlcih0aGlzLnRvU2hvdykuc2hvdygpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdmFsaWRFbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEVsZW1lbnRzLm5vdCh0aGlzLmludmFsaWRFbGVtZW50cygpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGludmFsaWRFbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUodGhpcy5lcnJvckxpc3QpLm1hcCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcyA9IHRoaXMuZXJyb3JzRm9yKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdGhpcy5pZE9yTmFtZSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUodCkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpOwogICAgICAgICAgICAgICAgICAgIHMubGVuZ3RoID8gKHMucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpLCBzLmh0bWwobikpIDogKGkgPSBzID0gZSgiPCIgKyB0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCArICI+IikuYXR0cigiaWQiLCBsICsgIi1lcnJvciIpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykuaHRtbChuIHx8ICIiKSwgdGhpcy5zZXR0aW5ncy53cmFwcGVyICYmIChpID0gcy5oaWRlKCkuc2hvdygpLndyYXAoIjwiICsgdGhpcy5zZXR0aW5ncy53cmFwcGVyICsgIi8+IikucGFyZW50KCkpLCB0aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCA/IHRoaXMubGFiZWxDb250YWluZXIuYXBwZW5kKGkpIDogdGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudCA/IHRoaXMuc2V0dGluZ3MuZXJyb3JQbGFjZW1lbnQuY2FsbCh0aGlzLCBpLCBlKHQpKSA6IGkuaW5zZXJ0QWZ0ZXIodCksIHMuaXMoImxhYmVsIikgPyBzLmF0dHIoImZvciIsIGwpIDogMCA9PT0gcy5wYXJlbnRzKCJsYWJlbFtmb3I9JyIgKyB0aGlzLmVzY2FwZUNzc01ldGEobCkgKyAiJ10iKS5sZW5ndGggJiYgKG8gPSBzLmF0dHIoImlkIiksIGMgPyBjLm1hdGNoKG5ldyBSZWdFeHAoIlxcYiIgKyB0aGlzLmVzY2FwZUNzc01ldGEobykgKyAiXFxiIikpIHx8IChjICs9ICIgIiArIG8pIDogYyA9IG8sIGUodCkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsIGMpLCAociA9IHRoaXMuZ3JvdXBzW3QubmFtZV0pICYmIChhID0gdGhpcywgZS5lYWNoKGEuZ3JvdXBzLCAoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICBuID09PSByICYmIGUoIltuYW1lPSciICsgYS5lc2NhcGVDc3NNZXRhKHQpICsgIiddIiwgYS5jdXJyZW50Rm9ybSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsIHMuYXR0cigiaWQiKSkKICAgICAgICAgICAgICAgICAgICB9KSkpKSksICFuICYmIHRoaXMuc2V0dGluZ3Muc3VjY2VzcyAmJiAocy50ZXh0KCIiKSwgInN0cmluZyIgPT0gdHlwZW9mIHRoaXMuc2V0dGluZ3Muc3VjY2VzcyA/IHMuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5zdWNjZXNzKSA6IHRoaXMuc2V0dGluZ3Muc3VjY2VzcyhzLCB0KSksIHRoaXMudG9TaG93ID0gdGhpcy50b1Nob3cuYWRkKHMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXJyb3JzRm9yOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmVzY2FwZUNzc01ldGEodGhpcy5pZE9yTmFtZSh0KSksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlKHQpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICJsYWJlbFtmb3I9JyIgKyBuICsgIiddLCBsYWJlbFtmb3I9JyIgKyBuICsgIiddICoiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpICYmIChyID0gciArICIsICMiICsgdGhpcy5lc2NhcGVDc3NNZXRhKGkpLnJlcGxhY2UoL1xzKy9nLCAiLCAjIikpLCB0aGlzLmVycm9ycygpLmZpbHRlcihyKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVzY2FwZUNzc01ldGE6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gIiIgOiBlLnJlcGxhY2UoLyhbXFwhIiMkJSYnKCkqKywuLzo7PD0+P0BcW1xdXmB7fH1+XSkvZywgIlxcJDEiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlkT3JOYW1lOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBzW2UubmFtZV0gfHwgKHRoaXMuY2hlY2thYmxlKGUpID8gZS5uYW1lIDogZS5pZCB8fCBlLm5hbWUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdmFsaWRhdGlvblRhcmdldEZvcjogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrYWJsZSh0KSAmJiAodCA9IHRoaXMuZmluZEJ5TmFtZSh0Lm5hbWUpKSwgZSh0KS5ub3QodGhpcy5zZXR0aW5ncy5pZ25vcmUpWzBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2hlY2thYmxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9yYWRpb3xjaGVja2JveC9pLnRlc3QoZS50eXBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpbmRCeU5hbWU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSh0aGlzLmN1cnJlbnRGb3JtKS5maW5kKCJbbmFtZT0nIiArIHRoaXMuZXNjYXBlQ3NzTWV0YSh0KSArICInXSIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0TGVuZ3RoOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VsZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKCJvcHRpb246c2VsZWN0ZWQiLCBuKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImlucHV0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrYWJsZShuKSkgcmV0dXJuIHRoaXMuZmluZEJ5TmFtZShuLm5hbWUpLmZpbHRlcigiOmNoZWNrZWQiKS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGVuZ3RoCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVwZW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBlXSB8fCB0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBlXShlLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlcGVuZFR5cGVzOiB7CiAgICAgICAgICAgICAgICAgICAgYm9vbGVhbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWUodCwgbi5mb3JtKS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlKHQpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9wdGlvbmFsOiBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmVsZW1lbnRWYWx1ZSh0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWUudmFsaWRhdG9yLm1ldGhvZHMucmVxdWlyZWQuY2FsbCh0aGlzLCBuLCB0KSAmJiAiZGVwZW5kZW5jeS1taXNtYXRjaCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdGFydFJlcXVlc3Q6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdbdC5uYW1lXSB8fCAodGhpcy5wZW5kaW5nUmVxdWVzdCsrLCBlKHQpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MucGVuZGluZ0NsYXNzKSwgdGhpcy5wZW5kaW5nW3QubmFtZV0gPSAhMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdG9wUmVxdWVzdDogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ1JlcXVlc3QtLSwgdGhpcy5wZW5kaW5nUmVxdWVzdCA8IDAgJiYgKHRoaXMucGVuZGluZ1JlcXVlc3QgPSAwKSwgZGVsZXRlIHRoaXMucGVuZGluZ1t0Lm5hbWVdLCBlKHQpLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MucGVuZGluZ0NsYXNzKSwgbiAmJiAwID09PSB0aGlzLnBlbmRpbmdSZXF1ZXN0ICYmIHRoaXMuZm9ybVN1Ym1pdHRlZCAmJiB0aGlzLmZvcm0oKSAmJiAwID09PSB0aGlzLnBlbmRpbmdSZXF1ZXN0ID8gKGUodGhpcy5jdXJyZW50Rm9ybSkuc3VibWl0KCksIHRoaXMuc3VibWl0QnV0dG9uICYmIGUoImlucHV0OmhpZGRlbltuYW1lPSciICsgdGhpcy5zdWJtaXRCdXR0b24ubmFtZSArICInXSIsIHRoaXMuY3VycmVudEZvcm0pLnJlbW92ZSgpLCB0aGlzLmZvcm1TdWJtaXR0ZWQgPSAhMSkgOiAhbiAmJiAwID09PSB0aGlzLnBlbmRpbmdSZXF1ZXN0ICYmIHRoaXMuZm9ybVN1Ym1pdHRlZCAmJiAoZSh0aGlzLmN1cnJlbnRGb3JtKS50cmlnZ2VySGFuZGxlcigiaW52YWxpZC1mb3JtIiwgW3RoaXNdKSwgdGhpcy5mb3JtU3VibWl0dGVkID0gITEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID0gInN0cmluZyIgPT0gdHlwZW9mIG4gJiYgbiB8fCAicmVtb3RlIiwgZS5kYXRhKHQsICJwcmV2aW91c1ZhbHVlIikgfHwgZS5kYXRhKHQsICJwcmV2aW91c1ZhbHVlIiwgewogICAgICAgICAgICAgICAgICAgICAgICBvbGQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5kZWZhdWx0TWVzc2FnZSh0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG4KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCksIGUodGhpcy5jdXJyZW50Rm9ybSkub2ZmKCIudmFsaWRhdGUiKS5yZW1vdmVEYXRhKCJ2YWxpZGF0b3IiKS5maW5kKCIudmFsaWRhdGUtZXF1YWxUby1ibHVyIikub2ZmKCIudmFsaWRhdGUtZXF1YWxUbyIpLnJlbW92ZUNsYXNzKCJ2YWxpZGF0ZS1lcXVhbFRvLWJsdXIiKS5maW5kKCIudmFsaWRhdGUtbGVzc1RoYW4tYmx1ciIpLm9mZigiLnZhbGlkYXRlLWxlc3NUaGFuIikucmVtb3ZlQ2xhc3MoInZhbGlkYXRlLWxlc3NUaGFuLWJsdXIiKS5maW5kKCIudmFsaWRhdGUtbGVzc1RoYW5FcXVhbC1ibHVyIikub2ZmKCIudmFsaWRhdGUtbGVzc1RoYW5FcXVhbCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGF0ZS1sZXNzVGhhbkVxdWFsLWJsdXIiKS5maW5kKCIudmFsaWRhdGUtZ3JlYXRlclRoYW5FcXVhbC1ibHVyIikub2ZmKCIudmFsaWRhdGUtZ3JlYXRlclRoYW5FcXVhbCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGF0ZS1ncmVhdGVyVGhhbkVxdWFsLWJsdXIiKS5maW5kKCIudmFsaWRhdGUtZ3JlYXRlclRoYW4tYmx1ciIpLm9mZigiLnZhbGlkYXRlLWdyZWF0ZXJUaGFuIikucmVtb3ZlQ2xhc3MoInZhbGlkYXRlLWdyZWF0ZXJUaGFuLWJsdXIiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGFzc1J1bGVTZXR0aW5nczogewogICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHsKICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlbWFpbDogewogICAgICAgICAgICAgICAgICAgIGVtYWlsOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVybDogewogICAgICAgICAgICAgICAgICAgIHVybDogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXRlOiB7CiAgICAgICAgICAgICAgICAgICAgZGF0ZTogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXRlSVNPOiB7CiAgICAgICAgICAgICAgICAgICAgZGF0ZUlTTzogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBudW1iZXI6IHsKICAgICAgICAgICAgICAgICAgICBudW1iZXI6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGlnaXRzOiB7CiAgICAgICAgICAgICAgICAgICAgZGlnaXRzOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNyZWRpdGNhcmQ6IHsKICAgICAgICAgICAgICAgICAgICBjcmVkaXRjYXJkOiAhMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRDbGFzc1J1bGVzOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICB0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcgPyB0aGlzLmNsYXNzUnVsZVNldHRpbmdzW3RdID0gbiA6IGUuZXh0ZW5kKHRoaXMuY2xhc3NSdWxlU2V0dGluZ3MsIHQpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNsYXNzUnVsZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgaSA9IGUodCkuYXR0cigiY2xhc3MiKTsKICAgICAgICAgICAgICAgIHJldHVybiBpICYmIGUuZWFjaChpLnNwbGl0KCIgIiksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzIGluIGUudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzICYmIGUuZXh0ZW5kKG4sIGUudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzW3RoaXNdKQogICAgICAgICAgICAgICAgfSkpLCBuCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5vcm1hbGl6ZUF0dHJpYnV0ZVJ1bGU6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIC9taW58bWF4fHN0ZXAvLnRlc3QobikgJiYgKG51bGwgPT09IHQgfHwgL251bWJlcnxyYW5nZXx0ZXh0Ly50ZXN0KHQpKSAmJiAoaSA9IE51bWJlcihpKSwgaXNOYU4oaSkgJiYgKGkgPSB2b2lkIDApKSwgaSB8fCAwID09PSBpID8gZVtuXSA9IGkgOiB0ID09PSBuICYmICJyYW5nZSIgIT09IHQgJiYgKGVbImRhdGUiID09PSB0ID8gImRhdGVJU08iIDogbl0gPSAhMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXR0cmlidXRlUnVsZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBuLCBpLCByID0ge30sCiAgICAgICAgICAgICAgICAgICAgbyA9IGUodCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHQuZ2V0QXR0cmlidXRlKCJ0eXBlIik7CiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gZS52YWxpZGF0b3IubWV0aG9kcykgInJlcXVpcmVkIiA9PT0gbiA/ICgiIiA9PT0gKGkgPSB0LmdldEF0dHJpYnV0ZShuKSkgJiYgKGkgPSAhMCksIGkgPSAhIWkpIDogaSA9IG8uYXR0cihuKSwgdGhpcy5ub3JtYWxpemVBdHRyaWJ1dGVSdWxlKHIsIGEsIG4sIGkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHIubWF4bGVuZ3RoICYmIC8tMXwyMTQ3NDgzNjQ3fDUyNDI4OC8udGVzdChyLm1heGxlbmd0aCkgJiYgZGVsZXRlIHIubWF4bGVuZ3RoLCByCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhdGFSdWxlczogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGksIHIgPSB7fSwKICAgICAgICAgICAgICAgICAgICBvID0gZSh0KSwKICAgICAgICAgICAgICAgICAgICBhID0gdC5nZXRBdHRyaWJ1dGUoInR5cGUiKTsKICAgICAgICAgICAgICAgIGZvciAobiBpbiBlLnZhbGlkYXRvci5tZXRob2RzKSAiIiA9PT0gKGkgPSBvLmRhdGEoInJ1bGUiICsgbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG4uc3Vic3RyaW5nKDEpLnRvTG93ZXJDYXNlKCkpKSAmJiAoaSA9ICEwKSwgdGhpcy5ub3JtYWxpemVBdHRyaWJ1dGVSdWxlKHIsIGEsIG4sIGkpOwogICAgICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc3RhdGljUnVsZXM6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0ge30sCiAgICAgICAgICAgICAgICAgICAgaSA9IGUuZGF0YSh0LmZvcm0sICJ2YWxpZGF0b3IiKTsKICAgICAgICAgICAgICAgIHJldHVybiBpLnNldHRpbmdzLnJ1bGVzICYmIChuID0gZS52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShpLnNldHRpbmdzLnJ1bGVzW3QubmFtZV0pIHx8IHt9KSwgbgogICAgICAgICAgICB9LAogICAgICAgICAgICBub3JtYWxpemVSdWxlczogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuZWFjaCh0LCAoZnVuY3Rpb24oaSwgcikgewogICAgICAgICAgICAgICAgICAgIGlmICghMSAhPT0gcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5wYXJhbSB8fCByLmRlcGVuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiByLmRlcGVuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gISFlKHIuZGVwZW5kcywgbi5mb3JtKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIuZGVwZW5kcy5jYWxsKG4sIG4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID8gdFtpXSA9IHZvaWQgMCA9PT0gci5wYXJhbSB8fCByLnBhcmFtIDogKGUuZGF0YShuLmZvcm0sICJ2YWxpZGF0b3IiKS5yZXNldEVsZW1lbnRzKGUobikpLCBkZWxldGUgdFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBkZWxldGUgdFtpXQogICAgICAgICAgICAgICAgfSkpLCBlLmVhY2godCwgKGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICB0W2VdID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgaSAmJiAibm9ybWFsaXplciIgIT09IGUgPyBpKG4pIDogaQogICAgICAgICAgICAgICAgfSkpLCBlLmVhY2goWyJtaW5sZW5ndGgiLCAibWF4bGVuZ3RoIl0sIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0W3RoaXNdICYmICh0W3RoaXNdID0gTnVtYmVyKHRbdGhpc10pKQogICAgICAgICAgICAgICAgfSkpLCBlLmVhY2goWyJyYW5nZWxlbmd0aCIsICJyYW5nZSJdLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgICAgdFt0aGlzXSAmJiAoQXJyYXkuaXNBcnJheSh0W3RoaXNdKSA/IHRbdGhpc10gPSBbTnVtYmVyKHRbdGhpc11bMF0pLCBOdW1iZXIodFt0aGlzXVsxXSldIDogInN0cmluZyIgPT0gdHlwZW9mIHRbdGhpc10gJiYgKGUgPSB0W3RoaXNdLnJlcGxhY2UoL1tcW1xdXS9nLCAiIikuc3BsaXQoL1tccyxdKy8pLCB0W3RoaXNdID0gW051bWJlcihlWzBdKSwgTnVtYmVyKGVbMV0pXSkpCiAgICAgICAgICAgICAgICB9KSksIGUudmFsaWRhdG9yLmF1dG9DcmVhdGVSYW5nZXMgJiYgKG51bGwgIT0gdC5taW4gJiYgbnVsbCAhPSB0Lm1heCAmJiAodC5yYW5nZSA9IFt0Lm1pbiwgdC5tYXhdLCBkZWxldGUgdC5taW4sIGRlbGV0ZSB0Lm1heCksIG51bGwgIT0gdC5taW5sZW5ndGggJiYgbnVsbCAhPSB0Lm1heGxlbmd0aCAmJiAodC5yYW5nZWxlbmd0aCA9IFt0Lm1pbmxlbmd0aCwgdC5tYXhsZW5ndGhdLCBkZWxldGUgdC5taW5sZW5ndGgsIGRlbGV0ZSB0Lm1heGxlbmd0aCkpLCB0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5vcm1hbGl6ZVJ1bGU6IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgICAgICAgICAgZS5lYWNoKHQuc3BsaXQoL1xzLyksIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgblt0aGlzXSA9ICEwCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0ID0gbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkTWV0aG9kOiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICBlLnZhbGlkYXRvci5tZXRob2RzW3RdID0gbiwgZS52YWxpZGF0b3IubWVzc2FnZXNbdF0gPSB2b2lkIDAgIT09IGkgPyBpIDogZS52YWxpZGF0b3IubWVzc2FnZXNbdF0sIG4ubGVuZ3RoIDwgMyAmJiBlLnZhbGlkYXRvci5hZGRDbGFzc1J1bGVzKHQsIGUudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUodCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1ldGhvZHM6IHsKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcGVuZChpLCBuKSkgcmV0dXJuICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKICAgICAgICAgICAgICAgICAgICBpZiAoInNlbGVjdCIgPT09IG4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUobikudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByICYmIHIubGVuZ3RoID4gMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja2FibGUobikgPyB0aGlzLmdldExlbmd0aCh0LCBuKSA+IDAgOiBudWxsICE9IHQgJiYgdC5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZW1haWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCh0KSB8fCAvXlthLXpBLVowLTkuISMkJSYnKitcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8udGVzdChlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVybDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbmFsKHQpIHx8IC9eKD86KD86KD86aHR0cHM/fGZ0cCk6KT9cL1wvKSg/OlxTKyg/OjpcUyopP0ApPyg/Oig/ISg/OjEwfDEyNykoPzpcLlxkezEsM30pezN9KSg/ISg/OjE2OVwuMjU0fDE5MlwuMTY4KSg/OlwuXGR7MSwzfSl7Mn0pKD8hMTcyXC4oPzoxWzYtOV18MlxkfDNbMC0xXSkoPzpcLlxkezEsM30pezJ9KSg/OlsxLTldXGQ/fDFcZFxkfDJbMDFdXGR8MjJbMC0zXSkoPzpcLig/OjE/XGR7MSwyfXwyWzAtNF1cZHwyNVswLTVdKSl7Mn0oPzpcLig/OlsxLTldXGQ/fDFcZFxkfDJbMC00XVxkfDI1WzAtNF0pKXwoPzooPzpbYS16MC05XHUwMGExLVx1ZmZmZl1bYS16MC05XHUwMGExLVx1ZmZmZl8tXXswLDYyfSk/W2EtejAtOVx1MDBhMS1cdWZmZmZdXC4pKyg/OlthLXpcdTAwYTEtXHVmZmZmXXsyLH1cLj8pKSg/OjpcZHsyLDV9KT8oPzpbLz8jXVxTKik/JC9pLnRlc3QoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9ICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIHx8IChlID0gITAsIHRoaXMuc2V0dGluZ3MuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKCJUaGUgYGRhdGVgIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAnMi4wLjAnLlxuUGxlYXNlIGRvbid0IHVzZSBpdCwgc2luY2UgaXQgcmVsaWVzIG9uIHRoZSBEYXRlIGNvbnN0cnVjdG9yLCB3aGljaFxuYmVoYXZlcyB2ZXJ5IGRpZmZlcmVudGx5IGFjcm9zcyBicm93c2VycyBhbmQgbG9jYWxlcy4gVXNlIGBkYXRlSVNPYFxuaW5zdGVhZCBvciBvbmUgb2YgdGhlIGxvY2FsZSBzcGVjaWZpYyBtZXRob2RzIGluIGBsb2NhbGl6YXRpb25zL2BcbmFuZCBgYWRkaXRpb25hbC1tZXRob2RzLmpzYC4iKSksIHRoaXMub3B0aW9uYWwobikgfHwgIS9JbnZhbGlkfE5hTi8udGVzdChuZXcgRGF0ZSh0KS50b1N0cmluZygpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgIGRhdGVJU086IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCh0KSB8fCAvXlxkezR9W1wvXC1dKDA/WzEtOV18MVswMTJdKVtcL1wtXSgwP1sxLTldfFsxMl1bMC05XXwzWzAxXSkkLy50ZXN0KGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbnVtYmVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uYWwodCkgfHwgL14oPzotP1xkK3wtP1xkezEsM30oPzosXGR7M30pKyk/KD86XC5cZCspPyQvLnRlc3QoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkaWdpdHM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCh0KSB8fCAvXlxkKyQvLnRlc3QoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoZSkgPyBlLmxlbmd0aCA6IHRoaXMuZ2V0TGVuZ3RoKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbmFsKHQpIHx8IGkgPj0gbgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1heGxlbmd0aDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShlKSA/IGUubGVuZ3RoIDogdGhpcy5nZXRMZW5ndGgoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uYWwodCkgfHwgaSA8PSBuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmFuZ2VsZW5ndGg6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoZSkgPyBlLmxlbmd0aCA6IHRoaXMuZ2V0TGVuZ3RoKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbmFsKHQpIHx8IGkgPj0gblswXSAmJiBpIDw9IG5bMV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtaW46IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCh0KSB8fCBlID49IG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtYXg6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCh0KSB8fCBlIDw9IG4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByYW5nZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbmFsKHQpIHx8IGUgPj0gblswXSAmJiBlIDw9IG5bMV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBlKG4pLmF0dHIoInR5cGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICJTdGVwIGF0dHJpYnV0ZSBvbiBpbnB1dCB0eXBlICIgKyBvICsgIiBpcyBub3Qgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuZXcgUmVnRXhwKCJcXGIiICsgbyArICJcXGIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKCIiICsgZSkubWF0Y2goLyg/OlwuKFxkKykpPyQvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHRbMV0gPyB0WzFdLmxlbmd0aCA6IDAKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKGUgKiBNYXRoLnBvdygxMCwgcikpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAhMDsKICAgICAgICAgICAgICAgICAgICBpZiAobyAmJiAhcy50ZXN0KFsidGV4dCIsICJudW1iZXIiLCAicmFuZ2UiXS5qb2luKCkpKSB0aHJvdyBuZXcgRXJyb3IoYSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIgPSBsKGkpLCAobCh0KSA+IHIgfHwgYyh0KSAlIGMoaSkgIT0gMCkgJiYgKHUgPSAhMSksIHRoaXMub3B0aW9uYWwobikgfHwgdQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVxdWFsVG86IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUoaSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Mub25mb2N1c291dCAmJiByLm5vdCgiLnZhbGlkYXRlLWVxdWFsVG8tYmx1ciIpLmxlbmd0aCAmJiByLmFkZENsYXNzKCJ2YWxpZGF0ZS1lcXVhbFRvLWJsdXIiKS5vbigiYmx1ci52YWxpZGF0ZS1lcXVhbFRvIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlKG4pLnZhbGlkKCkKICAgICAgICAgICAgICAgICAgICB9KSksIHQgPT09IHIudmFsKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZW1vdGU6IGZ1bmN0aW9uKHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25hbChuKSkgcmV0dXJuICJkZXBlbmRlbmN5LW1pc21hdGNoIjsKICAgICAgICAgICAgICAgICAgICByID0gInN0cmluZyIgPT0gdHlwZW9mIHIgJiYgciB8fCAicmVtb3RlIjsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgcywgbCA9IHRoaXMucHJldmlvdXNWYWx1ZShuLCByKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tuLm5hbWVdIHx8ICh0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW24ubmFtZV0gPSB7fSksIGwub3JpZ2luYWxNZXNzYWdlID0gbC5vcmlnaW5hbE1lc3NhZ2UgfHwgdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tuLm5hbWVdW3JdLCB0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW24ubmFtZV1bcl0gPSBsLm1lc3NhZ2UsIGkgPSAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaQogICAgICAgICAgICAgICAgICAgIH0gfHwgaSwgcyA9IGUucGFyYW0oZS5leHRlbmQoewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0CiAgICAgICAgICAgICAgICAgICAgfSwgaS5kYXRhKSksIGwub2xkID09PSBzID8gbC52YWxpZCA6IChsLm9sZCA9IHMsIG8gPSB0aGlzLCB0aGlzLnN0YXJ0UmVxdWVzdChuKSwgKGEgPSB7fSlbbi5uYW1lXSA9IHQsIGUuYWpheChlLmV4dGVuZCghMCwgewogICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiAiYWJvcnQiLAogICAgICAgICAgICAgICAgICAgICAgICBwb3J0OiAidmFsaWRhdGUiICsgbi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBhLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBvLmN1cnJlbnRGb3JtLAogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgYSwgcywgYyA9ICEwID09PSBlIHx8ICJ0cnVlIiA9PT0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc2V0dGluZ3MubWVzc2FnZXNbbi5uYW1lXVtyXSA9IGwub3JpZ2luYWxNZXNzYWdlLCBjID8gKHMgPSBvLmZvcm1TdWJtaXR0ZWQsIG8ucmVzZXRJbnRlcm5hbHMoKSwgby50b0hpZGUgPSBvLmVycm9yc0ZvcihuKSwgby5mb3JtU3VibWl0dGVkID0gcywgby5zdWNjZXNzTGlzdC5wdXNoKG4pLCBvLmludmFsaWRbbi5uYW1lXSA9ICExLCBvLnNob3dFcnJvcnMoKSkgOiAoaSA9IHt9LCBhID0gZSB8fCBvLmRlZmF1bHRNZXNzYWdlKG4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGlbbi5uYW1lXSA9IGwubWVzc2FnZSA9IGEsIG8uaW52YWxpZFtuLm5hbWVdID0gITAsIG8uc2hvd0Vycm9ycyhpKSksIGwudmFsaWQgPSBjLCBvLnN0b3BSZXF1ZXN0KG4sIGMpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBpKSksICJwZW5kaW5nIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBuLCBpID0ge307CiAgICAgICAgcmV0dXJuIGUuYWpheFByZWZpbHRlciA/IGUuYWpheFByZWZpbHRlcigoZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgciA9IGUucG9ydDsKICAgICAgICAgICAgImFib3J0IiA9PT0gZS5tb2RlICYmIChpW3JdICYmIGlbcl0uYWJvcnQoKSwgaVtyXSA9IG4pCiAgICAgICAgfSkpIDogKG4gPSBlLmFqYXgsIGUuYWpheCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIHIgPSAoIm1vZGUiIGluIHQgPyB0IDogZS5hamF4U2V0dGluZ3MpLm1vZGUsCiAgICAgICAgICAgICAgICBvID0gKCJwb3J0IiBpbiB0ID8gdCA6IGUuYWpheFNldHRpbmdzKS5wb3J0OwogICAgICAgICAgICByZXR1cm4gImFib3J0IiA9PT0gciA/IChpW29dICYmIGlbb10uYWJvcnQoKSwgaVtvXSA9IG4uYXBwbHkodGhpcywgYXJndW1lbnRzKSwgaVtvXSkgOiBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9KSwgZQogICAgfSkpLAogICAgZnVuY3Rpb24oZSkgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImpxdWVyeSJdLCBlKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBleHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBlKHJlcXVpcmUoImpxdWVyeSIpKSA6IGUoalF1ZXJ5KQogICAgfSgoZnVuY3Rpb24oZSkgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICB2YXIgdCA9IHdpbmRvdy5TbGljayB8fCB7fTsKICAgICAgICAodCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IDA7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgICAgICB2YXIgciwgbyA9IHRoaXM7CiAgICAgICAgICAgICAgICBvLmRlZmF1bHRzID0gewogICAgICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6ICEwLAogICAgICAgICAgICAgICAgICAgIGFkYXB0aXZlSGVpZ2h0OiAhMSwKICAgICAgICAgICAgICAgICAgICBhcHBlbmRBcnJvd3M6IGUobiksCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kRG90czogZShuKSwKICAgICAgICAgICAgICAgICAgICBhcnJvd3M6ICEwLAogICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHByZXZBcnJvdzogJzxidXR0b24gY2xhc3M9InNsaWNrLXByZXYiIGFyaWEtbGFiZWw9IlByZXZpb3VzIiB0eXBlPSJidXR0b24iPlByZXZpb3VzPC9idXR0b24+JywKICAgICAgICAgICAgICAgICAgICBuZXh0QXJyb3c6ICc8YnV0dG9uIGNsYXNzPSJzbGljay1uZXh0IiBhcmlhLWxhYmVsPSJOZXh0IiB0eXBlPSJidXR0b24iPk5leHQ8L2J1dHRvbj4nLAogICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiAhMSwKICAgICAgICAgICAgICAgICAgICBhdXRvcGxheVNwZWVkOiAzZTMsCiAgICAgICAgICAgICAgICAgICAgY2VudGVyTW9kZTogITEsCiAgICAgICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogIjUwcHgiLAogICAgICAgICAgICAgICAgICAgIGNzc0Vhc2U6ICJlYXNlIiwKICAgICAgICAgICAgICAgICAgICBjdXN0b21QYWdpbmc6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUoJzxidXR0b24gdHlwZT0iYnV0dG9uIiAvPicpLnRleHQobiArIDEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkb3RzOiAhMSwKICAgICAgICAgICAgICAgICAgICBkb3RzQ2xhc3M6ICJzbGljay1kb3RzIiwKICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGVhc2luZzogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgZWRnZUZyaWN0aW9uOiAuMzUsCiAgICAgICAgICAgICAgICAgICAgZmFkZTogITEsCiAgICAgICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogITEsCiAgICAgICAgICAgICAgICAgICAgZm9jdXNPbkNoYW5nZTogITEsCiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGluaXRpYWxTbGlkZTogMCwKICAgICAgICAgICAgICAgICAgICBsYXp5TG9hZDogIm9uZGVtYW5kIiwKICAgICAgICAgICAgICAgICAgICBtb2JpbGVGaXJzdDogITEsCiAgICAgICAgICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiAhMCwKICAgICAgICAgICAgICAgICAgICBwYXVzZU9uRm9jdXM6ICEwLAogICAgICAgICAgICAgICAgICAgIHBhdXNlT25Eb3RzSG92ZXI6ICExLAogICAgICAgICAgICAgICAgICAgIHJlc3BvbmRUbzogIndpbmRvdyIsCiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICByb3dzOiAxLAogICAgICAgICAgICAgICAgICAgIHJ0bDogITEsCiAgICAgICAgICAgICAgICAgICAgc2xpZGU6ICIiLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclJvdzogMSwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsCiAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDUwMCwKICAgICAgICAgICAgICAgICAgICBzd2lwZTogITAsCiAgICAgICAgICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiAhMSwKICAgICAgICAgICAgICAgICAgICB0b3VjaE1vdmU6ICEwLAogICAgICAgICAgICAgICAgICAgIHRvdWNoVGhyZXNob2xkOiA1LAogICAgICAgICAgICAgICAgICAgIHVzZUNTUzogITAsCiAgICAgICAgICAgICAgICAgICAgdXNlVHJhbnNmb3JtOiAhMCwKICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVdpZHRoOiAhMSwKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogITEsCiAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTd2lwaW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICB3YWl0Rm9yQW5pbWF0ZTogITAsCiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAxZTMKICAgICAgICAgICAgICAgIH0sIG8uaW5pdGlhbHMgPSB7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICBkcmFnZ2luZzogITEsCiAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXlUaW1lcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiAwLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMZWZ0OiBudWxsLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTbGlkZTogMCwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IDEsCiAgICAgICAgICAgICAgICAgICAgJGRvdHM6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgbGlzdFdpZHRoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGxpc3RIZWlnaHQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgbG9hZEluZGV4OiAwLAogICAgICAgICAgICAgICAgICAgICRuZXh0QXJyb3c6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgJHByZXZBcnJvdzogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmc6ICExLAogICAgICAgICAgICAgICAgICAgIHNsaWRlQ291bnQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVXaWR0aDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAkc2xpZGVUcmFjazogbnVsbCwKICAgICAgICAgICAgICAgICAgICAkc2xpZGVzOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHNsaWRpbmc6ICExLAogICAgICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgIHN3aXBlTGVmdDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBzd2lwaW5nOiAhMSwKICAgICAgICAgICAgICAgICAgICAkbGlzdDogbnVsbCwKICAgICAgICAgICAgICAgICAgICB0b3VjaE9iamVjdDoge30sCiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jtc0VuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgICAgIHVuc2xpY2tlZDogITEKICAgICAgICAgICAgICAgIH0sIGUuZXh0ZW5kKG8sIG8uaW5pdGlhbHMpLCBvLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsLCBvLmFuaW1UeXBlID0gbnVsbCwgby5hbmltUHJvcCA9IG51bGwsIG8uYnJlYWtwb2ludHMgPSBbXSwgby5icmVha3BvaW50U2V0dGluZ3MgPSBbXSwgby5jc3NUcmFuc2l0aW9ucyA9ICExLCBvLmZvY3Vzc2VkID0gITEsIG8uaW50ZXJydXB0ZWQgPSAhMSwgby5oaWRkZW4gPSAiaGlkZGVuIiwgby5wYXVzZWQgPSAhMCwgby5wb3NpdGlvblByb3AgPSBudWxsLCBvLnJlc3BvbmRUbyA9IG51bGwsIG8ucm93Q291bnQgPSAxLCBvLnNob3VsZENsaWNrID0gITAsIG8uJHNsaWRlciA9IGUobiksIG8uJHNsaWRlc0NhY2hlID0gbnVsbCwgby50cmFuc2Zvcm1UeXBlID0gbnVsbCwgby50cmFuc2l0aW9uVHlwZSA9IG51bGwsIG8udmlzaWJpbGl0eUNoYW5nZSA9ICJ2aXNpYmlsaXR5Y2hhbmdlIiwgby53aW5kb3dXaWR0aCA9IDAsIG8ud2luZG93VGltZXIgPSBudWxsLCByID0gZShuKS5kYXRhKCJzbGljayIpIHx8IHt9LCBvLm9wdGlvbnMgPSBlLmV4dGVuZCh7fSwgby5kZWZhdWx0cywgaSwgciksIG8uY3VycmVudFNsaWRlID0gby5vcHRpb25zLmluaXRpYWxTbGlkZSwgby5vcmlnaW5hbFNldHRpbmdzID0gby5vcHRpb25zLCB2b2lkIDAgIT09IGRvY3VtZW50Lm1vekhpZGRlbiA/IChvLmhpZGRlbiA9ICJtb3pIaWRkZW4iLCBvLnZpc2liaWxpdHlDaGFuZ2UgPSAibW96dmlzaWJpbGl0eWNoYW5nZSIpIDogdm9pZCAwICE9PSBkb2N1bWVudC53ZWJraXRIaWRkZW4gJiYgKG8uaGlkZGVuID0gIndlYmtpdEhpZGRlbiIsIG8udmlzaWJpbGl0eUNoYW5nZSA9ICJ3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlIiksIG8uYXV0b1BsYXkgPSBlLnByb3h5KG8uYXV0b1BsYXksIG8pLCBvLmF1dG9QbGF5Q2xlYXIgPSBlLnByb3h5KG8uYXV0b1BsYXlDbGVhciwgbyksIG8uYXV0b1BsYXlJdGVyYXRvciA9IGUucHJveHkoby5hdXRvUGxheUl0ZXJhdG9yLCBvKSwgby5jaGFuZ2VTbGlkZSA9IGUucHJveHkoby5jaGFuZ2VTbGlkZSwgbyksIG8uY2xpY2tIYW5kbGVyID0gZS5wcm94eShvLmNsaWNrSGFuZGxlciwgbyksIG8uc2VsZWN0SGFuZGxlciA9IGUucHJveHkoby5zZWxlY3RIYW5kbGVyLCBvKSwgby5zZXRQb3NpdGlvbiA9IGUucHJveHkoby5zZXRQb3NpdGlvbiwgbyksIG8uc3dpcGVIYW5kbGVyID0gZS5wcm94eShvLnN3aXBlSGFuZGxlciwgbyksIG8uZHJhZ0hhbmRsZXIgPSBlLnByb3h5KG8uZHJhZ0hhbmRsZXIsIG8pLCBvLmtleUhhbmRsZXIgPSBlLnByb3h5KG8ua2V5SGFuZGxlciwgbyksIG8uaW5zdGFuY2VVaWQgPSB0KyssIG8uaHRtbEV4cHIgPSAvXig/OlxzKig8W1x3XFddKz4pW14+XSopJC8sIG8ucmVnaXN0ZXJCcmVha3BvaW50cygpLCBvLmluaXQoITApCiAgICAgICAgICAgIH0KICAgICAgICB9KCkpLnByb3RvdHlwZS5hY3RpdmF0ZUFEQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLiRzbGlkZVRyYWNrLmZpbmQoIi5zbGljay1hY3RpdmUiKS5hdHRyKHsKICAgICAgICAgICAgICAgICJhcmlhLWhpZGRlbiI6ICJmYWxzZSIKICAgICAgICAgICAgfSkuZmluZCgiYSwgaW5wdXQsIGJ1dHRvbiwgc2VsZWN0IikuYXR0cih7CiAgICAgICAgICAgICAgICB0YWJpbmRleDogIjAiCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgdC5wcm90b3R5cGUuYWRkU2xpZGUgPSB0LnByb3RvdHlwZS5zbGlja0FkZCA9IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgdmFyIHIgPSB0aGlzOwogICAgICAgICAgICBpZiAoImJvb2xlYW4iID09IHR5cGVvZiBuKSBpID0gbiwgbiA9IG51bGw7CiAgICAgICAgICAgIGVsc2UgaWYgKG4gPCAwIHx8IG4gPj0gci5zbGlkZUNvdW50KSByZXR1cm4gITE7CiAgICAgICAgICAgIHIudW5sb2FkKCksICJudW1iZXIiID09IHR5cGVvZiBuID8gMCA9PT0gbiAmJiAwID09PSByLiRzbGlkZXMubGVuZ3RoID8gZSh0KS5hcHBlbmRUbyhyLiRzbGlkZVRyYWNrKSA6IGkgPyBlKHQpLmluc2VydEJlZm9yZShyLiRzbGlkZXMuZXEobikpIDogZSh0KS5pbnNlcnRBZnRlcihyLiRzbGlkZXMuZXEobikpIDogITAgPT09IGkgPyBlKHQpLnByZXBlbmRUbyhyLiRzbGlkZVRyYWNrKSA6IGUodCkuYXBwZW5kVG8oci4kc2xpZGVUcmFjayksIHIuJHNsaWRlcyA9IHIuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKSwgci4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpLCByLiRzbGlkZVRyYWNrLmFwcGVuZChyLiRzbGlkZXMpLCByLiRzbGlkZXMuZWFjaCgoZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgZShuKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IiwgdCkKICAgICAgICAgICAgfSkpLCByLiRzbGlkZXNDYWNoZSA9IHIuJHNsaWRlcywgci5yZWluaXQoKQogICAgICAgIH0sIHQucHJvdG90eXBlLmFuaW1hdGVIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICBpZiAoMSA9PT0gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAhMCA9PT0gZS5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ICYmICExID09PSBlLm9wdGlvbnMudmVydGljYWwpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS4kc2xpZGVzLmVxKGUuY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCghMCk7CiAgICAgICAgICAgICAgICBlLiRsaXN0LmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgIGhlaWdodDogdAogICAgICAgICAgICAgICAgfSwgZS5vcHRpb25zLnNwZWVkKQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5wcm90b3R5cGUuYW5pbWF0ZVNsaWRlID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICB2YXIgaSA9IHt9LAogICAgICAgICAgICAgICAgciA9IHRoaXM7CiAgICAgICAgICAgIHIuYW5pbWF0ZUhlaWdodCgpLCAhMCA9PT0gci5vcHRpb25zLnJ0bCAmJiAhMSA9PT0gci5vcHRpb25zLnZlcnRpY2FsICYmICh0ID0gLXQpLCAhMSA9PT0gci50cmFuc2Zvcm1zRW5hYmxlZCA/ICExID09PSByLm9wdGlvbnMudmVydGljYWwgPyByLiRzbGlkZVRyYWNrLmFuaW1hdGUoewogICAgICAgICAgICAgICAgbGVmdDogdAogICAgICAgICAgICB9LCByLm9wdGlvbnMuc3BlZWQsIHIub3B0aW9ucy5lYXNpbmcsIG4pIDogci4kc2xpZGVUcmFjay5hbmltYXRlKHsKICAgICAgICAgICAgICAgIHRvcDogdAogICAgICAgICAgICB9LCByLm9wdGlvbnMuc3BlZWQsIHIub3B0aW9ucy5lYXNpbmcsIG4pIDogITEgPT09IHIuY3NzVHJhbnNpdGlvbnMgPyAoITAgPT09IHIub3B0aW9ucy5ydGwgJiYgKHIuY3VycmVudExlZnQgPSAtci5jdXJyZW50TGVmdCksIGUoewogICAgICAgICAgICAgICAgYW5pbVN0YXJ0OiByLmN1cnJlbnRMZWZ0CiAgICAgICAgICAgIH0pLmFuaW1hdGUoewogICAgICAgICAgICAgICAgYW5pbVN0YXJ0OiB0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgIGR1cmF0aW9uOiByLm9wdGlvbnMuc3BlZWQsCiAgICAgICAgICAgICAgICBlYXNpbmc6IHIub3B0aW9ucy5lYXNpbmcsCiAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IE1hdGguY2VpbChlKSwgITEgPT09IHIub3B0aW9ucy52ZXJ0aWNhbCA/IChpW3IuYW5pbVR5cGVdID0gInRyYW5zbGF0ZSgiICsgZSArICJweCwgMHB4KSIsIHIuJHNsaWRlVHJhY2suY3NzKGkpKSA6IChpW3IuYW5pbVR5cGVdID0gInRyYW5zbGF0ZSgwcHgsIiArIGUgKyAicHgpIiwgci4kc2xpZGVUcmFjay5jc3MoaSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG4gJiYgbi5jYWxsKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpIDogKHIuYXBwbHlUcmFuc2l0aW9uKCksIHQgPSBNYXRoLmNlaWwodCksICExID09PSByLm9wdGlvbnMudmVydGljYWwgPyBpW3IuYW5pbVR5cGVdID0gInRyYW5zbGF0ZTNkKCIgKyB0ICsgInB4LCAwcHgsIDBweCkiIDogaVtyLmFuaW1UeXBlXSA9ICJ0cmFuc2xhdGUzZCgwcHgsIiArIHQgKyAicHgsIDBweCkiLCByLiRzbGlkZVRyYWNrLmNzcyhpKSwgbiAmJiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHIuZGlzYWJsZVRyYW5zaXRpb24oKSwgbi5jYWxsKCkKICAgICAgICAgICAgfSksIHIub3B0aW9ucy5zcGVlZCkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0TmF2VGFyZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLmFzTmF2Rm9yOwogICAgICAgICAgICByZXR1cm4gdCAmJiBudWxsICE9PSB0ICYmICh0ID0gZSh0KS5ub3QodGhpcy4kc2xpZGVyKSksIHQKICAgICAgICB9LCB0LnByb3RvdHlwZS5hc05hdkZvciA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmdldE5hdlRhcmdldCgpOwogICAgICAgICAgICBudWxsICE9PSBuICYmICJvYmplY3QiID09IHR5cGVvZiBuICYmIG4uZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUodGhpcykuc2xpY2soImdldFNsaWNrIik7CiAgICAgICAgICAgICAgICBuLnVuc2xpY2tlZCB8fCBuLnNsaWRlSGFuZGxlcih0LCAhMCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuYXBwbHlUcmFuc2l0aW9uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBuID0ge307CiAgICAgICAgICAgICExID09PSB0Lm9wdGlvbnMuZmFkZSA/IG5bdC50cmFuc2l0aW9uVHlwZV0gPSB0LnRyYW5zZm9ybVR5cGUgKyAiICIgKyB0Lm9wdGlvbnMuc3BlZWQgKyAibXMgIiArIHQub3B0aW9ucy5jc3NFYXNlIDogblt0LnRyYW5zaXRpb25UeXBlXSA9ICJvcGFjaXR5ICIgKyB0Lm9wdGlvbnMuc3BlZWQgKyAibXMgIiArIHQub3B0aW9ucy5jc3NFYXNlLCAhMSA9PT0gdC5vcHRpb25zLmZhZGUgPyB0LiRzbGlkZVRyYWNrLmNzcyhuKSA6IHQuJHNsaWRlcy5lcShlKS5jc3MobikKICAgICAgICB9LCB0LnByb3RvdHlwZS5hdXRvUGxheSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgIGUuYXV0b1BsYXlDbGVhcigpLCBlLnNsaWRlQ291bnQgPiBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChlLmF1dG9QbGF5VGltZXIgPSBzZXRJbnRlcnZhbChlLmF1dG9QbGF5SXRlcmF0b3IsIGUub3B0aW9ucy5hdXRvcGxheVNwZWVkKSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5hdXRvUGxheUNsZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuYXV0b1BsYXlUaW1lciAmJiBjbGVhckludGVydmFsKHRoaXMuYXV0b1BsYXlUaW1lcikKICAgICAgICB9LCB0LnByb3RvdHlwZS5hdXRvUGxheUl0ZXJhdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgIHQgPSBlLmN1cnJlbnRTbGlkZSArIGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDsKICAgICAgICAgICAgZS5wYXVzZWQgfHwgZS5pbnRlcnJ1cHRlZCB8fCBlLmZvY3Vzc2VkIHx8ICghMSA9PT0gZS5vcHRpb25zLmluZmluaXRlICYmICgxID09PSBlLmRpcmVjdGlvbiAmJiBlLmN1cnJlbnRTbGlkZSArIDEgPT09IGUuc2xpZGVDb3VudCAtIDEgPyBlLmRpcmVjdGlvbiA9IDAgOiAwID09PSBlLmRpcmVjdGlvbiAmJiAodCA9IGUuY3VycmVudFNsaWRlIC0gZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCBlLmN1cnJlbnRTbGlkZSAtIDEgPT0gMCAmJiAoZS5kaXJlY3Rpb24gPSAxKSkpLCBlLnNsaWRlSGFuZGxlcih0KSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5idWlsZEFycm93cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICEwID09PSB0Lm9wdGlvbnMuYXJyb3dzICYmICh0LiRwcmV2QXJyb3cgPSBlKHQub3B0aW9ucy5wcmV2QXJyb3cpLmFkZENsYXNzKCJzbGljay1hcnJvdyIpLCB0LiRuZXh0QXJyb3cgPSBlKHQub3B0aW9ucy5uZXh0QXJyb3cpLmFkZENsYXNzKCJzbGljay1hcnJvdyIpLCB0LnNsaWRlQ291bnQgPiB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gKHQuJHByZXZBcnJvdy5yZW1vdmVDbGFzcygic2xpY2staGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4gdGFiaW5kZXgiKSwgdC4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCJzbGljay1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiB0YWJpbmRleCIpLCB0Lmh0bWxFeHByLnRlc3QodC5vcHRpb25zLnByZXZBcnJvdykgJiYgdC4kcHJldkFycm93LnByZXBlbmRUbyh0Lm9wdGlvbnMuYXBwZW5kQXJyb3dzKSwgdC5odG1sRXhwci50ZXN0KHQub3B0aW9ucy5uZXh0QXJyb3cpICYmIHQuJG5leHRBcnJvdy5hcHBlbmRUbyh0Lm9wdGlvbnMuYXBwZW5kQXJyb3dzKSwgITAgIT09IHQub3B0aW9ucy5pbmZpbml0ZSAmJiB0LiRwcmV2QXJyb3cuYWRkQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJ0cnVlIikpIDogdC4kcHJldkFycm93LmFkZCh0LiRuZXh0QXJyb3cpLmFkZENsYXNzKCJzbGljay1oaWRkZW4iKS5hdHRyKHsKICAgICAgICAgICAgICAgICJhcmlhLWRpc2FibGVkIjogInRydWUiLAogICAgICAgICAgICAgICAgdGFiaW5kZXg6ICItMSIKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuYnVpbGREb3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpID0gdGhpczsKICAgICAgICAgICAgaWYgKCEwID09PSBpLm9wdGlvbnMuZG90cykgewogICAgICAgICAgICAgICAgZm9yIChpLiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLWRvdHRlZCIpLCBuID0gZSgiPHVsIC8+IikuYWRkQ2xhc3MoaS5vcHRpb25zLmRvdHNDbGFzcyksIHQgPSAwOyB0IDw9IGkuZ2V0RG90Q291bnQoKTsgdCArPSAxKSBuLmFwcGVuZChlKCI8bGkgLz4iKS5hcHBlbmQoaS5vcHRpb25zLmN1c3RvbVBhZ2luZy5jYWxsKHRoaXMsIGksIHQpKSk7CiAgICAgICAgICAgICAgICBpLiRkb3RzID0gbi5hcHBlbmRUbyhpLm9wdGlvbnMuYXBwZW5kRG90cyksIGkuJGRvdHMuZmluZCgibGkiKS5maXJzdCgpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5wcm90b3R5cGUuYnVpbGRPdXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICB0LiRzbGlkZXMgPSB0LiRzbGlkZXIuY2hpbGRyZW4odC5vcHRpb25zLnNsaWRlICsgIjpub3QoLnNsaWNrLWNsb25lZCkiKS5hZGRDbGFzcygic2xpY2stc2xpZGUiKSwgdC5zbGlkZUNvdW50ID0gdC4kc2xpZGVzLmxlbmd0aCwgdC4kc2xpZGVzLmVhY2goKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgIGUobikuYXR0cigiZGF0YS1zbGljay1pbmRleCIsIHQpLmRhdGEoIm9yaWdpbmFsU3R5bGluZyIsIGUobikuYXR0cigic3R5bGUiKSB8fCAiIikKICAgICAgICAgICAgfSkpLCB0LiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLXNsaWRlciIpLCB0LiRzbGlkZVRyYWNrID0gMCA9PT0gdC5zbGlkZUNvdW50ID8gZSgnPGRpdiBjbGFzcz0ic2xpY2stdHJhY2siLz4nKS5hcHBlbmRUbyh0LiRzbGlkZXIpIDogdC4kc2xpZGVzLndyYXBBbGwoJzxkaXYgY2xhc3M9InNsaWNrLXRyYWNrIi8+JykucGFyZW50KCksIHQuJGxpc3QgPSB0LiRzbGlkZVRyYWNrLndyYXAoJzxkaXYgY2xhc3M9InNsaWNrLWxpc3QiLz4nKS5wYXJlbnQoKSwgdC4kc2xpZGVUcmFjay5jc3MoIm9wYWNpdHkiLCAwKSwgITAgIT09IHQub3B0aW9ucy5jZW50ZXJNb2RlICYmICEwICE9PSB0Lm9wdGlvbnMuc3dpcGVUb1NsaWRlIHx8ICh0Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPSAxKSwgZSgiaW1nW2RhdGEtbGF6eV0iLCB0LiRzbGlkZXIpLm5vdCgiW3NyY10iKS5hZGRDbGFzcygic2xpY2stbG9hZGluZyIpLCB0LnNldHVwSW5maW5pdGUoKSwgdC5idWlsZEFycm93cygpLCB0LmJ1aWxkRG90cygpLCB0LnVwZGF0ZURvdHMoKSwgdC5zZXRTbGlkZUNsYXNzZXMoIm51bWJlciIgPT0gdHlwZW9mIHQuY3VycmVudFNsaWRlID8gdC5jdXJyZW50U2xpZGUgOiAwKSwgITAgPT09IHQub3B0aW9ucy5kcmFnZ2FibGUgJiYgdC4kbGlzdC5hZGRDbGFzcygiZHJhZ2dhYmxlIikKICAgICAgICB9LCB0LnByb3RvdHlwZS5idWlsZFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGksIHIsIG8sIGEsIHMgPSB0aGlzOwogICAgICAgICAgICBpZiAoaSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgbyA9IHMuJHNsaWRlci5jaGlsZHJlbigpLCBzLm9wdGlvbnMucm93cyA+IDEpIHsKICAgICAgICAgICAgICAgIGZvciAoYSA9IHMub3B0aW9ucy5zbGlkZXNQZXJSb3cgKiBzLm9wdGlvbnMucm93cywgciA9IE1hdGguY2VpbChvLmxlbmd0aCAvIGEpLCBlID0gMDsgZSA8IHI7IGUrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IHMub3B0aW9ucy5yb3dzOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IHMub3B0aW9ucy5zbGlkZXNQZXJSb3c7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBlICogYSArICh0ICogcy5vcHRpb25zLnNsaWRlc1BlclJvdyArIG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5nZXQodSkgJiYgYy5hcHBlbmRDaGlsZChvLmdldCh1KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZENoaWxkKGMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGkuYXBwZW5kQ2hpbGQobCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHMuJHNsaWRlci5lbXB0eSgpLmFwcGVuZChpKSwgcy4kc2xpZGVyLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5jaGlsZHJlbigpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCAvIHMub3B0aW9ucy5zbGlkZXNQZXJSb3cgKyAiJSIsCiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogImlubGluZS1ibG9jayIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0LnByb3RvdHlwZS5jaGVja1Jlc3BvbnNpdmUgPSBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvLCBhID0gdGhpcywKICAgICAgICAgICAgICAgIHMgPSAhMSwKICAgICAgICAgICAgICAgIGwgPSBhLiRzbGlkZXIud2lkdGgoKSwKICAgICAgICAgICAgICAgIGMgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBlKHdpbmRvdykud2lkdGgoKTsKICAgICAgICAgICAgaWYgKCJ3aW5kb3ciID09PSBhLnJlc3BvbmRUbyA/IG8gPSBjIDogInNsaWRlciIgPT09IGEucmVzcG9uZFRvID8gbyA9IGwgOiAibWluIiA9PT0gYS5yZXNwb25kVG8gJiYgKG8gPSBNYXRoLm1pbihjLCBsKSksIGEub3B0aW9ucy5yZXNwb25zaXZlICYmIGEub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aCAmJiBudWxsICE9PSBhLm9wdGlvbnMucmVzcG9uc2l2ZSkgewogICAgICAgICAgICAgICAgZm9yIChpIGluIHIgPSBudWxsLCBhLmJyZWFrcG9pbnRzKSBhLmJyZWFrcG9pbnRzLmhhc093blByb3BlcnR5KGkpICYmICghMSA9PT0gYS5vcmlnaW5hbFNldHRpbmdzLm1vYmlsZUZpcnN0ID8gbyA8IGEuYnJlYWtwb2ludHNbaV0gJiYgKHIgPSBhLmJyZWFrcG9pbnRzW2ldKSA6IG8gPiBhLmJyZWFrcG9pbnRzW2ldICYmIChyID0gYS5icmVha3BvaW50c1tpXSkpOwogICAgICAgICAgICAgICAgbnVsbCAhPT0gciA/IG51bGwgIT09IGEuYWN0aXZlQnJlYWtwb2ludCA/IChyICE9PSBhLmFjdGl2ZUJyZWFrcG9pbnQgfHwgbikgJiYgKGEuYWN0aXZlQnJlYWtwb2ludCA9IHIsICJ1bnNsaWNrIiA9PT0gYS5icmVha3BvaW50U2V0dGluZ3Nbcl0gPyBhLnVuc2xpY2socikgOiAoYS5vcHRpb25zID0gZS5leHRlbmQoe30sIGEub3JpZ2luYWxTZXR0aW5ncywgYS5icmVha3BvaW50U2V0dGluZ3Nbcl0pLCAhMCA9PT0gdCAmJiAoYS5jdXJyZW50U2xpZGUgPSBhLm9wdGlvbnMuaW5pdGlhbFNsaWRlKSwgYS5yZWZyZXNoKHQpKSwgcyA9IHIpIDogKGEuYWN0aXZlQnJlYWtwb2ludCA9IHIsICJ1bnNsaWNrIiA9PT0gYS5icmVha3BvaW50U2V0dGluZ3Nbcl0gPyBhLnVuc2xpY2socikgOiAoYS5vcHRpb25zID0gZS5leHRlbmQoe30sIGEub3JpZ2luYWxTZXR0aW5ncywgYS5icmVha3BvaW50U2V0dGluZ3Nbcl0pLCAhMCA9PT0gdCAmJiAoYS5jdXJyZW50U2xpZGUgPSBhLm9wdGlvbnMuaW5pdGlhbFNsaWRlKSwgYS5yZWZyZXNoKHQpKSwgcyA9IHIpIDogbnVsbCAhPT0gYS5hY3RpdmVCcmVha3BvaW50ICYmIChhLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsLCBhLm9wdGlvbnMgPSBhLm9yaWdpbmFsU2V0dGluZ3MsICEwID09PSB0ICYmIChhLmN1cnJlbnRTbGlkZSA9IGEub3B0aW9ucy5pbml0aWFsU2xpZGUpLCBhLnJlZnJlc2godCksIHMgPSByKSwgdCB8fCAhMSA9PT0gcyB8fCBhLiRzbGlkZXIudHJpZ2dlcigiYnJlYWtwb2ludCIsIFthLCBzXSkKICAgICAgICAgICAgfQogICAgICAgIH0sIHQucHJvdG90eXBlLmNoYW5nZVNsaWRlID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICB2YXIgaSwgciwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICBhID0gZSh0LmN1cnJlbnRUYXJnZXQpOwogICAgICAgICAgICBzd2l0Y2ggKGEuaXMoImEiKSAmJiB0LnByZXZlbnREZWZhdWx0KCksIGEuaXMoImxpIikgfHwgKGEgPSBhLmNsb3Nlc3QoImxpIikpLCBpID0gby5zbGlkZUNvdW50ICUgby5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9IDAgPyAwIDogKG8uc2xpZGVDb3VudCAtIG8uY3VycmVudFNsaWRlKSAlIG8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCwgdC5kYXRhLm1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgIGNhc2UgInByZXZpb3VzIjoKICAgICAgICAgICAgICAgICAgICByID0gMCA9PT0gaSA/IG8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSBpLCBvLnNsaWRlQ291bnQgPiBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIG8uc2xpZGVIYW5kbGVyKG8uY3VycmVudFNsaWRlIC0gciwgITEsIG4pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibmV4dCI6CiAgICAgICAgICAgICAgICAgICAgciA9IDAgPT09IGkgPyBvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBpLCBvLnNsaWRlQ291bnQgPiBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIG8uc2xpZGVIYW5kbGVyKG8uY3VycmVudFNsaWRlICsgciwgITEsIG4pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiaW5kZXgiOgogICAgICAgICAgICAgICAgICAgIHZhciBzID0gMCA9PT0gdC5kYXRhLmluZGV4ID8gMCA6IHQuZGF0YS5pbmRleCB8fCBhLmluZGV4KCkgKiBvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7CiAgICAgICAgICAgICAgICAgICAgby5zbGlkZUhhbmRsZXIoby5jaGVja05hdmlnYWJsZShzKSwgITEsIG4pLCBhLmNoaWxkcmVuKCkudHJpZ2dlcigiZm9jdXMiKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0LnByb3RvdHlwZS5jaGVja05hdmlnYWJsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG47CiAgICAgICAgICAgIGlmIChuID0gMCwgZSA+ICh0ID0gdGhpcy5nZXROYXZpZ2FibGVJbmRleGVzKCkpW3QubGVuZ3RoIC0gMV0pIGUgPSB0W3QubGVuZ3RoIC0gMV07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlIDwgdFtpXSkgewogICAgICAgICAgICAgICAgICAgICAgICBlID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbiA9IHRbaV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LCB0LnByb3RvdHlwZS5jbGVhblVwRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgdC5vcHRpb25zLmRvdHMgJiYgbnVsbCAhPT0gdC4kZG90cyAmJiAoZSgibGkiLCB0LiRkb3RzKS5vZmYoImNsaWNrLnNsaWNrIiwgdC5jaGFuZ2VTbGlkZSkub2ZmKCJtb3VzZWVudGVyLnNsaWNrIiwgZS5wcm94eSh0LmludGVycnVwdCwgdCwgITApKS5vZmYoIm1vdXNlbGVhdmUuc2xpY2siLCBlLnByb3h5KHQuaW50ZXJydXB0LCB0LCAhMSkpLCAhMCA9PT0gdC5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgdC4kZG90cy5vZmYoImtleWRvd24uc2xpY2siLCB0LmtleUhhbmRsZXIpKSwgdC4kc2xpZGVyLm9mZigiZm9jdXMuc2xpY2sgYmx1ci5zbGljayIpLCAhMCA9PT0gdC5vcHRpb25zLmFycm93cyAmJiB0LnNsaWRlQ291bnQgPiB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmICh0LiRwcmV2QXJyb3cgJiYgdC4kcHJldkFycm93Lm9mZigiY2xpY2suc2xpY2siLCB0LmNoYW5nZVNsaWRlKSwgdC4kbmV4dEFycm93ICYmIHQuJG5leHRBcnJvdy5vZmYoImNsaWNrLnNsaWNrIiwgdC5jaGFuZ2VTbGlkZSksICEwID09PSB0Lm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiAodC4kcHJldkFycm93ICYmIHQuJHByZXZBcnJvdy5vZmYoImtleWRvd24uc2xpY2siLCB0LmtleUhhbmRsZXIpLCB0LiRuZXh0QXJyb3cgJiYgdC4kbmV4dEFycm93Lm9mZigia2V5ZG93bi5zbGljayIsIHQua2V5SGFuZGxlcikpKSwgdC4kbGlzdC5vZmYoInRvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrIiwgdC5zd2lwZUhhbmRsZXIpLCB0LiRsaXN0Lm9mZigidG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljayIsIHQuc3dpcGVIYW5kbGVyKSwgdC4kbGlzdC5vZmYoInRvdWNoZW5kLnNsaWNrIG1vdXNldXAuc2xpY2siLCB0LnN3aXBlSGFuZGxlciksIHQuJGxpc3Qub2ZmKCJ0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrIiwgdC5zd2lwZUhhbmRsZXIpLCB0LiRsaXN0Lm9mZigiY2xpY2suc2xpY2siLCB0LmNsaWNrSGFuZGxlciksIGUoZG9jdW1lbnQpLm9mZih0LnZpc2liaWxpdHlDaGFuZ2UsIHQudmlzaWJpbGl0eSksIHQuY2xlYW5VcFNsaWRlRXZlbnRzKCksICEwID09PSB0Lm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiB0LiRsaXN0Lm9mZigia2V5ZG93bi5zbGljayIsIHQua2V5SGFuZGxlciksICEwID09PSB0Lm9wdGlvbnMuZm9jdXNPblNlbGVjdCAmJiBlKHQuJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub2ZmKCJjbGljay5zbGljayIsIHQuc2VsZWN0SGFuZGxlciksIGUod2luZG93KS5vZmYoIm9yaWVudGF0aW9uY2hhbmdlLnNsaWNrLnNsaWNrLSIgKyB0Lmluc3RhbmNlVWlkLCB0Lm9yaWVudGF0aW9uQ2hhbmdlKSwgZSh3aW5kb3cpLm9mZigicmVzaXplLnNsaWNrLnNsaWNrLSIgKyB0Lmluc3RhbmNlVWlkLCB0LnJlc2l6ZSksIGUoIltkcmFnZ2FibGUhPXRydWVdIiwgdC4kc2xpZGVUcmFjaykub2ZmKCJkcmFnc3RhcnQiLCB0LnByZXZlbnREZWZhdWx0KSwgZSh3aW5kb3cpLm9mZigibG9hZC5zbGljay5zbGljay0iICsgdC5pbnN0YW5jZVVpZCwgdC5zZXRQb3NpdGlvbikKICAgICAgICB9LCB0LnByb3RvdHlwZS5jbGVhblVwU2xpZGVFdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICB0LiRsaXN0Lm9mZigibW91c2VlbnRlci5zbGljayIsIGUucHJveHkodC5pbnRlcnJ1cHQsIHQsICEwKSksIHQuJGxpc3Qub2ZmKCJtb3VzZWxlYXZlLnNsaWNrIiwgZS5wcm94eSh0LmludGVycnVwdCwgdCwgITEpKQogICAgICAgIH0sIHQucHJvdG90eXBlLmNsZWFuVXBSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0ID0gdGhpczsKICAgICAgICAgICAgdC5vcHRpb25zLnJvd3MgPiAxICYmICgoZSA9IHQuJHNsaWRlcy5jaGlsZHJlbigpLmNoaWxkcmVuKCkpLnJlbW92ZUF0dHIoInN0eWxlIiksIHQuJHNsaWRlci5lbXB0eSgpLmFwcGVuZChlKSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5jbGlja0hhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICExID09PSB0aGlzLnNob3VsZENsaWNrICYmIChlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBlLnByZXZlbnREZWZhdWx0KCkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0aGlzOwogICAgICAgICAgICBuLmF1dG9QbGF5Q2xlYXIoKSwgbi50b3VjaE9iamVjdCA9IHt9LCBuLmNsZWFuVXBFdmVudHMoKSwgZSgiLnNsaWNrLWNsb25lZCIsIG4uJHNsaWRlcikuZGV0YWNoKCksIG4uJGRvdHMgJiYgbi4kZG90cy5yZW1vdmUoKSwgbi4kcHJldkFycm93ICYmIG4uJHByZXZBcnJvdy5sZW5ndGggJiYgKG4uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQgc2xpY2stYXJyb3cgc2xpY2staGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4gYXJpYS1kaXNhYmxlZCB0YWJpbmRleCIpLmNzcygiZGlzcGxheSIsICIiKSwgbi5odG1sRXhwci50ZXN0KG4ub3B0aW9ucy5wcmV2QXJyb3cpICYmIG4uJHByZXZBcnJvdy5yZW1vdmUoKSksIG4uJG5leHRBcnJvdyAmJiBuLiRuZXh0QXJyb3cubGVuZ3RoICYmIChuLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgiKS5jc3MoImRpc3BsYXkiLCAiIiksIG4uaHRtbEV4cHIudGVzdChuLm9wdGlvbnMubmV4dEFycm93KSAmJiBuLiRuZXh0QXJyb3cucmVtb3ZlKCkpLCBuLiRzbGlkZXMgJiYgKG4uJHNsaWRlcy5yZW1vdmVDbGFzcygic2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay12aXNpYmxlIHNsaWNrLWN1cnJlbnQiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImRhdGEtc2xpY2staW5kZXgiKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGUodGhpcykuYXR0cigic3R5bGUiLCBlKHRoaXMpLmRhdGEoIm9yaWdpbmFsU3R5bGluZyIpKQogICAgICAgICAgICB9KSksIG4uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKSwgbi4kc2xpZGVUcmFjay5kZXRhY2goKSwgbi4kbGlzdC5kZXRhY2goKSwgbi4kc2xpZGVyLmFwcGVuZChuLiRzbGlkZXMpKSwgbi5jbGVhblVwUm93cygpLCBuLiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLXNsaWRlciIpLCBuLiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLWluaXRpYWxpemVkIiksIG4uJHNsaWRlci5yZW1vdmVDbGFzcygic2xpY2stZG90dGVkIiksIG4udW5zbGlja2VkID0gITAsIHQgfHwgbi4kc2xpZGVyLnRyaWdnZXIoImRlc3Ryb3kiLCBbbl0pCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZGlzYWJsZVRyYW5zaXRpb24gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSB7fTsKICAgICAgICAgICAgblt0LnRyYW5zaXRpb25UeXBlXSA9ICIiLCAhMSA9PT0gdC5vcHRpb25zLmZhZGUgPyB0LiRzbGlkZVRyYWNrLmNzcyhuKSA6IHQuJHNsaWRlcy5lcShlKS5jc3MobikKICAgICAgICB9LCB0LnByb3RvdHlwZS5mYWRlU2xpZGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgITEgPT09IG4uY3NzVHJhbnNpdGlvbnMgPyAobi4kc2xpZGVzLmVxKGUpLmNzcyh7CiAgICAgICAgICAgICAgICB6SW5kZXg6IG4ub3B0aW9ucy56SW5kZXgKICAgICAgICAgICAgfSksIG4uJHNsaWRlcy5lcShlKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfSwgbi5vcHRpb25zLnNwZWVkLCBuLm9wdGlvbnMuZWFzaW5nLCB0KSkgOiAobi5hcHBseVRyYW5zaXRpb24oZSksIG4uJHNsaWRlcy5lcShlKS5jc3MoewogICAgICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgICAgIHpJbmRleDogbi5vcHRpb25zLnpJbmRleAogICAgICAgICAgICB9KSwgdCAmJiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG4uZGlzYWJsZVRyYW5zaXRpb24oZSksIHQuY2FsbCgpCiAgICAgICAgICAgIH0pLCBuLm9wdGlvbnMuc3BlZWQpKQogICAgICAgIH0sIHQucHJvdG90eXBlLmZhZGVTbGlkZU91dCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICAhMSA9PT0gdC5jc3NUcmFuc2l0aW9ucyA/IHQuJHNsaWRlcy5lcShlKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgICAgICB6SW5kZXg6IHQub3B0aW9ucy56SW5kZXggLSAyCiAgICAgICAgICAgIH0sIHQub3B0aW9ucy5zcGVlZCwgdC5vcHRpb25zLmVhc2luZykgOiAodC5hcHBseVRyYW5zaXRpb24oZSksIHQuJHNsaWRlcy5lcShlKS5jc3MoewogICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgIHpJbmRleDogdC5vcHRpb25zLnpJbmRleCAtIDIKICAgICAgICAgICAgfSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZmlsdGVyU2xpZGVzID0gdC5wcm90b3R5cGUuc2xpY2tGaWx0ZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgbnVsbCAhPT0gZSAmJiAodC4kc2xpZGVzQ2FjaGUgPSB0LiRzbGlkZXMsIHQudW5sb2FkKCksIHQuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKSwgdC4kc2xpZGVzQ2FjaGUuZmlsdGVyKGUpLmFwcGVuZFRvKHQuJHNsaWRlVHJhY2spLCB0LnJlaW5pdCgpKQogICAgICAgIH0sIHQucHJvdG90eXBlLmZvY3VzSGFuZGxlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIHQuJHNsaWRlci5vZmYoImZvY3VzLnNsaWNrIGJsdXIuc2xpY2siKS5vbigiZm9jdXMuc2xpY2sgYmx1ci5zbGljayIsICIqIiwgKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIG4uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUodGhpcyk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0Lm9wdGlvbnMucGF1c2VPbkZvY3VzICYmICh0LmZvY3Vzc2VkID0gaS5pcygiOmZvY3VzIiksIHQuYXV0b1BsYXkoKSkKICAgICAgICAgICAgICAgIH0pLCAwKQogICAgICAgICAgICB9KSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRDdXJyZW50ID0gdC5wcm90b3R5cGUuc2xpY2tDdXJyZW50U2xpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNsaWRlCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0RG90Q291bnQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgdCA9IDAsCiAgICAgICAgICAgICAgICBuID0gMCwKICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICBpZiAoITAgPT09IGUub3B0aW9ucy5pbmZpbml0ZSkKICAgICAgICAgICAgICAgIGlmIChlLnNsaWRlQ291bnQgPD0gZS5vcHRpb25zLnNsaWRlc1RvU2hvdykgKytpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAoOyB0IDwgZS5zbGlkZUNvdW50OykgKytpLCB0ID0gbiArIGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCwgbiArPSBlLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IGUub3B0aW9ucy5zbGlkZXNUb1Nob3c7CiAgICAgICAgICAgIGVsc2UgaWYgKCEwID09PSBlLm9wdGlvbnMuY2VudGVyTW9kZSkgaSA9IGUuc2xpZGVDb3VudDsKICAgICAgICAgICAgZWxzZSBpZiAoZS5vcHRpb25zLmFzTmF2Rm9yKQogICAgICAgICAgICAgICAgZm9yICg7IHQgPCBlLnNsaWRlQ291bnQ7KSArK2ksIHQgPSBuICsgZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsLCBuICs9IGUub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA8PSBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogZS5vcHRpb25zLnNsaWRlc1RvU2hvdzsKICAgICAgICAgICAgZWxzZSBpID0gMSArIE1hdGguY2VpbCgoZS5zbGlkZUNvdW50IC0gZS5vcHRpb25zLnNsaWRlc1RvU2hvdykgLyBlLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpOwogICAgICAgICAgICByZXR1cm4gaSAtIDEKICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgcmV0dXJuIG8uc2xpZGVPZmZzZXQgPSAwLCBuID0gby4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQoITApLCAhMCA9PT0gby5vcHRpb25zLmluZmluaXRlID8gKG8uc2xpZGVDb3VudCA+IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKG8uc2xpZGVPZmZzZXQgPSBvLnNsaWRlV2lkdGggKiBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICogLTEsIHIgPSAtMSwgITAgPT09IG8ub3B0aW9ucy52ZXJ0aWNhbCAmJiAhMCA9PT0gby5vcHRpb25zLmNlbnRlck1vZGUgJiYgKDIgPT09IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyByID0gLTEuNSA6IDEgPT09IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKHIgPSAtMikpLCBhID0gbiAqIG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKiByKSwgby5zbGlkZUNvdW50ICUgby5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9IDAgJiYgZSArIG8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA+IG8uc2xpZGVDb3VudCAmJiBvLnNsaWRlQ291bnQgPiBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChlID4gby5zbGlkZUNvdW50ID8gKG8uc2xpZGVPZmZzZXQgPSAoby5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIChlIC0gby5zbGlkZUNvdW50KSkgKiBvLnNsaWRlV2lkdGggKiAtMSwgYSA9IChvLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gKGUgLSBvLnNsaWRlQ291bnQpKSAqIG4gKiAtMSkgOiAoby5zbGlkZU9mZnNldCA9IG8uc2xpZGVDb3VudCAlIG8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAqIG8uc2xpZGVXaWR0aCAqIC0xLCBhID0gby5zbGlkZUNvdW50ICUgby5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogbiAqIC0xKSkpIDogZSArIG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPiBvLnNsaWRlQ291bnQgJiYgKG8uc2xpZGVPZmZzZXQgPSAoZSArIG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSBvLnNsaWRlQ291bnQpICogby5zbGlkZVdpZHRoLCBhID0gKGUgKyBvLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gby5zbGlkZUNvdW50KSAqIG4pLCBvLnNsaWRlQ291bnQgPD0gby5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAoby5zbGlkZU9mZnNldCA9IDAsIGEgPSAwKSwgITAgPT09IG8ub3B0aW9ucy5jZW50ZXJNb2RlICYmIG8uc2xpZGVDb3VudCA8PSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gby5zbGlkZU9mZnNldCA9IG8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3Ioby5vcHRpb25zLnNsaWRlc1RvU2hvdykgLyAyIC0gby5zbGlkZVdpZHRoICogby5zbGlkZUNvdW50IC8gMiA6ICEwID09PSBvLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAhMCA9PT0gby5vcHRpb25zLmluZmluaXRlID8gby5zbGlkZU9mZnNldCArPSBvLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSAtIG8uc2xpZGVXaWR0aCA6ICEwID09PSBvLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAoby5zbGlkZU9mZnNldCA9IDAsIG8uc2xpZGVPZmZzZXQgKz0gby5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihvLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMikpLCB0ID0gITEgPT09IG8ub3B0aW9ucy52ZXJ0aWNhbCA/IGUgKiBvLnNsaWRlV2lkdGggKiAtMSArIG8uc2xpZGVPZmZzZXQgOiBlICogbiAqIC0xICsgYSwgITAgPT09IG8ub3B0aW9ucy52YXJpYWJsZVdpZHRoICYmIChpID0gby5zbGlkZUNvdW50IDw9IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgfHwgITEgPT09IG8ub3B0aW9ucy5pbmZpbml0ZSA/IG8uJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLmVxKGUpIDogby4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikuZXEoZSArIG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCB0ID0gITAgPT09IG8ub3B0aW9ucy5ydGwgPyBpWzBdID8gLTEgKiAoby4kc2xpZGVUcmFjay53aWR0aCgpIC0gaVswXS5vZmZzZXRMZWZ0IC0gaS53aWR0aCgpKSA6IDAgOiBpWzBdID8gLTEgKiBpWzBdLm9mZnNldExlZnQgOiAwLCAhMCA9PT0gby5vcHRpb25zLmNlbnRlck1vZGUgJiYgKGkgPSBvLnNsaWRlQ291bnQgPD0gby5vcHRpb25zLnNsaWRlc1RvU2hvdyB8fCAhMSA9PT0gby5vcHRpb25zLmluZmluaXRlID8gby4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikuZXEoZSkgOiBvLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcShlICsgby5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDEpLCB0ID0gITAgPT09IG8ub3B0aW9ucy5ydGwgPyBpWzBdID8gLTEgKiAoby4kc2xpZGVUcmFjay53aWR0aCgpIC0gaVswXS5vZmZzZXRMZWZ0IC0gaS53aWR0aCgpKSA6IDAgOiBpWzBdID8gLTEgKiBpWzBdLm9mZnNldExlZnQgOiAwLCB0ICs9IChvLiRsaXN0LndpZHRoKCkgLSBpLm91dGVyV2lkdGgoKSkgLyAyKSksIHQKICAgICAgICB9LCB0LnByb3RvdHlwZS5nZXRPcHRpb24gPSB0LnByb3RvdHlwZS5zbGlja0dldE9wdGlvbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1tlXQogICAgICAgIH0sIHQucHJvdG90eXBlLmdldE5hdmlnYWJsZUluZGV4ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUsIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgbiA9IDAsCiAgICAgICAgICAgICAgICBpID0gMCwKICAgICAgICAgICAgICAgIHIgPSBbXTsKICAgICAgICAgICAgZm9yICghMSA9PT0gdC5vcHRpb25zLmluZmluaXRlID8gZSA9IHQuc2xpZGVDb3VudCA6IChuID0gLTEgKiB0Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsIGkgPSAtMSAqIHQub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCwgZSA9IDIgKiB0LnNsaWRlQ291bnQpOyBuIDwgZTspIHIucHVzaChuKSwgbiA9IGkgKyB0Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsIGkgKz0gdC5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDw9IHQub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyB0Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93OwogICAgICAgICAgICByZXR1cm4gcgogICAgICAgIH0sIHQucHJvdG90eXBlLmdldFNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZ2V0U2xpZGVDb3VudCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBuID0gITAgPT09IGkub3B0aW9ucy5jZW50ZXJNb2RlID8gaS5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihpLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMikgOiAwLCAhMCA9PT0gaS5vcHRpb25zLnN3aXBlVG9TbGlkZSA/IChpLiRzbGlkZVRyYWNrLmZpbmQoIi5zbGljay1zbGlkZSIpLmVhY2goKGZ1bmN0aW9uKHIsIG8pIHsKICAgICAgICAgICAgICAgIGlmIChvLm9mZnNldExlZnQgLSBuICsgZShvKS5vdXRlcldpZHRoKCkgLyAyID4gLTEgKiBpLnN3aXBlTGVmdCkgcmV0dXJuIHQgPSBvLCAhMQogICAgICAgICAgICB9KSksIE1hdGguYWJzKGUodCkuYXR0cigiZGF0YS1zbGljay1pbmRleCIpIC0gaS5jdXJyZW50U2xpZGUpIHx8IDEpIDogaS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsCiAgICAgICAgfSwgdC5wcm90b3R5cGUuZ29UbyA9IHQucHJvdG90eXBlLnNsaWNrR29UbyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdGhpcy5jaGFuZ2VTbGlkZSh7CiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogImluZGV4IiwKICAgICAgICAgICAgICAgICAgICBpbmRleDogcGFyc2VJbnQoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgdCkKICAgICAgICB9LCB0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgIGUobi4kc2xpZGVyKS5oYXNDbGFzcygic2xpY2staW5pdGlhbGl6ZWQiKSB8fCAoZShuLiRzbGlkZXIpLmFkZENsYXNzKCJzbGljay1pbml0aWFsaXplZCIpLCBuLmJ1aWxkUm93cygpLCBuLmJ1aWxkT3V0KCksIG4uc2V0UHJvcHMoKSwgbi5zdGFydExvYWQoKSwgbi5sb2FkU2xpZGVyKCksIG4uaW5pdGlhbGl6ZUV2ZW50cygpLCBuLnVwZGF0ZUFycm93cygpLCBuLnVwZGF0ZURvdHMoKSwgbi5jaGVja1Jlc3BvbnNpdmUoITApLCBuLmZvY3VzSGFuZGxlcigpKSwgdCAmJiBuLiRzbGlkZXIudHJpZ2dlcigiaW5pdCIsIFtuXSksICEwID09PSBuLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiBuLmluaXRBREEoKSwgbi5vcHRpb25zLmF1dG9wbGF5ICYmIChuLnBhdXNlZCA9ICExLCBuLmF1dG9QbGF5KCkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5pdEFEQSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBuID0gTWF0aC5jZWlsKHQuc2xpZGVDb3VudCAvIHQub3B0aW9ucy5zbGlkZXNUb1Nob3cpLAogICAgICAgICAgICAgICAgaSA9IHQuZ2V0TmF2aWdhYmxlSW5kZXhlcygpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID49IDAgJiYgZSA8IHQuc2xpZGVDb3VudAogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB0LiRzbGlkZXMuYWRkKHQuJHNsaWRlVHJhY2suZmluZCgiLnNsaWNrLWNsb25lZCIpKS5hdHRyKHsKICAgICAgICAgICAgICAgICJhcmlhLWhpZGRlbiI6ICJ0cnVlIiwKICAgICAgICAgICAgICAgIHRhYmluZGV4OiAiLTEiCiAgICAgICAgICAgIH0pLmZpbmQoImEsIGlucHV0LCBidXR0b24sIHNlbGVjdCIpLmF0dHIoewogICAgICAgICAgICAgICAgdGFiaW5kZXg6ICItMSIKICAgICAgICAgICAgfSksIG51bGwgIT09IHQuJGRvdHMgJiYgKHQuJHNsaWRlcy5ub3QodC4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stY2xvbmVkIikpLmVhY2goKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIHZhciByID0gaS5pbmRleE9mKG4pOwogICAgICAgICAgICAgICAgZSh0aGlzKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICByb2xlOiAidGFicGFuZWwiLAogICAgICAgICAgICAgICAgICAgIGlkOiAic2xpY2stc2xpZGUiICsgdC5pbnN0YW5jZVVpZCArIG4sCiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6IC0xCiAgICAgICAgICAgICAgICB9KSwgLTEgIT09IHIgJiYgZSh0aGlzKS5hdHRyKHsKICAgICAgICAgICAgICAgICAgICAiYXJpYS1kZXNjcmliZWRieSI6ICJzbGljay1zbGlkZS1jb250cm9sIiArIHQuaW5zdGFuY2VVaWQgKyByCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIHQuJGRvdHMuYXR0cigicm9sZSIsICJ0YWJsaXN0IikuZmluZCgibGkiKS5lYWNoKChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICB2YXIgbyA9IGlbcl07CiAgICAgICAgICAgICAgICBlKHRoaXMpLmF0dHIoewogICAgICAgICAgICAgICAgICAgIHJvbGU6ICJwcmVzZW50YXRpb24iCiAgICAgICAgICAgICAgICB9KSwgZSh0aGlzKS5maW5kKCJidXR0b24iKS5maXJzdCgpLmF0dHIoewogICAgICAgICAgICAgICAgICAgIHJvbGU6ICJ0YWIiLAogICAgICAgICAgICAgICAgICAgIGlkOiAic2xpY2stc2xpZGUtY29udHJvbCIgKyB0Lmluc3RhbmNlVWlkICsgciwKICAgICAgICAgICAgICAgICAgICAiYXJpYS1jb250cm9scyI6ICJzbGljay1zbGlkZSIgKyB0Lmluc3RhbmNlVWlkICsgbywKICAgICAgICAgICAgICAgICAgICAiYXJpYS1sYWJlbCI6IHIgKyAxICsgIiBvZiAiICsgbiwKICAgICAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg6ICItMSIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKS5lcSh0LmN1cnJlbnRTbGlkZSkuZmluZCgiYnV0dG9uIikuYXR0cih7CiAgICAgICAgICAgICAgICAiYXJpYS1zZWxlY3RlZCI6ICJ0cnVlIiwKICAgICAgICAgICAgICAgIHRhYmluZGV4OiAiMCIKICAgICAgICAgICAgfSkuZW5kKCkpOwogICAgICAgICAgICBmb3IgKHZhciByID0gdC5jdXJyZW50U2xpZGUsIG8gPSByICsgdC5vcHRpb25zLnNsaWRlc1RvU2hvdzsgciA8IG87IHIrKykgdC4kc2xpZGVzLmVxKHIpLmF0dHIoInRhYmluZGV4IiwgMCk7CiAgICAgICAgICAgIHQuYWN0aXZhdGVBREEoKQogICAgICAgIH0sIHQucHJvdG90eXBlLmluaXRBcnJvd0V2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICEwID09PSBlLm9wdGlvbnMuYXJyb3dzICYmIGUuc2xpZGVDb3VudCA+IGUub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKGUuJHByZXZBcnJvdy5vZmYoImNsaWNrLnNsaWNrIikub24oImNsaWNrLnNsaWNrIiwgewogICAgICAgICAgICAgICAgbWVzc2FnZTogInByZXZpb3VzIgogICAgICAgICAgICB9LCBlLmNoYW5nZVNsaWRlKSwgZS4kbmV4dEFycm93Lm9mZigiY2xpY2suc2xpY2siKS5vbigiY2xpY2suc2xpY2siLCB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAibmV4dCIKICAgICAgICAgICAgfSwgZS5jaGFuZ2VTbGlkZSksICEwID09PSBlLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiAoZS4kcHJldkFycm93Lm9uKCJrZXlkb3duLnNsaWNrIiwgZS5rZXlIYW5kbGVyKSwgZS4kbmV4dEFycm93Lm9uKCJrZXlkb3duLnNsaWNrIiwgZS5rZXlIYW5kbGVyKSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuaW5pdERvdEV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICEwID09PSB0Lm9wdGlvbnMuZG90cyAmJiAoZSgibGkiLCB0LiRkb3RzKS5vbigiY2xpY2suc2xpY2siLCB7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiaW5kZXgiCiAgICAgICAgICAgIH0sIHQuY2hhbmdlU2xpZGUpLCAhMCA9PT0gdC5vcHRpb25zLmFjY2Vzc2liaWxpdHkgJiYgdC4kZG90cy5vbigia2V5ZG93bi5zbGljayIsIHQua2V5SGFuZGxlcikpLCAhMCA9PT0gdC5vcHRpb25zLmRvdHMgJiYgITAgPT09IHQub3B0aW9ucy5wYXVzZU9uRG90c0hvdmVyICYmIGUoImxpIiwgdC4kZG90cykub24oIm1vdXNlZW50ZXIuc2xpY2siLCBlLnByb3h5KHQuaW50ZXJydXB0LCB0LCAhMCkpLm9uKCJtb3VzZWxlYXZlLnNsaWNrIiwgZS5wcm94eSh0LmludGVycnVwdCwgdCwgITEpKQogICAgICAgIH0sIHQucHJvdG90eXBlLmluaXRTbGlkZUV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIHQub3B0aW9ucy5wYXVzZU9uSG92ZXIgJiYgKHQuJGxpc3Qub24oIm1vdXNlZW50ZXIuc2xpY2siLCBlLnByb3h5KHQuaW50ZXJydXB0LCB0LCAhMCkpLCB0LiRsaXN0Lm9uKCJtb3VzZWxlYXZlLnNsaWNrIiwgZS5wcm94eSh0LmludGVycnVwdCwgdCwgITEpKSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5pbml0aWFsaXplRXZlbnRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgdC5pbml0QXJyb3dFdmVudHMoKSwgdC5pbml0RG90RXZlbnRzKCksIHQuaW5pdFNsaWRlRXZlbnRzKCksIHQuJGxpc3Qub24oInRvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrIiwgewogICAgICAgICAgICAgICAgYWN0aW9uOiAic3RhcnQiCiAgICAgICAgICAgIH0sIHQuc3dpcGVIYW5kbGVyKSwgdC4kbGlzdC5vbigidG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljayIsIHsKICAgICAgICAgICAgICAgIGFjdGlvbjogIm1vdmUiCiAgICAgICAgICAgIH0sIHQuc3dpcGVIYW5kbGVyKSwgdC4kbGlzdC5vbigidG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljayIsIHsKICAgICAgICAgICAgICAgIGFjdGlvbjogImVuZCIKICAgICAgICAgICAgfSwgdC5zd2lwZUhhbmRsZXIpLCB0LiRsaXN0Lm9uKCJ0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrIiwgewogICAgICAgICAgICAgICAgYWN0aW9uOiAiZW5kIgogICAgICAgICAgICB9LCB0LnN3aXBlSGFuZGxlciksIHQuJGxpc3Qub24oImNsaWNrLnNsaWNrIiwgdC5jbGlja0hhbmRsZXIpLCBlKGRvY3VtZW50KS5vbih0LnZpc2liaWxpdHlDaGFuZ2UsIGUucHJveHkodC52aXNpYmlsaXR5LCB0KSksICEwID09PSB0Lm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiB0LiRsaXN0Lm9uKCJrZXlkb3duLnNsaWNrIiwgdC5rZXlIYW5kbGVyKSwgITAgPT09IHQub3B0aW9ucy5mb2N1c09uU2VsZWN0ICYmIGUodC4kc2xpZGVUcmFjaykuY2hpbGRyZW4oKS5vbigiY2xpY2suc2xpY2siLCB0LnNlbGVjdEhhbmRsZXIpLCBlKHdpbmRvdykub24oIm9yaWVudGF0aW9uY2hhbmdlLnNsaWNrLnNsaWNrLSIgKyB0Lmluc3RhbmNlVWlkLCBlLnByb3h5KHQub3JpZW50YXRpb25DaGFuZ2UsIHQpKSwgZSh3aW5kb3cpLm9uKCJyZXNpemUuc2xpY2suc2xpY2stIiArIHQuaW5zdGFuY2VVaWQsIGUucHJveHkodC5yZXNpemUsIHQpKSwgZSgiW2RyYWdnYWJsZSE9dHJ1ZV0iLCB0LiRzbGlkZVRyYWNrKS5vbigiZHJhZ3N0YXJ0IiwgdC5wcmV2ZW50RGVmYXVsdCksIGUod2luZG93KS5vbigibG9hZC5zbGljay5zbGljay0iICsgdC5pbnN0YW5jZVVpZCwgdC5zZXRQb3NpdGlvbiksIGUodC5zZXRQb3NpdGlvbikKICAgICAgICB9LCB0LnByb3RvdHlwZS5pbml0VUkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAhMCA9PT0gZS5vcHRpb25zLmFycm93cyAmJiBlLnNsaWRlQ291bnQgPiBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIChlLiRwcmV2QXJyb3cuc2hvdygpLCBlLiRuZXh0QXJyb3cuc2hvdygpKSwgITAgPT09IGUub3B0aW9ucy5kb3RzICYmIGUuc2xpZGVDb3VudCA+IGUub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgZS4kZG90cy5zaG93KCkKICAgICAgICB9LCB0LnByb3RvdHlwZS5rZXlIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIGUudGFyZ2V0LnRhZ05hbWUubWF0Y2goIlRFWFRBUkVBfElOUFVUfFNFTEVDVCIpIHx8ICgzNyA9PT0gZS5rZXlDb2RlICYmICEwID09PSB0Lm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA/IHQuY2hhbmdlU2xpZGUoewogICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICEwID09PSB0Lm9wdGlvbnMucnRsID8gIm5leHQiIDogInByZXZpb3VzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSA6IDM5ID09PSBlLmtleUNvZGUgJiYgITAgPT09IHQub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ICYmIHQuY2hhbmdlU2xpZGUoewogICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICEwID09PSB0Lm9wdGlvbnMucnRsID8gInByZXZpb3VzIiA6ICJuZXh0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5sYXp5TG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmdW5jdGlvbiB0KHQpIHsKICAgICAgICAgICAgICAgIGUoImltZ1tkYXRhLWxhenldIiwgdCkuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZSh0aGlzKS5hdHRyKCJkYXRhLWxhenkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUodGhpcykuYXR0cigiZGF0YS1zcmNzZXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUodGhpcykuYXR0cigiZGF0YS1zaXplcyIpIHx8IG8uJHNsaWRlci5hdHRyKCJkYXRhLXNpemVzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKICAgICAgICAgICAgICAgICAgICBhLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgKHQuYXR0cigic3Jjc2V0IiwgaSksIHIgJiYgdC5hdHRyKCJzaXplcyIsIHIpKSwgdC5hdHRyKCJzcmMiLCBuKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlbW92ZUF0dHIoImRhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzIikucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBvLiRzbGlkZXIudHJpZ2dlcigibGF6eUxvYWRlZCIsIFtvLCB0LCBuXSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSwgYS5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlQXR0cigiZGF0YS1sYXp5IikucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKS5hZGRDbGFzcygic2xpY2stbGF6eWxvYWQtZXJyb3IiKSwgby4kc2xpZGVyLnRyaWdnZXIoImxhenlMb2FkRXJyb3IiLCBbbywgdCwgbl0pCiAgICAgICAgICAgICAgICAgICAgfSwgYS5zcmMgPSBuCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbiwgaSwgciwgbyA9IHRoaXM7CiAgICAgICAgICAgIGlmICghMCA9PT0gby5vcHRpb25zLmNlbnRlck1vZGUgPyAhMCA9PT0gby5vcHRpb25zLmluZmluaXRlID8gciA9IChpID0gby5jdXJyZW50U2xpZGUgKyAoby5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKSkgKyBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMiA6IChpID0gTWF0aC5tYXgoMCwgby5jdXJyZW50U2xpZGUgLSAoby5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKSksIHIgPSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEgKyAyICsgby5jdXJyZW50U2xpZGUpIDogKGkgPSBvLm9wdGlvbnMuaW5maW5pdGUgPyBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgby5jdXJyZW50U2xpZGUgOiBvLmN1cnJlbnRTbGlkZSwgciA9IE1hdGguY2VpbChpICsgby5vcHRpb25zLnNsaWRlc1RvU2hvdyksICEwID09PSBvLm9wdGlvbnMuZmFkZSAmJiAoaSA+IDAgJiYgaS0tLCByIDw9IG8uc2xpZGVDb3VudCAmJiByKyspKSwgbiA9IG8uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKS5zbGljZShpLCByKSwgImFudGljaXBhdGVkIiA9PT0gby5vcHRpb25zLmxhenlMb2FkKQogICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IGkgLSAxLCBzID0gciwgbCA9IG8uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKSwgYyA9IDA7IGMgPCBvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7IGMrKykgYSA8IDAgJiYgKGEgPSBvLnNsaWRlQ291bnQgLSAxKSwgbiA9IChuID0gbi5hZGQobC5lcShhKSkpLmFkZChsLmVxKHMpKSwgYS0tLCBzKys7CiAgICAgICAgICAgIHQobiksIG8uc2xpZGVDb3VudCA8PSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gdChvLiRzbGlkZXIuZmluZCgiLnNsaWNrLXNsaWRlIikpIDogby5jdXJyZW50U2xpZGUgPj0gby5zbGlkZUNvdW50IC0gby5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IHQoby4kc2xpZGVyLmZpbmQoIi5zbGljay1jbG9uZWQiKS5zbGljZSgwLCBvLm9wdGlvbnMuc2xpZGVzVG9TaG93KSkgOiAwID09PSBvLmN1cnJlbnRTbGlkZSAmJiB0KG8uJHNsaWRlci5maW5kKCIuc2xpY2stY2xvbmVkIikuc2xpY2UoLTEgKiBvLm9wdGlvbnMuc2xpZGVzVG9TaG93KSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5sb2FkU2xpZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgZS5zZXRQb3NpdGlvbigpLCBlLiRzbGlkZVRyYWNrLmNzcyh7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgIH0pLCBlLiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKSwgZS5pbml0VUkoKSwgInByb2dyZXNzaXZlIiA9PT0gZS5vcHRpb25zLmxhenlMb2FkICYmIGUucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpCiAgICAgICAgfSwgdC5wcm90b3R5cGUubmV4dCA9IHQucHJvdG90eXBlLnNsaWNrTmV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmNoYW5nZVNsaWRlKHsKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAibmV4dCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5vcmllbnRhdGlvbkNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmNoZWNrUmVzcG9uc2l2ZSgpLCB0aGlzLnNldFBvc2l0aW9uKCkKICAgICAgICB9LCB0LnByb3RvdHlwZS5wYXVzZSA9IHQucHJvdG90eXBlLnNsaWNrUGF1c2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5hdXRvUGxheUNsZWFyKCksIHRoaXMucGF1c2VkID0gITAKICAgICAgICB9LCB0LnByb3RvdHlwZS5wbGF5ID0gdC5wcm90b3R5cGUuc2xpY2tQbGF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgZS5hdXRvUGxheSgpLCBlLm9wdGlvbnMuYXV0b3BsYXkgPSAhMCwgZS5wYXVzZWQgPSAhMSwgZS5mb2N1c3NlZCA9ICExLCBlLmludGVycnVwdGVkID0gITEKICAgICAgICB9LCB0LnByb3RvdHlwZS5wb3N0U2xpZGUgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpczsKICAgICAgICAgICAgbi51bnNsaWNrZWQgfHwgKG4uJHNsaWRlci50cmlnZ2VyKCJhZnRlckNoYW5nZSIsIFtuLCB0XSksIG4uYW5pbWF0aW5nID0gITEsIG4uc2xpZGVDb3VudCA+IG4ub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgbi5zZXRQb3NpdGlvbigpLCBuLnN3aXBlTGVmdCA9IG51bGwsIG4ub3B0aW9ucy5hdXRvcGxheSAmJiBuLmF1dG9QbGF5KCksICEwID09PSBuLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSAmJiAobi5pbml0QURBKCksIG4ub3B0aW9ucy5mb2N1c09uQ2hhbmdlICYmIGUobi4kc2xpZGVzLmdldChuLmN1cnJlbnRTbGlkZSkpLmF0dHIoInRhYmluZGV4IiwgMCkuZm9jdXMoKSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUucHJldiA9IHQucHJvdG90eXBlLnNsaWNrUHJldiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmNoYW5nZVNsaWRlKHsKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAicHJldmlvdXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgdC5wcm90b3R5cGUucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICAgIH0sIHQucHJvdG90eXBlLnByb2dyZXNzaXZlTGF6eUxvYWQgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHQgPSB0IHx8IDE7CiAgICAgICAgICAgIHZhciBuLCBpLCByLCBvLCBhLCBzID0gdGhpcywKICAgICAgICAgICAgICAgIGwgPSBlKCJpbWdbZGF0YS1sYXp5XSIsIHMuJHNsaWRlcik7CiAgICAgICAgICAgIGwubGVuZ3RoID8gKG4gPSBsLmZpcnN0KCksIGkgPSBuLmF0dHIoImRhdGEtbGF6eSIpLCByID0gbi5hdHRyKCJkYXRhLXNyY3NldCIpLCBvID0gbi5hdHRyKCJkYXRhLXNpemVzIikgfHwgcy4kc2xpZGVyLmF0dHIoImRhdGEtc2l6ZXMiKSwgKGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByICYmIChuLmF0dHIoInNyY3NldCIsIHIpLCBvICYmIG4uYXR0cigic2l6ZXMiLCBvKSksIG4uYXR0cigic3JjIiwgaSkucmVtb3ZlQXR0cigiZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMiKS5yZW1vdmVDbGFzcygic2xpY2stbG9hZGluZyIpLCAhMCA9PT0gcy5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ICYmIHMuc2V0UG9zaXRpb24oKSwgcy4kc2xpZGVyLnRyaWdnZXIoImxhenlMb2FkZWQiLCBbcywgbiwgaV0pLCBzLnByb2dyZXNzaXZlTGF6eUxvYWQoKQogICAgICAgICAgICB9LCBhLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHQgPCAzID8gc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcy5wcm9ncmVzc2l2ZUxhenlMb2FkKHQgKyAxKQogICAgICAgICAgICAgICAgfSksIDUwMCkgOiAobi5yZW1vdmVBdHRyKCJkYXRhLWxhenkiKS5yZW1vdmVDbGFzcygic2xpY2stbG9hZGluZyIpLmFkZENsYXNzKCJzbGljay1sYXp5bG9hZC1lcnJvciIpLCBzLiRzbGlkZXIudHJpZ2dlcigibGF6eUxvYWRFcnJvciIsIFtzLCBuLCBpXSksIHMucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpKQogICAgICAgICAgICB9LCBhLnNyYyA9IGkpIDogcy4kc2xpZGVyLnRyaWdnZXIoImFsbEltYWdlc0xvYWRlZCIsIFtzXSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICB2YXIgbiwgaSwgciA9IHRoaXM7CiAgICAgICAgICAgIGkgPSByLnNsaWRlQ291bnQgLSByLm9wdGlvbnMuc2xpZGVzVG9TaG93LCAhci5vcHRpb25zLmluZmluaXRlICYmIHIuY3VycmVudFNsaWRlID4gaSAmJiAoci5jdXJyZW50U2xpZGUgPSBpKSwgci5zbGlkZUNvdW50IDw9IHIub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgKHIuY3VycmVudFNsaWRlID0gMCksIG4gPSByLmN1cnJlbnRTbGlkZSwgci5kZXN0cm95KCEwKSwgZS5leHRlbmQociwgci5pbml0aWFscywgewogICAgICAgICAgICAgICAgY3VycmVudFNsaWRlOiBuCiAgICAgICAgICAgIH0pLCByLmluaXQoKSwgdCB8fCByLmNoYW5nZVNsaWRlKHsKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiaW5kZXgiLAogICAgICAgICAgICAgICAgICAgIGluZGV4OiBuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sICExKQogICAgICAgIH0sIHQucHJvdG90eXBlLnJlZ2lzdGVyQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgbyA9IHIub3B0aW9ucy5yZXNwb25zaXZlIHx8IG51bGw7CiAgICAgICAgICAgIGlmICgiYXJyYXkiID09PSBlLnR5cGUobykgJiYgby5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZvciAodCBpbiByLnJlc3BvbmRUbyA9IHIub3B0aW9ucy5yZXNwb25kVG8gfHwgIndpbmRvdyIsIG8pCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSByLmJyZWFrcG9pbnRzLmxlbmd0aCAtIDEsIG8uaGFzT3duUHJvcGVydHkodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gb1t0XS5icmVha3BvaW50OyBpID49IDA7KSByLmJyZWFrcG9pbnRzW2ldICYmIHIuYnJlYWtwb2ludHNbaV0gPT09IG4gJiYgci5icmVha3BvaW50cy5zcGxpY2UoaSwgMSksIGktLTsKICAgICAgICAgICAgICAgICAgICAgICAgci5icmVha3BvaW50cy5wdXNoKG4pLCByLmJyZWFrcG9pbnRTZXR0aW5nc1tuXSA9IG9bdF0uc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByLmJyZWFrcG9pbnRzLnNvcnQoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5vcHRpb25zLm1vYmlsZUZpcnN0ID8gZSAtIHQgOiB0IC0gZQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0LnByb3RvdHlwZS5yZWluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICB0LiRzbGlkZXMgPSB0LiRzbGlkZVRyYWNrLmNoaWxkcmVuKHQub3B0aW9ucy5zbGlkZSkuYWRkQ2xhc3MoInNsaWNrLXNsaWRlIiksIHQuc2xpZGVDb3VudCA9IHQuJHNsaWRlcy5sZW5ndGgsIHQuY3VycmVudFNsaWRlID49IHQuc2xpZGVDb3VudCAmJiAwICE9PSB0LmN1cnJlbnRTbGlkZSAmJiAodC5jdXJyZW50U2xpZGUgPSB0LmN1cnJlbnRTbGlkZSAtIHQub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCksIHQuc2xpZGVDb3VudCA8PSB0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmICh0LmN1cnJlbnRTbGlkZSA9IDApLCB0LnJlZ2lzdGVyQnJlYWtwb2ludHMoKSwgdC5zZXRQcm9wcygpLCB0LnNldHVwSW5maW5pdGUoKSwgdC5idWlsZEFycm93cygpLCB0LnVwZGF0ZUFycm93cygpLCB0LmluaXRBcnJvd0V2ZW50cygpLCB0LmJ1aWxkRG90cygpLCB0LnVwZGF0ZURvdHMoKSwgdC5pbml0RG90RXZlbnRzKCksIHQuY2xlYW5VcFNsaWRlRXZlbnRzKCksIHQuaW5pdFNsaWRlRXZlbnRzKCksIHQuY2hlY2tSZXNwb25zaXZlKCExLCAhMCksICEwID09PSB0Lm9wdGlvbnMuZm9jdXNPblNlbGVjdCAmJiBlKHQuJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub24oImNsaWNrLnNsaWNrIiwgdC5zZWxlY3RIYW5kbGVyKSwgdC5zZXRTbGlkZUNsYXNzZXMoIm51bWJlciIgPT0gdHlwZW9mIHQuY3VycmVudFNsaWRlID8gdC5jdXJyZW50U2xpZGUgOiAwKSwgdC5zZXRQb3NpdGlvbigpLCB0LmZvY3VzSGFuZGxlcigpLCB0LnBhdXNlZCA9ICF0Lm9wdGlvbnMuYXV0b3BsYXksIHQuYXV0b1BsYXkoKSwgdC4kc2xpZGVyLnRyaWdnZXIoInJlSW5pdCIsIFt0XSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5yZXNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICBlKHdpbmRvdykud2lkdGgoKSAhPT0gdC53aW5kb3dXaWR0aCAmJiAoY2xlYXJUaW1lb3V0KHQud2luZG93RGVsYXkpLCB0LndpbmRvd0RlbGF5ID0gd2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdC53aW5kb3dXaWR0aCA9IGUod2luZG93KS53aWR0aCgpLCB0LmNoZWNrUmVzcG9uc2l2ZSgpLCB0LnVuc2xpY2tlZCB8fCB0LnNldFBvc2l0aW9uKCkKICAgICAgICAgICAgfSksIDUwKSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5yZW1vdmVTbGlkZSA9IHQucHJvdG90eXBlLnNsaWNrUmVtb3ZlID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IHRoaXM7CiAgICAgICAgICAgIGlmIChlID0gImJvb2xlYW4iID09IHR5cGVvZiBlID8gITAgPT09ICh0ID0gZSkgPyAwIDogaS5zbGlkZUNvdW50IC0gMSA6ICEwID09PSB0ID8gLS1lIDogZSwgaS5zbGlkZUNvdW50IDwgMSB8fCBlIDwgMCB8fCBlID4gaS5zbGlkZUNvdW50IC0gMSkgcmV0dXJuICExOwogICAgICAgICAgICBpLnVubG9hZCgpLCAhMCA9PT0gbiA/IGkuJHNsaWRlVHJhY2suY2hpbGRyZW4oKS5yZW1vdmUoKSA6IGkuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5lcShlKS5yZW1vdmUoKSwgaS4kc2xpZGVzID0gaS4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLCBpLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksIGkuJHNsaWRlVHJhY2suYXBwZW5kKGkuJHNsaWRlcyksIGkuJHNsaWRlc0NhY2hlID0gaS4kc2xpZGVzLCBpLnJlaW5pdCgpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuc2V0Q1NTID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICByID0ge307CiAgICAgICAgICAgICEwID09PSBpLm9wdGlvbnMucnRsICYmIChlID0gLWUpLCB0ID0gImxlZnQiID09IGkucG9zaXRpb25Qcm9wID8gTWF0aC5jZWlsKGUpICsgInB4IiA6ICIwcHgiLCBuID0gInRvcCIgPT0gaS5wb3NpdGlvblByb3AgPyBNYXRoLmNlaWwoZSkgKyAicHgiIDogIjBweCIsIHJbaS5wb3NpdGlvblByb3BdID0gZSwgITEgPT09IGkudHJhbnNmb3Jtc0VuYWJsZWQgPyBpLiRzbGlkZVRyYWNrLmNzcyhyKSA6IChyID0ge30sICExID09PSBpLmNzc1RyYW5zaXRpb25zID8gKHJbaS5hbmltVHlwZV0gPSAidHJhbnNsYXRlKCIgKyB0ICsgIiwgIiArIG4gKyAiKSIsIGkuJHNsaWRlVHJhY2suY3NzKHIpKSA6IChyW2kuYW5pbVR5cGVdID0gInRyYW5zbGF0ZTNkKCIgKyB0ICsgIiwgIiArIG4gKyAiLCAwcHgpIiwgaS4kc2xpZGVUcmFjay5jc3MocikpKQogICAgICAgIH0sIHQucHJvdG90eXBlLnNldERpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAhMSA9PT0gZS5vcHRpb25zLnZlcnRpY2FsID8gITAgPT09IGUub3B0aW9ucy5jZW50ZXJNb2RlICYmIGUuJGxpc3QuY3NzKHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6ICIwcHggIiArIGUub3B0aW9ucy5jZW50ZXJQYWRkaW5nCiAgICAgICAgICAgIH0pIDogKGUuJGxpc3QuaGVpZ2h0KGUuJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KCEwKSAqIGUub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCAhMCA9PT0gZS5vcHRpb25zLmNlbnRlck1vZGUgJiYgZS4kbGlzdC5jc3MoewogICAgICAgICAgICAgICAgcGFkZGluZzogZS5vcHRpb25zLmNlbnRlclBhZGRpbmcgKyAiIDBweCIKICAgICAgICAgICAgfSkpLCBlLmxpc3RXaWR0aCA9IGUuJGxpc3Qud2lkdGgoKSwgZS5saXN0SGVpZ2h0ID0gZS4kbGlzdC5oZWlnaHQoKSwgITEgPT09IGUub3B0aW9ucy52ZXJ0aWNhbCAmJiAhMSA9PT0gZS5vcHRpb25zLnZhcmlhYmxlV2lkdGggPyAoZS5zbGlkZVdpZHRoID0gTWF0aC5jZWlsKGUubGlzdFdpZHRoIC8gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyksIGUuJHNsaWRlVHJhY2sud2lkdGgoTWF0aC5jZWlsKGUuc2xpZGVXaWR0aCAqIGUuJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLmxlbmd0aCkpKSA6ICEwID09PSBlLm9wdGlvbnMudmFyaWFibGVXaWR0aCA/IGUuJHNsaWRlVHJhY2sud2lkdGgoNWUzICogZS5zbGlkZUNvdW50KSA6IChlLnNsaWRlV2lkdGggPSBNYXRoLmNlaWwoZS5saXN0V2lkdGgpLCBlLiRzbGlkZVRyYWNrLmhlaWdodChNYXRoLmNlaWwoZS4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQoITApICogZS4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikubGVuZ3RoKSkpOwogICAgICAgICAgICB2YXIgdCA9IGUuJHNsaWRlcy5maXJzdCgpLm91dGVyV2lkdGgoITApIC0gZS4kc2xpZGVzLmZpcnN0KCkud2lkdGgoKTsKICAgICAgICAgICAgITEgPT09IGUub3B0aW9ucy52YXJpYWJsZVdpZHRoICYmIGUuJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLndpZHRoKGUuc2xpZGVXaWR0aCAtIHQpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuc2V0RmFkZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCwgbiA9IHRoaXM7CiAgICAgICAgICAgIG4uJHNsaWRlcy5lYWNoKChmdW5jdGlvbihpLCByKSB7CiAgICAgICAgICAgICAgICB0ID0gbi5zbGlkZVdpZHRoICogaSAqIC0xLCAhMCA9PT0gbi5vcHRpb25zLnJ0bCA/IGUocikuY3NzKHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJlbGF0aXZlIiwKICAgICAgICAgICAgICAgICAgICByaWdodDogdCwKICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBuLm9wdGlvbnMuekluZGV4IC0gMiwKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgICAgICB9KSA6IGUocikuY3NzKHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogInJlbGF0aXZlIiwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LAogICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IG4ub3B0aW9ucy56SW5kZXggLSAyLAogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pKSwgbi4kc2xpZGVzLmVxKG4uY3VycmVudFNsaWRlKS5jc3MoewogICAgICAgICAgICAgICAgekluZGV4OiBuLm9wdGlvbnMuekluZGV4IC0gMSwKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRIZWlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICBpZiAoMSA9PT0gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAhMCA9PT0gZS5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0ICYmICExID09PSBlLm9wdGlvbnMudmVydGljYWwpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS4kc2xpZGVzLmVxKGUuY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCghMCk7CiAgICAgICAgICAgICAgICBlLiRsaXN0LmNzcygiaGVpZ2h0IiwgdCkKICAgICAgICAgICAgfQogICAgICAgIH0sIHQucHJvdG90eXBlLnNldE9wdGlvbiA9IHQucHJvdG90eXBlLnNsaWNrU2V0T3B0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpLCByLCBvLCBhID0gdGhpcywKICAgICAgICAgICAgICAgIHMgPSAhMTsKICAgICAgICAgICAgaWYgKCJvYmplY3QiID09PSBlLnR5cGUoYXJndW1lbnRzWzBdKSA/IChpID0gYXJndW1lbnRzWzBdLCBzID0gYXJndW1lbnRzWzFdLCBvID0gIm11bHRpcGxlIikgOiAic3RyaW5nIiA9PT0gZS50eXBlKGFyZ3VtZW50c1swXSkgJiYgKGkgPSBhcmd1bWVudHNbMF0sIHIgPSBhcmd1bWVudHNbMV0sIHMgPSBhcmd1bWVudHNbMl0sICJyZXNwb25zaXZlIiA9PT0gYXJndW1lbnRzWzBdICYmICJhcnJheSIgPT09IGUudHlwZShhcmd1bWVudHNbMV0pID8gbyA9ICJyZXNwb25zaXZlIiA6IHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdICYmIChvID0gInNpbmdsZSIpKSwgInNpbmdsZSIgPT09IG8pIGEub3B0aW9uc1tpXSA9IHI7CiAgICAgICAgICAgIGVsc2UgaWYgKCJtdWx0aXBsZSIgPT09IG8pIGUuZWFjaChpLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgYS5vcHRpb25zW2VdID0gdAogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGVsc2UgaWYgKCJyZXNwb25zaXZlIiA9PT0gbykKICAgICAgICAgICAgICAgIGZvciAobiBpbiByKQogICAgICAgICAgICAgICAgICAgIGlmICgiYXJyYXkiICE9PSBlLnR5cGUoYS5vcHRpb25zLnJlc3BvbnNpdmUpKSBhLm9wdGlvbnMucmVzcG9uc2l2ZSA9IFtyW25dXTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gYS5vcHRpb25zLnJlc3BvbnNpdmUubGVuZ3RoIC0gMTsgdCA+PSAwOykgYS5vcHRpb25zLnJlc3BvbnNpdmVbdF0uYnJlYWtwb2ludCA9PT0gcltuXS5icmVha3BvaW50ICYmIGEub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZSh0LCAxKSwgdC0tOwogICAgICAgICAgICAgICAgICAgICAgICBhLm9wdGlvbnMucmVzcG9uc2l2ZS5wdXNoKHJbbl0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICBzICYmIChhLnVubG9hZCgpLCBhLnJlaW5pdCgpKQogICAgICAgIH0sIHQucHJvdG90eXBlLnNldFBvc2l0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgZS5zZXREaW1lbnNpb25zKCksIGUuc2V0SGVpZ2h0KCksICExID09PSBlLm9wdGlvbnMuZmFkZSA/IGUuc2V0Q1NTKGUuZ2V0TGVmdChlLmN1cnJlbnRTbGlkZSkpIDogZS5zZXRGYWRlKCksIGUuJHNsaWRlci50cmlnZ2VyKCJzZXRQb3NpdGlvbiIsIFtlXSkKICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRQcm9wcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICB0ID0gZG9jdW1lbnQuYm9keS5zdHlsZTsKICAgICAgICAgICAgZS5wb3NpdGlvblByb3AgPSAhMCA9PT0gZS5vcHRpb25zLnZlcnRpY2FsID8gInRvcCIgOiAibGVmdCIsICJ0b3AiID09PSBlLnBvc2l0aW9uUHJvcCA/IGUuJHNsaWRlci5hZGRDbGFzcygic2xpY2stdmVydGljYWwiKSA6IGUuJHNsaWRlci5yZW1vdmVDbGFzcygic2xpY2stdmVydGljYWwiKSwgdm9pZCAwID09PSB0LldlYmtpdFRyYW5zaXRpb24gJiYgdm9pZCAwID09PSB0Lk1velRyYW5zaXRpb24gJiYgdm9pZCAwID09PSB0Lm1zVHJhbnNpdGlvbiB8fCAhMCA9PT0gZS5vcHRpb25zLnVzZUNTUyAmJiAoZS5jc3NUcmFuc2l0aW9ucyA9ICEwKSwgZS5vcHRpb25zLmZhZGUgJiYgKCJudW1iZXIiID09IHR5cGVvZiBlLm9wdGlvbnMuekluZGV4ID8gZS5vcHRpb25zLnpJbmRleCA8IDMgJiYgKGUub3B0aW9ucy56SW5kZXggPSAzKSA6IGUub3B0aW9ucy56SW5kZXggPSBlLmRlZmF1bHRzLnpJbmRleCksIHZvaWQgMCAhPT0gdC5PVHJhbnNmb3JtICYmIChlLmFuaW1UeXBlID0gIk9UcmFuc2Zvcm0iLCBlLnRyYW5zZm9ybVR5cGUgPSAiLW8tdHJhbnNmb3JtIiwgZS50cmFuc2l0aW9uVHlwZSA9ICJPVHJhbnNpdGlvbiIsIHZvaWQgMCA9PT0gdC5wZXJzcGVjdGl2ZVByb3BlcnR5ICYmIHZvaWQgMCA9PT0gdC53ZWJraXRQZXJzcGVjdGl2ZSAmJiAoZS5hbmltVHlwZSA9ICExKSksIHZvaWQgMCAhPT0gdC5Nb3pUcmFuc2Zvcm0gJiYgKGUuYW5pbVR5cGUgPSAiTW96VHJhbnNmb3JtIiwgZS50cmFuc2Zvcm1UeXBlID0gIi1tb3otdHJhbnNmb3JtIiwgZS50cmFuc2l0aW9uVHlwZSA9ICJNb3pUcmFuc2l0aW9uIiwgdm9pZCAwID09PSB0LnBlcnNwZWN0aXZlUHJvcGVydHkgJiYgdm9pZCAwID09PSB0Lk1velBlcnNwZWN0aXZlICYmIChlLmFuaW1UeXBlID0gITEpKSwgdm9pZCAwICE9PSB0LndlYmtpdFRyYW5zZm9ybSAmJiAoZS5hbmltVHlwZSA9ICJ3ZWJraXRUcmFuc2Zvcm0iLCBlLnRyYW5zZm9ybVR5cGUgPSAiLXdlYmtpdC10cmFuc2Zvcm0iLCBlLnRyYW5zaXRpb25UeXBlID0gIndlYmtpdFRyYW5zaXRpb24iLCB2b2lkIDAgPT09IHQucGVyc3BlY3RpdmVQcm9wZXJ0eSAmJiB2b2lkIDAgPT09IHQud2Via2l0UGVyc3BlY3RpdmUgJiYgKGUuYW5pbVR5cGUgPSAhMSkpLCB2b2lkIDAgIT09IHQubXNUcmFuc2Zvcm0gJiYgKGUuYW5pbVR5cGUgPSAibXNUcmFuc2Zvcm0iLCBlLnRyYW5zZm9ybVR5cGUgPSAiLW1zLXRyYW5zZm9ybSIsIGUudHJhbnNpdGlvblR5cGUgPSAibXNUcmFuc2l0aW9uIiwgdm9pZCAwID09PSB0Lm1zVHJhbnNmb3JtICYmIChlLmFuaW1UeXBlID0gITEpKSwgdm9pZCAwICE9PSB0LnRyYW5zZm9ybSAmJiAhMSAhPT0gZS5hbmltVHlwZSAmJiAoZS5hbmltVHlwZSA9ICJ0cmFuc2Zvcm0iLCBlLnRyYW5zZm9ybVR5cGUgPSAidHJhbnNmb3JtIiwgZS50cmFuc2l0aW9uVHlwZSA9ICJ0cmFuc2l0aW9uIiksIGUudHJhbnNmb3Jtc0VuYWJsZWQgPSBlLm9wdGlvbnMudXNlVHJhbnNmb3JtICYmIG51bGwgIT09IGUuYW5pbVR5cGUgJiYgITEgIT09IGUuYW5pbVR5cGUKICAgICAgICB9LCB0LnByb3RvdHlwZS5zZXRTbGlkZUNsYXNzZXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpLCByLCBvID0gdGhpczsKICAgICAgICAgICAgaWYgKG4gPSBvLiRzbGlkZXIuZmluZCgiLnNsaWNrLXNsaWRlIikucmVtb3ZlQ2xhc3MoInNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stY3VycmVudCIpLmF0dHIoImFyaWEtaGlkZGVuIiwgInRydWUiKSwgby4kc2xpZGVzLmVxKGUpLmFkZENsYXNzKCJzbGljay1jdXJyZW50IiksICEwID09PSBvLm9wdGlvbnMuY2VudGVyTW9kZSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ICUgMiA9PSAwID8gMSA6IDA7CiAgICAgICAgICAgICAgICB0ID0gTWF0aC5mbG9vcihvLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiksICEwID09PSBvLm9wdGlvbnMuaW5maW5pdGUgJiYgKGUgPj0gdCAmJiBlIDw9IG8uc2xpZGVDb3VudCAtIDEgLSB0ID8gby4kc2xpZGVzLnNsaWNlKGUgLSB0ICsgYSwgZSArIHQgKyAxKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSA6IChpID0gby5vcHRpb25zLnNsaWRlc1RvU2hvdyArIGUsIG4uc2xpY2UoaSAtIHQgKyAxICsgYSwgaSArIHQgKyAyKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSksIDAgPT09IGUgPyBuLmVxKG4ubGVuZ3RoIC0gMSAtIG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLmFkZENsYXNzKCJzbGljay1jZW50ZXIiKSA6IGUgPT09IG8uc2xpZGVDb3VudCAtIDEgJiYgbi5lcShvLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stY2VudGVyIikpLCBvLiRzbGlkZXMuZXEoZSkuYWRkQ2xhc3MoInNsaWNrLWNlbnRlciIpCiAgICAgICAgICAgIH0gZWxzZSBlID49IDAgJiYgZSA8PSBvLnNsaWRlQ291bnQgLSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93ID8gby4kc2xpZGVzLnNsaWNlKGUsIGUgKyBvLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSA6IG4ubGVuZ3RoIDw9IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBuLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKS5hdHRyKCJhcmlhLWhpZGRlbiIsICJmYWxzZSIpIDogKHIgPSBvLnNsaWRlQ291bnQgJSBvLm9wdGlvbnMuc2xpZGVzVG9TaG93LCBpID0gITAgPT09IG8ub3B0aW9ucy5pbmZpbml0ZSA/IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBlIDogZSwgby5vcHRpb25zLnNsaWRlc1RvU2hvdyA9PSBvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgJiYgby5zbGlkZUNvdW50IC0gZSA8IG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPyBuLnNsaWNlKGkgLSAoby5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIHIpLCBpICsgcikuYWRkQ2xhc3MoInNsaWNrLWFjdGl2ZSIpLmF0dHIoImFyaWEtaGlkZGVuIiwgImZhbHNlIikgOiBuLnNsaWNlKGksIGkgKyBvLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKSk7CiAgICAgICAgICAgICJvbmRlbWFuZCIgIT09IG8ub3B0aW9ucy5sYXp5TG9hZCAmJiAiYW50aWNpcGF0ZWQiICE9PSBvLm9wdGlvbnMubGF6eUxvYWQgfHwgby5sYXp5TG9hZCgpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuc2V0dXBJbmZpbml0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IHRoaXM7CiAgICAgICAgICAgIGlmICghMCA9PT0gci5vcHRpb25zLmZhZGUgJiYgKHIub3B0aW9ucy5jZW50ZXJNb2RlID0gITEpLCAhMCA9PT0gci5vcHRpb25zLmluZmluaXRlICYmICExID09PSByLm9wdGlvbnMuZmFkZSAmJiAobiA9IG51bGwsIHIuc2xpZGVDb3VudCA+IHIub3B0aW9ucy5zbGlkZXNUb1Nob3cpKSB7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAhMCA9PT0gci5vcHRpb25zLmNlbnRlck1vZGUgPyByLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMSA6IHIub3B0aW9ucy5zbGlkZXNUb1Nob3csIHQgPSByLnNsaWRlQ291bnQ7IHQgPiByLnNsaWRlQ291bnQgLSBpOyB0IC09IDEpIG4gPSB0IC0gMSwgZShyLiRzbGlkZXNbbl0pLmNsb25lKCEwKS5hdHRyKCJpZCIsICIiKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IiwgbiAtIHIuc2xpZGVDb3VudCkucHJlcGVuZFRvKHIuJHNsaWRlVHJhY2spLmFkZENsYXNzKCJzbGljay1jbG9uZWQiKTsKICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBpICsgci5zbGlkZUNvdW50OyB0ICs9IDEpIG4gPSB0LCBlKHIuJHNsaWRlc1tuXSkuY2xvbmUoITApLmF0dHIoImlkIiwgIiIpLmF0dHIoImRhdGEtc2xpY2staW5kZXgiLCBuICsgci5zbGlkZUNvdW50KS5hcHBlbmRUbyhyLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygic2xpY2stY2xvbmVkIik7CiAgICAgICAgICAgICAgICByLiRzbGlkZVRyYWNrLmZpbmQoIi5zbGljay1jbG9uZWQiKS5maW5kKCJbaWRdIikuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZSh0aGlzKS5hdHRyKCJpZCIsICIiKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9LCB0LnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUgfHwgdGhpcy5hdXRvUGxheSgpLCB0aGlzLmludGVycnVwdGVkID0gZQogICAgICAgIH0sIHQucHJvdG90eXBlLnNlbGVjdEhhbmRsZXIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgIGkgPSBlKHQudGFyZ2V0KS5pcygiLnNsaWNrLXNsaWRlIikgPyBlKHQudGFyZ2V0KSA6IGUodC50YXJnZXQpLnBhcmVudHMoIi5zbGljay1zbGlkZSIpLAogICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KGkuYXR0cigiZGF0YS1zbGljay1pbmRleCIpKTsKICAgICAgICAgICAgciB8fCAociA9IDApLCBuLnNsaWRlQ291bnQgPD0gbi5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IG4uc2xpZGVIYW5kbGVyKHIsICExLCAhMCkgOiBuLnNsaWRlSGFuZGxlcihyKQogICAgICAgIH0sIHQucHJvdG90eXBlLnNsaWRlSGFuZGxlciA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwgPSBudWxsLAogICAgICAgICAgICAgICAgYyA9IHRoaXM7CiAgICAgICAgICAgIGlmICh0ID0gdCB8fCAhMSwgISghMCA9PT0gYy5hbmltYXRpbmcgJiYgITAgPT09IGMub3B0aW9ucy53YWl0Rm9yQW5pbWF0ZSB8fCAhMCA9PT0gYy5vcHRpb25zLmZhZGUgJiYgYy5jdXJyZW50U2xpZGUgPT09IGUpKQogICAgICAgICAgICAgICAgaWYgKCExID09PSB0ICYmIGMuYXNOYXZGb3IoZSksIGkgPSBlLCBsID0gYy5nZXRMZWZ0KGkpLCBhID0gYy5nZXRMZWZ0KGMuY3VycmVudFNsaWRlKSwgYy5jdXJyZW50TGVmdCA9IG51bGwgPT09IGMuc3dpcGVMZWZ0ID8gYSA6IGMuc3dpcGVMZWZ0LCAhMSA9PT0gYy5vcHRpb25zLmluZmluaXRlICYmICExID09PSBjLm9wdGlvbnMuY2VudGVyTW9kZSAmJiAoZSA8IDAgfHwgZSA+IGMuZ2V0RG90Q291bnQoKSAqIGMub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpICExID09PSBjLm9wdGlvbnMuZmFkZSAmJiAoaSA9IGMuY3VycmVudFNsaWRlLCAhMCAhPT0gbiA/IGMuYW5pbWF0ZVNsaWRlKGEsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjLnBvc3RTbGlkZShpKQogICAgICAgICAgICAgICAgfSkpIDogYy5wb3N0U2xpZGUoaSkpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoITEgPT09IGMub3B0aW9ucy5pbmZpbml0ZSAmJiAhMCA9PT0gYy5vcHRpb25zLmNlbnRlck1vZGUgJiYgKGUgPCAwIHx8IGUgPiBjLnNsaWRlQ291bnQgLSBjLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpKSAhMSA9PT0gYy5vcHRpb25zLmZhZGUgJiYgKGkgPSBjLmN1cnJlbnRTbGlkZSwgITAgIT09IG4gPyBjLmFuaW1hdGVTbGlkZShhLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjLnBvc3RTbGlkZShpKQogICAgICAgICAgICB9KSkgOiBjLnBvc3RTbGlkZShpKSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGMub3B0aW9ucy5hdXRvcGxheSAmJiBjbGVhckludGVydmFsKGMuYXV0b1BsYXlUaW1lciksIHIgPSBpIDwgMCA/IGMuc2xpZGVDb3VudCAlIGMub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPSAwID8gYy5zbGlkZUNvdW50IC0gYy5zbGlkZUNvdW50ICUgYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIDogYy5zbGlkZUNvdW50ICsgaSA6IGkgPj0gYy5zbGlkZUNvdW50ID8gYy5zbGlkZUNvdW50ICUgYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9IDAgPyAwIDogaSAtIGMuc2xpZGVDb3VudCA6IGksIGMuYW5pbWF0aW5nID0gITAsIGMuJHNsaWRlci50cmlnZ2VyKCJiZWZvcmVDaGFuZ2UiLCBbYywgYy5jdXJyZW50U2xpZGUsIHJdKSwgbyA9IGMuY3VycmVudFNsaWRlLCBjLmN1cnJlbnRTbGlkZSA9IHIsIGMuc2V0U2xpZGVDbGFzc2VzKGMuY3VycmVudFNsaWRlKSwgYy5vcHRpb25zLmFzTmF2Rm9yICYmIChzID0gKHMgPSBjLmdldE5hdlRhcmdldCgpKS5zbGljaygiZ2V0U2xpY2siKSkuc2xpZGVDb3VudCA8PSBzLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIHMuc2V0U2xpZGVDbGFzc2VzKGMuY3VycmVudFNsaWRlKSwgYy51cGRhdGVEb3RzKCksIGMudXBkYXRlQXJyb3dzKCksICEwID09PSBjLm9wdGlvbnMuZmFkZSkgcmV0dXJuICEwICE9PSBuID8gKGMuZmFkZVNsaWRlT3V0KG8pLCBjLmZhZGVTbGlkZShyLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgYy5wb3N0U2xpZGUocikKICAgICAgICAgICAgICAgIH0pKSkgOiBjLnBvc3RTbGlkZShyKSwgdm9pZCBjLmFuaW1hdGVIZWlnaHQoKTsKICAgICAgICAgICAgICAgICEwICE9PSBuID8gYy5hbmltYXRlU2xpZGUobCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGMucG9zdFNsaWRlKHIpCiAgICAgICAgICAgICAgICB9KSkgOiBjLnBvc3RTbGlkZShyKQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5wcm90b3R5cGUuc3RhcnRMb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgITAgPT09IGUub3B0aW9ucy5hcnJvd3MgJiYgZS5zbGlkZUNvdW50ID4gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAoZS4kcHJldkFycm93LmhpZGUoKSwgZS4kbmV4dEFycm93LmhpZGUoKSksICEwID09PSBlLm9wdGlvbnMuZG90cyAmJiBlLnNsaWRlQ291bnQgPiBlLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIGUuJGRvdHMuaGlkZSgpLCBlLiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLWxvYWRpbmciKQogICAgICAgIH0sIHQucHJvdG90eXBlLnN3aXBlRGlyZWN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlLCB0LCBuLCBpLCByID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIGUgPSByLnRvdWNoT2JqZWN0LnN0YXJ0WCAtIHIudG91Y2hPYmplY3QuY3VyWCwgdCA9IHIudG91Y2hPYmplY3Quc3RhcnRZIC0gci50b3VjaE9iamVjdC5jdXJZLCBuID0gTWF0aC5hdGFuMih0LCBlKSwgKGkgPSBNYXRoLnJvdW5kKDE4MCAqIG4gLyBNYXRoLlBJKSkgPCAwICYmIChpID0gMzYwIC0gTWF0aC5hYnMoaSkpLCBpIDw9IDQ1ICYmIGkgPj0gMCB8fCBpIDw9IDM2MCAmJiBpID49IDMxNSA/ICExID09PSByLm9wdGlvbnMucnRsID8gImxlZnQiIDogInJpZ2h0IiA6IGkgPj0gMTM1ICYmIGkgPD0gMjI1ID8gITEgPT09IHIub3B0aW9ucy5ydGwgPyAicmlnaHQiIDogImxlZnQiIDogITAgPT09IHIub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgPyBpID49IDM1ICYmIGkgPD0gMTM1ID8gImRvd24iIDogInVwIiA6ICJ2ZXJ0aWNhbCIKICAgICAgICB9LCB0LnByb3RvdHlwZS5zd2lwZUVuZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSB0aGlzOwogICAgICAgICAgICBpZiAoaS5kcmFnZ2luZyA9ICExLCBpLnN3aXBpbmcgPSAhMSwgaS5zY3JvbGxpbmcpIHJldHVybiBpLnNjcm9sbGluZyA9ICExLCAhMTsKICAgICAgICAgICAgaWYgKGkuaW50ZXJydXB0ZWQgPSAhMSwgaS5zaG91bGRDbGljayA9ICEoaS50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+IDEwKSwgdm9pZCAwID09PSBpLnRvdWNoT2JqZWN0LmN1clgpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKCEwID09PSBpLnRvdWNoT2JqZWN0LmVkZ2VIaXQgJiYgaS4kc2xpZGVyLnRyaWdnZXIoImVkZ2UiLCBbaSwgaS5zd2lwZURpcmVjdGlvbigpXSksIGkudG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPj0gaS50b3VjaE9iamVjdC5taW5Td2lwZSkgewogICAgICAgICAgICAgICAgc3dpdGNoIChuID0gaS5zd2lwZURpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGVmdCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiZG93biI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBpLm9wdGlvbnMuc3dpcGVUb1NsaWRlID8gaS5jaGVja05hdmlnYWJsZShpLmN1cnJlbnRTbGlkZSArIGkuZ2V0U2xpZGVDb3VudCgpKSA6IGkuY3VycmVudFNsaWRlICsgaS5nZXRTbGlkZUNvdW50KCksIGkuY3VycmVudERpcmVjdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJ1cCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBpLm9wdGlvbnMuc3dpcGVUb1NsaWRlID8gaS5jaGVja05hdmlnYWJsZShpLmN1cnJlbnRTbGlkZSAtIGkuZ2V0U2xpZGVDb3VudCgpKSA6IGkuY3VycmVudFNsaWRlIC0gaS5nZXRTbGlkZUNvdW50KCksIGkuY3VycmVudERpcmVjdGlvbiA9IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICJ2ZXJ0aWNhbCIgIT0gbiAmJiAoaS5zbGlkZUhhbmRsZXIodCksIGkudG91Y2hPYmplY3QgPSB7fSwgaS4kc2xpZGVyLnRyaWdnZXIoInN3aXBlIiwgW2ksIG5dKSkKICAgICAgICAgICAgfSBlbHNlIGkudG91Y2hPYmplY3Quc3RhcnRYICE9PSBpLnRvdWNoT2JqZWN0LmN1clggJiYgKGkuc2xpZGVIYW5kbGVyKGkuY3VycmVudFNsaWRlKSwgaS50b3VjaE9iamVjdCA9IHt9KQogICAgICAgIH0sIHQucHJvdG90eXBlLnN3aXBlSGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgICBpZiAoISghMSA9PT0gdC5vcHRpb25zLnN3aXBlIHx8ICJvbnRvdWNoZW5kIiBpbiBkb2N1bWVudCAmJiAhMSA9PT0gdC5vcHRpb25zLnN3aXBlIHx8ICExID09PSB0Lm9wdGlvbnMuZHJhZ2dhYmxlICYmIC0xICE9PSBlLnR5cGUuaW5kZXhPZigibW91c2UiKSkpIHN3aXRjaCAodC50b3VjaE9iamVjdC5maW5nZXJDb3VudCA9IGUub3JpZ2luYWxFdmVudCAmJiB2b2lkIDAgIT09IGUub3JpZ2luYWxFdmVudC50b3VjaGVzID8gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoIDogMSwgdC50b3VjaE9iamVjdC5taW5Td2lwZSA9IHQubGlzdFdpZHRoIC8gdC5vcHRpb25zLnRvdWNoVGhyZXNob2xkLCAhMCA9PT0gdC5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyAmJiAodC50b3VjaE9iamVjdC5taW5Td2lwZSA9IHQubGlzdEhlaWdodCAvIHQub3B0aW9ucy50b3VjaFRocmVzaG9sZCksIGUuZGF0YS5hY3Rpb24pIHsKICAgICAgICAgICAgICAgIGNhc2UgInN0YXJ0IjoKICAgICAgICAgICAgICAgICAgICB0LnN3aXBlU3RhcnQoZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJtb3ZlIjoKICAgICAgICAgICAgICAgICAgICB0LnN3aXBlTW92ZShlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgdC5zd2lwZUVuZChlKQogICAgICAgICAgICB9CiAgICAgICAgfSwgdC5wcm90b3R5cGUuc3dpcGVNb3ZlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSwgcyA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBvID0gdm9pZCAwICE9PSBlLm9yaWdpbmFsRXZlbnQgPyBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcyA6IG51bGwsICEoIXMuZHJhZ2dpbmcgfHwgcy5zY3JvbGxpbmcgfHwgbyAmJiAxICE9PSBvLmxlbmd0aCkgJiYgKHQgPSBzLmdldExlZnQocy5jdXJyZW50U2xpZGUpLCBzLnRvdWNoT2JqZWN0LmN1clggPSB2b2lkIDAgIT09IG8gPyBvWzBdLnBhZ2VYIDogZS5jbGllbnRYLCBzLnRvdWNoT2JqZWN0LmN1clkgPSB2b2lkIDAgIT09IG8gPyBvWzBdLnBhZ2VZIDogZS5jbGllbnRZLCBzLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocy50b3VjaE9iamVjdC5jdXJYIC0gcy50b3VjaE9iamVjdC5zdGFydFgsIDIpKSksIGEgPSBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhzLnRvdWNoT2JqZWN0LmN1clkgLSBzLnRvdWNoT2JqZWN0LnN0YXJ0WSwgMikpKSwgIXMub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgIXMuc3dpcGluZyAmJiBhID4gNCA/IChzLnNjcm9sbGluZyA9ICEwLCAhMSkgOiAoITAgPT09IHMub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcgJiYgKHMudG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSBhKSwgbiA9IHMuc3dpcGVEaXJlY3Rpb24oKSwgdm9pZCAwICE9PSBlLm9yaWdpbmFsRXZlbnQgJiYgcy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+IDQgJiYgKHMuc3dpcGluZyA9ICEwLCBlLnByZXZlbnREZWZhdWx0KCkpLCByID0gKCExID09PSBzLm9wdGlvbnMucnRsID8gMSA6IC0xKSAqIChzLnRvdWNoT2JqZWN0LmN1clggPiBzLnRvdWNoT2JqZWN0LnN0YXJ0WCA/IDEgOiAtMSksICEwID09PSBzLm9wdGlvbnMudmVydGljYWxTd2lwaW5nICYmIChyID0gcy50b3VjaE9iamVjdC5jdXJZID4gcy50b3VjaE9iamVjdC5zdGFydFkgPyAxIDogLTEpLCBpID0gcy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCwgcy50b3VjaE9iamVjdC5lZGdlSGl0ID0gITEsICExID09PSBzLm9wdGlvbnMuaW5maW5pdGUgJiYgKDAgPT09IHMuY3VycmVudFNsaWRlICYmICJyaWdodCIgPT09IG4gfHwgcy5jdXJyZW50U2xpZGUgPj0gcy5nZXREb3RDb3VudCgpICYmICJsZWZ0IiA9PT0gbikgJiYgKGkgPSBzLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoICogcy5vcHRpb25zLmVkZ2VGcmljdGlvbiwgcy50b3VjaE9iamVjdC5lZGdlSGl0ID0gITApLCAhMSA9PT0gcy5vcHRpb25zLnZlcnRpY2FsID8gcy5zd2lwZUxlZnQgPSB0ICsgaSAqIHIgOiBzLnN3aXBlTGVmdCA9IHQgKyBpICogKHMuJGxpc3QuaGVpZ2h0KCkgLyBzLmxpc3RXaWR0aCkgKiByLCAhMCA9PT0gcy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyAmJiAocy5zd2lwZUxlZnQgPSB0ICsgaSAqIHIpLCAhMCAhPT0gcy5vcHRpb25zLmZhZGUgJiYgITEgIT09IHMub3B0aW9ucy50b3VjaE1vdmUgJiYgKCEwID09PSBzLmFuaW1hdGluZyA/IChzLnN3aXBlTGVmdCA9IG51bGwsICExKSA6IHZvaWQgcy5zZXRDU1Mocy5zd2lwZUxlZnQpKSkpCiAgICAgICAgfSwgdC5wcm90b3R5cGUuc3dpcGVTdGFydCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4gPSB0aGlzOwogICAgICAgICAgICBpZiAobi5pbnRlcnJ1cHRlZCA9ICEwLCAxICE9PSBuLnRvdWNoT2JqZWN0LmZpbmdlckNvdW50IHx8IG4uc2xpZGVDb3VudCA8PSBuLm9wdGlvbnMuc2xpZGVzVG9TaG93KSByZXR1cm4gbi50b3VjaE9iamVjdCA9IHt9LCAhMTsKICAgICAgICAgICAgdm9pZCAwICE9PSBlLm9yaWdpbmFsRXZlbnQgJiYgdm9pZCAwICE9PSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcyAmJiAodCA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdKSwgbi50b3VjaE9iamVjdC5zdGFydFggPSBuLnRvdWNoT2JqZWN0LmN1clggPSB2b2lkIDAgIT09IHQgPyB0LnBhZ2VYIDogZS5jbGllbnRYLCBuLnRvdWNoT2JqZWN0LnN0YXJ0WSA9IG4udG91Y2hPYmplY3QuY3VyWSA9IHZvaWQgMCAhPT0gdCA/IHQucGFnZVkgOiBlLmNsaWVudFksIG4uZHJhZ2dpbmcgPSAhMAogICAgICAgIH0sIHQucHJvdG90eXBlLnVuZmlsdGVyU2xpZGVzID0gdC5wcm90b3R5cGUuc2xpY2tVbmZpbHRlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgIG51bGwgIT09IGUuJHNsaWRlc0NhY2hlICYmIChlLnVubG9hZCgpLCBlLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksIGUuJHNsaWRlc0NhY2hlLmFwcGVuZFRvKGUuJHNsaWRlVHJhY2spLCBlLnJlaW5pdCgpKQogICAgICAgIH0sIHQucHJvdG90eXBlLnVubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIGUoIi5zbGljay1jbG9uZWQiLCB0LiRzbGlkZXIpLnJlbW92ZSgpLCB0LiRkb3RzICYmIHQuJGRvdHMucmVtb3ZlKCksIHQuJHByZXZBcnJvdyAmJiB0Lmh0bWxFeHByLnRlc3QodC5vcHRpb25zLnByZXZBcnJvdykgJiYgdC4kcHJldkFycm93LnJlbW92ZSgpLCB0LiRuZXh0QXJyb3cgJiYgdC5odG1sRXhwci50ZXN0KHQub3B0aW9ucy5uZXh0QXJyb3cpICYmIHQuJG5leHRBcnJvdy5yZW1vdmUoKSwgdC4kc2xpZGVzLnJlbW92ZUNsYXNzKCJzbGljay1zbGlkZSBzbGljay1hY3RpdmUgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50IikuYXR0cigiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpLmNzcygid2lkdGgiLCAiIikKICAgICAgICB9LCB0LnByb3RvdHlwZS51bnNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgIHQuJHNsaWRlci50cmlnZ2VyKCJ1bnNsaWNrIiwgW3QsIGVdKSwgdC5kZXN0cm95KCkKICAgICAgICB9LCB0LnByb3RvdHlwZS51cGRhdGVBcnJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICBNYXRoLmZsb29yKGUub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKSwgITAgPT09IGUub3B0aW9ucy5hcnJvd3MgJiYgZS5zbGlkZUNvdW50ID4gZS5vcHRpb25zLnNsaWRlc1RvU2hvdyAmJiAhZS5vcHRpb25zLmluZmluaXRlICYmIChlLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpLCBlLiRuZXh0QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpLCAwID09PSBlLmN1cnJlbnRTbGlkZSA/IChlLiRwcmV2QXJyb3cuYWRkQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJ0cnVlIiksIGUuJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwgImZhbHNlIikpIDogKGUuY3VycmVudFNsaWRlID49IGUuc2xpZGVDb3VudCAtIGUub3B0aW9ucy5zbGlkZXNUb1Nob3cgJiYgITEgPT09IGUub3B0aW9ucy5jZW50ZXJNb2RlIHx8IGUuY3VycmVudFNsaWRlID49IGUuc2xpZGVDb3VudCAtIDEgJiYgITAgPT09IGUub3B0aW9ucy5jZW50ZXJNb2RlKSAmJiAoZS4kbmV4dEFycm93LmFkZENsYXNzKCJzbGljay1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCAidHJ1ZSIpLCBlLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoInNsaWNrLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsICJmYWxzZSIpKSkKICAgICAgICB9LCB0LnByb3RvdHlwZS51cGRhdGVEb3RzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgbnVsbCAhPT0gZS4kZG90cyAmJiAoZS4kZG90cy5maW5kKCJsaSIpLnJlbW92ZUNsYXNzKCJzbGljay1hY3RpdmUiKS5lbmQoKSwgZS4kZG90cy5maW5kKCJsaSIpLmVxKE1hdGguZmxvb3IoZS5jdXJyZW50U2xpZGUgLyBlLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikpCiAgICAgICAgfSwgdC5wcm90b3R5cGUudmlzaWJpbGl0eSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgIGUub3B0aW9ucy5hdXRvcGxheSAmJiAoZG9jdW1lbnRbZS5oaWRkZW5dID8gZS5pbnRlcnJ1cHRlZCA9ICEwIDogZS5pbnRlcnJ1cHRlZCA9ICExKQogICAgICAgIH0sIGUuZm4uc2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUsIG4sIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgciA9IGFyZ3VtZW50c1swXSwKICAgICAgICAgICAgICAgIG8gPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLAogICAgICAgICAgICAgICAgYSA9IGkubGVuZ3RoOwogICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgYTsgZSsrKQogICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiByIHx8IHZvaWQgMCA9PT0gciA/IGlbZV0uc2xpY2sgPSBuZXcgdChpW2VdLCByKSA6IG4gPSBpW2VdLnNsaWNrW3JdLmFwcGx5KGlbZV0uc2xpY2ssIG8pLCB2b2lkIDAgIT09IG4pIHJldHVybiBuOwogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0KICAgIH0pKSwKICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgPSB0KCkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbXSwgdCkgOiAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IGV4cG9ydHMuQ2xpcGJvYXJkSlMgPSB0KCkgOiBlLkNsaXBib2FyZEpTID0gdCgpCiAgICB9KHRoaXMsIChmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdCA9IHsKICAgICAgICAgICAgNjg2OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgICAgICAgICBuLmQodCwgewogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdCA9IG4oMjc5KTsKICAgICAgICAgICAgICAgIHZhciBpID0gbi5uKHQpLAogICAgICAgICAgICAgICAgICAgIHIgPSAodCA9IG4oMzcwKSwgbi5uKHQpKSwKICAgICAgICAgICAgICAgICAgICBvID0gKHQgPSBuKDgxNyksIG4ubih0KSk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmV4ZWNDb21tYW5kKGUpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA9IG8oKShlKSwgYSgiY3V0IiksIGUKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gbChlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGk7CiAgICAgICAgICAgICAgICAgICAgbiA9IGUsIGkgPSAicnRsIiA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIiksIChlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSkuc3R5bGUuZm9udFNpemUgPSAiMTJwdCIsIGUuc3R5bGUuYm9yZGVyID0gIjAiLCBlLnN0eWxlLnBhZGRpbmcgPSAiMCIsIGUuc3R5bGUubWFyZ2luID0gIjAiLCBlLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgZS5zdHlsZVtpID8gInJpZ2h0IiA6ICJsZWZ0Il0gPSAiLTk5OTlweCIsIGkgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCwgZS5zdHlsZS50b3AgPSAiIi5jb25jYXQoaSwgInB4IiksIGUuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsICIiKSwgZS52YWx1ZSA9IG4sIGUgPSBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChlKSwgdCA9IG8oKShlKSwgYSgiY29weSIpLCBlLnJlbW92ZSgpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgYyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IDEgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAiIjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBuID0gbChlLCB0KSA6IGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmICFbInRleHQiLCAic2VhcmNoIiwgInVybCIsICJ0ZWwiLCAicGFzc3dvcmQiXS5pbmNsdWRlcyhudWxsID09IGUgPyB2b2lkIDAgOiBlLnR5cGUpID8gbiA9IGwoZS52YWx1ZSwgdCkgOiAobiA9IG8oKShlKSwgYSgiY29weSIpKSwgbgogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgInN5bWJvbCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBlCiAgICAgICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmIGUuY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBlICE9PSBTeW1ib2wucHJvdG90eXBlID8gInN5bWJvbCIgOiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgIH0pKGUpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgU3ltYm9sICYmICJzeW1ib2wiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZQogICAgICAgICAgICAgICAgICAgIH0gOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiBlLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgZSAhPT0gU3ltYm9sLnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIGUKICAgICAgICAgICAgICAgICAgICB9KShlKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGgoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdC5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRbbl07CiAgICAgICAgICAgICAgICAgICAgICAgIGkuZW51bWVyYWJsZSA9IGkuZW51bWVyYWJsZSB8fCAhMSwgaS5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiBpICYmIChpLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgaS5rZXksIGkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYoZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLl9fcHJvdG9fXyA9IHQsIGUKICAgICAgICAgICAgICAgICAgICB9KShlLCB0KQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAocCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKQogICAgICAgICAgICAgICAgICAgIH0pKGUpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gZyhlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSAiZGF0YS1jbGlwYm9hcmQtIi5jb25jYXQoZSksIHQuaGFzQXR0cmlidXRlKGUpKSByZXR1cm4gdC5nZXRBdHRyaWJ1dGUoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0ICYmIG51bGwgIT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0ICYmIHQucHJvdG90eXBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0ICYmIGYoZSwgdCkKICAgICAgICAgICAgICAgICAgICB9KGEsIGkoKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgPT0gdHlwZW9mIFJlZmxlY3QgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIFByb3h5KSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCAoZnVuY3Rpb24oKSB7fSkpKSwgITAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSA9IHAoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiA9IHQgPyAobiA9IHAodGhpcykuY29uc3RydWN0b3IsIFJlZmxlY3QuY29uc3RydWN0KGksIGFyZ3VtZW50cywgbikpIDogaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBpID0gdGhpcywgIShuID0gbikgfHwgIm9iamVjdCIgIT09IGQobikgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgbiA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlKSByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGkpIDogbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShhKTsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYShlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgICAgICAgICB9KHRoaXMpLCAobiA9IG8uY2FsbCh0aGlzKSkucmVzb2x2ZU9wdGlvbnModCksIG4ubGlzdGVuQ2xpY2soZSksIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPSBhLCBuID0gW3sKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiY29weSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IDEgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjKGUsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImN1dCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyhlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJpc1N1cHBvcnRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gInN0cmluZyIgPT0gdHlwZW9mKGUgPSAwIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IFsiY29weSIsICJjdXQiXSkgPyBbZV0gOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAhIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdCAmJiAhIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZChlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9XSwgKHQgPSBbewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJyZXNvbHZlT3B0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gMCA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5hY3Rpb24gPyBlLmFjdGlvbiA6IHRoaXMuZGVmYXVsdEFjdGlvbiwgdGhpcy50YXJnZXQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnRhcmdldCA/IGUudGFyZ2V0IDogdGhpcy5kZWZhdWx0VGFyZ2V0LCB0aGlzLnRleHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiBlLnRleHQgPyBlLnRleHQgOiB0aGlzLmRlZmF1bHRUZXh0LCB0aGlzLmNvbnRhaW5lciA9ICJvYmplY3QiID09PSBkKGUuY29udGFpbmVyKSA/IGUuY29udGFpbmVyIDogZG9jdW1lbnQuYm9keQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJsaXN0ZW5DbGljayIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyID0gcigpKGUsICJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQub25DbGljayhlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogIm9uQ2xpY2siLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmRlbGVnYXRlVGFyZ2V0IHx8IGUuY3VycmVudFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5hY3Rpb24odCkgfHwgImNvcHkiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdm9pZCAwID09PSAobiA9IChpID0gMCA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fSkuYWN0aW9uKSA/ICJjb3B5IiA6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBpLmNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS50ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiY29weSIgIT09IGUgJiYgImN1dCIgIT09IGUpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCAiYWN0aW9uIiB2YWx1ZSwgdXNlIGVpdGhlciAiY29weSIgb3IgImN1dCInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbiB8fCAib2JqZWN0IiAhPT0gdShuKSB8fCAxICE9PSBuLm5vZGVUeXBlKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgdmFsdWUsIHVzZSBhIHZhbGlkIEVsZW1lbnQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjb3B5IiA9PT0gZSAmJiBuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkICJ0YXJnZXQiIGF0dHJpYnV0ZS4gUGxlYXNlIHVzZSAicmVhZG9ubHkiIGluc3RlYWQgb2YgImRpc2FibGVkIiBhdHRyaWJ1dGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjdXQiID09PSBlICYmIChuLmhhc0F0dHJpYnV0ZSgicmVhZG9ubHkiKSB8fCBuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCAidGFyZ2V0IiBhdHRyaWJ1dGUuIFlvdSBjYW5cJ3QgY3V0IHRleHQgZnJvbSBlbGVtZW50cyB3aXRoICJyZWFkb25seSIgb3IgImRpc2FibGVkIiBhdHRyaWJ1dGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPyBjKGksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBuID8gImN1dCIgPT09IGUgPyBzKG4pIDogYyhuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoZSA/ICJzdWNjZXNzIiA6ICJlcnJvciIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiB0LmZvY3VzKCksIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlZmF1bHRBY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcoImFjdGlvbiIsIGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogImRlZmF1bHRUYXJnZXQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBnKCJ0YXJnZXQiLCBlKSkgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAiZGVmYXVsdFRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcoInRleHQiLCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICJkZXN0cm95IiwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lci5kZXN0cm95KCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1dKSAmJiBoKGUucHJvdG90eXBlLCB0KSwgbiAmJiBoKGUsIG4pLCBhCiAgICAgICAgICAgICAgICB9KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgODI4OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdDsKICAgICAgICAgICAgICAgICJ1bmRlZmluZWQiID09IHR5cGVvZiBFbGVtZW50IHx8IEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgfHwgKCh0ID0gRWxlbWVudC5wcm90b3R5cGUpLm1hdGNoZXMgPSB0Lm1hdGNoZXNTZWxlY3RvciB8fCB0Lm1vek1hdGNoZXNTZWxlY3RvciB8fCB0Lm1zTWF0Y2hlc1NlbGVjdG9yIHx8IHQub01hdGNoZXNTZWxlY3RvciB8fCB0LndlYmtpdE1hdGNoZXNTZWxlY3RvciksIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgZSAmJiA5ICE9PSBlLm5vZGVUeXBlOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5tYXRjaGVzICYmIGUubWF0Y2hlcyh0KSkgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDQzODogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIGkgPSBuKDgyOCk7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gcihlLCB0LCBuLCByLCBvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBmdW5jdGlvbihlLCB0LCBuLCByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmRlbGVnYXRlVGFyZ2V0ID0gaShuLnRhcmdldCwgdCksIG4uZGVsZWdhdGVUYXJnZXQgJiYgci5jYWxsKGUsIG4pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihuLCBhLCBvKSwgewogICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLCBhLCBvKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbiwgaSwgbykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmFkZEV2ZW50TGlzdGVuZXIgPyByLmFwcGx5KG51bGwsIGFyZ3VtZW50cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBuID8gci5iaW5kKG51bGwsIGRvY3VtZW50KS5hcHBseShudWxsLCBhcmd1bWVudHMpIDogKCJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKSksIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcihlLCB0LCBuLCBpLCBvKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgODc5OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB0Lm5vZGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gZSAmJiBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgMSA9PT0gZS5ub2RlVHlwZQogICAgICAgICAgICAgICAgfSwgdC5ub2RlTGlzdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBlICYmICgiW29iamVjdCBOb2RlTGlzdF0iID09PSBuIHx8ICJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXSIgPT09IG4pICYmICJsZW5ndGgiIGluIGUgJiYgKDAgPT09IGUubGVuZ3RoIHx8IHQubm9kZShlWzBdKSkKICAgICAgICAgICAgICAgIH0sIHQuc3RyaW5nID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCBlIGluc3RhbmNlb2YgU3RyaW5nCiAgICAgICAgICAgICAgICB9LCB0LmZuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCBGdW5jdGlvbl0iID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMzcwOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IG4oODc5KSwKICAgICAgICAgICAgICAgICAgICByID0gbig0MzgpOwogICAgICAgICAgICAgICAgZS5leHBvcnRzID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGlmICghZSAmJiAhdCAmJiAhbikgdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgICAgIGlmICghaS5zdHJpbmcodCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIlNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgU3RyaW5nIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpLmZuKG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlyZCBhcmd1bWVudCBtdXN0IGJlIGEgRnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaS5ub2RlKGUpKSByZXR1cm4gYyA9IHQsIHUgPSBuLCAobCA9IGUpLmFkZEV2ZW50TGlzdGVuZXIoYywgdSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoYywgdSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKGkubm9kZUxpc3QoZSkpIHJldHVybiBvID0gZSwgYSA9IHQsIHMgPSBuLCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcihhLCBzKQogICAgICAgICAgICAgICAgICAgIH0pKSwgewogICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAoaS5zdHJpbmcoZSkpIHJldHVybiBlID0gZSwgdCA9IHQsIG4gPSBuLCByKGRvY3VtZW50LmJvZHksIGUsIHQsIG4pOwogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmcsIEhUTUxFbGVtZW50LCBIVE1MQ29sbGVjdGlvbiwgb3IgTm9kZUxpc3QiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbywgYSwgcywgbCwgYywgdQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICA4MTc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9ICJTRUxFQ1QiID09PSBlLm5vZGVOYW1lID8gKGUuZm9jdXMoKSwgZS52YWx1ZSkgOiAiSU5QVVQiID09PSBlLm5vZGVOYW1lIHx8ICJURVhUQVJFQSIgPT09IGUubm9kZU5hbWUgPyAoKHQgPSBlLmhhc0F0dHJpYnV0ZSgicmVhZG9ubHkiKSkgfHwgZS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwgIiIpLCBlLnNlbGVjdCgpLCBlLnNldFNlbGVjdGlvblJhbmdlKDAsIGUudmFsdWUubGVuZ3RoKSwgdCB8fCBlLnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSwgZS52YWx1ZSkgOiAoZS5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpICYmIGUuZm9jdXMoKSwgbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSwgKHQgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpKS5zZWxlY3ROb2RlQ29udGVudHMoZSksIG4ucmVtb3ZlQWxsUmFuZ2VzKCksIG4uYWRkUmFuZ2UodCksIG4udG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgMjc5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCkge30KICAgICAgICAgICAgICAgIHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgIG9uOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5lIHx8ICh0aGlzLmUgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaVtlXSB8fCAoaVtlXSA9IFtdKSkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogbgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgb25jZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXM7CgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5vZmYoZSwgciksIHQuYXBwbHkobiwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByLl8gPSB0LCB0aGlzLm9uKGUsIHIsIG4pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbWl0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksIG4gPSAoKHRoaXMuZSB8fCAodGhpcy5lID0ge30pKVtlXSB8fCBbXSkuc2xpY2UoKSwgaSA9IDAsIHIgPSBuLmxlbmd0aDsgaSA8IHI7IGkrKykgbltpXS5mbi5hcHBseShuW2ldLmN0eCwgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBvZmY6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLmUgfHwgKHRoaXMuZSA9IHt9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuW2VdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAmJiB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDAsIGEgPSBpLmxlbmd0aDsgbyA8IGE7IG8rKykgaVtvXS5mbiAhPT0gdCAmJiBpW29dLmZuLl8gIT09IHQgJiYgci5wdXNoKGlbb10pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5sZW5ndGggPyBuW2VdID0gciA6IGRlbGV0ZSBuW2VdLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgZS5leHBvcnRzID0gdCwgZS5leHBvcnRzLlRpbnlFbWl0dGVyID0gdAogICAgICAgICAgICB9CiAgICAgICAgfSwgbiA9IHt9LCBlLm4gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBuID0gdCAmJiB0Ll9fZXNNb2R1bGUgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LmRlZmF1bHQKICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIGUuZChuLCB7CiAgICAgICAgICAgICAgICBhOiBuCiAgICAgICAgICAgIH0pLCBuCiAgICAgICAgfSwgZS5kID0gZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICBmb3IgKHZhciBpIGluIG4pIGUubyhuLCBpKSAmJiAhZS5vKHQsIGkpICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBpLCB7CiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgIGdldDogbltpXQogICAgICAgICAgICB9KQogICAgICAgIH0sIGUubyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCB0KQogICAgICAgIH0sIGUoNjg2KS5kZWZhdWx0OwoKICAgICAgICBmdW5jdGlvbiBlKGkpIHsKICAgICAgICAgICAgaWYgKG5baV0pIHJldHVybiBuW2ldLmV4cG9ydHM7CiAgICAgICAgICAgIHZhciByID0gbltpXSA9IHsKICAgICAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiB0W2ldKHIsIHIuZXhwb3J0cywgZSksIHIuZXhwb3J0cwogICAgICAgIH0KICAgICAgICB2YXIgdCwgbgogICAgfSkpLAogICAgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IHQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZSgibW9tZW50IikKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICB9KCkpIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWyJyZXF1aXJlIl0sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSgibW9tZW50IikKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIH0oKSkKICAgICAgICB9KSkgOiAoZSA9IGUgfHwgc2VsZikuQ2hhcnQgPSB0KGUubW9tZW50KQogICAgfSh0aGlzLCAoZnVuY3Rpb24oZSkgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBlID0gZSAmJiBlLmhhc093blByb3BlcnR5KCJkZWZhdWx0IikgPyBlLmRlZmF1bHQgOiBlOwogICAgICAgIHZhciB0ID0gewogICAgICAgICAgICAgICAgYWxpY2VibHVlOiBbMjQwLCAyNDgsIDI1NV0sCiAgICAgICAgICAgICAgICBhbnRpcXVld2hpdGU6IFsyNTAsIDIzNSwgMjE1XSwKICAgICAgICAgICAgICAgIGFxdWE6IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICBhcXVhbWFyaW5lOiBbMTI3LCAyNTUsIDIxMl0sCiAgICAgICAgICAgICAgICBhenVyZTogWzI0MCwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgYmVpZ2U6IFsyNDUsIDI0NSwgMjIwXSwKICAgICAgICAgICAgICAgIGJpc3F1ZTogWzI1NSwgMjI4LCAxOTZdLAogICAgICAgICAgICAgICAgYmxhY2s6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgIGJsYW5jaGVkYWxtb25kOiBbMjU1LCAyMzUsIDIwNV0sCiAgICAgICAgICAgICAgICBibHVlOiBbMCwgMCwgMjU1XSwKICAgICAgICAgICAgICAgIGJsdWV2aW9sZXQ6IFsxMzgsIDQzLCAyMjZdLAogICAgICAgICAgICAgICAgYnJvd246IFsxNjUsIDQyLCA0Ml0sCiAgICAgICAgICAgICAgICBidXJseXdvb2Q6IFsyMjIsIDE4NCwgMTM1XSwKICAgICAgICAgICAgICAgIGNhZGV0Ymx1ZTogWzk1LCAxNTgsIDE2MF0sCiAgICAgICAgICAgICAgICBjaGFydHJldXNlOiBbMTI3LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgY2hvY29sYXRlOiBbMjEwLCAxMDUsIDMwXSwKICAgICAgICAgICAgICAgIGNvcmFsOiBbMjU1LCAxMjcsIDgwXSwKICAgICAgICAgICAgICAgIGNvcm5mbG93ZXJibHVlOiBbMTAwLCAxNDksIDIzN10sCiAgICAgICAgICAgICAgICBjb3Juc2lsazogWzI1NSwgMjQ4LCAyMjBdLAogICAgICAgICAgICAgICAgY3JpbXNvbjogWzIyMCwgMjAsIDYwXSwKICAgICAgICAgICAgICAgIGN5YW46IFswLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICBkYXJrYmx1ZTogWzAsIDAsIDEzOV0sCiAgICAgICAgICAgICAgICBkYXJrY3lhbjogWzAsIDEzOSwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtnb2xkZW5yb2Q6IFsxODQsIDEzNCwgMTFdLAogICAgICAgICAgICAgICAgZGFya2dyYXk6IFsxNjksIDE2OSwgMTY5XSwKICAgICAgICAgICAgICAgIGRhcmtncmVlbjogWzAsIDEwMCwgMF0sCiAgICAgICAgICAgICAgICBkYXJrZ3JleTogWzE2OSwgMTY5LCAxNjldLAogICAgICAgICAgICAgICAgZGFya2toYWtpOiBbMTg5LCAxODMsIDEwN10sCiAgICAgICAgICAgICAgICBkYXJrbWFnZW50YTogWzEzOSwgMCwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtvbGl2ZWdyZWVuOiBbODUsIDEwNywgNDddLAogICAgICAgICAgICAgICAgZGFya29yYW5nZTogWzI1NSwgMTQwLCAwXSwKICAgICAgICAgICAgICAgIGRhcmtvcmNoaWQ6IFsxNTMsIDUwLCAyMDRdLAogICAgICAgICAgICAgICAgZGFya3JlZDogWzEzOSwgMCwgMF0sCiAgICAgICAgICAgICAgICBkYXJrc2FsbW9uOiBbMjMzLCAxNTAsIDEyMl0sCiAgICAgICAgICAgICAgICBkYXJrc2VhZ3JlZW46IFsxNDMsIDE4OCwgMTQzXSwKICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWJsdWU6IFs3MiwgNjEsIDEzOV0sCiAgICAgICAgICAgICAgICBkYXJrc2xhdGVncmF5OiBbNDcsIDc5LCA3OV0sCiAgICAgICAgICAgICAgICBkYXJrc2xhdGVncmV5OiBbNDcsIDc5LCA3OV0sCiAgICAgICAgICAgICAgICBkYXJrdHVycXVvaXNlOiBbMCwgMjA2LCAyMDldLAogICAgICAgICAgICAgICAgZGFya3Zpb2xldDogWzE0OCwgMCwgMjExXSwKICAgICAgICAgICAgICAgIGRlZXBwaW5rOiBbMjU1LCAyMCwgMTQ3XSwKICAgICAgICAgICAgICAgIGRlZXBza3libHVlOiBbMCwgMTkxLCAyNTVdLAogICAgICAgICAgICAgICAgZGltZ3JheTogWzEwNSwgMTA1LCAxMDVdLAogICAgICAgICAgICAgICAgZGltZ3JleTogWzEwNSwgMTA1LCAxMDVdLAogICAgICAgICAgICAgICAgZG9kZ2VyYmx1ZTogWzMwLCAxNDQsIDI1NV0sCiAgICAgICAgICAgICAgICBmaXJlYnJpY2s6IFsxNzgsIDM0LCAzNF0sCiAgICAgICAgICAgICAgICBmbG9yYWx3aGl0ZTogWzI1NSwgMjUwLCAyNDBdLAogICAgICAgICAgICAgICAgZm9yZXN0Z3JlZW46IFszNCwgMTM5LCAzNF0sCiAgICAgICAgICAgICAgICBmdWNoc2lhOiBbMjU1LCAwLCAyNTVdLAogICAgICAgICAgICAgICAgZ2FpbnNib3JvOiBbMjIwLCAyMjAsIDIyMF0sCiAgICAgICAgICAgICAgICBnaG9zdHdoaXRlOiBbMjQ4LCAyNDgsIDI1NV0sCiAgICAgICAgICAgICAgICBnb2xkOiBbMjU1LCAyMTUsIDBdLAogICAgICAgICAgICAgICAgZ29sZGVucm9kOiBbMjE4LCAxNjUsIDMyXSwKICAgICAgICAgICAgICAgIGdyYXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIGdyZWVuOiBbMCwgMTI4LCAwXSwKICAgICAgICAgICAgICAgIGdyZWVueWVsbG93OiBbMTczLCAyNTUsIDQ3XSwKICAgICAgICAgICAgICAgIGdyZXk6IFsxMjgsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIGhvbmV5ZGV3OiBbMjQwLCAyNTUsIDI0MF0sCiAgICAgICAgICAgICAgICBob3RwaW5rOiBbMjU1LCAxMDUsIDE4MF0sCiAgICAgICAgICAgICAgICBpbmRpYW5yZWQ6IFsyMDUsIDkyLCA5Ml0sCiAgICAgICAgICAgICAgICBpbmRpZ286IFs3NSwgMCwgMTMwXSwKICAgICAgICAgICAgICAgIGl2b3J5OiBbMjU1LCAyNTUsIDI0MF0sCiAgICAgICAgICAgICAgICBraGFraTogWzI0MCwgMjMwLCAxNDBdLAogICAgICAgICAgICAgICAgbGF2ZW5kZXI6IFsyMzAsIDIzMCwgMjUwXSwKICAgICAgICAgICAgICAgIGxhdmVuZGVyYmx1c2g6IFsyNTUsIDI0MCwgMjQ1XSwKICAgICAgICAgICAgICAgIGxhd25ncmVlbjogWzEyNCwgMjUyLCAwXSwKICAgICAgICAgICAgICAgIGxlbW9uY2hpZmZvbjogWzI1NSwgMjUwLCAyMDVdLAogICAgICAgICAgICAgICAgbGlnaHRibHVlOiBbMTczLCAyMTYsIDIzMF0sCiAgICAgICAgICAgICAgICBsaWdodGNvcmFsOiBbMjQwLCAxMjgsIDEyOF0sCiAgICAgICAgICAgICAgICBsaWdodGN5YW46IFsyMjQsIDI1NSwgMjU1XSwKICAgICAgICAgICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiBbMjUwLCAyNTAsIDIxMF0sCiAgICAgICAgICAgICAgICBsaWdodGdyYXk6IFsyMTEsIDIxMSwgMjExXSwKICAgICAgICAgICAgICAgIGxpZ2h0Z3JlZW46IFsxNDQsIDIzOCwgMTQ0XSwKICAgICAgICAgICAgICAgIGxpZ2h0Z3JleTogWzIxMSwgMjExLCAyMTFdLAogICAgICAgICAgICAgICAgbGlnaHRwaW5rOiBbMjU1LCAxODIsIDE5M10sCiAgICAgICAgICAgICAgICBsaWdodHNhbG1vbjogWzI1NSwgMTYwLCAxMjJdLAogICAgICAgICAgICAgICAgbGlnaHRzZWFncmVlbjogWzMyLCAxNzgsIDE3MF0sCiAgICAgICAgICAgICAgICBsaWdodHNreWJsdWU6IFsxMzUsIDIwNiwgMjUwXSwKICAgICAgICAgICAgICAgIGxpZ2h0c2xhdGVncmF5OiBbMTE5LCAxMzYsIDE1M10sCiAgICAgICAgICAgICAgICBsaWdodHNsYXRlZ3JleTogWzExOSwgMTM2LCAxNTNdLAogICAgICAgICAgICAgICAgbGlnaHRzdGVlbGJsdWU6IFsxNzYsIDE5NiwgMjIyXSwKICAgICAgICAgICAgICAgIGxpZ2h0eWVsbG93OiBbMjU1LCAyNTUsIDIyNF0sCiAgICAgICAgICAgICAgICBsaW1lOiBbMCwgMjU1LCAwXSwKICAgICAgICAgICAgICAgIGxpbWVncmVlbjogWzUwLCAyMDUsIDUwXSwKICAgICAgICAgICAgICAgIGxpbmVuOiBbMjUwLCAyNDAsIDIzMF0sCiAgICAgICAgICAgICAgICBtYWdlbnRhOiBbMjU1LCAwLCAyNTVdLAogICAgICAgICAgICAgICAgbWFyb29uOiBbMTI4LCAwLCAwXSwKICAgICAgICAgICAgICAgIG1lZGl1bWFxdWFtYXJpbmU6IFsxMDIsIDIwNSwgMTcwXSwKICAgICAgICAgICAgICAgIG1lZGl1bWJsdWU6IFswLCAwLCAyMDVdLAogICAgICAgICAgICAgICAgbWVkaXVtb3JjaGlkOiBbMTg2LCA4NSwgMjExXSwKICAgICAgICAgICAgICAgIG1lZGl1bXB1cnBsZTogWzE0NywgMTEyLCAyMTldLAogICAgICAgICAgICAgICAgbWVkaXVtc2VhZ3JlZW46IFs2MCwgMTc5LCAxMTNdLAogICAgICAgICAgICAgICAgbWVkaXVtc2xhdGVibHVlOiBbMTIzLCAxMDQsIDIzOF0sCiAgICAgICAgICAgICAgICBtZWRpdW1zcHJpbmdncmVlbjogWzAsIDI1MCwgMTU0XSwKICAgICAgICAgICAgICAgIG1lZGl1bXR1cnF1b2lzZTogWzcyLCAyMDksIDIwNF0sCiAgICAgICAgICAgICAgICBtZWRpdW12aW9sZXRyZWQ6IFsxOTksIDIxLCAxMzNdLAogICAgICAgICAgICAgICAgbWlkbmlnaHRibHVlOiBbMjUsIDI1LCAxMTJdLAogICAgICAgICAgICAgICAgbWludGNyZWFtOiBbMjQ1LCAyNTUsIDI1MF0sCiAgICAgICAgICAgICAgICBtaXN0eXJvc2U6IFsyNTUsIDIyOCwgMjI1XSwKICAgICAgICAgICAgICAgIG1vY2Nhc2luOiBbMjU1LCAyMjgsIDE4MV0sCiAgICAgICAgICAgICAgICBuYXZham93aGl0ZTogWzI1NSwgMjIyLCAxNzNdLAogICAgICAgICAgICAgICAgbmF2eTogWzAsIDAsIDEyOF0sCiAgICAgICAgICAgICAgICBvbGRsYWNlOiBbMjUzLCAyNDUsIDIzMF0sCiAgICAgICAgICAgICAgICBvbGl2ZTogWzEyOCwgMTI4LCAwXSwKICAgICAgICAgICAgICAgIG9saXZlZHJhYjogWzEwNywgMTQyLCAzNV0sCiAgICAgICAgICAgICAgICBvcmFuZ2U6IFsyNTUsIDE2NSwgMF0sCiAgICAgICAgICAgICAgICBvcmFuZ2VyZWQ6IFsyNTUsIDY5LCAwXSwKICAgICAgICAgICAgICAgIG9yY2hpZDogWzIxOCwgMTEyLCAyMTRdLAogICAgICAgICAgICAgICAgcGFsZWdvbGRlbnJvZDogWzIzOCwgMjMyLCAxNzBdLAogICAgICAgICAgICAgICAgcGFsZWdyZWVuOiBbMTUyLCAyNTEsIDE1Ml0sCiAgICAgICAgICAgICAgICBwYWxldHVycXVvaXNlOiBbMTc1LCAyMzgsIDIzOF0sCiAgICAgICAgICAgICAgICBwYWxldmlvbGV0cmVkOiBbMjE5LCAxMTIsIDE0N10sCiAgICAgICAgICAgICAgICBwYXBheWF3aGlwOiBbMjU1LCAyMzksIDIxM10sCiAgICAgICAgICAgICAgICBwZWFjaHB1ZmY6IFsyNTUsIDIxOCwgMTg1XSwKICAgICAgICAgICAgICAgIHBlcnU6IFsyMDUsIDEzMywgNjNdLAogICAgICAgICAgICAgICAgcGluazogWzI1NSwgMTkyLCAyMDNdLAogICAgICAgICAgICAgICAgcGx1bTogWzIyMSwgMTYwLCAyMjFdLAogICAgICAgICAgICAgICAgcG93ZGVyYmx1ZTogWzE3NiwgMjI0LCAyMzBdLAogICAgICAgICAgICAgICAgcHVycGxlOiBbMTI4LCAwLCAxMjhdLAogICAgICAgICAgICAgICAgcmViZWNjYXB1cnBsZTogWzEwMiwgNTEsIDE1M10sCiAgICAgICAgICAgICAgICByZWQ6IFsyNTUsIDAsIDBdLAogICAgICAgICAgICAgICAgcm9zeWJyb3duOiBbMTg4LCAxNDMsIDE0M10sCiAgICAgICAgICAgICAgICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLAogICAgICAgICAgICAgICAgc2FkZGxlYnJvd246IFsxMzksIDY5LCAxOV0sCiAgICAgICAgICAgICAgICBzYWxtb246IFsyNTAsIDEyOCwgMTE0XSwKICAgICAgICAgICAgICAgIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLAogICAgICAgICAgICAgICAgc2VhZ3JlZW46IFs0NiwgMTM5LCA4N10sCiAgICAgICAgICAgICAgICBzZWFzaGVsbDogWzI1NSwgMjQ1LCAyMzhdLAogICAgICAgICAgICAgICAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLAogICAgICAgICAgICAgICAgc2lsdmVyOiBbMTkyLCAxOTIsIDE5Ml0sCiAgICAgICAgICAgICAgICBza3libHVlOiBbMTM1LCAyMDYsIDIzNV0sCiAgICAgICAgICAgICAgICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLAogICAgICAgICAgICAgICAgc2xhdGVncmF5OiBbMTEyLCAxMjgsIDE0NF0sCiAgICAgICAgICAgICAgICBzbGF0ZWdyZXk6IFsxMTIsIDEyOCwgMTQ0XSwKICAgICAgICAgICAgICAgIHNub3c6IFsyNTUsIDI1MCwgMjUwXSwKICAgICAgICAgICAgICAgIHNwcmluZ2dyZWVuOiBbMCwgMjU1LCAxMjddLAogICAgICAgICAgICAgICAgc3RlZWxibHVlOiBbNzAsIDEzMCwgMTgwXSwKICAgICAgICAgICAgICAgIHRhbjogWzIxMCwgMTgwLCAxNDBdLAogICAgICAgICAgICAgICAgdGVhbDogWzAsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIHRoaXN0bGU6IFsyMTYsIDE5MSwgMjE2XSwKICAgICAgICAgICAgICAgIHRvbWF0bzogWzI1NSwgOTksIDcxXSwKICAgICAgICAgICAgICAgIHR1cnF1b2lzZTogWzY0LCAyMjQsIDIwOF0sCiAgICAgICAgICAgICAgICB2aW9sZXQ6IFsyMzgsIDEzMCwgMjM4XSwKICAgICAgICAgICAgICAgIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sCiAgICAgICAgICAgICAgICB3aGl0ZTogWzI1NSwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgd2hpdGVzbW9rZTogWzI0NSwgMjQ1LCAyNDVdLAogICAgICAgICAgICAgICAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLAogICAgICAgICAgICAgICAgeWVsbG93Z3JlZW46IFsxNTQsIDIwNSwgNTBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG4gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSh0ID0gewogICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgICAgICAgICB9KSwgdC5leHBvcnRzCiAgICAgICAgICAgIH0oKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciBuID0ge307CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHQpIHQuaGFzT3duUHJvcGVydHkoaSkgJiYgKG5bdFtpXV0gPSBpKTsKICAgICAgICAgICAgICAgIHZhciByID0gZS5leHBvcnRzID0gewogICAgICAgICAgICAgICAgICAgIHJnYjogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogMywKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiAicmdiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaHNsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6ICJoc2wiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBoc3Y6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogImhzdiIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGh3YjogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogMywKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiAiaHdiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY215azogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogNCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiAiY215ayIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHh5ejogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogMywKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiAieHl6IgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6ICJsYWIiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsY2g6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogImxjaCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGhleDogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiBbImhleCJdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBrZXl3b3JkOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IFsia2V5d29yZCJdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhbnNpMTY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogWyJhbnNpMTYiXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYW5zaTI1NjogewogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsczogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiBbImFuc2kyNTYiXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgaGNnOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IFsiaCIsICJjIiwgImciXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYXBwbGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHM6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogWyJyMTYiLCAiZzE2IiwgImIxNiJdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBncmF5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IFsiZ3JheSJdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG8gaW4gcikKICAgICAgICAgICAgICAgICAgICBpZiAoci5oYXNPd25Qcm9wZXJ0eShvKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgiY2hhbm5lbHMiIGluIHJbb10pKSB0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgY2hhbm5lbHMgcHJvcGVydHk6ICIgKyBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoImxhYmVscyIgaW4gcltvXSkpIHRocm93IG5ldyBFcnJvcigibWlzc2luZyBjaGFubmVsIGxhYmVscyBwcm9wZXJ0eTogIiArIG8pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocltvXS5sYWJlbHMubGVuZ3RoICE9PSByW29dLmNoYW5uZWxzKSB0aHJvdyBuZXcgRXJyb3IoImNoYW5uZWwgYW5kIGxhYmVsIGNvdW50cyBtaXNtYXRjaDogIiArIG8pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHJbb10uY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcltvXS5sYWJlbHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByW29dLmNoYW5uZWxzLCBkZWxldGUgcltvXS5sYWJlbHMsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyW29dLCAiY2hhbm5lbHMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJbb10sICJsYWJlbHMiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcwogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHIucmdiLmhzbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IGVbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlWzFdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZVsyXSAvIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IE1hdGgubWluKGksIHIsIG8pLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5tYXgoaSwgciwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzIC0gYTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyA9PT0gYSA/IHQgPSAwIDogaSA9PT0gcyA/IHQgPSAociAtIG8pIC8gbCA6IHIgPT09IHMgPyB0ID0gMiArIChvIC0gaSkgLyBsIDogbyA9PT0gcyAmJiAodCA9IDQgKyAoaSAtIHIpIC8gbCksICh0ID0gTWF0aC5taW4oNjAgKiB0LCAzNjApKSA8IDAgJiYgKHQgKz0gMzYwKSwgbiA9IChhICsgcykgLyAyLCBbdCwgMTAwICogKHMgPT09IGEgPyAwIDogbiA8PSAuNSA/IGwgLyAocyArIGEpIDogbCAvICgyIC0gcyAtIGEpKSwgMTAwICogbl0KICAgICAgICAgICAgICAgIH0sIHIucmdiLmhzdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSA9IGVbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlWzFdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gZVsyXSAvIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE1hdGgubWF4KGEsIHMsIGwpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gYyAtIE1hdGgubWluKGEsIHMsIGwpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjIC0gZSkgLyA2IC8gdSArIC41CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgPT09IHUgPyByID0gbyA9IDAgOiAobyA9IHUgLyBjLCB0ID0gZChhKSwgbiA9IGQocyksIGkgPSBkKGwpLCBhID09PSBjID8gciA9IGkgLSBuIDogcyA9PT0gYyA/IHIgPSAxIC8gMyArIHQgLSBpIDogbCA9PT0gYyAmJiAociA9IDIgLyAzICsgbiAtIHQpLCByIDwgMCA/IHIgKz0gMSA6IHIgPiAxICYmIChyIC09IDEpKSwgWzM2MCAqIHIsIDEwMCAqIG8sIDEwMCAqIGNdCiAgICAgICAgICAgICAgICB9LCByLnJnYi5od2IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyLnJnYi5oc2woZSlbMF0sIDEgLyAyNTUgKiBNYXRoLm1pbih0LCBNYXRoLm1pbihuLCBpKSkgKiAxMDAsIDEwMCAqIChpID0gMSAtIDEgLyAyNTUgKiBNYXRoLm1heCh0LCBNYXRoLm1heChuLCBpKSkpXQogICAgICAgICAgICAgICAgfSwgci5yZ2IuY215ayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGVbMF0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlWzFdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgICAgICByID0gZVsyXSAvIDI1NTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzEwMCAqICgoMSAtIG4gLSAodCA9IE1hdGgubWluKDEgLSBuLCAxIC0gaSwgMSAtIHIpKSkgLyAoMSAtIHQpIHx8IDApLCAxMDAgKiAoKDEgLSBpIC0gdCkgLyAoMSAtIHQpIHx8IDApLCAxMDAgKiAoKDEgLSByIC0gdCkgLyAoMSAtIHQpIHx8IDApLCAxMDAgKiB0XQogICAgICAgICAgICAgICAgfSwgci5yZ2Iua2V5d29yZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5bZV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBhLCBzID0gMSAvIDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCBpbiB0KQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5oYXNPd25Qcm9wZXJ0eShsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSAobyA9IGUsIGEgPSB0W2xdLCBNYXRoLnBvdyhvWzBdIC0gYVswXSwgMikgKyBNYXRoLnBvdyhvWzFdIC0gYVsxXSwgMikgKyBNYXRoLnBvdyhvWzJdIC0gYVsyXSwgMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA8IHMgJiYgKHMgPSBjLCByID0gbCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICB9LCByLmtleXdvcmQucmdiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9LCByLnJnYi54eXogPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlWzBdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsxXSAvIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl0gLyAyNTU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsxMDAgKiAoLjQxMjQgKiAodCA9IHQgPiAuMDQwNDUgPyBNYXRoLnBvdygodCArIC4wNTUpIC8gMS4wNTUsIDIuNCkgOiB0IC8gMTIuOTIpICsgLjM1NzYgKiAobiA9IG4gPiAuMDQwNDUgPyBNYXRoLnBvdygobiArIC4wNTUpIC8gMS4wNTUsIDIuNCkgOiBuIC8gMTIuOTIpICsgLjE4MDUgKiAoaSA9IGkgPiAuMDQwNDUgPyBNYXRoLnBvdygoaSArIC4wNTUpIC8gMS4wNTUsIDIuNCkgOiBpIC8gMTIuOTIpKSwgMTAwICogKC4yMTI2ICogdCArIC43MTUyICogbiArIC4wNzIyICogaSksIDEwMCAqICguMDE5MyAqIHQgKyAuMTE5MiAqIG4gKyAuOTUwNSAqIGkpXQogICAgICAgICAgICAgICAgfSwgci5yZ2IubGFiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gci5yZ2IueHl6KGUpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0WzJdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpIC89IDEwMCwgbyAvPSAxMDguODgzLCBuID0gKG4gLz0gOTUuMDQ3KSA+IC4wMDg4NTYgPyBNYXRoLnBvdyhuLCAxIC8gMykgOiA3Ljc4NyAqIG4gKyAxNiAvIDExNiwgWzExNiAqIChpID0gaSA+IC4wMDg4NTYgPyBNYXRoLnBvdyhpLCAxIC8gMykgOiA3Ljc4NyAqIGkgKyAxNiAvIDExNikgLSAxNiwgNTAwICogKG4gLSBpKSwgMjAwICogKGkgLSAobyA9IG8gPiAuMDA4ODU2ID8gTWF0aC5wb3cobywgMSAvIDMpIDogNy43ODcgKiBvICsgMTYgLyAxMTYpKV0KICAgICAgICAgICAgICAgIH0sIHIuaHNsLnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSA9IGVbMF0gLyAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlWzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gZVsyXSAvIDEwMDsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gcykgcmV0dXJuIFtvID0gMjU1ICogbCwgbywgb107CiAgICAgICAgICAgICAgICAgICAgdCA9IDIgKiBsIC0gKG4gPSBsIDwgLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHMpLCByID0gWzAsIDAsIDBdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgMzsgYysrKShpID0gYSArIDEgLyAzICogLShjIC0gMSkpIDwgMCAmJiBpKyssIGkgPiAxICYmIGktLSwgbyA9IDYgKiBpIDwgMSA/IHQgKyA2ICogKG4gLSB0KSAqIGkgOiAyICogaSA8IDEgPyBuIDogMyAqIGkgPCAyID8gdCArIChuIC0gdCkgKiAoMiAvIDMgLSBpKSAqIDYgOiB0LCByW2NdID0gMjU1ICogbzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICAgICAgfSwgci5oc2wuaHN2ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlWzJdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGgubWF4KGksIC4wMSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gKj0gKGkgKj0gMikgPD0gMSA/IGkgOiAyIC0gaSwgciAqPSBvIDw9IDEgPyBvIDogMiAtIG8sIFt0LCAxMDAgKiAoMCA9PT0gaSA/IDIgKiByIC8gKG8gKyByKSA6IDIgKiBuIC8gKGkgKyBuKSksIChpICsgbikgLyAyICogMTAwXQogICAgICAgICAgICAgICAgfSwgci5oc3YucmdiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVswXSAvIDYwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBNYXRoLmZsb29yKHQpICUgNiwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQgLSBNYXRoLmZsb29yKHQpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gMjU1ICogaSAqICgxIC0gbiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAyNTUgKiBpICogKDEgLSBuICogbyksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAyNTUgKiBpICogKDEgLSBuICogKDEgLSBvKSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpICo9IDI1NSwgcikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2ksIGwsIGFdOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3MsIGksIGFdOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2EsIGksIGxdOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2EsIHMsIGldOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2wsIGEsIGldOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2ksIGEsIHNdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgci5oc3YuaHNsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlWzJdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5tYXgoYSwgLjAxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9ICgyIC0gbykgKiBhLCBuID0gbyAqIHMsIFtyLCAxMDAgKiAobiA9IChuIC89ICh0ID0gKDIgLSBvKSAqIHMpIDw9IDEgPyB0IDogMiAtIHQpIHx8IDApLCAxMDAgKiAoaSAvPSAyKV0KICAgICAgICAgICAgICAgIH0sIHIuaHdiLnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSwgcywgbCA9IGVbMF0gLyAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlWzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gZVsyXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGMgKyB1OwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZCA+IDEgJiYgKGMgLz0gZCwgdSAvPSBkKSwgaSA9IDYgKiBsIC0gKHQgPSBNYXRoLmZsb29yKDYgKiBsKSksIDAgIT0gKDEgJiB0KSAmJiAoaSA9IDEgLSBpKSwgciA9IGMgKyBpICogKChuID0gMSAtIHUpIC0gYyksIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gciwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyNTUgKiBvLCAyNTUgKiBhLCAyNTUgKiBzXQogICAgICAgICAgICAgICAgfSwgci5jbXlrLnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVbMF0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlWzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsyXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbM10gLyAxMDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyNTUgKiAoMSAtIE1hdGgubWluKDEsIHQgKiAoMSAtIHIpICsgcikpLCAyNTUgKiAoMSAtIE1hdGgubWluKDEsIG4gKiAoMSAtIHIpICsgcikpLCAyNTUgKiAoMSAtIE1hdGgubWluKDEsIGkgKiAoMSAtIHIpICsgcikpXQogICAgICAgICAgICAgICAgfSwgci54eXoucmdiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gZVswXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGVbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlWzJdIC8gMTAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID0gLS45Njg5ICogciArIDEuODc1OCAqIG8gKyAuMDQxNSAqIGEsIGkgPSAuMDU1NyAqIHIgKyAtLjIwNCAqIG8gKyAxLjA1NyAqIGEsIHQgPSAodCA9IDMuMjQwNiAqIHIgKyAtMS41MzcyICogbyArIC0uNDk4NiAqIGEpID4gLjAwMzEzMDggPyAxLjA1NSAqIE1hdGgucG93KHQsIDEgLyAyLjQpIC0gLjA1NSA6IDEyLjkyICogdCwgbiA9IG4gPiAuMDAzMTMwOCA/IDEuMDU1ICogTWF0aC5wb3cobiwgMSAvIDIuNCkgLSAuMDU1IDogMTIuOTIgKiBuLCBpID0gaSA+IC4wMDMxMzA4ID8gMS4wNTUgKiBNYXRoLnBvdyhpLCAxIC8gMi40KSAtIC4wNTUgOiAxMi45MiAqIGksIFsyNTUgKiAodCA9IE1hdGgubWluKE1hdGgubWF4KDAsIHQpLCAxKSksIDI1NSAqIChuID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgbiksIDEpKSwgMjU1ICogKGkgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBpKSwgMSkpXQogICAgICAgICAgICAgICAgfSwgci54eXoubGFiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlWzJdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuIC89IDEwMCwgaSAvPSAxMDguODgzLCB0ID0gKHQgLz0gOTUuMDQ3KSA+IC4wMDg4NTYgPyBNYXRoLnBvdyh0LCAxIC8gMykgOiA3Ljc4NyAqIHQgKyAxNiAvIDExNiwgWzExNiAqIChuID0gbiA+IC4wMDg4NTYgPyBNYXRoLnBvdyhuLCAxIC8gMykgOiA3Ljc4NyAqIG4gKyAxNiAvIDExNikgLSAxNiwgNTAwICogKHQgLSBuKSwgMjAwICogKG4gLSAoaSA9IGkgPiAuMDA4ODU2ID8gTWF0aC5wb3coaSwgMSAvIDMpIDogNy43ODcgKiBpICsgMTYgLyAxMTYpKV0KICAgICAgICAgICAgICAgIH0sIHIubGFiLnh5eiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IGVbMF07CiAgICAgICAgICAgICAgICAgICAgdCA9IGVbMV0gLyA1MDAgKyAobiA9IChyICsgMTYpIC8gMTE2KSwgaSA9IG4gLSBlWzJdIC8gMjAwOwogICAgICAgICAgICAgICAgICAgIHZhciBvID0gTWF0aC5wb3cobiwgMyksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBNYXRoLnBvdyh0LCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGgucG93KGksIDMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID0gbyA+IC4wMDg4NTYgPyBvIDogKG4gLSAxNiAvIDExNikgLyA3Ljc4NywgdCA9IGEgPiAuMDA4ODU2ID8gYSA6ICh0IC0gMTYgLyAxMTYpIC8gNy43ODcsIGkgPSBzID4gLjAwODg1NiA/IHMgOiAoaSAtIDE2IC8gMTE2KSAvIDcuNzg3LCBbdCAqPSA5NS4wNDcsIG4gKj0gMTAwLCBpICo9IDEwOC44ODNdCiAgICAgICAgICAgICAgICB9LCByLmxhYi5sY2ggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbMl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gMzYwICogTWF0aC5hdGFuMihyLCBpKSAvIDIgLyBNYXRoLlBJKSA8IDAgJiYgKHQgKz0gMzYwKSwgW24sIE1hdGguc3FydChpICogaSArIHIgKiByKSwgdF0KICAgICAgICAgICAgICAgIH0sIHIubGNoLmxhYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlWzFdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID0gZVsyXSAvIDM2MCAqIDIgKiBNYXRoLlBJLCBbbiwgaSAqIE1hdGguY29zKHQpLCBpICogTWF0aC5zaW4odCldCiAgICAgICAgICAgICAgICB9LCByLnJnYi5hbnNpMTYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAxIGluIGFyZ3VtZW50cyA/IGFyZ3VtZW50c1sxXSA6IHIucmdiLmhzdihlKVsyXTsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gKG8gPSBNYXRoLnJvdW5kKG8gLyA1MCkpKSByZXR1cm4gMzA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAzMCArIChNYXRoLnJvdW5kKGkgLyAyNTUpIDw8IDIgfCBNYXRoLnJvdW5kKG4gLyAyNTUpIDw8IDEgfCBNYXRoLnJvdW5kKHQgLyAyNTUpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMiA9PT0gbyAmJiAoYSArPSA2MCksIGEKICAgICAgICAgICAgICAgIH0sIHIuaHN2LmFuc2kxNiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5yZ2IuYW5zaTE2KHIuaHN2LnJnYihlKSwgZVsyXSkKICAgICAgICAgICAgICAgIH0sIHIucmdiLmFuc2kyNTYgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPT09IG4gJiYgbiA9PT0gaSA/IHQgPCA4ID8gMTYgOiB0ID4gMjQ4ID8gMjMxIDogTWF0aC5yb3VuZCgodCAtIDgpIC8gMjQ3ICogMjQpICsgMjMyIDogMTYgKyAzNiAqIE1hdGgucm91bmQodCAvIDI1NSAqIDUpICsgNiAqIE1hdGgucm91bmQobiAvIDI1NSAqIDUpICsgTWF0aC5yb3VuZChpIC8gMjU1ICogNSkKICAgICAgICAgICAgICAgIH0sIHIuYW5zaTE2LnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUgJSAxMDsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdCB8fCA3ID09PSB0KSByZXR1cm4gZSA+IDUwICYmICh0ICs9IDMuNSksIFt0ID0gdCAvIDEwLjUgKiAyNTUsIHQsIHRdOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gLjUgKiAoMSArIH5+KGUgPiA1MCkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBbKDEgJiB0KSAqIG4gKiAyNTUsICh0ID4+IDEgJiAxKSAqIG4gKiAyNTUsICh0ID4+IDIgJiAxKSAqIG4gKiAyNTVdCiAgICAgICAgICAgICAgICB9LCByLmFuc2kyNTYucmdiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlID49IDIzMikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IDEwICogKGUgLSAyMzIpICsgODsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt0LCB0LCB0XQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAtPSAxNiwgW01hdGguZmxvb3IoZSAvIDM2KSAvIDUgKiAyNTUsIE1hdGguZmxvb3IoKG4gPSBlICUgMzYpIC8gNikgLyA1ICogMjU1LCBuICUgNiAvIDUgKiAyNTVdCiAgICAgICAgICAgICAgICB9LCByLnJnYi5oZXggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAoKCgyNTUgJiBNYXRoLnJvdW5kKGVbMF0pKSA8PCAxNikgKyAoKDI1NSAmIE1hdGgucm91bmQoZVsxXSkpIDw8IDgpICsgKDI1NSAmIE1hdGgucm91bmQoZVsyXSkpKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIjAwMDAwMCIuc3Vic3RyaW5nKHQubGVuZ3RoKSArIHQKICAgICAgICAgICAgICAgIH0sIHIuaGV4LnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiBbMCwgMCwgMF07CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0WzBdOwogICAgICAgICAgICAgICAgICAgIDMgPT09IHRbMF0ubGVuZ3RoICYmIChuID0gbi5zcGxpdCgiIikubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICsgZQogICAgICAgICAgICAgICAgICAgIH0pKS5qb2luKCIiKSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZUludChuLCAxNik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtpID4+IDE2ICYgMjU1LCBpID4+IDggJiAyNTUsIDI1NSAmIGldCiAgICAgICAgICAgICAgICB9LCByLnJnYi5oY2cgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBlWzBdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsxXSAvIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGVbMl0gLyAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBNYXRoLm1heChNYXRoLm1heChuLCBpKSwgciksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBNYXRoLm1pbihNYXRoLm1pbihuLCBpKSwgciksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvIC0gYTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHMgPD0gMCA/IDAgOiBvID09PSBuID8gKGkgLSByKSAvIHMgJSA2IDogbyA9PT0gaSA/IDIgKyAociAtIG4pIC8gcyA6IDQgKyAobiAtIGkpIC8gcyArIDQsIHQgLz0gNiwgWzM2MCAqICh0ICU9IDEpLCAxMDAgKiBzLCAxMDAgKiAocyA8IDEgPyBhIC8gKDEgLSBzKSA6IDApXQogICAgICAgICAgICAgICAgfSwgci5oc2wuaGNnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuID0gZVsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGVbMl0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IGkgPCAuNSA/IDIgKiBuICogaSA6IDIgKiBuICogKDEgLSBpKSkgPCAxICYmIChyID0gKGkgLSAuNSAqIHQpIC8gKDEgLSB0KSksIFtlWzBdLCAxMDAgKiB0LCAxMDAgKiByXQogICAgICAgICAgICAgICAgfSwgci5oc3YuaGNnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGVbMl0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPCAxICYmIChyID0gKG4gLSBpKSAvICgxIC0gaSkpLCBbZVswXSwgMTAwICogaSwgMTAwICogcl0KICAgICAgICAgICAgICAgIH0sIHIuaGNnLnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVbMF0gLyAzNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlWzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVsyXSAvIDEwMDsKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbikgcmV0dXJuIFsyNTUgKiBpLCAyNTUgKiBpLCAyNTUgKiBpXTsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQgJSAxICogNiwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEgJSAxLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gMSAtIHM7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChNYXRoLmZsb29yKGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bMF0gPSAxLCBvWzFdID0gcywgb1syXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb1swXSA9IGwsIG9bMV0gPSAxLCBvWzJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvWzBdID0gMCwgb1sxXSA9IDEsIG9bMl0gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9bMF0gPSAwLCBvWzFdID0gbCwgb1syXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb1swXSA9IHMsIG9bMV0gPSAwLCBvWzJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb1swXSA9IDEsIG9bMV0gPSAwLCBvWzJdID0gbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9ICgxIC0gbikgKiBpLCBbMjU1ICogKG4gKiBvWzBdICsgciksIDI1NSAqIChuICogb1sxXSArIHIpLCAyNTUgKiAobiAqIG9bMl0gKyByKV0KICAgICAgICAgICAgICAgIH0sIHIuaGNnLmhzdiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ICsgZVsyXSAvIDEwMCAqICgxIC0gdCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID4gMCAmJiAoaSA9IHQgLyBuKSwgW2VbMF0sIDEwMCAqIGksIDEwMCAqIG5dCiAgICAgICAgICAgICAgICB9LCByLmhjZy5oc2wgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlWzFdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZVsyXSAvIDEwMCAqICgxIC0gdCkgKyAuNSAqIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuID4gMCAmJiBuIDwgLjUgPyBpID0gdCAvICgyICogbikgOiBuID49IC41ICYmIG4gPCAxICYmIChpID0gdCAvICgyICogKDEgLSBuKSkpLCBbZVswXSwgMTAwICogaSwgMTAwICogbl0KICAgICAgICAgICAgICAgIH0sIHIuaGNnLmh3YiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGVbMV0gLyAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ICsgZVsyXSAvIDEwMCAqICgxIC0gdCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtlWzBdLCAxMDAgKiAobiAtIHQpLCAxMDAgKiAoMSAtIG4pXQogICAgICAgICAgICAgICAgfSwgci5od2IuaGNnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVsxXSAvIDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDEgLSBlWzJdIC8gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbiAtIHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpIDwgMSAmJiAociA9IChuIC0gaSkgLyAoMSAtIGkpKSwgW2VbMF0sIDEwMCAqIGksIDEwMCAqIHJdCiAgICAgICAgICAgICAgICB9LCByLmFwcGxlLnJnYiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2VbMF0gLyA2NTUzNSAqIDI1NSwgZVsxXSAvIDY1NTM1ICogMjU1LCBlWzJdIC8gNjU1MzUgKiAyNTVdCiAgICAgICAgICAgICAgICB9LCByLnJnYi5hcHBsZSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2VbMF0gLyAyNTUgKiA2NTUzNSwgZVsxXSAvIDI1NSAqIDY1NTM1LCBlWzJdIC8gMjU1ICogNjU1MzVdCiAgICAgICAgICAgICAgICB9LCByLmdyYXkucmdiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbZVswXSAvIDEwMCAqIDI1NSwgZVswXSAvIDEwMCAqIDI1NSwgZVswXSAvIDEwMCAqIDI1NV0KICAgICAgICAgICAgICAgIH0sIHIuZ3JheS5oc2wgPSByLmdyYXkuaHN2ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbMCwgMCwgZVswXV0KICAgICAgICAgICAgICAgIH0sIHIuZ3JheS5od2IgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFswLCAxMDAsIGVbMF1dCiAgICAgICAgICAgICAgICB9LCByLmdyYXkuY215ayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzAsIDAsIDAsIGVbMF1dCiAgICAgICAgICAgICAgICB9LCByLmdyYXkubGFiID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbZVswXSwgMCwgMF0KICAgICAgICAgICAgICAgIH0sIHIuZ3JheS5oZXggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAyNTUgJiBNYXRoLnJvdW5kKGVbMF0gLyAxMDAgKiAyNTUpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gKCh0IDw8IDE2KSArICh0IDw8IDgpICsgdCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIwMDAwMDAiLnN1YnN0cmluZyhuLmxlbmd0aCkgKyBuCiAgICAgICAgICAgICAgICB9LCByLnJnYi5ncmF5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbKGVbMF0gKyBlWzFdICsgZVsyXSkgLyAzIC8gMjU1ICogMTAwXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSk7CgogICAgICAgIGZ1bmN0aW9uIGkoZSkgewogICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSB7fSwgdCA9IE9iamVjdC5rZXlzKG4pLCBpID0gdC5sZW5ndGgsIHIgPSAwOyByIDwgaTsgcisrKSBlW3Rbcl1dID0gewogICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0oKSwKICAgICAgICAgICAgICAgIGkgPSBbZV07CiAgICAgICAgICAgIGZvciAodFtlXS5kaXN0YW5jZSA9IDA7IGkubGVuZ3RoOykKICAgICAgICAgICAgICAgIGZvciAodmFyIHIgPSBpLnBvcCgpLCBvID0gT2JqZWN0LmtleXMobltyXSksIGEgPSBvLmxlbmd0aCwgcyA9IDA7IHMgPCBhOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG9bc10sCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0W2xdOyAtIDEgPT09IGMuZGlzdGFuY2UgJiYgKGMuZGlzdGFuY2UgPSB0W3JdLmRpc3RhbmNlICsgMSwgYy5wYXJlbnQgPSByLCBpLnVuc2hpZnQobCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiB0KGUobikpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG8oZSwgdCkgewogICAgICAgICAgICBmb3IgKHZhciBpID0gW3RbZV0ucGFyZW50LCBlXSwgbyA9IG5bdFtlXS5wYXJlbnRdW2VdLCBhID0gdFtlXS5wYXJlbnQ7IHRbYV0ucGFyZW50OykgaS51bnNoaWZ0KHRbYV0ucGFyZW50KSwgbyA9IHIoblt0W2FdLnBhcmVudF1bYV0sIG8pLCBhID0gdFthXS5wYXJlbnQ7CiAgICAgICAgICAgIHJldHVybiBvLmNvbnZlcnNpb24gPSBpLCBvCiAgICAgICAgfQogICAgICAgIG4ucmdiLCBuLmhzbCwgbi5oc3YsIG4uaHdiLCBuLmNteWssIG4ueHl6LCBuLmxhYiwgbi5sY2gsIG4uaGV4LCBuLmtleXdvcmQsIG4uYW5zaTE2LCBuLmFuc2kyNTYsIG4uaGNnLCBuLmFwcGxlLCBuLmdyYXk7CiAgICAgICAgdmFyIGEgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGFbZV0gPSB7fSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFbZV0sICJjaGFubmVscyIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBuW2VdLmNoYW5uZWxzCiAgICAgICAgICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoYVtlXSwgImxhYmVscyIsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiBuW2VdLmxhYmVscwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gaShlKSwgbiA9IHt9LCByID0gT2JqZWN0LmtleXModCksIGEgPSByLmxlbmd0aCwgcyA9IDA7IHMgPCBhOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHJbc107CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gdFtsXS5wYXJlbnQgJiYgKG5bbF0gPSBvKGwsIHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfShlKTsKICAgICAgICAgICAgT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgdmFyIGkgPSB0W25dOwogICAgICAgICAgICAgICAgYVtlXVtuXSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gdCkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmICh0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IG4ubGVuZ3RoLCByID0gMDsgciA8IGk7IHIrKykgbltyXSA9IE1hdGgucm91bmQobltyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNvbnZlcnNpb24iIGluIGUgJiYgKHQuY29udmVyc2lvbiA9IGUuY29udmVyc2lvbiksIHQKICAgICAgICAgICAgICAgIH0oaSksIGFbZV1bbl0ucmF3ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSB0ID8gdCA6IChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiAodCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLCBlKHQpKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjb252ZXJzaW9uIiBpbiBlICYmICh0LmNvbnZlcnNpb24gPSBlLmNvbnZlcnNpb24pLCB0CiAgICAgICAgICAgICAgICB9KGkpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0pKTsKICAgICAgICB2YXIgcyA9IGEsCiAgICAgICAgICAgIGwgPSB7CiAgICAgICAgICAgICAgICBhbGljZWJsdWU6IFsyNDAsIDI0OCwgMjU1XSwKICAgICAgICAgICAgICAgIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLAogICAgICAgICAgICAgICAgYXF1YTogWzAsIDI1NSwgMjU1XSwKICAgICAgICAgICAgICAgIGFxdWFtYXJpbmU6IFsxMjcsIDI1NSwgMjEyXSwKICAgICAgICAgICAgICAgIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICBiZWlnZTogWzI0NSwgMjQ1LCAyMjBdLAogICAgICAgICAgICAgICAgYmlzcXVlOiBbMjU1LCAyMjgsIDE5Nl0sCiAgICAgICAgICAgICAgICBibGFjazogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgYmxhbmNoZWRhbG1vbmQ6IFsyNTUsIDIzNSwgMjA1XSwKICAgICAgICAgICAgICAgIGJsdWU6IFswLCAwLCAyNTVdLAogICAgICAgICAgICAgICAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sCiAgICAgICAgICAgICAgICBicm93bjogWzE2NSwgNDIsIDQyXSwKICAgICAgICAgICAgICAgIGJ1cmx5d29vZDogWzIyMiwgMTg0LCAxMzVdLAogICAgICAgICAgICAgICAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSwKICAgICAgICAgICAgICAgIGNoYXJ0cmV1c2U6IFsxMjcsIDI1NSwgMF0sCiAgICAgICAgICAgICAgICBjaG9jb2xhdGU6IFsyMTAsIDEwNSwgMzBdLAogICAgICAgICAgICAgICAgY29yYWw6IFsyNTUsIDEyNywgODBdLAogICAgICAgICAgICAgICAgY29ybmZsb3dlcmJsdWU6IFsxMDAsIDE0OSwgMjM3XSwKICAgICAgICAgICAgICAgIGNvcm5zaWxrOiBbMjU1LCAyNDgsIDIyMF0sCiAgICAgICAgICAgICAgICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLAogICAgICAgICAgICAgICAgY3lhbjogWzAsIDI1NSwgMjU1XSwKICAgICAgICAgICAgICAgIGRhcmtibHVlOiBbMCwgMCwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLAogICAgICAgICAgICAgICAgZGFya2dvbGRlbnJvZDogWzE4NCwgMTM0LCAxMV0sCiAgICAgICAgICAgICAgICBkYXJrZ3JheTogWzE2OSwgMTY5LCAxNjldLAogICAgICAgICAgICAgICAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSwKICAgICAgICAgICAgICAgIGRhcmtncmV5OiBbMTY5LCAxNjksIDE2OV0sCiAgICAgICAgICAgICAgICBkYXJra2hha2k6IFsxODksIDE4MywgMTA3XSwKICAgICAgICAgICAgICAgIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLAogICAgICAgICAgICAgICAgZGFya29saXZlZ3JlZW46IFs4NSwgMTA3LCA0N10sCiAgICAgICAgICAgICAgICBkYXJrb3JhbmdlOiBbMjU1LCAxNDAsIDBdLAogICAgICAgICAgICAgICAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sCiAgICAgICAgICAgICAgICBkYXJrcmVkOiBbMTM5LCAwLCAwXSwKICAgICAgICAgICAgICAgIGRhcmtzYWxtb246IFsyMzMsIDE1MCwgMTIyXSwKICAgICAgICAgICAgICAgIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLAogICAgICAgICAgICAgICAgZGFya3NsYXRlYmx1ZTogWzcyLCA2MSwgMTM5XSwKICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWdyYXk6IFs0NywgNzksIDc5XSwKICAgICAgICAgICAgICAgIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSwKICAgICAgICAgICAgICAgIGRhcmt0dXJxdW9pc2U6IFswLCAyMDYsIDIwOV0sCiAgICAgICAgICAgICAgICBkYXJrdmlvbGV0OiBbMTQ4LCAwLCAyMTFdLAogICAgICAgICAgICAgICAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLAogICAgICAgICAgICAgICAgZGVlcHNreWJsdWU6IFswLCAxOTEsIDI1NV0sCiAgICAgICAgICAgICAgICBkaW1ncmF5OiBbMTA1LCAxMDUsIDEwNV0sCiAgICAgICAgICAgICAgICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sCiAgICAgICAgICAgICAgICBkb2RnZXJibHVlOiBbMzAsIDE0NCwgMjU1XSwKICAgICAgICAgICAgICAgIGZpcmVicmljazogWzE3OCwgMzQsIDM0XSwKICAgICAgICAgICAgICAgIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sCiAgICAgICAgICAgICAgICBmb3Jlc3RncmVlbjogWzM0LCAxMzksIDM0XSwKICAgICAgICAgICAgICAgIGZ1Y2hzaWE6IFsyNTUsIDAsIDI1NV0sCiAgICAgICAgICAgICAgICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSwKICAgICAgICAgICAgICAgIGdob3N0d2hpdGU6IFsyNDgsIDI0OCwgMjU1XSwKICAgICAgICAgICAgICAgIGdvbGQ6IFsyNTUsIDIxNSwgMF0sCiAgICAgICAgICAgICAgICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLAogICAgICAgICAgICAgICAgZ3JheTogWzEyOCwgMTI4LCAxMjhdLAogICAgICAgICAgICAgICAgZ3JlZW46IFswLCAxMjgsIDBdLAogICAgICAgICAgICAgICAgZ3JlZW55ZWxsb3c6IFsxNzMsIDI1NSwgNDddLAogICAgICAgICAgICAgICAgZ3JleTogWzEyOCwgMTI4LCAxMjhdLAogICAgICAgICAgICAgICAgaG9uZXlkZXc6IFsyNDAsIDI1NSwgMjQwXSwKICAgICAgICAgICAgICAgIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSwKICAgICAgICAgICAgICAgIGluZGlhbnJlZDogWzIwNSwgOTIsIDkyXSwKICAgICAgICAgICAgICAgIGluZGlnbzogWzc1LCAwLCAxMzBdLAogICAgICAgICAgICAgICAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSwKICAgICAgICAgICAgICAgIGtoYWtpOiBbMjQwLCAyMzAsIDE0MF0sCiAgICAgICAgICAgICAgICBsYXZlbmRlcjogWzIzMCwgMjMwLCAyNTBdLAogICAgICAgICAgICAgICAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLAogICAgICAgICAgICAgICAgbGF3bmdyZWVuOiBbMTI0LCAyNTIsIDBdLAogICAgICAgICAgICAgICAgbGVtb25jaGlmZm9uOiBbMjU1LCAyNTAsIDIwNV0sCiAgICAgICAgICAgICAgICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSwKICAgICAgICAgICAgICAgIGxpZ2h0Y29yYWw6IFsyNDAsIDEyOCwgMTI4XSwKICAgICAgICAgICAgICAgIGxpZ2h0Y3lhbjogWzIyNCwgMjU1LCAyNTVdLAogICAgICAgICAgICAgICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSwKICAgICAgICAgICAgICAgIGxpZ2h0Z3JheTogWzIxMSwgMjExLCAyMTFdLAogICAgICAgICAgICAgICAgbGlnaHRncmVlbjogWzE0NCwgMjM4LCAxNDRdLAogICAgICAgICAgICAgICAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sCiAgICAgICAgICAgICAgICBsaWdodHBpbms6IFsyNTUsIDE4MiwgMTkzXSwKICAgICAgICAgICAgICAgIGxpZ2h0c2FsbW9uOiBbMjU1LCAxNjAsIDEyMl0sCiAgICAgICAgICAgICAgICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSwKICAgICAgICAgICAgICAgIGxpZ2h0c2t5Ymx1ZTogWzEzNSwgMjA2LCAyNTBdLAogICAgICAgICAgICAgICAgbGlnaHRzbGF0ZWdyYXk6IFsxMTksIDEzNiwgMTUzXSwKICAgICAgICAgICAgICAgIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sCiAgICAgICAgICAgICAgICBsaWdodHN0ZWVsYmx1ZTogWzE3NiwgMTk2LCAyMjJdLAogICAgICAgICAgICAgICAgbGlnaHR5ZWxsb3c6IFsyNTUsIDI1NSwgMjI0XSwKICAgICAgICAgICAgICAgIGxpbWU6IFswLCAyNTUsIDBdLAogICAgICAgICAgICAgICAgbGltZWdyZWVuOiBbNTAsIDIwNSwgNTBdLAogICAgICAgICAgICAgICAgbGluZW46IFsyNTAsIDI0MCwgMjMwXSwKICAgICAgICAgICAgICAgIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sCiAgICAgICAgICAgICAgICBtYXJvb246IFsxMjgsIDAsIDBdLAogICAgICAgICAgICAgICAgbWVkaXVtYXF1YW1hcmluZTogWzEwMiwgMjA1LCAxNzBdLAogICAgICAgICAgICAgICAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sCiAgICAgICAgICAgICAgICBtZWRpdW1vcmNoaWQ6IFsxODYsIDg1LCAyMTFdLAogICAgICAgICAgICAgICAgbWVkaXVtcHVycGxlOiBbMTQ3LCAxMTIsIDIxOV0sCiAgICAgICAgICAgICAgICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sCiAgICAgICAgICAgICAgICBtZWRpdW1zbGF0ZWJsdWU6IFsxMjMsIDEwNCwgMjM4XSwKICAgICAgICAgICAgICAgIG1lZGl1bXNwcmluZ2dyZWVuOiBbMCwgMjUwLCAxNTRdLAogICAgICAgICAgICAgICAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSwKICAgICAgICAgICAgICAgIG1lZGl1bXZpb2xldHJlZDogWzE5OSwgMjEsIDEzM10sCiAgICAgICAgICAgICAgICBtaWRuaWdodGJsdWU6IFsyNSwgMjUsIDExMl0sCiAgICAgICAgICAgICAgICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSwKICAgICAgICAgICAgICAgIG1pc3R5cm9zZTogWzI1NSwgMjI4LCAyMjVdLAogICAgICAgICAgICAgICAgbW9jY2FzaW46IFsyNTUsIDIyOCwgMTgxXSwKICAgICAgICAgICAgICAgIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sCiAgICAgICAgICAgICAgICBuYXZ5OiBbMCwgMCwgMTI4XSwKICAgICAgICAgICAgICAgIG9sZGxhY2U6IFsyNTMsIDI0NSwgMjMwXSwKICAgICAgICAgICAgICAgIG9saXZlOiBbMTI4LCAxMjgsIDBdLAogICAgICAgICAgICAgICAgb2xpdmVkcmFiOiBbMTA3LCAxNDIsIDM1XSwKICAgICAgICAgICAgICAgIG9yYW5nZTogWzI1NSwgMTY1LCAwXSwKICAgICAgICAgICAgICAgIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLAogICAgICAgICAgICAgICAgb3JjaGlkOiBbMjE4LCAxMTIsIDIxNF0sCiAgICAgICAgICAgICAgICBwYWxlZ29sZGVucm9kOiBbMjM4LCAyMzIsIDE3MF0sCiAgICAgICAgICAgICAgICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSwKICAgICAgICAgICAgICAgIHBhbGV0dXJxdW9pc2U6IFsxNzUsIDIzOCwgMjM4XSwKICAgICAgICAgICAgICAgIHBhbGV2aW9sZXRyZWQ6IFsyMTksIDExMiwgMTQ3XSwKICAgICAgICAgICAgICAgIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSwKICAgICAgICAgICAgICAgIHBlYWNocHVmZjogWzI1NSwgMjE4LCAxODVdLAogICAgICAgICAgICAgICAgcGVydTogWzIwNSwgMTMzLCA2M10sCiAgICAgICAgICAgICAgICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sCiAgICAgICAgICAgICAgICBwbHVtOiBbMjIxLCAxNjAsIDIyMV0sCiAgICAgICAgICAgICAgICBwb3dkZXJibHVlOiBbMTc2LCAyMjQsIDIzMF0sCiAgICAgICAgICAgICAgICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sCiAgICAgICAgICAgICAgICByZWJlY2NhcHVycGxlOiBbMTAyLCA1MSwgMTUzXSwKICAgICAgICAgICAgICAgIHJlZDogWzI1NSwgMCwgMF0sCiAgICAgICAgICAgICAgICByb3N5YnJvd246IFsxODgsIDE0MywgMTQzXSwKICAgICAgICAgICAgICAgIHJveWFsYmx1ZTogWzY1LCAxMDUsIDIyNV0sCiAgICAgICAgICAgICAgICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSwKICAgICAgICAgICAgICAgIHNhbG1vbjogWzI1MCwgMTI4LCAxMTRdLAogICAgICAgICAgICAgICAgc2FuZHlicm93bjogWzI0NCwgMTY0LCA5Nl0sCiAgICAgICAgICAgICAgICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSwKICAgICAgICAgICAgICAgIHNlYXNoZWxsOiBbMjU1LCAyNDUsIDIzOF0sCiAgICAgICAgICAgICAgICBzaWVubmE6IFsxNjAsIDgyLCA0NV0sCiAgICAgICAgICAgICAgICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSwKICAgICAgICAgICAgICAgIHNreWJsdWU6IFsxMzUsIDIwNiwgMjM1XSwKICAgICAgICAgICAgICAgIHNsYXRlYmx1ZTogWzEwNiwgOTAsIDIwNV0sCiAgICAgICAgICAgICAgICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSwKICAgICAgICAgICAgICAgIHNsYXRlZ3JleTogWzExMiwgMTI4LCAxNDRdLAogICAgICAgICAgICAgICAgc25vdzogWzI1NSwgMjUwLCAyNTBdLAogICAgICAgICAgICAgICAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sCiAgICAgICAgICAgICAgICBzdGVlbGJsdWU6IFs3MCwgMTMwLCAxODBdLAogICAgICAgICAgICAgICAgdGFuOiBbMjEwLCAxODAsIDE0MF0sCiAgICAgICAgICAgICAgICB0ZWFsOiBbMCwgMTI4LCAxMjhdLAogICAgICAgICAgICAgICAgdGhpc3RsZTogWzIxNiwgMTkxLCAyMTZdLAogICAgICAgICAgICAgICAgdG9tYXRvOiBbMjU1LCA5OSwgNzFdLAogICAgICAgICAgICAgICAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSwKICAgICAgICAgICAgICAgIHZpb2xldDogWzIzOCwgMTMwLCAyMzhdLAogICAgICAgICAgICAgICAgd2hlYXQ6IFsyNDUsIDIyMiwgMTc5XSwKICAgICAgICAgICAgICAgIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sCiAgICAgICAgICAgICAgICB3aGl0ZXNtb2tlOiBbMjQ1LCAyNDUsIDI0NV0sCiAgICAgICAgICAgICAgICB5ZWxsb3c6IFsyNTUsIDI1NSwgMF0sCiAgICAgICAgICAgICAgICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYyA9IHsKICAgICAgICAgICAgICAgIGdldFJnYmE6IHUsCiAgICAgICAgICAgICAgICBnZXRIc2xhOiBkLAogICAgICAgICAgICAgICAgZ2V0UmdiOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1KGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHQuc2xpY2UoMCwgMykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRIc2w6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGQoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgJiYgdC5zbGljZSgwLCAzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEh3YjogaCwKICAgICAgICAgICAgICAgIGdldEFscGhhOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1KGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IHx8ICh0ID0gZChlKSkgfHwgKHQgPSBoKGUpKSA/IHRbM10gOiB2b2lkIDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoZXhTdHJpbmc6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHZvaWQgMCAhPT0gdCAmJiAzID09PSBlLmxlbmd0aCA/IHQgOiBlWzNdLCAiIyIgKyB2KGVbMF0pICsgdihlWzFdKSArIHYoZVsyXSkgKyAodCA+PSAwICYmIHQgPCAxID8gdihNYXRoLnJvdW5kKDI1NSAqIHQpKSA6ICIiKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJnYlN0cmluZzogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0IDwgMSB8fCBlWzNdICYmIGVbM10gPCAxID8gZihlLCB0KSA6ICJyZ2IoIiArIGVbMF0gKyAiLCAiICsgZVsxXSArICIsICIgKyBlWzJdICsgIikiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmdiYVN0cmluZzogZiwKICAgICAgICAgICAgICAgIHBlcmNlbnRTdHJpbmc6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA8IDEgfHwgZVszXSAmJiBlWzNdIDwgMSA/IHAoZSwgdCkgOiAicmdiKCIgKyBNYXRoLnJvdW5kKGVbMF0gLyAyNTUgKiAxMDApICsgIiUsICIgKyBNYXRoLnJvdW5kKGVbMV0gLyAyNTUgKiAxMDApICsgIiUsICIgKyBNYXRoLnJvdW5kKGVbMl0gLyAyNTUgKiAxMDApICsgIiUpIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBlcmNlbnRhU3RyaW5nOiBwLAogICAgICAgICAgICAgICAgaHNsU3RyaW5nOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPCAxIHx8IGVbM10gJiYgZVszXSA8IDEgPyBnKGUsIHQpIDogImhzbCgiICsgZVswXSArICIsICIgKyBlWzFdICsgIiUsICIgKyBlWzJdICsgIiUpIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhzbGFTdHJpbmc6IGcsCiAgICAgICAgICAgICAgICBod2JTdHJpbmc6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gdm9pZCAwICE9PSBlWzNdID8gZVszXSA6IDEpLCAiaHdiKCIgKyBlWzBdICsgIiwgIiArIGVbMV0gKyAiJSwgIiArIGVbMl0gKyAiJSIgKyAodm9pZCAwICE9PSB0ICYmIDEgIT09IHQgPyAiLCAiICsgdCA6ICIiKSArICIpIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGtleXdvcmQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geVtlLnNsaWNlKDAsIDMpXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgIG4gPSAxLAogICAgICAgICAgICAgICAgICAgIGkgPSBlLm1hdGNoKC9eIyhbYS1mQS1GMC05XXszLDR9KSQvaSksCiAgICAgICAgICAgICAgICAgICAgciA9ICIiOwogICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICByID0gKGkgPSBpWzFdKVszXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IHQubGVuZ3RoOyBvKyspIHRbb10gPSBwYXJzZUludChpW29dICsgaVtvXSwgMTYpOwogICAgICAgICAgICAgICAgICAgIHIgJiYgKG4gPSBNYXRoLnJvdW5kKHBhcnNlSW50KHIgKyByLCAxNikgLyAyNTUgKiAxMDApIC8gMTAwKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID0gZS5tYXRjaCgvXiMoW2EtZkEtRjAtOV17Nn0oW2EtZkEtRjAtOV17Mn0pPykkL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gaVsyXSwgaSA9IGlbMV0sIG8gPSAwOyBvIDwgdC5sZW5ndGg7IG8rKykgdFtvXSA9IHBhcnNlSW50KGkuc2xpY2UoMiAqIG8sIDIgKiBvICsgMiksIDE2KTsKICAgICAgICAgICAgICAgICAgICByICYmIChuID0gTWF0aC5yb3VuZChwYXJzZUludChyLCAxNikgLyAyNTUgKiAxMDApIC8gMTAwKQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID0gZS5tYXRjaCgvXnJnYmE/XChccyooWystXT9cZCspXHMqLFxzKihbKy1dP1xkKylccyosXHMqKFsrLV0/XGQrKVxzKig/OixccyooWystXT9bXGRcLl0rKVxzKik/XCkkL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IHQubGVuZ3RoOyBvKyspIHRbb10gPSBwYXJzZUludChpW28gKyAxXSk7CiAgICAgICAgICAgICAgICAgICAgbiA9IHBhcnNlRmxvYXQoaVs0XSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA9IGUubWF0Y2goL15yZ2JhP1woXHMqKFsrLV0/W1xkXC5dKylcJVxzKixccyooWystXT9bXGRcLl0rKVwlXHMqLFxzKihbKy1dP1tcZFwuXSspXCVccyooPzosXHMqKFsrLV0/W1xkXC5dKylccyopP1wpJC9pKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCB0Lmxlbmd0aDsgbysrKSB0W29dID0gTWF0aC5yb3VuZCgyLjU1ICogcGFyc2VGbG9hdChpW28gKyAxXSkpOwogICAgICAgICAgICAgICAgICAgIG4gPSBwYXJzZUZsb2F0KGlbNF0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPSBlLm1hdGNoKC8oXHcrKS8pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ0cmFuc3BhcmVudCIgPT0gaVsxXSkgcmV0dXJuIFswLCAwLCAwLCAwXTsKICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gbFtpWzFdXSkpIHJldHVybgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IHQubGVuZ3RoOyBvKyspIHRbb10gPSBtKHRbb10sIDAsIDI1NSk7CiAgICAgICAgICAgICAgICByZXR1cm4gbiA9IG4gfHwgMCA9PSBuID8gbShuLCAwLCAxKSA6IDEsIHRbM10gPSBuLCB0CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLm1hdGNoKC9eaHNsYT9cKFxzKihbKy1dP1xkKykoPzpkZWcpP1xzKixccyooWystXT9bXGRcLl0rKSVccyosXHMqKFsrLV0/W1xkXC5dKyklXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKS8pOwogICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHBhcnNlRmxvYXQodFs0XSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFttKHBhcnNlSW50KHRbMV0pLCAwLCAzNjApLCBtKHBhcnNlRmxvYXQodFsyXSksIDAsIDEwMCksIG0ocGFyc2VGbG9hdCh0WzNdKSwgMCwgMTAwKSwgbShpc05hTihuKSA/IDEgOiBuLCAwLCAxKV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaChlKSB7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUubWF0Y2goL15od2JcKFxzKihbKy1dP1xkKykoPzpkZWcpP1xzKixccyooWystXT9bXGRcLl0rKSVccyosXHMqKFsrLV0/W1xkXC5dKyklXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKS8pOwogICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHBhcnNlRmxvYXQodFs0XSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFttKHBhcnNlSW50KHRbMV0pLCAwLCAzNjApLCBtKHBhcnNlRmxvYXQodFsyXSksIDAsIDEwMCksIG0ocGFyc2VGbG9hdCh0WzNdKSwgMCwgMTAwKSwgbShpc05hTihuKSA/IDEgOiBuLCAwLCAxKV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSB2b2lkIDAgIT09IGVbM10gPyBlWzNdIDogMSksICJyZ2JhKCIgKyBlWzBdICsgIiwgIiArIGVbMV0gKyAiLCAiICsgZVsyXSArICIsICIgKyB0ICsgIikiCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuICJyZ2JhKCIgKyBNYXRoLnJvdW5kKGVbMF0gLyAyNTUgKiAxMDApICsgIiUsICIgKyBNYXRoLnJvdW5kKGVbMV0gLyAyNTUgKiAxMDApICsgIiUsICIgKyBNYXRoLnJvdW5kKGVbMl0gLyAyNTUgKiAxMDApICsgIiUsICIgKyAodCB8fCBlWzNdIHx8IDEpICsgIikiCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9IHZvaWQgMCAhPT0gZVszXSA/IGVbM10gOiAxKSwgImhzbGEoIiArIGVbMF0gKyAiLCAiICsgZVsxXSArICIlLCAiICsgZVsyXSArICIlLCAiICsgdCArICIpIgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbShlLCB0LCBuKSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh0LCBlKSwgbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHYoZSkgewogICAgICAgICAgICB2YXIgdCA9IGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCA8IDIgPyAiMCIgKyB0IDogdAogICAgICAgIH0KICAgICAgICB2YXIgeSA9IHt9OwogICAgICAgIGZvciAodmFyIGIgaW4gbCkgeVtsW2JdXSA9IGI7CiAgICAgICAgdmFyIHcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgdyA/IGUgOiB0aGlzIGluc3RhbmNlb2YgdyA/ICh0aGlzLnZhbGlkID0gITEsIHRoaXMudmFsdWVzID0gewogICAgICAgICAgICAgICAgcmdiOiBbMCwgMCwgMF0sCiAgICAgICAgICAgICAgICBoc2w6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgIGhzdjogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgaHdiOiBbMCwgMCwgMF0sCiAgICAgICAgICAgICAgICBjbXlrOiBbMCwgMCwgMCwgMF0sCiAgICAgICAgICAgICAgICBhbHBoYTogMQogICAgICAgICAgICB9LCB2b2lkKCJzdHJpbmciID09IHR5cGVvZiBlID8gKHQgPSBjLmdldFJnYmEoZSkpID8gdGhpcy5zZXRWYWx1ZXMoInJnYiIsIHQpIDogKHQgPSBjLmdldEhzbGEoZSkpID8gdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpIDogKHQgPSBjLmdldEh3YihlKSkgJiYgdGhpcy5zZXRWYWx1ZXMoImh3YiIsIHQpIDogIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgKHZvaWQgMCAhPT0gKHQgPSBlKS5yIHx8IHZvaWQgMCAhPT0gdC5yZWQgPyB0aGlzLnNldFZhbHVlcygicmdiIiwgdCkgOiB2b2lkIDAgIT09IHQubCB8fCB2b2lkIDAgIT09IHQubGlnaHRuZXNzID8gdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpIDogdm9pZCAwICE9PSB0LnYgfHwgdm9pZCAwICE9PSB0LnZhbHVlID8gdGhpcy5zZXRWYWx1ZXMoImhzdiIsIHQpIDogdm9pZCAwICE9PSB0LncgfHwgdm9pZCAwICE9PSB0LndoaXRlbmVzcyA/IHRoaXMuc2V0VmFsdWVzKCJod2IiLCB0KSA6IHZvaWQgMCA9PT0gdC5jICYmIHZvaWQgMCA9PT0gdC5jeWFuIHx8IHRoaXMuc2V0VmFsdWVzKCJjbXlrIiwgdCkpKSkgOiBuZXcgdyhlKTsKICAgICAgICAgICAgdmFyIHQKICAgICAgICB9OwogICAgICAgIHcucHJvdG90eXBlID0gewogICAgICAgICAgICBpc1ZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJnYjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTcGFjZSgicmdiIiwgYXJndW1lbnRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBoc2w6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3BhY2UoImhzbCIsIGFyZ3VtZW50cykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaHN2OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFNwYWNlKCJoc3YiLCBhcmd1bWVudHMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGh3YjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTcGFjZSgiaHdiIiwgYXJndW1lbnRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjbXlrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFNwYWNlKCJjbXlrIiwgYXJndW1lbnRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZ2JBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMucmdiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhzbEFycmF5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5oc2wKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaHN2QXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmhzdgogICAgICAgICAgICB9LAogICAgICAgICAgICBod2JBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMudmFsdWVzOwogICAgICAgICAgICAgICAgcmV0dXJuIDEgIT09IGUuYWxwaGEgPyBlLmh3Yi5jb25jYXQoW2UuYWxwaGFdKSA6IGUuaHdiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNteWtBcnJheTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuY215awogICAgICAgICAgICB9LAogICAgICAgICAgICByZ2JhQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlczsKICAgICAgICAgICAgICAgIHJldHVybiBlLnJnYi5jb25jYXQoW2UuYWxwaGFdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBoc2xhQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlczsKICAgICAgICAgICAgICAgIHJldHVybiBlLmhzbC5jb25jYXQoW2UuYWxwaGFdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBhbHBoYTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IHRoaXMudmFsdWVzLmFscGhhIDogKHRoaXMuc2V0VmFsdWVzKCJhbHBoYSIsIGUpLCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoInJnYiIsIDAsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdyZWVuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJyZ2IiLCAxLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBibHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJyZ2IiLCAyLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBodWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIChlID0gKGUgJT0gMzYwKSA8IDAgPyAzNjAgKyBlIDogZSksIHRoaXMuc2V0Q2hhbm5lbCgiaHNsIiwgMCwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2F0dXJhdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHNsIiwgMSwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGlnaHRuZXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc2wiLCAyLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzYXR1cmF0aW9udjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHN2IiwgMSwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgd2hpdGVuZXNzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJod2IiLCAxLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBibGFja25lc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENoYW5uZWwoImh3YiIsIDIsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc3YiLCAyLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjeWFuOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJjbXlrIiwgMCwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbWFnZW50YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsIDEsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHllbGxvdzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsIDIsIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJsYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJjbXlrIiwgMywgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGV4U3RyaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjLmhleFN0cmluZyh0aGlzLnZhbHVlcy5yZ2IpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJnYlN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYy5yZ2JTdHJpbmcodGhpcy52YWx1ZXMucmdiLCB0aGlzLnZhbHVlcy5hbHBoYSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmdiYVN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYy5yZ2JhU3RyaW5nKHRoaXMudmFsdWVzLnJnYiwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBlcmNlbnRTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMucGVyY2VudFN0cmluZyh0aGlzLnZhbHVlcy5yZ2IsIHRoaXMudmFsdWVzLmFscGhhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBoc2xTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMuaHNsU3RyaW5nKHRoaXMudmFsdWVzLmhzbCwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhzbGFTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMuaHNsYVN0cmluZyh0aGlzLnZhbHVlcy5oc2wsIHRoaXMudmFsdWVzLmFscGhhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBod2JTdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMuaHdiU3RyaW5nKHRoaXMudmFsdWVzLmh3YiwgdGhpcy52YWx1ZXMuYWxwaGEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGtleXdvcmQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGMua2V5d29yZCh0aGlzLnZhbHVlcy5yZ2IsIHRoaXMudmFsdWVzLmFscGhhKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZ2JOdW1iZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlcy5yZ2I7CiAgICAgICAgICAgICAgICByZXR1cm4gZVswXSA8PCAxNiB8IGVbMV0gPDwgOCB8IGVbMl0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgbHVtaW5vc2l0eTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gdGhpcy52YWx1ZXMucmdiLCB0ID0gW10sIG4gPSAwOyBuIDwgZS5sZW5ndGg7IG4rKykgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gZVtuXSAvIDI1NTsKICAgICAgICAgICAgICAgICAgICB0W25dID0gaSA8PSAuMDM5MjggPyBpIC8gMTIuOTIgOiBNYXRoLnBvdygoaSArIC4wNTUpIC8gMS4wNTUsIDIuNCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAuMjEyNiAqIHRbMF0gKyAuNzE1MiAqIHRbMV0gKyAuMDcyMiAqIHRbMl0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29udHJhc3Q6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5sdW1pbm9zaXR5KCksCiAgICAgICAgICAgICAgICAgICAgbiA9IGUubHVtaW5vc2l0eSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgPiBuID8gKHQgKyAuMDUpIC8gKG4gKyAuMDUpIDogKG4gKyAuMDUpIC8gKHQgKyAuMDUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxldmVsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuY29udHJhc3QoZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA+PSA3LjEgPyAiQUFBIiA6IHQgPj0gNC41ID8gIkFBIiA6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhcms6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlcy5yZ2I7CiAgICAgICAgICAgICAgICByZXR1cm4gKDI5OSAqIGVbMF0gKyA1ODcgKiBlWzFdICsgMTE0ICogZVsyXSkgLyAxZTMgPCAxMjgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmRhcmsoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZWdhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCB0ID0gMDsgdCA8IDM7IHQrKykgZVt0XSA9IDI1NSAtIHRoaXMudmFsdWVzLnJnYlt0XTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhbHVlcygicmdiIiwgZSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGlnaHRlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlcy5oc2w7CiAgICAgICAgICAgICAgICByZXR1cm4gdFsyXSArPSB0WzJdICogZSwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRhcmtlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlcy5oc2w7CiAgICAgICAgICAgICAgICByZXR1cm4gdFsyXSAtPSB0WzJdICogZSwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNhdHVyYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsdWVzLmhzbDsKICAgICAgICAgICAgICAgIHJldHVybiB0WzFdICs9IHRbMV0gKiBlLCB0aGlzLnNldFZhbHVlcygiaHNsIiwgdCksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGVzYXR1cmF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlcy5oc2w7CiAgICAgICAgICAgICAgICByZXR1cm4gdFsxXSAtPSB0WzFdICogZSwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHdoaXRlbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnZhbHVlcy5od2I7CiAgICAgICAgICAgICAgICByZXR1cm4gdFsxXSArPSB0WzFdICogZSwgdGhpcy5zZXRWYWx1ZXMoImh3YiIsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJsYWNrZW46IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52YWx1ZXMuaHdiOwogICAgICAgICAgICAgICAgcmV0dXJuIHRbMl0gKz0gdFsyXSAqIGUsIHRoaXMuc2V0VmFsdWVzKCJod2IiLCB0KSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBncmV5c2NhbGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLnZhbHVlcy5yZ2IsCiAgICAgICAgICAgICAgICAgICAgdCA9IC4zICogZVswXSArIC41OSAqIGVbMV0gKyAuMTEgKiBlWzJdOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJyZ2IiLCBbdCwgdCwgdF0pLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNsZWFyZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52YWx1ZXMuYWxwaGE7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIiwgdCAtIHQgKiBlKSwgdGhpcwogICAgICAgICAgICB9LAogICAgICAgICAgICBvcGFxdWVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsdWVzLmFscGhhOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJhbHBoYSIsIHQgKyB0ICogZSksIHRoaXMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcm90YXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsdWVzLmhzbCwKICAgICAgICAgICAgICAgICAgICBuID0gKHRbMF0gKyBlKSAlIDM2MDsKICAgICAgICAgICAgICAgIHJldHVybiB0WzBdID0gbiA8IDAgPyAzNjAgKyBuIDogbiwgdGhpcy5zZXRWYWx1ZXMoImhzbCIsIHQpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1peDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSBlLAogICAgICAgICAgICAgICAgICAgIGkgPSB2b2lkIDAgPT09IHQgPyAuNSA6IHQsCiAgICAgICAgICAgICAgICAgICAgciA9IDIgKiBpIC0gMSwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5hbHBoYSgpIC0gbi5hbHBoYSgpLAogICAgICAgICAgICAgICAgICAgIGEgPSAoKHIgKiBvID09IC0xID8gciA6IChyICsgbykgLyAoMSArIHIgKiBvKSkgKyAxKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgcyA9IDEgLSBhOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmdiKGEgKiB0aGlzLnJlZCgpICsgcyAqIG4ucmVkKCksIGEgKiB0aGlzLmdyZWVuKCkgKyBzICogbi5ncmVlbigpLCBhICogdGhpcy5ibHVlKCkgKyBzICogbi5ibHVlKCkpLmFscGhhKHRoaXMuYWxwaGEoKSAqIGkgKyBuLmFscGhhKCkgKiAoMSAtIGkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b0pTT046IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmdiKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4gPSBuZXcgdywKICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy52YWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgciA9IG4udmFsdWVzOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbyBpbiBpKSBpLmhhc093blByb3BlcnR5KG8pICYmIChlID0gaVtvXSwgIltvYmplY3QgQXJyYXldIiA9PT0gKHQgPSB7fS50b1N0cmluZy5jYWxsKGUpKSA/IHJbb10gPSBlLnNsaWNlKDApIDogIltvYmplY3QgTnVtYmVyXSIgPT09IHQgPyByW29dID0gZSA6IGNvbnNvbGUuZXJyb3IoInVuZXhwZWN0ZWQgY29sb3IgdmFsdWU6IiwgZSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgICAgfQogICAgICAgIH0sIHcucHJvdG90eXBlLnNwYWNlcyA9IHsKICAgICAgICAgICAgcmdiOiBbInJlZCIsICJncmVlbiIsICJibHVlIl0sCiAgICAgICAgICAgIGhzbDogWyJodWUiLCAic2F0dXJhdGlvbiIsICJsaWdodG5lc3MiXSwKICAgICAgICAgICAgaHN2OiBbImh1ZSIsICJzYXR1cmF0aW9uIiwgInZhbHVlIl0sCiAgICAgICAgICAgIGh3YjogWyJodWUiLCAid2hpdGVuZXNzIiwgImJsYWNrbmVzcyJdLAogICAgICAgICAgICBjbXlrOiBbImN5YW4iLCAibWFnZW50YSIsICJ5ZWxsb3ciLCAiYmxhY2siXQogICAgICAgIH0sIHcucHJvdG90eXBlLm1heGVzID0gewogICAgICAgICAgICByZ2I6IFsyNTUsIDI1NSwgMjU1XSwKICAgICAgICAgICAgaHNsOiBbMzYwLCAxMDAsIDEwMF0sCiAgICAgICAgICAgIGhzdjogWzM2MCwgMTAwLCAxMDBdLAogICAgICAgICAgICBod2I6IFszNjAsIDEwMCwgMTAwXSwKICAgICAgICAgICAgY215azogWzEwMCwgMTAwLCAxMDAsIDEwMF0KICAgICAgICB9LCB3LnByb3RvdHlwZS5nZXRWYWx1ZXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZvciAodmFyIHQgPSB0aGlzLnZhbHVlcywgbiA9IHt9LCBpID0gMDsgaSA8IGUubGVuZ3RoOyBpKyspIG5bZS5jaGFyQXQoaSldID0gdFtlXVtpXTsKICAgICAgICAgICAgcmV0dXJuIDEgIT09IHQuYWxwaGEgJiYgKG4uYSA9IHQuYWxwaGEpLCBuCiAgICAgICAgfSwgdy5wcm90b3R5cGUuc2V0VmFsdWVzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiwgaSwgciA9IHRoaXMudmFsdWVzLAogICAgICAgICAgICAgICAgbyA9IHRoaXMuc3BhY2VzLAogICAgICAgICAgICAgICAgYSA9IHRoaXMubWF4ZXMsCiAgICAgICAgICAgICAgICBsID0gMTsKICAgICAgICAgICAgaWYgKHRoaXMudmFsaWQgPSAhMCwgImFscGhhIiA9PT0gZSkgbCA9IHQ7CiAgICAgICAgICAgIGVsc2UgaWYgKHQubGVuZ3RoKSByW2VdID0gdC5zbGljZSgwLCBlLmxlbmd0aCksIGwgPSB0W2UubGVuZ3RoXTsKICAgICAgICAgICAgZWxzZSBpZiAodm9pZCAwICE9PSB0W2UuY2hhckF0KDApXSkgewogICAgICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGUubGVuZ3RoOyBuKyspIHJbZV1bbl0gPSB0W2UuY2hhckF0KG4pXTsKICAgICAgICAgICAgICAgIGwgPSB0LmEKICAgICAgICAgICAgfSBlbHNlIGlmICh2b2lkIDAgIT09IHRbb1tlXVswXV0pIHsKICAgICAgICAgICAgICAgIHZhciBjID0gb1tlXTsKICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBlLmxlbmd0aDsgbisrKSByW2VdW25dID0gdFtjW25dXTsKICAgICAgICAgICAgICAgIGwgPSB0LmFscGhhCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHIuYWxwaGEgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2b2lkIDAgPT09IGwgPyByLmFscGhhIDogbCkpLCAiYWxwaGEiID09PSBlKSByZXR1cm4gITE7CiAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBlLmxlbmd0aDsgbisrKSBpID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oYVtlXVtuXSwgcltlXVtuXSkpLCByW2VdW25dID0gTWF0aC5yb3VuZChpKTsKICAgICAgICAgICAgZm9yICh2YXIgdSBpbiBvKSB1ICE9PSBlICYmIChyW3VdID0gc1tlXVt1XShyW2VdKSk7CiAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgIH0sIHcucHJvdG90eXBlLnNldFNwYWNlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IHRbMF07CiAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IG4gPyB0aGlzLmdldFZhbHVlcyhlKSA6ICgibnVtYmVyIiA9PSB0eXBlb2YgbiAmJiAobiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKSwgdGhpcy5zZXRWYWx1ZXMoZSwgbiksIHRoaXMpCiAgICAgICAgfSwgdy5wcm90b3R5cGUuc2V0Q2hhbm5lbCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSB0aGlzLnZhbHVlc1tlXTsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gbiA/IGlbdF0gOiAobiA9PT0gaVt0XSB8fCAoaVt0XSA9IG4sIHRoaXMuc2V0VmFsdWVzKGUsIGkpKSwgdGhpcykKICAgICAgICB9LCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh3aW5kb3cuQ29sb3IgPSB3KTsKICAgICAgICB2YXIgeCA9IHc7CgogICAgICAgIGZ1bmN0aW9uIF8oZSkgewogICAgICAgICAgICByZXR1cm4gLTEgPT09IFsiX19wcm90b19fIiwgInByb3RvdHlwZSIsICJjb25zdHJ1Y3RvciJdLmluZGV4T2YoZSkKICAgICAgICB9CiAgICAgICAgdmFyIFMsIEMgPSB7CiAgICAgICAgICAgICAgICBub29wOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgdWlkOiAoUyA9IDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBTKysKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsID09IGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpc0FycmF5OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkgJiYgQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiW29iamVjdCIgPT09IHQuc3Vic3RyKDAsIDcpICYmICJBcnJheV0iID09PSB0LnN1YnN0cigtNikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpc09iamVjdDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsICE9PSBlICYmICJbb2JqZWN0IE9iamVjdF0iID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpc0Zpbml0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIm51bWJlciIgPT0gdHlwZW9mIGUgfHwgZSBpbnN0YW5jZW9mIE51bWJlcikgJiYgaXNGaW5pdGUoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB2YWx1ZU9yRGVmYXVsdDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyB0IDogZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHZhbHVlQXRJbmRleE9yRGVmYXVsdDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBDLnZhbHVlT3JEZWZhdWx0KEMuaXNBcnJheShlKSA/IGVbdF0gOiBlLCBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS5jYWxsKSByZXR1cm4gZS5hcHBseShuLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhY2g6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgYTsKICAgICAgICAgICAgICAgICAgICBpZiAoQy5pc0FycmF5KGUpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobyA9IGUubGVuZ3RoLCBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gbyAtIDE7IHIgPj0gMDsgci0tKSB0LmNhbGwobiwgZVtyXSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDA7IHIgPCBvOyByKyspIHQuY2FsbChuLCBlW3JdLCByKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChDLmlzT2JqZWN0KGUpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG8gPSAoYSA9IE9iamVjdC5rZXlzKGUpKS5sZW5ndGgsIHIgPSAwOyByIDwgbzsgcisrKSB0LmNhbGwobiwgZVthW3JdXSwgYVtyXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhcnJheUVxdWFsczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByLCBvOwogICAgICAgICAgICAgICAgICAgIGlmICghZSB8fCAhdCB8fCBlLmxlbmd0aCAhPT0gdC5sZW5ndGgpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyArK24pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gZVtuXSwgbyA9IHRbbl0sIHIgaW5zdGFuY2VvZiBBcnJheSAmJiBvIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQy5hcnJheUVxdWFscyhyLCBvKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAociAhPT0gbykgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsb25lOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEMuaXNBcnJheShlKSkgcmV0dXJuIGUubWFwKEMuY2xvbmUpOwogICAgICAgICAgICAgICAgICAgIGlmIChDLmlzT2JqZWN0KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBPYmplY3QuY3JlYXRlKGUpLCBuID0gT2JqZWN0LmtleXMoZSksIGkgPSBuLmxlbmd0aCwgciA9IDA7IHIgPCBpOyArK3IpIHRbbltyXV0gPSBDLmNsb25lKGVbbltyXV0pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9tZXJnZXI6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXyhlKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbltlXTsKICAgICAgICAgICAgICAgICAgICAgICAgQy5pc09iamVjdChyKSAmJiBDLmlzT2JqZWN0KG8pID8gQy5tZXJnZShyLCBvLCBpKSA6IHRbZV0gPSBDLmNsb25lKG8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9tZXJnZXJJZjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGlmIChfKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gdFtlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuW2VdOwogICAgICAgICAgICAgICAgICAgICAgICBDLmlzT2JqZWN0KGkpICYmIEMuaXNPYmplY3QocikgPyBDLm1lcmdlSWYoaSwgcikgOiB0Lmhhc093blByb3BlcnR5KGUpIHx8ICh0W2VdID0gQy5jbG9uZShyKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcywgbCA9IEMuaXNBcnJheSh0KSA/IHQgOiBbdF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAoIUMuaXNPYmplY3QoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IChuID0gbiB8fCB7fSkubWVyZ2VyIHx8IEMuX21lcmdlciwgciA9IDA7IHIgPCBjOyArK3IpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbFtyXSwgQy5pc09iamVjdCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9IDAsIGEgPSAobyA9IE9iamVjdC5rZXlzKHQpKS5sZW5ndGg7IHMgPCBhOyArK3MpIGkob1tzXSwgZSwgdCwgbik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBtZXJnZUlmOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEMubWVyZ2UoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBtZXJnZXI6IEMuX21lcmdlcklmCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleHRlbmQ6IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBDLm1lcmdlKGUsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSwgewogICAgICAgICAgICAgICAgICAgICAgICBtZXJnZXI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRbZV0gPSBuW2VdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluaGVyaXRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZSAmJiBlLmhhc093blByb3BlcnR5KCJjb25zdHJ1Y3RvciIpID8gZS5jb25zdHJ1Y3RvciA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gbgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuLnByb3RvdHlwZSA9IG5ldyBpLCBuLmV4dGVuZCA9IEMuaW5oZXJpdHMsIGUgJiYgQy5leHRlbmQobi5wcm90b3R5cGUsIGUpLCBuLl9fc3VwZXJfXyA9IHQucHJvdG90eXBlLCBuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2RlcHJlY2F0ZWQ6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IHQgJiYgY29uc29sZS53YXJuKGUgKyAnOiAiJyArIG4gKyAnIiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICInICsgaSArICciIGluc3RlYWQnKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBrID0gQzsKICAgICAgICBDLmNhbGxDYWxsYmFjayA9IEMuY2FsbGJhY2ssIEMuaW5kZXhPZiA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSwgdCwgbikKICAgICAgICB9LCBDLmdldFZhbHVlT3JEZWZhdWx0ID0gQy52YWx1ZU9yRGVmYXVsdCwgQy5nZXRWYWx1ZUF0SW5kZXhPckRlZmF1bHQgPSBDLnZhbHVlQXRJbmRleE9yRGVmYXVsdDsKICAgICAgICB2YXIgVCA9IHsKICAgICAgICAgICAgICAgIGxpbmVhcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluUXVhZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICogZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VPdXRRdWFkOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1lICogKGUgLSAyKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VJbk91dFF1YWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgLz0gLjUpIDwgMSA/IC41ICogZSAqIGUgOiAtLjUgKiAoLS1lICogKGUgLSAyKSAtIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluQ3ViaWM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAqIGUgKiBlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZU91dEN1YmljOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlIC09IDEpICogZSAqIGUgKyAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluT3V0Q3ViaWM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgLz0gLjUpIDwgMSA/IC41ICogZSAqIGUgKiBlIDogLjUgKiAoKGUgLT0gMikgKiBlICogZSArIDIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluUXVhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAqIGUgKiBlICogZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VPdXRRdWFydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAtKChlIC09IDEpICogZSAqIGUgKiBlIC0gMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5PdXRRdWFydDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSAvPSAuNSkgPCAxID8gLjUgKiBlICogZSAqIGUgKiBlIDogLS41ICogKChlIC09IDIpICogZSAqIGUgKiBlIC0gMikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5RdWludDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICogZSAqIGUgKiBlICogZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VPdXRRdWludDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSAtPSAxKSAqIGUgKiBlICogZSAqIGUgKyAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluT3V0UXVpbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgLz0gLjUpIDwgMSA/IC41ICogZSAqIGUgKiBlICogZSAqIGUgOiAuNSAqICgoZSAtPSAyKSAqIGUgKiBlICogZSAqIGUgKyAyKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VJblNpbmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAtIE1hdGguY29zKGUgKiAoTWF0aC5QSSAvIDIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VPdXRTaW5lOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc2luKGUgKiAoTWF0aC5QSSAvIDIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VJbk91dFNpbmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLS41ICogKE1hdGguY29zKE1hdGguUEkgKiBlKSAtIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluRXhwbzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlID8gMCA6IE1hdGgucG93KDIsIDEwICogKGUgLSAxKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlT3V0RXhwbzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAxID09PSBlID8gMSA6IDEgLSBNYXRoLnBvdygyLCAtMTAgKiBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VJbk91dEV4cG86IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZSA/IDAgOiAxID09PSBlID8gMSA6IChlIC89IC41KSA8IDEgPyAuNSAqIE1hdGgucG93KDIsIDEwICogKGUgLSAxKSkgOiAuNSAqICgyIC0gTWF0aC5wb3coMiwgLTEwICogLS1lKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5DaXJjOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPj0gMSA/IGUgOiAtKE1hdGguc3FydCgxIC0gZSAqIGUpIC0gMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlT3V0Q2lyYzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoMSAtIChlIC09IDEpICogZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5PdXRDaXJjOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlIC89IC41KSA8IDEgPyAtLjUgKiAoTWF0aC5zcXJ0KDEgLSBlICogZSkgLSAxKSA6IC41ICogKE1hdGguc3FydCgxIC0gKGUgLT0gMikgKiBlKSArIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluRWxhc3RpYzogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gMS43MDE1OCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlID8gMCA6IDEgPT09IGUgPyAxIDogKG4gfHwgKG4gPSAuMyksIGkgPCAxID8gKGkgPSAxLCB0ID0gbiAvIDQpIDogdCA9IG4gLyAoMiAqIE1hdGguUEkpICogTWF0aC5hc2luKDEgLyBpKSwgLWkgKiBNYXRoLnBvdygyLCAxMCAqIChlIC09IDEpKSAqIE1hdGguc2luKChlIC0gdCkgKiAoMiAqIE1hdGguUEkpIC8gbikpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZU91dEVsYXN0aWM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IDEuNzAxNTgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZSA/IDAgOiAxID09PSBlID8gMSA6IChuIHx8IChuID0gLjMpLCBpIDwgMSA/IChpID0gMSwgdCA9IG4gLyA0KSA6IHQgPSBuIC8gKDIgKiBNYXRoLlBJKSAqIE1hdGguYXNpbigxIC8gaSksIGkgKiBNYXRoLnBvdygyLCAtMTAgKiBlKSAqIE1hdGguc2luKChlIC0gdCkgKiAoMiAqIE1hdGguUEkpIC8gbikgKyAxKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VJbk91dEVsYXN0aWM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IDEuNzAxNTgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gZSA/IDAgOiAyID09IChlIC89IC41KSA/IDEgOiAobiB8fCAobiA9IC40NSksIGkgPCAxID8gKGkgPSAxLCB0ID0gbiAvIDQpIDogdCA9IG4gLyAoMiAqIE1hdGguUEkpICogTWF0aC5hc2luKDEgLyBpKSwgZSA8IDEgPyBpICogTWF0aC5wb3coMiwgMTAgKiAoZSAtPSAxKSkgKiBNYXRoLnNpbigoZSAtIHQpICogKDIgKiBNYXRoLlBJKSAvIG4pICogLS41IDogaSAqIE1hdGgucG93KDIsIC0xMCAqIChlIC09IDEpKSAqIE1hdGguc2luKChlIC0gdCkgKiAoMiAqIE1hdGguUEkpIC8gbikgKiAuNSArIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZWFzZUluQmFjazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gMS43MDE1ODsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAqIGUgKiAoKHQgKyAxKSAqIGUgLSB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVhc2VPdXRCYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAxLjcwMTU4OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSAtPSAxKSAqIGUgKiAoKHQgKyAxKSAqIGUgKyB0KSArIDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5PdXRCYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAxLjcwMTU4OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAoZSAvPSAuNSkgPCAxID8gZSAqIGUgKiAoKDEgKyAodCAqPSAxLjUyNSkpICogZSAtIHQpICogLjUgOiAuNSAqICgoZSAtPSAyKSAqIGUgKiAoKDEgKyAodCAqPSAxLjUyNSkpICogZSArIHQpICsgMikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5Cb3VuY2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAtIFQuZWFzZU91dEJvdW5jZSgxIC0gZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlT3V0Qm91bmNlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAxIC8gMi43NSA/IDcuNTYyNSAqIGUgKiBlIDogZSA8IDIgLyAyLjc1ID8gNy41NjI1ICogKGUgLT0gMS41IC8gMi43NSkgKiBlICsgLjc1IDogZSA8IDIuNSAvIDIuNzUgPyA3LjU2MjUgKiAoZSAtPSAyLjI1IC8gMi43NSkgKiBlICsgLjkzNzUgOiA3LjU2MjUgKiAoZSAtPSAyLjYyNSAvIDIuNzUpICogZSArIC45ODQzNzUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlYXNlSW5PdXRCb3VuY2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA8IC41ID8gLjUgKiBULmVhc2VJbkJvdW5jZSgyICogZSkgOiAuNSAqIFQuZWFzZU91dEJvdW5jZSgyICogZSAtIDEpICsgLjUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgQSA9IHsKICAgICAgICAgICAgICAgIGVmZmVjdHM6IFQKICAgICAgICAgICAgfTsKICAgICAgICBrLmVhc2luZ0VmZmVjdHMgPSBUOwogICAgICAgIHZhciBFID0gTWF0aC5QSSwKICAgICAgICAgICAgRCA9IEUgLyAxODAsCiAgICAgICAgICAgIE8gPSAyICogRSwKICAgICAgICAgICAgTSA9IEUgLyAyLAogICAgICAgICAgICBJID0gRSAvIDQsCiAgICAgICAgICAgIEwgPSAyICogRSAvIDMsCiAgICAgICAgICAgIFAgPSB7CiAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuY3R4LmNsZWFyUmVjdCgwLCAwLCBlLndpZHRoLCBlLmhlaWdodCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByb3VuZGVkUmVjdDogZnVuY3Rpb24oZSwgdCwgbiwgaSwgciwgbykgewogICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gTWF0aC5taW4obywgciAvIDIsIGkgLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0ICsgYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBuICsgYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0ICsgaSAtIGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbiArIHIgLSBhOwogICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyh0LCBsKSwgcyA8IGMgJiYgbCA8IHUgPyAoZS5hcmMocywgbCwgYSwgLUUsIC1NKSwgZS5hcmMoYywgbCwgYSwgLU0sIDApLCBlLmFyYyhjLCB1LCBhLCAwLCBNKSwgZS5hcmMocywgdSwgYSwgTSwgRSkpIDogcyA8IGMgPyAoZS5tb3ZlVG8ocywgbiksIGUuYXJjKGMsIGwsIGEsIC1NLCBNKSwgZS5hcmMocywgbCwgYSwgTSwgRSArIE0pKSA6IGwgPCB1ID8gKGUuYXJjKHMsIGwsIGEsIC1FLCAwKSwgZS5hcmMocywgdSwgYSwgMCwgRSkpIDogZS5hcmMocywgbCwgYSwgLUUsIEUpLCBlLmNsb3NlUGF0aCgpLCBlLm1vdmVUbyh0LCBuKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLnJlY3QodCwgbiwgaSwgcikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3UG9pbnQ6IGZ1bmN0aW9uKGUsIHQsIG4sIGksIHIsIG8pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSwgcywgbCwgYywgdSwgZCA9IChvIHx8IDApICogRDsKICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAoIltvYmplY3QgSFRNTEltYWdlRWxlbWVudF0iID09PSAoYSA9IHQudG9TdHJpbmcoKSkgfHwgIltvYmplY3QgSFRNTENhbnZhc0VsZW1lbnRdIiA9PT0gYSkpIHJldHVybiBlLnNhdmUoKSwgZS50cmFuc2xhdGUoaSwgciksIGUucm90YXRlKGQpLCBlLmRyYXdJbWFnZSh0LCAtdC53aWR0aCAvIDIsIC10LmhlaWdodCAvIDIsIHQud2lkdGgsIHQuaGVpZ2h0KSwgdm9pZCBlLnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIShpc05hTihuKSB8fCBuIDw9IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5iZWdpblBhdGgoKSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogZS5hcmMoaSwgciwgbiwgMCwgTyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0cmlhbmdsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgKyBNYXRoLnNpbihkKSAqIG4sIHIgLSBNYXRoLmNvcyhkKSAqIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKz0gTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhpICsgTWF0aC5zaW4oZCkgKiBuLCByIC0gTWF0aC5jb3MoZCkgKiBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkICs9IEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSArIE1hdGguc2luKGQpICogbiwgciAtIE1hdGguY29zKGQpICogbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJlY3RSb3VuZGVkIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG4gLSAodSA9IC41MTYgKiBuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5jb3MoZCArIEkpICogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zaW4oZCArIEkpICogYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmFyYyhpIC0gcywgciAtIGwsIHUsIGQgLSBFLCBkIC0gTSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hcmMoaSArIGwsIHIgLSBzLCB1LCBkIC0gTSwgZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hcmMoaSArIHMsIHIgKyBsLCB1LCBkLCBkICsgTSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5hcmMoaSAtIGwsIHIgKyBzLCB1LCBkICsgTSwgZCArIEUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY2xvc2VQYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBNYXRoLlNRUlQxXzIgKiBuLCBlLnJlY3QoaSAtIGMsIHIgLSBjLCAyICogYywgMiAqIGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1kICs9IEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyZWN0Um90IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguY29zKGQpICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zaW4oZCkgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgLSBzLCByIC0gbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSArIGwsIHIgLSBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhpICsgcywgciArIGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKGkgLSBsLCByICsgcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNyb3NzUm90IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCArPSBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiY3Jvc3MiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5jb3MoZCkgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNpbihkKSAqIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oaSAtIHMsIHIgLSBsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhpICsgcywgciArIGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgKyBsLCByIC0gcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSAtIGwsIHIgKyBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0YXIiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5jb3MoZCkgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLnNpbihkKSAqIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tb3ZlVG8oaSAtIHMsIHIgLSBsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhpICsgcywgciArIGwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgKyBsLCByIC0gcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSAtIGwsIHIgKyBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkICs9IEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguY29zKGQpICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zaW4oZCkgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgLSBzLCByIC0gbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSArIHMsIHIgKyBsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhpICsgbCwgciAtIHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKGkgLSBsLCByICsgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5lIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguY29zKGQpICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5zaW4oZCkgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW92ZVRvKGkgLSBzLCByIC0gbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5saW5lVG8oaSArIHMsIHIgKyBsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRhc2giOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1vdmVUbyhpLCByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmxpbmVUbyhpICsgTWF0aC5jb3MoZCkgKiBuLCByICsgTWF0aC5zaW4oZCkgKiBuKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUuZmlsbCgpLCBlLnN0cm9rZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pc1BvaW50SW5BcmVhOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUueCA+IHQubGVmdCAtIDFlLTYgJiYgZS54IDwgdC5yaWdodCArIDFlLTYgJiYgZS55ID4gdC50b3AgLSAxZS02ICYmIGUueSA8IHQuYm90dG9tICsgMWUtNgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsaXBBcmVhOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5zYXZlKCksIGUuYmVnaW5QYXRoKCksIGUucmVjdCh0LmxlZnQsIHQudG9wLCB0LnJpZ2h0IC0gdC5sZWZ0LCB0LmJvdHRvbSAtIHQudG9wKSwgZS5jbGlwKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1bmNsaXBBcmVhOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5yZXN0b3JlKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBsaW5lVG86IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG4uc3RlcHBlZExpbmU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJtaWRkbGUiID09PSByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICh0LnggKyBuLngpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKG8sIGkgPyBuLnkgOiB0LnkpLCBlLmxpbmVUbyhvLCBpID8gdC55IDogbi55KQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgImFmdGVyIiA9PT0gciAmJiAhaSB8fCAiYWZ0ZXIiICE9PSByICYmIGkgPyBlLmxpbmVUbyh0LngsIG4ueSkgOiBlLmxpbmVUbyhuLngsIHQueSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUubGluZVRvKG4ueCwgbi55KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLnRlbnNpb24gPyBlLmJlemllckN1cnZlVG8oaSA/IHQuY29udHJvbFBvaW50UHJldmlvdXNYIDogdC5jb250cm9sUG9pbnROZXh0WCwgaSA/IHQuY29udHJvbFBvaW50UHJldmlvdXNZIDogdC5jb250cm9sUG9pbnROZXh0WSwgaSA/IG4uY29udHJvbFBvaW50TmV4dFggOiBuLmNvbnRyb2xQb2ludFByZXZpb3VzWCwgaSA/IG4uY29udHJvbFBvaW50TmV4dFkgOiBuLmNvbnRyb2xQb2ludFByZXZpb3VzWSwgbi54LCBuLnkpIDogZS5saW5lVG8obi54LCBuLnkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGogPSBQOwogICAgICAgIGsuY2xlYXIgPSBQLmNsZWFyLCBrLmRyYXdSb3VuZGVkUmVjdGFuZ2xlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLmJlZ2luUGF0aCgpLCBQLnJvdW5kZWRSZWN0LmFwcGx5KFAsIGFyZ3VtZW50cykKICAgICAgICB9OwogICAgICAgIHZhciBOID0gewogICAgICAgICAgICBfc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gay5tZXJnZSh0aGlzW2VdIHx8ICh0aGlzW2VdID0ge30pLCB0KQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBOLl9zZXQoImdsb2JhbCIsIHsKICAgICAgICAgICAgZGVmYXVsdENvbG9yOiAicmdiYSgwLDAsMCwwLjEpIiwKICAgICAgICAgICAgZGVmYXVsdEZvbnRDb2xvcjogIiM2NjYiLAogICAgICAgICAgICBkZWZhdWx0Rm9udEZhbWlseTogIidIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmIiwKICAgICAgICAgICAgZGVmYXVsdEZvbnRTaXplOiAxMiwKICAgICAgICAgICAgZGVmYXVsdEZvbnRTdHlsZTogIm5vcm1hbCIsCiAgICAgICAgICAgIGRlZmF1bHRMaW5lSGVpZ2h0OiAxLjIsCiAgICAgICAgICAgIHNob3dMaW5lczogITAKICAgICAgICB9KTsKICAgICAgICB2YXIgRiA9IE4sCiAgICAgICAgICAgIFIgPSBrLnZhbHVlT3JEZWZhdWx0LAogICAgICAgICAgICAkID0gewogICAgICAgICAgICAgICAgdG9MaW5lSGVpZ2h0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAoIiIgKyBlKS5tYXRjaCgvXihub3JtYWx8KFxkKyg/OlwuXGQrKT8pKHB4fGVtfCUpPykkLyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICJub3JtYWwiID09PSBuWzFdKSByZXR1cm4gMS4yICogdDsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUgPSArblsyXSwgblszXSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJweCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlIC89IDEwMAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAqIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b1BhZGRpbmc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gay5pc09iamVjdChlKSA/ICh0ID0gK2UudG9wIHx8IDAsIG4gPSArZS5yaWdodCB8fCAwLCBpID0gK2UuYm90dG9tIHx8IDAsIHIgPSArZS5sZWZ0IHx8IDApIDogdCA9IG4gPSBpID0gciA9ICtlIHx8IDAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiB0LAogICAgICAgICAgICAgICAgICAgICAgICByaWdodDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHQgKyBpLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogciArIG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX3BhcnNlRm9udDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRi5nbG9iYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBSKGUuZm9udFNpemUsIHQuZGVmYXVsdEZvbnRTaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseTogUihlLmZvbnRGYW1pbHksIHQuZGVmYXVsdEZvbnRGYW1pbHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogay5vcHRpb25zLnRvTGluZUhlaWdodChSKGUubGluZUhlaWdodCwgdC5kZWZhdWx0TGluZUhlaWdodCksIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBSKGUuZm9udFN0eWxlLCB0LmRlZmF1bHRGb250U3R5bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpLnN0cmluZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFlIHx8IGsuaXNOdWxsT3JVbmRlZihlLnNpemUpIHx8IGsuaXNOdWxsT3JVbmRlZihlLmZhbWlseSkgPyBudWxsIDogKGUuc3R5bGUgPyBlLnN0eWxlICsgIiAiIDogIiIpICsgKGUud2VpZ2h0ID8gZS53ZWlnaHQgKyAiICIgOiAiIikgKyBlLnNpemUgKyAicHggIiArIGUuZmFtaWx5CiAgICAgICAgICAgICAgICAgICAgfShpKSwgaQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgYSwgcyA9ICEwOwogICAgICAgICAgICAgICAgICAgIGZvciAociA9IDAsIG8gPSBlLmxlbmd0aDsgciA8IG87ICsrcikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gKGEgPSBlW3JdKSAmJiAodm9pZCAwICE9PSB0ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGEgJiYgKGEgPSBhKHQpLCBzID0gITEpLCB2b2lkIDAgIT09IG4gJiYgay5pc0FycmF5KGEpICYmIChhID0gYVtuXSwgcyA9ICExKSwgdm9pZCAwICE9PSBhKSkgcmV0dXJuIGkgJiYgIXMgJiYgKGkuY2FjaGVhYmxlID0gITEpLCBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHogPSB7CiAgICAgICAgICAgICAgICBfZmFjdG9yaXplOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGguc3FydChlKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAxOyB0IDwgaTsgdCsrKSBlICUgdCA9PSAwICYmIChuLnB1c2godCksIG4ucHVzaChlIC8gdCkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSAoMCB8IGkpICYmIG4ucHVzaChpKSwgbi5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIC0gdAogICAgICAgICAgICAgICAgICAgIH0pKS5wb3AoKSwgbgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGxvZzEwOiBNYXRoLmxvZzEwIHx8IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IE1hdGgubG9nKGUpICogTWF0aC5MT0cxMEUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLnJvdW5kKHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID09PSBNYXRoLnBvdygxMCwgbikgPyBuIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBIID0gejsKICAgICAgICBrLmxvZzEwID0gei5sb2cxMDsKICAgICAgICB2YXIgQiA9IGssCiAgICAgICAgICAgIFcgPSBBLAogICAgICAgICAgICBxID0gaiwKICAgICAgICAgICAgVSA9ICQsCiAgICAgICAgICAgIFYgPSBIOwogICAgICAgIEIuZWFzaW5nID0gVywgQi5jYW52YXMgPSBxLCBCLm9wdGlvbnMgPSBVLCBCLm1hdGggPSBWLCBCLnJ0bCA9IHsKICAgICAgICAgICAgZ2V0UnRsQWRhcHRlcjogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZnVuY3Rpb24obikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyBlICsgdCAtIG4KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2lkdGg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjZW50ZXIiID09PSBlID8gZSA6ICJyaWdodCIgPT09IGUgPyAibGVmdCIgOiAicmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHhQbHVzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAtIHQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEZvckx0cjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgLSB0CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KHQsIG4pIDogewogICAgICAgICAgICAgICAgICAgIHg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldFdpZHRoOiBmdW5jdGlvbihlKSB7fSwKICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHhQbHVzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICsgdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGVmdEZvckx0cjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb3ZlcnJpZGVUZXh0RGlyZWN0aW9uOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgaTsKICAgICAgICAgICAgICAgICJsdHIiICE9PSB0ICYmICJydGwiICE9PSB0IHx8IChpID0gWyhuID0gZS5jYW52YXMuc3R5bGUpLmdldFByb3BlcnR5VmFsdWUoImRpcmVjdGlvbiIpLCBuLmdldFByb3BlcnR5UHJpb3JpdHkoImRpcmVjdGlvbiIpXSwgbi5zZXRQcm9wZXJ0eSgiZGlyZWN0aW9uIiwgdCwgImltcG9ydGFudCIpLCBlLnByZXZUZXh0RGlyZWN0aW9uID0gaSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzdG9yZVRleHREaXJlY3Rpb246IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS5wcmV2VGV4dERpcmVjdGlvbjsKICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gdCAmJiAoZGVsZXRlIGUucHJldlRleHREaXJlY3Rpb24sIGUuY2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCJkaXJlY3Rpb24iLCB0WzBdLCB0WzFdKSkKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdmFyIFkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIEIuZXh0ZW5kKHRoaXMsIGUpLCB0aGlzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKQogICAgICAgIH07CiAgICAgICAgQi5leHRlbmQoWS5wcm90b3R5cGUsIHsKICAgICAgICAgICAgX3R5cGU6IHZvaWQgMCwKICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZGRlbiA9ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBpdm90OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgICAgIHJldHVybiBlLl92aWV3IHx8IChlLl92aWV3ID0gQi5leHRlbmQoe30sIGUuX21vZGVsKSksIGUuX3N0YXJ0ID0ge30sIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSB0Ll9tb2RlbCwKICAgICAgICAgICAgICAgICAgICBpID0gdC5fc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgciA9IHQuX3ZpZXc7CiAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiAxICE9PSBlID8gKHIgfHwgKHIgPSB0Ll92aWV3ID0ge30pLCBpIHx8IChpID0gdC5fc3RhcnQgPSB7fSksIGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgYSwgcywgbCwgYywgdSwgZCwgaCwgZiA9IE9iamVjdC5rZXlzKG4pOwogICAgICAgICAgICAgICAgICAgIGZvciAociA9IDAsIG8gPSBmLmxlbmd0aDsgciA8IG87ICsrcikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPSBuW2EgPSBmW3JdXSwgdC5oYXNPd25Qcm9wZXJ0eShhKSB8fCAodFthXSA9IGMpLCAocyA9IHRbYV0pICE9PSBjICYmICJfIiAhPT0gYVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuaGFzT3duUHJvcGVydHkoYSkgfHwgKGVbYV0gPSBzKSwgKHUgPSB0eXBlb2YgYykgPT0gdHlwZW9mKGwgPSBlW2FdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT09IHUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkID0geChsKSkudmFsaWQgJiYgKGggPSB4KGMpKS52YWxpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFthXSA9IGgubWl4KGQsIGkpLnJnYlN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQi5pc0Zpbml0ZShsKSAmJiBCLmlzRmluaXRlKGMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFthXSA9IGwgKyAoYyAtIGwpICogaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdFthXSA9IGMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfShpLCByLCBuLCBlKSwgdCkgOiAodC5fdmlldyA9IEIuZXh0ZW5kKHt9LCBuKSwgdC5fc3RhcnQgPSBudWxsLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b29sdGlwUG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLl9tb2RlbC54LAogICAgICAgICAgICAgICAgICAgIHk6IHRoaXMuX21vZGVsLnkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFzVmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEIuaXNOdW1iZXIodGhpcy5fbW9kZWwueCkgJiYgQi5pc051bWJlcih0aGlzLl9tb2RlbC55KQogICAgICAgICAgICB9CiAgICAgICAgfSksIFkuZXh0ZW5kID0gQi5pbmhlcml0czsKICAgICAgICB2YXIgWCA9IFksCiAgICAgICAgICAgIEcgPSBYLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBjaGFydDogbnVsbCwKICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAwLAogICAgICAgICAgICAgICAgbnVtU3RlcHM6IDYwLAogICAgICAgICAgICAgICAgZWFzaW5nOiAiIiwKICAgICAgICAgICAgICAgIHJlbmRlcjogbnVsbCwKICAgICAgICAgICAgICAgIG9uQW5pbWF0aW9uUHJvZ3Jlc3M6IG51bGwsCiAgICAgICAgICAgICAgICBvbkFuaW1hdGlvbkNvbXBsZXRlOiBudWxsCiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBLID0gRzsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsICJhbmltYXRpb25PYmplY3QiLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcwogICAgICAgICAgICB9CiAgICAgICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLnByb3RvdHlwZSwgImNoYXJ0SW5zdGFuY2UiLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydAogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2hhcnQgPSBlCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgRi5fc2V0KCJnbG9iYWwiLCB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgZHVyYXRpb246IDFlMywKICAgICAgICAgICAgICAgIGVhc2luZzogImVhc2VPdXRRdWFydCIsCiAgICAgICAgICAgICAgICBvblByb2dyZXNzOiBCLm5vb3AsCiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiBCLm5vb3AKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBRID0gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uczogW10sCiAgICAgICAgICAgICAgICByZXF1ZXN0OiBudWxsLAogICAgICAgICAgICAgICAgYWRkQW5pbWF0aW9uOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8sIGEgPSB0aGlzLmFuaW1hdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0LmNoYXJ0ID0gZSwgdC5zdGFydFRpbWUgPSBEYXRlLm5vdygpLCB0LmR1cmF0aW9uID0gbiwgaSB8fCAoZS5hbmltYXRpbmcgPSAhMCksIHIgPSAwLCBvID0gYS5sZW5ndGg7IHIgPCBvOyArK3IpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW3JdLmNoYXJ0ID09PSBlKSByZXR1cm4gdm9pZChhW3JdID0gdCk7CiAgICAgICAgICAgICAgICAgICAgYS5wdXNoKHQpLCAxID09PSBhLmxlbmd0aCAmJiB0aGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBCLmZpbmRJbmRleCh0aGlzLmFuaW1hdGlvbnMsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNoYXJ0ID09PSBlCiAgICAgICAgICAgICAgICAgICAgfSkpOyAtIDEgIT09IHQgJiYgKHRoaXMuYW5pbWF0aW9ucy5zcGxpY2UodCwgMSksIGUuYW5pbWF0aW5nID0gITEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgbnVsbCA9PT0gZS5yZXF1ZXN0ICYmIChlLnJlcXVlc3QgPSBCLnJlcXVlc3RBbmltRnJhbWUuY2FsbCh3aW5kb3csIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5yZXF1ZXN0ID0gbnVsbCwgZS5zdGFydERpZ2VzdCgpCiAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN0YXJ0RGlnZXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmFuY2UoKSwgdGhpcy5hbmltYXRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkdmFuY2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUsIHQsIG4sIGksIHIgPSB0aGlzLmFuaW1hdGlvbnMsIG8gPSAwOyBvIDwgci5sZW5ndGg7KSB0ID0gKGUgPSByW29dKS5jaGFydCwgbiA9IGUubnVtU3RlcHMsIGkgPSBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gZS5zdGFydFRpbWUpIC8gZS5kdXJhdGlvbiAqIG4pICsgMSwgZS5jdXJyZW50U3RlcCA9IE1hdGgubWluKGksIG4pLCBCLmNhbGxiYWNrKGUucmVuZGVyLCBbdCwgZV0sIHQpLCBCLmNhbGxiYWNrKGUub25BbmltYXRpb25Qcm9ncmVzcywgW2VdLCB0KSwgZS5jdXJyZW50U3RlcCA+PSBuID8gKEIuY2FsbGJhY2soZS5vbkFuaW1hdGlvbkNvbXBsZXRlLCBbZV0sIHQpLCB0LmFuaW1hdGluZyA9ICExLCByLnNwbGljZShvLCAxKSkgOiArK28KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgWiA9IEIub3B0aW9ucy5yZXNvbHZlLAogICAgICAgICAgICBKID0gWyJwdXNoIiwgInBvcCIsICJzaGlmdCIsICJzcGxpY2UiLCAidW5zaGlmdCJdOwoKICAgICAgICBmdW5jdGlvbiBlZShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gZS5fY2hhcnRqczsKICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gbi5saXN0ZW5lcnMsCiAgICAgICAgICAgICAgICAgICAgciA9IGkuaW5kZXhPZih0KTsgLSAxICE9PSByICYmIGkuc3BsaWNlKHIsIDEpLCBpLmxlbmd0aCA+IDAgfHwgKEouZm9yRWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlW3RdCiAgICAgICAgICAgICAgICB9KSksIGRlbGV0ZSBlLl9jaGFydGpzKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciB0ZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKGUsIHQpCiAgICAgICAgfTsKICAgICAgICBCLmV4dGVuZCh0ZS5wcm90b3R5cGUsIHsKICAgICAgICAgICAgZGF0YXNldEVsZW1lbnRUeXBlOiBudWxsLAogICAgICAgICAgICBkYXRhRWxlbWVudFR5cGU6IG51bGwsCiAgICAgICAgICAgIF9kYXRhc2V0RWxlbWVudE9wdGlvbnM6IFsiYmFja2dyb3VuZENvbG9yIiwgImJvcmRlckNhcFN0eWxlIiwgImJvcmRlckNvbG9yIiwgImJvcmRlckRhc2giLCAiYm9yZGVyRGFzaE9mZnNldCIsICJib3JkZXJKb2luU3R5bGUiLCAiYm9yZGVyV2lkdGgiXSwKICAgICAgICAgICAgX2RhdGFFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyV2lkdGgiLCAicG9pbnRTdHlsZSJdLAogICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICBuLmNoYXJ0ID0gZSwgbi5pbmRleCA9IHQsIG4ubGlua1NjYWxlcygpLCBuLmFkZEVsZW1lbnRzKCksIG4uX3R5cGUgPSBuLmdldE1ldGEoKS50eXBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZUluZGV4OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gZQogICAgICAgICAgICB9LAogICAgICAgICAgICBsaW5rU2NhbGVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuc2NhbGVzLAogICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmdldERhdGFzZXQoKSwKICAgICAgICAgICAgICAgICAgICByID0gdC5vcHRpb25zLnNjYWxlczsKICAgICAgICAgICAgICAgIG51bGwgIT09IGUueEF4aXNJRCAmJiBlLnhBeGlzSUQgaW4gbiAmJiAhaS54QXhpc0lEIHx8IChlLnhBeGlzSUQgPSBpLnhBeGlzSUQgfHwgci54QXhlc1swXS5pZCksIG51bGwgIT09IGUueUF4aXNJRCAmJiBlLnlBeGlzSUQgaW4gbiAmJiAhaS55QXhpc0lEIHx8IChlLnlBeGlzSUQgPSBpLnlBeGlzSUQgfHwgci55QXhlc1swXS5pZCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RGF0YXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RoaXMuaW5kZXhdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldE1ldGE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhcnQuZ2V0RGF0YXNldE1ldGEodGhpcy5pbmRleCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0U2NhbGVGb3JJZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhcnQuc2NhbGVzW2VdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRWYWx1ZVNjYWxlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnlBeGlzSUQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldEluZGV4U2NhbGVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXRhKCkueEF4aXNJRAogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0VmFsdWVTY2FsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTY2FsZUZvcklkKHRoaXMuX2dldFZhbHVlU2NhbGVJZCgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SW5kZXhTY2FsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTY2FsZUZvcklkKHRoaXMuX2dldEluZGV4U2NhbGVJZCgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGUoITApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5fZGF0YSAmJiBlZSh0aGlzLl9kYXRhLCB0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVNZXRhRGF0YXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZGF0YXNldEVsZW1lbnRUeXBlOwogICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgbmV3IGUoewogICAgICAgICAgICAgICAgICAgIF9jaGFydDogdGhpcy5jaGFydCwKICAgICAgICAgICAgICAgICAgICBfZGF0YXNldEluZGV4OiB0aGlzLmluZGV4CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBjcmVhdGVNZXRhRGF0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmRhdGFFbGVtZW50VHlwZTsKICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIG5ldyB0KHsKICAgICAgICAgICAgICAgICAgICBfY2hhcnQ6IHRoaXMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgX2RhdGFzZXRJbmRleDogdGhpcy5pbmRleCwKICAgICAgICAgICAgICAgICAgICBfaW5kZXg6IGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFkZEVsZW1lbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuID0gdGhpcy5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0RGF0YXNldCgpLmRhdGEgfHwgW10sCiAgICAgICAgICAgICAgICAgICAgciA9IG4uZGF0YTsKICAgICAgICAgICAgICAgIGZvciAoZSA9IDAsIHQgPSBpLmxlbmd0aDsgZSA8IHQ7ICsrZSkgcltlXSA9IHJbZV0gfHwgdGhpcy5jcmVhdGVNZXRhRGF0YShlKTsKICAgICAgICAgICAgICAgIG4uZGF0YXNldCA9IG4uZGF0YXNldCB8fCB0aGlzLmNyZWF0ZU1ldGFEYXRhc2V0KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkRWxlbWVudEFuZFJlc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuY3JlYXRlTWV0YURhdGEoZSk7CiAgICAgICAgICAgICAgICB0aGlzLmdldE1ldGEoKS5kYXRhLnNwbGljZShlLCAwLCB0KSwgdGhpcy51cGRhdGVFbGVtZW50KHQsIGUsICEwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBidWlsZE9yVXBkYXRlRWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGkgPSBuLmdldERhdGFzZXQoKSwKICAgICAgICAgICAgICAgICAgICByID0gaS5kYXRhIHx8IChpLmRhdGEgPSBbXSk7CiAgICAgICAgICAgICAgICBuLl9kYXRhICE9PSByICYmIChuLl9kYXRhICYmIGVlKG4uX2RhdGEsIG4pLCByICYmIE9iamVjdC5pc0V4dGVuc2libGUocikgJiYgKHQgPSBuLCAoZSA9IHIpLl9jaGFydGpzID8gZS5fY2hhcnRqcy5saXN0ZW5lcnMucHVzaCh0KSA6IChPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgIl9jaGFydGpzIiwgewogICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiBbdF0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgSi5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAib25EYXRhIiArIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZVt0XTsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmFwcGx5KHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIuZWFjaChlLl9jaGFydGpzLmxpc3RlbmVycywgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBlW25dICYmIGVbbl0uYXBwbHkoZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pKSkpLCBuLl9kYXRhID0gciksIG4ucmVzeW5jRWxlbWVudHMoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY29uZmlndXJlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZyA9IEIubWVyZ2UoT2JqZWN0LmNyZWF0ZShudWxsKSwgW3RoaXMuY2hhcnQub3B0aW9ucy5kYXRhc2V0c1t0aGlzLl90eXBlXSwgdGhpcy5nZXREYXRhc2V0KCldLCB7CiAgICAgICAgICAgICAgICAgICAgbWVyZ2VyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICJfbWV0YSIgIT09IGUgJiYgImRhdGEiICE9PSBlICYmIEIuX21lcmdlcihlLCB0LCBuKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF91cGRhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZ3VyZSgpLCB0aGlzLl9jYWNoZWREYXRhT3B0cyA9IG51bGwsIHRoaXMudXBkYXRlKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogQi5ub29wLAogICAgICAgICAgICB0cmFuc2l0aW9uOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gdGhpcy5nZXRNZXRhKCksIG4gPSB0LmRhdGEgfHwgW10sIGkgPSBuLmxlbmd0aCwgciA9IDA7IHIgPCBpOyArK3IpIG5bcl0udHJhbnNpdGlvbihlKTsKICAgICAgICAgICAgICAgIHQuZGF0YXNldCAmJiB0LmRhdGFzZXQudHJhbnNpdGlvbihlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuZGF0YSB8fCBbXSwKICAgICAgICAgICAgICAgICAgICBuID0gdC5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKGUuZGF0YXNldCAmJiBlLmRhdGFzZXQuZHJhdygpOyBpIDwgbjsgKytpKSB0W2ldLmRyYXcoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRTdHlsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4gPSB0aGlzLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICBpID0gbi5kYXRhc2V0OwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyZSgpLCBpICYmIHZvaWQgMCA9PT0gZSA/IHQgPSB0aGlzLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKGkgfHwge30pIDogKGUgPSBlIHx8IDAsIHQgPSB0aGlzLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKG4uZGF0YVtlXSB8fCB7fSwgZSkpLCAhMSAhPT0gdC5maWxsICYmIG51bGwgIT09IHQuZmlsbCB8fCAodC5iYWNrZ3JvdW5kQ29sb3IgPSB0LmJvcmRlckNvbG9yKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfcmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9uczogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8sIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIHMgPSBhLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgIGwgPSBhLl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgYyA9IGUuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIHUgPSBzLm9wdGlvbnMuZWxlbWVudHNbYS5kYXRhc2V0RWxlbWVudFR5cGUucHJvdG90eXBlLl90eXBlXSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBkID0gYS5fZGF0YXNldEVsZW1lbnRPcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGggPSB7fSwKICAgICAgICAgICAgICAgICAgICBmID0gewogICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldDogYS5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRJbmRleDogYS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZm9yIChuID0gMCwgaSA9IGQubGVuZ3RoOyBuIDwgaTsgKytuKSByID0gZFtuXSwgbyA9IHQgPyAiaG92ZXIiICsgci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHIuc2xpY2UoMSkgOiByLCBoW3JdID0gWihbY1tvXSwgbFtvXSwgdVtvXV0sIGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIGgKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBpID0gZSAmJiBlLmN1c3RvbSwKICAgICAgICAgICAgICAgICAgICByID0gbi5fY2FjaGVkRGF0YU9wdHM7CiAgICAgICAgICAgICAgICBpZiAociAmJiAhaSkgcmV0dXJuIHI7CiAgICAgICAgICAgICAgICB2YXIgbywgYSwgcywgbCwgYyA9IG4uY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgdSA9IG4uX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICBkID0gYy5vcHRpb25zLmVsZW1lbnRzW24uZGF0YUVsZW1lbnRUeXBlLnByb3RvdHlwZS5fdHlwZV0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgaCA9IG4uX2RhdGFFbGVtZW50T3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBmID0ge30sCiAgICAgICAgICAgICAgICAgICAgcCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFJbmRleDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldDogbi5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRJbmRleDogbi5pbmRleAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVhYmxlOiAhaQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoaSA9IGkgfHwge30sIEIuaXNBcnJheShoKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSAwLCBzID0gaC5sZW5ndGg7IGEgPCBzOyArK2EpIGZbbCA9IGhbYV1dID0gWihbaVtsXSwgdVtsXSwgZFtsXV0sIHAsIHQsIGcpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDAsIHMgPSAobyA9IE9iamVjdC5rZXlzKGgpKS5sZW5ndGg7IGEgPCBzOyArK2EpIGZbbCA9IG9bYV1dID0gWihbaVtsXSwgdVtoW2xdXSwgdVtsXSwgZFtsXV0sIHAsIHQsIGcpOwogICAgICAgICAgICAgICAgcmV0dXJuIGcuY2FjaGVhYmxlICYmIChuLl9jYWNoZWREYXRhT3B0cyA9IE9iamVjdC5mcmVlemUoZikpLCBmCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZUhvdmVyU3R5bGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIEIubWVyZ2UoZS5fbW9kZWwsIGUuJHByZXZpb3VzU3R5bGUgfHwge30pLCBkZWxldGUgZS4kcHJldmlvdXNTdHlsZQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRIb3ZlclN0eWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tlLl9kYXRhc2V0SW5kZXhdLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLl9pbmRleCwKICAgICAgICAgICAgICAgICAgICBpID0gZS5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgciA9IGUuX21vZGVsLAogICAgICAgICAgICAgICAgICAgIG8gPSBCLmdldEhvdmVyQ29sb3I7CiAgICAgICAgICAgICAgICBlLiRwcmV2aW91c1N0eWxlID0gewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogci5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHIuYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IHIuYm9yZGVyV2lkdGgKICAgICAgICAgICAgICAgIH0sIHIuYmFja2dyb3VuZENvbG9yID0gWihbaS5ob3ZlckJhY2tncm91bmRDb2xvciwgdC5ob3ZlckJhY2tncm91bmRDb2xvciwgbyhyLmJhY2tncm91bmRDb2xvcildLCB2b2lkIDAsIG4pLCByLmJvcmRlckNvbG9yID0gWihbaS5ob3ZlckJvcmRlckNvbG9yLCB0LmhvdmVyQm9yZGVyQ29sb3IsIG8oci5ib3JkZXJDb2xvcildLCB2b2lkIDAsIG4pLCByLmJvcmRlcldpZHRoID0gWihbaS5ob3ZlckJvcmRlcldpZHRoLCB0LmhvdmVyQm9yZGVyV2lkdGgsIHIuYm9yZGVyV2lkdGhdLCB2b2lkIDAsIG4pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9yZW1vdmVEYXRhc2V0SG92ZXJTdHlsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0TWV0YSgpLmRhdGFzZXQ7CiAgICAgICAgICAgICAgICBlICYmIHRoaXMucmVtb3ZlSG92ZXJTdHlsZShlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBfc2V0RGF0YXNldEhvdmVyU3R5bGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGksIHIsIG8sIGEgPSB0aGlzLmdldE1ldGEoKS5kYXRhc2V0LAogICAgICAgICAgICAgICAgICAgIHMgPSB7fTsKICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChvID0gYS5fbW9kZWwsIHIgPSB0aGlzLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKGEsICEwKSwgZSA9IDAsIHQgPSAoaSA9IE9iamVjdC5rZXlzKHIpKS5sZW5ndGg7IGUgPCB0OyArK2UpIHNbbiA9IGlbZV1dID0gb1tuXSwgb1tuXSA9IHJbbl07CiAgICAgICAgICAgICAgICAgICAgYS4kcHJldmlvdXNTdHlsZSA9IHMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVzeW5jRWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXREYXRhc2V0KCkuZGF0YSwKICAgICAgICAgICAgICAgICAgICBuID0gZS5kYXRhLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICBpID0gdC5sZW5ndGg7CiAgICAgICAgICAgICAgICBpIDwgbiA/IGUuZGF0YS5zcGxpY2UoaSwgbiAtIGkpIDogaSA+IG4gJiYgdGhpcy5pbnNlcnRFbGVtZW50cyhuLCBpIC0gbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5zZXJ0RWxlbWVudHM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgdDsgKytuKSB0aGlzLmFkZEVsZW1lbnRBbmRSZXNldChlICsgbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25EYXRhUHVzaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICB0aGlzLmluc2VydEVsZW1lbnRzKHRoaXMuZ2V0RGF0YXNldCgpLmRhdGEubGVuZ3RoIC0gZSwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25EYXRhUG9wOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWV0YSgpLmRhdGEucG9wKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25EYXRhU2hpZnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5nZXRNZXRhKCkuZGF0YS5zaGlmdCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uRGF0YVNwbGljZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdGhpcy5nZXRNZXRhKCkuZGF0YS5zcGxpY2UoZSwgdCksIHRoaXMuaW5zZXJ0RWxlbWVudHMoZSwgYXJndW1lbnRzLmxlbmd0aCAtIDIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9uRGF0YVVuc2hpZnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRFbGVtZW50cygwLCBhcmd1bWVudHMubGVuZ3RoKQogICAgICAgICAgICB9CiAgICAgICAgfSksIHRlLmV4dGVuZCA9IEIuaW5oZXJpdHM7CiAgICAgICAgdmFyIG5lID0gdGUsCiAgICAgICAgICAgIGllID0gMiAqIE1hdGguUEk7CgogICAgICAgIGZ1bmN0aW9uIHJlKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0LnN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICBpID0gdC5lbmRBbmdsZSwKICAgICAgICAgICAgICAgIHIgPSB0LnBpeGVsTWFyZ2luLAogICAgICAgICAgICAgICAgbyA9IHIgLyB0Lm91dGVyUmFkaXVzLAogICAgICAgICAgICAgICAgYSA9IHQueCwKICAgICAgICAgICAgICAgIHMgPSB0Lnk7CiAgICAgICAgICAgIGUuYmVnaW5QYXRoKCksIGUuYXJjKGEsIHMsIHQub3V0ZXJSYWRpdXMsIG4gLSBvLCBpICsgbyksIHQuaW5uZXJSYWRpdXMgPiByID8gKG8gPSByIC8gdC5pbm5lclJhZGl1cywgZS5hcmMoYSwgcywgdC5pbm5lclJhZGl1cyAtIHIsIGkgKyBvLCBuIC0gbywgITApKSA6IGUuYXJjKGEsIHMsIHIsIGkgKyBNYXRoLlBJIC8gMiwgbiAtIE1hdGguUEkgLyAyKSwgZS5jbG9zZVBhdGgoKSwgZS5jbGlwKCkKICAgICAgICB9CiAgICAgICAgRi5fc2V0KCJnbG9iYWwiLCB7CiAgICAgICAgICAgIGVsZW1lbnRzOiB7CiAgICAgICAgICAgICAgICBhcmM6IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IEYuZ2xvYmFsLmRlZmF1bHRDb2xvciwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckFsaWduOiAiY2VudGVyIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIG9lID0gWC5leHRlbmQoewogICAgICAgICAgICAgICAgX3R5cGU6ICJhcmMiLAogICAgICAgICAgICAgICAgaW5MYWJlbFJhbmdlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXQgJiYgTWF0aC5wb3coZSAtIHQueCwgMikgPCBNYXRoLnBvdyh0LnJhZGl1cyArIHQuaG92ZXJSYWRpdXMsIDIpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5SYW5nZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICBpZiAobikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gQi5nZXRBbmdsZUZyb21Qb2ludChuLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgciA9IGkuYW5nbGUsIG8gPSBpLmRpc3RhbmNlLCBhID0gbi5zdGFydEFuZ2xlLCBzID0gbi5lbmRBbmdsZTsgcyA8IGE7KSBzICs9IGllOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA+IHM7KSByIC09IGllOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgciA8IGE7KSByICs9IGllOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IHIgPj0gYSAmJiByIDw9IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbyA+PSBuLmlubmVyUmFkaXVzICYmIG8gPD0gbi5vdXRlclJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGwgJiYgYwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRDZW50ZXJQb2ludDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gKGUuc3RhcnRBbmdsZSArIGUuZW5kQW5nbGUpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChlLmlubmVyUmFkaXVzICsgZS5vdXRlclJhZGl1cykgLyAyOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUueCArIE1hdGguY29zKHQpICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogZS55ICsgTWF0aC5zaW4odCkgKiBuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEFyZWE6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5QSSAqICgoZS5lbmRBbmdsZSAtIGUuc3RhcnRBbmdsZSkgLyAoMiAqIE1hdGguUEkpKSAqIChNYXRoLnBvdyhlLm91dGVyUmFkaXVzLCAyKSAtIE1hdGgucG93KGUuaW5uZXJSYWRpdXMsIDIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5zdGFydEFuZ2xlICsgKGUuZW5kQW5nbGUgLSBlLnN0YXJ0QW5nbGUpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IChlLm91dGVyUmFkaXVzIC0gZS5pbm5lclJhZGl1cykgLyAyICsgZS5pbm5lclJhZGl1czsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBlLnggKyBNYXRoLmNvcyh0KSAqIG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUueSArIE1hdGguc2luKHQpICogbgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMuX2NoYXJ0LmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAiaW5uZXIiID09PSBuLmJvcmRlckFsaWduID8gLjMzIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IG4ueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG4ueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyUmFkaXVzOiBuLmlubmVyUmFkaXVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJSYWRpdXM6IE1hdGgubWF4KG4ub3V0ZXJSYWRpdXMgLSBpLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsTWFyZ2luOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRBbmdsZTogbi5zdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGU6IG4uZW5kQW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsQ2lyY2xlczogTWF0aC5mbG9vcihuLmNpcmN1bWZlcmVuY2UgLyBpZSkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5zYXZlKCksIHQuZmlsbFN0eWxlID0gbi5iYWNrZ3JvdW5kQ29sb3IsIHQuc3Ryb2tlU3R5bGUgPSBuLmJvcmRlckNvbG9yLCByLmZ1bGxDaXJjbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoci5lbmRBbmdsZSA9IHIuc3RhcnRBbmdsZSArIGllLCB0LmJlZ2luUGF0aCgpLCB0LmFyYyhyLngsIHIueSwgci5vdXRlclJhZGl1cywgci5zdGFydEFuZ2xlLCByLmVuZEFuZ2xlKSwgdC5hcmMoci54LCByLnksIHIuaW5uZXJSYWRpdXMsIHIuZW5kQW5nbGUsIHIuc3RhcnRBbmdsZSwgITApLCB0LmNsb3NlUGF0aCgpLCBlID0gMDsgZSA8IHIuZnVsbENpcmNsZXM7ICsrZSkgdC5maWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuZW5kQW5nbGUgPSByLnN0YXJ0QW5nbGUgKyBuLmNpcmN1bWZlcmVuY2UgJSBpZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LmJlZ2luUGF0aCgpLCB0LmFyYyhyLngsIHIueSwgci5vdXRlclJhZGl1cywgci5zdGFydEFuZ2xlLCByLmVuZEFuZ2xlKSwgdC5hcmMoci54LCByLnksIHIuaW5uZXJSYWRpdXMsIHIuZW5kQW5nbGUsIHIuc3RhcnRBbmdsZSwgITApLCB0LmNsb3NlUGF0aCgpLCB0LmZpbGwoKSwgbi5ib3JkZXJXaWR0aCAmJiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gImlubmVyIiA9PT0gdC5ib3JkZXJBbGlnbjsKICAgICAgICAgICAgICAgICAgICAgICAgaSA/IChlLmxpbmVXaWR0aCA9IDIgKiB0LmJvcmRlcldpZHRoLCBlLmxpbmVKb2luID0gInJvdW5kIikgOiAoZS5saW5lV2lkdGggPSB0LmJvcmRlcldpZHRoLCBlLmxpbmVKb2luID0gImJldmVsIiksIG4uZnVsbENpcmNsZXMgJiYgZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBuLmVuZEFuZ2xlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpICYmIChuLmVuZEFuZ2xlID0gbi5zdGFydEFuZ2xlICsgaWUsIHJlKGUsIG4pLCBuLmVuZEFuZ2xlID0gbywgbi5lbmRBbmdsZSA9PT0gbi5zdGFydEFuZ2xlICYmIG4uZnVsbENpcmNsZXMgJiYgKG4uZW5kQW5nbGUgKz0gaWUsIG4uZnVsbENpcmNsZXMtLSkpLCBlLmJlZ2luUGF0aCgpLCBlLmFyYyhuLngsIG4ueSwgbi5pbm5lclJhZGl1cywgbi5zdGFydEFuZ2xlICsgaWUsIG4uc3RhcnRBbmdsZSwgITApLCByID0gMDsgciA8IG4uZnVsbENpcmNsZXM7ICsrcikgZS5zdHJva2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZS5iZWdpblBhdGgoKSwgZS5hcmMobi54LCBuLnksIHQub3V0ZXJSYWRpdXMsIG4uc3RhcnRBbmdsZSwgbi5zdGFydEFuZ2xlICsgaWUpLCByID0gMDsgciA8IG4uZnVsbENpcmNsZXM7ICsrcikgZS5zdHJva2UoKQogICAgICAgICAgICAgICAgICAgICAgICB9KGUsIHQsIG4sIGkpLCBpICYmIHJlKGUsIG4pLCBlLmJlZ2luUGF0aCgpLCBlLmFyYyhuLngsIG4ueSwgdC5vdXRlclJhZGl1cywgbi5zdGFydEFuZ2xlLCBuLmVuZEFuZ2xlKSwgZS5hcmMobi54LCBuLnksIG4uaW5uZXJSYWRpdXMsIG4uZW5kQW5nbGUsIG4uc3RhcnRBbmdsZSwgITApLCBlLmNsb3NlUGF0aCgpLCBlLnN0cm9rZSgpCiAgICAgICAgICAgICAgICAgICAgfSh0LCBuLCByKSwgdC5yZXN0b3JlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIGFlID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgc2UgPSBGLmdsb2JhbC5kZWZhdWx0Q29sb3I7CiAgICAgICAgRi5fc2V0KCJnbG9iYWwiLCB7CiAgICAgICAgICAgIGVsZW1lbnRzOiB7CiAgICAgICAgICAgICAgICBsaW5lOiB7CiAgICAgICAgICAgICAgICAgICAgdGVuc2lvbjogLjQsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzZSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMywKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogc2UsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ2FwU3R5bGU6ICJidXR0IiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJEYXNoOiBbXSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJEYXNoT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckpvaW5TdHlsZTogIm1pdGVyIiwKICAgICAgICAgICAgICAgICAgICBjYXBCZXppZXJQb2ludHM6ICEwLAogICAgICAgICAgICAgICAgICAgIGZpbGw6ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgbGUgPSBYLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBfdHlwZTogImxpbmUiLAogICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuX2NoYXJ0LmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuc3BhbkdhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLl9jaGlsZHJlbi5zbGljZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gRi5nbG9iYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsLmVsZW1lbnRzLmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGkuX2xvb3A7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLl9sb29wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgcy5sZW5ndGg7ICsrZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA9IEIucHJldmlvdXNJdGVtKHMsIGUpLCAhc1tlXS5fdmlldy5za2lwICYmIHQuX3ZpZXcuc2tpcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcy5zbGljZShlKS5jb25jYXQocy5zbGljZSgwLCBlKSksIGQgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgJiYgcy5wdXNoKHNbMF0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChvLnNhdmUoKSwgby5saW5lQ2FwID0gci5ib3JkZXJDYXBTdHlsZSB8fCBjLmJvcmRlckNhcFN0eWxlLCBvLnNldExpbmVEYXNoICYmIG8uc2V0TGluZURhc2goci5ib3JkZXJEYXNoIHx8IGMuYm9yZGVyRGFzaCksIG8ubGluZURhc2hPZmZzZXQgPSBhZShyLmJvcmRlckRhc2hPZmZzZXQsIGMuYm9yZGVyRGFzaE9mZnNldCksIG8ubGluZUpvaW4gPSByLmJvcmRlckpvaW5TdHlsZSB8fCBjLmJvcmRlckpvaW5TdHlsZSwgby5saW5lV2lkdGggPSBhZShyLmJvcmRlcldpZHRoLCBjLmJvcmRlcldpZHRoKSwgby5zdHJva2VTdHlsZSA9IHIuYm9yZGVyQ29sb3IgfHwgbC5kZWZhdWx0Q29sb3IsIG8uYmVnaW5QYXRoKCksIChuID0gc1swXS5fdmlldykuc2tpcCB8fCAoby5tb3ZlVG8obi54LCBuLnkpLCB1ID0gMCksIGUgPSAxOyBlIDwgcy5sZW5ndGg7ICsrZSkgbiA9IHNbZV0uX3ZpZXcsIHQgPSAtMSA9PT0gdSA/IEIucHJldmlvdXNJdGVtKHMsIGUpIDogc1t1XSwgbi5za2lwIHx8ICh1ICE9PSBlIC0gMSAmJiAhYSB8fCAtMSA9PT0gdSA/IG8ubW92ZVRvKG4ueCwgbi55KSA6IEIuY2FudmFzLmxpbmVUbyhvLCB0Ll92aWV3LCBuKSwgdSA9IGUpOwogICAgICAgICAgICAgICAgICAgICAgICBkICYmIG8uY2xvc2VQYXRoKCksIG8uc3Ryb2tlKCksIG8ucmVzdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgY2UgPSBCLnZhbHVlT3JEZWZhdWx0LAogICAgICAgICAgICB1ZSA9IEYuZ2xvYmFsLmRlZmF1bHRDb2xvcjsKCiAgICAgICAgZnVuY3Rpb24gZGUoZSkgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgIHJldHVybiAhIXQgJiYgTWF0aC5hYnMoZSAtIHQueCkgPCB0LnJhZGl1cyArIHQuaGl0UmFkaXVzCiAgICAgICAgfQogICAgICAgIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgcG9pbnQ6IHsKICAgICAgICAgICAgICAgICAgICByYWRpdXM6IDMsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHlsZTogImNpcmNsZSIsCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB1ZSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogdWUsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgaGl0UmFkaXVzOiAxLAogICAgICAgICAgICAgICAgICAgIGhvdmVyUmFkaXVzOiA0LAogICAgICAgICAgICAgICAgICAgIGhvdmVyQm9yZGVyV2lkdGg6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBoZSA9IFguZXh0ZW5kKHsKICAgICAgICAgICAgICAgIF90eXBlOiAicG9pbnQiLAogICAgICAgICAgICAgICAgaW5SYW5nZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFuICYmIE1hdGgucG93KGUgLSBuLngsIDIpICsgTWF0aC5wb3codCAtIG4ueSwgMikgPCBNYXRoLnBvdyhuLmhpdFJhZGl1cyArIG4ucmFkaXVzLCAyKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluTGFiZWxSYW5nZTogZGUsCiAgICAgICAgICAgICAgICBpblhSYW5nZTogZGUsCiAgICAgICAgICAgICAgICBpbllSYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF0ICYmIE1hdGguYWJzKGUgLSB0LnkpIDwgdC5yYWRpdXMgKyB0LmhpdFJhZGl1cwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldENlbnRlclBvaW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QXJlYTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguUEkgKiBNYXRoLnBvdyh0aGlzLl92aWV3LnJhZGl1cywgMikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBlLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGUueSwKICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogZS5yYWRpdXMgKyBlLmJvcmRlcldpZHRoCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9jaGFydC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LnBvaW50U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LnJvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5yYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LnksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBGLmdsb2JhbCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwuZGVmYXVsdENvbG9yOwogICAgICAgICAgICAgICAgICAgIHQuc2tpcCB8fCAodm9pZCAwID09PSBlIHx8IEIuY2FudmFzLl9pc1BvaW50SW5BcmVhKHQsIGUpKSAmJiAobi5zdHJva2VTdHlsZSA9IHQuYm9yZGVyQ29sb3IgfHwgYywgbi5saW5lV2lkdGggPSBjZSh0LmJvcmRlcldpZHRoLCBsLmVsZW1lbnRzLnBvaW50LmJvcmRlcldpZHRoKSwgbi5maWxsU3R5bGUgPSB0LmJhY2tncm91bmRDb2xvciB8fCBjLCBCLmNhbnZhcy5kcmF3UG9pbnQobiwgaSwgbywgYSwgcywgcikpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBmZSA9IEYuZ2xvYmFsLmRlZmF1bHRDb2xvcjsKCiAgICAgICAgZnVuY3Rpb24gcGUoZSkgewogICAgICAgICAgICByZXR1cm4gZSAmJiB2b2lkIDAgIT09IGUud2lkdGgKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdlKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG87CiAgICAgICAgICAgIHJldHVybiBwZShlKSA/IChvID0gZS53aWR0aCAvIDIsIHQgPSBlLnggLSBvLCBuID0gZS54ICsgbywgaSA9IE1hdGgubWluKGUueSwgZS5iYXNlKSwgciA9IE1hdGgubWF4KGUueSwgZS5iYXNlKSkgOiAobyA9IGUuaGVpZ2h0IC8gMiwgdCA9IE1hdGgubWluKGUueCwgZS5iYXNlKSwgbiA9IE1hdGgubWF4KGUueCwgZS5iYXNlKSwgaSA9IGUueSAtIG8sIHIgPSBlLnkgKyBvKSwgewogICAgICAgICAgICAgICAgbGVmdDogdCwKICAgICAgICAgICAgICAgIHRvcDogaSwKICAgICAgICAgICAgICAgIHJpZ2h0OiBuLAogICAgICAgICAgICAgICAgYm90dG9tOiByCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1lKGUsIHQsIG4pIHsKICAgICAgICAgICAgcmV0dXJuIGUgPT09IHQgPyBuIDogZSA9PT0gbiA/IHQgOiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2ZShlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpID0gbnVsbCA9PT0gdCwKICAgICAgICAgICAgICAgIHIgPSBudWxsID09PSBuLAogICAgICAgICAgICAgICAgbyA9ICEoIWUgfHwgaSAmJiByKSAmJiBnZShlKTsKICAgICAgICAgICAgcmV0dXJuIG8gJiYgKGkgfHwgdCA+PSBvLmxlZnQgJiYgdCA8PSBvLnJpZ2h0KSAmJiAociB8fCBuID49IG8udG9wICYmIG4gPD0gby5ib3R0b20pCiAgICAgICAgfQogICAgICAgIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgcmVjdGFuZ2xlOiB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmZSwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogZmUsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyU2tpcHBlZDogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciB5ZSA9IFguZXh0ZW5kKHsKICAgICAgICAgICAgICAgIF90eXBlOiAicmVjdGFuZ2xlIiwKICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fY2hhcnQuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZ2UoZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQucmlnaHQgLSB0LmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuYm90dG9tIC0gdC50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMgPSBlLmJvcmRlcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuYm9yZGVyU2tpcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ID8gKGUuaG9yaXpvbnRhbCA/IGUuYmFzZSA+IGUueCAmJiAodCA9IG1lKHQsICJsZWZ0IiwgInJpZ2h0IikpIDogZS5iYXNlIDwgZS55ICYmICh0ID0gbWUodCwgImJvdHRvbSIsICJ0b3AiKSksIG5bdF0gPSAhMCwgbikgOiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQi5pc09iamVjdChzKSA/IChpID0gK3MudG9wIHx8IDAsIHIgPSArcy5yaWdodCB8fCAwLCBvID0gK3MuYm90dG9tIHx8IDAsIGEgPSArcy5sZWZ0IHx8IDApIDogaSA9IHIgPSBvID0gYSA9ICtzIHx8IDAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IGwudG9wIHx8IGkgPCAwID8gMCA6IGkgPiBuID8gbiA6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiBsLnJpZ2h0IHx8IHIgPCAwID8gMCA6IHIgPiB0ID8gdCA6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOiBsLmJvdHRvbSB8fCBvIDwgMCA/IDAgOiBvID4gbiA/IG4gOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogbC5sZWZ0IHx8IGEgPCAwID8gMCA6IGEgPiB0ID8gdCA6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSwgbiAvIDIsIGkgLyAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC5sZWZ0ICsgci5sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB0LnRvcCArIHIudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbiAtIHIubCAtIHIuciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogaSAtIHIudCAtIHIuYgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3V0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLmlubmVyOwogICAgICAgICAgICAgICAgICAgIGUuZmlsbFN0eWxlID0gdC5iYWNrZ3JvdW5kQ29sb3IsIGUuZmlsbFJlY3QoaS54LCBpLnksIGkudywgaS5oKSwgaS53ID09PSByLncgJiYgaS5oID09PSByLmggfHwgKGUuc2F2ZSgpLCBlLmJlZ2luUGF0aCgpLCBlLnJlY3QoaS54LCBpLnksIGkudywgaS5oKSwgZS5jbGlwKCksIGUuZmlsbFN0eWxlID0gdC5ib3JkZXJDb2xvciwgZS5yZWN0KHIueCwgci55LCByLncsIHIuaCksIGUuZmlsbCgiZXZlbm9kZCIpLCBlLnJlc3RvcmUoKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS5iYXNlIC0gZS55CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5SYW5nZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2ZSh0aGlzLl92aWV3LCBlLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGluTGFiZWxSYW5nZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5fdmlldzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGUobikgPyB2ZShuLCBlLCBudWxsKSA6IHZlKG4sIG51bGwsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW5YUmFuZ2U6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmUodGhpcy5fdmlldywgZSwgbnVsbCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbllSYW5nZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2ZSh0aGlzLl92aWV3LCBudWxsLCBlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldENlbnRlclBvaW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlKG4pID8gKGUgPSBuLngsIHQgPSAobi55ICsgbi5iYXNlKSAvIDIpIDogKGUgPSAobi54ICsgbi5iYXNlKSAvIDIsIHQgPSBuLnkpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QXJlYTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwZShlKSA/IGUud2lkdGggKiBNYXRoLmFicyhlLnkgLSBlLmJhc2UpIDogZS5oZWlnaHQgKiBNYXRoLmFicyhlLnggLSBlLmJhc2UpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuX3ZpZXc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBiZSA9IHt9LAogICAgICAgICAgICB3ZSA9IG9lLAogICAgICAgICAgICB4ZSA9IGxlLAogICAgICAgICAgICBfZSA9IGhlLAogICAgICAgICAgICBTZSA9IHllOwogICAgICAgIGJlLkFyYyA9IHdlLCBiZS5MaW5lID0geGUsIGJlLlBvaW50ID0gX2UsIGJlLlJlY3RhbmdsZSA9IFNlOwogICAgICAgIHZhciBDZSA9IEIuX2RlcHJlY2F0ZWQsCiAgICAgICAgICAgIGtlID0gQi52YWx1ZU9yRGVmYXVsdDsKICAgICAgICBGLl9zZXQoImJhciIsIHsKICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgIG1vZGU6ICJsYWJlbCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2NhbGVzOiB7CiAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiY2F0ZWdvcnkiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldDogITAsCiAgICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldEdyaWRMaW5lczogITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9CiAgICAgICAgfSksIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICBkYXRhc2V0czogewogICAgICAgICAgICAgICAgYmFyOiB7CiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlQZXJjZW50YWdlOiAuOCwKICAgICAgICAgICAgICAgICAgICBiYXJQZXJjZW50YWdlOiAuOQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIFRlID0gbmUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogYmUuUmVjdGFuZ2xlLAogICAgICAgICAgICAgICAgX2RhdGFFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyU2tpcHBlZCIsICJib3JkZXJXaWR0aCIsICJiYXJQZXJjZW50YWdlIiwgImJhclRoaWNrbmVzcyIsICJjYXRlZ29yeVBlcmNlbnRhZ2UiLCAibWF4QmFyVGhpY2tuZXNzIiwgIm1pbkJhckxlbmd0aCJdLAogICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIG5lLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KG4sIGFyZ3VtZW50cyksIChlID0gbi5nZXRNZXRhKCkpLnN0YWNrID0gbi5nZXREYXRhc2V0KCkuc3RhY2ssIGUuYmFyID0gITAsIHQgPSBuLl9nZXRJbmRleFNjYWxlKCkub3B0aW9ucywgQ2UoImJhciBjaGFydCIsIHQuYmFyUGVyY2VudGFnZSwgInNjYWxlcy5beC95XUF4ZXMuYmFyUGVyY2VudGFnZSIsICJkYXRhc2V0LmJhclBlcmNlbnRhZ2UiKSwgQ2UoImJhciBjaGFydCIsIHQuYmFyVGhpY2tuZXNzLCAic2NhbGVzLlt4L3ldQXhlcy5iYXJUaGlja25lc3MiLCAiZGF0YXNldC5iYXJUaGlja25lc3MiKSwgQ2UoImJhciBjaGFydCIsIHQuY2F0ZWdvcnlQZXJjZW50YWdlLCAic2NhbGVzLlt4L3ldQXhlcy5jYXRlZ29yeVBlcmNlbnRhZ2UiLCAiZGF0YXNldC5jYXRlZ29yeVBlcmNlbnRhZ2UiKSwgQ2UoImJhciBjaGFydCIsIG4uX2dldFZhbHVlU2NhbGUoKS5vcHRpb25zLm1pbkJhckxlbmd0aCwgInNjYWxlcy5beC95XUF4ZXMubWluQmFyTGVuZ3RoIiwgImRhdGFzZXQubWluQmFyTGVuZ3RoIiksIENlKCJiYXIgY2hhcnQiLCB0Lm1heEJhclRoaWNrbmVzcywgInNjYWxlcy5beC95XUF4ZXMubWF4QmFyVGhpY2tuZXNzIiwgImRhdGFzZXQubWF4QmFyVGhpY2tuZXNzIikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXMuZ2V0TWV0YSgpLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLl9ydWxlciA9IHRoaXMuZ2V0UnVsZXIoKSwgdCA9IDAsIG4gPSBpLmxlbmd0aDsgdCA8IG47ICsrdCkgdGhpcy51cGRhdGVFbGVtZW50KGlbdF0sIHQsIGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKGUsIHQpOwogICAgICAgICAgICAgICAgICAgIGUuX3hTY2FsZSA9IGkuZ2V0U2NhbGVGb3JJZChyLnhBeGlzSUQpLCBlLl95U2NhbGUgPSBpLmdldFNjYWxlRm9ySWQoci55QXhpc0lEKSwgZS5fZGF0YXNldEluZGV4ID0gaS5pbmRleCwgZS5faW5kZXggPSB0LCBlLl9tb2RlbCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBhLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGEuYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6IGEuYm9yZGVyU2tpcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGEuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRMYWJlbDogby5sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkuY2hhcnQuZGF0YS5sYWJlbHNbdF0KICAgICAgICAgICAgICAgICAgICB9LCBCLmlzQXJyYXkoby5kYXRhW3RdKSAmJiAoZS5fbW9kZWwuYm9yZGVyU2tpcHBlZCA9IG51bGwpLCBpLl91cGRhdGVFbGVtZW50R2VvbWV0cnkoZSwgdCwgbiwgYSksIGUucGl2b3QoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF91cGRhdGVFbGVtZW50R2VvbWV0cnk6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLl9tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuX2dldFZhbHVlU2NhbGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEuZ2V0QmFzZVBpeGVsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhLmlzSG9yaXpvbnRhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gci5fcnVsZXIgfHwgci5nZXRSdWxlcigpLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gci5jYWxjdWxhdGVCYXJWYWx1ZVBpeGVscyhyLmluZGV4LCB0LCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHIuY2FsY3VsYXRlQmFySW5kZXhQaXhlbHMoci5pbmRleCwgdCwgYywgaSk7CiAgICAgICAgICAgICAgICAgICAgby5ob3Jpem9udGFsID0gbCwgby5iYXNlID0gbiA/IHMgOiB1LmJhc2UsIG8ueCA9IGwgPyBuID8gcyA6IHUuaGVhZCA6IGQuY2VudGVyLCBvLnkgPSBsID8gZC5jZW50ZXIgOiBuID8gcyA6IHUuaGVhZCwgby5oZWlnaHQgPSBsID8gZC5zaXplIDogdm9pZCAwLCBvLndpZHRoID0gbCA/IHZvaWQgMCA6IGQuc2l6ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9nZXRTdGFja3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXMuX2dldEluZGV4U2NhbGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkuX2dldE1hdGNoaW5nVmlzaWJsZU1ldGFzKHRoaXMuX3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5vcHRpb25zLnN0YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBhICYmIChuID0gclt0XSwgKCExID09PSBvIHx8IC0xID09PSBzLmluZGV4T2Yobi5zdGFjaykgfHwgdm9pZCAwID09PSBvICYmIHZvaWQgMCA9PT0gbi5zdGFjaykgJiYgcy5wdXNoKG4uc3RhY2spLCBuLmluZGV4ICE9PSBlKTsgKyt0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFN0YWNrQ291bnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRTdGFja3MoKS5sZW5ndGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRTdGFja0luZGV4OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLl9nZXRTdGFja3MoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB2b2lkIDAgIT09IHQgPyBuLmluZGV4T2YodCkgOiAtMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEgPT09IGkgPyBuLmxlbmd0aCAtIDEgOiBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0UnVsZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuID0gdGhpcy5fZ2V0SW5kZXhTY2FsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gMCwgdCA9IHRoaXMuZ2V0TWV0YSgpLmRhdGEubGVuZ3RoOyBlIDwgdDsgKytlKSBpLnB1c2gobi5nZXRQaXhlbEZvclZhbHVlKG51bGwsIGUsIHRoaXMuaW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHM6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuLl9zdGFydFBpeGVsLAogICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG4uX2VuZFBpeGVsLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFja0NvdW50OiB0aGlzLmdldFN0YWNrQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IG4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2FsY3VsYXRlQmFyVmFsdWVQaXhlbHM6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcywgbCwgYywgdSA9IHRoaXMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLl9nZXRWYWx1ZVNjYWxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBkLmlzSG9yaXpvbnRhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gdS5kYXRhLmRhdGFzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gZC5fZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXModGhpcy5fdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkLl9wYXJzZVZhbHVlKGZbZV0uZGF0YVt0XSksCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuLm1pbkJhckxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGQub3B0aW9ucy5zdGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gdGhpcy5nZXRNZXRhKCkuc3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB2b2lkIDAgPT09IGcuc3RhcnQgPyAwIDogZy5tYXggPj0gMCAmJiBnLm1pbiA+PSAwID8gZy5taW4gOiBnLm1heCwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHZvaWQgMCA9PT0gZy5zdGFydCA/IGcuZW5kIDogZy5tYXggPj0gMCAmJiBnLm1pbiA+PSAwID8gZy5tYXggLSBnLm1pbiA6IGcubWluIC0gZy5tYXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBwLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAodiB8fCB2b2lkIDAgPT09IHYgJiYgdm9pZCAwICE9PSB5KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgeCAmJiAociA9IHBbaV0pLmluZGV4ICE9PSBlOyArK2kpIHIuc3RhY2sgPT09IHkgJiYgKG8gPSB2b2lkIDAgPT09IChjID0gZC5fcGFyc2VWYWx1ZShmW3IuaW5kZXhdLmRhdGFbdF0pKS5zdGFydCA/IGMuZW5kIDogYy5taW4gPj0gMCAmJiBjLm1heCA+PSAwID8gYy5tYXggOiBjLm1pbiwgKGcubWluIDwgMCAmJiBvIDwgMCB8fCBnLm1heCA+PSAwICYmIG8gPiAwKSAmJiAoYiArPSBvKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPSBkLmdldFBpeGVsRm9yVmFsdWUoYiksIGwgPSAocyA9IGQuZ2V0UGl4ZWxGb3JWYWx1ZShiICsgdykpIC0gYSwgdm9pZCAwICE9PSBtICYmIE1hdGguYWJzKGwpIDwgbSAmJiAobCA9IG0sIHMgPSB3ID49IDAgJiYgIWggfHwgdyA8IDAgJiYgaCA/IGEgLSBtIDogYSArIG0pLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogcyArIGwgLyAyCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUJhckluZGV4UGl4ZWxzOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAiZmxleCIgPT09IGkuYmFyVGhpY2tuZXNzID8gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIgPSB0LnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcltlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZSA+IDAgPyByW2UgLSAxXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUgPCByLmxlbmd0aCAtIDEgPyByW2UgKyAxXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG4uY2F0ZWdvcnlQZXJjZW50YWdlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IGEgJiYgKGEgPSBvIC0gKG51bGwgPT09IHMgPyB0LmVuZCAtIHQuc3RhcnQgOiBzIC0gbykpLCBudWxsID09PSBzICYmIChzID0gbyArIG8gLSBhKSwgaSA9IG8gLSAobyAtIE1hdGgubWluKGEsIHMpKSAvIDIgKiBsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bms6IE1hdGguYWJzKHMgLSBhKSAvIDIgKiBsIC8gdC5zdGFja0NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGlvOiBuLmJhclBlcmNlbnRhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBuLCBpKSA6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCByLCBvID0gbi5iYXJUaGlja25lc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuc3RhY2tDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5waXhlbHNbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEIuaXNOdWxsT3JVbmRlZihvKSA/IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8sIGEgPSBlLl9sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IDEsIG8gPSB0Lmxlbmd0aDsgciA8IG87ICsrcikgYSA9IE1hdGgubWluKGEsIE1hdGguYWJzKHRbcl0gLSB0W3IgLSAxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBvID0gZS5nZXRUaWNrcygpLmxlbmd0aDsgciA8IG87ICsrcikgaSA9IGUuZ2V0UGl4ZWxGb3JUaWNrKHIpLCBhID0gciA+IDAgPyBNYXRoLm1pbihhLCBNYXRoLmFicyhpIC0gbikpIDogYSwgbiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0LnNjYWxlLCB0LnBpeGVscykgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCLmlzTnVsbE9yVW5kZWYobykgPyAoaSA9IGwgKiBuLmNhdGVnb3J5UGVyY2VudGFnZSwgciA9IG4uYmFyUGVyY2VudGFnZSkgOiAoaSA9IG8gKiBhLCByID0gMSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVuazogaSAvIGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aW86IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHMgLSBpIC8gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5nZXRTdGFja0luZGV4KGUsIHRoaXMuZ2V0TWV0YSgpLnN0YWNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuc3RhcnQgKyByLmNodW5rICogbyArIHIuY2h1bmsgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5taW4oa2UoaS5tYXhCYXJUaGlja25lc3MsIDEgLyAwKSwgci5jaHVuayAqIHIucmF0aW8pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6IGEgLSBzIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZDogYSArIHMgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5fZ2V0VmFsdWVTY2FsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRNZXRhKCkuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gbi5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciAoQi5jYW52YXMuY2xpcEFyZWEoZS5jdHgsIGUuY2hhcnRBcmVhKTsgbyA8IHI7ICsrbykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuX3BhcnNlVmFsdWUoaS5kYXRhW29dKTsKICAgICAgICAgICAgICAgICAgICAgICAgaXNOYU4oYS5taW4pIHx8IGlzTmFOKGEubWF4KSB8fCBuW29dLmRyYXcoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBCLmNhbnZhcy51bmNsaXBBcmVhKGUuY3R4KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBCLmV4dGVuZCh7fSwgbmUucHJvdG90eXBlLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zLmFwcGx5KGUsIGFyZ3VtZW50cykpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5fZ2V0SW5kZXhTY2FsZSgpLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlLl9nZXRWYWx1ZVNjYWxlKCkub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5iYXJQZXJjZW50YWdlID0ga2Uobi5iYXJQZXJjZW50YWdlLCB0LmJhclBlcmNlbnRhZ2UpLCB0LmJhclRoaWNrbmVzcyA9IGtlKG4uYmFyVGhpY2tuZXNzLCB0LmJhclRoaWNrbmVzcyksIHQuY2F0ZWdvcnlQZXJjZW50YWdlID0ga2Uobi5jYXRlZ29yeVBlcmNlbnRhZ2UsIHQuY2F0ZWdvcnlQZXJjZW50YWdlKSwgdC5tYXhCYXJUaGlja25lc3MgPSBrZShuLm1heEJhclRoaWNrbmVzcywgdC5tYXhCYXJUaGlja25lc3MpLCB0Lm1pbkJhckxlbmd0aCA9IGtlKGkubWluQmFyTGVuZ3RoLCB0Lm1pbkJhckxlbmd0aCksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIEFlID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgRWUgPSBCLm9wdGlvbnMucmVzb2x2ZTsKICAgICAgICBGLl9zZXQoImJ1YmJsZSIsIHsKICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgIG1vZGU6ICJzaW5nbGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgeEF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b20iLAogICAgICAgICAgICAgICAgICAgIGlkOiAieC1heGlzLTAiCiAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAibGVmdCIsCiAgICAgICAgICAgICAgICAgICAgaWQ6ICJ5LWF4aXMtMCIKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5sYWJlbCB8fCAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5kYXRhW2UuaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArICI6ICgiICsgZS54TGFiZWwgKyAiLCAiICsgZS55TGFiZWwgKyAiLCAiICsgaS5yICsgIikiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIERlID0gbmUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogYmUuUG9pbnQsCiAgICAgICAgICAgICAgICBfZGF0YUVsZW1lbnRPcHRpb25zOiBbImJhY2tncm91bmRDb2xvciIsICJib3JkZXJDb2xvciIsICJib3JkZXJXaWR0aCIsICJob3ZlckJhY2tncm91bmRDb2xvciIsICJob3ZlckJvcmRlckNvbG9yIiwgImhvdmVyQm9yZGVyV2lkdGgiLCAiaG92ZXJSYWRpdXMiLCAiaGl0UmFkaXVzIiwgInBvaW50U3R5bGUiLCAicm90YXRpb24iXSwKICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZ2V0TWV0YSgpLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgQi5lYWNoKG4sIChmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQudXBkYXRlRWxlbWVudChuLCBpLCBlKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gaS5nZXRTY2FsZUZvcklkKHIueEF4aXNJRCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmdldFNjYWxlRm9ySWQoci55QXhpc0lEKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGkuX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoZSwgdCksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpLmdldERhdGFzZXQoKS5kYXRhW3RdLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gaS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4gPyBhLmdldFBpeGVsRm9yRGVjaW1hbCguNSkgOiBhLmdldFBpeGVsRm9yVmFsdWUoIm9iamVjdCIgPT0gdHlwZW9mIGMgPyBjIDogTmFOLCB0LCB1KSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4gPyBzLmdldEJhc2VQaXhlbCgpIDogcy5nZXRQaXhlbEZvclZhbHVlKGMsIHQsIHUpOwogICAgICAgICAgICAgICAgICAgIGUuX3hTY2FsZSA9IGEsIGUuX3lTY2FsZSA9IHMsIGUuX29wdGlvbnMgPSBsLCBlLl9kYXRhc2V0SW5kZXggPSB1LCBlLl9pbmRleCA9IHQsIGUuX21vZGVsID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGwuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogbC5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGwuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogbC5oaXRSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50U3R5bGU6IGwucG9pbnRTdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IGwucm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogbiA/IDAgOiBsLnJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogby5za2lwIHx8IGlzTmFOKGQpIHx8IGlzTmFOKGgpLAogICAgICAgICAgICAgICAgICAgICAgICB4OiBkLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBoCiAgICAgICAgICAgICAgICAgICAgfSwgZS5waXZvdCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0SG92ZXJTdHlsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5fbW9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gQi5nZXRIb3ZlckNvbG9yOwogICAgICAgICAgICAgICAgICAgIGUuJHByZXZpb3VzU3R5bGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdC5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiB0LmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogdC5ib3JkZXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiB0LnJhZGl1cwogICAgICAgICAgICAgICAgICAgIH0sIHQuYmFja2dyb3VuZENvbG9yID0gQWUobi5ob3ZlckJhY2tncm91bmRDb2xvciwgaShuLmJhY2tncm91bmRDb2xvcikpLCB0LmJvcmRlckNvbG9yID0gQWUobi5ob3ZlckJvcmRlckNvbG9yLCBpKG4uYm9yZGVyQ29sb3IpKSwgdC5ib3JkZXJXaWR0aCA9IEFlKG4uaG92ZXJCb3JkZXJXaWR0aCwgbi5ib3JkZXJXaWR0aCksIHQucmFkaXVzID0gbi5yYWRpdXMgKyBuLmhvdmVyUmFkaXVzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnM6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gbi5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLmN1c3RvbSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHIuZGF0YVt0XSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG5lLnByb3RvdHlwZS5fcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucy5hcHBseShuLCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSW5kZXg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldEluZGV4OiBuLmluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uX2NhY2hlZERhdGFPcHRzID09PSBzICYmIChzID0gQi5leHRlbmQoe30sIHMpKSwgcy5yYWRpdXMgPSBFZShbby5yYWRpdXMsIGEuciwgbi5fY29uZmlnLnJhZGl1cywgaS5vcHRpb25zLmVsZW1lbnRzLnBvaW50LnJhZGl1c10sIGwsIHQpLCBzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBPZSA9IEIudmFsdWVPckRlZmF1bHQsCiAgICAgICAgICAgIE1lID0gTWF0aC5QSSwKICAgICAgICAgICAgSWUgPSAyICogTWUsCiAgICAgICAgICAgIExlID0gTWUgLyAyOwogICAgICAgIEYuX3NldCgiZG91Z2hudXQiLCB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgYW5pbWF0ZVJvdGF0ZTogITAsCiAgICAgICAgICAgICAgICBhbmltYXRlU2NhbGU6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICBtb2RlOiAic2luZ2xlIgogICAgICAgICAgICB9LAogICAgICAgICAgICBsZWdlbmRDYWxsYmFjazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgYSA9IG8uZGF0YXNldHMsCiAgICAgICAgICAgICAgICAgICAgcyA9IG8ubGFiZWxzOwogICAgICAgICAgICAgICAgaWYgKHIuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGUuaWQgKyAiLWxlZ2VuZCIpLCBhLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gYVswXS5kYXRhLmxlbmd0aDsgdCA8IG47ICsrdCkoaSA9IHIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSkpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYVswXS5iYWNrZ3JvdW5kQ29sb3JbdF0sIHNbdF0gJiYgaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzW3RdKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gci5vdXRlckhUTUwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUxhYmVsczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGFiZWxzLmxlbmd0aCAmJiB0LmRhdGFzZXRzLmxlbmd0aCA/IHQubGFiZWxzLm1hcCgoZnVuY3Rpb24obiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLmdldERhdGFzZXRNZXRhKDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmNvbnRyb2xsZXIuZ2V0U3R5bGUoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBvLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VTdHlsZTogby5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IG8uYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiBpc05hTih0LmRhdGFzZXRzWzBdLmRhdGFbaV0pIHx8IHIuZGF0YVtpXS5oaWRkZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogW10KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByLCBvID0gdC5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuY2hhcnQ7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gMCwgaSA9IChhLmRhdGEuZGF0YXNldHMgfHwgW10pLmxlbmd0aDsgbiA8IGk7ICsrbikociA9IGEuZ2V0RGF0YXNldE1ldGEobikpLmRhdGFbb10gJiYgKHIuZGF0YVtvXS5oaWRkZW4gPSAhci5kYXRhW29dLmhpZGRlbik7CiAgICAgICAgICAgICAgICAgICAgYS51cGRhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjdXRvdXRQZXJjZW50YWdlOiA1MCwKICAgICAgICAgICAgcm90YXRpb246IC1MZSwKICAgICAgICAgICAgY2lyY3VtZmVyZW5jZTogSWUsCiAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmxhYmVsc1tlLmluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAiOiAiICsgdC5kYXRhc2V0c1tlLmRhdGFzZXRJbmRleF0uZGF0YVtlLmluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEIuaXNBcnJheShuKSA/IChuID0gbi5zbGljZSgpKVswXSArPSBpIDogbiArPSBpLCBuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIFBlID0gbmUuZXh0ZW5kKHsKICAgICAgICAgICAgZGF0YUVsZW1lbnRUeXBlOiBiZS5BcmMsCiAgICAgICAgICAgIGxpbmtTY2FsZXM6IEIubm9vcCwKICAgICAgICAgICAgX2RhdGFFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyV2lkdGgiLCAiYm9yZGVyQWxpZ24iLCAiaG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCAiaG92ZXJCb3JkZXJDb2xvciIsICJob3ZlckJvcmRlcldpZHRoIl0sCiAgICAgICAgICAgIGdldFJpbmdJbmRleDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgZTsgKytuKSB0aGlzLmNoYXJ0LmlzRGF0YXNldFZpc2libGUobikgJiYgKyt0OwogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgYSA9IG8uY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgcyA9IGEuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgIGwgPSBhLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgYyA9IDEsCiAgICAgICAgICAgICAgICAgICAgdSA9IDEsCiAgICAgICAgICAgICAgICAgICAgZCA9IDAsCiAgICAgICAgICAgICAgICAgICAgaCA9IDAsCiAgICAgICAgICAgICAgICAgICAgZiA9IG8uZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgIHAgPSBmLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgZyA9IGwuY3V0b3V0UGVyY2VudGFnZSAvIDEwMCB8fCAwLAogICAgICAgICAgICAgICAgICAgIG0gPSBsLmNpcmN1bWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgdiA9IG8uX2dldFJpbmdXZWlnaHQoby5pbmRleCk7CiAgICAgICAgICAgICAgICBpZiAobSA8IEllKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSBsLnJvdGF0aW9uICUgSWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAoeSArPSB5ID49IE1lID8gLUllIDogeSA8IC1NZSA/IEllIDogMCkgKyBtLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gTWF0aC5jb3MoeSksCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBNYXRoLnNpbih5KSwKICAgICAgICAgICAgICAgICAgICAgICAgXyA9IE1hdGguY29zKGIpLAogICAgICAgICAgICAgICAgICAgICAgICBTID0gTWF0aC5zaW4oYiksCiAgICAgICAgICAgICAgICAgICAgICAgIEMgPSB5IDw9IDAgJiYgYiA+PSAwIHx8IGIgPj0gSWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB5IDw9IExlICYmIGIgPj0gTGUgfHwgYiA+PSBJZSArIExlLAogICAgICAgICAgICAgICAgICAgICAgICBUID0geSA8PSAtTGUgJiYgYiA+PSAtTGUgfHwgYiA+PSBNZSArIExlLAogICAgICAgICAgICAgICAgICAgICAgICBBID0geSA9PT0gLU1lIHx8IGIgPj0gTWUgPyAtMSA6IE1hdGgubWluKHcsIHcgKiBnLCBfLCBfICogZyksCiAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBUID8gLTEgOiBNYXRoLm1pbih4LCB4ICogZywgUywgUyAqIGcpLAogICAgICAgICAgICAgICAgICAgICAgICBEID0gQyA/IDEgOiBNYXRoLm1heCh3LCB3ICogZywgXywgXyAqIGcpLAogICAgICAgICAgICAgICAgICAgICAgICBPID0gayA/IDEgOiBNYXRoLm1heCh4LCB4ICogZywgUywgUyAqIGcpOwogICAgICAgICAgICAgICAgICAgIGMgPSAoRCAtIEEpIC8gMiwgdSA9IChPIC0gRSkgLyAyLCBkID0gLShEICsgQSkgLyAyLCBoID0gLShPICsgRSkgLyAyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCByID0gcC5sZW5ndGg7IGkgPCByOyArK2kpIHBbaV0uX29wdGlvbnMgPSBvLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKHBbaV0sIGkpOwogICAgICAgICAgICAgICAgZm9yIChhLmJvcmRlcldpZHRoID0gby5nZXRNYXhCb3JkZXJXaWR0aCgpLCB0ID0gKHMucmlnaHQgLSBzLmxlZnQgLSBhLmJvcmRlcldpZHRoKSAvIGMsIG4gPSAocy5ib3R0b20gLSBzLnRvcCAtIGEuYm9yZGVyV2lkdGgpIC8gdSwgYS5vdXRlclJhZGl1cyA9IE1hdGgubWF4KE1hdGgubWluKHQsIG4pIC8gMiwgMCksIGEuaW5uZXJSYWRpdXMgPSBNYXRoLm1heChhLm91dGVyUmFkaXVzICogZywgMCksIGEucmFkaXVzTGVuZ3RoID0gKGEub3V0ZXJSYWRpdXMgLSBhLmlubmVyUmFkaXVzKSAvIChvLl9nZXRWaXNpYmxlRGF0YXNldFdlaWdodFRvdGFsKCkgfHwgMSksIGEub2Zmc2V0WCA9IGQgKiBhLm91dGVyUmFkaXVzLCBhLm9mZnNldFkgPSBoICogYS5vdXRlclJhZGl1cywgZi50b3RhbCA9IG8uY2FsY3VsYXRlVG90YWwoKSwgby5vdXRlclJhZGl1cyA9IGEub3V0ZXJSYWRpdXMgLSBhLnJhZGl1c0xlbmd0aCAqIG8uX2dldFJpbmdXZWlnaHRPZmZzZXQoby5pbmRleCksIG8uaW5uZXJSYWRpdXMgPSBNYXRoLm1heChvLm91dGVyUmFkaXVzIC0gYS5yYWRpdXNMZW5ndGggKiB2LCAwKSwgaSA9IDAsIHIgPSBwLmxlbmd0aDsgaSA8IHI7ICsraSkgby51cGRhdGVFbGVtZW50KHBbaV0sIGksIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICByID0gaS5jaGFydCwKICAgICAgICAgICAgICAgICAgICBvID0gci5jaGFydEFyZWEsCiAgICAgICAgICAgICAgICAgICAgYSA9IHIub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBzID0gYS5hbmltYXRpb24sCiAgICAgICAgICAgICAgICAgICAgbCA9IChvLmxlZnQgKyBvLnJpZ2h0KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgYyA9IChvLnRvcCArIG8uYm90dG9tKSAvIDIsCiAgICAgICAgICAgICAgICAgICAgdSA9IGEucm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgZCA9IGEucm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgaCA9IGkuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgIGYgPSBuICYmIHMuYW5pbWF0ZVJvdGF0ZSB8fCBlLmhpZGRlbiA/IDAgOiBpLmNhbGN1bGF0ZUNpcmN1bWZlcmVuY2UoaC5kYXRhW3RdKSAqIChhLmNpcmN1bWZlcmVuY2UgLyBJZSksCiAgICAgICAgICAgICAgICAgICAgcCA9IG4gJiYgcy5hbmltYXRlU2NhbGUgPyAwIDogaS5pbm5lclJhZGl1cywKICAgICAgICAgICAgICAgICAgICBnID0gbiAmJiBzLmFuaW1hdGVTY2FsZSA/IDAgOiBpLm91dGVyUmFkaXVzLAogICAgICAgICAgICAgICAgICAgIG0gPSBlLl9vcHRpb25zIHx8IHt9OwogICAgICAgICAgICAgICAgQi5leHRlbmQoZSwgewogICAgICAgICAgICAgICAgICAgIF9kYXRhc2V0SW5kZXg6IGkuaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgX2luZGV4OiB0LAogICAgICAgICAgICAgICAgICAgIF9tb2RlbDogewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG0uYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogbS5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IG0uYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckFsaWduOiBtLmJvcmRlckFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICB4OiBsICsgci5vZmZzZXRYLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBjICsgci5vZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBlbmRBbmdsZTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgY2lyY3VtZmVyZW5jZTogZiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJSYWRpdXM6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyUmFkaXVzOiBwLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogQi52YWx1ZUF0SW5kZXhPckRlZmF1bHQoaC5sYWJlbCwgdCwgci5kYXRhLmxhYmVsc1t0XSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciB2ID0gZS5fbW9kZWw7CiAgICAgICAgICAgICAgICBuICYmIHMuYW5pbWF0ZVJvdGF0ZSB8fCAodi5zdGFydEFuZ2xlID0gMCA9PT0gdCA/IGEucm90YXRpb24gOiBpLmdldE1ldGEoKS5kYXRhW3QgLSAxXS5fbW9kZWwuZW5kQW5nbGUsIHYuZW5kQW5nbGUgPSB2LnN0YXJ0QW5nbGUgKyB2LmNpcmN1bWZlcmVuY2UpLCBlLnBpdm90KCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2FsY3VsYXRlVG90YWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQgPSB0aGlzLmdldERhdGFzZXQoKSwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gQi5lYWNoKG4uZGF0YSwgKGZ1bmN0aW9uKG4sIHIpIHsKICAgICAgICAgICAgICAgICAgICBlID0gdC5kYXRhW3JdLCBpc05hTihlKSB8fCBuLmhpZGRlbiB8fCAoaSArPSBNYXRoLmFicyhlKSkKICAgICAgICAgICAgICAgIH0pKSwgaQogICAgICAgICAgICB9LAogICAgICAgICAgICBjYWxjdWxhdGVDaXJjdW1mZXJlbmNlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuZ2V0TWV0YSgpLnRvdGFsOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgPiAwICYmICFpc05hTihlKSA/IEllICogKE1hdGguYWJzKGUpIC8gdCkgOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldE1heEJvcmRlcldpZHRoOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSwgcywgbCwgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgdSA9IHRoaXMuY2hhcnQ7CiAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IHUuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IHQgPCBuOyArK3QpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1LmlzRGF0YXNldFZpc2libGUodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAoaSA9IHUuZ2V0RGF0YXNldE1ldGEodCkpLmRhdGEsIHQgIT09IHRoaXMuaW5kZXggJiYgKG8gPSBpLmNvbnRyb2xsZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm4gMDsKICAgICAgICAgICAgICAgIGZvciAodCA9IDAsIG4gPSBlLmxlbmd0aDsgdCA8IG47ICsrdCkgciA9IGVbdF0sIG8gPyAoby5fY29uZmlndXJlKCksIGEgPSBvLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKHIsIHQpKSA6IGEgPSByLl9vcHRpb25zLCAiaW5uZXIiICE9PSBhLmJvcmRlckFsaWduICYmIChzID0gYS5ib3JkZXJXaWR0aCwgYyA9IChsID0gYS5ob3ZlckJvcmRlcldpZHRoKSA+IChjID0gcyA+IGMgPyBzIDogYykgPyBsIDogYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRIb3ZlclN0eWxlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuX21vZGVsLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGkgPSBCLmdldEhvdmVyQ29sb3I7CiAgICAgICAgICAgICAgICBlLiRwcmV2aW91c1N0eWxlID0gewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdC5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHQuYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IHQuYm9yZGVyV2lkdGgKICAgICAgICAgICAgICAgIH0sIHQuYmFja2dyb3VuZENvbG9yID0gT2Uobi5ob3ZlckJhY2tncm91bmRDb2xvciwgaShuLmJhY2tncm91bmRDb2xvcikpLCB0LmJvcmRlckNvbG9yID0gT2Uobi5ob3ZlckJvcmRlckNvbG9yLCBpKG4uYm9yZGVyQ29sb3IpKSwgdC5ib3JkZXJXaWR0aCA9IE9lKG4uaG92ZXJCb3JkZXJXaWR0aCwgbi5ib3JkZXJXaWR0aCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFJpbmdXZWlnaHRPZmZzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gMDsgbiA8IGU7ICsrbikgdGhpcy5jaGFydC5pc0RhdGFzZXRWaXNpYmxlKG4pICYmICh0ICs9IHRoaXMuX2dldFJpbmdXZWlnaHQobikpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFJpbmdXZWlnaHQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChPZSh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZV0ud2VpZ2h0LCAxKSwgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFZpc2libGVEYXRhc2V0V2VpZ2h0VG90YWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJpbmdXZWlnaHRPZmZzZXQodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIEYuX3NldCgiaG9yaXpvbnRhbEJhciIsIHsKICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgIG1vZGU6ICJpbmRleCIsCiAgICAgICAgICAgICAgICBheGlzOiAieSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2NhbGVzOiB7CiAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImJvdHRvbSIKICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgeUF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImNhdGVnb3J5IiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIG9mZnNldDogITAsCiAgICAgICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldEdyaWRMaW5lczogITAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9LAogICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgcmVjdGFuZ2xlOiB7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyU2tpcHBlZDogImxlZnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICBtb2RlOiAiaW5kZXgiLAogICAgICAgICAgICAgICAgYXhpczogInkiCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgRi5fc2V0KCJnbG9iYWwiLCB7CiAgICAgICAgICAgIGRhdGFzZXRzOiB7CiAgICAgICAgICAgICAgICBob3Jpem9udGFsQmFyOiB7CiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlQZXJjZW50YWdlOiAuOCwKICAgICAgICAgICAgICAgICAgICBiYXJQZXJjZW50YWdlOiAuOQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGplID0gVGUuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIF9nZXRWYWx1ZVNjYWxlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGEoKS54QXhpc0lECiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2dldEluZGV4U2NhbGVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnlBeGlzSUQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIE5lID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgRmUgPSBCLm9wdGlvbnMucmVzb2x2ZSwKICAgICAgICAgICAgUmUgPSBCLmNhbnZhcy5faXNQb2ludEluQXJlYTsKCiAgICAgICAgZnVuY3Rpb24gJGUoZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5vcHRpb25zLnRpY2tzIHx8IHt9LAogICAgICAgICAgICAgICAgaSA9IG4ucmV2ZXJzZSwKICAgICAgICAgICAgICAgIHIgPSB2b2lkIDAgPT09IG4ubWluID8gdCA6IDAsCiAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSBuLm1heCA/IHQgOiAwOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc3RhcnQ6IGkgPyBvIDogciwKICAgICAgICAgICAgICAgIGVuZDogaSA/IHIgOiBvCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHplKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGkgPSBuIC8gMiwKICAgICAgICAgICAgICAgIHIgPSAkZShlLCBpKSwKICAgICAgICAgICAgICAgIG8gPSAkZSh0LCBpKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHRvcDogby5lbmQsCiAgICAgICAgICAgICAgICByaWdodDogci5lbmQsCiAgICAgICAgICAgICAgICBib3R0b206IG8uc3RhcnQsCiAgICAgICAgICAgICAgICBsZWZ0OiByLnN0YXJ0CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhlKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIGksIHI7CiAgICAgICAgICAgIHJldHVybiBCLmlzT2JqZWN0KGUpID8gKHQgPSBlLnRvcCwgbiA9IGUucmlnaHQsIGkgPSBlLmJvdHRvbSwgciA9IGUubGVmdCkgOiB0ID0gbiA9IGkgPSByID0gZSwgewogICAgICAgICAgICAgICAgdG9wOiB0LAogICAgICAgICAgICAgICAgcmlnaHQ6IG4sCiAgICAgICAgICAgICAgICBib3R0b206IGksCiAgICAgICAgICAgICAgICBsZWZ0OiByCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgRi5fc2V0KCJsaW5lIiwgewogICAgICAgICAgICBzaG93TGluZXM6ICEwLAogICAgICAgICAgICBzcGFuR2FwczogITEsCiAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICBtb2RlOiAibGFiZWwiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgeEF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogImNhdGVnb3J5IiwKICAgICAgICAgICAgICAgICAgICBpZDogIngtYXhpcy0wIgogICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICBpZDogInktYXhpcy0wIgogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBCZSA9IG5lLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBkYXRhc2V0RWxlbWVudFR5cGU6IGJlLkxpbmUsCiAgICAgICAgICAgICAgICBkYXRhRWxlbWVudFR5cGU6IGJlLlBvaW50LAogICAgICAgICAgICAgICAgX2RhdGFzZXRFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyQ2FwU3R5bGUiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyRGFzaCIsICJib3JkZXJEYXNoT2Zmc2V0IiwgImJvcmRlckpvaW5TdHlsZSIsICJib3JkZXJXaWR0aCIsICJjdWJpY0ludGVycG9sYXRpb25Nb2RlIiwgImZpbGwiXSwKICAgICAgICAgICAgICAgIF9kYXRhRWxlbWVudE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICJwb2ludEJhY2tncm91bmRDb2xvciIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICJwb2ludEJvcmRlckNvbG9yIiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogInBvaW50Qm9yZGVyV2lkdGgiLAogICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogInBvaW50SGl0UmFkaXVzIiwKICAgICAgICAgICAgICAgICAgICBob3ZlckJhY2tncm91bmRDb2xvcjogInBvaW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IiLAogICAgICAgICAgICAgICAgICAgIGhvdmVyQm9yZGVyQ29sb3I6ICJwb2ludEhvdmVyQm9yZGVyQ29sb3IiLAogICAgICAgICAgICAgICAgICAgIGhvdmVyQm9yZGVyV2lkdGg6ICJwb2ludEhvdmVyQm9yZGVyV2lkdGgiLAogICAgICAgICAgICAgICAgICAgIGhvdmVyUmFkaXVzOiAicG9pbnRIb3ZlclJhZGl1cyIsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHlsZTogInBvaW50U3R5bGUiLAogICAgICAgICAgICAgICAgICAgIHJhZGl1czogInBvaW50UmFkaXVzIiwKICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogInBvaW50Um90YXRpb24iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5nZXRNZXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmRhdGFzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSByLmRhdGEgfHwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmNoYXJ0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBpLl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpLl9zaG93TGluZSA9IE5lKGwuc2hvd0xpbmUsIHMuc2hvd0xpbmVzKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkuX3hTY2FsZSA9IGkuZ2V0U2NhbGVGb3JJZChyLnhBeGlzSUQpLCBpLl95U2NhbGUgPSBpLmdldFNjYWxlRm9ySWQoci55QXhpc0lEKSwgYyAmJiAodm9pZCAwICE9PSBsLnRlbnNpb24gJiYgdm9pZCAwID09PSBsLmxpbmVUZW5zaW9uICYmIChsLmxpbmVUZW5zaW9uID0gbC50ZW5zaW9uKSwgby5fc2NhbGUgPSBpLl95U2NhbGUsIG8uX2RhdGFzZXRJbmRleCA9IGkuaW5kZXgsIG8uX2NoaWxkcmVuID0gYSwgby5fbW9kZWwgPSBpLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKG8pLCBvLnBpdm90KCkpLCB0ID0gMCwgbiA9IGEubGVuZ3RoOyB0IDwgbjsgKyt0KSBpLnVwZGF0ZUVsZW1lbnQoYVt0XSwgdCwgZSk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjICYmIDAgIT09IG8uX21vZGVsLnRlbnNpb24gJiYgaS51cGRhdGVCZXppZXJDb250cm9sUG9pbnRzKCksIHQgPSAwLCBuID0gYS5sZW5ndGg7IHQgPCBuOyArK3QpIGFbdF0ucGl2b3QoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBvLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuY3VzdG9tIHx8IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBsID0gby5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBvLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbC5kYXRhW3RdLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gby5feFNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gby5feVNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gYS5kYXRhc2V0Ll9tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG8uX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoZSwgdCk7CiAgICAgICAgICAgICAgICAgICAgaSA9IGQuZ2V0UGl4ZWxGb3JWYWx1ZSgib2JqZWN0IiA9PSB0eXBlb2YgdSA/IHUgOiBOYU4sIHQsIGMpLCByID0gbiA/IGguZ2V0QmFzZVBpeGVsKCkgOiBvLmNhbGN1bGF0ZVBvaW50WSh1LCB0LCBjKSwgZS5feFNjYWxlID0gZCwgZS5feVNjYWxlID0gaCwgZS5fb3B0aW9ucyA9IHAsIGUuX2RhdGFzZXRJbmRleCA9IGMsIGUuX2luZGV4ID0gdCwgZS5fbW9kZWwgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IHMuc2tpcCB8fCBpc05hTihpKSB8fCBpc05hTihyKSwKICAgICAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBwLnJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRTdHlsZTogcC5wb2ludFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogcC5yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwLmJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHAuYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBwLmJvcmRlcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiBOZShzLnRlbnNpb24sIGYgPyBmLnRlbnNpb24gOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHBlZExpbmU6ICEhZiAmJiBmLnN0ZXBwZWRMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICBoaXRSYWRpdXM6IHAuaGl0UmFkaXVzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5fY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0LmNoYXJ0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLmVsZW1lbnRzLmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZS5wcm90b3R5cGUuX3Jlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMuYXBwbHkodCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zcGFuR2FwcyA9IE5lKG4uc3BhbkdhcHMsIHIuc3BhbkdhcHMpLCBhLnRlbnNpb24gPSBOZShuLmxpbmVUZW5zaW9uLCBvLnRlbnNpb24pLCBhLnN0ZXBwZWRMaW5lID0gRmUoW2kuc3RlcHBlZExpbmUsIG4uc3RlcHBlZExpbmUsIG8uc3RlcHBlZF0pLCBhLmNsaXAgPSBIZShOZShuLmNsaXAsIHplKHQuX3hTY2FsZSwgdC5feVNjYWxlLCBhLmJvcmRlcldpZHRoKSkpLCBhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2FsY3VsYXRlUG9pbnRZOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUgPSB0aGlzLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBkID0gdGhpcy5feVNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQub3B0aW9ucy5zdGFja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocyA9ICtkLmdldFJpZ2h0VmFsdWUoZSksIGMgPSAobCA9IHUuX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSkubGVuZ3RoLCBpID0gMDsgaSA8IGMgJiYgKG8gPSBsW2ldKS5pbmRleCAhPT0gbjsgKytpKSByID0gdS5kYXRhLmRhdGFzZXRzW28uaW5kZXhdLCAibGluZSIgPT09IG8udHlwZSAmJiBvLnlBeGlzSUQgPT09IGQuaWQgJiYgKChhID0gK2QuZ2V0UmlnaHRWYWx1ZShyLmRhdGFbdF0pKSA8IDAgPyBmICs9IGEgfHwgMCA6IGggKz0gYSB8fCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgPCAwID8gZC5nZXRQaXhlbEZvclZhbHVlKGYgKyBzKSA6IGQuZ2V0UGl4ZWxGb3JWYWx1ZShoICsgcykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuZ2V0UGl4ZWxGb3JWYWx1ZShlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVwZGF0ZUJlemllckNvbnRyb2xQb2ludHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCBpLCByID0gdGhpcy5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gby5kYXRhc2V0Ll9tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHIuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gby5kYXRhIHx8IFtdOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWluKGUsIG4pLCB0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYS5zcGFuR2FwcyAmJiAobCA9IGwuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWUuX21vZGVsLnNraXAKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgIm1vbm90b25lIiA9PT0gYS5jdWJpY0ludGVycG9sYXRpb25Nb2RlKSBCLnNwbGluZUN1cnZlTW9ub3RvbmUobCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCB0ID0gbC5sZW5ndGg7IGUgPCB0OyArK2UpIG4gPSBsW2VdLl9tb2RlbCwgaSA9IEIuc3BsaW5lQ3VydmUoQi5wcmV2aW91c0l0ZW0obCwgZSkuX21vZGVsLCBuLCBCLm5leHRJdGVtKGwsIGUpLl9tb2RlbCwgYS50ZW5zaW9uKSwgbi5jb250cm9sUG9pbnRQcmV2aW91c1ggPSBpLnByZXZpb3VzLngsIG4uY29udHJvbFBvaW50UHJldmlvdXNZID0gaS5wcmV2aW91cy55LCBuLmNvbnRyb2xQb2ludE5leHRYID0gaS5uZXh0LngsIG4uY29udHJvbFBvaW50TmV4dFkgPSBpLm5leHQueTsKICAgICAgICAgICAgICAgICAgICBpZiAoci5vcHRpb25zLmVsZW1lbnRzLmxpbmUuY2FwQmV6aWVyUG9pbnRzKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCB0ID0gbC5sZW5ndGg7IGUgPCB0OyArK2UpIG4gPSBsW2VdLl9tb2RlbCwgUmUobiwgcykgJiYgKGUgPiAwICYmIFJlKGxbZSAtIDFdLl9tb2RlbCwgcykgJiYgKG4uY29udHJvbFBvaW50UHJldmlvdXNYID0gYyhuLmNvbnRyb2xQb2ludFByZXZpb3VzWCwgcy5sZWZ0LCBzLnJpZ2h0KSwgbi5jb250cm9sUG9pbnRQcmV2aW91c1kgPSBjKG4uY29udHJvbFBvaW50UHJldmlvdXNZLCBzLnRvcCwgcy5ib3R0b20pKSwgZSA8IGwubGVuZ3RoIC0gMSAmJiBSZShsW2UgKyAxXS5fbW9kZWwsIHMpICYmIChuLmNvbnRyb2xQb2ludE5leHRYID0gYyhuLmNvbnRyb2xQb2ludE5leHRYLCBzLmxlZnQsIHMucmlnaHQpLCBuLmNvbnRyb2xQb2ludE5leHRZID0gYyhuLmNvbnRyb2xQb2ludE5leHRZLCBzLnRvcCwgcy5ib3R0b20pKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG4uZGF0YSB8fCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC5jYW52YXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0aGlzLl9zaG93TGluZSAmJiAoZSA9IG4uZGF0YXNldC5fbW9kZWwuY2xpcCwgQi5jYW52YXMuY2xpcEFyZWEodC5jdHgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICExID09PSBlLmxlZnQgPyAwIDogci5sZWZ0IC0gZS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICExID09PSBlLnJpZ2h0ID8gby53aWR0aCA6IHIucmlnaHQgKyBlLnJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAhMSA9PT0gZS50b3AgPyAwIDogci50b3AgLSBlLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogITEgPT09IGUuYm90dG9tID8gby5oZWlnaHQgOiByLmJvdHRvbSArIGUuYm90dG9tCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBuLmRhdGFzZXQuZHJhdygpLCBCLmNhbnZhcy51bmNsaXBBcmVhKHQuY3R4KSk7IGEgPCBzOyArK2EpIGlbYV0uZHJhdyhyKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldEhvdmVyU3R5bGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEIuZ2V0SG92ZXJDb2xvcjsKICAgICAgICAgICAgICAgICAgICBlLiRwcmV2aW91c1N0eWxlID0gewogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHQuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogdC5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IHQuYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogdC5yYWRpdXMKICAgICAgICAgICAgICAgICAgICB9LCB0LmJhY2tncm91bmRDb2xvciA9IE5lKG4uaG92ZXJCYWNrZ3JvdW5kQ29sb3IsIGkobi5iYWNrZ3JvdW5kQ29sb3IpKSwgdC5ib3JkZXJDb2xvciA9IE5lKG4uaG92ZXJCb3JkZXJDb2xvciwgaShuLmJvcmRlckNvbG9yKSksIHQuYm9yZGVyV2lkdGggPSBOZShuLmhvdmVyQm9yZGVyV2lkdGgsIG4uYm9yZGVyV2lkdGgpLCB0LnJhZGl1cyA9IE5lKG4uaG92ZXJSYWRpdXMsIG4ucmFkaXVzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgV2UgPSBCLm9wdGlvbnMucmVzb2x2ZTsKICAgICAgICBGLl9zZXQoInBvbGFyQXJlYSIsIHsKICAgICAgICAgICAgc2NhbGU6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJyYWRpYWxMaW5lYXIiLAogICAgICAgICAgICAgICAgYW5nbGVMaW5lczogewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICExCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ3JpZExpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgY2lyY3VsYXI6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcG9pbnRMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgYW5pbWF0ZVJvdGF0ZTogITAsCiAgICAgICAgICAgICAgICBhbmltYXRlU2NhbGU6ICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0YXJ0QW5nbGU6IC0uNSAqIE1hdGguUEksCiAgICAgICAgICAgIGxlZ2VuZENhbGxiYWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIiksCiAgICAgICAgICAgICAgICAgICAgbyA9IGUuZGF0YSwKICAgICAgICAgICAgICAgICAgICBhID0gby5kYXRhc2V0cywKICAgICAgICAgICAgICAgICAgICBzID0gby5sYWJlbHM7CiAgICAgICAgICAgICAgICBpZiAoci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgZS5pZCArICItbGVnZW5kIiksIGEubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IDAsIG4gPSBhWzBdLmRhdGEubGVuZ3RoOyB0IDwgbjsgKyt0KShpID0gci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpKSkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBhWzBdLmJhY2tncm91bmRDb2xvclt0XSwgc1t0XSAmJiBpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNbdF0pKTsKICAgICAgICAgICAgICAgIHJldHVybiByLm91dGVySFRNTAogICAgICAgICAgICB9LAogICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlTGFiZWxzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5kYXRhOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5sYWJlbHMubGVuZ3RoICYmIHQuZGF0YXNldHMubGVuZ3RoID8gdC5sYWJlbHMubWFwKChmdW5jdGlvbihuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGUuZ2V0RGF0YXNldE1ldGEoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIuY29udHJvbGxlci5nZXRTdHlsZShpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IG8uYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVN0eWxlOiBvLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogby5ib3JkZXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW46IGlzTmFOKHQuZGF0YXNldHNbMF0uZGF0YVtpXSkgfHwgci5kYXRhW2ldLmhpZGRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBbXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIHIsIG8gPSB0LmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5jaGFydDsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gKGEuZGF0YS5kYXRhc2V0cyB8fCBbXSkubGVuZ3RoOyBuIDwgaTsgKytuKShyID0gYS5nZXREYXRhc2V0TWV0YShuKSkuZGF0YVtvXS5oaWRkZW4gPSAhci5kYXRhW29dLmhpZGRlbjsKICAgICAgICAgICAgICAgICAgICBhLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQubGFiZWxzW2UuaW5kZXhdICsgIjogIiArIGUueUxhYmVsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHFlID0gbmUuZXh0ZW5kKHsKICAgICAgICAgICAgZGF0YUVsZW1lbnRUeXBlOiBiZS5BcmMsCiAgICAgICAgICAgIGxpbmtTY2FsZXM6IEIubm9vcCwKICAgICAgICAgICAgX2RhdGFFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyV2lkdGgiLCAiYm9yZGVyQWxpZ24iLCAiaG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCAiaG92ZXJCb3JkZXJDb2xvciIsICJob3ZlckJvcmRlcldpZHRoIl0sCiAgICAgICAgICAgIF9nZXRJbmRleFNjYWxlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhcnQuc2NhbGUuaWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFZhbHVlU2NhbGVJZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5zY2FsZS5pZAogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBvID0gci5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHIuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgIHMgPSByLmNoYXJ0Lm9wdGlvbnMuc3RhcnRBbmdsZSB8fCAwLAogICAgICAgICAgICAgICAgICAgIGwgPSByLl9zdGFydHMgPSBbXSwKICAgICAgICAgICAgICAgICAgICBjID0gci5fYW5nbGVzID0gW10sCiAgICAgICAgICAgICAgICAgICAgdSA9IGEuZGF0YTsKICAgICAgICAgICAgICAgIGZvciAoci5fdXBkYXRlUmFkaXVzKCksIGEuY291bnQgPSByLmNvdW50VmlzaWJsZUVsZW1lbnRzKCksIHQgPSAwLCBuID0gby5kYXRhLmxlbmd0aDsgdCA8IG47IHQrKykgbFt0XSA9IHMsIGkgPSByLl9jb21wdXRlQW5nbGUodCksIGNbdF0gPSBpLCBzICs9IGk7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gdS5sZW5ndGg7IHQgPCBuOyArK3QpIHVbdF0uX29wdGlvbnMgPSByLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKHVbdF0sIHQpLCByLnVwZGF0ZUVsZW1lbnQodVt0XSwgdCwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3VwZGF0ZVJhZGl1czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgciA9IE1hdGgubWluKG4ucmlnaHQgLSBuLmxlZnQsIG4uYm90dG9tIC0gbi50b3ApOwogICAgICAgICAgICAgICAgdC5vdXRlclJhZGl1cyA9IE1hdGgubWF4KHIgLyAyLCAwKSwgdC5pbm5lclJhZGl1cyA9IE1hdGgubWF4KGkuY3V0b3V0UGVyY2VudGFnZSA/IHQub3V0ZXJSYWRpdXMgLyAxMDAgKiBpLmN1dG91dFBlcmNlbnRhZ2UgOiAxLCAwKSwgdC5yYWRpdXNMZW5ndGggPSAodC5vdXRlclJhZGl1cyAtIHQuaW5uZXJSYWRpdXMpIC8gdC5nZXRWaXNpYmxlRGF0YXNldENvdW50KCksIGUub3V0ZXJSYWRpdXMgPSB0Lm91dGVyUmFkaXVzIC0gdC5yYWRpdXNMZW5ndGggKiBlLmluZGV4LCBlLmlubmVyUmFkaXVzID0gZS5vdXRlclJhZGl1cyAtIHQucmFkaXVzTGVuZ3RoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICByID0gaS5jaGFydCwKICAgICAgICAgICAgICAgICAgICBvID0gaS5nZXREYXRhc2V0KCksCiAgICAgICAgICAgICAgICAgICAgYSA9IHIub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBzID0gYS5hbmltYXRpb24sCiAgICAgICAgICAgICAgICAgICAgbCA9IHIuc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgYyA9IHIuZGF0YS5sYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgdSA9IGwueENlbnRlciwKICAgICAgICAgICAgICAgICAgICBkID0gbC55Q2VudGVyLAogICAgICAgICAgICAgICAgICAgIGggPSBhLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuaGlkZGVuID8gMCA6IGwuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby5kYXRhW3RdKSwKICAgICAgICAgICAgICAgICAgICBwID0gaS5fc3RhcnRzW3RdLAogICAgICAgICAgICAgICAgICAgIGcgPSBwICsgKGUuaGlkZGVuID8gMCA6IGkuX2FuZ2xlc1t0XSksCiAgICAgICAgICAgICAgICAgICAgbSA9IHMuYW5pbWF0ZVNjYWxlID8gMCA6IGwuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby5kYXRhW3RdKSwKICAgICAgICAgICAgICAgICAgICB2ID0gZS5fb3B0aW9ucyB8fCB7fTsKICAgICAgICAgICAgICAgIEIuZXh0ZW5kKGUsIHsKICAgICAgICAgICAgICAgICAgICBfZGF0YXNldEluZGV4OiBpLmluZGV4LAogICAgICAgICAgICAgICAgICAgIF9pbmRleDogdCwKICAgICAgICAgICAgICAgICAgICBfc2NhbGU6IGwsCiAgICAgICAgICAgICAgICAgICAgX21vZGVsOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdi5iYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiB2LmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogdi5ib3JkZXJXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQWxpZ246IHYuYm9yZGVyQWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHUsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyUmFkaXVzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBvdXRlclJhZGl1czogbiA/IG0gOiBmLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydEFuZ2xlOiBuICYmIHMuYW5pbWF0ZVJvdGF0ZSA/IGggOiBwLAogICAgICAgICAgICAgICAgICAgICAgICBlbmRBbmdsZTogbiAmJiBzLmFuaW1hdGVSb3RhdGUgPyBoIDogZywKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IEIudmFsdWVBdEluZGV4T3JEZWZhdWx0KGMsIHQsIGNbdF0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGUucGl2b3QoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjb3VudFZpc2libGVFbGVtZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldE1ldGEoKSwKICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBCLmVhY2godC5kYXRhLCAoZnVuY3Rpb24odCwgaSkgewogICAgICAgICAgICAgICAgICAgIGlzTmFOKGUuZGF0YVtpXSkgfHwgdC5oaWRkZW4gfHwgbisrCiAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0SG92ZXJTdHlsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLl9tb2RlbCwKICAgICAgICAgICAgICAgICAgICBuID0gZS5fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBpID0gQi5nZXRIb3ZlckNvbG9yLAogICAgICAgICAgICAgICAgICAgIHIgPSBCLnZhbHVlT3JEZWZhdWx0OwogICAgICAgICAgICAgICAgZS4kcHJldmlvdXNTdHlsZSA9IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHQuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiB0LmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiB0LmJvcmRlcldpZHRoCiAgICAgICAgICAgICAgICB9LCB0LmJhY2tncm91bmRDb2xvciA9IHIobi5ob3ZlckJhY2tncm91bmRDb2xvciwgaShuLmJhY2tncm91bmRDb2xvcikpLCB0LmJvcmRlckNvbG9yID0gcihuLmhvdmVyQm9yZGVyQ29sb3IsIGkobi5ib3JkZXJDb2xvcikpLCB0LmJvcmRlcldpZHRoID0gcihuLmhvdmVyQm9yZGVyV2lkdGgsIG4uYm9yZGVyV2lkdGgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9jb21wdXRlQW5nbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXRNZXRhKCkuY291bnQsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgIHIgPSB0LmdldE1ldGEoKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTihpLmRhdGFbZV0pIHx8IHIuZGF0YVtlXS5oaWRkZW4pIHJldHVybiAwOwogICAgICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IHQuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgZGF0YUluZGV4OiBlLAogICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IGksCiAgICAgICAgICAgICAgICAgICAgZGF0YXNldEluZGV4OiB0LmluZGV4CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIFdlKFt0LmNoYXJ0Lm9wdGlvbnMuZWxlbWVudHMuYXJjLmFuZ2xlLCAyICogTWF0aC5QSSAvIG5dLCBvLCBlKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgRi5fc2V0KCJwaWUiLCBCLmNsb25lKEYuZG91Z2hudXQpKSwgRi5fc2V0KCJwaWUiLCB7CiAgICAgICAgICAgIGN1dG91dFBlcmNlbnRhZ2U6IDAKICAgICAgICB9KTsKICAgICAgICB2YXIgVWUgPSBQZSwKICAgICAgICAgICAgVmUgPSBCLnZhbHVlT3JEZWZhdWx0OwogICAgICAgIEYuX3NldCgicmFkYXIiLCB7CiAgICAgICAgICAgIHNwYW5HYXBzOiAhMSwKICAgICAgICAgICAgc2NhbGU6IHsKICAgICAgICAgICAgICAgIHR5cGU6ICJyYWRpYWxMaW5lYXIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVsZW1lbnRzOiB7CiAgICAgICAgICAgICAgICBsaW5lOiB7CiAgICAgICAgICAgICAgICAgICAgZmlsbDogInN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgWWUgPSBuZS5leHRlbmQoewogICAgICAgICAgICBkYXRhc2V0RWxlbWVudFR5cGU6IGJlLkxpbmUsCiAgICAgICAgICAgIGRhdGFFbGVtZW50VHlwZTogYmUuUG9pbnQsCiAgICAgICAgICAgIGxpbmtTY2FsZXM6IEIubm9vcCwKICAgICAgICAgICAgX2RhdGFzZXRFbGVtZW50T3B0aW9uczogWyJiYWNrZ3JvdW5kQ29sb3IiLCAiYm9yZGVyV2lkdGgiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyQ2FwU3R5bGUiLCAiYm9yZGVyRGFzaCIsICJib3JkZXJEYXNoT2Zmc2V0IiwgImJvcmRlckpvaW5TdHlsZSIsICJmaWxsIl0sCiAgICAgICAgICAgIF9kYXRhRWxlbWVudE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogInBvaW50QmFja2dyb3VuZENvbG9yIiwKICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAicG9pbnRCb3JkZXJDb2xvciIsCiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogInBvaW50Qm9yZGVyV2lkdGgiLAogICAgICAgICAgICAgICAgaGl0UmFkaXVzOiAicG9pbnRIaXRSYWRpdXMiLAogICAgICAgICAgICAgICAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6ICJwb2ludEhvdmVyQmFja2dyb3VuZENvbG9yIiwKICAgICAgICAgICAgICAgIGhvdmVyQm9yZGVyQ29sb3I6ICJwb2ludEhvdmVyQm9yZGVyQ29sb3IiLAogICAgICAgICAgICAgICAgaG92ZXJCb3JkZXJXaWR0aDogInBvaW50SG92ZXJCb3JkZXJXaWR0aCIsCiAgICAgICAgICAgICAgICBob3ZlclJhZGl1czogInBvaW50SG92ZXJSYWRpdXMiLAogICAgICAgICAgICAgICAgcG9pbnRTdHlsZTogInBvaW50U3R5bGUiLAogICAgICAgICAgICAgICAgcmFkaXVzOiAicG9pbnRSYWRpdXMiLAogICAgICAgICAgICAgICAgcm90YXRpb246ICJwb2ludFJvdGF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0SW5kZXhTY2FsZUlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYXJ0LnNjYWxlLmlkCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRWYWx1ZVNjYWxlSWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhcnQuc2NhbGUuaWQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgciA9IGkuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgIG8gPSByLmRhdGFzZXQsCiAgICAgICAgICAgICAgICAgICAgYSA9IHIuZGF0YSB8fCBbXSwKICAgICAgICAgICAgICAgICAgICBzID0gaS5jaGFydC5zY2FsZSwKICAgICAgICAgICAgICAgICAgICBsID0gaS5fY29uZmlnOwogICAgICAgICAgICAgICAgZm9yICh2b2lkIDAgIT09IGwudGVuc2lvbiAmJiB2b2lkIDAgPT09IGwubGluZVRlbnNpb24gJiYgKGwubGluZVRlbnNpb24gPSBsLnRlbnNpb24pLCBvLl9zY2FsZSA9IHMsIG8uX2RhdGFzZXRJbmRleCA9IGkuaW5kZXgsIG8uX2NoaWxkcmVuID0gYSwgby5fbG9vcCA9ICEwLCBvLl9tb2RlbCA9IGkuX3Jlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMobyksIG8ucGl2b3QoKSwgdCA9IDAsIG4gPSBhLmxlbmd0aDsgdCA8IG47ICsrdCkgaS51cGRhdGVFbGVtZW50KGFbdF0sIHQsIGUpOwogICAgICAgICAgICAgICAgZm9yIChpLnVwZGF0ZUJlemllckNvbnRyb2xQb2ludHMoKSwgdCA9IDAsIG4gPSBhLmxlbmd0aDsgdCA8IG47ICsrdCkgYVt0XS5waXZvdCgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnQ6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICByID0gZS5jdXN0b20gfHwge30sCiAgICAgICAgICAgICAgICAgICAgbyA9IGkuZ2V0RGF0YXNldCgpLAogICAgICAgICAgICAgICAgICAgIGEgPSBpLmNoYXJ0LnNjYWxlLAogICAgICAgICAgICAgICAgICAgIHMgPSBhLmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZSh0LCBvLmRhdGFbdF0pLAogICAgICAgICAgICAgICAgICAgIGwgPSBpLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKGUsIHQpLAogICAgICAgICAgICAgICAgICAgIGMgPSBpLmdldE1ldGEoKS5kYXRhc2V0Ll9tb2RlbCwKICAgICAgICAgICAgICAgICAgICB1ID0gbiA/IGEueENlbnRlciA6IHMueCwKICAgICAgICAgICAgICAgICAgICBkID0gbiA/IGEueUNlbnRlciA6IHMueTsKICAgICAgICAgICAgICAgIGUuX3NjYWxlID0gYSwgZS5fb3B0aW9ucyA9IGwsIGUuX2RhdGFzZXRJbmRleCA9IGkuaW5kZXgsIGUuX2luZGV4ID0gdCwgZS5fbW9kZWwgPSB7CiAgICAgICAgICAgICAgICAgICAgeDogdSwKICAgICAgICAgICAgICAgICAgICB5OiBkLAogICAgICAgICAgICAgICAgICAgIHNraXA6IHIuc2tpcCB8fCBpc05hTih1KSB8fCBpc05hTihkKSwKICAgICAgICAgICAgICAgICAgICByYWRpdXM6IGwucmFkaXVzLAogICAgICAgICAgICAgICAgICAgIHBvaW50U3R5bGU6IGwucG9pbnRTdHlsZSwKICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogbC5yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGwuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBsLmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBsLmJvcmRlcldpZHRoLAogICAgICAgICAgICAgICAgICAgIHRlbnNpb246IFZlKHIudGVuc2lvbiwgYyA/IGMudGVuc2lvbiA6IDApLAogICAgICAgICAgICAgICAgICAgIGhpdFJhZGl1czogbC5oaXRSYWRpdXMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3Jlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgbiA9IGUuY2hhcnQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBpID0gbmUucHJvdG90eXBlLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zLmFwcGx5KGUsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICByZXR1cm4gaS5zcGFuR2FwcyA9IFZlKHQuc3BhbkdhcHMsIG4uc3BhbkdhcHMpLCBpLnRlbnNpb24gPSBWZSh0LmxpbmVUZW5zaW9uLCBuLmVsZW1lbnRzLmxpbmUudGVuc2lvbiksIGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdXBkYXRlQmV6aWVyQ29udHJvbFBvaW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgaSwgciA9IHRoaXMuZ2V0TWV0YSgpLAogICAgICAgICAgICAgICAgICAgIG8gPSB0aGlzLmNoYXJ0LmNoYXJ0QXJlYSwKICAgICAgICAgICAgICAgICAgICBhID0gci5kYXRhIHx8IFtdOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChNYXRoLm1pbihlLCBuKSwgdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoci5kYXRhc2V0Ll9tb2RlbC5zcGFuR2FwcyAmJiAoYSA9IGEuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhZS5fbW9kZWwuc2tpcAogICAgICAgICAgICAgICAgICAgIH0pKSksIGUgPSAwLCB0ID0gYS5sZW5ndGg7IGUgPCB0OyArK2UpIG4gPSBhW2VdLl9tb2RlbCwgaSA9IEIuc3BsaW5lQ3VydmUoQi5wcmV2aW91c0l0ZW0oYSwgZSwgITApLl9tb2RlbCwgbiwgQi5uZXh0SXRlbShhLCBlLCAhMCkuX21vZGVsLCBuLnRlbnNpb24pLCBuLmNvbnRyb2xQb2ludFByZXZpb3VzWCA9IHMoaS5wcmV2aW91cy54LCBvLmxlZnQsIG8ucmlnaHQpLCBuLmNvbnRyb2xQb2ludFByZXZpb3VzWSA9IHMoaS5wcmV2aW91cy55LCBvLnRvcCwgby5ib3R0b20pLCBuLmNvbnRyb2xQb2ludE5leHRYID0gcyhpLm5leHQueCwgby5sZWZ0LCBvLnJpZ2h0KSwgbi5jb250cm9sUG9pbnROZXh0WSA9IHMoaS5uZXh0LnksIG8udG9wLCBvLmJvdHRvbSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0SG92ZXJTdHlsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLl9tb2RlbCwKICAgICAgICAgICAgICAgICAgICBuID0gZS5fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBpID0gQi5nZXRIb3ZlckNvbG9yOwogICAgICAgICAgICAgICAgZS4kcHJldmlvdXNTdHlsZSA9IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHQuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiB0LmJvcmRlckNvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiB0LmJvcmRlcldpZHRoLAogICAgICAgICAgICAgICAgICAgIHJhZGl1czogdC5yYWRpdXMKICAgICAgICAgICAgICAgIH0sIHQuYmFja2dyb3VuZENvbG9yID0gVmUobi5ob3ZlckJhY2tncm91bmRDb2xvciwgaShuLmJhY2tncm91bmRDb2xvcikpLCB0LmJvcmRlckNvbG9yID0gVmUobi5ob3ZlckJvcmRlckNvbG9yLCBpKG4uYm9yZGVyQ29sb3IpKSwgdC5ib3JkZXJXaWR0aCA9IFZlKG4uaG92ZXJCb3JkZXJXaWR0aCwgbi5ib3JkZXJXaWR0aCksIHQucmFkaXVzID0gVmUobi5ob3ZlclJhZGl1cywgbi5yYWRpdXMpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBGLl9zZXQoInNjYXR0ZXIiLCB7CiAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICBtb2RlOiAic2luZ2xlIgogICAgICAgICAgICB9LAogICAgICAgICAgICBzY2FsZXM6IHsKICAgICAgICAgICAgICAgIHhBeGVzOiBbewogICAgICAgICAgICAgICAgICAgIGlkOiAieC1heGlzLTEiLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYm90dG9tIgogICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICBpZDogInktYXhpcy0xIiwKICAgICAgICAgICAgICAgICAgICB0eXBlOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b29sdGlwczogewogICAgICAgICAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiKCIgKyBlLnhMYWJlbCArICIsICIgKyBlLnlMYWJlbCArICIpIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pLCBGLl9zZXQoImdsb2JhbCIsIHsKICAgICAgICAgICAgZGF0YXNldHM6IHsKICAgICAgICAgICAgICAgIHNjYXR0ZXI6IHsKICAgICAgICAgICAgICAgICAgICBzaG93TGluZTogITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBYZSA9IHsKICAgICAgICAgICAgYmFyOiBUZSwKICAgICAgICAgICAgYnViYmxlOiBEZSwKICAgICAgICAgICAgZG91Z2hudXQ6IFBlLAogICAgICAgICAgICBob3Jpem9udGFsQmFyOiBqZSwKICAgICAgICAgICAgbGluZTogQmUsCiAgICAgICAgICAgIHBvbGFyQXJlYTogcWUsCiAgICAgICAgICAgIHBpZTogVWUsCiAgICAgICAgICAgIHJhZGFyOiBZZSwKICAgICAgICAgICAgc2NhdHRlcjogQmUKICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBHZShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLm5hdGl2ZSA/IHsKICAgICAgICAgICAgICAgIHg6IGUueCwKICAgICAgICAgICAgICAgIHk6IGUueQogICAgICAgICAgICB9IDogQi5nZXRSZWxhdGl2ZVBvc2l0aW9uKGUsIHQpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBLZShlLCB0KSB7CiAgICAgICAgICAgIHZhciBuLCBpLCByLCBvLCBhLCBzLCBsID0gZS5fZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpOwogICAgICAgICAgICBmb3IgKGkgPSAwLCBvID0gbC5sZW5ndGg7IGkgPCBvOyArK2kpCiAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBhID0gKG4gPSBsW2ldLmRhdGEpLmxlbmd0aDsgciA8IGE7ICsrcikocyA9IG5bcl0pLl92aWV3LnNraXAgfHwgdChzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUWUoZSwgdCkgewogICAgICAgICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICByZXR1cm4gS2UoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuaW5SYW5nZSh0LngsIHQueSkgJiYgbi5wdXNoKGUpCiAgICAgICAgICAgIH0pKSwgbgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWmUoZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwKICAgICAgICAgICAgICAgIG8gPSBbXTsKICAgICAgICAgICAgcmV0dXJuIEtlKGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoIW4gfHwgZS5pblJhbmdlKHQueCwgdC55KSkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZS5nZXRDZW50ZXJQb2ludCgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gaSh0LCBhKTsKICAgICAgICAgICAgICAgICAgICBzIDwgciA/IChvID0gW2VdLCByID0gcykgOiBzID09PSByICYmIG8ucHVzaChlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIG8KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEplKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSAtMSAhPT0gZS5pbmRleE9mKCJ4IiksCiAgICAgICAgICAgICAgICBuID0gLTEgIT09IGUuaW5kZXhPZigieSIpOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgaSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSB0ID8gTWF0aC5hYnMoZS54IC0gaS54KSA6IDAsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4gPyBNYXRoLmFicyhlLnkgLSBpLnkpIDogMDsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cociwgMikgKyBNYXRoLnBvdyhvLCAyKSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZXQoZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSA9IEdlKHQsIGUpOwogICAgICAgICAgICBuLmF4aXMgPSBuLmF4aXMgfHwgIngiOwogICAgICAgICAgICB2YXIgciA9IEplKG4uYXhpcyksCiAgICAgICAgICAgICAgICBvID0gbi5pbnRlcnNlY3QgPyBRZShlLCBpKSA6IFplKGUsIGksICExLCByKSwKICAgICAgICAgICAgICAgIGEgPSBbXTsKICAgICAgICAgICAgcmV0dXJuIG8ubGVuZ3RoID8gKGUuX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuZGF0YVtvWzBdLl9pbmRleF07CiAgICAgICAgICAgICAgICB0ICYmICF0Ll92aWV3LnNraXAgJiYgYS5wdXNoKHQpCiAgICAgICAgICAgIH0pKSwgYSkgOiBbXQogICAgICAgIH0KICAgICAgICB2YXIgdHQgPSB7CiAgICAgICAgICAgICAgICBtb2RlczogewogICAgICAgICAgICAgICAgICAgIHNpbmdsZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEdlKHQsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gS2UoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmluUmFuZ2Uobi54LCBuLnkpKSByZXR1cm4gaS5wdXNoKGUpLCBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaS5zbGljZSgwLCAxKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGV0LAogICAgICAgICAgICAgICAgICAgIGluZGV4OiBldCwKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gR2UodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4uYXhpcyA9IG4uYXhpcyB8fCAieHkiOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEplKG4uYXhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbi5pbnRlcnNlY3QgPyBRZShlLCBpKSA6IFplKGUsIGksICExLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8ubGVuZ3RoID4gMCAmJiAobyA9IGUuZ2V0RGF0YXNldE1ldGEob1swXS5fZGF0YXNldEluZGV4KS5kYXRhKSwgbwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIngtYXhpcyI6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV0KGUsIHQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdDogITEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHBvaW50OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBRZShlLCBHZSh0LCBlKSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG5lYXJlc3Q6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBHZSh0LCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgbi5heGlzID0gbi5heGlzIHx8ICJ4eSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gSmUobi5heGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFplKGUsIGksIG4uaW50ZXJzZWN0LCByKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgeDogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEdlKHQsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gS2UoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5YUmFuZ2UoaS54KSAmJiByLnB1c2goZSksIGUuaW5SYW5nZShpLngsIGkueSkgJiYgKG8gPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmludGVyc2VjdCAmJiAhbyAmJiAociA9IFtdKSwgcgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgeTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IEdlKHQsIGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gS2UoZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuaW5ZUmFuZ2UoaS55KSAmJiByLnB1c2goZSksIGUuaW5SYW5nZShpLngsIGkueSkgJiYgKG8gPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLmludGVyc2VjdCAmJiAhbyAmJiAociA9IFtdKSwgcgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgbnQgPSBCLmV4dGVuZDsKCiAgICAgICAgZnVuY3Rpb24gaXQoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gQi53aGVyZShlLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUucG9zID09PSB0CiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcnQoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gZS5zb3J0KChmdW5jdGlvbihlLCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHQgPyBuIDogZSwKICAgICAgICAgICAgICAgICAgICByID0gdCA/IGUgOiBuOwogICAgICAgICAgICAgICAgcmV0dXJuIGkud2VpZ2h0ID09PSByLndlaWdodCA/IGkuaW5kZXggLSByLmluZGV4IDogaS53ZWlnaHQgLSByLndlaWdodAogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG90KGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGVbbl0sIHRbbl0pICsgTWF0aC5tYXgoZVtpXSwgdFtpXSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGF0KGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGksIHIsIG8gPSBuLmJveCwKICAgICAgICAgICAgICAgIGEgPSBlLm1heFBhZGRpbmc7CiAgICAgICAgICAgIGlmIChuLnNpemUgJiYgKGVbbi5wb3NdIC09IG4uc2l6ZSksIG4uc2l6ZSA9IG4uaG9yaXpvbnRhbCA/IG8uaGVpZ2h0IDogby53aWR0aCwgZVtuLnBvc10gKz0gbi5zaXplLCBvLmdldFBhZGRpbmcpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gby5nZXRQYWRkaW5nKCk7CiAgICAgICAgICAgICAgICBhLnRvcCA9IE1hdGgubWF4KGEudG9wLCBzLnRvcCksIGEubGVmdCA9IE1hdGgubWF4KGEubGVmdCwgcy5sZWZ0KSwgYS5ib3R0b20gPSBNYXRoLm1heChhLmJvdHRvbSwgcy5ib3R0b20pLCBhLnJpZ2h0ID0gTWF0aC5tYXgoYS5yaWdodCwgcy5yaWdodCkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA9IHQub3V0ZXJXaWR0aCAtIG90KGEsIGUsICJsZWZ0IiwgInJpZ2h0IiksIHIgPSB0Lm91dGVySGVpZ2h0IC0gb3QoYSwgZSwgInRvcCIsICJib3R0b20iKSwgaSAhPT0gZS53IHx8IHIgIT09IGUuaCkgewogICAgICAgICAgICAgICAgZS53ID0gaSwgZS5oID0gcjsKICAgICAgICAgICAgICAgIHZhciBsID0gbi5ob3Jpem9udGFsID8gW2ksIGUud10gOiBbciwgZS5oXTsKICAgICAgICAgICAgICAgIHJldHVybiAhKGxbMF0gPT09IGxbMV0gfHwgaXNOYU4obFswXSkgJiYgaXNOYU4obFsxXSkpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0KGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSB0Lm1heFBhZGRpbmc7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHsKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICByaWdodDogMCwKICAgICAgICAgICAgICAgICAgICBib3R0b206IDAKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgaVtlXSA9IE1hdGgubWF4KHRbZV0sIG5bZV0pCiAgICAgICAgICAgICAgICB9KSksIGkKICAgICAgICAgICAgfShlID8gWyJsZWZ0IiwgInJpZ2h0Il0gOiBbInRvcCIsICJib3R0b20iXSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGx0KGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwsIGMgPSBbXTsKICAgICAgICAgICAgZm9yIChpID0gMCwgciA9IGUubGVuZ3RoOyBpIDwgcjsgKytpKShhID0gKG8gPSBlW2ldKS5ib3gpLnVwZGF0ZShvLndpZHRoIHx8IHQudywgby5oZWlnaHQgfHwgdC5oLCBzdChvLmhvcml6b250YWwsIHQpKSwgYXQodCwgbiwgbykgJiYgKGwgPSAhMCwgYy5sZW5ndGggJiYgKHMgPSAhMCkpLCBhLmZ1bGxXaWR0aCB8fCBjLnB1c2gobyk7CiAgICAgICAgICAgIHJldHVybiBzICYmIGx0KGMsIHQsIG4pIHx8IGwKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGN0KGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMgPSBuLnBhZGRpbmcsCiAgICAgICAgICAgICAgICBsID0gdC54LAogICAgICAgICAgICAgICAgYyA9IHQueTsKICAgICAgICAgICAgZm9yIChpID0gMCwgciA9IGUubGVuZ3RoOyBpIDwgcjsgKytpKSBhID0gKG8gPSBlW2ldKS5ib3gsIG8uaG9yaXpvbnRhbCA/IChhLmxlZnQgPSBhLmZ1bGxXaWR0aCA/IHMubGVmdCA6IHQubGVmdCwgYS5yaWdodCA9IGEuZnVsbFdpZHRoID8gbi5vdXRlcldpZHRoIC0gcy5yaWdodCA6IHQubGVmdCArIHQudywgYS50b3AgPSBjLCBhLmJvdHRvbSA9IGMgKyBhLmhlaWdodCwgYS53aWR0aCA9IGEucmlnaHQgLSBhLmxlZnQsIGMgPSBhLmJvdHRvbSkgOiAoYS5sZWZ0ID0gbCwgYS5yaWdodCA9IGwgKyBhLndpZHRoLCBhLnRvcCA9IHQudG9wLCBhLmJvdHRvbSA9IHQudG9wICsgdC5oLCBhLmhlaWdodCA9IGEuYm90dG9tIC0gYS50b3AsIGwgPSBhLnJpZ2h0KTsKICAgICAgICAgICAgdC54ID0gbCwgdC55ID0gYwogICAgICAgIH0KICAgICAgICBGLl9zZXQoImdsb2JhbCIsIHsKICAgICAgICAgICAgbGF5b3V0OiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiB7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLAogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMCwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgdXQsIGR0ID0gewogICAgICAgICAgICAgICAgZGVmYXVsdHM6IHt9LAogICAgICAgICAgICAgICAgYWRkQm94OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5ib3hlcyB8fCAoZS5ib3hlcyA9IFtdKSwgdC5mdWxsV2lkdGggPSB0LmZ1bGxXaWR0aCB8fCAhMSwgdC5wb3NpdGlvbiA9IHQucG9zaXRpb24gfHwgInRvcCIsIHQud2VpZ2h0ID0gdC53ZWlnaHQgfHwgMCwgdC5fbGF5ZXJzID0gdC5fbGF5ZXJzIHx8IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmRyYXcuYXBwbHkodCwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgIH0sIGUuYm94ZXMucHVzaCh0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZUJveDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5ib3hlcyA/IGUuYm94ZXMuaW5kZXhPZih0KSA6IC0xOyAtIDEgIT09IG4gJiYgZS5ib3hlcy5zcGxpY2UobiwgMSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb25maWd1cmU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpLCByID0gWyJmdWxsV2lkdGgiLCAicG9zaXRpb24iLCAid2VpZ2h0Il0sIG8gPSByLmxlbmd0aCwgYSA9IDA7IGEgPCBvOyArK2EpIGkgPSByW2FdLCBuLmhhc093blByb3BlcnR5KGkpICYmICh0W2ldID0gbltpXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUub3B0aW9ucy5sYXlvdXQgfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gQi5vcHRpb25zLnRvUGFkZGluZyhpLnBhZGRpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQgLSByLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG4gLSByLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IChlIHx8IFtdKS5sZW5ndGg7IHQgPCBuOyArK3QpIGkgPSBlW3RdLCByLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IGkucG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogaS5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IGkud2VpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBydChpdCh0LCAibGVmdCIpLCAhMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBydChpdCh0LCAicmlnaHQiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBydChpdCh0LCAidG9wIiksICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHJ0KGl0KHQsICJib3R0b20iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEFuZFRvcDogbi5jb25jYXQociksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0QW5kQm90dG9tOiBpLmNvbmNhdChvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRBcmVhOiBpdCh0LCAiY2hhcnRBcmVhIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiBuLmNvbmNhdChpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogci5jb25jYXQobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUuYm94ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMudmVydGljYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcy5ob3Jpem9udGFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IE9iamVjdC5mcmVlemUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyV2lkdGg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJIZWlnaHQ6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVXaWR0aDogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Qm94TWF4V2lkdGg6IG8gLyAyIC8gbC5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaEJveE1heEhlaWdodDogYSAvIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG50KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhQYWRkaW5nOiBudCh7fSwgciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHIubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiByLnRvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyArK24pKHIgPSBlW25dKS53aWR0aCA9IHIuaG9yaXpvbnRhbCA/IHIuYm94LmZ1bGxXaWR0aCAmJiB0LmF2YWlsYWJsZVdpZHRoIDogdC52Qm94TWF4V2lkdGgsIHIuaGVpZ2h0ID0gci5ob3Jpem9udGFsICYmIHQuaEJveE1heEhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICB9KGwuY29uY2F0KGMpLCB1KSwgbHQobCwgZCwgdSksIGx0KGMsIGQsIHUpICYmIGx0KGwsIGQsIHUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5tYXhQYWRkaW5nOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBNYXRoLm1heCh0W25dIC0gZVtuXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW25dICs9IGksIGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS55ICs9IG4oInRvcCIpLCBlLnggKz0gbigibGVmdCIpLCBuKCJyaWdodCIpLCBuKCJib3R0b20iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfShkKSwgY3Qocy5sZWZ0QW5kVG9wLCBkLCB1KSwgZC54ICs9IGQudywgZC55ICs9IGQuaCwgY3Qocy5yaWdodEFuZEJvdHRvbSwgZCwgdSksIGUuY2hhcnRBcmVhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGQudG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBkLmxlZnQgKyBkLncsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBkLnRvcCArIGQuaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgQi5lYWNoKHMuY2hhcnRBcmVhLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5ib3g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnQobiwgZS5jaGFydEFyZWEpLCBuLnVwZGF0ZShkLncsIGQuaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaHQgPSAodXQgPSBPYmplY3QuZnJlZXplKHsKICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICJAa2V5ZnJhbWVzIGNoYXJ0anMtcmVuZGVyLWFuaW1hdGlvbntmcm9te29wYWNpdHk6Ljk5fXRve29wYWNpdHk6MX19LmNoYXJ0anMtcmVuZGVyLW1vbml0b3J7YW5pbWF0aW9uOmNoYXJ0anMtcmVuZGVyLWFuaW1hdGlvbiAxbXN9LmNoYXJ0anMtc2l6ZS1tb25pdG9yLC5jaGFydGpzLXNpemUtbW9uaXRvci1leHBhbmQsLmNoYXJ0anMtc2l6ZS1tb25pdG9yLXNocmlua3twb3NpdGlvbjphYnNvbHV0ZTtkaXJlY3Rpb246bHRyO2xlZnQ6MDt0b3A6MDtyaWdodDowO2JvdHRvbTowO292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6LTF9LmNoYXJ0anMtc2l6ZS1tb25pdG9yLWV4cGFuZD5kaXZ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwMDAwMHB4O2hlaWdodDoxMDAwMDAwcHg7bGVmdDowO3RvcDowfS5jaGFydGpzLXNpemUtbW9uaXRvci1zaHJpbms+ZGl2e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMCU7aGVpZ2h0OjIwMCU7bGVmdDowO3RvcDowfSIKICAgICAgICAgICAgfSkpICYmIHV0LmRlZmF1bHQgfHwgdXQsCiAgICAgICAgICAgIGZ0ID0gIiRjaGFydGpzIiwKICAgICAgICAgICAgcHQgPSAiY2hhcnRqcy1zaXplLW1vbml0b3IiLAogICAgICAgICAgICBndCA9ICJjaGFydGpzLXJlbmRlci1tb25pdG9yIiwKICAgICAgICAgICAgbXQgPSBbImFuaW1hdGlvbnN0YXJ0IiwgIndlYmtpdEFuaW1hdGlvblN0YXJ0Il0sCiAgICAgICAgICAgIHZ0ID0gewogICAgICAgICAgICAgICAgdG91Y2hzdGFydDogIm1vdXNlZG93biIsCiAgICAgICAgICAgICAgICB0b3VjaG1vdmU6ICJtb3VzZW1vdmUiLAogICAgICAgICAgICAgICAgdG91Y2hlbmQ6ICJtb3VzZXVwIiwKICAgICAgICAgICAgICAgIHBvaW50ZXJlbnRlcjogIm1vdXNlZW50ZXIiLAogICAgICAgICAgICAgICAgcG9pbnRlcmRvd246ICJtb3VzZWRvd24iLAogICAgICAgICAgICAgICAgcG9pbnRlcm1vdmU6ICJtb3VzZW1vdmUiLAogICAgICAgICAgICAgICAgcG9pbnRlcnVwOiAibW91c2V1cCIsCiAgICAgICAgICAgICAgICBwb2ludGVybGVhdmU6ICJtb3VzZW91dCIsCiAgICAgICAgICAgICAgICBwb2ludGVyb3V0OiAibW91c2VvdXQiCiAgICAgICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIHl0KGUsIHQpIHsKICAgICAgICAgICAgdmFyIG4gPSBCLmdldFN0eWxlKGUsIHQpLAogICAgICAgICAgICAgICAgaSA9IG4gJiYgbi5tYXRjaCgvXihcZCspKFwuXGQrKT9weCQvKTsKICAgICAgICAgICAgcmV0dXJuIGkgPyBOdW1iZXIoaVsxXSkgOiB2b2lkIDAKICAgICAgICB9CiAgICAgICAgdmFyIGJ0ID0gISEgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlID0gITE7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgInBhc3NpdmUiLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9ICEwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZSIsIG51bGwsIHQpCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIHJldHVybiBlCiAgICAgICAgfSgpICYmIHsKICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiB3dChlLCB0LCBuKSB7CiAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcih0LCBuLCBidCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHh0KGUsIHQsIG4pIHsKICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIG4sIGJ0KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gX3QoZSwgdCwgbiwgaSwgcikgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogZSwKICAgICAgICAgICAgICAgIGNoYXJ0OiB0LAogICAgICAgICAgICAgICAgbmF0aXZlOiByIHx8IG51bGwsCiAgICAgICAgICAgICAgICB4OiB2b2lkIDAgIT09IG4gPyBuIDogbnVsbCwKICAgICAgICAgICAgICAgIHk6IHZvaWQgMCAhPT0gaSA/IGkgOiBudWxsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFN0KGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgcmV0dXJuIHQuY2xhc3NOYW1lID0gZSB8fCAiIiwgdAogICAgICAgIH0KICAgICAgICB2YXIgQ3QgPSB7CiAgICAgICAgICAgIGRpc2FibGVDU1NJbmplY3Rpb246ICExLAogICAgICAgICAgICBfZW5hYmxlZDogInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZG9jdW1lbnQsCiAgICAgICAgICAgIF9lbnN1cmVMb2FkZWQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlQ1NTSW5qZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmdldFJvb3ROb2RlID8gZS5nZXRSb290Tm9kZSgpIDogZG9jdW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgISBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZVtmdF0gfHwgKGVbZnRdID0ge30pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4uY29udGFpbnNTdHlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uY29udGFpbnNTdHlsZXMgPSAhMCwgdCA9ICIvKiBDaGFydC5qcyAqL1xuIiArIHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0L2NzcyIpLCBpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKSwgZS5hcHBlbmRDaGlsZChpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSh0Lmhvc3QgPyB0IDogZG9jdW1lbnQuaGVhZCwgaHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFjcXVpcmVDb250ZXh0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSA6IGUubGVuZ3RoICYmIChlID0gZVswXSksIGUgJiYgZS5jYW52YXMgJiYgKGUgPSBlLmNhbnZhcyk7CiAgICAgICAgICAgICAgICB2YXIgbiA9IGUgJiYgZS5nZXRDb250ZXh0ICYmIGUuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgICAgICAgIHJldHVybiBuICYmIG4uY2FudmFzID09PSBlID8gKHRoaXMuX2Vuc3VyZUxvYWRlZChlKSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5zdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUuZ2V0QXR0cmlidXRlKCJoZWlnaHQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuZ2V0QXR0cmlidXRlKCJ3aWR0aCIpOwogICAgICAgICAgICAgICAgICAgIGlmIChlW2Z0XSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbi5kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4uaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbi53aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgbi5kaXNwbGF5ID0gbi5kaXNwbGF5IHx8ICJibG9jayIsIG51bGwgPT09IHIgfHwgIiIgPT09IHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB5dChlLCAid2lkdGgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBvICYmIChlLndpZHRoID0gbykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IGkgfHwgIiIgPT09IGkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gZS5zdHlsZS5oZWlnaHQpIGUuaGVpZ2h0ID0gZS53aWR0aCAvICh0Lm9wdGlvbnMuYXNwZWN0UmF0aW8gfHwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB5dChlLCAiaGVpZ2h0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IG8gJiYgKGUuaGVpZ2h0ID0gYSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfShlLCB0KSwgbikgOiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGUuY2FudmFzOwogICAgICAgICAgICAgICAgaWYgKHRbZnRdKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0W2Z0XS5pbml0aWFsOwogICAgICAgICAgICAgICAgICAgIFsiaGVpZ2h0IiwgIndpZHRoIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IG5bZV07CiAgICAgICAgICAgICAgICAgICAgICAgIEIuaXNOdWxsT3JVbmRlZihpKSA/IHQucmVtb3ZlQXR0cmlidXRlKGUpIDogdC5zZXRBdHRyaWJ1dGUoZSwgaSkKICAgICAgICAgICAgICAgICAgICB9KSksIEIuZWFjaChuLnN0eWxlIHx8IHt9LCAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB0LnN0eWxlW25dID0gZQogICAgICAgICAgICAgICAgICAgIH0pKSwgdC53aWR0aCA9IHQud2lkdGgsIGRlbGV0ZSB0W2Z0XQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUuY2FudmFzOwogICAgICAgICAgICAgICAgaWYgKCJyZXNpemUiICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuW2Z0XSB8fCAobltmdF0gPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgd3QoaSwgdCwgKHIucHJveGllcyB8fCAoci5wcm94aWVzID0ge30pKVtlLmlkICsgIl8iICsgdF0gPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4oZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB2dFtlLnR5cGVdIHx8IGUudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gQi5nZXRSZWxhdGl2ZVBvc2l0aW9uKGUsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90KG4sIHQsIGkueCwgaS55LCBlKQogICAgICAgICAgICAgICAgICAgICAgICB9KHQsIGUpKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgISBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMgPSBlW2Z0XSB8fCAoZVtmdF0gPSB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLnJlc2l6ZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFN0KHB0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gU3QocHQgKyAiLWV4cGFuZCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBTdChwdCArICItc2hyaW5rIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmFwcGVuZENoaWxkKFN0KCkpLCBpLmFwcGVuZENoaWxkKFN0KCkpLCB0LmFwcGVuZENoaWxkKG4pLCB0LmFwcGVuZENoaWxkKGkpLCB0Ll9yZXNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uc2Nyb2xsTGVmdCA9IDFlNiwgbi5zY3JvbGxUb3AgPSAxZTYsIGkuc2Nyb2xsTGVmdCA9IDFlNiwgaS5zY3JvbGxUb3AgPSAxZTYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX3Jlc2V0KCksIGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3dChuLCAic2Nyb2xsIiwgci5iaW5kKG4sICJleHBhbmQiKSksIHd0KGksICJzY3JvbGwiLCByLmJpbmQoaSwgInNocmluayIpKSwgdAogICAgICAgICAgICAgICAgICAgICAgICB9KChpID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5yZXNpemVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLm9wdGlvbnMubWFpbnRhaW5Bc3BlY3RSYXRpbyAmJiBlLnBhcmVudE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpID8gaS5jbGllbnRXaWR0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdChfdCgicmVzaXplIiwgbikpLCBpICYmIGkuY2xpZW50V2lkdGggPCByICYmIG4uY2FudmFzICYmIHQoX3QoInJlc2l6ZSIsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCBvID0gITEsIGEgPSBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgciA9IHIgfHwgdGhpcywgbyB8fCAobyA9ICEwLCBCLnJlcXVlc3RBbmltRnJhbWUuY2FsbCh3aW5kb3csIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gITEsIGkuYXBwbHkociwgYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGVbZnRdIHx8IChlW2Z0XSA9IHt9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnJlbmRlclByb3h5ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFydGpzLXJlbmRlci1hbmltYXRpb24iID09PSBlLmFuaW1hdGlvbk5hbWUgJiYgdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBCLmVhY2gobXQsIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3dChlLCB0LCBpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4ucmVmbG93ID0gISFlLm9mZnNldFBhcmVudCwgZS5jbGFzc0xpc3QuYWRkKGd0KQogICAgICAgICAgICAgICAgICAgIH0oZSwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5yZXNpemVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgdCAhPT0gbC5wYXJlbnROb2RlICYmIHQuaW5zZXJ0QmVmb3JlKGwsIHQuZmlyc3RDaGlsZCksIGwuX3Jlc2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfShpLCBuLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUuY2FudmFzOwogICAgICAgICAgICAgICAgaWYgKCJyZXNpemUiICE9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSAoKG5bZnRdIHx8IHt9KS5wcm94aWVzIHx8IHt9KVtlLmlkICsgIl8iICsgdF07CiAgICAgICAgICAgICAgICAgICAgciAmJiB4dChpLCB0LCByKQogICAgICAgICAgICAgICAgfSBlbHNlICEgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZVtmdF0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LnJlc2l6ZXI7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHQucmVzaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlW2Z0XSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5yZW5kZXJQcm94eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgKEIuZWFjaChtdCwgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4dChlLCB0LCBuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBkZWxldGUgdC5yZW5kZXJQcm94eSksIGUuY2xhc3NMaXN0LnJlbW92ZShndCkKICAgICAgICAgICAgICAgICAgICAgICAgfShlKSwgbiAmJiBuLnBhcmVudE5vZGUgJiYgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pCiAgICAgICAgICAgICAgICB9KGkpCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIEIuYWRkRXZlbnQgPSB3dCwgQi5yZW1vdmVFdmVudCA9IHh0OwogICAgICAgIHZhciBrdCA9IEN0Ll9lbmFibGVkID8gQ3QgOiB7CiAgICAgICAgICAgICAgICBhY3F1aXJlQ29udGV4dDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUuY2FudmFzICYmIChlID0gZS5jYW52YXMpLCBlICYmIGUuZ2V0Q29udGV4dCgiMmQiKSB8fCBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFR0ID0gQi5leHRlbmQoewogICAgICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgIGFjcXVpcmVDb250ZXh0OiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQ6IGZ1bmN0aW9uKCkge30sCiAgICAgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7fQogICAgICAgICAgICB9LCBrdCk7CiAgICAgICAgRi5fc2V0KCJnbG9iYWwiLCB7CiAgICAgICAgICAgIHBsdWdpbnM6IHt9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIEF0ID0gewogICAgICAgICAgICAgICAgX3BsdWdpbnM6IFtdLAogICAgICAgICAgICAgICAgX2NhY2hlSWQ6IDAsCiAgICAgICAgICAgICAgICByZWdpc3RlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fcGx1Z2luczsKICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQoZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAtMSA9PT0gdC5pbmRleE9mKGUpICYmIHQucHVzaChlKQogICAgICAgICAgICAgICAgICAgIH0pKSwgdGhpcy5fY2FjaGVJZCsrCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5yZWdpc3RlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fcGx1Z2luczsKICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQoZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuaW5kZXhPZihlKTsgLSAxICE9PSBuICYmIHQuc3BsaWNlKG4sIDEpCiAgICAgICAgICAgICAgICAgICAgfSkpLCB0aGlzLl9jYWNoZUlkKysKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGx1Z2lucyA9IFtdLCB0aGlzLl9jYWNoZUlkKysKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BsdWdpbnMubGVuZ3RoCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGx1Z2lucwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG5vdGlmeTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsID0gdGhpcy5kZXNjcmlwdG9ycyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjOyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZihzID0gKG8gPSAociA9IGxbaV0pLnBsdWdpbilbdF0pICYmICgoYSA9IFtlXS5jb25jYXQobiB8fCBbXSkpLnB1c2goci5vcHRpb25zKSwgITEgPT09IHMuYXBwbHkobywgYSkpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGVzY3JpcHRvcnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuJHBsdWdpbnMgfHwgKGUuJHBsdWdpbnMgPSB7fSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuaWQgPT09IHRoaXMuX2NhY2hlSWQpIHJldHVybiB0LmRlc2NyaXB0b3JzOwogICAgICAgICAgICAgICAgICAgIHZhciBuID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUgJiYgZS5jb25maWcgfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLm9wdGlvbnMgJiYgci5vcHRpb25zLnBsdWdpbnMgfHwge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BsdWdpbnMuY29uY2F0KHIucGx1Z2lucyB8fCBbXSkuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT09IG4uaW5kZXhPZihlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgITEgIT09IHIgJiYgKCEwID09PSByICYmIChyID0gQi5jbG9uZShGLmdsb2JhbC5wbHVnaW5zW3RdKSksIG4ucHVzaChlKSwgaS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW46IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogciB8fCB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSksIHQuZGVzY3JpcHRvcnMgPSBpLCB0LmlkID0gdGhpcy5fY2FjaGVJZCwgaQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9pbnZhbGlkYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGUuJHBsdWdpbnMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXQgPSB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnM6IHt9LAogICAgICAgICAgICAgICAgZGVmYXVsdHM6IHt9LAogICAgICAgICAgICAgICAgcmVnaXN0ZXJTY2FsZVR5cGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yc1tlXSA9IHQsIHRoaXMuZGVmYXVsdHNbZV0gPSBCLmNsb25lKG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0U2NhbGVDb25zdHJ1Y3RvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9ycy5oYXNPd25Qcm9wZXJ0eShlKSA/IHRoaXMuY29uc3RydWN0b3JzW2VdIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0U2NhbGVEZWZhdWx0czogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRzLmhhc093blByb3BlcnR5KGUpID8gQi5tZXJnZShPYmplY3QuY3JlYXRlKG51bGwpLCBbRi5zY2FsZSwgdGhpcy5kZWZhdWx0c1tlXV0pIDoge30KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1cGRhdGVTY2FsZURlZmF1bHRzOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eShlKSAmJiAodGhpcy5kZWZhdWx0c1tlXSA9IEIuZXh0ZW5kKHRoaXMuZGVmYXVsdHNbZV0sIHQpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZFNjYWxlc1RvTGF5b3V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgQi5lYWNoKGUuc2NhbGVzLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZ1bGxXaWR0aCA9IHQub3B0aW9ucy5mdWxsV2lkdGgsIHQucG9zaXRpb24gPSB0Lm9wdGlvbnMucG9zaXRpb24sIHQud2VpZ2h0ID0gdC5vcHRpb25zLndlaWdodCwgZHQuYWRkQm94KGUsIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIER0ID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgT3QgPSBCLnJ0bC5nZXRSdGxBZGFwdGVyOwogICAgICAgIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICB0b29sdGlwczogewogICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICBjdXN0b206IG51bGwsCiAgICAgICAgICAgICAgICBtb2RlOiAibmVhcmVzdCIsCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImF2ZXJhZ2UiLAogICAgICAgICAgICAgICAgaW50ZXJzZWN0OiAhMCwKICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogInJnYmEoMCwwLDAsMC44KSIsCiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTdHlsZTogImJvbGQiLAogICAgICAgICAgICAgICAgdGl0bGVTcGFjaW5nOiAyLAogICAgICAgICAgICAgICAgdGl0bGVNYXJnaW5Cb3R0b206IDYsCiAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgdGl0bGVBbGlnbjogImxlZnQiLAogICAgICAgICAgICAgICAgYm9keVNwYWNpbmc6IDIsCiAgICAgICAgICAgICAgICBib2R5Rm9udENvbG9yOiAiI2ZmZiIsCiAgICAgICAgICAgICAgICBib2R5QWxpZ246ICJsZWZ0IiwKICAgICAgICAgICAgICAgIGZvb3RlckZvbnRTdHlsZTogImJvbGQiLAogICAgICAgICAgICAgICAgZm9vdGVyU3BhY2luZzogMiwKICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogNiwKICAgICAgICAgICAgICAgIGZvb3RlckZvbnRDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgZm9vdGVyQWxpZ246ICJsZWZ0IiwKICAgICAgICAgICAgICAgIHlQYWRkaW5nOiA2LAogICAgICAgICAgICAgICAgeFBhZGRpbmc6IDYsCiAgICAgICAgICAgICAgICBjYXJldFBhZGRpbmc6IDIsCiAgICAgICAgICAgICAgICBjYXJldFNpemU6IDUsCiAgICAgICAgICAgICAgICBjb3JuZXJSYWRpdXM6IDYsCiAgICAgICAgICAgICAgICBtdWx0aUtleUJhY2tncm91bmQ6ICIjZmZmIiwKICAgICAgICAgICAgICAgIGRpc3BsYXlDb2xvcnM6ICEwLAogICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICJyZ2JhKDAsMCwwLDApIiwKICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAwLAogICAgICAgICAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgYmVmb3JlVGl0bGU6IEIubm9vcCwKICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQubGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkgPyBpLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gZVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8ubGFiZWwgPyBuID0gby5sYWJlbCA6IG8ueExhYmVsID8gbiA9IG8ueExhYmVsIDogciA+IDAgJiYgby5pbmRleCA8IHIgJiYgKG4gPSBpW28uaW5kZXhdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhZnRlclRpdGxlOiBCLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlQm9keTogQi5ub29wLAogICAgICAgICAgICAgICAgICAgIGJlZm9yZUxhYmVsOiBCLm5vb3AsCiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XS5sYWJlbCB8fCAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gJiYgKG4gKz0gIjogIiksIEIuaXNOdWxsT3JVbmRlZihlLnZhbHVlKSA/IG4gKz0gZS55TGFiZWwgOiBuICs9IGUudmFsdWUsIG4KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxhYmVsQ29sb3I6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB0LmdldERhdGFzZXRNZXRhKGUuZGF0YXNldEluZGV4KS5kYXRhW2UuaW5kZXhdLl92aWV3OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IG4uYm9yZGVyQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG4uYmFja2dyb3VuZENvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dENvbG9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuYm9keUZvbnRDb2xvcgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJMYWJlbDogQi5ub29wLAogICAgICAgICAgICAgICAgICAgIGFmdGVyQm9keTogQi5ub29wLAogICAgICAgICAgICAgICAgICAgIGJlZm9yZUZvb3RlcjogQi5ub29wLAogICAgICAgICAgICAgICAgICAgIGZvb3RlcjogQi5ub29wLAogICAgICAgICAgICAgICAgICAgIGFmdGVyRm9vdGVyOiBCLm5vb3AKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHZhciBNdCA9IHsKICAgICAgICAgICAgYXZlcmFnZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKCFlLmxlbmd0aCkgcmV0dXJuICExOwogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSAwLAogICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IGUubGVuZ3RoOyB0IDwgbjsgKyt0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBlW3RdOwogICAgICAgICAgICAgICAgICAgIGlmIChhICYmIGEuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGEudG9vbHRpcFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gcy54LCByICs9IHMueSwgKytvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB4OiBpIC8gbywKICAgICAgICAgICAgICAgICAgICB5OiByIC8gbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBuZWFyZXN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciwgbyA9IHQueCwKICAgICAgICAgICAgICAgICAgICBhID0gdC55LAogICAgICAgICAgICAgICAgICAgIHMgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7CiAgICAgICAgICAgICAgICBmb3IgKG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyArK24pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGVbbl07CiAgICAgICAgICAgICAgICAgICAgaWYgKGwgJiYgbC5oYXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gbC5nZXRDZW50ZXJQb2ludCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IEIuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKHQsIGMpOwogICAgICAgICAgICAgICAgICAgICAgICB1IDwgcyAmJiAocyA9IHUsIHIgPSBsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSByLnRvb2x0aXBQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgICAgIG8gPSBkLngsIGEgPSBkLnkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgeDogbywKICAgICAgICAgICAgICAgICAgICB5OiBhCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBJdChlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0ICYmIChCLmlzQXJyYXkodCkgPyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLCB0KSA6IGUucHVzaCh0KSksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEx0KGUpIHsKICAgICAgICAgICAgcmV0dXJuICgic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCBlIGluc3RhbmNlb2YgU3RyaW5nKSAmJiBlLmluZGV4T2YoIlxuIikgPiAtMSA/IGUuc3BsaXQoIlxuIikgOiBlCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBQdChlKSB7CiAgICAgICAgICAgIHZhciB0ID0gRi5nbG9iYWw7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB4UGFkZGluZzogZS54UGFkZGluZywKICAgICAgICAgICAgICAgIHlQYWRkaW5nOiBlLnlQYWRkaW5nLAogICAgICAgICAgICAgICAgeEFsaWduOiBlLnhBbGlnbiwKICAgICAgICAgICAgICAgIHlBbGlnbjogZS55QWxpZ24sCiAgICAgICAgICAgICAgICBydGw6IGUucnRsLAogICAgICAgICAgICAgICAgdGV4dERpcmVjdGlvbjogZS50ZXh0RGlyZWN0aW9uLAogICAgICAgICAgICAgICAgYm9keUZvbnRDb2xvcjogZS5ib2R5Rm9udENvbG9yLAogICAgICAgICAgICAgICAgX2JvZHlGb250RmFtaWx5OiBEdChlLmJvZHlGb250RmFtaWx5LCB0LmRlZmF1bHRGb250RmFtaWx5KSwKICAgICAgICAgICAgICAgIF9ib2R5Rm9udFN0eWxlOiBEdChlLmJvZHlGb250U3R5bGUsIHQuZGVmYXVsdEZvbnRTdHlsZSksCiAgICAgICAgICAgICAgICBfYm9keUFsaWduOiBlLmJvZHlBbGlnbiwKICAgICAgICAgICAgICAgIGJvZHlGb250U2l6ZTogRHQoZS5ib2R5Rm9udFNpemUsIHQuZGVmYXVsdEZvbnRTaXplKSwKICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiBlLmJvZHlTcGFjaW5nLAogICAgICAgICAgICAgICAgdGl0bGVGb250Q29sb3I6IGUudGl0bGVGb250Q29sb3IsCiAgICAgICAgICAgICAgICBfdGl0bGVGb250RmFtaWx5OiBEdChlLnRpdGxlRm9udEZhbWlseSwgdC5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICBfdGl0bGVGb250U3R5bGU6IER0KGUudGl0bGVGb250U3R5bGUsIHQuZGVmYXVsdEZvbnRTdHlsZSksCiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplOiBEdChlLnRpdGxlRm9udFNpemUsIHQuZGVmYXVsdEZvbnRTaXplKSwKICAgICAgICAgICAgICAgIF90aXRsZUFsaWduOiBlLnRpdGxlQWxpZ24sCiAgICAgICAgICAgICAgICB0aXRsZVNwYWNpbmc6IGUudGl0bGVTcGFjaW5nLAogICAgICAgICAgICAgICAgdGl0bGVNYXJnaW5Cb3R0b206IGUudGl0bGVNYXJnaW5Cb3R0b20sCiAgICAgICAgICAgICAgICBmb290ZXJGb250Q29sb3I6IGUuZm9vdGVyRm9udENvbG9yLAogICAgICAgICAgICAgICAgX2Zvb3RlckZvbnRGYW1pbHk6IER0KGUuZm9vdGVyRm9udEZhbWlseSwgdC5kZWZhdWx0Rm9udEZhbWlseSksCiAgICAgICAgICAgICAgICBfZm9vdGVyRm9udFN0eWxlOiBEdChlLmZvb3RlckZvbnRTdHlsZSwgdC5kZWZhdWx0Rm9udFN0eWxlKSwKICAgICAgICAgICAgICAgIGZvb3RlckZvbnRTaXplOiBEdChlLmZvb3RlckZvbnRTaXplLCB0LmRlZmF1bHRGb250U2l6ZSksCiAgICAgICAgICAgICAgICBfZm9vdGVyQWxpZ246IGUuZm9vdGVyQWxpZ24sCiAgICAgICAgICAgICAgICBmb290ZXJTcGFjaW5nOiBlLmZvb3RlclNwYWNpbmcsCiAgICAgICAgICAgICAgICBmb290ZXJNYXJnaW5Ub3A6IGUuZm9vdGVyTWFyZ2luVG9wLAogICAgICAgICAgICAgICAgY2FyZXRTaXplOiBlLmNhcmV0U2l6ZSwKICAgICAgICAgICAgICAgIGNvcm5lclJhZGl1czogZS5jb3JuZXJSYWRpdXMsCiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgIGxlZ2VuZENvbG9yQmFja2dyb3VuZDogZS5tdWx0aUtleUJhY2tncm91bmQsCiAgICAgICAgICAgICAgICBkaXNwbGF5Q29sb3JzOiBlLmRpc3BsYXlDb2xvcnMsCiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogZS5ib3JkZXJDb2xvciwKICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBlLmJvcmRlcldpZHRoCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGp0KGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuICJjZW50ZXIiID09PSB0ID8gZS54ICsgZS53aWR0aCAvIDIgOiAicmlnaHQiID09PSB0ID8gZS54ICsgZS53aWR0aCAtIGUueFBhZGRpbmcgOiBlLnggKyBlLnhQYWRkaW5nCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOdChlKSB7CiAgICAgICAgICAgIHJldHVybiBJdChbXSwgTHQoZSkpCiAgICAgICAgfQogICAgICAgIHZhciBGdCA9IFguZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsID0gUHQodGhpcy5fb3B0aW9ucyksIHRoaXMuX2xhc3RBY3RpdmUgPSBbXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFRpdGxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5jYWxsYmFja3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLmJlZm9yZVRpdGxlLmFwcGx5KGUsIGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuLnRpdGxlLmFwcGx5KGUsIGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuLmFmdGVyVGl0bGUuYXBwbHkoZSwgYXJndW1lbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhID0gSXQoYSwgTHQoaSkpLCBhID0gSXQoYSwgTHQocikpLCBJdChhLCBMdChvKSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRCZWZvcmVCb2R5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQodGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYmVmb3JlQm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEJvZHk6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLl9vcHRpb25zLmNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBCLmVhY2goZSwgKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6IFtdCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIEl0KG8uYmVmb3JlLCBMdChpLmJlZm9yZUxhYmVsLmNhbGwobiwgZSwgdCkpKSwgSXQoby5saW5lcywgaS5sYWJlbC5jYWxsKG4sIGUsIHQpKSwgSXQoby5hZnRlciwgTHQoaS5hZnRlckxhYmVsLmNhbGwobiwgZSwgdCkpKSwgci5wdXNoKG8pCiAgICAgICAgICAgICAgICAgICAgfSkpLCByCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QWZ0ZXJCb2R5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnQodGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXJCb2R5LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0Rm9vdGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLl9vcHRpb25zLmNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuYmVmb3JlRm9vdGVyLmFwcGx5KGUsIGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0LmZvb3Rlci5hcHBseShlLCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdC5hZnRlckZvb3Rlci5hcHBseShlLCBhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gW107CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gPSBJdChvLCBMdChuKSksIG8gPSBJdChvLCBMdChpKSksIEl0KG8sIEx0KHIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByLCBvLCBhLCBzLCBsLCBjLCB1LCBkID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGQuX29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBkLl9tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQuX21vZGVsID0gUHQoaCksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkLl9hY3RpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBkLl9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeEFsaWduOiBmLnhBbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlBbGlnbjogZi55QWxpZ24KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGYueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGYueQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBiID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGYud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGYuaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBmLmNhcmV0WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGYuY2FyZXRZCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKGcubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAub3BhY2l0eSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBNdFtoLnBvc2l0aW9uXS5jYWxsKGQsIGcsIGQuX2V2ZW50UG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgUyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gZy5sZW5ndGg7IHQgPCBuOyArK3QpIFMucHVzaCgociA9IHZvaWQgMCwgbyA9IHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGwgPSB2b2lkIDAsIGMgPSB2b2lkIDAsIHUgPSB2b2lkIDAsIHIgPSAoaSA9IGdbdF0pLl94U2NhbGUsIG8gPSBpLl95U2NhbGUgfHwgaS5fc2NhbGUsIGEgPSBpLl9pbmRleCwgcyA9IGkuX2RhdGFzZXRJbmRleCwgYyA9IChsID0gaS5fY2hhcnQuZ2V0RGF0YXNldE1ldGEocykuY29udHJvbGxlcikuX2dldEluZGV4U2NhbGUoKSwgdSA9IGwuX2dldFZhbHVlU2NhbGUoKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeExhYmVsOiByID8gci5nZXRMYWJlbEZvckluZGV4KGEsIHMpIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5TGFiZWw6IG8gPyBvLmdldExhYmVsRm9ySW5kZXgoYSwgcykgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjID8gIiIgKyBjLmdldExhYmVsRm9ySW5kZXgoYSwgcykgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1ID8gIiIgKyB1LmdldExhYmVsRm9ySW5kZXgoYSwgcykgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldEluZGV4OiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaS5fbW9kZWwueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGkuX21vZGVsLnkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICBoLmZpbHRlciAmJiAoUyA9IFMuZmlsdGVyKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaC5maWx0ZXIoZSwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgaC5pdGVtU29ydCAmJiAoUyA9IFMuc29ydCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGguaXRlbVNvcnQoZSwgdCwgbSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSwgQi5lYWNoKFMsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnB1c2goaC5jYWxsYmFja3MubGFiZWxDb2xvci5jYWxsKGQsIGUsIGQuX2NoYXJ0KSksIF8ucHVzaChoLmNhbGxiYWNrcy5sYWJlbFRleHRDb2xvci5jYWxsKGQsIGUsIGQuX2NoYXJ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBwLnRpdGxlID0gZC5nZXRUaXRsZShTLCBtKSwgcC5iZWZvcmVCb2R5ID0gZC5nZXRCZWZvcmVCb2R5KFMsIG0pLCBwLmJvZHkgPSBkLmdldEJvZHkoUywgbSksIHAuYWZ0ZXJCb2R5ID0gZC5nZXRBZnRlckJvZHkoUywgbSksIHAuZm9vdGVyID0gZC5nZXRGb290ZXIoUywgbSksIHAueCA9IHcueCwgcC55ID0gdy55LCBwLmNhcmV0UGFkZGluZyA9IGguY2FyZXRQYWRkaW5nLCBwLmxhYmVsQ29sb3JzID0geCwgcC5sYWJlbFRleHRDb2xvcnMgPSBfLCBwLmRhdGFQb2ludHMgPSBTLCB5ID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBlLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5jYXJldFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuY2FyZXRQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLmNvcm5lclJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbi54QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4ueUFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBhICsgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbCArIHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJpZ2h0IiA9PT0gYyA/IHIgLT0gdC53aWR0aCA6ICJjZW50ZXIiID09PSBjICYmICgociAtPSB0LndpZHRoIC8gMikgKyB0LndpZHRoID4gaS53aWR0aCAmJiAociA9IGkud2lkdGggLSB0LndpZHRoKSwgciA8IDAgJiYgKHIgPSAwKSksICJ0b3AiID09PSB1ID8gbyArPSBkIDogbyAtPSAiYm90dG9tIiA9PT0gdSA/IHQuaGVpZ2h0ICsgZCA6IHQuaGVpZ2h0IC8gMiwgImNlbnRlciIgPT09IHUgPyAibGVmdCIgPT09IGMgPyByICs9IGQgOiAicmlnaHQiID09PSBjICYmIChyIC09IGQpIDogImxlZnQiID09PSBjID8gciAtPSBoIDogInJpZ2h0IiA9PT0gYyAmJiAociArPSBoKSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KHAsIGIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGUuX2NoYXJ0LmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMiAqIHQueVBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHQuYm9keSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gby5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyB0LmJlZm9yZS5sZW5ndGggKyB0LmxpbmVzLmxlbmd0aCArIHQuYWZ0ZXIubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSArPSB0LmJlZm9yZUJvZHkubGVuZ3RoICsgdC5hZnRlckJvZHkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0LnRpdGxlLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdC5mb290ZXIubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LnRpdGxlRm9udFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHQuYm9keUZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB0LmZvb3RlckZvbnRTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSBzICogYywgaSArPSBzID8gKHMgLSAxKSAqIHQudGl0bGVTcGFjaW5nIDogMCwgaSArPSBzID8gdC50aXRsZU1hcmdpbkJvdHRvbSA6IDAsIGkgKz0gYSAqIHUsIGkgKz0gYSA/IChhIC0gMSkgKiB0LmJvZHlTcGFjaW5nIDogMCwgaSArPSBsID8gdC5mb290ZXJNYXJnaW5Ub3AgOiAwLCBpICs9IGwgKiBkLCBpICs9IGwgPyAobCAtIDEpICogdC5mb290ZXJTcGFjaW5nIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgociwgbi5tZWFzdXJlVGV4dChlKS53aWR0aCArIGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmZvbnQgPSBCLmZvbnRTdHJpbmcoYywgdC5fdGl0bGVGb250U3R5bGUsIHQuX3RpdGxlRm9udEZhbWlseSksIEIuZWFjaCh0LnRpdGxlLCBmKSwgbi5mb250ID0gQi5mb250U3RyaW5nKHUsIHQuX2JvZHlGb250U3R5bGUsIHQuX2JvZHlGb250RmFtaWx5KSwgQi5lYWNoKHQuYmVmb3JlQm9keS5jb25jYXQodC5hZnRlckJvZHkpLCBmKSwgaCA9IHQuZGlzcGxheUNvbG9ycyA/IHUgKyAyIDogMCwgQi5lYWNoKG8sIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQi5lYWNoKGUuYmVmb3JlLCBmKSwgQi5lYWNoKGUubGluZXMsIGYpLCBCLmVhY2goZS5hZnRlciwgZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgaCA9IDAsIG4uZm9udCA9IEIuZm9udFN0cmluZyhkLCB0Ll9mb290ZXJGb250U3R5bGUsIHQuX2Zvb3RlckZvbnRGYW1pbHkpLCBCLmVhY2godC5mb290ZXIsIGYpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIgKz0gMiAqIHQueFBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgcCksIHYgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciwgbywgYSwgcyA9IGUuX21vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlLl9jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZS5fY2hhcnQuY2hhcnRBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAiY2VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gImNlbnRlciI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnkgPCB0LmhlaWdodCA/IGQgPSAidG9wIiA6IHMueSA+IGwuaGVpZ2h0IC0gdC5oZWlnaHQgJiYgKGQgPSAiYm90dG9tIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IChjLmxlZnQgKyBjLnJpZ2h0KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IChjLnRvcCArIGMuYm90dG9tKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2VudGVyIiA9PT0gZCA/IChuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDw9IGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPiBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IChuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDw9IHQud2lkdGggLyAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlID49IGwud2lkdGggLSB0LndpZHRoIC8gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgKyB0LndpZHRoICsgcy5jYXJldFNpemUgKyBzLmNhcmV0UGFkZGluZyA+IGwud2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgLSB0LndpZHRoIC0gcy5jYXJldFNpemUgLSBzLmNhcmV0UGFkZGluZyA8IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPD0gZiA/ICJ0b3AiIDogImJvdHRvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG4ocy54KSA/ICh1ID0gImxlZnQiLCByKHMueCkgJiYgKHUgPSAiY2VudGVyIiwgZCA9IGEocy55KSkpIDogaShzLngpICYmICh1ID0gInJpZ2h0IiwgbyhzLngpICYmICh1ID0gImNlbnRlciIsIGQgPSBhKHMueSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gZS5fb3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEFsaWduOiBwLnhBbGlnbiA/IHAueEFsaWduIDogdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5QWxpZ246IHAueUFsaWduID8gcC55QWxpZ24gOiBkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0odGhpcywgYiksIGQuX2NoYXJ0KQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBwLm9wYWNpdHkgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwLnhBbGlnbiA9IHYueEFsaWduLCBwLnlBbGlnbiA9IHYueUFsaWduLCBwLnggPSB5LngsIHAueSA9IHkueSwgcC53aWR0aCA9IGIud2lkdGgsIHAuaGVpZ2h0ID0gYi5oZWlnaHQsIHAuY2FyZXRYID0gdy54LCBwLmNhcmV0WSA9IHcueSwgZC5fbW9kZWwgPSBwLCBlICYmIGguY3VzdG9tICYmIGguY3VzdG9tLmNhbGwoZCwgcCksIGQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3Q2FyZXQ6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuX2NoYXJ0LmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMuX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLmdldENhcmV0UG9zaXRpb24oZSwgdCwgaSk7CiAgICAgICAgICAgICAgICAgICAgbi5saW5lVG8oci54MSwgci55MSksIG4ubGluZVRvKHIueDIsIHIueTIpLCBuLmxpbmVUbyhyLngzLCByLnkzKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldENhcmV0UG9zaXRpb246IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSwgcywgbCwgYyA9IG4uY2FyZXRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gbi5jb3JuZXJSYWRpdXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBuLnhBbGlnbiwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG4ueUFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gZS54LAogICAgICAgICAgICAgICAgICAgICAgICBwID0gZS55LAogICAgICAgICAgICAgICAgICAgICAgICBnID0gdC53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIGlmICgiY2VudGVyIiA9PT0gaCkgcyA9IHAgKyBtIC8gMiwgImxlZnQiID09PSBkID8gKHIgPSAoaSA9IGYpIC0gYywgbyA9IGksIGEgPSBzICsgYywgbCA9IHMgLSBjKSA6IChyID0gKGkgPSBmICsgZykgKyBjLCBvID0gaSwgYSA9IHMgLSBjLCBsID0gcyArIGMpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJsZWZ0IiA9PT0gZCA/IChpID0gKHIgPSBmICsgdSArIGMpIC0gYywgbyA9IHIgKyBjKSA6ICJyaWdodCIgPT09IGQgPyAoaSA9IChyID0gZiArIGcgLSB1IC0gYykgLSBjLCBvID0gciArIGMpIDogKGkgPSAociA9IG4uY2FyZXRYKSAtIGMsIG8gPSByICsgYyksICJ0b3AiID09PSBoKSBzID0gKGEgPSBwKSAtIGMsIGwgPSBhOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzID0gKGEgPSBwICsgbSkgKyBjLCBsID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gaSwgaSA9IHYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDE6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIHgyOiByLAogICAgICAgICAgICAgICAgICAgICAgICB4MzogbywKICAgICAgICAgICAgICAgICAgICAgICAgeTE6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHkyOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB5MzogbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3VGl0bGU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSA9IHQudGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IE90KHQucnRsLCB0LngsIHQud2lkdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUueCA9IGp0KHQsIHQuX3RpdGxlQWxpZ24pLCBuLnRleHRBbGlnbiA9IGwudGV4dEFsaWduKHQuX3RpdGxlQWxpZ24pLCBuLnRleHRCYXNlbGluZSA9ICJtaWRkbGUiLCBpID0gdC50aXRsZUZvbnRTaXplLCByID0gdC50aXRsZVNwYWNpbmcsIG4uZmlsbFN0eWxlID0gdC50aXRsZUZvbnRDb2xvciwgbi5mb250ID0gQi5mb250U3RyaW5nKGksIHQuX3RpdGxlRm9udFN0eWxlLCB0Ll90aXRsZUZvbnRGYW1pbHkpLCBvID0gMDsgbyA8IHM7ICsrbykgbi5maWxsVGV4dChhW29dLCBsLngoZS54KSwgZS55ICsgaSAvIDIpLCBlLnkgKz0gaSArIHIsIG8gKyAxID09PSBzICYmIChlLnkgKz0gdC50aXRsZU1hcmdpbkJvdHRvbSAtIHIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRyYXdCb2R5OiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwsIGMsIHUsIGQgPSB0LmJvZHlGb250U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHQuYm9keVNwYWNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB0Ll9ib2R5QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0LmJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSB0LmRpc3BsYXlDb2xvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gZyA/IGp0KHQsICJsZWZ0IikgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB5ID0gT3QodC5ydGwsIHQueCwgdC53aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmZpbGxUZXh0KHQsIHkueChlLnggKyBtKSwgZS55ICsgZCAvIDIpLCBlLnkgKz0gZCArIGgKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHkudGV4dEFsaWduKGYpOwogICAgICAgICAgICAgICAgICAgIGZvciAobi50ZXh0QWxpZ24gPSBmLCBuLnRleHRCYXNlbGluZSA9ICJtaWRkbGUiLCBuLmZvbnQgPSBCLmZvbnRTdHJpbmcoZCwgdC5fYm9keUZvbnRTdHlsZSwgdC5fYm9keUZvbnRGYW1pbHkpLCBlLnggPSBqdCh0LCB3KSwgbi5maWxsU3R5bGUgPSB0LmJvZHlGb250Q29sb3IsIEIuZWFjaCh0LmJlZm9yZUJvZHksIGIpLCBtID0gZyAmJiAicmlnaHQiICE9PSB3ID8gImNlbnRlciIgPT09IGYgPyBkIC8gMiArIDEgOiBkICsgMiA6IDAsIHMgPSAwLCBjID0gcC5sZW5ndGg7IHMgPCBjOyArK3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gcFtzXSwgciA9IHQubGFiZWxUZXh0Q29sb3JzW3NdLCBvID0gdC5sYWJlbENvbG9yc1tzXSwgbi5maWxsU3R5bGUgPSByLCBCLmVhY2goaS5iZWZvcmUsIGIpLCBsID0gMCwgdSA9IChhID0gaS5saW5lcykubGVuZ3RoOyBsIDwgdTsgKytsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0geS54KHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uZmlsbFN0eWxlID0gdC5sZWdlbmRDb2xvckJhY2tncm91bmQsIG4uZmlsbFJlY3QoeS5sZWZ0Rm9yTHRyKHgsIGQpLCBlLnksIGQsIGQpLCBuLmxpbmVXaWR0aCA9IDEsIG4uc3Ryb2tlU3R5bGUgPSBvLmJvcmRlckNvbG9yLCBuLnN0cm9rZVJlY3QoeS5sZWZ0Rm9yTHRyKHgsIGQpLCBlLnksIGQsIGQpLCBuLmZpbGxTdHlsZSA9IG8uYmFja2dyb3VuZENvbG9yLCBuLmZpbGxSZWN0KHkubGVmdEZvckx0cih5LnhQbHVzKHgsIDEpLCBkIC0gMiksIGUueSArIDEsIGQgLSAyLCBkIC0gMiksIG4uZmlsbFN0eWxlID0gcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYihhW2xdKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEIuZWFjaChpLmFmdGVyLCBiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBtID0gMCwgQi5lYWNoKHQuYWZ0ZXJCb2R5LCBiKSwgZS55IC09IGgKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkcmF3Rm9vdGVyOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGksIHIsIG8gPSB0LmZvb3RlciwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8ubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gT3QodC5ydGwsIHQueCwgdC53aWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZS54ID0ganQodCwgdC5fZm9vdGVyQWxpZ24pLCBlLnkgKz0gdC5mb290ZXJNYXJnaW5Ub3AsIG4udGV4dEFsaWduID0gcy50ZXh0QWxpZ24odC5fZm9vdGVyQWxpZ24pLCBuLnRleHRCYXNlbGluZSA9ICJtaWRkbGUiLCBpID0gdC5mb290ZXJGb250U2l6ZSwgbi5maWxsU3R5bGUgPSB0LmZvb3RlckZvbnRDb2xvciwgbi5mb250ID0gQi5mb250U3RyaW5nKGksIHQuX2Zvb3RlckZvbnRTdHlsZSwgdC5fZm9vdGVyRm9udEZhbWlseSksIHIgPSAwOyByIDwgYTsgKytyKSBuLmZpbGxUZXh0KG9bcl0sIHMueChlLngpLCBlLnkgKyBpIC8gMiksIGUueSArPSBpICsgdC5mb290ZXJTcGFjaW5nCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRyYXdCYWNrZ3JvdW5kOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgbi5maWxsU3R5bGUgPSB0LmJhY2tncm91bmRDb2xvciwgbi5zdHJva2VTdHlsZSA9IHQuYm9yZGVyQ29sb3IsIG4ubGluZVdpZHRoID0gdC5ib3JkZXJXaWR0aDsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHQueEFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdC55QWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLnksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBpLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gaS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0LmNvcm5lclJhZGl1czsKICAgICAgICAgICAgICAgICAgICBuLmJlZ2luUGF0aCgpLCBuLm1vdmVUbyhhICsgdSwgcyksICJ0b3AiID09PSBvICYmIHRoaXMuZHJhd0NhcmV0KGUsIGkpLCBuLmxpbmVUbyhhICsgbCAtIHUsIHMpLCBuLnF1YWRyYXRpY0N1cnZlVG8oYSArIGwsIHMsIGEgKyBsLCBzICsgdSksICJjZW50ZXIiID09PSBvICYmICJyaWdodCIgPT09IHIgJiYgdGhpcy5kcmF3Q2FyZXQoZSwgaSksIG4ubGluZVRvKGEgKyBsLCBzICsgYyAtIHUpLCBuLnF1YWRyYXRpY0N1cnZlVG8oYSArIGwsIHMgKyBjLCBhICsgbCAtIHUsIHMgKyBjKSwgImJvdHRvbSIgPT09IG8gJiYgdGhpcy5kcmF3Q2FyZXQoZSwgaSksIG4ubGluZVRvKGEgKyB1LCBzICsgYyksIG4ucXVhZHJhdGljQ3VydmVUbyhhLCBzICsgYywgYSwgcyArIGMgLSB1KSwgImNlbnRlciIgPT09IG8gJiYgImxlZnQiID09PSByICYmIHRoaXMuZHJhd0NhcmV0KGUsIGkpLCBuLmxpbmVUbyhhLCBzICsgdSksIG4ucXVhZHJhdGljQ3VydmVUbyhhLCBzLCBhICsgdSwgcyksIG4uY2xvc2VQYXRoKCksIG4uZmlsbCgpLCB0LmJvcmRlcldpZHRoID4gMCAmJiBuLnN0cm9rZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZHJhdzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9jaGFydC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLl92aWV3OwogICAgICAgICAgICAgICAgICAgIGlmICgwICE9PSB0Lm9wYWNpdHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0LmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogdC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBNYXRoLmFicyh0Lm9wYWNpdHkgPCAuMDAxKSA/IDAgOiB0Lm9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdC50aXRsZS5sZW5ndGggfHwgdC5iZWZvcmVCb2R5Lmxlbmd0aCB8fCB0LmJvZHkubGVuZ3RoIHx8IHQuYWZ0ZXJCb2R5Lmxlbmd0aCB8fCB0LmZvb3Rlci5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMuZW5hYmxlZCAmJiBvICYmIChlLnNhdmUoKSwgZS5nbG9iYWxBbHBoYSA9IHIsIHRoaXMuZHJhd0JhY2tncm91bmQoaSwgdCwgZSwgbiksIGkueSArPSB0LnlQYWRkaW5nLCBCLnJ0bC5vdmVycmlkZVRleHREaXJlY3Rpb24oZSwgdC50ZXh0RGlyZWN0aW9uKSwgdGhpcy5kcmF3VGl0bGUoaSwgdCwgZSksIHRoaXMuZHJhd0JvZHkoaSwgdCwgZSksIHRoaXMuZHJhd0Zvb3RlcihpLCB0LCBlKSwgQi5ydGwucmVzdG9yZVRleHREaXJlY3Rpb24oZSwgdC50ZXh0RGlyZWN0aW9uKSwgZS5yZXN0b3JlKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gbi5fb3B0aW9uczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbi5fbGFzdEFjdGl2ZSA9IG4uX2xhc3RBY3RpdmUgfHwgW10sICJtb3VzZW91dCIgPT09IGUudHlwZSA/IG4uX2FjdGl2ZSA9IFtdIDogKG4uX2FjdGl2ZSA9IG4uX2NoYXJ0LmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZSwgaS5tb2RlLCBpKSwgaS5yZXZlcnNlICYmIG4uX2FjdGl2ZS5yZXZlcnNlKCkpLCAodCA9ICFCLmFycmF5RXF1YWxzKG4uX2FjdGl2ZSwgbi5fbGFzdEFjdGl2ZSkpICYmIChuLl9sYXN0QWN0aXZlID0gbi5fYWN0aXZlLCAoaS5lbmFibGVkIHx8IGkuY3VzdG9tKSAmJiAobi5fZXZlbnRQb3NpdGlvbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogZS54LAogICAgICAgICAgICAgICAgICAgICAgICB5OiBlLnkKICAgICAgICAgICAgICAgICAgICB9LCBuLnVwZGF0ZSghMCksIG4ucGl2b3QoKSkpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBSdCA9IE10LAogICAgICAgICAgICAkdCA9IEZ0OwogICAgICAgICR0LnBvc2l0aW9uZXJzID0gUnQ7CiAgICAgICAgdmFyIHp0ID0gQi52YWx1ZU9yRGVmYXVsdDsKCiAgICAgICAgZnVuY3Rpb24gSHQoKSB7CiAgICAgICAgICAgIHJldHVybiBCLm1lcmdlKE9iamVjdC5jcmVhdGUobnVsbCksIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgewogICAgICAgICAgICAgICAgbWVyZ2VyOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJ4QXhlcyIgPT09IGUgfHwgInlBeGVzIiA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgYSwgcyA9IG5bZV0ubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHRbZV0gfHwgKHRbZV0gPSBbXSksIHIgPSAwOyByIDwgczsgKytyKSBhID0gbltlXVtyXSwgbyA9IHp0KGEudHlwZSwgInhBeGVzIiA9PT0gZSA/ICJjYXRlZ29yeSIgOiAibGluZWFyIiksIHIgPj0gdFtlXS5sZW5ndGggJiYgdFtlXS5wdXNoKHt9KSwgIXRbZV1bcl0udHlwZSB8fCBhLnR5cGUgJiYgYS50eXBlICE9PSB0W2VdW3JdLnR5cGUgPyBCLm1lcmdlKHRbZV1bcl0sIFtFdC5nZXRTY2FsZURlZmF1bHRzKG8pLCBhXSkgOiBCLm1lcmdlKHRbZV1bcl0sIGEpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIEIuX21lcmdlcihlLCB0LCBuLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQnQoKSB7CiAgICAgICAgICAgIHJldHVybiBCLm1lcmdlKE9iamVjdC5jcmVhdGUobnVsbCksIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSwgewogICAgICAgICAgICAgICAgbWVyZ2VyOiBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB0W2VdIHx8IE9iamVjdC5jcmVhdGUobnVsbCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuW2VdOwogICAgICAgICAgICAgICAgICAgICJzY2FsZXMiID09PSBlID8gdFtlXSA9IEh0KHIsIG8pIDogInNjYWxlIiA9PT0gZSA/IHRbZV0gPSBCLm1lcmdlKHIsIFtFdC5nZXRTY2FsZURlZmF1bHRzKG8udHlwZSksIG9dKSA6IEIuX21lcmdlcihlLCB0LCBuLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gV3QoZSkgewogICAgICAgICAgICB2YXIgdCA9IGUub3B0aW9uczsKICAgICAgICAgICAgQi5lYWNoKGUuc2NhbGVzLCAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgZHQucmVtb3ZlQm94KGUsIHQpCiAgICAgICAgICAgIH0pKSwgdCA9IEJ0KEYuZ2xvYmFsLCBGW2UuY29uZmlnLnR5cGVdLCB0KSwgZS5vcHRpb25zID0gZS5jb25maWcub3B0aW9ucyA9IHQsIGUuZW5zdXJlU2NhbGVzSGF2ZUlEcygpLCBlLmJ1aWxkT3JVcGRhdGVTY2FsZXMoKSwgZS50b29sdGlwLl9vcHRpb25zID0gdC50b29sdGlwcywgZS50b29sdGlwLmluaXRpYWxpemUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcXQoZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlLmlkID09PSBpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGkgPSB0ICsgbisrCiAgICAgICAgICAgIH0gd2hpbGUgKEIuZmluZEluZGV4KGUsIHIpID49IDApOwogICAgICAgICAgICByZXR1cm4gaQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVXQoZSkgewogICAgICAgICAgICByZXR1cm4gInRvcCIgPT09IGUgfHwgImJvdHRvbSIgPT09IGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFZ0KGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG4sIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuW2VdID09PSBpW2VdID8gblt0XSAtIGlbdF0gOiBuW2VdIC0gaVtlXQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICBlbGVtZW50czoge30sCiAgICAgICAgICAgIGV2ZW50czogWyJtb3VzZW1vdmUiLCAibW91c2VvdXQiLCAiY2xpY2siLCAidG91Y2hzdGFydCIsICJ0b3VjaG1vdmUiXSwKICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgIG9uSG92ZXI6IG51bGwsCiAgICAgICAgICAgICAgICBtb2RlOiAibmVhcmVzdCIsCiAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwLAogICAgICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246IDQwMAogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkNsaWNrOiBudWxsLAogICAgICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiAhMCwKICAgICAgICAgICAgcmVzcG9uc2l2ZTogITAsCiAgICAgICAgICAgIHJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbjogMAogICAgICAgIH0pOwogICAgICAgIHZhciBZdCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0KGUsIHQpLCB0aGlzCiAgICAgICAgfTsKICAgICAgICBCLmV4dGVuZChZdC5wcm90b3R5cGUsIHsKICAgICAgICAgICAgY29uc3RydWN0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXM7CiAgICAgICAgICAgICAgICB0ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKGUgPSBlIHx8IE9iamVjdC5jcmVhdGUobnVsbCkpLmRhdGEgPSBlLmRhdGEgfHwge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZGF0YXNldHMgPSB0LmRhdGFzZXRzIHx8IFtdLCB0LmxhYmVscyA9IHQubGFiZWxzIHx8IFtdLCBlLm9wdGlvbnMgPSBCdChGLmdsb2JhbCwgRltlLnR5cGVdLCBlLm9wdGlvbnMgfHwge30pLCBlCiAgICAgICAgICAgICAgICB9KHQpOwogICAgICAgICAgICAgICAgdmFyIGkgPSBUdC5hY3F1aXJlQ29udGV4dChlLCB0KSwKICAgICAgICAgICAgICAgICAgICByID0gaSAmJiBpLmNhbnZhcywKICAgICAgICAgICAgICAgICAgICBvID0gciAmJiByLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICBhID0gciAmJiByLndpZHRoOwogICAgICAgICAgICAgICAgbi5pZCA9IEIudWlkKCksIG4uY3R4ID0gaSwgbi5jYW52YXMgPSByLCBuLmNvbmZpZyA9IHQsIG4ud2lkdGggPSBhLCBuLmhlaWdodCA9IG8sIG4uYXNwZWN0UmF0aW8gPSBvID8gYSAvIG8gOiBudWxsLCBuLm9wdGlvbnMgPSB0Lm9wdGlvbnMsIG4uX2J1ZmZlcmVkUmVuZGVyID0gITEsIG4uX2xheWVycyA9IFtdLCBuLmNoYXJ0ID0gbiwgbi5jb250cm9sbGVyID0gbiwgWXQuaW5zdGFuY2VzW24uaWRdID0gbiwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sICJkYXRhIiwgewogICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuLmNvbmZpZy5kYXRhCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbi5jb25maWcuZGF0YSA9IGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgaSAmJiByID8gKG4uaW5pdGlhbGl6ZSgpLCBuLnVwZGF0ZSgpKSA6IGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgY2hhcnQ6IGNhbid0IGFjcXVpcmUgY29udGV4dCBmcm9tIHRoZSBnaXZlbiBpdGVtIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICByZXR1cm4gQXQubm90aWZ5KGUsICJiZWZvcmVJbml0IiksIEIucmV0aW5hU2NhbGUoZSwgZS5vcHRpb25zLmRldmljZVBpeGVsUmF0aW8pLCBlLmJpbmRFdmVudHMoKSwgZS5vcHRpb25zLnJlc3BvbnNpdmUgJiYgZS5yZXNpemUoITApLCBlLmluaXRUb29sVGlwKCksIEF0Lm5vdGlmeShlLCAiYWZ0ZXJJbml0IiksIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xlYXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEIuY2FudmFzLmNsZWFyKHRoaXMpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFEuY2FuY2VsQW5pbWF0aW9uKHRoaXMpLCB0aGlzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQuY2FudmFzLAogICAgICAgICAgICAgICAgICAgIHIgPSBuLm1haW50YWluQXNwZWN0UmF0aW8gJiYgdC5hc3BlY3RSYXRpbyB8fCBudWxsLAogICAgICAgICAgICAgICAgICAgIG8gPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKEIuZ2V0TWF4aW11bVdpZHRoKGkpKSksCiAgICAgICAgICAgICAgICAgICAgYSA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IociA/IG8gLyByIDogQi5nZXRNYXhpbXVtSGVpZ2h0KGkpKSk7CiAgICAgICAgICAgICAgICBpZiAoKHQud2lkdGggIT09IG8gfHwgdC5oZWlnaHQgIT09IGEpICYmIChpLndpZHRoID0gdC53aWR0aCA9IG8sIGkuaGVpZ2h0ID0gdC5oZWlnaHQgPSBhLCBpLnN0eWxlLndpZHRoID0gbyArICJweCIsIGkuc3R5bGUuaGVpZ2h0ID0gYSArICJweCIsIEIucmV0aW5hU2NhbGUodCwgbi5kZXZpY2VQaXhlbFJhdGlvKSwgIWUpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGEKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIEF0Lm5vdGlmeSh0LCAicmVzaXplIiwgW3NdKSwgbi5vblJlc2l6ZSAmJiBuLm9uUmVzaXplKHQsIHMpLCB0LnN0b3AoKSwgdC51cGRhdGUoewogICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogbi5yZXNwb25zaXZlQW5pbWF0aW9uRHVyYXRpb24KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBlbnN1cmVTY2FsZXNIYXZlSURzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLnNjYWxlcyB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBuID0gZS5zY2FsZTsKICAgICAgICAgICAgICAgIEIuZWFjaCh0LnhBeGVzLCAoZnVuY3Rpb24oZSwgbikgewogICAgICAgICAgICAgICAgICAgIGUuaWQgfHwgKGUuaWQgPSBxdCh0LnhBeGVzLCAieC1heGlzLSIsIG4pKQogICAgICAgICAgICAgICAgfSkpLCBCLmVhY2godC55QXhlcywgKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICBlLmlkIHx8IChlLmlkID0gcXQodC55QXhlcywgInktYXhpcy0iLCBuKSkKICAgICAgICAgICAgICAgIH0pKSwgbiAmJiAobi5pZCA9IG4uaWQgfHwgInNjYWxlIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnVpbGRPclVwZGF0ZVNjYWxlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBuID0gZS5zY2FsZXMgfHwge30sCiAgICAgICAgICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICAgICAgICAgIHIgPSBPYmplY3Qua2V5cyhuKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbdF0gPSAhMSwgZQogICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICB0LnNjYWxlcyAmJiAoaSA9IGkuY29uY2F0KCh0LnNjYWxlcy54QXhlcyB8fCBbXSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU6ICJjYXRlZ29yeSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRwb3NpdGlvbjogImJvdHRvbSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSksICh0LnNjYWxlcy55QXhlcyB8fCBbXSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICAgICBkcG9zaXRpb246ICJsZWZ0IgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKSkpLCB0LnNjYWxlICYmIGkucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdC5zY2FsZSwKICAgICAgICAgICAgICAgICAgICBkdHlwZTogInJhZGlhbExpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiAhMCwKICAgICAgICAgICAgICAgICAgICBkcG9zaXRpb246ICJjaGFydEFyZWEiCiAgICAgICAgICAgICAgICB9KSwgQi5lYWNoKGksIChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmlkLAogICAgICAgICAgICAgICAgICAgICAgICBhID0genQoaS50eXBlLCB0LmR0eXBlKTsKICAgICAgICAgICAgICAgICAgICBVdChpLnBvc2l0aW9uKSAhPT0gVXQodC5kcG9zaXRpb24pICYmIChpLnBvc2l0aW9uID0gdC5kcG9zaXRpb24pLCByW29dID0gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChvIGluIG4gJiYgbltvXS50eXBlID09PSBhKShzID0gbltvXSkub3B0aW9ucyA9IGksIHMuY3R4ID0gZS5jdHgsIHMuY2hhcnQgPSBlOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IEV0LmdldFNjYWxlQ29uc3RydWN0b3IoYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gbmV3IGwoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogZS5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogZQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgbltzLmlkXSA9IHMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcy5tZXJnZVRpY2tzT3B0aW9ucygpLCB0LmlzRGVmYXVsdCAmJiAoZS5zY2FsZSA9IHMpCiAgICAgICAgICAgICAgICB9KSksIEIuZWFjaChyLCAoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGUgfHwgZGVsZXRlIG5bdF0KICAgICAgICAgICAgICAgIH0pKSwgZS5zY2FsZXMgPSBuLCBFdC5hZGRTY2FsZXNUb0xheW91dCh0aGlzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBidWlsZE9yVXBkYXRlQ29udHJvbGxlcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGkgPSBbXSwKICAgICAgICAgICAgICAgICAgICByID0gbi5kYXRhLmRhdGFzZXRzOwogICAgICAgICAgICAgICAgZm9yIChlID0gMCwgdCA9IHIubGVuZ3RoOyBlIDwgdDsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSByW2VdLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbi5nZXREYXRhc2V0TWV0YShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG8udHlwZSB8fCBuLmNvbmZpZy50eXBlOwogICAgICAgICAgICAgICAgICAgIGlmIChhLnR5cGUgJiYgYS50eXBlICE9PSBzICYmIChuLmRlc3Ryb3lEYXRhc2V0TWV0YShlKSwgYSA9IG4uZ2V0RGF0YXNldE1ldGEoZSkpLCBhLnR5cGUgPSBzLCBhLm9yZGVyID0gby5vcmRlciB8fCAwLCBhLmluZGV4ID0gZSwgYS5jb250cm9sbGVyKSBhLmNvbnRyb2xsZXIudXBkYXRlSW5kZXgoZSksIGEuY29udHJvbGxlci5saW5rU2NhbGVzKCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gWGVbYS50eXBlXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gbCkgdGhyb3cgbmV3IEVycm9yKCciJyArIGEudHlwZSArICciIGlzIG5vdCBhIGNoYXJ0IHR5cGUuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEuY29udHJvbGxlciA9IG5ldyBsKG4sIGUpLCBpLnB1c2goYS5jb250cm9sbGVyKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlc2V0RWxlbWVudHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgQi5lYWNoKGUuZGF0YS5kYXRhc2V0cywgKGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICBlLmdldERhdGFzZXRNZXRhKG4pLmNvbnRyb2xsZXIucmVzZXQoKQogICAgICAgICAgICAgICAgfSksIGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMucmVzZXRFbGVtZW50cygpLCB0aGlzLnRvb2x0aXAuaW5pdGlhbGl6ZSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSB0aGlzOwogICAgICAgICAgICAgICAgaWYgKGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgKGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBlLAogICAgICAgICAgICAgICAgICAgICAgICBsYXp5OiBhcmd1bWVudHNbMV0KICAgICAgICAgICAgICAgICAgICB9KSwgV3QoaSksIEF0Ll9pbnZhbGlkYXRlKGkpLCAhMSAhPT0gQXQubm90aWZ5KGksICJiZWZvcmVVcGRhdGUiKSkgewogICAgICAgICAgICAgICAgICAgIGkudG9vbHRpcC5fZGF0YSA9IGkuZGF0YTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGkuYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzKCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IGkuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IHQgPCBuOyB0KyspIGkuZ2V0RGF0YXNldE1ldGEodCkuY29udHJvbGxlci5idWlsZE9yVXBkYXRlRWxlbWVudHMoKTsKICAgICAgICAgICAgICAgICAgICBpLnVwZGF0ZUxheW91dCgpLCBpLm9wdGlvbnMuYW5pbWF0aW9uICYmIGkub3B0aW9ucy5hbmltYXRpb24uZHVyYXRpb24gJiYgQi5lYWNoKHIsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucmVzZXQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgaS51cGRhdGVEYXRhc2V0cygpLCBpLnRvb2x0aXAuaW5pdGlhbGl6ZSgpLCBpLmxhc3RBY3RpdmUgPSBbXSwgQXQubm90aWZ5KGksICJhZnRlclVwZGF0ZSIpLCBpLl9sYXllcnMuc29ydChWdCgieiIsICJfaWR4IikpLCBpLl9idWZmZXJlZFJlbmRlciA/IGkuX2J1ZmZlcmVkUmVxdWVzdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUuZHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogZS5lYXNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhenk6IGUubGF6eQogICAgICAgICAgICAgICAgICAgIH0gOiBpLnJlbmRlcihlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgITEgIT09IEF0Lm5vdGlmeShlLCAiYmVmb3JlTGF5b3V0IikgJiYgKGR0LnVwZGF0ZSh0aGlzLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCksIGUuX2xheWVycyA9IFtdLCBCLmVhY2goZS5ib3hlcywgKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICB0Ll9jb25maWd1cmUgJiYgdC5fY29uZmlndXJlKCksIGUuX2xheWVycy5wdXNoLmFwcGx5KGUuX2xheWVycywgdC5fbGF5ZXJzKCkpCiAgICAgICAgICAgICAgICB9KSwgZSksIGUuX2xheWVycy5mb3JFYWNoKChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgZS5faWR4ID0gdAogICAgICAgICAgICAgICAgfSkpLCBBdC5ub3RpZnkoZSwgImFmdGVyU2NhbGVVcGRhdGUiKSwgQXQubm90aWZ5KGUsICJhZnRlckxheW91dCIpKQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVEYXRhc2V0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoITEgIT09IEF0Lm5vdGlmeSh0aGlzLCAiYmVmb3JlRGF0YXNldHNVcGRhdGUiKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGUgPSAwLCB0ID0gdGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgZSA8IHQ7ICsrZSkgdGhpcy51cGRhdGVEYXRhc2V0KGUpOwogICAgICAgICAgICAgICAgICAgIEF0Lm5vdGlmeSh0aGlzLCAiYWZ0ZXJEYXRhc2V0c1VwZGF0ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZURhdGFzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5nZXREYXRhc2V0TWV0YShlKSwKICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAhMSAhPT0gQXQubm90aWZ5KHRoaXMsICJiZWZvcmVEYXRhc2V0VXBkYXRlIiwgW25dKSAmJiAodC5jb250cm9sbGVyLl91cGRhdGUoKSwgQXQubm90aWZ5KHRoaXMsICJhZnRlckRhdGFzZXRVcGRhdGUiLCBbbl0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpczsKICAgICAgICAgICAgICAgIGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgKGUgPSB7CiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgbGF6eTogYXJndW1lbnRzWzFdCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBuID0gdC5vcHRpb25zLmFuaW1hdGlvbiwKICAgICAgICAgICAgICAgICAgICBpID0genQoZS5kdXJhdGlvbiwgbiAmJiBuLmR1cmF0aW9uKSwKICAgICAgICAgICAgICAgICAgICByID0gZS5sYXp5OwogICAgICAgICAgICAgICAgaWYgKCExICE9PSBBdC5ub3RpZnkodCwgImJlZm9yZVJlbmRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0Lm5vdGlmeSh0LCAiYWZ0ZXJSZW5kZXIiKSwgQi5jYWxsYmFjayhuICYmIG4ub25Db21wbGV0ZSwgW2VdLCB0KQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKG4gJiYgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBLKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVN0ZXBzOiBpIC8gMTYuNjYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IGUuZWFzaW5nIHx8IG4uZWFzaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBCLmVhc2luZy5lZmZlY3RzW3QuZWFzaW5nXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuY3VycmVudFN0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpIC8gdC5udW1TdGVwczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmRyYXcobihyKSwgciwgaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFuaW1hdGlvblByb2dyZXNzOiBuLm9uUHJvZ3Jlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFuaW1hdGlvbkNvbXBsZXRlOiBvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBRLmFkZEFuaW1hdGlvbih0LCBhLCBpLCByKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LmRyYXcoKSwgbyhuZXcgSyh7CiAgICAgICAgICAgICAgICAgICAgICAgIG51bVN0ZXBzOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFydDogdAogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBkcmF3OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoaS5jbGVhcigpLCBCLmlzTnVsbE9yVW5kZWYoZSkgJiYgKGUgPSAxKSwgaS50cmFuc2l0aW9uKGUpLCAhKGkud2lkdGggPD0gMCB8fCBpLmhlaWdodCA8PSAwKSAmJiAhMSAhPT0gQXQubm90aWZ5KGksICJiZWZvcmVEcmF3IiwgW2VdKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IGkuX2xheWVycywgdCA9IDA7IHQgPCBuLmxlbmd0aCAmJiBuW3RdLnogPD0gMDsgKyt0KSBuW3RdLmRyYXcoaS5jaGFydEFyZWEpOwogICAgICAgICAgICAgICAgICAgIGZvciAoaS5kcmF3RGF0YXNldHMoZSk7IHQgPCBuLmxlbmd0aDsgKyt0KSBuW3RdLmRyYXcoaS5jaGFydEFyZWEpOwogICAgICAgICAgICAgICAgICAgIGkuX2RyYXdUb29sdGlwKGUpLCBBdC5ub3RpZnkoaSwgImFmdGVyRHJhdyIsIFtlXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdHJhbnNpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAodGhpcy5kYXRhLmRhdGFzZXRzIHx8IFtdKS5sZW5ndGg7IHQgPCBuOyArK3QpIHRoaXMuaXNEYXRhc2V0VmlzaWJsZSh0KSAmJiB0aGlzLmdldERhdGFzZXRNZXRhKHQpLmNvbnRyb2xsZXIudHJhbnNpdGlvbihlKTsKICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcC50cmFuc2l0aW9uKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRTb3J0ZWREYXRhc2V0TWV0YXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpID0gW107CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gKHRoaXMuZGF0YS5kYXRhc2V0cyB8fCBbXSkubGVuZ3RoOyB0IDwgbjsgKyt0KSBlICYmICF0aGlzLmlzRGF0YXNldFZpc2libGUodCkgfHwgaS5wdXNoKHRoaXMuZ2V0RGF0YXNldE1ldGEodCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGkuc29ydChWdCgib3JkZXIiLCAiaW5kZXgiKSksIGkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNvcnRlZERhdGFzZXRNZXRhcyghMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZHJhd0RhdGFzZXRzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbjsKICAgICAgICAgICAgICAgIGlmICghMSAhPT0gQXQubm90aWZ5KHRoaXMsICJiZWZvcmVEYXRhc2V0c0RyYXciLCBbZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuID0gKHQgPSB0aGlzLl9nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCkpLmxlbmd0aCAtIDE7IG4gPj0gMDsgLS1uKSB0aGlzLmRyYXdEYXRhc2V0KHRbbl0sIGUpOwogICAgICAgICAgICAgICAgICAgIEF0Lm5vdGlmeSh0aGlzLCAiYWZ0ZXJEYXRhc2V0c0RyYXciLCBbZV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRyYXdEYXRhc2V0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHsKICAgICAgICAgICAgICAgICAgICBtZXRhOiBlLAogICAgICAgICAgICAgICAgICAgIGluZGV4OiBlLmluZGV4LAogICAgICAgICAgICAgICAgICAgIGVhc2luZ1ZhbHVlOiB0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgITEgIT09IEF0Lm5vdGlmeSh0aGlzLCAiYmVmb3JlRGF0YXNldERyYXciLCBbbl0pICYmIChlLmNvbnRyb2xsZXIuZHJhdyh0KSwgQXQubm90aWZ5KHRoaXMsICJhZnRlckRhdGFzZXREcmF3IiwgW25dKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RyYXdUb29sdGlwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudG9vbHRpcCwKICAgICAgICAgICAgICAgICAgICBuID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmdWYWx1ZTogZQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAhMSAhPT0gQXQubm90aWZ5KHRoaXMsICJiZWZvcmVUb29sdGlwRHJhdyIsIFtuXSkgJiYgKHQuZHJhdygpLCBBdC5ub3RpZnkodGhpcywgImFmdGVyVG9vbHRpcERyYXciLCBbbl0pKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFbGVtZW50QXRFdmVudDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHR0Lm1vZGVzLnNpbmdsZSh0aGlzLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFbGVtZW50c0F0RXZlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0dC5tb2Rlcy5sYWJlbCh0aGlzLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0OiAhMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWxlbWVudHNBdFhBeGlzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHQubW9kZXNbIngtYXhpcyJdKHRoaXMsIGUsIHsKICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IHR0Lm1vZGVzW3RdOwogICAgICAgICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGkgPyBpKHRoaXMsIGUsIG4pIDogW10KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RGF0YXNldEF0RXZlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0dC5tb2Rlcy5kYXRhc2V0KHRoaXMsIGUsIHsKICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Q6ICEwCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXREYXRhc2V0TWV0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmRhdGEuZGF0YXNldHNbZV07CiAgICAgICAgICAgICAgICB0Ll9tZXRhIHx8ICh0Ll9tZXRhID0ge30pOwogICAgICAgICAgICAgICAgdmFyIG4gPSB0Ll9tZXRhW3RoaXMuaWRdOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgKG4gPSB0Ll9tZXRhW3RoaXMuaWRdID0gewogICAgICAgICAgICAgICAgICAgIHR5cGU6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogW10sCiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDogbnVsbCwKICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBudWxsLAogICAgICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbCwKICAgICAgICAgICAgICAgICAgICB4QXhpc0lEOiBudWxsLAogICAgICAgICAgICAgICAgICAgIHlBeGlzSUQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHQub3JkZXIgfHwgMCwKICAgICAgICAgICAgICAgICAgICBpbmRleDogZQogICAgICAgICAgICAgICAgfSksIG4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0VmlzaWJsZURhdGFzZXRDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gMCwgdCA9IDAsIG4gPSB0aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoOyB0IDwgbjsgKyt0KSB0aGlzLmlzRGF0YXNldFZpc2libGUodCkgJiYgZSsrOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNEYXRhc2V0VmlzaWJsZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmdldERhdGFzZXRNZXRhKGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgdC5oaWRkZW4gPyAhdC5oaWRkZW4gOiAhdGhpcy5kYXRhLmRhdGFzZXRzW2VdLmhpZGRlbgogICAgICAgICAgICB9LAogICAgICAgICAgICBnZW5lcmF0ZUxlZ2VuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxlZ2VuZENhbGxiYWNrKHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlc3Ryb3lEYXRhc2V0TWV0YTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmlkLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmRhdGEuZGF0YXNldHNbZV0sCiAgICAgICAgICAgICAgICAgICAgaSA9IG4uX21ldGEgJiYgbi5fbWV0YVt0XTsKICAgICAgICAgICAgICAgIGkgJiYgKGkuY29udHJvbGxlci5kZXN0cm95KCksIGRlbGV0ZSBuLl9tZXRhW3RdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBpID0gbi5jYW52YXM7CiAgICAgICAgICAgICAgICBmb3IgKG4uc3RvcCgpLCBlID0gMCwgdCA9IG4uZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGUgPCB0OyArK2UpIG4uZGVzdHJveURhdGFzZXRNZXRhKGUpOwogICAgICAgICAgICAgICAgaSAmJiAobi51bmJpbmRFdmVudHMoKSwgQi5jYW52YXMuY2xlYXIobiksIFR0LnJlbGVhc2VDb250ZXh0KG4uY3R4KSwgbi5jYW52YXMgPSBudWxsLCBuLmN0eCA9IG51bGwpLCBBdC5ub3RpZnkobiwgImRlc3Ryb3kiKSwgZGVsZXRlIFl0Lmluc3RhbmNlc1tuLmlkXQogICAgICAgICAgICB9LAogICAgICAgICAgICB0b0Jhc2U2NEltYWdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbnZhcy50b0RhdGFVUkwuYXBwbHkodGhpcy5jYW52YXMsIGFyZ3VtZW50cykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5pdFRvb2xUaXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgZS50b29sdGlwID0gbmV3ICR0KHsKICAgICAgICAgICAgICAgICAgICBfY2hhcnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgX2NoYXJ0SW5zdGFuY2U6IGUsCiAgICAgICAgICAgICAgICAgICAgX2RhdGE6IGUuZGF0YSwKICAgICAgICAgICAgICAgICAgICBfb3B0aW9uczogZS5vcHRpb25zLnRvb2x0aXBzCiAgICAgICAgICAgICAgICB9LCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBiaW5kRXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICB0ID0gZS5fbGlzdGVuZXJzID0ge30sCiAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLmV2ZW50SGFuZGxlci5hcHBseShlLCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIEIuZWFjaChlLm9wdGlvbnMuZXZlbnRzLCAoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgIFR0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaSwgbiksIHRbaV0gPSBuCiAgICAgICAgICAgICAgICB9KSksIGUub3B0aW9ucy5yZXNwb25zaXZlICYmIChuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZS5yZXNpemUoKQogICAgICAgICAgICAgICAgfSwgVHQuYWRkRXZlbnRMaXN0ZW5lcihlLCAicmVzaXplIiwgbiksIHQucmVzaXplID0gbikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdW5iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICB0ID0gZS5fbGlzdGVuZXJzOwogICAgICAgICAgICAgICAgdCAmJiAoZGVsZXRlIGUuX2xpc3RlbmVycywgQi5lYWNoKHQsIChmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgVHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBuLCB0KQogICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVIb3ZlclN0eWxlOiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSA9IG4gPyAic2V0IiA6ICJyZW1vdmUiOwogICAgICAgICAgICAgICAgZm9yIChyID0gMCwgbyA9IGUubGVuZ3RoOyByIDwgbzsgKytyKShpID0gZVtyXSkgJiYgdGhpcy5nZXREYXRhc2V0TWV0YShpLl9kYXRhc2V0SW5kZXgpLmNvbnRyb2xsZXJbYSArICJIb3ZlclN0eWxlIl0oaSk7CiAgICAgICAgICAgICAgICAiZGF0YXNldCIgPT09IHQgJiYgdGhpcy5nZXREYXRhc2V0TWV0YShlWzBdLl9kYXRhc2V0SW5kZXgpLmNvbnRyb2xsZXJbIl8iICsgYSArICJEYXRhc2V0SG92ZXJTdHlsZSJdKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZXZlbnRIYW5kbGVyOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQudG9vbHRpcDsKICAgICAgICAgICAgICAgIGlmICghMSAhPT0gQXQubm90aWZ5KHQsICJiZWZvcmVFdmVudCIsIFtlXSkpIHsKICAgICAgICAgICAgICAgICAgICB0Ll9idWZmZXJlZFJlbmRlciA9ICEwLCB0Ll9idWZmZXJlZFJlcXVlc3QgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdC5oYW5kbGVFdmVudChlKTsKICAgICAgICAgICAgICAgICAgICBuICYmIChpID0gbi5fc3RhcnQgPyBuLmhhbmRsZUV2ZW50KGUpIDogaSB8IG4uaGFuZGxlRXZlbnQoZSkpLCBBdC5ub3RpZnkodCwgImFmdGVyRXZlbnQiLCBbZV0pOwogICAgICAgICAgICAgICAgICAgIHZhciByID0gdC5fYnVmZmVyZWRSZXF1ZXN0OwogICAgICAgICAgICAgICAgICAgIHJldHVybiByID8gdC5yZW5kZXIocikgOiBpICYmICF0LmFuaW1hdGluZyAmJiAodC5zdG9wKCksIHQucmVuZGVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IHQub3B0aW9ucy5ob3Zlci5hbmltYXRpb25EdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgbGF6eTogITAKICAgICAgICAgICAgICAgICAgICB9KSksIHQuX2J1ZmZlcmVkUmVuZGVyID0gITEsIHQuX2J1ZmZlcmVkUmVxdWVzdCA9IG51bGwsIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBpID0gbi5vcHRpb25zIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIHIgPSBpLmhvdmVyOwogICAgICAgICAgICAgICAgcmV0dXJuIG4ubGFzdEFjdGl2ZSA9IG4ubGFzdEFjdGl2ZSB8fCBbXSwgIm1vdXNlb3V0IiA9PT0gZS50eXBlID8gbi5hY3RpdmUgPSBbXSA6IG4uYWN0aXZlID0gbi5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGUsIHIubW9kZSwgciksIEIuY2FsbGJhY2soaS5vbkhvdmVyIHx8IGkuaG92ZXIub25Ib3ZlciwgW2UubmF0aXZlLCBuLmFjdGl2ZV0sIG4pLCAibW91c2V1cCIgIT09IGUudHlwZSAmJiAiY2xpY2siICE9PSBlLnR5cGUgfHwgaS5vbkNsaWNrICYmIGkub25DbGljay5jYWxsKG4sIGUubmF0aXZlLCBuLmFjdGl2ZSksIG4ubGFzdEFjdGl2ZS5sZW5ndGggJiYgbi51cGRhdGVIb3ZlclN0eWxlKG4ubGFzdEFjdGl2ZSwgci5tb2RlLCAhMSksIG4uYWN0aXZlLmxlbmd0aCAmJiByLm1vZGUgJiYgbi51cGRhdGVIb3ZlclN0eWxlKG4uYWN0aXZlLCByLm1vZGUsICEwKSwgdCA9ICFCLmFycmF5RXF1YWxzKG4uYWN0aXZlLCBuLmxhc3RBY3RpdmUpLCBuLmxhc3RBY3RpdmUgPSBuLmFjdGl2ZSwgdAogICAgICAgICAgICB9CiAgICAgICAgfSksIFl0Lmluc3RhbmNlcyA9IHt9OwogICAgICAgIHZhciBYdCA9IFl0OwoKICAgICAgICBmdW5jdGlvbiBHdCgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQ6IGVpdGhlciBubyBhZGFwdGVyIGNhbiBiZSBmb3VuZCBvciBhbiBpbmNvbXBsZXRlIGludGVncmF0aW9uIHdhcyBwcm92aWRlZC4iKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gS3QoZSkgewogICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBlIHx8IHt9CiAgICAgICAgfQogICAgICAgIFl0LkNvbnRyb2xsZXIgPSBZdCwgWXQudHlwZXMgPSB7fSwgQi5jb25maWdNZXJnZSA9IEJ0LCBCLnNjYWxlTWVyZ2UgPSBIdCwgQi5leHRlbmQoS3QucHJvdG90eXBlLCB7CiAgICAgICAgICAgIGZvcm1hdHM6IEd0LAogICAgICAgICAgICBwYXJzZTogR3QsCiAgICAgICAgICAgIGZvcm1hdDogR3QsCiAgICAgICAgICAgIGFkZDogR3QsCiAgICAgICAgICAgIGRpZmY6IEd0LAogICAgICAgICAgICBzdGFydE9mOiBHdCwKICAgICAgICAgICAgZW5kT2Y6IEd0LAogICAgICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CiAgICAgICAgfSksIEt0Lm92ZXJyaWRlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBCLmV4dGVuZChLdC5wcm90b3R5cGUsIGUpCiAgICAgICAgfTsKICAgICAgICB2YXIgUXQgPSB7CiAgICAgICAgICAgICAgICBfZGF0ZTogS3QKICAgICAgICAgICAgfSwKICAgICAgICAgICAgWnQgPSB7CiAgICAgICAgICAgICAgICBmb3JtYXR0ZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCLmlzQXJyYXkoZSkgPyBlIDogIiIgKyBlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsaW5lYXI6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBuLmxlbmd0aCA+IDMgPyBuWzJdIC0gblsxXSA6IG5bMV0gLSBuWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhpKSA+IDEgJiYgZSAhPT0gTWF0aC5mbG9vcihlKSAmJiAoaSA9IGUgLSBNYXRoLmZsb29yKGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBCLmxvZzEwKE1hdGguYWJzKGkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT09IGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5tYXgoTWF0aC5hYnMoblswXSksIE1hdGguYWJzKG5bbi5sZW5ndGggLSAxXSkpIDwgMWUtNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gQi5sb2cxMChNYXRoLmFicyhlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBNYXRoLmZsb29yKGEpIC0gTWF0aC5mbG9vcihyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gTWF0aC5tYXgoTWF0aC5taW4ocywgMjApLCAwKSwgbyA9IGUudG9FeHBvbmVudGlhbChzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IC0xICogTWF0aC5mbG9vcihyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5tYXgoTWF0aC5taW4obCwgMjApLCAwKSwgbyA9IGUudG9GaXhlZChsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG8gPSAiMCI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsb2dhcml0aG1pYzogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGUgLyBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihCLmxvZzEwKGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwID09PSBlID8gIjAiIDogMSA9PT0gaSB8fCAyID09PSBpIHx8IDUgPT09IGkgfHwgMCA9PT0gdCB8fCB0ID09PSBuLmxlbmd0aCAtIDEgPyBlLnRvRXhwb25lbnRpYWwoKSA6ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBKdCA9IEIuaXNBcnJheSwKICAgICAgICAgICAgZW4gPSBCLmlzTnVsbE9yVW5kZWYsCiAgICAgICAgICAgIHRuID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgbm4gPSBCLnZhbHVlQXRJbmRleE9yRGVmYXVsdDsKCiAgICAgICAgZnVuY3Rpb24gcm4oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciA9IGUuZ2V0VGlja3MoKS5sZW5ndGgsCiAgICAgICAgICAgICAgICBvID0gTWF0aC5taW4odCwgciAtIDEpLAogICAgICAgICAgICAgICAgYSA9IGUuZ2V0UGl4ZWxGb3JUaWNrKG8pLAogICAgICAgICAgICAgICAgcyA9IGUuX3N0YXJ0UGl4ZWwsCiAgICAgICAgICAgICAgICBsID0gZS5fZW5kUGl4ZWw7CiAgICAgICAgICAgIGlmICghKG4gJiYgKGkgPSAxID09PSByID8gTWF0aC5tYXgoYSAtIHMsIGwgLSBhKSA6IDAgPT09IHQgPyAoZS5nZXRQaXhlbEZvclRpY2soMSkgLSBhKSAvIDIgOiAoYSAtIGUuZ2V0UGl4ZWxGb3JUaWNrKG8gLSAxKSkgLyAyLCAoYSArPSBvIDwgdCA/IGkgOiAtaSkgPCBzIC0gMWUtNiB8fCBhID4gbCArIDFlLTYpKSkgcmV0dXJuIGEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUuZHJhd1RpY2tzID8gZS50aWNrTWFya0xlbmd0aCA6IDAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFuKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG47CiAgICAgICAgICAgIHJldHVybiBlLmRpc3BsYXkgPyAodCA9IEIub3B0aW9ucy5fcGFyc2VGb250KGUpLCBuID0gQi5vcHRpb25zLnRvUGFkZGluZyhlLnBhZGRpbmcpLCB0LmxpbmVIZWlnaHQgKyBuLmhlaWdodCkgOiAwCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBCLmV4dGVuZChCLm9wdGlvbnMuX3BhcnNlRm9udCh7CiAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB0bih0LmZvbnRGYW1pbHksIGUuZm9udEZhbWlseSksCiAgICAgICAgICAgICAgICBmb250U2l6ZTogdG4odC5mb250U2l6ZSwgZS5mb250U2l6ZSksCiAgICAgICAgICAgICAgICBmb250U3R5bGU6IHRuKHQuZm9udFN0eWxlLCBlLmZvbnRTdHlsZSksCiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiB0bih0LmxpbmVIZWlnaHQsIGUubGluZUhlaWdodCkKICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgIGNvbG9yOiBCLm9wdGlvbnMucmVzb2x2ZShbdC5mb250Q29sb3IsIGUuZm9udENvbG9yLCBGLmdsb2JhbC5kZWZhdWx0Rm9udENvbG9yXSkKICAgICAgICAgICAgfSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxuKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBzbihlLCBlLm1pbm9yKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIG1pbm9yOiB0LAogICAgICAgICAgICAgICAgbWFqb3I6IGUubWFqb3IuZW5hYmxlZCA/IHNuKGUsIGUubWFqb3IpIDogdAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gW107CiAgICAgICAgICAgIGZvciAobiA9IDAsIGkgPSBlLmxlbmd0aDsgbiA8IGk7ICsrbikgdm9pZCAwICE9PSAodCA9IGVbbl0pLl9pbmRleCAmJiByLnB1c2godCk7CiAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1bihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHZhciByLCBvLCBhLCBzLCBsID0gdG4obiwgMCksCiAgICAgICAgICAgICAgICBjID0gTWF0aC5taW4odG4oaSwgZS5sZW5ndGgpLCBlLmxlbmd0aCksCiAgICAgICAgICAgICAgICB1ID0gMDsKICAgICAgICAgICAgZm9yICh0ID0gTWF0aC5jZWlsKHQpLCBpICYmICh0ID0gKHIgPSBpIC0gbikgLyBNYXRoLmZsb29yKHIgLyB0KSksIHMgPSBsOyBzIDwgMDspIHUrKywgcyA9IE1hdGgucm91bmQobCArIHUgKiB0KTsKICAgICAgICAgICAgZm9yIChvID0gTWF0aC5tYXgobCwgMCk7IG8gPCBjOyBvKyspIGEgPSBlW29dLCBvID09PSBzID8gKGEuX2luZGV4ID0gbywgdSsrLCBzID0gTWF0aC5yb3VuZChsICsgdSAqIHQpKSA6IGRlbGV0ZSBhLmxhYmVsCiAgICAgICAgfQogICAgICAgIEYuX3NldCgic2NhbGUiLCB7CiAgICAgICAgICAgIGRpc3BsYXk6ICEwLAogICAgICAgICAgICBwb3NpdGlvbjogImxlZnQiLAogICAgICAgICAgICBvZmZzZXQ6ICExLAogICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6ICEwLAogICAgICAgICAgICAgICAgY29sb3I6ICJyZ2JhKDAsMCwwLDAuMSkiLAogICAgICAgICAgICAgICAgbGluZVdpZHRoOiAxLAogICAgICAgICAgICAgICAgZHJhd0JvcmRlcjogITAsCiAgICAgICAgICAgICAgICBkcmF3T25DaGFydEFyZWE6ICEwLAogICAgICAgICAgICAgICAgZHJhd1RpY2tzOiAhMCwKICAgICAgICAgICAgICAgIHRpY2tNYXJrTGVuZ3RoOiAxMCwKICAgICAgICAgICAgICAgIHplcm9MaW5lV2lkdGg6IDEsCiAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiAicmdiYSgwLDAsMCwwLjI1KSIsCiAgICAgICAgICAgICAgICB6ZXJvTGluZUJvcmRlckRhc2g6IFtdLAogICAgICAgICAgICAgICAgemVyb0xpbmVCb3JkZXJEYXNoT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgb2Zmc2V0R3JpZExpbmVzOiAhMSwKICAgICAgICAgICAgICAgIGJvcmRlckRhc2g6IFtdLAogICAgICAgICAgICAgICAgYm9yZGVyRGFzaE9mZnNldDogMAogICAgICAgICAgICB9LAogICAgICAgICAgICBzY2FsZUxhYmVsOiB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMSwKICAgICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAiIiwKICAgICAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IDQsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiA0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICBiZWdpbkF0WmVybzogITEsCiAgICAgICAgICAgICAgICBtaW5Sb3RhdGlvbjogMCwKICAgICAgICAgICAgICAgIG1heFJvdGF0aW9uOiA1MCwKICAgICAgICAgICAgICAgIG1pcnJvcjogITEsCiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLAogICAgICAgICAgICAgICAgcmV2ZXJzZTogITEsCiAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgIGF1dG9Ta2lwOiAhMCwKICAgICAgICAgICAgICAgIGF1dG9Ta2lwUGFkZGluZzogMCwKICAgICAgICAgICAgICAgIGxhYmVsT2Zmc2V0OiAwLAogICAgICAgICAgICAgICAgY2FsbGJhY2s6IFp0LmZvcm1hdHRlcnMudmFsdWVzLAogICAgICAgICAgICAgICAgbWlub3I6IHt9LAogICAgICAgICAgICAgICAgbWFqb3I6IHt9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgZG4gPSBYLmV4dGVuZCh7CiAgICAgICAgICAgIHplcm9MaW5lSW5kZXg6IDAsCiAgICAgICAgICAgIGdldFBhZGRpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0aGlzLnBhZGRpbmdMZWZ0IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgdG9wOiB0aGlzLnBhZGRpbmdUb3AgfHwgMCwKICAgICAgICAgICAgICAgICAgICByaWdodDogdGhpcy5wYWRkaW5nUmlnaHQgfHwgMCwKICAgICAgICAgICAgICAgICAgICBib3R0b206IHRoaXMucGFkZGluZ0JvdHRvbSB8fCAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFRpY2tzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90aWNrcwogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0TGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5jaGFydC5kYXRhOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbHMgfHwgKHRoaXMuaXNIb3Jpem9udGFsKCkgPyBlLnhMYWJlbHMgOiBlLnlMYWJlbHMpIHx8IGUubGFiZWxzIHx8IFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1lcmdlVGlja3NPcHRpb25zOiBmdW5jdGlvbigpIHt9LAogICAgICAgICAgICBiZWZvcmVVcGRhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlVXBkYXRlLCBbdGhpc10pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgdmFyIGksIHIsIG8sIGEsIHMsIGwgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGMgPSBsLm9wdGlvbnMudGlja3MsCiAgICAgICAgICAgICAgICAgICAgdSA9IGMuc2FtcGxlU2l6ZTsKICAgICAgICAgICAgICAgIGlmIChsLmJlZm9yZVVwZGF0ZSgpLCBsLm1heFdpZHRoID0gZSwgbC5tYXhIZWlnaHQgPSB0LCBsLm1hcmdpbnMgPSBCLmV4dGVuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMAogICAgICAgICAgICAgICAgICAgIH0sIG4pLCBsLl90aWNrcyA9IG51bGwsIGwudGlja3MgPSBudWxsLCBsLl9sYWJlbFNpemVzID0gbnVsbCwgbC5fbWF4TGFiZWxMaW5lcyA9IDAsIGwubG9uZ2VzdExhYmVsV2lkdGggPSAwLCBsLmxvbmdlc3RUZXh0Q2FjaGUgPSBsLmxvbmdlc3RUZXh0Q2FjaGUgfHwge30sIGwuX2dyaWRMaW5lSXRlbXMgPSBudWxsLCBsLl9sYWJlbEl0ZW1zID0gbnVsbCwgbC5iZWZvcmVTZXREaW1lbnNpb25zKCksIGwuc2V0RGltZW5zaW9ucygpLCBsLmFmdGVyU2V0RGltZW5zaW9ucygpLCBsLmJlZm9yZURhdGFMaW1pdHMoKSwgbC5kZXRlcm1pbmVEYXRhTGltaXRzKCksIGwuYWZ0ZXJEYXRhTGltaXRzKCksIGwuYmVmb3JlQnVpbGRUaWNrcygpLCBhID0gbC5idWlsZFRpY2tzKCkgfHwgW10sICghKGEgPSBsLmFmdGVyQnVpbGRUaWNrcyhhKSB8fCBhKSB8fCAhYS5sZW5ndGgpICYmIGwudGlja3MpCiAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gW10sIGkgPSAwLCByID0gbC50aWNrcy5sZW5ndGg7IGkgPCByOyArK2kpIGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsLnRpY2tzW2ldLAogICAgICAgICAgICAgICAgICAgICAgICBtYWpvcjogITEKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBsLl90aWNrcyA9IGEsIHMgPSB1IDwgYS5sZW5ndGgsIG8gPSBsLl9jb252ZXJ0VGlja3NUb0xhYmVscyhzID8gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG4gPSBbXSwgaSA9IGUubGVuZ3RoIC8gdCwgciA9IDAsIG8gPSBlLmxlbmd0aDsgciA8IG87IHIgKz0gaSkgbi5wdXNoKGVbTWF0aC5mbG9vcihyKV0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICB9KGEsIHUpIDogYSksIGwuX2NvbmZpZ3VyZSgpLCBsLmJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbigpLCBsLmNhbGN1bGF0ZVRpY2tSb3RhdGlvbigpLCBsLmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uKCksIGwuYmVmb3JlRml0KCksIGwuZml0KCksIGwuYWZ0ZXJGaXQoKSwgbC5fdGlja3NUb0RyYXcgPSBjLmRpc3BsYXkgJiYgKGMuYXV0b1NraXAgfHwgImF1dG8iID09PSBjLnNvdXJjZSkgPyBsLl9hdXRvU2tpcChhKSA6IGEsIHMgJiYgKG8gPSBsLl9jb252ZXJ0VGlja3NUb0xhYmVscyhsLl90aWNrc1RvRHJhdykpLCBsLnRpY2tzID0gbywgbC5hZnRlclVwZGF0ZSgpLCBsLm1pblNpemUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NvbmZpZ3VyZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgaSA9IG4ub3B0aW9ucy50aWNrcy5yZXZlcnNlOwogICAgICAgICAgICAgICAgbi5pc0hvcml6b250YWwoKSA/IChlID0gbi5sZWZ0LCB0ID0gbi5yaWdodCkgOiAoZSA9IG4udG9wLCB0ID0gbi5ib3R0b20sIGkgPSAhaSksIG4uX3N0YXJ0UGl4ZWwgPSBlLCBuLl9lbmRQaXhlbCA9IHQsIG4uX3JldmVyc2VQaXhlbHMgPSBpLCBuLl9sZW5ndGggPSB0IC0gZQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZnRlclVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlclVwZGF0ZSwgW3RoaXNdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBiZWZvcmVTZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEIuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZVNldERpbWVuc2lvbnMsIFt0aGlzXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICBlLmlzSG9yaXpvbnRhbCgpID8gKGUud2lkdGggPSBlLm1heFdpZHRoLCBlLmxlZnQgPSAwLCBlLnJpZ2h0ID0gZS53aWR0aCkgOiAoZS5oZWlnaHQgPSBlLm1heEhlaWdodCwgZS50b3AgPSAwLCBlLmJvdHRvbSA9IGUuaGVpZ2h0KSwgZS5wYWRkaW5nTGVmdCA9IDAsIGUucGFkZGluZ1RvcCA9IDAsIGUucGFkZGluZ1JpZ2h0ID0gMCwgZS5wYWRkaW5nQm90dG9tID0gMAogICAgICAgICAgICB9LAogICAgICAgICAgICBhZnRlclNldERpbWVuc2lvbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJTZXREaW1lbnNpb25zLCBbdGhpc10pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJlZm9yZURhdGFMaW1pdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlRGF0YUxpbWl0cywgW3RoaXNdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkZXRlcm1pbmVEYXRhTGltaXRzOiBCLm5vb3AsCiAgICAgICAgICAgIGFmdGVyRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlckRhdGFMaW1pdHMsIFt0aGlzXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmVmb3JlQnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVCdWlsZFRpY2tzLCBbdGhpc10pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJ1aWxkVGlja3M6IEIubm9vcCwKICAgICAgICAgICAgYWZ0ZXJCdWlsZFRpY2tzOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICByZXR1cm4gSnQoZSkgJiYgZS5sZW5ndGggPyBCLmNhbGxiYWNrKHQub3B0aW9ucy5hZnRlckJ1aWxkVGlja3MsIFt0LCBlXSkgOiAodC50aWNrcyA9IEIuY2FsbGJhY2sodC5vcHRpb25zLmFmdGVyQnVpbGRUaWNrcywgW3QsIHQudGlja3NdKSB8fCB0LnRpY2tzLCBlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uLCBbdGhpc10pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbnZlcnRUaWNrc1RvTGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHRpb25zLnRpY2tzOwogICAgICAgICAgICAgICAgdGhpcy50aWNrcyA9IHRoaXMudGlja3MubWFwKGUudXNlckNhbGxiYWNrIHx8IGUuY2FsbGJhY2ssIHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEIuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uLCBbdGhpc10pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5iZWZvcmVDYWxjdWxhdGVUaWNrUm90YXRpb24sIFt0aGlzXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2FsY3VsYXRlVGlja1JvdGF0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCBpLCByLCBvLCBhLCBzID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBsID0gcy5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGMgPSBsLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIHUgPSBzLmdldFRpY2tzKCkubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIGQgPSBjLm1pblJvdGF0aW9uIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgaCA9IGMubWF4Um90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgZiA9IGQ7CiAgICAgICAgICAgICAgICAhcy5faXNWaXNpYmxlKCkgfHwgIWMuZGlzcGxheSB8fCBkID49IGggfHwgdSA8PSAxIHx8ICFzLmlzSG9yaXpvbnRhbCgpID8gcy5sYWJlbFJvdGF0aW9uID0gZCA6ICh0ID0gKGUgPSBzLl9nZXRMYWJlbFNpemVzKCkpLndpZGVzdC53aWR0aCwgbiA9IGUuaGlnaGVzdC5oZWlnaHQgLSBlLmhpZ2hlc3Qub2Zmc2V0LCBpID0gTWF0aC5taW4ocy5tYXhXaWR0aCwgcy5jaGFydC53aWR0aCAtIHQpLCB0ICsgNiA+IChyID0gbC5vZmZzZXQgPyBzLm1heFdpZHRoIC8gdSA6IGkgLyAodSAtIDEpKSAmJiAociA9IGkgLyAodSAtIChsLm9mZnNldCA/IC41IDogMSkpLCBvID0gcy5tYXhIZWlnaHQgLSBvbihsLmdyaWRMaW5lcykgLSBjLnBhZGRpbmcgLSBhbihsLnNjYWxlTGFiZWwpLCBhID0gTWF0aC5zcXJ0KHQgKiB0ICsgbiAqIG4pLCBmID0gQi50b0RlZ3JlZXMoTWF0aC5taW4oTWF0aC5hc2luKE1hdGgubWluKChlLmhpZ2hlc3QuaGVpZ2h0ICsgNikgLyByLCAxKSksIE1hdGguYXNpbihNYXRoLm1pbihvIC8gYSwgMSkpIC0gTWF0aC5hc2luKG4gLyBhKSkpLCBmID0gTWF0aC5tYXgoZCwgTWF0aC5taW4oaCwgZikpKSwgcy5sYWJlbFJvdGF0aW9uID0gZikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWZ0ZXJDYWxjdWxhdGVUaWNrUm90YXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJDYWxjdWxhdGVUaWNrUm90YXRpb24sIFt0aGlzXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmVmb3JlRml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEIuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUZpdCwgW3RoaXNdKQogICAgICAgICAgICB9LAogICAgICAgICAgICBmaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLm1pblNpemUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG4gPSBlLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgIGkgPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgciA9IGkudGlja3MsCiAgICAgICAgICAgICAgICAgICAgbyA9IGkuc2NhbGVMYWJlbCwKICAgICAgICAgICAgICAgICAgICBhID0gaS5ncmlkTGluZXMsCiAgICAgICAgICAgICAgICAgICAgcyA9IGUuX2lzVmlzaWJsZSgpLAogICAgICAgICAgICAgICAgICAgIGwgPSAiYm90dG9tIiA9PT0gaS5wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICBjID0gZS5pc0hvcml6b250YWwoKTsKICAgICAgICAgICAgICAgIGlmIChjID8gdC53aWR0aCA9IGUubWF4V2lkdGggOiBzICYmICh0LndpZHRoID0gb24oYSkgKyBhbihvKSksIGMgPyBzICYmICh0LmhlaWdodCA9IG9uKGEpICsgYW4obykpIDogdC5oZWlnaHQgPSBlLm1heEhlaWdodCwgci5kaXNwbGF5ICYmIHMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGxuKHIpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gZS5fZ2V0TGFiZWxTaXplcygpLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gZC5maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGQud2lkZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBnID0gZC5oaWdoZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBtID0gLjQgKiB1Lm1pbm9yLmxpbmVIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSByLnBhZGRpbmc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSAwICE9PSBlLmxhYmVsUm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gQi50b1JhZGlhbnMoZS5sYWJlbFJvdGF0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBNYXRoLmNvcyhiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBNYXRoLnNpbihiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gPSB4ICogcC53aWR0aCArIHcgKiAoZy5oZWlnaHQgLSAoeSA/IGcub2Zmc2V0IDogMCkpICsgKHkgPyAwIDogbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuaGVpZ2h0ID0gTWF0aC5taW4oZS5tYXhIZWlnaHQsIHQuaGVpZ2h0ICsgXyArIHYpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgUywgQywgayA9IGUuZ2V0UGl4ZWxGb3JUaWNrKDApIC0gZS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IGUucmlnaHQgLSBlLmdldFBpeGVsRm9yVGljayhlLmdldFRpY2tzKCkubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHkgPyAoUyA9IGwgPyB3ICogaC53aWR0aCArIHggKiBoLm9mZnNldCA6IHggKiAoaC5oZWlnaHQgLSBoLm9mZnNldCksIEMgPSBsID8geCAqIChmLmhlaWdodCAtIGYub2Zmc2V0KSA6IHcgKiBmLndpZHRoICsgeCAqIGYub2Zmc2V0KSA6IChTID0gaC53aWR0aCAvIDIsIEMgPSBmLndpZHRoIC8gMiksIGUucGFkZGluZ0xlZnQgPSBNYXRoLm1heCgoUyAtIGspICogZS53aWR0aCAvIChlLndpZHRoIC0gayksIDApICsgMywgZS5wYWRkaW5nUmlnaHQgPSBNYXRoLm1heCgoQyAtIFQpICogZS53aWR0aCAvIChlLndpZHRoIC0gVCksIDApICsgMwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBID0gci5taXJyb3IgPyAwIDogcC53aWR0aCArIHYgKyBtOwogICAgICAgICAgICAgICAgICAgICAgICB0LndpZHRoID0gTWF0aC5taW4oZS5tYXhXaWR0aCwgdC53aWR0aCArIEEpLCBlLnBhZGRpbmdUb3AgPSBoLmhlaWdodCAvIDIsIGUucGFkZGluZ0JvdHRvbSA9IGYuaGVpZ2h0IC8gMgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuaGFuZGxlTWFyZ2lucygpLCBjID8gKGUud2lkdGggPSBlLl9sZW5ndGggPSBuLndpZHRoIC0gZS5tYXJnaW5zLmxlZnQgLSBlLm1hcmdpbnMucmlnaHQsIGUuaGVpZ2h0ID0gdC5oZWlnaHQpIDogKGUud2lkdGggPSB0LndpZHRoLCBlLmhlaWdodCA9IGUuX2xlbmd0aCA9IG4uaGVpZ2h0IC0gZS5tYXJnaW5zLnRvcCAtIGUubWFyZ2lucy5ib3R0b20pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhhbmRsZU1hcmdpbnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgZS5tYXJnaW5zICYmIChlLm1hcmdpbnMubGVmdCA9IE1hdGgubWF4KGUucGFkZGluZ0xlZnQsIGUubWFyZ2lucy5sZWZ0KSwgZS5tYXJnaW5zLnRvcCA9IE1hdGgubWF4KGUucGFkZGluZ1RvcCwgZS5tYXJnaW5zLnRvcCksIGUubWFyZ2lucy5yaWdodCA9IE1hdGgubWF4KGUucGFkZGluZ1JpZ2h0LCBlLm1hcmdpbnMucmlnaHQpLCBlLm1hcmdpbnMuYm90dG9tID0gTWF0aC5tYXgoZS5wYWRkaW5nQm90dG9tLCBlLm1hcmdpbnMuYm90dG9tKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWZ0ZXJGaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgQi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJGaXQsIFt0aGlzXSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaXNIb3Jpem9udGFsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uOwogICAgICAgICAgICAgICAgcmV0dXJuICJ0b3AiID09PSBlIHx8ICJib3R0b20iID09PSBlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlzRnVsbFdpZHRoOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZnVsbFdpZHRoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFJpZ2h0VmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlbihlKSkgcmV0dXJuIE5hTjsKICAgICAgICAgICAgICAgIGlmICgoIm51bWJlciIgPT0gdHlwZW9mIGUgfHwgZSBpbnN0YW5jZW9mIE51bWJlcikgJiYgIWlzRmluaXRlKGUpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZS54KSByZXR1cm4gdGhpcy5nZXRSaWdodFZhbHVlKGUueCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZvaWQgMCAhPT0gZS55KSByZXR1cm4gdGhpcy5nZXRSaWdodFZhbHVlKGUueSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY29udmVydFRpY2tzVG9MYWJlbHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByID0gdGhpczsKICAgICAgICAgICAgICAgIGZvciAoci50aWNrcyA9IGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgfSkpLCByLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbigpLCB0ID0gci5jb252ZXJ0VGlja3NUb0xhYmVscyhlKSB8fCByLnRpY2tzLCByLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uKCksIG4gPSAwLCBpID0gZS5sZW5ndGg7IG4gPCBpOyArK24pIGVbbl0ubGFiZWwgPSB0W25dOwogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldExhYmVsU2l6ZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIHQgPSBlLl9sYWJlbFNpemVzOwogICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKGUuX2xhYmVsU2l6ZXMgPSB0ID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBhLCBzLCBsLCBjLCB1LCBkLCBoLCBmLCBwLCBnLCBtLCB2ID0gbi5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBfID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgdjsgKytyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID0gbltyXS5sYWJlbCwgbCA9IG5bcl0ubWFqb3IgPyB0Lm1ham9yIDogdC5taW5vciwgZS5mb250ID0gYyA9IGwuc3RyaW5nLCB1ID0gaVtjXSA9IGlbY10gfHwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjOiBbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZCA9IGwubGluZUhlaWdodCwgaCA9IGYgPSAwLCBlbihzKSB8fCBKdChzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEp0KHMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDAsIGEgPSBzLmxlbmd0aDsgbyA8IGE7ICsrbykgcCA9IHNbb10sIGVuKHApIHx8IEp0KHApIHx8IChoID0gQi5tZWFzdXJlVGV4dChlLCB1LmRhdGEsIHUuZ2MsIGgsIHApLCBmICs9IGQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBoID0gQi5tZWFzdXJlVGV4dChlLCB1LmRhdGEsIHUuZ2MsIGgsIHMpLCBmID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgeS5wdXNoKGgpLCBiLnB1c2goZiksIHcucHVzaChkIC8gMiksIHggPSBNYXRoLm1heChoLCB4KSwgXyA9IE1hdGgubWF4KGYsIF8pCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB5W2VdIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGJbZV0gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogd1tlXSB8fCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQi5lYWNoKGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSA9IGUuZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGkubGVuZ3RoIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCByOyArK24pIGRlbGV0ZSBlLmRhdGFbaVtuXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zcGxpY2UoMCwgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfShpLCB2KSwgZyA9IHkuaW5kZXhPZih4KSwgbSA9IGIuaW5kZXhPZihfKSwgewogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdDogUygwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogUyh2IC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGVzdDogUyhnKSwKICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdDogUyhtKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oZS5jdHgsIGxuKGUub3B0aW9ucy50aWNrcyksIGUuZ2V0VGlja3MoKSwgZS5sb25nZXN0VGV4dENhY2hlKSwgZS5sb25nZXN0TGFiZWxXaWR0aCA9IHQud2lkZXN0LndpZHRoKSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBfcGFyc2VWYWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGksIHI7CiAgICAgICAgICAgICAgICByZXR1cm4gSnQoZSkgPyAodCA9ICt0aGlzLmdldFJpZ2h0VmFsdWUoZVswXSksIG4gPSArdGhpcy5nZXRSaWdodFZhbHVlKGVbMV0pLCBpID0gTWF0aC5taW4odCwgbiksIHIgPSBNYXRoLm1heCh0LCBuKSkgOiAodCA9IHZvaWQgMCwgbiA9IGUgPSArdGhpcy5nZXRSaWdodFZhbHVlKGUpLCBpID0gZSwgciA9IGUpLCB7CiAgICAgICAgICAgICAgICAgICAgbWluOiBpLAogICAgICAgICAgICAgICAgICAgIG1heDogciwKICAgICAgICAgICAgICAgICAgICBzdGFydDogdCwKICAgICAgICAgICAgICAgICAgICBlbmQ6IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2dldFNjYWxlTGFiZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fcGFyc2VWYWx1ZShlKTsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQuc3RhcnQgPyAiWyIgKyB0LnN0YXJ0ICsgIiwgIiArIHQuZW5kICsgIl0iIDogK3RoaXMuZ2V0UmlnaHRWYWx1ZShlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRMYWJlbEZvckluZGV4OiBCLm5vb3AsCiAgICAgICAgICAgIGdldFBpeGVsRm9yVmFsdWU6IEIubm9vcCwKICAgICAgICAgICAgZ2V0VmFsdWVGb3JQaXhlbDogQi5ub29wLAogICAgICAgICAgICBnZXRQaXhlbEZvclRpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5fdGlja3MubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIGkgPSAxIC8gTWF0aC5tYXgobiAtICh0ID8gMCA6IDEpLCAxKTsKICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMCB8fCBlID4gbiAtIDEgPyBudWxsIDogdGhpcy5nZXRQaXhlbEZvckRlY2ltYWwoZSAqIGkgKyAodCA/IGkgLyAyIDogMCkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFBpeGVsRm9yRGVjaW1hbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JldmVyc2VQaXhlbHMgJiYgKGUgPSAxIC0gZSksIHRoaXMuX3N0YXJ0UGl4ZWwgKyBlICogdGhpcy5fbGVuZ3RoCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldERlY2ltYWxGb3JQaXhlbDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAoZSAtIHRoaXMuX3N0YXJ0UGl4ZWwpIC8gdGhpcy5fbGVuZ3RoOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JldmVyc2VQaXhlbHMgPyAxIC0gdCA6IHQKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0QmFzZVBpeGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy5nZXRCYXNlVmFsdWUoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0QmFzZVZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5taW4sCiAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMubWF4OwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVnaW5BdFplcm8gPyAwIDogZSA8IDAgJiYgdCA8IDAgPyB0IDogZSA+IDAgJiYgdCA+IDAgPyBlIDogMAogICAgICAgICAgICB9LAogICAgICAgICAgICBfYXV0b1NraXA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByLCBvID0gdGhpcy5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLl9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgcyA9IG8ubWF4VGlja3NMaW1pdCB8fCBhIC8gdGhpcy5fdGlja1NpemUoKSArIDEsCiAgICAgICAgICAgICAgICAgICAgbCA9IG8ubWFqb3IuZW5hYmxlZCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IGUubGVuZ3RoOyB0IDwgbjsgdCsrKSBlW3RdLm1ham9yICYmIGkucHVzaCh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgICAgICAgICB9KGUpIDogW10sCiAgICAgICAgICAgICAgICAgICAgYyA9IGwubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIHUgPSBsWzBdLAogICAgICAgICAgICAgICAgICAgIGQgPSBsW2MgLSAxXTsKICAgICAgICAgICAgICAgIGlmIChjID4gcykgcmV0dXJuIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0WzBdOwogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IE1hdGguY2VpbChuKSwgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSByID0gZVtpXSwgaSA9PT0gYSA/IChyLl9pbmRleCA9IGksIGEgPSB0WysrbyAqIG5dKSA6IGRlbGV0ZSByLmxhYmVsCiAgICAgICAgICAgICAgICB9KGUsIGwsIGMgLyBzKSwgY24oZSk7CiAgICAgICAgICAgICAgICBpZiAoaSA9IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8sIGEsIHMsIGwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSBlLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDIpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBlWzBdLCB0ID0gMTsgdCA8IGk7ICsrdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbdF0gLSBlW3QgLSAxXSAhPT0gbikgcmV0dXJuICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICh0Lmxlbmd0aCAtIDEpIC8gaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsKSByZXR1cm4gTWF0aC5tYXgoYywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IDAsIHMgPSAociA9IEIubWF0aC5fZmFjdG9yaXplKGwpKS5sZW5ndGggLSAxOyBhIDwgczsgYSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvID0gclthXSkgPiBjKSByZXR1cm4gbzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KGMsIDEpCiAgICAgICAgICAgICAgICAgICAgfShsLCBlLCAwLCBzKSwgYyA+IDApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gYyAtIDE7IHQgPCBuOyB0KyspIHVuKGUsIGksIGxbdF0sIGxbdCArIDFdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciA9IGMgPiAxID8gKGQgLSB1KSAvIChjIC0gMSkgOiBudWxsLCB1bihlLCBpLCBCLmlzTnVsbE9yVW5kZWYocikgPyAwIDogdSAtIHIsIHUpLCB1bihlLCBpLCBkLCBCLmlzTnVsbE9yVW5kZWYocikgPyBlLmxlbmd0aCA6IGQgKyByKSwgY24oZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB1bihlLCBpKSwgY24oZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX3RpY2tTaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIHQgPSBCLnRvUmFkaWFucyh0aGlzLmxhYmVsUm90YXRpb24pLAogICAgICAgICAgICAgICAgICAgIG4gPSBNYXRoLmFicyhNYXRoLmNvcyh0KSksCiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGguYWJzKE1hdGguc2luKHQpKSwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5fZ2V0TGFiZWxTaXplcygpLAogICAgICAgICAgICAgICAgICAgIG8gPSBlLmF1dG9Ta2lwUGFkZGluZyB8fCAwLAogICAgICAgICAgICAgICAgICAgIGEgPSByID8gci53aWRlc3Qud2lkdGggKyBvIDogMCwKICAgICAgICAgICAgICAgICAgICBzID0gciA/IHIuaGlnaGVzdC5oZWlnaHQgKyBvIDogMDsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpID8gcyAqIG4gPiBhICogaSA/IGEgLyBuIDogcyAvIGkgOiBzICogaSA8IGEgKiBuID8gcyAvIG4gOiBhIC8gaQogICAgICAgICAgICB9LAogICAgICAgICAgICBfaXNWaXNpYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCBpID0gdGhpcy5jaGFydCwKICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5vcHRpb25zLmRpc3BsYXk7CiAgICAgICAgICAgICAgICBpZiAoImF1dG8iICE9PSByKSByZXR1cm4gISFyOwogICAgICAgICAgICAgICAgZm9yIChlID0gMCwgdCA9IGkuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGUgPCB0OyArK2UpCiAgICAgICAgICAgICAgICAgICAgaWYgKGkuaXNEYXRhc2V0VmlzaWJsZShlKSAmJiAoKG4gPSBpLmdldERhdGFzZXRNZXRhKGUpKS54QXhpc0lEID09PSB0aGlzLmlkIHx8IG4ueUF4aXNJRCA9PT0gdGhpcy5pZCkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICBfY29tcHV0ZUdyaWRMaW5lSXRlbXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0LCBuLCBpLCByLCBvLCBhLCBzLCBsLCBjLCB1LCBkLCBoLCBmLCBwLCBnLCBtLCB2LCB5ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBiID0geS5jaGFydCwKICAgICAgICAgICAgICAgICAgICB3ID0geS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIHggPSB3LmdyaWRMaW5lcywKICAgICAgICAgICAgICAgICAgICBfID0gdy5wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICBTID0geC5vZmZzZXRHcmlkTGluZXMsCiAgICAgICAgICAgICAgICAgICAgQyA9IHkuaXNIb3Jpem9udGFsKCksCiAgICAgICAgICAgICAgICAgICAgayA9IHkuX3RpY2tzVG9EcmF3LAogICAgICAgICAgICAgICAgICAgIFQgPSBrLmxlbmd0aCArIChTID8gMSA6IDApLAogICAgICAgICAgICAgICAgICAgIEEgPSBvbih4KSwKICAgICAgICAgICAgICAgICAgICBFID0gW10sCiAgICAgICAgICAgICAgICAgICAgRCA9IHguZHJhd0JvcmRlciA/IG5uKHgubGluZVdpZHRoLCAwLCAwKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgTyA9IEQgLyAyLAogICAgICAgICAgICAgICAgICAgIE0gPSBCLl9hbGlnblBpeGVsLAogICAgICAgICAgICAgICAgICAgIEkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNKGIsIGUsIEQpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGZvciAoInRvcCIgPT09IF8gPyAodCA9IEkoeS5ib3R0b20pLCBzID0geS5ib3R0b20gLSBBLCBjID0gdCAtIE8sIGQgPSBJKGUudG9wKSArIE8sIGYgPSBlLmJvdHRvbSkgOiAiYm90dG9tIiA9PT0gXyA/ICh0ID0gSSh5LnRvcCksIGQgPSBlLnRvcCwgZiA9IEkoZS5ib3R0b20pIC0gTywgcyA9IHQgKyBPLCBjID0geS50b3AgKyBBKSA6ICJsZWZ0IiA9PT0gXyA/ICh0ID0gSSh5LnJpZ2h0KSwgYSA9IHkucmlnaHQgLSBBLCBsID0gdCAtIE8sIHUgPSBJKGUubGVmdCkgKyBPLCBoID0gZS5yaWdodCkgOiAodCA9IEkoeS5sZWZ0KSwgdSA9IGUubGVmdCwgaCA9IEkoZS5yaWdodCkgLSBPLCBhID0gdCArIE8sIGwgPSB5LmxlZnQgKyBBKSwgbiA9IDA7IG4gPCBUOyArK24pIGkgPSBrW25dIHx8IHt9LCBlbihpLmxhYmVsKSAmJiBuIDwgay5sZW5ndGggfHwgKG4gPT09IHkuemVyb0xpbmVJbmRleCAmJiB3Lm9mZnNldCA9PT0gUyA/IChwID0geC56ZXJvTGluZVdpZHRoLCBnID0geC56ZXJvTGluZUNvbG9yLCBtID0geC56ZXJvTGluZUJvcmRlckRhc2ggfHwgW10sIHYgPSB4Lnplcm9MaW5lQm9yZGVyRGFzaE9mZnNldCB8fCAwKSA6IChwID0gbm4oeC5saW5lV2lkdGgsIG4sIDEpLCBnID0gbm4oeC5jb2xvciwgbiwgInJnYmEoMCwwLDAsMC4xKSIpLCBtID0geC5ib3JkZXJEYXNoIHx8IFtdLCB2ID0geC5ib3JkZXJEYXNoT2Zmc2V0IHx8IDApLCB2b2lkIDAgIT09IChyID0gcm4oeSwgaS5faW5kZXggfHwgbiwgUykpICYmIChvID0gTShiLCByLCBwKSwgQyA/IGEgPSBsID0gdSA9IGggPSBvIDogcyA9IGMgPSBkID0gZiA9IG8sIEUucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdHgxOiBhLAogICAgICAgICAgICAgICAgICAgIHR5MTogcywKICAgICAgICAgICAgICAgICAgICB0eDI6IGwsCiAgICAgICAgICAgICAgICAgICAgdHkyOiBjLAogICAgICAgICAgICAgICAgICAgIHgxOiB1LAogICAgICAgICAgICAgICAgICAgIHkxOiBkLAogICAgICAgICAgICAgICAgICAgIHgyOiBoLAogICAgICAgICAgICAgICAgICAgIHkyOiBmLAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwLAogICAgICAgICAgICAgICAgICAgIGNvbG9yOiBnLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckRhc2g6IG0sCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyRGFzaE9mZnNldDogdgogICAgICAgICAgICAgICAgfSkpKTsKICAgICAgICAgICAgICAgIHJldHVybiBFLnRpY2tzTGVuZ3RoID0gVCwgRS5ib3JkZXJWYWx1ZSA9IHQsIEUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NvbXB1dGVMYWJlbEl0ZW1zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlLCB0LCBuLCBpLCByLCBvLCBhLCBzLCBsLCBjLCB1LCBkLCBoID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBmID0gaC5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIHAgPSBmLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIGcgPSBmLnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIG0gPSBwLm1pcnJvciwKICAgICAgICAgICAgICAgICAgICB2ID0gaC5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICB5ID0gaC5fdGlja3NUb0RyYXcsCiAgICAgICAgICAgICAgICAgICAgYiA9IGxuKHApLAogICAgICAgICAgICAgICAgICAgIHcgPSBwLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgeCA9IG9uKGYuZ3JpZExpbmVzKSwKICAgICAgICAgICAgICAgICAgICBfID0gLUIudG9SYWRpYW5zKGgubGFiZWxSb3RhdGlvbiksCiAgICAgICAgICAgICAgICAgICAgUyA9IFtdOwogICAgICAgICAgICAgICAgZm9yICgidG9wIiA9PT0gZyA/IChvID0gaC5ib3R0b20gLSB4IC0gdywgYSA9IF8gPyAibGVmdCIgOiAiY2VudGVyIikgOiAiYm90dG9tIiA9PT0gZyA/IChvID0gaC50b3AgKyB4ICsgdywgYSA9IF8gPyAicmlnaHQiIDogImNlbnRlciIpIDogImxlZnQiID09PSBnID8gKHIgPSBoLnJpZ2h0IC0gKG0gPyAwIDogeCkgLSB3LCBhID0gbSA/ICJsZWZ0IiA6ICJyaWdodCIpIDogKHIgPSBoLmxlZnQgKyAobSA/IDAgOiB4KSArIHcsIGEgPSBtID8gInJpZ2h0IiA6ICJsZWZ0IiksIGUgPSAwLCB0ID0geS5sZW5ndGg7IGUgPCB0OyArK2UpIGkgPSAobiA9IHlbZV0pLmxhYmVsLCBlbihpKSB8fCAocyA9IGguZ2V0UGl4ZWxGb3JUaWNrKG4uX2luZGV4IHx8IGUpICsgcC5sYWJlbE9mZnNldCwgYyA9IChsID0gbi5tYWpvciA/IGIubWFqb3IgOiBiLm1pbm9yKS5saW5lSGVpZ2h0LCB1ID0gSnQoaSkgPyBpLmxlbmd0aCA6IDEsIHYgPyAociA9IHMsIGQgPSAidG9wIiA9PT0gZyA/ICgoXyA/IDEgOiAuNSkgLSB1KSAqIGMgOiAoXyA/IDAgOiAuNSkgKiBjKSA6IChvID0gcywgZCA9ICgxIC0gdSkgKiBjIC8gMiksIFMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgeDogciwKICAgICAgICAgICAgICAgICAgICB5OiBvLAogICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOiBfLAogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpLAogICAgICAgICAgICAgICAgICAgIGZvbnQ6IGwsCiAgICAgICAgICAgICAgICAgICAgdGV4dE9mZnNldDogZCwKICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGEKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHJldHVybiBTCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9kcmF3R3JpZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIG4gPSB0Lm9wdGlvbnMuZ3JpZExpbmVzOwogICAgICAgICAgICAgICAgaWYgKG4uZGlzcGxheSkgewogICAgICAgICAgICAgICAgICAgIHZhciBpLCByLCBvLCBhLCBzLCBsID0gdC5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0LmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gQi5fYWxpZ25QaXhlbCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG4uZHJhd0JvcmRlciA/IG5uKG4ubGluZVdpZHRoLCAwLCAwKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB0Ll9ncmlkTGluZUl0ZW1zIHx8ICh0Ll9ncmlkTGluZUl0ZW1zID0gdC5fY29tcHV0ZUdyaWRMaW5lSXRlbXMoZSkpOwogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDAsIGEgPSBoLmxlbmd0aDsgbyA8IGE7ICsrbykgaSA9IChzID0gaFtvXSkud2lkdGgsIHIgPSBzLmNvbG9yLCBpICYmIHIgJiYgKGwuc2F2ZSgpLCBsLmxpbmVXaWR0aCA9IGksIGwuc3Ryb2tlU3R5bGUgPSByLCBsLnNldExpbmVEYXNoICYmIChsLnNldExpbmVEYXNoKHMuYm9yZGVyRGFzaCksIGwubGluZURhc2hPZmZzZXQgPSBzLmJvcmRlckRhc2hPZmZzZXQpLCBsLmJlZ2luUGF0aCgpLCBuLmRyYXdUaWNrcyAmJiAobC5tb3ZlVG8ocy50eDEsIHMudHkxKSwgbC5saW5lVG8ocy50eDIsIHMudHkyKSksIG4uZHJhd09uQ2hhcnRBcmVhICYmIChsLm1vdmVUbyhzLngxLCBzLnkxKSwgbC5saW5lVG8ocy54Miwgcy55MikpLCBsLnN0cm9rZSgpLCBsLnJlc3RvcmUoKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGYsIHAsIGcsIG0sIHYgPSBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG5uKG4ubGluZVdpZHRoLCBoLnRpY2tzTGVuZ3RoIC0gMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gaC5ib3JkZXJWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5pc0hvcml6b250YWwoKSA/IChmID0gdShjLCB0LmxlZnQsIHYpIC0gdiAvIDIsIHAgPSB1KGMsIHQucmlnaHQsIHkpICsgeSAvIDIsIGcgPSBtID0gYikgOiAoZyA9IHUoYywgdC50b3AsIHYpIC0gdiAvIDIsIG0gPSB1KGMsIHQuYm90dG9tLCB5KSArIHkgLyAyLCBmID0gcCA9IGIpLCBsLmxpbmVXaWR0aCA9IGQsIGwuc3Ryb2tlU3R5bGUgPSBubihuLmNvbG9yLCAwKSwgbC5iZWdpblBhdGgoKSwgbC5tb3ZlVG8oZiwgZyksIGwubGluZVRvKHAsIG0pLCBsLnN0cm9rZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZHJhd0xhYmVsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoZS5vcHRpb25zLnRpY2tzLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSwgcywgbCwgYyA9IGUuY3R4LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gZS5fbGFiZWxJdGVtcyB8fCAoZS5fbGFiZWxJdGVtcyA9IGUuX2NvbXB1dGVMYWJlbEl0ZW1zKCkpOwogICAgICAgICAgICAgICAgICAgIGZvciAodCA9IDAsIGkgPSB1Lmxlbmd0aDsgdCA8IGk7ICsrdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IChvID0gdVt0XSkuZm9udCwgYy5zYXZlKCksIGMudHJhbnNsYXRlKG8ueCwgby55KSwgYy5yb3RhdGUoby5yb3RhdGlvbiksIGMuZm9udCA9IGEuc3RyaW5nLCBjLmZpbGxTdHlsZSA9IGEuY29sb3IsIGMudGV4dEJhc2VsaW5lID0gIm1pZGRsZSIsIGMudGV4dEFsaWduID0gby50ZXh0QWxpZ24sIHMgPSBvLmxhYmVsLCBsID0gby50ZXh0T2Zmc2V0LCBKdChzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobiA9IDAsIHIgPSBzLmxlbmd0aDsgbiA8IHI7ICsrbikgYy5maWxsVGV4dCgiIiArIHNbbl0sIDAsIGwpLCBsICs9IGEubGluZUhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjLmZpbGxUZXh0KHMsIDAsIGwpOwogICAgICAgICAgICAgICAgICAgICAgICBjLnJlc3RvcmUoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RyYXdUaXRsZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUuY3R4LAogICAgICAgICAgICAgICAgICAgIG4gPSBlLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgaSA9IG4uc2NhbGVMYWJlbDsKICAgICAgICAgICAgICAgIGlmIChpLmRpc3BsYXkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciwgbywgYSA9IHRuKGkuZm9udENvbG9yLCBGLmdsb2JhbC5kZWZhdWx0Rm9udENvbG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IEIub3B0aW9ucy5fcGFyc2VGb250KGkpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gQi5vcHRpb25zLnRvUGFkZGluZyhpLnBhZGRpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gcy5saW5lSGVpZ2h0IC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IG4ucG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmlzSG9yaXpvbnRhbCgpKSByID0gZS5sZWZ0ICsgZS53aWR0aCAvIDIsIG8gPSAiYm90dG9tIiA9PT0gdSA/IGUuYm90dG9tIC0gYyAtIGwuYm90dG9tIDogZS50b3AgKyBjICsgbC50b3A7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gImxlZnQiID09PSB1OwogICAgICAgICAgICAgICAgICAgICAgICByID0gaCA/IGUubGVmdCArIGMgKyBsLnRvcCA6IGUucmlnaHQgLSBjIC0gbC50b3AsIG8gPSBlLnRvcCArIGUuaGVpZ2h0IC8gMiwgZCA9IGggPyAtLjUgKiBNYXRoLlBJIDogLjUgKiBNYXRoLlBJCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2F2ZSgpLCB0LnRyYW5zbGF0ZShyLCBvKSwgdC5yb3RhdGUoZCksIHQudGV4dEFsaWduID0gImNlbnRlciIsIHQudGV4dEJhc2VsaW5lID0gIm1pZGRsZSIsIHQuZmlsbFN0eWxlID0gYSwgdC5mb250ID0gcy5zdHJpbmcsIHQuZmlsbFRleHQoaS5sYWJlbFN0cmluZywgMCwgMCksIHQucmVzdG9yZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2lzVmlzaWJsZSgpICYmICh0aGlzLl9kcmF3R3JpZChlKSwgdGhpcy5fZHJhd1RpdGxlKCksIHRoaXMuX2RyYXdMYWJlbHMoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2xheWVyczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBuID0gdC50aWNrcyAmJiB0LnRpY2tzLnogfHwgMCwKICAgICAgICAgICAgICAgICAgICBpID0gdC5ncmlkTGluZXMgJiYgdC5ncmlkTGluZXMueiB8fCAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGUuX2lzVmlzaWJsZSgpICYmIG4gIT09IGkgJiYgZS5kcmF3ID09PSBlLl9kcmF3ID8gW3sKICAgICAgICAgICAgICAgICAgICB6OiBpLAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLl9kcmF3R3JpZC5hcHBseShlLCBhcmd1bWVudHMpLCBlLl9kcmF3VGl0bGUuYXBwbHkoZSwgYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICB6OiBuLAogICAgICAgICAgICAgICAgICAgIGRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBlLl9kcmF3TGFiZWxzLmFwcGx5KGUsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9XSA6IFt7CiAgICAgICAgICAgICAgICAgICAgejogbiwKICAgICAgICAgICAgICAgICAgICBkcmF3OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5kcmF3LmFwcGx5KGUsIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICB9LAogICAgICAgICAgICBfZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gdC5pc0hvcml6b250YWwoKTsKICAgICAgICAgICAgICAgIHJldHVybiB0LmNoYXJ0Ll9nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCkuZmlsdGVyKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICghZSB8fCBpLnR5cGUgPT09IGUpICYmIChuID8gaS54QXhpc0lEID09PSB0LmlkIDogaS55QXhpc0lEID09PSB0LmlkKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBkbi5wcm90b3R5cGUuX2RyYXcgPSBkbi5wcm90b3R5cGUuZHJhdzsKICAgICAgICB2YXIgaG4gPSBkbiwKICAgICAgICAgICAgZm4gPSBCLmlzTnVsbE9yVW5kZWYsCiAgICAgICAgICAgIHBuID0gaG4uZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGRldGVybWluZURhdGFMaW1pdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuX2dldExhYmVscygpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLm1heCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBuLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSByICYmIChlID0gbi5pbmRleE9mKHIpKSA+PSAwICYmIChhID0gZSksIHZvaWQgMCAhPT0gbyAmJiAoZSA9IG4uaW5kZXhPZihvKSkgPj0gMCAmJiAocyA9IGUpLCB0Lm1pbkluZGV4ID0gYSwgdC5tYXhJbmRleCA9IHMsIHQubWluID0gblthXSwgdC5tYXggPSBuW3NdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLl9nZXRMYWJlbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMubWluSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLm1heEluZGV4OwogICAgICAgICAgICAgICAgICAgIHRoaXMudGlja3MgPSAwID09PSB0ICYmIG4gPT09IGUubGVuZ3RoIC0gMSA/IGUgOiBlLnNsaWNlKHQsIG4gKyAxKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldExhYmVsRm9ySW5kZXg6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHRoaXMuY2hhcnQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZ2V0RGF0YXNldE1ldGEodCkuY29udHJvbGxlci5fZ2V0VmFsdWVTY2FsZUlkKCkgPT09IHRoaXMuaWQgPyB0aGlzLmdldFJpZ2h0VmFsdWUobi5kYXRhLmRhdGFzZXRzW3RdLmRhdGFbZV0pIDogdGhpcy5fZ2V0TGFiZWxzKClbZV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfY29uZmlndXJlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9wdGlvbnMub2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gZS50aWNrczsKICAgICAgICAgICAgICAgICAgICBobi5wcm90b3R5cGUuX2NvbmZpZ3VyZS5jYWxsKGUpLCBlLmlzSG9yaXpvbnRhbCgpIHx8IChlLl9yZXZlcnNlUGl4ZWxzID0gIWUuX3JldmVyc2VQaXhlbHMpLCBuICYmIChlLl9zdGFydFZhbHVlID0gZS5taW5JbmRleCAtICh0ID8gLjUgOiAwKSwgZS5fdmFsdWVSYW5nZSA9IE1hdGgubWF4KG4ubGVuZ3RoIC0gKHQgPyAwIDogMSksIDEpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFBpeGVsRm9yVmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbywgYSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuKHQpIHx8IGZuKG4pIHx8IChlID0gYS5jaGFydC5kYXRhLmRhdGFzZXRzW25dLmRhdGFbdF0pLCBmbihlKSB8fCAoaSA9IGEuaXNIb3Jpem9udGFsKCkgPyBlLnggOiBlLnkpLCAodm9pZCAwICE9PSBpIHx8IHZvaWQgMCAhPT0gZSAmJiBpc05hTih0KSkgJiYgKHIgPSBhLl9nZXRMYWJlbHMoKSwgZSA9IEIudmFsdWVPckRlZmF1bHQoaSwgZSksIHQgPSAtMSAhPT0gKG8gPSByLmluZGV4T2YoZSkpID8gbyA6IHQsIGlzTmFOKHQpICYmICh0ID0gZSkpLCBhLmdldFBpeGVsRm9yRGVjaW1hbCgodCAtIGEuX3N0YXJ0VmFsdWUpIC8gYS5fdmFsdWVSYW5nZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclRpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudGlja3M7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAwIHx8IGUgPiB0Lmxlbmd0aCAtIDEgPyBudWxsIDogdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRbZV0sIGUgKyB0aGlzLm1pbkluZGV4KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IE1hdGgucm91bmQodGhpcy5fc3RhcnRWYWx1ZSArIHRoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpICogdGhpcy5fdmFsdWVSYW5nZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsIDApLCB0aGlzLnRpY2tzLmxlbmd0aCAtIDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QmFzZVBpeGVsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ib3R0b20KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgcG4uX2RlZmF1bHRzID0gewogICAgICAgICAgICBwb3NpdGlvbjogImJvdHRvbSIKICAgICAgICB9OwogICAgICAgIHZhciBnbiA9IEIubm9vcCwKICAgICAgICAgICAgbW4gPSBCLmlzTnVsbE9yVW5kZWYsCiAgICAgICAgICAgIHZuID0gaG4uZXh0ZW5kKHsKICAgICAgICAgICAgICAgIGdldFJpZ2h0VmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgPyArZSA6IGhuLnByb3RvdHlwZS5nZXRSaWdodFZhbHVlLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoYW5kbGVUaWNrUmFuZ2VPcHRpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9wdGlvbnMudGlja3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuYmVnaW5BdFplcm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBCLnNpZ24oZS5taW4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IEIuc2lnbihlLm1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPCAwICYmIGkgPCAwID8gZS5tYXggPSAwIDogbiA+IDAgJiYgaSA+IDAgJiYgKGUubWluID0gMCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSB2b2lkIDAgIT09IHQubWluIHx8IHZvaWQgMCAhPT0gdC5zdWdnZXN0ZWRNaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgIT09IHQubWF4IHx8IHZvaWQgMCAhPT0gdC5zdWdnZXN0ZWRNYXg7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSB0Lm1pbiA/IGUubWluID0gdC5taW4gOiB2b2lkIDAgIT09IHQuc3VnZ2VzdGVkTWluICYmIChudWxsID09PSBlLm1pbiA/IGUubWluID0gdC5zdWdnZXN0ZWRNaW4gOiBlLm1pbiA9IE1hdGgubWluKGUubWluLCB0LnN1Z2dlc3RlZE1pbikpLCB2b2lkIDAgIT09IHQubWF4ID8gZS5tYXggPSB0Lm1heCA6IHZvaWQgMCAhPT0gdC5zdWdnZXN0ZWRNYXggJiYgKG51bGwgPT09IGUubWF4ID8gZS5tYXggPSB0LnN1Z2dlc3RlZE1heCA6IGUubWF4ID0gTWF0aC5tYXgoZS5tYXgsIHQuc3VnZ2VzdGVkTWF4KSksIHIgIT09IG8gJiYgZS5taW4gPj0gZS5tYXggJiYgKHIgPyBlLm1heCA9IGUubWluICsgMSA6IGUubWluID0gZS5tYXggLSAxKSwgZS5taW4gPT09IGUubWF4ICYmIChlLm1heCsrLCB0LmJlZ2luQXRaZXJvIHx8IGUubWluLS0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0VGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMub3B0aW9ucy50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuc3RlcFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm1heFRpY2tzTGltaXQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPyBlID0gTWF0aC5jZWlsKHRoaXMubWF4IC8gbikgLSBNYXRoLmZsb29yKHRoaXMubWluIC8gbikgKyAxIDogKGUgPSB0aGlzLl9jb21wdXRlVGlja0xpbWl0KCksIGkgPSBpIHx8IDExKSwgaSAmJiAoZSA9IE1hdGgubWluKGksIGUpKSwgZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9jb21wdXRlVGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFuZGxlRGlyZWN0aW9uYWxDaGFuZ2VzOiBnbiwKICAgICAgICAgICAgICAgIGJ1aWxkVGlja3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUub3B0aW9ucy50aWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUuZ2V0VGlja0xpbWl0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhUaWNrczogbiA9IE1hdGgubWF4KDIsIG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdC5tYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHQucHJlY2lzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFNpemU6IEIudmFsdWVPckRlZmF1bHQodC5maXhlZFN0ZXBTaXplLCB0LnN0ZXBTaXplKQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICByID0gZS50aWNrcyA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuLCBpLCByLCBvLCBhID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuc3RlcFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHMgfHwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gZS5tYXhUaWNrcyAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGUubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBlLm1heCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZS5wcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHQubWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0Lm1heCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gQi5uaWNlTnVtKChwIC0gZikgLyBjIC8gbCkgKiBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcgPCAxZS0xNCAmJiBtbih1KSAmJiBtbihkKSkgcmV0dXJuIFtmLCBwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvID0gTWF0aC5jZWlsKHAgLyBnKSAtIE1hdGguZmxvb3IoZiAvIGcpKSA+IGMgJiYgKGcgPSBCLm5pY2VOdW0obyAqIGcgLyBjIC8gbCkgKiBsKSwgcyB8fCBtbihoKSA/IG4gPSBNYXRoLnBvdygxMCwgQi5fZGVjaW1hbFBsYWNlcyhnKSkgOiAobiA9IE1hdGgucG93KDEwLCBoKSwgZyA9IE1hdGguY2VpbChnICogbikgLyBuKSwgaSA9IE1hdGguZmxvb3IoZiAvIGcpICogZywgciA9IE1hdGguY2VpbChwIC8gZykgKiBnLCBzICYmICghbW4odSkgJiYgQi5hbG1vc3RXaG9sZSh1IC8gZywgZyAvIDFlMykgJiYgKGkgPSB1KSwgIW1uKGQpICYmIEIuYWxtb3N0V2hvbGUoZCAvIGcsIGcgLyAxZTMpICYmIChyID0gZCkpLCBvID0gKHIgLSBpKSAvIGcsIG8gPSBCLmFsbW9zdEVxdWFscyhvLCBNYXRoLnJvdW5kKG8pLCBnIC8gMWUzKSA/IE1hdGgucm91bmQobykgOiBNYXRoLmNlaWwobyksIGkgPSBNYXRoLnJvdW5kKGkgKiBuKSAvIG4sIHIgPSBNYXRoLnJvdW5kKHIgKiBuKSAvIG4sIGEucHVzaChtbih1KSA/IGkgOiB1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAxOyBtIDwgbzsgKyttKSBhLnB1c2goTWF0aC5yb3VuZCgoaSArIG0gKiBnKSAqIG4pIC8gbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wdXNoKG1uKGQpID8gciA6IGQpLCBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0oaSwgZSk7CiAgICAgICAgICAgICAgICAgICAgZS5oYW5kbGVEaXJlY3Rpb25hbENoYW5nZXMoKSwgZS5tYXggPSBCLm1heChyKSwgZS5taW4gPSBCLm1pbihyKSwgdC5yZXZlcnNlID8gKHIucmV2ZXJzZSgpLCBlLnN0YXJ0ID0gZS5tYXgsIGUuZW5kID0gZS5taW4pIDogKGUuc3RhcnQgPSBlLm1pbiwgZS5lbmQgPSBlLm1heCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjb252ZXJ0VGlja3NUb0xhYmVsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGUudGlja3NBc051bWJlcnMgPSBlLnRpY2tzLnNsaWNlKCksIGUuemVyb0xpbmVJbmRleCA9IGUudGlja3MuaW5kZXhPZigwKSwgaG4ucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwoZSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfY29uZmlndXJlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmdldFRpY2tzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQubWF4OwogICAgICAgICAgICAgICAgICAgIGhuLnByb3RvdHlwZS5fY29uZmlndXJlLmNhbGwodCksIHQub3B0aW9ucy5vZmZzZXQgJiYgbi5sZW5ndGggJiYgKGkgLT0gZSA9IChyIC0gaSkgLyBNYXRoLm1heChuLmxlbmd0aCAtIDEsIDEpIC8gMiwgciArPSBlKSwgdC5fc3RhcnRWYWx1ZSA9IGksIHQuX2VuZFZhbHVlID0gciwgdC5fdmFsdWVSYW5nZSA9IHIgLSBpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICB5biA9IHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAibGVmdCIsCiAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBadC5mb3JtYXR0ZXJzLmxpbmVhcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBibihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHZhciByLCBvLCBhID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgcyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IFtuLnR5cGUsIHZvaWQgMCA9PT0gdCAmJiB2b2lkIDAgPT09IG4uc3RhY2sgPyBuLmluZGV4IDogIiIsIG4uc3RhY2tdLmpvaW4oIi4iKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlW2ldICYmIChlW2ldID0gewogICAgICAgICAgICAgICAgICAgICAgICBwb3M6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBuZWc6IFtdCiAgICAgICAgICAgICAgICAgICAgfSksIGVbaV0KICAgICAgICAgICAgICAgIH0odCwgYS5zdGFja2VkLCBuKSwKICAgICAgICAgICAgICAgIGwgPSBzLnBvcywKICAgICAgICAgICAgICAgIGMgPSBzLm5lZywKICAgICAgICAgICAgICAgIHUgPSBpLmxlbmd0aDsKICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IHU7ICsrcikgbyA9IGUuX3BhcnNlVmFsdWUoaVtyXSksIGlzTmFOKG8ubWluKSB8fCBpc05hTihvLm1heCkgfHwgbi5kYXRhW3JdLmhpZGRlbiB8fCAobFtyXSA9IGxbcl0gfHwgMCwgY1tyXSA9IGNbcl0gfHwgMCwgYS5yZWxhdGl2ZVBvaW50cyA/IGxbcl0gPSAxMDAgOiBvLm1pbiA8IDAgfHwgby5tYXggPCAwID8gY1tyXSArPSBvLm1pbiA6IGxbcl0gKz0gby5tYXgpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB3bihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByLCBvID0gbi5sZW5ndGg7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvOyArK2kpIHIgPSBlLl9wYXJzZVZhbHVlKG5baV0pLCBpc05hTihyLm1pbikgfHwgaXNOYU4oci5tYXgpIHx8IHQuZGF0YVtpXS5oaWRkZW4gfHwgKGUubWluID0gTWF0aC5taW4oZS5taW4sIHIubWluKSwgZS5tYXggPSBNYXRoLm1heChlLm1heCwgci5tYXgpKQogICAgICAgIH0KICAgICAgICB2YXIgeG4gPSB2bi5leHRlbmQoewogICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGksIHIgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gci5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gci5jaGFydC5kYXRhLmRhdGFzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gci5fZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IG8uc3RhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIubWluID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCByLm1heCA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSwgdm9pZCAwID09PSBsKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyAhbCAmJiBlIDwgdTsgKytlKSBsID0gdm9pZCAwICE9PSAodCA9IHNbZV0pLnN0YWNrOwogICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCB1OyArK2UpIG4gPSBhWyh0ID0gc1tlXSkuaW5kZXhdLmRhdGEsIGwgPyBibihyLCBjLCB0LCBuKSA6IHduKHIsIHQsIG4pOwogICAgICAgICAgICAgICAgICAgIEIuZWFjaChjLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5wb3MuY29uY2F0KGUubmVnKSwgci5taW4gPSBNYXRoLm1pbihyLm1pbiwgQi5taW4oaSkpLCByLm1heCA9IE1hdGgubWF4KHIubWF4LCBCLm1heChpKSkKICAgICAgICAgICAgICAgICAgICB9KSksIHIubWluID0gQi5pc0Zpbml0ZShyLm1pbikgJiYgIWlzTmFOKHIubWluKSA/IHIubWluIDogMCwgci5tYXggPSBCLmlzRmluaXRlKHIubWF4KSAmJiAhaXNOYU4oci5tYXgpID8gci5tYXggOiAxLCByLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9jb21wdXRlVGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKSA/IE1hdGguY2VpbCh0aGlzLndpZHRoIC8gNDApIDogKGUgPSBCLm9wdGlvbnMuX3BhcnNlRm9udCh0aGlzLm9wdGlvbnMudGlja3MpLCBNYXRoLmNlaWwodGhpcy5oZWlnaHQgLyBlLmxpbmVIZWlnaHQpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhhbmRsZURpcmVjdGlvbmFsQ2hhbmdlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hvcml6b250YWwoKSB8fCB0aGlzLnRpY2tzLnJldmVyc2UoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldExhYmVsRm9ySW5kZXg6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U2NhbGVMYWJlbCh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdF0uZGF0YVtlXSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGl4ZWxGb3JEZWNpbWFsKCgrdGhpcy5nZXRSaWdodFZhbHVlKGUpIC0gdGhpcy5fc3RhcnRWYWx1ZSkgLyB0aGlzLl92YWx1ZVJhbmdlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRWYWx1ZSArIHRoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpICogdGhpcy5fdmFsdWVSYW5nZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFBpeGVsRm9yVGljazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy50aWNrc0FzTnVtYmVyczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSA8IDAgfHwgZSA+IHQubGVuZ3RoIC0gMSA/IG51bGwgOiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodFtlXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIF9uID0geW47CiAgICAgICAgeG4uX2RlZmF1bHRzID0gX247CiAgICAgICAgdmFyIFNuID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgQ24gPSBCLm1hdGgubG9nMTAsCiAgICAgICAgICAgIGtuID0gewogICAgICAgICAgICAgICAgcG9zaXRpb246ICJsZWZ0IiwKICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IFp0LmZvcm1hdHRlcnMubG9nYXJpdGhtaWMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gVG4oZSwgdCkgewogICAgICAgICAgICByZXR1cm4gQi5pc0Zpbml0ZShlKSAmJiBlID49IDAgPyBlIDogdAogICAgICAgIH0KICAgICAgICB2YXIgQW4gPSBobi5leHRlbmQoewogICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQsIG4sIGksIHIsIG8sIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gYS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gYS5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGwuZGF0YS5kYXRhc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGEuaXNIb3Jpem9udGFsKCk7CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGQoZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdSA/IGUueEF4aXNJRCA9PT0gYS5pZCA6IGUueUF4aXNJRCA9PT0gYS5pZAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBhLm1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgYS5tYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIGEubWluTm90WmVybyA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHMuc3RhY2tlZDsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBoKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgPSAwOyBlIDwgYy5sZW5ndGg7IGUrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID0gbC5nZXREYXRhc2V0TWV0YShlKSwgbC5pc0RhdGFzZXRWaXNpYmxlKGUpICYmIGQodCkgJiYgdm9pZCAwICE9PSB0LnN0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9ICEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuc3RhY2tlZCB8fCBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBjLmxlbmd0aDsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IFsodCA9IGwuZ2V0RGF0YXNldE1ldGEoZSkpLnR5cGUsIHZvaWQgMCA9PT0gcy5zdGFja2VkICYmIHZvaWQgMCA9PT0gdC5zdGFjayA/IGUgOiAiIiwgdC5zdGFja10uam9pbigiLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuaXNEYXRhc2V0VmlzaWJsZShlKSAmJiBkKHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodm9pZCAwID09PSBmW3BdICYmIChmW3BdID0gW10pLCByID0gMCwgbyA9IChpID0gY1tlXS5kYXRhKS5sZW5ndGg7IHIgPCBvOyByKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBmW3BdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gYS5fcGFyc2VWYWx1ZShpW3JdKSwgaXNOYU4obi5taW4pIHx8IGlzTmFOKG4ubWF4KSB8fCB0LmRhdGFbcl0uaGlkZGVuIHx8IG4ubWluIDwgMCB8fCBuLm1heCA8IDAgfHwgKGdbcl0gPSBnW3JdIHx8IDAsIGdbcl0gKz0gbi5tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEIuZWFjaChmLCAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gQi5taW4oZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBCLm1heChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLm1pbiA9IE1hdGgubWluKGEubWluLCB0KSwgYS5tYXggPSBNYXRoLm1heChhLm1heCwgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZSA9IDA7IGUgPCBjLmxlbmd0aDsgZSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSBsLmdldERhdGFzZXRNZXRhKGUpLCBsLmlzRGF0YXNldFZpc2libGUoZSkgJiYgZCh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHIgPSAwLCBvID0gKGkgPSBjW2VdLmRhdGEpLmxlbmd0aDsgciA8IG87IHIrKykgbiA9IGEuX3BhcnNlVmFsdWUoaVtyXSksIGlzTmFOKG4ubWluKSB8fCBpc05hTihuLm1heCkgfHwgdC5kYXRhW3JdLmhpZGRlbiB8fCBuLm1pbiA8IDAgfHwgbi5tYXggPCAwIHx8IChhLm1pbiA9IE1hdGgubWluKG4ubWluLCBhLm1pbiksIGEubWF4ID0gTWF0aC5tYXgobi5tYXgsIGEubWF4KSwgMCAhPT0gbi5taW4gJiYgKGEubWluTm90WmVybyA9IE1hdGgubWluKG4ubWluLCBhLm1pbk5vdFplcm8pKSk7CiAgICAgICAgICAgICAgICAgICAgYS5taW4gPSBCLmlzRmluaXRlKGEubWluKSA/IGEubWluIDogbnVsbCwgYS5tYXggPSBCLmlzRmluaXRlKGEubWF4KSA/IGEubWF4IDogbnVsbCwgYS5taW5Ob3RaZXJvID0gQi5pc0Zpbml0ZShhLm1pbk5vdFplcm8pID8gYS5taW5Ob3RaZXJvIDogbnVsbCwgdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoYW5kbGVUaWNrUmFuZ2VPcHRpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlLm9wdGlvbnMudGlja3M7CiAgICAgICAgICAgICAgICAgICAgZS5taW4gPSBUbih0Lm1pbiwgZS5taW4pLCBlLm1heCA9IFRuKHQubWF4LCBlLm1heCksIGUubWluID09PSBlLm1heCAmJiAoMCAhPT0gZS5taW4gJiYgbnVsbCAhPT0gZS5taW4gPyAoZS5taW4gPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihDbihlLm1pbikpIC0gMSksIGUubWF4ID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoQ24oZS5tYXgpKSArIDEpKSA6IChlLm1pbiA9IDEsIGUubWF4ID0gMTApKSwgbnVsbCA9PT0gZS5taW4gJiYgKGUubWluID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoQ24oZS5tYXgpKSAtIDEpKSwgbnVsbCA9PT0gZS5tYXggJiYgKGUubWF4ID0gMCAhPT0gZS5taW4gPyBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihDbihlLm1pbikpICsgMSkgOiAxMCksIG51bGwgPT09IGUubWluTm90WmVybyAmJiAoZS5taW4gPiAwID8gZS5taW5Ob3RaZXJvID0gZS5taW4gOiBlLm1heCA8IDEgPyBlLm1pbk5vdFplcm8gPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihDbihlLm1heCkpKSA6IGUubWluTm90WmVybyA9IDEpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gIWUuaXNIb3Jpem9udGFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IFRuKHQubWluKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogVG4odC5tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBlLnRpY2tzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4sIGksIHIgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gU24oZS5taW4sIE1hdGgucG93KDEwLCBNYXRoLmZsb29yKENuKHQubWluKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5mbG9vcihDbih0Lm1heCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBNYXRoLmNlaWwodC5tYXggLyBNYXRoLnBvdygxMCwgYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gbyA/IChuID0gTWF0aC5mbG9vcihDbih0Lm1pbk5vdFplcm8pKSwgaSA9IE1hdGguZmxvb3IodC5taW5Ob3RaZXJvIC8gTWF0aC5wb3coMTAsIG4pKSwgci5wdXNoKG8pLCBvID0gaSAqIE1hdGgucG93KDEwLCBuKSkgOiAobiA9IE1hdGguZmxvb3IoQ24obykpLCBpID0gTWF0aC5mbG9vcihvIC8gTWF0aC5wb3coMTAsIG4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IG4gPCAwID8gTWF0aC5wb3coMTAsIE1hdGguYWJzKG4pKSA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNoKG8pLCAxMCA9PSArK2kgJiYgKGkgPSAxLCBsID0gKytuID49IDAgPyAxIDogbCksIG8gPSBNYXRoLnJvdW5kKGkgKiBNYXRoLnBvdygxMCwgbikgKiBsKSAvIGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKG4gPCBhIHx8IG4gPT09IGEgJiYgaSA8IHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBTbihlLm1heCwgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci5wdXNoKGMpLCByCiAgICAgICAgICAgICAgICAgICAgICAgIH0oaSwgZSk7CiAgICAgICAgICAgICAgICAgICAgZS5tYXggPSBCLm1heChyKSwgZS5taW4gPSBCLm1pbihyKSwgdC5yZXZlcnNlID8gKG4gPSAhbiwgZS5zdGFydCA9IGUubWF4LCBlLmVuZCA9IGUubWluKSA6IChlLnN0YXJ0ID0gZS5taW4sIGUuZW5kID0gZS5tYXgpLCBuICYmIHIucmV2ZXJzZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY29udmVydFRpY2tzVG9MYWJlbHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudGlja1ZhbHVlcyA9IHRoaXMudGlja3Muc2xpY2UoKSwgaG4ucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwodGhpcykKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRMYWJlbEZvckluZGV4OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNjYWxlTGFiZWwodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RdLmRhdGFbZV0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0UGl4ZWxGb3JUaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnRpY2tWYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAwIHx8IGUgPiB0Lmxlbmd0aCAtIDEgPyBudWxsIDogdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRbZV0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2dldEZpcnN0VGlja1ZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBNYXRoLmZsb29yKENuKGUpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihlIC8gTWF0aC5wb3coMTAsIHQpKSAqIE1hdGgucG93KDEwLCB0KQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9jb25maWd1cmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGUubWluLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICBobi5wcm90b3R5cGUuX2NvbmZpZ3VyZS5jYWxsKGUpLCAwID09PSB0ICYmICh0ID0gZS5fZ2V0Rmlyc3RUaWNrVmFsdWUoZS5taW5Ob3RaZXJvKSwgbiA9IFNuKGUub3B0aW9ucy50aWNrcy5mb250U2l6ZSwgRi5nbG9iYWwuZGVmYXVsdEZvbnRTaXplKSAvIGUuX2xlbmd0aCksIGUuX3N0YXJ0VmFsdWUgPSBDbih0KSwgZS5fdmFsdWVPZmZzZXQgPSBuLCBlLl92YWx1ZVJhbmdlID0gKENuKGUubWF4KSAtIENuKHQpKSAvICgxIC0gbikKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRQaXhlbEZvclZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUgPSArdC5nZXRSaWdodFZhbHVlKGUpKSA+IHQubWluICYmIGUgPiAwICYmIChuID0gKENuKGUpIC0gdC5fc3RhcnRWYWx1ZSkgLyB0Ll92YWx1ZVJhbmdlICsgdC5fdmFsdWVPZmZzZXQpLCB0LmdldFBpeGVsRm9yRGVjaW1hbChuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0LmdldERlY2ltYWxGb3JQaXhlbChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCA9PT0gbiAmJiAwID09PSB0Lm1pbiA/IDAgOiBNYXRoLnBvdygxMCwgdC5fc3RhcnRWYWx1ZSArIChuIC0gdC5fdmFsdWVPZmZzZXQpICogdC5fdmFsdWVSYW5nZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSksCiAgICAgICAgICAgIEVuID0ga247CiAgICAgICAgQW4uX2RlZmF1bHRzID0gRW47CiAgICAgICAgdmFyIERuID0gQi52YWx1ZU9yRGVmYXVsdCwKICAgICAgICAgICAgT24gPSBCLnZhbHVlQXRJbmRleE9yRGVmYXVsdCwKICAgICAgICAgICAgTW4gPSBCLm9wdGlvbnMucmVzb2x2ZSwKICAgICAgICAgICAgSW4gPSB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgIGFuaW1hdGU6ICEwLAogICAgICAgICAgICAgICAgcG9zaXRpb246ICJjaGFydEFyZWEiLAogICAgICAgICAgICAgICAgYW5nbGVMaW5lczogewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICEwLAogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAicmdiYSgwLDAsMCwwLjEpIiwKICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDEsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyRGFzaDogW10sCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyRGFzaE9mZnNldDogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgIGNpcmN1bGFyOiAhMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsQmFja2Ryb3A6ICEwLAogICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wQ29sb3I6ICJyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpIiwKICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcFBhZGRpbmdZOiAyLAogICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wUGFkZGluZ1g6IDIsCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IFp0LmZvcm1hdHRlcnMubGluZWFyCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcG9pbnRMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTAsCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIExuKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlLnRpY2tzOwogICAgICAgICAgICByZXR1cm4gdC5kaXNwbGF5ICYmIGUuZGlzcGxheSA/IERuKHQuZm9udFNpemUsIEYuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSkgKyAyICogdC5iYWNrZHJvcFBhZGRpbmdZIDogMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUG4oZSwgdCwgbiwgaSwgcikgewogICAgICAgICAgICByZXR1cm4gZSA9PT0gaSB8fCBlID09PSByID8gewogICAgICAgICAgICAgICAgc3RhcnQ6IHQgLSBuIC8gMiwKICAgICAgICAgICAgICAgIGVuZDogdCArIG4gLyAyCiAgICAgICAgICAgIH0gOiBlIDwgaSB8fCBlID4gciA/IHsKICAgICAgICAgICAgICAgIHN0YXJ0OiB0IC0gbiwKICAgICAgICAgICAgICAgIGVuZDogdAogICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgc3RhcnQ6IHQsCiAgICAgICAgICAgICAgICBlbmQ6IHQgKyBuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGpuKGUpIHsKICAgICAgICAgICAgcmV0dXJuIDAgPT09IGUgfHwgMTgwID09PSBlID8gImNlbnRlciIgOiBlIDwgMTgwID8gImxlZnQiIDogInJpZ2h0IgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTm4oZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciwgbywgYSA9IG4ueSArIGkgLyAyOwogICAgICAgICAgICBpZiAoQi5pc0FycmF5KHQpKQogICAgICAgICAgICAgICAgZm9yIChyID0gMCwgbyA9IHQubGVuZ3RoOyByIDwgbzsgKytyKSBlLmZpbGxUZXh0KHRbcl0sIG4ueCwgYSksIGEgKz0gaTsKICAgICAgICAgICAgZWxzZSBlLmZpbGxUZXh0KHQsIG4ueCwgYSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEZuKGUsIHQsIG4pIHsKICAgICAgICAgICAgOTAgPT09IGUgfHwgMjcwID09PSBlID8gbi55IC09IHQuaCAvIDIgOiAoZSA+IDI3MCB8fCBlIDwgOTApICYmIChuLnkgLT0gdC5oKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUm4oZSkgewogICAgICAgICAgICByZXR1cm4gQi5pc051bWJlcihlKSA/IGUgOiAwCiAgICAgICAgfQogICAgICAgIHZhciAkbiA9IHZuLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBzZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgZS53aWR0aCA9IGUubWF4V2lkdGgsIGUuaGVpZ2h0ID0gZS5tYXhIZWlnaHQsIGUucGFkZGluZ1RvcCA9IExuKGUub3B0aW9ucykgLyAyLCBlLnhDZW50ZXIgPSBNYXRoLmZsb29yKGUud2lkdGggLyAyKSwgZS55Q2VudGVyID0gTWF0aC5mbG9vcigoZS5oZWlnaHQgLSBlLnBhZGRpbmdUb3ApIC8gMiksIGUuZHJhd2luZ0FyZWEgPSBNYXRoLm1pbihlLmhlaWdodCAtIGUucGFkZGluZ1RvcCwgZS53aWR0aCkgLyAyCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5jaGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKICAgICAgICAgICAgICAgICAgICBCLmVhY2godC5kYXRhLmRhdGFzZXRzLCAoZnVuY3Rpb24ociwgbykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pc0RhdGFzZXRWaXNpYmxlKG8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHQuZ2V0RGF0YXNldE1ldGEobyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCLmVhY2goci5kYXRhLCAoZnVuY3Rpb24odCwgcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gK2UuZ2V0UmlnaHRWYWx1ZSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc05hTihvKSB8fCBhLmRhdGFbcl0uaGlkZGVuIHx8IChuID0gTWF0aC5taW4obywgbiksIGkgPSBNYXRoLm1heChvLCBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpLCBlLm1pbiA9IG4gPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA/IDAgOiBuLCBlLm1heCA9IGkgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA/IDAgOiBpLCBlLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9jb21wdXRlVGlja0xpbWl0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuZHJhd2luZ0FyZWEgLyBMbih0aGlzLm9wdGlvbnMpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnZlcnRUaWNrc1RvTGFiZWxzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdm4ucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwoZSksIGUucG9pbnRMYWJlbHMgPSBlLmNoYXJ0LmRhdGEubGFiZWxzLm1hcCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gQi5jYWxsYmFjayhlLm9wdGlvbnMucG9pbnRMYWJlbHMuY2FsbGJhY2ssIGFyZ3VtZW50cywgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IHx8IDAgPT09IHQgPyB0IDogIiIKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRMYWJlbEZvckluZGV4OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICt0aGlzLmdldFJpZ2h0VmFsdWUodGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RdLmRhdGFbZV0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICBlLmRpc3BsYXkgJiYgZS5wb2ludExhYmVscy5kaXNwbGF5ID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IEIub3B0aW9ucy5fcGFyc2VGb250KGUub3B0aW9ucy5wb2ludExhYmVscyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6IGUuaGVpZ2h0IC0gZS5wYWRkaW5nVG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBlLmN0eC5mb250ID0gci5zdHJpbmcsIGUuX3BvaW50TGFiZWxTaXplcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgbCwgYywgdSA9IGUuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgdTsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZS5nZXRQb2ludFBvc2l0aW9uKHQsIGUuZHJhd2luZ0FyZWEgKyA1KSwgcyA9IGUuY3R4LCBsID0gci5saW5lSGVpZ2h0LCBjID0gZS5wb2ludExhYmVsc1t0XSwgbiA9IEIuaXNBcnJheShjKSA/IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBCLmxvbmdlc3RUZXh0KHMsIHMuZm9udCwgYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogYy5sZW5ndGggKiBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHMubWVhc3VyZVRleHQoYykud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5fcG9pbnRMYWJlbFNpemVzW3RdID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZS5nZXRJbmRleEFuZ2xlKHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBCLnRvRGVncmVlcyhkKSAlIDM2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gUG4oaCwgaS54LCBuLncsIDAsIDE4MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFBuKGgsIGkueSwgbi5oLCA5MCwgMjcwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuc3RhcnQgPCBvLmwgJiYgKG8ubCA9IGYuc3RhcnQsIGEubCA9IGQpLCBmLmVuZCA+IG8uciAmJiAoby5yID0gZi5lbmQsIGEuciA9IGQpLCBwLnN0YXJ0IDwgby50ICYmIChvLnQgPSBwLnN0YXJ0LCBhLnQgPSBkKSwgcC5lbmQgPiBvLmIgJiYgKG8uYiA9IHAuZW5kLCBhLmIgPSBkKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0UmVkdWN0aW9ucyhlLmRyYXdpbmdBcmVhLCBvLCBhKQogICAgICAgICAgICAgICAgICAgIH0odGhpcykgOiB0aGlzLnNldENlbnRlclBvaW50KDAsIDAsIDAsIDApCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0UmVkdWN0aW9uczogZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHQubCAvIE1hdGguc2luKG4ubCksCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBNYXRoLm1heCh0LnIgLSBpLndpZHRoLCAwKSAvIE1hdGguc2luKG4uciksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAtdC50IC8gTWF0aC5jb3Mobi50KSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IC1NYXRoLm1heCh0LmIgLSAoaS5oZWlnaHQgLSBpLnBhZGRpbmdUb3ApLCAwKSAvIE1hdGguY29zKG4uYik7CiAgICAgICAgICAgICAgICAgICAgciA9IFJuKHIpLCBvID0gUm4obyksIGEgPSBSbihhKSwgcyA9IFJuKHMpLCBpLmRyYXdpbmdBcmVhID0gTWF0aC5taW4oTWF0aC5mbG9vcihlIC0gKHIgKyBvKSAvIDIpLCBNYXRoLmZsb29yKGUgLSAoYSArIHMpIC8gMikpLCBpLnNldENlbnRlclBvaW50KHIsIG8sIGEsIHMpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0Q2VudGVyUG9pbnQ6IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLndpZHRoIC0gdCAtIHIuZHJhd2luZ0FyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlICsgci5kcmF3aW5nQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4gKyByLmRyYXdpbmdBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gci5oZWlnaHQgLSByLnBhZGRpbmdUb3AgLSBpIC0gci5kcmF3aW5nQXJlYTsKICAgICAgICAgICAgICAgICAgICByLnhDZW50ZXIgPSBNYXRoLmZsb29yKChhICsgbykgLyAyICsgci5sZWZ0KSwgci55Q2VudGVyID0gTWF0aC5mbG9vcigocyArIGwpIC8gMiArIHIudG9wICsgci5wYWRkaW5nVG9wKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEluZGV4QW5nbGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAoZSAqICgzNjAgLyB0LmRhdGEubGFiZWxzLmxlbmd0aCkgKyAoKHQub3B0aW9ucyB8fCB7fSkuc3RhcnRBbmdsZSB8fCAwKSkgJSAzNjA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuIDwgMCA/IG4gKyAzNjAgOiBuKSAqIE1hdGguUEkgKiAyIC8gMzYwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKEIuaXNOdWxsT3JVbmRlZihlKSkgcmV0dXJuIE5hTjsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHQuZHJhd2luZ0FyZWEgLyAodC5tYXggLSB0Lm1pbik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQub3B0aW9ucy50aWNrcy5yZXZlcnNlID8gKHQubWF4IC0gZSkgKiBuIDogKGUgLSB0Lm1pbikgKiBuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0UG9pbnRQb3NpdGlvbjogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdGhpcy5nZXRJbmRleEFuZ2xlKGUpIC0gTWF0aC5QSSAvIDI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5jb3MobikgKiB0ICsgdGhpcy54Q2VudGVyLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnNpbihuKSAqIHQgKyB0aGlzLnlDZW50ZXIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9pbnRQb3NpdGlvbihlLCB0aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKHQpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldEJhc2VQb3NpdGlvbjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLm1heDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZSB8fCAwLCB0aGlzLmJlZ2luQXRaZXJvID8gMCA6IHQgPCAwICYmIG4gPCAwID8gbiA6IHQgPiAwICYmIG4gPiAwID8gdCA6IDApCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgX2RyYXdHcmlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8uZ3JpZExpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gby5hbmdsZUxpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gRG4ocy5saW5lV2lkdGgsIGEubGluZVdpZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IERuKHMuY29sb3IsIGEuY29sb3IpOwogICAgICAgICAgICAgICAgICAgIGlmIChvLnBvaW50TGFiZWxzLmRpc3BsYXkgJiYgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuLnBvaW50TGFiZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBMbihuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gZS5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShuLnRpY2tzLnJldmVyc2UgPyBlLm1pbiA6IGUubWF4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gQi5vcHRpb25zLl9wYXJzZUZvbnQoaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNhdmUoKSwgdC5mb250ID0gYS5zdHJpbmcsIHQudGV4dEJhc2VsaW5lID0gIm1pZGRsZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gZS5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGggLSAxOyBzID49IDA7IHMtLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gMCA9PT0gcyA/IHIgLyAyIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGUuZ2V0UG9pbnRQb3NpdGlvbihzLCBvICsgbCArIDUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gT24oaS5mb250Q29sb3IsIHMsIEYuZ2xvYmFsLmRlZmF1bHRGb250Q29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZmlsbFN0eWxlID0gdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGUuZ2V0SW5kZXhBbmdsZShzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IEIudG9EZWdyZWVzKGQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudGV4dEFsaWduID0gam4oaCksIEZuKGgsIGUuX3BvaW50TGFiZWxTaXplc1tzXSwgYyksIE5uKHQsIGUucG9pbnRMYWJlbHNbc10sIGMsIGEubGluZUhlaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVzdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0oaSksIGEuZGlzcGxheSAmJiBCLmVhY2goaS50aWNrcywgKGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgIT09IG4gJiYgKHQgPSBpLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKGkudGlja3NBc051bWJlcnNbbl0pLCBmdW5jdGlvbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIsIG8gPSBlLmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuY2lyY3VsYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLmNoYXJ0LmRhdGEubGFiZWxzLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IE9uKHQuY29sb3IsIGkgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IE9uKHQubGluZVdpZHRoLCBpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHx8IHMpICYmIGwgJiYgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5zYXZlKCksIG8uc3Ryb2tlU3R5bGUgPSBsLCBvLmxpbmVXaWR0aCA9IGMsIG8uc2V0TGluZURhc2ggJiYgKG8uc2V0TGluZURhc2godC5ib3JkZXJEYXNoIHx8IFtdKSwgby5saW5lRGFzaE9mZnNldCA9IHQuYm9yZGVyRGFzaE9mZnNldCB8fCAwKSwgby5iZWdpblBhdGgoKSwgYSkgby5hcmMoZS54Q2VudGVyLCBlLnlDZW50ZXIsIG4sIDAsIDIgKiBNYXRoLlBJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gZS5nZXRQb2ludFBvc2l0aW9uKDAsIG4pLCBvLm1vdmVUbyhyLngsIHIueSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB1ID0gMTsgdSA8IHM7IHUrKykgciA9IGUuZ2V0UG9pbnRQb3NpdGlvbih1LCBuKSwgby5saW5lVG8oci54LCByLnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jbG9zZVBhdGgoKSwgby5zdHJva2UoKSwgby5yZXN0b3JlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KGksIGEsIHQsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHMuZGlzcGxheSAmJiBsICYmIGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChyLnNhdmUoKSwgci5saW5lV2lkdGggPSBsLCByLnN0cm9rZVN0eWxlID0gYywgci5zZXRMaW5lRGFzaCAmJiAoci5zZXRMaW5lRGFzaChNbihbcy5ib3JkZXJEYXNoLCBhLmJvcmRlckRhc2gsIFtdXSkpLCByLmxpbmVEYXNoT2Zmc2V0ID0gTW4oW3MuYm9yZGVyRGFzaE9mZnNldCwgYS5ib3JkZXJEYXNoT2Zmc2V0LCAwXSkpLCBlID0gaS5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGggLSAxOyBlID49IDA7IGUtLSkgdCA9IGkuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby50aWNrcy5yZXZlcnNlID8gaS5taW4gOiBpLm1heCksIG4gPSBpLmdldFBvaW50UG9zaXRpb24oZSwgdCksIHIuYmVnaW5QYXRoKCksIHIubW92ZVRvKGkueENlbnRlciwgaS55Q2VudGVyKSwgci5saW5lVG8obi54LCBuLnkpLCByLnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgICAgICByLnJlc3RvcmUoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBfZHJhd0xhYmVsczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gZS5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLm9wdGlvbnMudGlja3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4uZGlzcGxheSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSwgciwgbyA9IGUuZ2V0SW5kZXhBbmdsZSgwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBCLm9wdGlvbnMuX3BhcnNlRm9udChuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBEbihuLmZvbnRDb2xvciwgRi5nbG9iYWwuZGVmYXVsdEZvbnRDb2xvcik7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2F2ZSgpLCB0LmZvbnQgPSBhLnN0cmluZywgdC50cmFuc2xhdGUoZS54Q2VudGVyLCBlLnlDZW50ZXIpLCB0LnJvdGF0ZShvKSwgdC50ZXh0QWxpZ24gPSAiY2VudGVyIiwgdC50ZXh0QmFzZWxpbmUgPSAibWlkZGxlIiwgQi5lYWNoKGUudGlja3MsIChmdW5jdGlvbihvLCBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCAhPT0gbCB8fCBuLnJldmVyc2UpICYmIChpID0gZS5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShlLnRpY2tzQXNOdW1iZXJzW2xdKSwgbi5zaG93TGFiZWxCYWNrZHJvcCAmJiAociA9IHQubWVhc3VyZVRleHQobykud2lkdGgsIHQuZmlsbFN0eWxlID0gbi5iYWNrZHJvcENvbG9yLCB0LmZpbGxSZWN0KC1yIC8gMiAtIG4uYmFja2Ryb3BQYWRkaW5nWCwgLWkgLSBhLnNpemUgLyAyIC0gbi5iYWNrZHJvcFBhZGRpbmdZLCByICsgMiAqIG4uYmFja2Ryb3BQYWRkaW5nWCwgYS5zaXplICsgMiAqIG4uYmFja2Ryb3BQYWRkaW5nWSkpLCB0LmZpbGxTdHlsZSA9IHMsIHQuZmlsbFRleHQobywgMCwgLWkpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSksIHQucmVzdG9yZSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF9kcmF3VGl0bGU6IEIubm9vcAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgem4gPSBJbjsKICAgICAgICAkbi5fZGVmYXVsdHMgPSB6bjsKICAgICAgICB2YXIgSG4gPSBCLl9kZXByZWNhdGVkLAogICAgICAgICAgICBCbiA9IEIub3B0aW9ucy5yZXNvbHZlLAogICAgICAgICAgICBXbiA9IEIudmFsdWVPckRlZmF1bHQsCiAgICAgICAgICAgIHFuID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgfHwgLTkwMDcxOTkyNTQ3NDA5OTEsCiAgICAgICAgICAgIFVuID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MSwKICAgICAgICAgICAgVm4gPSB7CiAgICAgICAgICAgICAgICBtaWxsaXNlY29uZDogewogICAgICAgICAgICAgICAgICAgIGNvbW1vbjogITAsCiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMSwKICAgICAgICAgICAgICAgICAgICBzdGVwczogMWUzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2Vjb25kOiB7CiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICBzaXplOiAxZTMsCiAgICAgICAgICAgICAgICAgICAgc3RlcHM6IDYwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbWludXRlOiB7CiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICBzaXplOiA2ZTQsCiAgICAgICAgICAgICAgICAgICAgc3RlcHM6IDYwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaG91cjogewogICAgICAgICAgICAgICAgICAgIGNvbW1vbjogITAsCiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMzZlNSwKICAgICAgICAgICAgICAgICAgICBzdGVwczogMjQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXk6IHsKICAgICAgICAgICAgICAgICAgICBjb21tb246ICEwLAogICAgICAgICAgICAgICAgICAgIHNpemU6IDg2NGU1LAogICAgICAgICAgICAgICAgICAgIHN0ZXBzOiAzMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHdlZWs6IHsKICAgICAgICAgICAgICAgICAgICBjb21tb246ICExLAogICAgICAgICAgICAgICAgICAgIHNpemU6IDYwNDhlNSwKICAgICAgICAgICAgICAgICAgICBzdGVwczogNAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG1vbnRoOiB7CiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICBzaXplOiAyNjI4ZTYsCiAgICAgICAgICAgICAgICAgICAgc3RlcHM6IDEyCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcXVhcnRlcjogewogICAgICAgICAgICAgICAgICAgIGNvbW1vbjogITEsCiAgICAgICAgICAgICAgICAgICAgc2l6ZTogNzg4NGU2LAogICAgICAgICAgICAgICAgICAgIHN0ZXBzOiA0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeWVhcjogewogICAgICAgICAgICAgICAgICAgIGNvbW1vbjogITAsCiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMzE1NGU3CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFluID0gT2JqZWN0LmtleXMoVm4pOwoKICAgICAgICBmdW5jdGlvbiBYbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlIC0gdAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR24oZSkgewogICAgICAgICAgICByZXR1cm4gQi52YWx1ZU9yRGVmYXVsdChlLnRpbWUubWluLCBlLnRpY2tzLm1pbikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEtuKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEIudmFsdWVPckRlZmF1bHQoZS50aW1lLm1heCwgZS50aWNrcy5tYXgpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBRbihlLCB0LCBuLCBpKSB7CiAgICAgICAgICAgIHZhciByID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGksIHIsIG8sIGEgPSAwLCBzID0gZS5sZW5ndGggLSAxOyBhID49IDAgJiYgYSA8PSBzOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9IGVbKGkgPSBhICsgcyA+PiAxKSAtIDFdIHx8IG51bGwsIG8gPSBlW2ldLCAhcikgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGk6IG8KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9bdF0gPCBuKSBhID0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoclt0XSA+IG4pKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpOiBvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbG86IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGhpOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfShlLCB0LCBuKSwKICAgICAgICAgICAgICAgIG8gPSByLmxvID8gci5oaSA/IHIubG8gOiBlW2UubGVuZ3RoIC0gMl0gOiBlWzBdLAogICAgICAgICAgICAgICAgYSA9IHIubG8gPyByLmhpID8gci5oaSA6IGVbZS5sZW5ndGggLSAxXSA6IGVbMV0sCiAgICAgICAgICAgICAgICBzID0gYVt0XSAtIG9bdF0sCiAgICAgICAgICAgICAgICBsID0gcyA/IChuIC0gb1t0XSkgLyBzIDogMCwKICAgICAgICAgICAgICAgIGMgPSAoYVtpXSAtIG9baV0pICogbDsKICAgICAgICAgICAgcmV0dXJuIG9baV0gKyBjCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBabihlLCB0KSB7CiAgICAgICAgICAgIHZhciBuID0gZS5fYWRhcHRlciwKICAgICAgICAgICAgICAgIGkgPSBlLm9wdGlvbnMudGltZSwKICAgICAgICAgICAgICAgIHIgPSBpLnBhcnNlciwKICAgICAgICAgICAgICAgIG8gPSByIHx8IGkuZm9ybWF0LAogICAgICAgICAgICAgICAgYSA9IHQ7CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiByICYmIChhID0gcihhKSksIEIuaXNGaW5pdGUoYSkgfHwgKGEgPSAic3RyaW5nIiA9PSB0eXBlb2YgbyA/IG4ucGFyc2UoYSwgbykgOiBuLnBhcnNlKGEpKSwgbnVsbCAhPT0gYSA/ICthIDogKHIgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgbyB8fCAoYSA9IG8odCksIEIuaXNGaW5pdGUoYSkgfHwgKGEgPSBuLnBhcnNlKGEpKSksIGEpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBKbihlLCB0KSB7CiAgICAgICAgICAgIGlmIChCLmlzTnVsbE9yVW5kZWYodCkpIHJldHVybiBudWxsOwogICAgICAgICAgICB2YXIgbiA9IGUub3B0aW9ucy50aW1lLAogICAgICAgICAgICAgICAgaSA9IFpuKGUsIGUuZ2V0UmlnaHRWYWx1ZSh0KSk7CiAgICAgICAgICAgIHJldHVybiBudWxsID09PSBpIHx8IG4ucm91bmQgJiYgKGkgPSArZS5fYWRhcHRlci5zdGFydE9mKGksIG4ucm91bmQpKSwgaQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZWkoZSwgdCwgbiwgaSkgewogICAgICAgICAgICB2YXIgciwgbywgYSwgcyA9IFluLmxlbmd0aDsKICAgICAgICAgICAgZm9yIChyID0gWW4uaW5kZXhPZihlKTsgciA8IHMgLSAxOyArK3IpCiAgICAgICAgICAgICAgICBpZiAoYSA9IChvID0gVm5bWW5bcl1dKS5zdGVwcyA/IG8uc3RlcHMgOiBVbiwgby5jb21tb24gJiYgTWF0aC5jZWlsKChuIC0gdCkgLyAoYSAqIG8uc2l6ZSkpIDw9IGkpIHJldHVybiBZbltyXTsKICAgICAgICAgICAgcmV0dXJuIFluW3MgLSAxXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdGkoZSwgdCwgbikgewogICAgICAgICAgICB2YXIgaSwgciwgbyA9IFtdLAogICAgICAgICAgICAgICAgYSA9IHt9LAogICAgICAgICAgICAgICAgcyA9IHQubGVuZ3RoOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgczsgKytpKSBhW3IgPSB0W2ldXSA9IGksIG8ucHVzaCh7CiAgICAgICAgICAgICAgICB2YWx1ZTogciwKICAgICAgICAgICAgICAgIG1ham9yOiAhMQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIDAgIT09IHMgJiYgbiA/IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIHZhciByLCBvLCBhID0gZS5fYWRhcHRlciwKICAgICAgICAgICAgICAgICAgICBzID0gK2Euc3RhcnRPZih0WzBdLnZhbHVlLCBpKSwKICAgICAgICAgICAgICAgICAgICBsID0gdFt0Lmxlbmd0aCAtIDFdLnZhbHVlOwogICAgICAgICAgICAgICAgZm9yIChyID0gczsgciA8PSBsOyByID0gK2EuYWRkKHIsIDEsIGkpKShvID0gbltyXSkgPj0gMCAmJiAodFtvXS5tYWpvciA9ICEwKTsKICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgIH0oZSwgbywgYSwgbikgOiBvCiAgICAgICAgfQogICAgICAgIHZhciBuaSA9IGhuLmV4dGVuZCh7CiAgICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy5tZXJnZVRpY2tzT3B0aW9ucygpLCBobi5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgdCA9IGUub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBuID0gdC50aW1lIHx8ICh0LnRpbWUgPSB7fSksCiAgICAgICAgICAgICAgICAgICAgaSA9IGUuX2FkYXB0ZXIgPSBuZXcgUXQuX2RhdGUodC5hZGFwdGVycy5kYXRlKTsKICAgICAgICAgICAgICAgIHJldHVybiBIbigidGltZSBzY2FsZSIsIG4uZm9ybWF0LCAidGltZS5mb3JtYXQiLCAidGltZS5wYXJzZXIiKSwgSG4oInRpbWUgc2NhbGUiLCBuLm1pbiwgInRpbWUubWluIiwgInRpY2tzLm1pbiIpLCBIbigidGltZSBzY2FsZSIsIG4ubWF4LCAidGltZS5tYXgiLCAidGlja3MubWF4IiksIEIubWVyZ2VJZihuLmRpc3BsYXlGb3JtYXRzLCBpLmZvcm1hdHMoKSksIGhuLnByb3RvdHlwZS51cGRhdGUuYXBwbHkoZSwgYXJndW1lbnRzKQogICAgICAgICAgICB9LAogICAgICAgICAgICBnZXRSaWdodFZhbHVlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiB2b2lkIDAgIT09IGUudCAmJiAoZSA9IGUudCksIGhuLnByb3RvdHlwZS5nZXRSaWdodFZhbHVlLmNhbGwodGhpcywgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgaSwgciwgbywgYSwgcyA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgbCA9IHMuY2hhcnQsCiAgICAgICAgICAgICAgICAgICAgYyA9IHMuX2FkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgdSA9IHMub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBkID0gdS50aW1lLnVuaXQgfHwgImRheSIsCiAgICAgICAgICAgICAgICAgICAgaCA9IFVuLAogICAgICAgICAgICAgICAgICAgIGYgPSBxbiwKICAgICAgICAgICAgICAgICAgICBwID0gW10sCiAgICAgICAgICAgICAgICAgICAgZyA9IFtdLAogICAgICAgICAgICAgICAgICAgIG0gPSBbXSwKICAgICAgICAgICAgICAgICAgICB2ID0gcy5fZ2V0TGFiZWxzKCk7CiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBuID0gdi5sZW5ndGg7IGUgPCBuOyArK2UpIG0ucHVzaChKbihzLCB2W2VdKSk7CiAgICAgICAgICAgICAgICBmb3IgKGUgPSAwLCBuID0gKGwuZGF0YS5kYXRhc2V0cyB8fCBbXSkubGVuZ3RoOyBlIDwgbjsgKytlKQogICAgICAgICAgICAgICAgICAgIGlmIChsLmlzRGF0YXNldFZpc2libGUoZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0gbC5kYXRhLmRhdGFzZXRzW2VdLmRhdGEsIEIuaXNPYmplY3QoclswXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGdbZV0gPSBbXSwgdCA9IDAsIGkgPSByLmxlbmd0aDsgdCA8IGk7ICsrdCkgbyA9IEpuKHMsIHJbdF0pLCBwLnB1c2gobyksIGdbZV1bdF0gPSBvOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGdbZV0gPSBtLnNsaWNlKDApLCBhIHx8IChwID0gcC5jb25jYXQobSksIGEgPSAhMCk7CiAgICAgICAgICAgICAgICBlbHNlIGdbZV0gPSBbXTsKICAgICAgICAgICAgICAgIG0ubGVuZ3RoICYmIChoID0gTWF0aC5taW4oaCwgbVswXSksIGYgPSBNYXRoLm1heChmLCBtW20ubGVuZ3RoIC0gMV0pKSwgcC5sZW5ndGggJiYgKHAgPSBuID4gMSA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBvID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yICh0ID0gMCwgbiA9IGUubGVuZ3RoOyB0IDwgbjsgKyt0KSByW2kgPSBlW3RdXSB8fCAocltpXSA9ICEwLCBvLnB1c2goaSkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgICAgICB9KHApLnNvcnQoWG4pIDogcC5zb3J0KFhuKSwgaCA9IE1hdGgubWluKGgsIHBbMF0pLCBmID0gTWF0aC5tYXgoZiwgcFtwLmxlbmd0aCAtIDFdKSksIGggPSBKbihzLCBHbih1KSkgfHwgaCwgZiA9IEpuKHMsIEtuKHUpKSB8fCBmLCBoID0gaCA9PT0gVW4gPyArYy5zdGFydE9mKERhdGUubm93KCksIGQpIDogaCwgZiA9IGYgPT09IHFuID8gK2MuZW5kT2YoRGF0ZS5ub3coKSwgZCkgKyAxIDogZiwgcy5taW4gPSBNYXRoLm1pbihoLCBmKSwgcy5tYXggPSBNYXRoLm1heChoICsgMSwgZiksIHMuX3RhYmxlID0gW10sIHMuX3RpbWVzdGFtcHMgPSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YTogcCwKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogZywKICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IG0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnVpbGRUaWNrczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgdCwgbiwgaSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgciA9IGkubWluLAogICAgICAgICAgICAgICAgICAgIG8gPSBpLm1heCwKICAgICAgICAgICAgICAgICAgICBhID0gaS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIHMgPSBhLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIGwgPSBhLnRpbWUsCiAgICAgICAgICAgICAgICAgICAgYyA9IGkuX3RpbWVzdGFtcHMsCiAgICAgICAgICAgICAgICAgICAgdSA9IFtdLAogICAgICAgICAgICAgICAgICAgIGQgPSBpLmdldExhYmVsQ2FwYWNpdHkociksCiAgICAgICAgICAgICAgICAgICAgaCA9IHMuc291cmNlLAogICAgICAgICAgICAgICAgICAgIGYgPSBhLmRpc3RyaWJ1dGlvbjsKICAgICAgICAgICAgICAgIGZvciAoYyA9ICJkYXRhIiA9PT0gaCB8fCAiYXV0byIgPT09IGggJiYgInNlcmllcyIgPT09IGYgPyBjLmRhdGEgOiAibGFiZWxzIiA9PT0gaCA/IGMubGFiZWxzIDogZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciwgbyA9IGUuX2FkYXB0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZS5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGEudGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzLnVuaXQgfHwgZWkocy5taW5Vbml0LCB0LCBuLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBCbihbcy5zdGVwU2l6ZSwgcy51bml0U3RlcFNpemUsIDFdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSAid2VlayIgPT09IGwgJiYgcy5pc29XZWVrZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1ICYmIChkID0gK28uc3RhcnRPZihkLCAiaXNvV2VlayIsIHUpKSwgZCA9ICtvLnN0YXJ0T2YoZCwgdSA/ICJkYXkiIDogbCksIG8uZGlmZihuLCB0LCBsKSA+IDFlNSAqIGMpIHRocm93IHQgKyAiIGFuZCAiICsgbiArICIgYXJlIHRvbyBmYXIgYXBhcnQgd2l0aCBzdGVwU2l6ZSBvZiAiICsgYyArICIgIiArIGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAociA9IGQ7IHIgPCBuOyByID0gK28uYWRkKHIsIGMsIGwpKSBoLnB1c2gocik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByICE9PSBuICYmICJ0aWNrcyIgIT09IGEuYm91bmRzIHx8IGgucHVzaChyKSwgaAogICAgICAgICAgICAgICAgICAgIH0oaSwgciwgbywgZCksICJ0aWNrcyIgPT09IGEuYm91bmRzICYmIGMubGVuZ3RoICYmIChyID0gY1swXSwgbyA9IGNbYy5sZW5ndGggLSAxXSksIHIgPSBKbihpLCBHbihhKSkgfHwgciwgbyA9IEpuKGksIEtuKGEpKSB8fCBvLCBlID0gMCwgdCA9IGMubGVuZ3RoOyBlIDwgdDsgKytlKShuID0gY1tlXSkgPj0gciAmJiBuIDw9IG8gJiYgdS5wdXNoKG4pOwogICAgICAgICAgICAgICAgcmV0dXJuIGkubWluID0gciwgaS5tYXggPSBvLCBpLl91bml0ID0gbC51bml0IHx8IChzLmF1dG9Ta2lwID8gZWkobC5taW5Vbml0LCBpLm1pbiwgaS5tYXgsIGQpIDogZnVuY3Rpb24oZSwgdCwgbiwgaSwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCBhOwogICAgICAgICAgICAgICAgICAgIGZvciAobyA9IFluLmxlbmd0aCAtIDE7IG8gPj0gWW4uaW5kZXhPZihuKTsgby0tKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IFluW29dLCBWblthXS5jb21tb24gJiYgZS5fYWRhcHRlci5kaWZmKHIsIGksIGEpID49IHQgLSAxKSByZXR1cm4gYTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWW5bbiA/IFluLmluZGV4T2YobikgOiAwXQogICAgICAgICAgICAgICAgfShpLCB1Lmxlbmd0aCwgbC5taW5Vbml0LCBpLm1pbiwgaS5tYXgpKSwgaS5fbWFqb3JVbml0ID0gcy5tYWpvci5lbmFibGVkICYmICJ5ZWFyIiAhPT0gaS5fdW5pdCA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0ID0gWW4uaW5kZXhPZihlKSArIDEsIG4gPSBZbi5sZW5ndGg7IHQgPCBuOyArK3QpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWbltZblt0XV0uY29tbW9uKSByZXR1cm4gWW5bdF0KICAgICAgICAgICAgICAgIH0oaS5fdW5pdCkgOiB2b2lkIDAsIGkuX3RhYmxlID0gZnVuY3Rpb24oZSwgdCwgbiwgaSkgewogICAgICAgICAgICAgICAgICAgIGlmICgibGluZWFyIiA9PT0gaSB8fCAhZS5sZW5ndGgpIHJldHVybiBbewogICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDAKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIHBvczogMQogICAgICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICAgICAgICAgIHZhciByLCBvLCBhLCBzLCBsLCBjID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBbdF07CiAgICAgICAgICAgICAgICAgICAgZm9yIChyID0gMCwgbyA9IGUubGVuZ3RoOyByIDwgbzsgKytyKShzID0gZVtyXSkgPiB0ICYmIHMgPCBuICYmIHUucHVzaChzKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHUucHVzaChuKSwgciA9IDAsIG8gPSB1Lmxlbmd0aDsgciA8IG87ICsrcikgbCA9IHVbciArIDFdLCBhID0gdVtyIC0gMV0sIHMgPSB1W3JdLCB2b2lkIDAgIT09IGEgJiYgdm9pZCAwICE9PSBsICYmIE1hdGgucm91bmQoKGwgKyBhKSAvIDIpID09PSBzIHx8IGMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvczogciAvIChvIC0gMSkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICAgICAgfShpLl90aW1lc3RhbXBzLmRhdGEsIHIsIG8sIGYpLCBpLl9vZmZzZXRzID0gZnVuY3Rpb24oZSwgdCwgbiwgaSwgcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvLCBhLCBzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIub2Zmc2V0ICYmIHQubGVuZ3RoICYmIChvID0gUW4oZSwgInRpbWUiLCB0WzBdLCAicG9zIiksIHMgPSAxID09PSB0Lmxlbmd0aCA/IDEgLSBvIDogKFFuKGUsICJ0aW1lIiwgdFsxXSwgInBvcyIpIC0gbykgLyAyLCBhID0gUW4oZSwgInRpbWUiLCB0W3QubGVuZ3RoIC0gMV0sICJwb3MiKSwgbCA9IDEgPT09IHQubGVuZ3RoID8gYSA6IChhIC0gUW4oZSwgInRpbWUiLCB0W3QubGVuZ3RoIC0gMl0sICJwb3MiKSkgLyAyKSwgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcywKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBsLAogICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3I6IDEgLyAocyArIDEgKyBsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oaS5fdGFibGUsIHUsIDAsIDAsIGEpLCBzLnJldmVyc2UgJiYgdS5yZXZlcnNlKCksIHRpKGksIHUsIGkuX21ham9yVW5pdCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGFiZWxGb3JJbmRleDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGkgPSBuLl9hZGFwdGVyLAogICAgICAgICAgICAgICAgICAgIHIgPSBuLmNoYXJ0LmRhdGEsCiAgICAgICAgICAgICAgICAgICAgbyA9IG4ub3B0aW9ucy50aW1lLAogICAgICAgICAgICAgICAgICAgIGEgPSByLmxhYmVscyAmJiBlIDwgci5sYWJlbHMubGVuZ3RoID8gci5sYWJlbHNbZV0gOiAiIiwKICAgICAgICAgICAgICAgICAgICBzID0gci5kYXRhc2V0c1t0XS5kYXRhW2VdOwogICAgICAgICAgICAgICAgcmV0dXJuIEIuaXNPYmplY3QocykgJiYgKGEgPSBuLmdldFJpZ2h0VmFsdWUocykpLCBvLnRvb2x0aXBGb3JtYXQgPyBpLmZvcm1hdChabihuLCBhKSwgby50b29sdGlwRm9ybWF0KSA6ICJzdHJpbmciID09IHR5cGVvZiBhID8gYSA6IGkuZm9ybWF0KFpuKG4sIGEpLCBvLmRpc3BsYXlGb3JtYXRzLmRhdGV0aW1lKQogICAgICAgICAgICB9LAogICAgICAgICAgICB0aWNrRm9ybWF0RnVuY3Rpb246IGZ1bmN0aW9uKGUsIHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy5fYWRhcHRlciwKICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGEgPSBvLnRpbWUuZGlzcGxheUZvcm1hdHMsCiAgICAgICAgICAgICAgICAgICAgcyA9IGFbdGhpcy5fdW5pdF0sCiAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuX21ham9yVW5pdCwKICAgICAgICAgICAgICAgICAgICBjID0gYVtsXSwKICAgICAgICAgICAgICAgICAgICB1ID0gblt0XSwKICAgICAgICAgICAgICAgICAgICBkID0gby50aWNrcywKICAgICAgICAgICAgICAgICAgICBoID0gbCAmJiBjICYmIHUgJiYgdS5tYWpvciwKICAgICAgICAgICAgICAgICAgICBmID0gci5mb3JtYXQoZSwgaSB8fCAoaCA/IGMgOiBzKSksCiAgICAgICAgICAgICAgICAgICAgcCA9IGggPyBkLm1ham9yIDogZC5taW5vciwKICAgICAgICAgICAgICAgICAgICBnID0gQm4oW3AuY2FsbGJhY2ssIHAudXNlckNhbGxiYWNrLCBkLmNhbGxiYWNrLCBkLnVzZXJDYWxsYmFja10pOwogICAgICAgICAgICAgICAgcmV0dXJuIGcgPyBnKGYsIHQsIG4pIDogZgogICAgICAgICAgICB9LAogICAgICAgICAgICBjb252ZXJ0VGlja3NUb0xhYmVsczogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQsIG4sIGkgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodCA9IDAsIG4gPSBlLmxlbmd0aDsgdCA8IG47ICsrdCkgaS5wdXNoKHRoaXMudGlja0Zvcm1hdEZ1bmN0aW9uKGVbdF0udmFsdWUsIHQsIGUpKTsKICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFBpeGVsRm9yT2Zmc2V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX29mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgbiA9IFFuKHRoaXMuX3RhYmxlLCAidGltZSIsIGUsICJwb3MiKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgodC5zdGFydCArIG4pICogdC5mYWN0b3IpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFBpeGVsRm9yVmFsdWU6IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgICAgIHZhciBpID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQgJiYgdm9pZCAwICE9PSBuICYmIChpID0gdGhpcy5fdGltZXN0YW1wcy5kYXRhc2V0c1tuXVt0XSksIG51bGwgPT09IGkgJiYgKGkgPSBKbih0aGlzLCBlKSksIG51bGwgIT09IGkpIHJldHVybiB0aGlzLmdldFBpeGVsRm9yT2Zmc2V0KGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFBpeGVsRm9yVGljazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmdldFRpY2tzKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA+PSAwICYmIGUgPCB0Lmxlbmd0aCA/IHRoaXMuZ2V0UGl4ZWxGb3JPZmZzZXQodFtlXS52YWx1ZSkgOiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldFZhbHVlRm9yUGl4ZWw6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkgLyB0LmZhY3RvciAtIHQuZW5kLAogICAgICAgICAgICAgICAgICAgIGkgPSBRbih0aGlzLl90YWJsZSwgInBvcyIsIG4sICJ0aW1lIik7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRhcHRlci5fY3JlYXRlKGkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9nZXRMYWJlbFNpemU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5vcHRpb25zLnRpY2tzLAogICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmN0eC5tZWFzdXJlVGV4dChlKS53aWR0aCwKICAgICAgICAgICAgICAgICAgICBpID0gQi50b1JhZGlhbnModGhpcy5pc0hvcml6b250YWwoKSA/IHQubWF4Um90YXRpb24gOiB0Lm1pblJvdGF0aW9uKSwKICAgICAgICAgICAgICAgICAgICByID0gTWF0aC5jb3MoaSksCiAgICAgICAgICAgICAgICAgICAgbyA9IE1hdGguc2luKGkpLAogICAgICAgICAgICAgICAgICAgIGEgPSBXbih0LmZvbnRTaXplLCBGLmdsb2JhbC5kZWZhdWx0Rm9udFNpemUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB3OiBuICogciArIGEgKiBvLAogICAgICAgICAgICAgICAgICAgIGg6IG4gKiBvICsgYSAqIHIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0TGFiZWxXaWR0aDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldExhYmVsU2l6ZShlKS53CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGdldExhYmVsQ2FwYWNpdHk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBuID0gdC5vcHRpb25zLnRpbWUsCiAgICAgICAgICAgICAgICAgICAgaSA9IG4uZGlzcGxheUZvcm1hdHMsCiAgICAgICAgICAgICAgICAgICAgciA9IGlbbi51bml0XSB8fCBpLm1pbGxpc2Vjb25kLAogICAgICAgICAgICAgICAgICAgIG8gPSB0LnRpY2tGb3JtYXRGdW5jdGlvbihlLCAwLCB0aSh0LCBbZV0sIHQuX21ham9yVW5pdCksIHIpLAogICAgICAgICAgICAgICAgICAgIGEgPSB0Ll9nZXRMYWJlbFNpemUobyksCiAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGguZmxvb3IodC5pc0hvcml6b250YWwoKSA/IHQud2lkdGggLyBhLncgOiB0LmhlaWdodCAvIGEuaCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5vcHRpb25zLm9mZnNldCAmJiBzLS0sIHMgPiAwID8gcyA6IDEKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIG5pLl9kZWZhdWx0cyA9IHsKICAgICAgICAgICAgcG9zaXRpb246ICJib3R0b20iLAogICAgICAgICAgICBkaXN0cmlidXRpb246ICJsaW5lYXIiLAogICAgICAgICAgICBib3VuZHM6ICJkYXRhIiwKICAgICAgICAgICAgYWRhcHRlcnM6IHt9LAogICAgICAgICAgICB0aW1lOiB7CiAgICAgICAgICAgICAgICBwYXJzZXI6ICExLAogICAgICAgICAgICAgICAgdW5pdDogITEsCiAgICAgICAgICAgICAgICByb3VuZDogITEsCiAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0OiAhMSwKICAgICAgICAgICAgICAgIGlzb1dlZWtkYXk6ICExLAogICAgICAgICAgICAgICAgbWluVW5pdDogIm1pbGxpc2Vjb25kIiwKICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXRzOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgYXV0b1NraXA6ICExLAogICAgICAgICAgICAgICAgc291cmNlOiAiYXV0byIsCiAgICAgICAgICAgICAgICBtYWpvcjogewogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHZhciBpaSA9IHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBwbiwKICAgICAgICAgICAgICAgIGxpbmVhcjogeG4sCiAgICAgICAgICAgICAgICBsb2dhcml0aG1pYzogQW4sCiAgICAgICAgICAgICAgICByYWRpYWxMaW5lYXI6ICRuLAogICAgICAgICAgICAgICAgdGltZTogbmkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmkgPSB7CiAgICAgICAgICAgICAgICBkYXRldGltZTogIk1NTSBELCBZWVlZLCBoOm1tOnNzIGEiLAogICAgICAgICAgICAgICAgbWlsbGlzZWNvbmQ6ICJoOm1tOnNzLlNTUyBhIiwKICAgICAgICAgICAgICAgIHNlY29uZDogImg6bW06c3MgYSIsCiAgICAgICAgICAgICAgICBtaW51dGU6ICJoOm1tIGEiLAogICAgICAgICAgICAgICAgaG91cjogImhBIiwKICAgICAgICAgICAgICAgIGRheTogIk1NTSBEIiwKICAgICAgICAgICAgICAgIHdlZWs6ICJsbCIsCiAgICAgICAgICAgICAgICBtb250aDogIk1NTSBZWVlZIiwKICAgICAgICAgICAgICAgIHF1YXJ0ZXI6ICJbUV1RIC0gWVlZWSIsCiAgICAgICAgICAgICAgICB5ZWFyOiAiWVlZWSIKICAgICAgICAgICAgfTsKICAgICAgICBRdC5fZGF0ZS5vdmVycmlkZSgiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gewogICAgICAgICAgICBfaWQ6ICJtb21lbnQiLAogICAgICAgICAgICBmb3JtYXRzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiByaQogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXJzZTogZnVuY3Rpb24odCwgbikgewogICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiB0ICYmICJzdHJpbmciID09IHR5cGVvZiBuID8gdCA9IGUodCwgbikgOiB0IGluc3RhbmNlb2YgZSB8fCAodCA9IGUodCkpLCB0LmlzVmFsaWQoKSA/IHQudmFsdWVPZigpIDogbnVsbAogICAgICAgICAgICB9LAogICAgICAgICAgICBmb3JtYXQ6IGZ1bmN0aW9uKHQsIG4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKHQpLmZvcm1hdChuKQogICAgICAgICAgICB9LAogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKHQsIG4sIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlKHQpLmFkZChuLCBpKS52YWx1ZU9mKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGlmZjogZnVuY3Rpb24odCwgbiwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUodCkuZGlmZihlKG4pLCBpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdGFydE9mOiBmdW5jdGlvbih0LCBuLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA9IGUodCksICJpc29XZWVrIiA9PT0gbiA/IHQuaXNvV2Vla2RheShpKS52YWx1ZU9mKCkgOiB0LnN0YXJ0T2YobikudmFsdWVPZigpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVuZE9mOiBmdW5jdGlvbih0LCBuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSh0KS5lbmRPZihuKS52YWx1ZU9mKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUodCkKICAgICAgICAgICAgfQogICAgICAgIH0gOiB7fSksIEYuX3NldCgiZ2xvYmFsIiwgewogICAgICAgICAgICBwbHVnaW5zOiB7CiAgICAgICAgICAgICAgICBmaWxsZXI6IHsKICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGU6ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgb2kgPSB7CiAgICAgICAgICAgIGRhdGFzZXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS5maWxsLAogICAgICAgICAgICAgICAgICAgIG4gPSBlLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgIGkgPSBuLmdldERhdGFzZXRNZXRhKHQpLAogICAgICAgICAgICAgICAgICAgIHIgPSBpICYmIG4uaXNEYXRhc2V0VmlzaWJsZSh0KSAmJiBpLmRhdGFzZXQuX2NoaWxkcmVuIHx8IFtdLAogICAgICAgICAgICAgICAgICAgIG8gPSByLmxlbmd0aCB8fCAwOwogICAgICAgICAgICAgICAgcmV0dXJuIG8gPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPCBvICYmIHJbdF0uX3ZpZXcgfHwgbnVsbAogICAgICAgICAgICAgICAgfSA6IG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZS5ib3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICBuID0gdCA/IHQueCA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgaSA9IHQgPyB0LnkgOiBudWxsOwogICAgICAgICAgICAgICAgcmV0dXJuIEIuaXNBcnJheSh0KSA/IGZ1bmN0aW9uKGUsIG4pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFtuXQogICAgICAgICAgICAgICAgfSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiBudWxsID09PSBuID8gZS54IDogbiwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbnVsbCA9PT0gaSA/IGUueSA6IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBhaShlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBpLCByID0gZS5fbW9kZWwgfHwge30sCiAgICAgICAgICAgICAgICBvID0gci5maWxsOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBvICYmIChvID0gISFyLmJhY2tncm91bmRDb2xvciksICExID09PSBvIHx8IG51bGwgPT09IG8pIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKCEwID09PSBvKSByZXR1cm4gIm9yaWdpbiI7CiAgICAgICAgICAgIGlmIChpID0gcGFyc2VGbG9hdChvLCAxMCksIGlzRmluaXRlKGkpICYmIE1hdGguZmxvb3IoaSkgPT09IGkpIHJldHVybiAiLSIgIT09IG9bMF0gJiYgIisiICE9PSBvWzBdIHx8IChpID0gdCArIGkpLCAhKGkgPT09IHQgfHwgaSA8IDAgfHwgaSA+PSBuKSAmJiBpOwogICAgICAgICAgICBzd2l0Y2ggKG8pIHsKICAgICAgICAgICAgICAgIGNhc2UgImJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdGFydCI7CiAgICAgICAgICAgICAgICBjYXNlICJ0b3AiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZW5kIjsKICAgICAgICAgICAgICAgIGNhc2UgInplcm8iOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAib3JpZ2luIjsKICAgICAgICAgICAgICAgIGNhc2UgIm9yaWdpbiI6CiAgICAgICAgICAgICAgICBjYXNlICJzdGFydCI6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBvOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc2koZSkgewogICAgICAgICAgICByZXR1cm4gKGUuZWwuX3NjYWxlIHx8IHt9KS5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiwgaSwgciwgbywgYSA9IGUuZWwuX3NjYWxlLAogICAgICAgICAgICAgICAgICAgIHMgPSBhLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgbCA9IGEuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIGMgPSBlLmZpbGwsCiAgICAgICAgICAgICAgICAgICAgdSA9IFtdOwogICAgICAgICAgICAgICAgaWYgKCFsKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIGZvciAodCA9IHMudGlja3MucmV2ZXJzZSA/IGEubWF4IDogYS5taW4sIG4gPSBzLnRpY2tzLnJldmVyc2UgPyBhLm1pbiA6IGEubWF4LCBpID0gYS5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoMCwgdCksIHIgPSAwOyByIDwgbDsgKytyKSBvID0gInN0YXJ0IiA9PT0gYyB8fCAiZW5kIiA9PT0gYyA/IGEuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKHIsICJzdGFydCIgPT09IGMgPyB0IDogbikgOiBhLmdldEJhc2VQb3NpdGlvbihyKSwgcy5ncmlkTGluZXMuY2lyY3VsYXIgJiYgKG8uY3ggPSBpLngsIG8uY3kgPSBpLnksIG8uYW5nbGUgPSBhLmdldEluZGV4QW5nbGUocikgLSBNYXRoLlBJIC8gMiksIHUucHVzaChvKTsKICAgICAgICAgICAgICAgIHJldHVybiB1CiAgICAgICAgICAgIH0oZSkgOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IGUuZWwuX21vZGVsIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIGkgPSBlLmVsLl9zY2FsZSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICByID0gZS5maWxsLAogICAgICAgICAgICAgICAgICAgIG8gPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKGlzRmluaXRlKHIpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIGlmICgic3RhcnQiID09PSByID8gbyA9IHZvaWQgMCA9PT0gbi5zY2FsZUJvdHRvbSA/IGkuYm90dG9tIDogbi5zY2FsZUJvdHRvbSA6ICJlbmQiID09PSByID8gbyA9IHZvaWQgMCA9PT0gbi5zY2FsZVRvcCA/IGkudG9wIDogbi5zY2FsZVRvcCA6IHZvaWQgMCAhPT0gbi5zY2FsZVplcm8gPyBvID0gbi5zY2FsZVplcm8gOiBpLmdldEJhc2VQaXhlbCAmJiAobyA9IGkuZ2V0QmFzZVBpeGVsKCkpLCBudWxsICE9IG8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBvLnggJiYgdm9pZCAwICE9PSBvLnkpIHJldHVybiBvOwogICAgICAgICAgICAgICAgICAgIGlmIChCLmlzRmluaXRlKG8pKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB4OiAodCA9IGkuaXNIb3Jpem9udGFsKCkpID8gbyA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHQgPyBudWxsIDogbwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgIH0oZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxpKGUsIHQsIG4pIHsKICAgICAgICAgICAgdmFyIGksIHIgPSBlW3RdLmZpbGwsCiAgICAgICAgICAgICAgICBvID0gW3RdOwogICAgICAgICAgICBpZiAoIW4pIHJldHVybiByOwogICAgICAgICAgICBmb3IgKDsgITEgIT09IHIgJiYgLTEgPT09IG8uaW5kZXhPZihyKTspIHsKICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUocikpIHJldHVybiByOwogICAgICAgICAgICAgICAgaWYgKCEoaSA9IGVbcl0pKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBpZiAoaS52aXNpYmxlKSByZXR1cm4gcjsKICAgICAgICAgICAgICAgIG8ucHVzaChyKSwgciA9IGkuZmlsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAhMQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY2koZSkgewogICAgICAgICAgICB2YXIgdCA9IGUuZmlsbCwKICAgICAgICAgICAgICAgIG4gPSAiZGF0YXNldCI7CiAgICAgICAgICAgIHJldHVybiAhMSA9PT0gdCA/IG51bGwgOiAoaXNGaW5pdGUodCkgfHwgKG4gPSAiYm91bmRhcnkiKSwgb2lbbl0oZSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1aShlKSB7CiAgICAgICAgICAgIHJldHVybiBlICYmICFlLnNraXAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRpKGUsIHQsIG4sIGksIHIpIHsKICAgICAgICAgICAgdmFyIG8sIGEsIHMsIGw7CiAgICAgICAgICAgIGlmIChpICYmIHIpIHsKICAgICAgICAgICAgICAgIGZvciAoZS5tb3ZlVG8odFswXS54LCB0WzBdLnkpLCBvID0gMTsgbyA8IGk7ICsrbykgQi5jYW52YXMubGluZVRvKGUsIHRbbyAtIDFdLCB0W29dKTsKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG5bMF0uYW5nbGUpCiAgICAgICAgICAgICAgICAgICAgZm9yIChlLmxpbmVUbyhuW3IgLSAxXS54LCBuW3IgLSAxXS55KSwgbyA9IHIgLSAxOyBvID4gMDsgLS1vKSBCLmNhbnZhcy5saW5lVG8oZSwgbltvXSwgbltvIC0gMV0sICEwKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgKGEgPSBuWzBdLmN4LCBzID0gblswXS5jeSwgbCA9IE1hdGguc3FydChNYXRoLnBvdyhuWzBdLnggLSBhLCAyKSArIE1hdGgucG93KG5bMF0ueSAtIHMsIDIpKSwgbyA9IHIgLSAxOyBvID4gMDsgLS1vKSBlLmFyYyhhLCBzLCBsLCBuW29dLmFuZ2xlLCBuW28gLSAxXS5hbmdsZSwgITApCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhpKGUsIHQsIG4sIGksIHIsIG8pIHsKICAgICAgICAgICAgdmFyIGEsIHMsIGwsIGMsIHUsIGQsIGgsIGYsIHAgPSB0Lmxlbmd0aCwKICAgICAgICAgICAgICAgIGcgPSBpLnNwYW5HYXBzLAogICAgICAgICAgICAgICAgbSA9IFtdLAogICAgICAgICAgICAgICAgdiA9IFtdLAogICAgICAgICAgICAgICAgeSA9IDAsCiAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgZm9yIChlLmJlZ2luUGF0aCgpLCBhID0gMCwgcyA9IHA7IGEgPCBzOyArK2EpIHUgPSBuKGMgPSB0W2wgPSBhICUgcF0uX3ZpZXcsIGwsIGkpLCBkID0gdWkoYyksIGggPSB1aSh1KSwgbyAmJiB2b2lkIDAgPT09IGYgJiYgZCAmJiAocyA9IHAgKyAoZiA9IGEgKyAxKSksIGQgJiYgaCA/ICh5ID0gbS5wdXNoKGMpLCBiID0gdi5wdXNoKHUpKSA6IHkgJiYgYiAmJiAoZyA/IChkICYmIG0ucHVzaChjKSwgaCAmJiB2LnB1c2godSkpIDogKGRpKGUsIG0sIHYsIHksIGIpLCB5ID0gYiA9IDAsIG0gPSBbXSwgdiA9IFtdKSk7CiAgICAgICAgICAgIGRpKGUsIG0sIHYsIHksIGIpLCBlLmNsb3NlUGF0aCgpLCBlLmZpbGxTdHlsZSA9IHIsIGUuZmlsbCgpCiAgICAgICAgfQogICAgICAgIHZhciBmaSA9IHsKICAgICAgICAgICAgICAgIGlkOiAiZmlsbGVyIiwKICAgICAgICAgICAgICAgIGFmdGVyRGF0YXNldHNVcGRhdGU6IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiwgaSwgciwgbywgYSA9IChlLmRhdGEuZGF0YXNldHMgfHwgW10pLmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQucHJvcGFnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGE7ICsraSkgbyA9IG51bGwsIChyID0gKG4gPSBlLmdldERhdGFzZXRNZXRhKGkpKS5kYXRhc2V0KSAmJiByLl9tb2RlbCAmJiByIGluc3RhbmNlb2YgYmUuTGluZSAmJiAobyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZS5pc0RhdGFzZXRWaXNpYmxlKGkpLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBhaShyLCBpLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQ6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsOiByCiAgICAgICAgICAgICAgICAgICAgfSksIG4uJGZpbGxlciA9IG8sIGwucHVzaChvKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYTsgKytpKShvID0gbFtpXSkgJiYgKG8uZmlsbCA9IGxpKGwsIGksIHMpLCBvLmJvdW5kYXJ5ID0gc2kobyksIG8ubWFwcGVyID0gY2kobykpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYmVmb3JlRGF0YXNldHNEcmF3OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIGksIHIsIG8sIGEsIHMsIGwgPSBlLl9nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLmN0eDsKICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBsLmxlbmd0aCAtIDE7IG4gPj0gMDsgLS1uKSh0ID0gbFtuXS4kZmlsbGVyKSAmJiB0LnZpc2libGUgJiYgKHIgPSAoaSA9IHQuZWwpLl92aWV3LCBvID0gaS5fY2hpbGRyZW4gfHwgW10sIGEgPSB0Lm1hcHBlciwgcyA9IHIuYmFja2dyb3VuZENvbG9yIHx8IEYuZ2xvYmFsLmRlZmF1bHRDb2xvciwgYSAmJiBzICYmIG8ubGVuZ3RoICYmIChCLmNhbnZhcy5jbGlwQXJlYShjLCBlLmNoYXJ0QXJlYSksIGhpKGMsIG8sIGEsIHIsIHMsIGkuX2xvb3ApLCBCLmNhbnZhcy51bmNsaXBBcmVhKGMpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcGkgPSBCLnJ0bC5nZXRSdGxBZGFwdGVyLAogICAgICAgICAgICBnaSA9IEIubm9vcCwKICAgICAgICAgICAgbWkgPSBCLnZhbHVlT3JEZWZhdWx0OwoKICAgICAgICBmdW5jdGlvbiB2aShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlLnVzZVBvaW50U3R5bGUgJiYgZS5ib3hXaWR0aCA+IHQgPyB0IDogZS5ib3hXaWR0aAogICAgICAgIH0KICAgICAgICBGLl9zZXQoImdsb2JhbCIsIHsKICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAhMCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAidG9wIiwKICAgICAgICAgICAgICAgIGFsaWduOiAiY2VudGVyIiwKICAgICAgICAgICAgICAgIGZ1bGxXaWR0aDogITAsCiAgICAgICAgICAgICAgICByZXZlcnNlOiAhMSwKICAgICAgICAgICAgICAgIHdlaWdodDogMWUzLAogICAgICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gdC5kYXRhc2V0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLmNoYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5nZXREYXRhc2V0TWV0YShuKTsKICAgICAgICAgICAgICAgICAgICByLmhpZGRlbiA9IG51bGwgPT09IHIuaGlkZGVuID8gIWkuZGF0YS5kYXRhc2V0c1tuXS5oaWRkZW4gOiBudWxsLCBpLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Ib3ZlcjogbnVsbCwKICAgICAgICAgICAgICAgIG9uTGVhdmU6IG51bGwsCiAgICA="}},"time_used":93,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":27,"receive":66,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/services/services_img01.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.052Z","timestamp":1785159465052,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/services/services_img01.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 168923\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":168923,"size_decoded":169191,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: \"CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 75\", baseline, precision 8, 1023x673, components 3","md5":"257da9ede6ce81be5b4e897be6dc1326","sha1":"415f6501378e1f687c38d2a8ff01e1e85301c890","sha256":"53a0ae460103eb2f65d63aa23fa31cc97fb92a253960941b044da78babec4df8","sha512":"2d896ac0d8f42ce52bace1b13a632f4386eb59f742a5e9fc03cb251613474a8c32b0f22cc07bd0bbbe2687e8f3e4f7c3bd77e68f51c10aed7b3b672505f3f550","ssdeep":"3072:TD0B0j973fBCdLNmFvtZFYNJZKnG8GxWkKe7QVc+RbBN1owXljGOl8ym:TD+0j973ZWmF6Twy7WcyK4NGym","tlshash":"a8f312d519c0ba94bf3c049974158471def2e16c8aecb4c9bd9ee924afed326c80d9c1","first_seen":"2026-02-14T04:59:18.776721Z","last_seen":"2026-07-27T13:38:47.789889Z","times_seen":5,"resource_available":false,"data":"/9j/4AAQSkZJRgABAQAAAQABAAD/7QA2UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAABkcAm4ADURlcG9zaXRwaG90b3McAgAAAgAEAP/hCzpodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nIHg6eG1wdGs9J0ltYWdlOjpFeGlmVG9vbCAxMC4zNic+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpkYz0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nPgogIDxkYzpjcmVhdG9yPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGk+bGFnZXJlZWs8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvZGM6Y3JlYXRvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgo8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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"}},"time_used":91,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":53,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"translations.smartsuppcdn.com/api/v1/widget/translations/lang/en/defaults","fqdn":"translations.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.11","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:52.821Z","timestamp":1785159472821,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1087630013.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 14:33:02 GMT","end":"Tue, 01 Sep 2026 14:33:01 GMT"},"fingerprint":{"sha1":"CE:B9:32:81:E9:D2:46:C8:31:53:55:D3:41:19:F7:94:91:30:D1:93","sha256":"54:C9:41:2F:97:E8:14:28:D7:2C:4F:FA:E0:C3:3A:BC:85:F8:14:22:1C:98:23:82:53:4D:5D:58:C9:0B:C9:68"}}},"request":{"raw":"GET /api/v1/widget/translations/lang/en/defaults HTTP/1.1\r\nHost: translations.smartsuppcdn.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://wealthgridasset.com/\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:56 GMT\r\ncontent-type: application/json; charset=utf-8\r\naccess-control-allow-origin: *\r\ncache-control: max-age=600\r\nx-response-time: 0ms\r\nx-version: 143765d349003193ebd3783518e376c4c54f428f\r\nx-77-nzt: k9Fv7kOkfBQoNyzvG6cMVDxKN7e5xUJ2ZmntxIiTi7/fQB1558+dbHpNLS1JDD8x5DSxmOg\r\nx-77-nzt-ray: e2f75420ceefc493345f676af9c06108\r\nx-77-cache: HIT\r\nx-77-age: 287\r\nvary: Origin, Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":7219,"size_decoded":3349,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"0259a73d21d0110609c1b3d5cab20ebe","sha1":"f80fcc484290999d3c48fe3d75f434cb63a00b4a","sha256":"ff798ee596d00dfbc59c3916cde6ce6cc8fd9183e1cd673c45dc6be9b333e582","sha512":"fbb7720f87a9673084b909fc940d2861fb5b1a7ce80d7a60d469eabe47765e69bce287d2bece28eb226d2e75e1c8202283aeda38f34ff354c2466f567ee3535b","ssdeep":"192:Ccdft/hcRl6WKHSY8pZcqq+jT0UHAfoW/Ymz8:CgF/hcSWbYKZcF+jhqoWQmw","tlshash":"ede1b64f9a144ea987c643c276cfb84675bc807342509d7afd8cc9b842697cda3e3b94","first_seen":"2026-07-27T13:24:21.79927Z","last_seen":"2026-08-04T06:18:03.83632Z","times_seen":499,"resource_available":false,"data":"eyJhZ2VudFJhdGluZy5hbGwucGxhY2Vob2xkZXIiOiJMZWF2ZSB1cyBmZWVkYmFjayIsImFnZW50UmF0aW5nLmJhZC5mb3JtVGV4dCI6IlNvIHNvcnJ5IPCfmJMgV2hhdCB3ZW50IHdyb25nPyIsImFnZW50UmF0aW5nLmdvb2QuZm9ybVRleHQiOiJUaGFua3Mg8J+kqSBXaGF0IHdhcyBzbyBncmVhdD8iLCJhZ2VudFJhdGluZy5ub3JtYWwuZm9ybVRleHQiOiJUaGFua3Mg8J+RjSBIb3cgY2FuIHdlIGltcHJvdmU/IiwiYWdlbnRUcmFuc2Zlci5kZWZhdWx0VGV4dCI6IkFnZW50IiwiYWdlbnRUcmFuc2Zlci5qb2luZWQiOiJqb2luZWQgdGhlIGNoYXQiLCJhZ2VudFRyYW5zZmVyLmxlZnQiOiJsZWZ0IiwiYWdlbnRUcmFuc2Zlci5yZWRpcmVjdGVkIjoiaXMgeW91ciBuZXcgYWdlbnQiLCJhcmlhTGFiZWwuYWdlbnRBdmF0YXIiOiJBZ2VudCBhdmF0YXIiLCJhcmlhTGFiZWwuY2FyZCI6IlByb2R1Y3QgY2FyZCIsImFyaWFMYWJlbC5jaGF0Q29udGVudCI6IkNoYXQgY29udGVudCIsImFyaWFMYWJlbC5jaGF0Ym90QXZhdGFyIjoiQ2hhdGJvdCBhdmF0YXIiLCJhcmlhTGFiZWwuZHJhd2VyLmNvbnRlbnQiOiJEcmF3ZXIgY29udGVudCIsImFyaWFMYWJlbC5kcmF3ZXIub3ZlcmxheSI6IkRyYXdlciBvdmVybGF5IiwiYXJpYUxhYmVsLmlubGluZUVtb2ppUGlja2VyLmRlc2NyaXB0aW9uIjoiU2hvd2luZyB7Y291bnR9IGVtb2ppcyIsImFyaWFMYWJlbC5pbmxpbmVFbW9qaVBpY2tlci5sYWJlbCI6IkVtb2ppIHN1Z2dlc3Rpb25zIiwiYXJpYUxhYmVsLmxlZnQiOiJMZWZ0IiwiYXJpYUxhYmVsLm9wZW5DaGF0IjoiT3BlbiBTbWFydHN1cHAgY2hhdCIsImFyaWFMYWJlbC5wb3B1cCI6IlNtYXJ0c3VwcCBjaGF0IHBvcHVwIiwiYXJpYUxhYmVsLnJhdGVDaGF0LmJhZCI6IlJhdGUgY2hhdCBuZWdhdGl2ZWxseSIsImFyaWFMYWJlbC5yYXRlQ2hhdC5nb29kIjoiUmF0ZSBjaGF0IHBvc2l0aXZlbHkiLCJhcmlhTGFiZWwucmF0ZUNoYXQubmV1dHJhbCI6IlJhdGUgY2hhdCBuZXV0cmFsbHkiLCJhcmlhTGFiZWwucmVtb3ZlQXR0YWNobWVudCI6IlJlbW92ZSBhdHRhY2htZW50IiwiYXJpYUxhYmVsLnJpZ2h0IjoiUmlnaHQiLCJhcmlhTGFiZWwuc2Nyb2xsRG93biI6IlNjcm9sbCBkb3duIiwiYXJpYUxhYmVsLnN1Y2Nlc3MiOiJTdWNjZXNzIiwiYXJpYUxhYmVsLnVwbG9hZGluZyI6IlVwbG9hZGluZy4uLiIsImFyaWFMYWJlbC53aWRnZXRCcmFuZGluZyI6IlNtYXJ0c3VwcCBicmFuZGluZyIsImF1dGhGb3JtLmFjY2VwdFRlcm1zIjoiSSBhZ3JlZSB3aXRoIHByaXZhY3kgcG9saWN5IiwiYXV0aEZvcm0uYnV0dG9uLnNlbmQiOiJTZW5kIG1lc3NhZ2UiLCJhdXRoRm9ybS5kZXNjcmlwdGlvbiI6Ildl4oCZbGwgdXNlIHlvdXIgY29udGFjdCBpbmZvIG9ubHkgaWYgYWxsIHRoZSBvcGVyYXRvcnMgYXJlIGJ1c3kgYXQgdGhlIG1vbWVudCBhbmQgY2Fubm90IGltbWVkaWF0ZWx5IHJlcGx5LiIsImF1dGhGb3JtLmdyZWV0aW5nIjoi8J+RiyBQbGVhc2UgaW50cm9kdWNlIHlvdXJzZWxmIiwiYXV0aEZvcm0uZ3JvdXAiOiJDaG9vc2UgYSBncm91cCIsImF1dGhGb3JtLmxhYmVsLmVtYWlsIjoiRS1tYWlsIiwiYXV0aEZvcm0ubGFiZWwuZ3JvdXAiOiJHcm91cCIsImF1dGhGb3JtLmxhYmVsLm5hbWUiOiJOYW1lIiwiYXV0aEZvcm0ubGFiZWwucGhvbmUiOiJQaG9uZSIsImF1dGhGb3JtLnN1Ym1pdC5lcnJvciI6IkF1dGhlbnRpY2F0aW9uIGZhaWxlZCIsImF1dGhGb3JtLnN1Ym1pdC5zdWNjZXNzIjoiQXV0aGVudGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwiLCJhdXRoRm9ybS55b3VyRW1haWwiOiJZb3VyIGVtYWlsIiwiYXV0aEZvcm0ueW91ck5hbWUiOiJZb3VyIG5hbWUiLCJhdXRoRm9ybS55b3VyUGhvbmUiOiJQaG9uZSBudW1iZXIiLCJidXR0b24uZ3JlZXRpbmciOiJDaGF0IiwiY2FyZC5saW5rc0xpbWl0UmVhY2hlZCI6IlVuYWJsZSB0byBzZW5kIG1vcmUgdGhhbiAyMCBVUkwgbGlua3MuIiwiY2FyZC5ub1ByZXZpZXdUaXRsZSI6IlByZXZpZXcgbm90IGF2YWlsYWJsZSIsImNhcmQub3BlblVybFRpdGxlIjoiUmVhZCBtb3JlIiwiY2FyZC5zZW5kaW5nSW5Qcm9ncmVzcyI6IlNlbmRpbmcgaW4gcHJvZ3Jlc3MsIHBsZWFzZSB3YWl04oCmIiwiY2hhdElucHV0LnBsYWNlaG9sZGVyIjoiVHlwZSB5b3VyIG1lc3NhZ2UgaGVyZSIsImNoYXRQcmV2aWV3Lm1lc3NhZ2UxIjoiSGksIGlzIGFueWJvZHkgaGVyZT8iLCJjaGF0UHJldmlldy5tZXNzYWdlMiI6IkhlbGxvLCB5ZXMgd2UgYXJlIGhlcmUiLCJjaGF0UHJldmlldy5tZXNzYWdlMyI6Ik9rLCB0aGFua3MiLCJjaGF0Ym90LmdvQmFjayI6IkdvIGJhY2siLCJjbG9zZUNvbnZlcnNhdGlvbk1vZGFsLmJ1dHRvbiI6IlllcywgZW5kIGNoYXQiLCJjbG9zZUNvbnZlcnNhdGlvbk1vZGFsLnRleHQiOiJJcyB0aGF0IHJlYWxseSBhbGw/IElmIHNvbWV0aGluZyBlbHNlIGNvbWVzIHRvIG1pbmQsIHlvdSBjYW4gYWx3YXlzIHJldHVybiB0byB0aGUgY29udmVyc2F0aW9uLiIsImNsb3NlQ29udmVyc2F0aW9uTW9kYWwudGl0bGUiOiJFbmQgY2hhdCIsImRyYWdBbmREcm9wLmRyb3BIZXJlIjoiRHJvcCB5b3VyIGZpbGUocykgaGVyZSIsImVtYWlsVHJhbnNjcmlwdC5wb3NpdGl2ZUZlZWRiYWNrIjoiVHJhbnNjcmlwdCBoYXMgYmVlbiBzZW50IiwiZW1haWxUcmFuc2NyaXB0LnNlbmRDb3B5IjoiU2VuZCBjb252ZXJzYXRpb24gY29weSIsImVycm9yLmZpbGVVcGxvYWQiOiJGaWxlIHVwbG9hZCBmYWlsdXJlIiwiZXJyb3Iubm9JbnRlcm5ldCI6IkludGVybmV0IGNvbm5lY3Rpb24gbG9zdCIsImVycm9yLnNlcnZlckVycm9yIjoiU2VydmVyIGVycm9yIG9jY3VycmVkIiwiZmlsZVVwbG9hZC5iYWRGaWxlVHlwZSI6IlRoaXMgZmlsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIiwiZmlsZVVwbG9hZC5maWxlVG9vQmlnIjoiVGhlIGZpbGUgaXMgYmlnZ2VyIHRoYW4gdGhlIGFsbG93ZWQgbGltaXQiLCJmaWxlVXBsb2FkLmZpbGVzV2VyZW50UHJvY2Vzc2VkIjoiU29tZSBmaWxlcyBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIiwiZmlsZVVwbG9hZC5pbWFnZUVycm9yIjoiVGhpcyBpbWFnZSBpcyBub3QgdmFsaWQiLCJmaWxlVXBsb2FkLnRvb01hbnlGaWxlcyI6IkxpbWl0IGZvciB1cGxvYWRpbmcgZmlsZXMgaXMgIiwiZmlsZVVwbG9hZC51cGxvYWRGaWxlIjoiVXBsb2FkIGZpbGUiLCJmb3JtLnN1Ym1pdC5lcnJvciI6IlNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLiIsImZvcm0uc3VibWl0LnN1Y2Nlc3MiOiJTdWNjZXNzZnVsbHkgZG9uZSIsImdkcHIuZGF0YVByaXZhY3lIZWFkbGluZSI6IlBlcnNvbmFsIGRhdGEgcHJvY2Vzc2luZyIsImdkcHIuZGF0YVByaXZhY3lUZXh0IjoiU21hcnRzdXBwLmNvbSwgcy5yLm8sIHByb2Nlc3NlcyBwZXJzb25hbCBkYXRhLiwgVkFUIElEIENaMDM2Njg2ODEgKGZ1cnRoZXIgYXMgXCJTbWFydHN1cHBcIikgYXMgYSBkYXRhIHByb2Nlc3NvciB3aG8gYWN0cyBvbiBiZWhhbGYgb2YgdGhlIHdlYnNpdGUgb3duZXIgd2hvIGlzIHRoZSBkYXRhIGNvbnRyb2xsZXIuIFxuXG5TbWFydHN1cHAgaXMgR0RQUiBjb21wbGlhbnQuIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBTbWFydHN1cHAgcGVyc29uYWwgZGF0YSBwcml2YWN5IGFuZCBwcm9jZXNzaW5nIG9uIGhlbHAuc21hcnRzdXBwLmNvbS9lbl9VUy9wcml2YWN5LiBcblxuUHJvY2Vzc2luZyBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIHByb3ZpZGUgY3VzdG9tZXIgc2VydmljZS4gQWR2YW5jZWQgZmVhdHVyZXMgd2lsbCBvbmx5IGJlIHR1cm5lZCBvbiBpZiB5b3UgaGF2ZSBhZ3JlZWQgdG8gdGhlbS4gXG5cblBsZWFzZSBjb250YWN0IHRoZSB3ZWJzaXRlIG93bmVyIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgcHJvY2Vzc2luZyBvZiBwZXJzb25hbCBkYXRhIG9yIGlmIHlvdSB3YW50IHRvIHJlcXVlc3Qgb3IgZXJhc2UgeW91ciBwZXJzb25hbCBkYXRhLiIsImdlbmVyYWwuYmFjayI6IkJhY2siLCJnZW5lcmFsLm5ld01lc3NhZ2VzIjoiTmV3IG1lc3NhZ2VzIiwiZ2VuZXJhbC5zZW5kIjoiU2VuZCIsIm9wdGlvbnMuYWNjZXNzaWJpbGl0eSI6IkFjY2Vzc2liaWxpdHkiLCJvcHRpb25zLmNvcHlyaWdodCI6IsKpIHt5ZWFyfSBTbWFydHN1cHAuY29tIiwib3B0aW9ucy5lbWFpbFRyYW5zY3JpcHQiOiJTZW5kIGVtYWlsIHRyYW5zY3JpcHQiLCJvcHRpb25zLmZlZWRiYWNrIjoiRGlkIHlvdSBmaW5kIGEgYnVnPyIsIm9wdGlvbnMuZ2RwciI6IkdEUFIgYW5kIHByaXZhY3kiLCJvcHRpb25zLnBkZlRyYW5zY3JpcHQiOiJEb3dubG9hZCB0cmFuc2NyaXB0Iiwib3B0aW9ucy5wbGF5U291bmRzIjoiUGxheSB0aGUgc291bmRzIiwib3B0aW9ucy50aXRsZSI6Ik9wdGlvbnMiLCJyYXRpbmcuYnV0dG9uLnJhdGUuYWdlbnQiOiJSYXRlIGNoYXQiLCJyYXRpbmcuYnV0dG9uLnJhdGUuYWkiOiJSYXRlIEFJIGNoYXRib3QiLCJyYXRpbmcuc3VibWl0LnN1Y2Nlc3MiOiJSYXRpbmcgc2VudCIsInJhdGluZy5zdWJtaXRGZWVkYmFjay5zdWNjZXNzIjoiVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrIiwicmF0aW5nLndhc0l0SGVscGZ1bC5hZ2VudCI6IkhvdyB3b3VsZCB5b3UgcmF0ZSBvdXIgc3VwcG9ydD8iLCJyYXRpbmcud2FzSXRIZWxwZnVsLmFpIjoiSG93IHdvdWxkIHlvdSByYXRlIHRoZSBBSSBjaGF0Ym90IGV4cGVyaWVuY2U/Iiwic3RhdHVzQmFyLmJvdElkZW50aXR5IjoiQUkgYXNzaXN0YW50Iiwic3RhdHVzQmFyLm9mZmxpbmVUZXh0IjoiSGFwcHkgdG8gYW5zd2VyIHlvdSBsYXRlciIsInN0YXR1c0Jhci5vbmxpbmVUZXh0IjoiV2UgcmVwbHkgaW1tZWRpYXRlbHkiLCJzeXN0ZW1NZXNzYWdlLmNoYXRDbG9zZWQiOiJDaGF0IHdhcyBjbG9zZWQiLCJzeXN0ZW1NZXNzYWdlLmNoYXRSZXNvbHZlZCI6InJlc29sdmVkIGNvbnZlcnNhdGlvbiIsInRpY2tldEZvcm0ubGFiZWwubWVzc2FnZSI6IldoYXQgY2FuIHdlIGhlbHAgeW91IHdpdGg/IiwidGlja2V0Rm9ybS5tZXNzYWdlLnBsYWNlaG9sZGVyIjoiRGVzY3JpYmUgeW91ciBwcm9ibGVtIiwidGlja2V0Rm9ybS5zdWJtaXQuYnV0dG9uIjoi4pyJ77iPIENvbnRhY3QgdGhlIGFnZW50IGJ5IGVtYWlsIiwidGltZWFnby5YRGF5c0FnbyI6IiclcyBkYXlzIGFnbyIsInRpbWVhZ28uWEhvdXJzQWdvIjoiJXMgaG91cnMgYWdvIiwidGltZWFnby5YTWludXRlc0FnbyI6IiVzIG1pbnV0ZXMgYWdvIiwidGltZWFnby5YTW9udGhzQWdvIjoiJXMgbW9udGhzIGFnbyIsInRpbWVhZ28uWFNlY29uZHNBZ28iOiIlcyBzZWNvbmRzIGFnbyIsInRpbWVhZ28uWFdlZWtzQWdvIjoiJXMgd2Vla3MgYWdvIiwidGltZWFnby5YWWVhcnNBZ28iOiIlcyB5ZWFycyBhZ28iLCJ0aW1lYWdvLmp1c3ROb3ciOiJqdXN0IG5vdyIsInRpbWVhZ28ub25lRGF5QWdvIjoiMSBkYXkgYWdvIiwidGltZWFnby5vbmVIb3VyQWdvIjoiMSBob3VyIGFnbyIsInRpbWVhZ28ub25lTWludXRlQWdvIjoiMSBtaW51dGUgYWdvIiwidGltZWFnby5vbmVNb250aEFnbyI6IjEgbW9udGggYWdvIiwidGltZWFnby5vbmVXZWVrQWdvIjoiMSB3ZWVrIGFnbyIsInRpbWVhZ28ub25lWWVhckFnbyI6IjEgeWVhciBhZ28iLCJ0aW1lYWdvLnJpZ2h0Tm93IjoicmlnaHQgbm93IiwidGltZWFnby5zZWNvbmRzIjoiaW4gJXMgc2Vjb25kcyIsInRvb2x0aXAuYXR0YWNobWVudCI6IkF0dGFjaG1lbnQiLCJ0b29sdGlwLmNsb3NlIjoiQ2xvc2UiLCJ0b29sdGlwLmNvbGxhcHNlIjoiQ29sbGFwc2UgY2hhdCIsInRvb2x0aXAuZW1vamkiOiJFbW9qaSIsInRvb2x0aXAuZXhwYW5kIjoiRXhwYW5kIGNoYXQiLCJ0b29sdGlwLm1pbmltaXplIjoiTWluaW1pemUgY2hhdCIsInRvb2x0aXAubW9yZSI6IlNob3cgbW9yZSIsInRvb2x0aXAubW9yZUJ1dHRvbiI6IlNob3cgTW9yZSIsInRvb2x0aXAucmF0ZUNoYXQiOiJSYXRlIENoYXQiLCJ0b29sdGlwLnNlbmQiOiJTZW5kIiwidG9wQmFyLmVtYWlsVHJhbnNjcmlwdCI6IlNlbmQgZW1haWwgdHJhbnNjcmlwdCIsInRvcEJhci5nZHByVGl0bGUiOiJHRFBSIGFuZCBwcml2YWN5IiwidG9wQmFyLm9mZmxpbmUuaGVsbG8iOiJTZW5kIHVzIGEgbWVzc2FnZSIsInRvcEJhci5vbmxpbmUuaGVsbG8iOiJIb3cgY2FuIHdlIGhlbHA/IiwidG9wQmFyLnR1cm5PZmZTb3VuZHMiOiJUdXJuIG9mZiBzb3VuZHMiLCJ0b3BCYXIudHVybk9uU291bmRzIjoiVHVybiBvbiBzb3VuZHMiLCJ0cmlnZ2VyLm9wZW5DaGF0QnV0dG9uIjoiTGV0J3MgY2hhdCIsInRyaWdnZXIucmVwbHlCdXR0b24iOiJSZXBseSIsInZhbGlkYXRpb25zLmNoZWNrZWRUZXJtcyI6IllvdSBtdXN0IGFncmVlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRvIGNvbnRpbnVlIiwidmFsaWRhdGlvbnMuaXNFbWFpbCI6IlBsZWFzZSBlbnRlciB2YWxpZCBlbWFpbCIsInZhbGlkYXRpb25zLnBob25lIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyIiwidmFsaWRhdGlvbnMucmVxdWlyZWQiOiJQbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZCIsIndhcm5pbmdCYXIubWF4TGVuZ3RoIjoiWW91IGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBjaGFyYWN0ZXJzICgyMDAwKSIsIndhcm5pbmdCYXIuc2FtZU1lc3NhZ2VUd2ljZSI6IkNhbm5vdCBzZW5kIHRoZSBzYW1lIG1lc3NhZ2UgdHdpY2UgaW4gYSByb3cuIiwid2FybmluZ0Jhci5zcGFtUHJvdGVjdGlvbiI6IllvdXIgbWVzc2FnZXMgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgc3BhbS4gUGxlYXNlIHdhaXQgZm9yIDMwIHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgYW5vdGhlciBtZXNzYWdlLiIsIndhcm5pbmdCYXIudXBsb2FkRmlsZU5vdEZpcnN0IjoiRmlyc3QgbWVzc2FnZSBjYW5ub3QgYmUgYSBmaWxlIiwid2lkZ2V0UHJldmlldy5jb250YWN0TWVzc2FnZSI6IvCfjokgTG9va3MgZmFudGFzdGljISDwn5Kq8J+PuyBMZXTCtHMgcm9jayB0aG9zZSBjb252ZXJzYXRpb25zIGFuZCBsZWF2ZSBhIGxhc3RpbmcgaW1wcmVzc2lvbiEg8J+agCIsIndpZGdldFByZXZpZXcud2VsY29tZU1lc3NhZ2UiOiLwn5GL8J+PuyBXZWxjb21lISBUaGlzIGlzIGEgc25lYWsgcGVlayBvZiB5b3VyIGNoYXQgYm94LiBHZXQgcmVhZHkgdG8gc2hpbmUg4pyoIGluIGN1c3RvbWVyIGludGVyYWN0aW9ucyEiLCJtZXNzYWdlLmRlbGV0ZWQiOiJUaGlzIG1lc3NhZ2Ugd2FzIHJlbW92ZWQifQ=="}},"time_used":3323,"timings":{"blocked":0,"dns":31,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3276},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/fonts/fa-regular-400.woff","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.573Z","timestamp":1785159465573,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/fonts/fa-regular-400.woff HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/assets1/css/fontawesome-all.min.css\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: font/woff\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 13224\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":13224,"size_decoded":13490,"mime_type":"font/woff","magic":"Web Open Font Format (Version 2), TrueType, length 13224, version 331.-31196","md5":"b91d376b8d7646d671cd820950d5f7f1","sha1":"13517529affa39e2585c591acae6dc336b6aa917","sha256":"e42a88444448ac3d60549cc7c1ff2c8a9cac721034c073d80a14a44e79730cca","sha512":"80d50b0cf7d064332a0c8e7d9f2e294f1abed15c47644cb04b92b785af4601b683cfd3c668c0ef31dee342840063e0c395ae453650184971ba984ec8ecd3223a","ssdeep":"384:eGBfQ1X4Rpcob1t2NCu+FfLckX1edFTYdpPKW0:eMIis6cCuZnTYLyW0","tlshash":"0d52c058c9438097d01fe137fe4fe8b95c5d518aba94d3c18628d7792cb4342ace31b2","first_seen":"2023-04-05T08:50:32Z","last_seen":"2026-08-04T05:24:10.779835Z","times_seen":22553,"resource_available":false,"data":"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"}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/magnific-popup.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.772Z","timestamp":1785159464772,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/magnific-popup.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1660\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":6951,"size_decoded":1969,"mime_type":"text/css","magic":"ASCII text","md5":"30b593b71d7672658f89bfea0ab360c9","sha1":"d6963db6faa9294387bb3175813a61bc3f859437","sha256":"45d1f5f6cf913746c45dd697b1a8f3b719c02d8b3f678dc7fc2766d54e1aaf6e","sha512":"58440dbfd777facab21e3aea519a1b0e11404590e4a36c2959d7dca6fe3896cca9b12b8c3b490719ddcc43caebb019ff41adfd5688e985d53a08c92925498357","ssdeep":"192:hRQ4fS5bzRyIy++mcS3n2s96/LEpeXHFykgxe:Alx3pSFh","tlshash":"a5e11bd39fb22305e525e9a8a657a76973120013e70fcc6bbfd12448df8d7c942a3b85","first_seen":"2023-04-05T05:38:02Z","last_seen":"2026-08-04T05:20:24.884213Z","times_seen":29370,"resource_available":true,"data":"LyogTWFnbmlmaWMgUG9wdXAgQ1NTICovCi5tZnAtYmcgewogIHRvcDogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICB6LWluZGV4OiAxMDQyOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IGZpeGVkOwogIGJhY2tncm91bmQ6ICMwYjBiMGI7CiAgb3BhY2l0eTogMC44OyB9CgoubWZwLXdyYXAgewogIHRvcDogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICB6LWluZGV4OiAxMDQzOwogIHBvc2l0aW9uOiBmaXhlZDsKICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IH0KCi5tZnAtY29udGFpbmVyIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBwYWRkaW5nOiAwIDhweDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CgoubWZwLWNvbnRhaW5lcjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDEwMCU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKLm1mcC1hbGlnbi10b3AgLm1mcC1jb250YWluZXI6YmVmb3JlIHsKICBkaXNwbGF5OiBub25lOyB9CgoubWZwLWNvbnRlbnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBtYXJnaW46IDAgYXV0bzsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHotaW5kZXg6IDEwNDU7IH0KCi5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQsCi5tZnAtYWpheC1ob2xkZXIgLm1mcC1jb250ZW50IHsKICB3aWR0aDogMTAwJTsKICBjdXJzb3I6IGF1dG87IH0KCi5tZnAtYWpheC1jdXIgewogIGN1cnNvcjogcHJvZ3Jlc3M7IH0KCi5tZnAtem9vbS1vdXQtY3VyLCAubWZwLXpvb20tb3V0LWN1ciAubWZwLWltYWdlLWhvbGRlciAubWZwLWNsb3NlIHsKICBjdXJzb3I6IC1tb3otem9vbS1vdXQ7CiAgY3Vyc29yOiAtd2Via2l0LXpvb20tb3V0OwogIGN1cnNvcjogem9vbS1vdXQ7IH0KCi5tZnAtem9vbSB7CiAgY3Vyc29yOiBwb2ludGVyOwogIGN1cnNvcjogLXdlYmtpdC16b29tLWluOwogIGN1cnNvcjogLW1vei16b29tLWluOwogIGN1cnNvcjogem9vbS1pbjsgfQoKLm1mcC1hdXRvLWN1cnNvciAubWZwLWNvbnRlbnQgewogIGN1cnNvcjogYXV0bzsgfQoKLm1mcC1jbG9zZSwKLm1mcC1hcnJvdywKLm1mcC1wcmVsb2FkZXIsCi5tZnAtY291bnRlciB7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOyB9CgoubWZwLWxvYWRpbmcubWZwLWZpZ3VyZSB7CiAgZGlzcGxheTogbm9uZTsgfQoKLm1mcC1oaWRlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KCi5tZnAtcHJlbG9hZGVyIHsKICBjb2xvcjogI0NDQzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgd2lkdGg6IGF1dG87CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbi10b3A6IC0wLjhlbTsKICBsZWZ0OiA4cHg7CiAgcmlnaHQ6IDhweDsKICB6LWluZGV4OiAxMDQ0OyB9CiAgLm1mcC1wcmVsb2FkZXIgYSB7CiAgICBjb2xvcjogI0NDQzsgfQogICAgLm1mcC1wcmVsb2FkZXIgYTpob3ZlciB7CiAgICAgIGNvbG9yOiAjRkZGOyB9CgoubWZwLXMtcmVhZHkgLm1mcC1wcmVsb2FkZXIgewogIGRpc3BsYXk6IG5vbmU7IH0KCi5tZnAtcy1lcnJvciAubWZwLWNvbnRlbnQgewogIGRpc3BsYXk6IG5vbmU7IH0KCmJ1dHRvbi5tZnAtY2xvc2UsCmJ1dHRvbi5tZnAtYXJyb3cgewogIG92ZXJmbG93OiB2aXNpYmxlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIGRpc3BsYXk6IGJsb2NrOwogIG91dGxpbmU6IG5vbmU7CiAgcGFkZGluZzogMDsKICB6LWluZGV4OiAxMDQ2OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH0KCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgcGFkZGluZzogMDsKICBib3JkZXI6IDA7IH0KCi5tZnAtY2xvc2UgewogIHdpZHRoOiA0NHB4OwogIGhlaWdodDogNDRweDsKICBsaW5lLWhlaWdodDogNDRweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgdG9wOiAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgb3BhY2l0eTogMC42NTsKICBwYWRkaW5nOiAwIDAgMThweCAxMHB4OwogIGNvbG9yOiAjRkZGOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXNpemU6IDI4cHg7CiAgZm9udC1mYW1pbHk6IEFyaWFsLCBCYXNrZXJ2aWxsZSwgbW9ub3NwYWNlOyB9CiAgLm1mcC1jbG9zZTpob3ZlciwKICAubWZwLWNsb3NlOmZvY3VzIHsKICAgIG9wYWNpdHk6IDE7IH0KICAubWZwLWNsb3NlOmFjdGl2ZSB7CiAgICB0b3A6IDFweDsgfQoKLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7CiAgY29sb3I6ICMzMzM7IH0KCi5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY2xvc2UsCi5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNsb3NlIHsKICBjb2xvcjogI0ZGRjsKICByaWdodDogLTZweDsKICB0ZXh0LWFsaWduOiByaWdodDsKICBwYWRkaW5nLXJpZ2h0OiA2cHg7CiAgd2lkdGg6IDEwMCU7IH0KCi5tZnAtY291bnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBjb2xvcjogI0NDQzsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLm1mcC1hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG9wYWNpdHk6IDAuNjU7CiAgbWFyZ2luOiAwOwogIHRvcDogNTAlOwogIG1hcmdpbi10b3A6IC01NXB4OwogIHBhZGRpbmc6IDA7CiAgd2lkdGg6IDkwcHg7CiAgaGVpZ2h0OiAxMTBweDsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OyB9CiAgLm1mcC1hcnJvdzphY3RpdmUgewogICAgbWFyZ2luLXRvcDogLTU0cHg7IH0KICAubWZwLWFycm93OmhvdmVyLAogIC5tZnAtYXJyb3c6Zm9jdXMgewogICAgb3BhY2l0eTogMTsgfQogIC5tZnAtYXJyb3c6YmVmb3JlLAogIC5tZnAtYXJyb3c6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIG1hcmdpbi10b3A6IDM1cHg7CiAgICBtYXJnaW4tbGVmdDogMzVweDsKICAgIGJvcmRlcjogbWVkaXVtIGluc2V0IHRyYW5zcGFyZW50OyB9CiAgLm1mcC1hcnJvdzphZnRlciB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4OwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMTNweDsKICAgIHRvcDogOHB4OyB9CiAgLm1mcC1hcnJvdzpiZWZvcmUgewogICAgYm9yZGVyLXRvcC13aWR0aDogMjFweDsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIxcHg7CiAgICBvcGFjaXR5OiAwLjc7IH0KCi5tZnAtYXJyb3ctbGVmdCB7CiAgbGVmdDogMDsgfQogIC5tZnAtYXJyb3ctbGVmdDphZnRlciB7CiAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzMXB4OyB9CiAgLm1mcC1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgICBtYXJnaW4tbGVmdDogMjVweDsKICAgIGJvcmRlci1yaWdodDogMjdweCBzb2xpZCAjM0YzRjNGOyB9CgoubWZwLWFycm93LXJpZ2h0IHsKICByaWdodDogMDsgfQogIC5tZnAtYXJyb3ctcmlnaHQ6YWZ0ZXIgewogICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjsKICAgIG1hcmdpbi1sZWZ0OiAzOXB4OyB9CiAgLm1mcC1hcnJvdy1yaWdodDpiZWZvcmUgewogICAgYm9yZGVyLWxlZnQ6IDI3cHggc29saWQgIzNGM0YzRjsgfQoKLm1mcC1pZnJhbWUtaG9sZGVyIHsKICBwYWRkaW5nLXRvcDogNDBweDsKICBwYWRkaW5nLWJvdHRvbTogNDBweDsgfQogIC5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNvbnRlbnQgewogICAgbGluZS1oZWlnaHQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogOTAwcHg7IH0KICAubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jbG9zZSB7CiAgICB0b3A6IC00MHB4OyB9CgoubWZwLWlmcmFtZS1zY2FsZXIgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBhZGRpbmctdG9wOiA1Ni4yNSU7IH0KICAubWZwLWlmcmFtZS1zY2FsZXIgaWZyYW1lIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICBiYWNrZ3JvdW5kOiAjMDAwOyB9CgovKiBNYWluIGltYWdlIGluIHBvcHVwICovCmltZy5tZnAtaW1nIHsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAwOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcGFkZGluZzogNDBweCAwIDQwcHg7CiAgbWFyZ2luOiAwIGF1dG87IH0KCi8qIFRoZSBzaGFkb3cgYmVoaW5kIHRoZSBpbWFnZSAqLwoubWZwLWZpZ3VyZSB7CiAgbGluZS1oZWlnaHQ6IDA7IH0KICAubWZwLWZpZ3VyZTphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDA7CiAgICB0b3A6IDQwcHg7CiAgICBib3R0b206IDQwcHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICB6LWluZGV4OiAtMTsKICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgYmFja2dyb3VuZDogIzQ0NDsgfQogIC5tZnAtZmlndXJlIHNtYWxsIHsKICAgIGNvbG9yOiAjQkRCREJEOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBsaW5lLWhlaWdodDogMTRweDsgfQogIC5tZnAtZmlndXJlIGZpZ3VyZSB7CiAgICBtYXJnaW46IDA7IH0KCi5tZnAtYm90dG9tLWJhciB7CiAgbWFyZ2luLXRvcDogLTM2cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGN1cnNvcjogYXV0bzsgfQoKLm1mcC10aXRsZSB7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBsaW5lLWhlaWdodDogMThweDsKICBjb2xvcjogI0YzRjNGMzsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgcGFkZGluZy1yaWdodDogMzZweDsgfQoKLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jb250ZW50IHsKICBtYXgtd2lkdGg6IDEwMCU7IH0KCi5tZnAtZ2FsbGVyeSAubWZwLWltYWdlLWhvbGRlciAubWZwLWZpZ3VyZSB7CiAgY3Vyc29yOiBwb2ludGVyOyB9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSwgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHsKICAvKioKICAgICAgICogUmVtb3ZlIGFsbCBwYWRkaW5ncyBhcm91bmQgdGhlIGltYWdlIG9uIHNtYWxsIHNjcmVlbgogICAgICAgKi8KICAubWZwLWltZy1tb2JpbGUgLm1mcC1pbWFnZS1ob2xkZXIgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsgfQogIC5tZnAtaW1nLW1vYmlsZSBpbWcubWZwLWltZyB7CiAgICBwYWRkaW5nOiAwOyB9CiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtZmlndXJlOmFmdGVyIHsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsgfQogIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZSBzbWFsbCB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBtYXJnaW4tbGVmdDogNXB4OyB9CiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICBib3R0b206IDA7CiAgICBtYXJnaW46IDA7CiAgICB0b3A6IGF1dG87CiAgICBwYWRkaW5nOiAzcHggNXB4OwogICAgcG9zaXRpb246IGZpeGVkOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhcjplbXB0eSB7CiAgICAgIHBhZGRpbmc6IDA7IH0KICAubWZwLWltZy1tb2JpbGUgLm1mcC1jb3VudGVyIHsKICAgIHJpZ2h0OiA1cHg7CiAgICB0b3A6IDNweDsgfQogIC5tZnAtaW1nLW1vYmlsZSAubWZwLWNsb3NlIHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDM1cHg7CiAgICBoZWlnaHQ6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogMzVweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDA7IH0gfQoKQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsKICAubWZwLWFycm93IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7IH0KICAubWZwLWFycm93LWxlZnQgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwOwogICAgdHJhbnNmb3JtLW9yaWdpbjogMDsgfQogIC5tZnAtYXJyb3ctcmlnaHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJTsgfQogIC5tZnAtY29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgcGFkZGluZy1yaWdodDogNnB4OyB9IH0K"}},"time_used":27,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/assets/js/charts/gd-default.js?ver=3.0.3","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.029Z","timestamp":1785159465029,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/assets/js/charts/gd-default.js?ver=3.0.3 HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 2606\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":36144,"size_decoded":2843,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (361)","md5":"e3b356930afdc1199239ba96452cd32b","sha1":"3810b9a31df00e13a5962896996b07c590ca32e4","sha256":"5d9bdda63b66a1ee5f16882287c490c68e7a82fc174f1af416a628d9825ff8a1","sha512":"a83a7938cfea8c069c8be8a5ca0e10a5a831c539ce0087cfcb13acaf0228392c01ea6b3569519c5c77df4f5bba742102eccea1307fbced21cc4830dcbb51b62f","ssdeep":"384:iCXD4UaCgSIL5G4kaCgSiSaCZSYhKFDvzaCuV0LaCuSILb4paCZSIOhh:UxGCybuv/QzoqL","tlshash":"67f2f08efa79047aa013a42c56ff4605976572472e4abe247f1c2a502f1dc2df0f67ca","first_seen":"2026-07-27T07:42:30.772012Z","last_seen":"2026-07-27T13:38:47.781232Z","times_seen":3,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKISBmdW5jdGlvbihOaW9BcHAsICQpIHsKICAgICJ1c2Ugc3RyaWN0IjsgLy8vLy8vLy8gZm9yIGRldmVsb3BlciAtIFVzZXIgQmFsYW5jZSAvLy8vLy8vLyAKICAgIC8vIEF2aWxhYmxlIG9wdGlvbnMgdG8gcGFzcyBmcm9tIG91dHNpZGUgCiAgICAvLyBsYWJlbHM6IGFycmF5LAogICAgLy8gbGVnZW5kOiBmYWxzZSAtIGJvb2xlYW4sCiAgICAvLyBkYXRhVW5pdDogc3RyaW5nLCAoVXNlZCBpbiB0b29sdGlwIG9yIG90aGVyIHNlY3Rpb24gZm9yIGRpc3BsYXkpIAogICAgLy8gZGF0YXNldHM6IFt7bGFiZWwgOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcgKGNvbG9yIGNvZGUgd2l0aCAjIG9yIG90aGVyIGZvcm1hdCksIGRhdGE6IGFycmF5fV0KCiAgICB2YXIgcHJvZmlsZUJhbGFuY2UgPSB7CiAgICAgICAgbGFiZWxzOiBbIjAxIiwgIjAyIiwgIjAzIiwgIjA0IiwgIjA1IiwgIjA2IiwgIjA3IiwgIjA4IiwgIjA5IiwgIjEwIiwgIjExIiwgIjEyIiwgIjEzIiwgIjE0IiwgIjE1IiwgIjE2IiwgIjE3IiwgIjE4IiwgIjE5IiwgIjIwIiwgIjIxIiwgIjIyIiwgIjIzIiwgIjI0IiwgIjI1IiwgIjI2IiwgIjI3IiwgIjI4IiwgIjI5IiwgIjMwIl0sCiAgICAgICAgZGF0YVVuaXQ6ICdCVEMnLAogICAgICAgIGxpbmVUZW5zaW9uOiAwLjE1LAogICAgICAgIGRhdGFzZXRzOiBbewogICAgICAgICAgICBsYWJlbDogIlRvdGFsIFJlY2VpdmVkIiwKICAgICAgICAgICAgY29sb3I6ICIjNzk4YmZmIiwKICAgICAgICAgICAgYmFja2dyb3VuZDogTmlvQXBwLmhleFJHQignIzc5OGJmZicsIC4zKSwKICAgICAgICAgICAgZGF0YTogWzExMSwgODAsIDEyNSwgNzUsIDk1LCA3NSwgOTAsIDExMSwgODAsIDEyNSwgNzUsIDk1LCA3NSwgOTAsIDExMSwgODAsIDEyNSwgNzUsIDk1LCA3NSwgOTAsIDExMSwgODAsIDEyNSwgNzUsIDk1LCA3NSwgOTAsIDc1LCA5MF0KICAgICAgICB9XQogICAgfTsKCiAgICBmdW5jdGlvbiBsaW5lUHJvZmlsZUJhbGFuY2Uoc2VsZWN0b3IsIHNldF9kYXRhKSB7CiAgICAgICAgdmFyICRzZWxlY3RvciA9IHNlbGVjdG9yID8gJChzZWxlY3RvcikgOiAkKCcucHJvZmlsZS1iYWxhbmNlLWNoYXJ0Jyk7CiAgICAgICAgJHNlbGVjdG9yLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBfc2VsZl9pZCA9ICRzZWxmLmF0dHIoJ2lkJyksCiAgICAgICAgICAgICAgICBfZ2V0X2RhdGEgPSB0eXBlb2Ygc2V0X2RhdGEgPT09ICd1bmRlZmluZWQnID8gZXZhbChfc2VsZl9pZCkgOiBzZXRfZGF0YTsKCiAgICAgICAgICAgIHZhciBzZWxlY3RDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfc2VsZl9pZCkuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgICAgdmFyIGNoYXJ0X2RhdGEgPSBbXTsKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2dldF9kYXRhLmRhdGFzZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjaGFydF9kYXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0ubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgdGVuc2lvbjogX2dldF9kYXRhLmxpbmVUZW5zaW9uLAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmJhY2tncm91bmQsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5jb2xvciwKICAgICAgICAgICAgICAgICAgICBwb2ludEJvcmRlckNvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgIHBvaW50QmFja2dyb3VuZENvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgIHBvaW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6ICIjZmZmIiwKICAgICAgICAgICAgICAgICAgICBwb2ludEhvdmVyQm9yZGVyQ29sb3I6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5jb2xvciwKICAgICAgICAgICAgICAgICAgICBwb2ludEJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICAgICAgICAgIHBvaW50SG92ZXJSYWRpdXM6IDMsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRIb3ZlckJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICAgICAgICAgIHBvaW50UmFkaXVzOiAzLAogICAgICAgICAgICAgICAgICAgIHBvaW50SGl0UmFkaXVzOiAzLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5kYXRhCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGNoYXJ0ID0gbmV3IENoYXJ0KHNlbGVjdENhbnZhcywgewogICAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLAogICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgIGxhYmVsczogX2dldF9kYXRhLmxhYmVscywKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogY2hhcnRfZGF0YQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZSh0b29sdGlwSXRlbSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24gbGFiZWwodG9vbHRpcEl0ZW0sIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdWydkYXRhJ11bdG9vbHRpcEl0ZW1bJ2luZGV4J11dICsgJyAnICsgX2dldF9kYXRhLmRhdGFVbml0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWZmNmZmJywKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZTogMTEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udENvbG9yOiAnIzY3ODNiOCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlTWFyZ2luQm90dG9tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udENvbG9yOiAnIzllYWVjZicsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGb250U2l6ZTogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiAzLAogICAgICAgICAgICAgICAgICAgICAgICB5UGFkZGluZzogOCwKICAgICAgICAgICAgICAgICAgICAgICAgeFBhZGRpbmc6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvbG9yczogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlOiBOaW9BcHAuU3RhdGUuaXNSVEwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSAvLyBpbml0IGNoYXJ0CgoKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgbGluZVByb2ZpbGVCYWxhbmNlKCk7CiAgICB9KTsKICAgIHZhciBvcmRlck92ZXJ2aWV3ID0gewogICAgICAgIGxhYmVsczogWyIxOSBEZWMiLCAiMjAgRGVjIiwgIjIxIERlYyIsICIyMiBEZWMiLCAiMjMgRGVjIiwgIjI0IERlYyIsICIyNSBEZWMiLCAiMjYgRGVjIiwgIjI3IERlYyIsICIyOCBEZWMiLCAiMjkgRGVjIiwgIjMwIERlYyIsICIzMSBEZWMiLCAiMDEgSmFuIl0sCiAgICAgICAgZGF0YVVuaXQ6ICdVU0QnLAogICAgICAgIGRhdGFzZXRzOiBbewogICAgICAgICAgICBsYWJlbDogIkJ1eSBPcmRlcnMiLAogICAgICAgICAgICBjb2xvcjogIiM4ZmVhYzUiLAogICAgICAgICAgICBkYXRhOiBbMTc0MCwgMjUwMCwgMTgyMCwgMTIwMCwgMTYwMCwgMjUwMCwgMTgyMCwgMTIwMCwgMTcwMCwgMTgyMCwgMTQwMCwgMTYwMCwgMTkzMCwgMjEwMF0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGxhYmVsOiAiU2VsbCBPcmRlcnMiLAogICAgICAgICAgICBjb2xvcjogIiM5Y2FiZmYiLAogICAgICAgICAgICBkYXRhOiBbMjQyMCwgMTgyMCwgMzAwMCwgNTAwMCwgMjQ1MCwgMTgyMCwgMjcwMCwgNTAwMCwgMjQwMCwgMjYwMCwgNDAwMCwgMjM4MCwgMjEyMCwgMTcwMF0KICAgICAgICB9XQogICAgfTsKCiAgICBmdW5jdGlvbiBvcmRlck92ZXJ2aWV3Q2hhcnQoc2VsZWN0b3IsIHNldF9kYXRhKSB7CiAgICAgICAgdmFyICRzZWxlY3RvciA9IHNlbGVjdG9yID8gJChzZWxlY3RvcikgOiAkKCcub3JkZXItb3ZlcnZpZXctY2hhcnQnKTsKICAgICAgICAkc2VsZWN0b3IuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIF9zZWxmX2lkID0gJHNlbGYuYXR0cignaWQnKSwKICAgICAgICAgICAgICAgIF9nZXRfZGF0YSA9IHR5cGVvZiBzZXRfZGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyBldmFsKF9zZWxmX2lkKSA6IHNldF9kYXRhLAogICAgICAgICAgICAgICAgX2RfbGVnZW5kID0gdHlwZW9mIF9nZXRfZGF0YS5sZWdlbmQgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBfZ2V0X2RhdGEubGVnZW5kOwoKICAgICAgICAgICAgdmFyIHNlbGVjdENhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF9zZWxmX2lkKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgY2hhcnRfZGF0YSA9IFtdOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfZ2V0X2RhdGEuZGF0YXNldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGNoYXJ0X2RhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5sYWJlbCwKICAgICAgICAgICAgICAgICAgICBkYXRhOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0uZGF0YSwKICAgICAgICAgICAgICAgICAgICAvLyBTdHlsZXMKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5jb2xvciwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50JywKICAgICAgICAgICAgICAgICAgICBob3ZlckJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6ICdib3R0b20nLAogICAgICAgICAgICAgICAgICAgIGJhclBlcmNlbnRhZ2U6IC44LAogICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5UGVyY2VudGFnZTogLjYKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgY2hhcnQgPSBuZXcgQ2hhcnQoc2VsZWN0Q2FudmFzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnYmFyJywKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IF9nZXRfZGF0YS5sYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgZGF0YXNldHM6IGNoYXJ0X2RhdGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IF9nZXRfZGF0YS5sZWdlbmQgPyBfZ2V0X2RhdGEubGVnZW5kIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFdpZHRoOiAzMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzY3ODNiOCcKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgcnRsOiBOaW9BcHAuU3RhdGUuaXNSVEwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bmN0aW9uIHRpdGxlKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW1bMF0uZGF0YXNldEluZGV4XS5sYWJlbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24gbGFiZWwodG9vbHRpcEl0ZW0sIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdWydkYXRhJ11bdG9vbHRpcEl0ZW1bJ2luZGV4J11dICsgJyAnICsgX2dldF9kYXRhLmRhdGFVbml0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWZmNmZmJywKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZTogMTMsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udENvbG9yOiAnIzY3ODNiOCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlTWFyZ2luQm90dG9tOiA2LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udENvbG9yOiAnIzllYWVjZicsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGb250U2l6ZTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiA0LAogICAgICAgICAgICAgICAgICAgICAgICB5UGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIHhQYWRkaW5nOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTWFyZ2luVG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrZWQ6IF9nZXRfZGF0YS5zdGFja2VkID8gX2dldF9kYXRhLnN0YWNrZWQgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBOaW9BcHAuU3RhdGUuaXNSVEwgPyAicmlnaHQiIDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzllYWVjZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKHZhbHVlLCBpbmRleCwgdmFsdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJCAnICsgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IDUwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFNpemU6IDEyMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogTmlvQXBwLmhleFJHQigiIzUyNjQ4NCIsIC4yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrTWFya0xlbmd0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiBOaW9BcHAuaGV4UkdCKCIjNTI2NDg0IiwgLjIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJ2F1dG8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2U6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tNYXJrTGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQ29sb3I6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSAvLyBpbml0IGNoYXJ0CgoKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgb3JkZXJPdmVydmlld0NoYXJ0KCk7CiAgICB9KTsKICAgIHZhciB1c2VyQWN0aXZpdHkgPSB7CiAgICAgICAgbGFiZWxzOiBbIjAxIE5vdiIsICIwMiBOb3YiLCAiMDMgTm92IiwgIjA0IE5vdiIsICIwNSBOb3YiLCAiMDYgTm92IiwgIjA3IE5vdiIsICIwOCBOb3YiLCAiMDkgTm92IiwgIjEwIE5vdiIsICIxMSBOb3YiLCAiMTIgTm92IiwgIjEzIE5vdiIsICIxNCBOb3YiLCAiMTUgTm92IiwgIjE2IE5vdiIsICIxNyBOb3YiLCAiMTggTm92IiwgIjE5IE5vdiIsICIyMCBOb3YiLCAiMjEgTm92Il0sCiAgICAgICAgZGF0YVVuaXQ6ICdVU0QnLAogICAgICAgIHN0YWNrZWQ6IHRydWUsCiAgICAgICAgZGF0YXNldHM6IFt7CiAgICAgICAgICAgIGxhYmVsOiAiRGlyZWN0IEpvaW4iLAogICAgICAgICAgICBjb2xvcjogIiM5Y2FiZmYiLAogICAgICAgICAgICBkYXRhOiBbMTEwLCA4MCwgMTI1LCA1NSwgOTUsIDc1LCA5MCwgMTEwLCA4MCwgMTI1LCA1NSwgOTUsIDc1LCA5MCwgMTEwLCA4MCwgMTI1LCA1NSwgOTUsIDc1LCA5MF0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGxhYmVsOiAiUmVmZXJyYWwgSm9pbiIsCiAgICAgICAgICAgIGNvbG9yOiBOaW9BcHAuaGV4UkdCKCIjOWNhYmZmIiwgLjQpLAogICAgICAgICAgICBkYXRhOiBbMTI1LCA1NSwgOTUsIDc1LCA5MCwgMTEwLCA4MCwgMTI1LCA1NSwgOTUsIDc1LCA5MCwgMTEwLCA4MCwgMTI1LCA1NSwgOTUsIDc1LCA5MCwgNzUsIDkwXQogICAgICAgIH1dCiAgICB9OwoKICAgIGZ1bmN0aW9uIHVzZXJBY3Rpdml0eUNoYXJ0KHNlbGVjdG9yLCBzZXRfZGF0YSkgewogICAgICAgIHZhciAkc2VsZWN0b3IgPSBzZWxlY3RvciA/ICQoc2VsZWN0b3IpIDogJCgnLnVzZXJhLWFjdGl2aXR5LWNoYXJ0Jyk7CiAgICAgICAgJHNlbGVjdG9yLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBfc2VsZl9pZCA9ICRzZWxmLmF0dHIoJ2lkJyksCiAgICAgICAgICAgICAgICBfZ2V0X2RhdGEgPSB0eXBlb2Ygc2V0X2RhdGEgPT09ICd1bmRlZmluZWQnID8gZXZhbChfc2VsZl9pZCkgOiBzZXRfZGF0YSwKICAgICAgICAgICAgICAgIF9kX2xlZ2VuZCA9IHR5cGVvZiBfZ2V0X2RhdGEubGVnZW5kID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogX2dldF9kYXRhLmxlZ2VuZDsKCiAgICAgICAgICAgIHZhciBzZWxlY3RDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfc2VsZl9pZCkuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgICAgdmFyIGNoYXJ0X2RhdGEgPSBbXTsKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2dldF9kYXRhLmRhdGFzZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjaGFydF9kYXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0ubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgLy8gU3R5bGVzCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0uY29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd0cmFuc3BhcmVudCcsCiAgICAgICAgICAgICAgICAgICAgaG92ZXJCb3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50JywKICAgICAgICAgICAgICAgICAgICBib3JkZXJTa2lwcGVkOiAnYm90dG9tJywKICAgICAgICAgICAgICAgICAgICBiYXJQZXJjZW50YWdlOiAuNywKICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVBlcmNlbnRhZ2U6IC43CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGNoYXJ0ID0gbmV3IENoYXJ0KHNlbGVjdENhbnZhcywgewogICAgICAgICAgICAgICAgdHlwZTogJ2JhcicsCiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiBfZ2V0X2RhdGEubGFiZWxzLAogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiBjaGFydF9kYXRhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBfZ2V0X2RhdGEubGVnZW5kID8gX2dldF9kYXRhLmxlZ2VuZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hXaWR0aDogMzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM2NzgzYjgnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZSh0b29sdGlwSXRlbSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmRhdGFzZXRzW3Rvb2x0aXBJdGVtWzBdLmRhdGFzZXRJbmRleF0ubGFiZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uIGxhYmVsKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XVsnZGF0YSddW3Rvb2x0aXBJdGVtWydpbmRleCddXSArICcgJyArIF9nZXRfZGF0YS5kYXRhVW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VmZjZmZicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU6IDEzLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogJyM2NzgzYjgnLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU1hcmdpbkJvdHRvbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udFNpemU6IDEyLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5U3BhY2luZzogNCwKICAgICAgICAgICAgICAgICAgICAgICAgeVBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICB4UGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvbG9yczogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZDogX2dldF9kYXRhLnN0YWNrZWQgPyBfZ2V0X2RhdGEuc3RhY2tlZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgICAgeEF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrZWQ6IF9nZXRfZGF0YS5zdGFja2VkID8gX2dldF9kYXRhLnN0YWNrZWQgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZTogTmlvQXBwLlN0YXRlLmlzUlRMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0gLy8gaW5pdCBjaGFydAoKCiAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKGZ1bmN0aW9uKCkgewogICAgICAgIHVzZXJBY3Rpdml0eUNoYXJ0KCk7CiAgICB9KTsKICAgIHZhciBjb2luT3ZlcnZpZXcgPSB7CiAgICAgICAgbGFiZWxzOiBbIkJpdGNvaW4iLCAiRXRoZXJldW0iLCAiTmlvQ29pbiIsICJMaXRlY29pbiIsICJCaXRjb2luIl0sCiAgICAgICAgc3RhY2tlZDogdHJ1ZSwKICAgICAgICBkYXRhc2V0czogW3sKICAgICAgICAgICAgbGFiZWw6ICJCdXkgT3JkZXJzIiwKICAgICAgICAgICAgY29sb3I6IFsiI2Y5OGM0NSIsICIjOWNhYmZmIiwgIiM4ZmVhYzUiLCAiIzZiNzljOCIsICIjNzlmMWRjIl0sCiAgICAgICAgICAgIGRhdGE6IFsxNzQwLCAyNTAwLCAxODIwLCAxMjAwLCAxNjAwLCAyNTAwXQogICAgICAgIH0sIHsKICAgICAgICAgICAgbGFiZWw6ICJTZWxsIE9yZGVycyIsCiAgICAgICAgICAgIGNvbG9yOiBbTmlvQXBwLmhleFJHQignI2Y5OGM0NScsIC4yKSwgTmlvQXBwLmhleFJHQignIzljYWJmZicsIC40KSwgTmlvQXBwLmhleFJHQignIzhmZWFjNScsIC40KSwgTmlvQXBwLmhleFJHQignIzZiNzljOCcsIC40KSwgTmlvQXBwLmhleFJHQignIzc5ZjFkYycsIC40KV0sCiAgICAgICAgICAgIGRhdGE6IFsyNDIwLCAxODIwLCAzMDAwLCA1MDAwLCAyNDUwLCAxODIwXQogICAgICAgIH1dCiAgICB9OwoKICAgIGZ1bmN0aW9uIGNvaW5PdmVydmlld0NoYXJ0KHNlbGVjdG9yLCBzZXRfZGF0YSkgewogICAgICAgIHZhciAkc2VsZWN0b3IgPSBzZWxlY3RvciA/ICQoc2VsZWN0b3IpIDogJCgnLmNvaW4tb3ZlcnZpZXctY2hhcnQnKTsKICAgICAgICAkc2VsZWN0b3IuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIF9zZWxmX2lkID0gJHNlbGYuYXR0cignaWQnKSwKICAgICAgICAgICAgICAgIF9nZXRfZGF0YSA9IHR5cGVvZiBzZXRfZGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyBldmFsKF9zZWxmX2lkKSA6IHNldF9kYXRhLAogICAgICAgICAgICAgICAgX2RfbGVnZW5kID0gdHlwZW9mIF9nZXRfZGF0YS5sZWdlbmQgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBfZ2V0X2RhdGEubGVnZW5kOwoKICAgICAgICAgICAgdmFyIHNlbGVjdENhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF9zZWxmX2lkKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgY2hhcnRfZGF0YSA9IFtdOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfZ2V0X2RhdGEuZGF0YXNldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGNoYXJ0X2RhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5sYWJlbCwKICAgICAgICAgICAgICAgICAgICBkYXRhOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0uZGF0YSwKICAgICAgICAgICAgICAgICAgICAvLyBTdHlsZXMKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5jb2xvciwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50JywKICAgICAgICAgICAgICAgICAgICBob3ZlckJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLAogICAgICAgICAgICAgICAgICAgIGJvcmRlclNraXBwZWQ6ICdib3R0b20nLAogICAgICAgICAgICAgICAgICAgIGJhclRoaWNrbmVzczogJzgnLAogICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5UGVyY2VudGFnZTogMC41LAogICAgICAgICAgICAgICAgICAgIGJhclBlcmNlbnRhZ2U6IDEuMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBjaGFydCA9IG5ldyBDaGFydChzZWxlY3RDYW52YXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyJywKICAgICAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IF9nZXRfZGF0YS5sYWJlbHMsCiAgICAgICAgICAgICAgICAgICAgZGF0YXNldHM6IGNoYXJ0X2RhdGEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IF9nZXRfZGF0YS5sZWdlbmQgPyBfZ2V0X2RhdGEubGVnZW5kIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFdpZHRoOiAzMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzY3ODNiOCcKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgcnRsOiBOaW9BcHAuU3RhdGUuaXNSVEwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZ1bmN0aW9uIHRpdGxlKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbJ2xhYmVscyddW3Rvb2x0aXBJdGVtWzBdWydpbmRleCddXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24gbGFiZWwodG9vbHRpcEl0ZW0sIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdWydkYXRhJ11bdG9vbHRpcEl0ZW1bJ2luZGV4J11dICsgJyAnICsgZGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdWydsYWJlbCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWZmNmZmJywKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZTogMTMsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udENvbG9yOiAnIzY3ODNiOCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlTWFyZ2luQm90dG9tOiA2LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udENvbG9yOiAnIzllYWVjZicsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlGb250U2l6ZTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlTcGFjaW5nOiA0LAogICAgICAgICAgICAgICAgICAgICAgICB5UGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIHhQYWRkaW5nOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTWFyZ2luVG9wOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogTmlvQXBwLmhleFJHQigiIzUyNjQ4NCIsIC4yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrTWFya0xlbmd0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiBOaW9BcHAuaGV4UkdCKCIjNTI2NDg0IiwgLjIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZDogX2dldF9kYXRhLnN0YWNrZWQgPyBfZ2V0X2RhdGEuc3RhY2tlZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250Q29sb3I6ICcjOWVhZWNmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICdhdXRvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2U6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tNYXJrTGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQ29sb3I6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSAvLyBpbml0IGNoYXJ0CgoKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgY29pbk92ZXJ2aWV3Q2hhcnQoKTsKICAgIH0pOwogICAgdmFyIHNhbGVzUmV2ZW51ZSA9IHsKICAgICAgICBsYWJlbHM6IFsiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiXSwKICAgICAgICBkYXRhVW5pdDogJ1VTRCcsCiAgICAgICAgc3RhY2tlZDogdHJ1ZSwKICAgICAgICBkYXRhc2V0czogW3sKICAgICAgICAgICAgbGFiZWw6ICJTYWxlcyBSZXZlbnVlIiwKICAgICAgICAgICAgY29sb3I6IFtOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjY2VhMzFhIiwgLjIpLCAiI2NlYTMxYSJdLAogICAgICAgICAgICBkYXRhOiBbMTEwMDAsIDgwMDAsIDEyNTAwLCA1NTAwLCA5NTAwLCAxNDI5OSwgMTEwMDAsIDgwMDAsIDEyNTAwLCA1NTAwLCA5NTAwLCAxNDI5OV0KICAgICAgICB9XQogICAgfTsKICAgIHZhciBhY3RpdmVTdWJzY3JpcHRpb24gPSB7CiAgICAgICAgbGFiZWxzOiBbIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIl0sCiAgICAgICAgZGF0YVVuaXQ6ICdVU0QnLAogICAgICAgIHN0YWNrZWQ6IHRydWUsCiAgICAgICAgZGF0YXNldHM6IFt7CiAgICAgICAgICAgIGxhYmVsOiAiQWN0aXZlIFVzZXIiLAogICAgICAgICAgICBjb2xvcjogW05pb0FwcC5oZXhSR0IoIiNjZWEzMWEiLCAuMiksIE5pb0FwcC5oZXhSR0IoIiNjZWEzMWEiLCAuMiksIE5pb0FwcC5oZXhSR0IoIiNjZWEzMWEiLCAuMiksIE5pb0FwcC5oZXhSR0IoIiNjZWEzMWEiLCAuMiksIE5pb0FwcC5oZXhSR0IoIiNjZWEzMWEiLCAuMiksICIjY2VhMzFhIl0sCiAgICAgICAgICAgIGRhdGE6IFs4MjAwLCA3ODAwLCA5NTAwLCA1NTAwLCA5MjAwLCA5NjkwXQogICAgICAgIH1dCiAgICB9OwogICAgdmFyIHRvdGFsU3Vic2NyaXB0aW9uID0gewogICAgICAgIGxhYmVsczogWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biJdLAogICAgICAgIGRhdGFVbml0OiAnVVNEJywKICAgICAgICBzdGFja2VkOiB0cnVlLAogICAgICAgIGRhdGFzZXRzOiBbewogICAgICAgICAgICBsYWJlbDogIkFjdGl2ZSBVc2VyIiwKICAgICAgICAgICAgY29sb3I6IFtOaW9BcHAuaGV4UkdCKCIjYWVhMWZmIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjYWVhMWZmIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjYWVhMWZmIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjYWVhMWZmIiwgLjIpLCBOaW9BcHAuaGV4UkdCKCIjYWVhMWZmIiwgLjIpLCAiI2FlYTFmZiJdLAogICAgICAgICAgICBkYXRhOiBbODIwMCwgNzgwMCwgOTUwMCwgNTUwMCwgOTIwMCwgOTY5MF0KICAgICAgICB9XQogICAgfTsKCiAgICBmdW5jdGlvbiBzYWxlc0JhckNoYXJ0KHNlbGVjdG9yLCBzZXRfZGF0YSkgewogICAgICAgIHZhciAkc2VsZWN0b3IgPSBzZWxlY3RvciA/ICQoc2VsZWN0b3IpIDogJCgnLnNhbGVzLWJhci1jaGFydCcpOwogICAgICAgICRzZWxlY3Rvci5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgX3NlbGZfaWQgPSAkc2VsZi5hdHRyKCdpZCcpLAogICAgICAgICAgICAgICAgX2dldF9kYXRhID0gdHlwZW9mIHNldF9kYXRhID09PSAndW5kZWZpbmVkJyA/IGV2YWwoX3NlbGZfaWQpIDogc2V0X2RhdGEsCiAgICAgICAgICAgICAgICBfZF9sZWdlbmQgPSB0eXBlb2YgX2dldF9kYXRhLmxlZ2VuZCA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IF9nZXRfZGF0YS5sZWdlbmQ7CgogICAgICAgICAgICB2YXIgc2VsZWN0Q2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3NlbGZfaWQpLmdldENvbnRleHQoIjJkIik7CiAgICAgICAgICAgIHZhciBjaGFydF9kYXRhID0gW107CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9nZXRfZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgY2hhcnRfZGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBsYWJlbDogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmxhYmVsLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5kYXRhLAogICAgICAgICAgICAgICAgICAgIC8vIFN0eWxlcwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmNvbG9yLAogICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLAogICAgICAgICAgICAgICAgICAgIGhvdmVyQm9yZGVyQ29sb3I6ICd0cmFuc3BhcmVudCcsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyU2tpcHBlZDogJ2JvdHRvbScsCiAgICAgICAgICAgICAgICAgICAgYmFyUGVyY2VudGFnZTogLjcsCiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlQZXJjZW50YWdlOiAuNwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBjaGFydCA9IG5ldyBDaGFydChzZWxlY3RDYW52YXMsIHsKICAgICAgICAgICAgICAgIHR5cGU6ICdiYXInLAogICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgIGxhYmVsczogX2dldF9kYXRhLmxhYmVscywKICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogY2hhcnRfZGF0YQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogX2dldF9kYXRhLmxlZ2VuZCA/IF9nZXRfZGF0YS5sZWdlbmQgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgcnRsOiBOaW9BcHAuU3RhdGUuaXNSVEwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94V2lkdGg6IDMwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250Q29sb3I6ICcjNjc4M2I4JwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICB0b29sdGlwczogewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVuY3Rpb24gdGl0bGUodG9vbHRpcEl0ZW0sIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uIGxhYmVsKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbJ2xhYmVscyddW3Rvb2x0aXBJdGVtWydpbmRleCddXSArICcgJyArIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XVsnZGF0YSddW3Rvb2x0aXBJdGVtWydpbmRleCddXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VmZjZmZicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU6IDExLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogJyM2NzgzYjgnLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU1hcmdpbkJvdHRvbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udFNpemU6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5U3BhY2luZzogMywKICAgICAgICAgICAgICAgICAgICAgICAgeVBhZGRpbmc6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIHhQYWRkaW5nOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJNYXJnaW5Ub3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlDb2xvcnM6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgeUF4ZXM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrZWQ6IF9nZXRfZGF0YS5zdGFja2VkID8gX2dldF9kYXRhLnN0YWNrZWQgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHhBeGVzOiBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2U6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9IC8vIGluaXQgY2hhcnQKCgogICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChmdW5jdGlvbigpIHsKICAgICAgICBzYWxlc0JhckNoYXJ0KCk7CiAgICB9KTsKICAgIHZhciBzYWxlc092ZXJ2aWV3ID0gewogICAgICAgIGxhYmVsczogWyIwMSIsICIwMiIsICIwMyIsICIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIwOSIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsICIxNiIsICIxNyIsICIxOCIsICIxOSIsICIyMCIsICIyMSIsICIyMiIsICIyMyIsICIyNCIsICIyNSIsICIyNiIsICIyNyIsICIyOCIsICIyOSIsICIzMCJdLAogICAgICAgIGRhdGFVbml0OiAnQlRDJywKICAgICAgICBsaW5lVGVuc2lvbjogMC4xLAogICAgICAgIGRhdGFzZXRzOiBbewogICAgICAgICAgICBsYWJlbDogIlNhbGVzIE92ZXJ2aWV3IiwKICAgICAgICAgICAgY29sb3I6ICIjNzk4YmZmIiwKICAgICAgICAgICAgYmFja2dyb3VuZDogTmlvQXBwLmhleFJHQignIzc5OGJmZicsIC4zKSwKICAgICAgICAgICAgZGF0YTogWzgyMDAsIDc4MDAsIDk1MDAsIDU1MDAsIDkyMDAsIDk2OTAsIDgyMDAsIDc4MDAsIDk1MDAsIDU1MDAsIDkyMDAsIDk2OTAsIDgyMDAsIDc4MDAsIDk1MDAsIDU1MDAsIDkyMDAsIDk2OTAsIDgyMDAsIDc4MDAsIDk1MDAsIDU1MDAsIDkyMDAsIDk2OTAsIDgyMDAsIDc4MDAsIDk1MDAsIDU1MDAsIDkyMDAsIDk2OTBdCiAgICAgICAgfV0KICAgIH07CgogICAgZnVuY3Rpb24gbGluZVNhbGVzT3ZlcnZpZXcoc2VsZWN0b3IsIHNldF9kYXRhKSB7CiAgICAgICAgdmFyICRzZWxlY3RvciA9IHNlbGVjdG9yID8gJChzZWxlY3RvcikgOiAkKCcuc2FsZXMtb3ZlcnZpZXctY2hhcnQnKTsKICAgICAgICAkc2VsZWN0b3IuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIF9zZWxmX2lkID0gJHNlbGYuYXR0cignaWQnKSwKICAgICAgICAgICAgICAgIF9nZXRfZGF0YSA9IHR5cGVvZiBzZXRfZGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyBldmFsKF9zZWxmX2lkKSA6IHNldF9kYXRhOwoKICAgICAgICAgICAgdmFyIHNlbGVjdENhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF9zZWxmX2lkKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICAgICB2YXIgY2hhcnRfZGF0YSA9IFtdOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfZ2V0X2RhdGEuZGF0YXNldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGNoYXJ0X2RhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9nZXRfZGF0YS5kYXRhc2V0c1tpXS5sYWJlbCwKICAgICAgICAgICAgICAgICAgICB0ZW5zaW9uOiBfZ2V0X2RhdGEubGluZVRlbnNpb24sCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0uYmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmNvbG9yLAogICAgICAgICAgICAgICAgICAgIHBvaW50Qm9yZGVyQ29sb3I6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRCYWNrZ3JvdW5kQ29sb3I6ICJ0cmFuc3BhcmVudCIsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRIb3ZlckJhY2tncm91bmRDb2xvcjogIiNmZmYiLAogICAgICAgICAgICAgICAgICAgIHBvaW50SG92ZXJCb3JkZXJDb2xvcjogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmNvbG9yLAogICAgICAgICAgICAgICAgICAgIHBvaW50Qm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRIb3ZlclJhZGl1czogMywKICAgICAgICAgICAgICAgICAgICBwb2ludEhvdmVyQm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRSYWRpdXM6IDMsCiAgICAgICAgICAgICAgICAgICAgcG9pbnRIaXRSYWRpdXM6IDMsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmRhdGEKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgY2hhcnQgPSBuZXcgQ2hhcnQoc2VsZWN0Q2FudmFzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsCiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiBfZ2V0X2RhdGEubGFiZWxzLAogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiBjaGFydF9kYXRhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBfZ2V0X2RhdGEubGVnZW5kID8gX2dldF9kYXRhLmxlZ2VuZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hXaWR0aDogMzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM2NzgzYjgnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZSh0b29sdGlwSXRlbSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhWydsYWJlbHMnXVt0b29sdGlwSXRlbVswXVsnaW5kZXgnXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uIGxhYmVsKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XVsnZGF0YSddW3Rvb2x0aXBJdGVtWydpbmRleCddXSArICcgJyArIF9nZXRfZGF0YS5kYXRhVW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VmZjZmZicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU6IDEzLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogJyM2NzgzYjgnLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU1hcmdpbkJvdHRvbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udFNpemU6IDEyLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5U3BhY2luZzogNCwKICAgICAgICAgICAgICAgICAgICAgICAgeVBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICB4UGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvbG9yczogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogTmlvQXBwLlN0YXRlLmlzUlRMID8gInJpZ2h0IiA6ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IDExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjayh2YWx1ZSwgaW5kZXgsIHZhbHVlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyQgJyArIHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluOiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFNpemU6IDMwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogTmlvQXBwLmhleFJHQigiIzUyNjQ4NCIsIC4yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrTWFya0xlbmd0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiBOaW9BcHAuaGV4UkdCKCIjNTI2NDg0IiwgLjIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJ2F1dG8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2U6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tNYXJrTGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQ29sb3I6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSAvLyBpbml0IGNoYXJ0CgoKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgbGluZVNhbGVzT3ZlcnZpZXcoKTsKICAgIH0pOwogICAgdmFyIHN1cHBvcnRTdGF0dXMgPSB7CiAgICAgICAgbGFiZWxzOiBbIkJpdGNvaW4iLCAiRXRoZXJldW0iLCAiTmlvQ29pbiIsICJGZWF0dXJlIFJlcXVlc3QiLCAiQnVnIEZpeCJdLAogICAgICAgIHN0YWNrZWQ6IHRydWUsCiAgICAgICAgZGF0YXNldHM6IFt7CiAgICAgICAgICAgIGxhYmVsOiAiU29sdmVkIiwKICAgICAgICAgICAgY29sb3I6IFsiI2Y5OGM0NSIsICIjOWNhYmZmIiwgIiM4ZmVhYzUiLCAiIzZiNzljOCIsICIjNzlmMWRjIl0sCiAgICAgICAgICAgIGRhdGE6IFs2NiwgNzQsIDkyLCAxNDIsIDE4OV0KICAgICAgICB9LCB7CiAgICAgICAgICAgIGxhYmVsOiAiT3BlbiIsCiAgICAgICAgICAgIGNvbG9yOiBbTmlvQXBwLmhleFJHQignI2Y5OGM0NScsIC40KSwgTmlvQXBwLmhleFJHQignIzljYWJmZicsIC40KSwgTmlvQXBwLmhleFJHQignIzhmZWFjNScsIC40KSwgTmlvQXBwLmhleFJHQignIzZiNzljOCcsIC40KSwgTmlvQXBwLmhleFJHQignIzc5ZjFkYycsIC40KV0sCiAgICAgICAgICAgIGRhdGE6IFs2NiwgNzQsIDkyLCAzMiwgMjZdCiAgICAgICAgfSwgewogICAgICAgICAgICBsYWJlbDogIlBlbmRpbmciLAogICAgICAgICAgICBjb2xvcjogW05pb0FwcC5oZXhSR0IoJyNmOThjNDUnLCAuMiksIE5pb0FwcC5oZXhSR0IoJyM5Y2FiZmYnLCAuMiksIE5pb0FwcC5oZXhSR0IoJyM4ZmVhYzUnLCAuMiksIE5pb0FwcC5oZXhSR0IoJyM2Yjc5YzgnLCAuMiksIE5pb0FwcC5oZXhSR0IoJyM3OWYxZGMnLCAuMildLAogICAgICAgICAgICBkYXRhOiBbNjYsIDc0LCA5MiwgMjEsIDldCiAgICAgICAgfV0KICAgIH07CgogICAgZnVuY3Rpb24gc3VwcG9ydFN0YXR1c0NoYXJ0KHNlbGVjdG9yLCBzZXRfZGF0YSkgewogICAgICAgIHZhciAkc2VsZWN0b3IgPSBzZWxlY3RvciA/ICQoc2VsZWN0b3IpIDogJCgnLnN1cHBvcnQtc3RhdHVzLWNoYXJ0Jyk7CiAgICAgICAgJHNlbGVjdG9yLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBfc2VsZl9pZCA9ICRzZWxmLmF0dHIoJ2lkJyksCiAgICAgICAgICAgICAgICBfZ2V0X2RhdGEgPSB0eXBlb2Ygc2V0X2RhdGEgPT09ICd1bmRlZmluZWQnID8gZXZhbChfc2VsZl9pZCkgOiBzZXRfZGF0YSwKICAgICAgICAgICAgICAgIF9kX2xlZ2VuZCA9IHR5cGVvZiBfZ2V0X2RhdGEubGVnZW5kID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogX2dldF9kYXRhLmxlZ2VuZDsKCiAgICAgICAgICAgIHZhciBzZWxlY3RDYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfc2VsZl9pZCkuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICAgICAgdmFyIGNoYXJ0X2RhdGEgPSBbXTsKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2dldF9kYXRhLmRhdGFzZXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjaGFydF9kYXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0ubGFiZWwsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogX2dldF9kYXRhLmRhdGFzZXRzW2ldLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgLy8gU3R5bGVzCiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBfZ2V0X2RhdGEuZGF0YXNldHNbaV0uY29sb3IsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsCiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd0cmFuc3BhcmVudCcsCiAgICAgICAgICAgICAgICAgICAgaG92ZXJCb3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50JywKICAgICAgICAgICAgICAgICAgICBib3JkZXJTa2lwcGVkOiAnYm90dG9tJywKICAgICAgICAgICAgICAgICAgICBiYXJUaGlja25lc3M6ICc4JywKICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVBlcmNlbnRhZ2U6IDAuNSwKICAgICAgICAgICAgICAgICAgICBiYXJQZXJjZW50YWdlOiAxLjAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgY2hhcnQgPSBuZXcgQ2hhcnQoc2VsZWN0Q2FudmFzLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsCiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiBfZ2V0X2RhdGEubGFiZWxzLAogICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiBjaGFydF9kYXRhCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBfZ2V0X2RhdGEubGVnZW5kID8gX2dldF9kYXRhLmxlZ2VuZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTCwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hXaWR0aDogMzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM2NzgzYjgnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDogTmlvQXBwLlN0YXRlLmlzUlRMLAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmdW5jdGlvbiB0aXRsZSh0b29sdGlwSXRlbSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhWydsYWJlbHMnXVt0b29sdGlwSXRlbVswXVsnaW5kZXgnXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uIGxhYmVsKHRvb2x0aXBJdGVtLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XVsnZGF0YSddW3Rvb2x0aXBJdGVtWydpbmRleCddXSArICcgJyArIGRhdGEuZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XVsnbGFiZWwnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2VmZjZmZicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU6IDEzLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRDb2xvcjogJyM2NzgzYjgnLAogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZU1hcmdpbkJvdHRvbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keUZvbnRDb2xvcjogJyM5ZWFlY2YnLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5Rm9udFNpemU6IDEyLAogICAgICAgICAgICAgICAgICAgICAgICBib2R5U3BhY2luZzogNCwKICAgICAgICAgICAgICAgICAgICAgICAgeVBhZGRpbmc6IDEwLAogICAgICAgICAgICAgICAgICAgICAgICB4UGFkZGluZzogMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlck1hcmdpblRvcDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNvbG9yczogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNjYWxlczogewogICAgICAgICAgICAgICAgICAgICAgICB5QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBfZ2V0X2RhdGEuc3RhY2tlZCA/IF9nZXRfZGF0YS5zdGFja2VkIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogTmlvQXBwLlN0YXRlLmlzUlRMID8gInJpZ2h0IiA6ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5BdFplcm86IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiAiIzgwOTRhZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkTGluZXM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogInRyYW5zcGFyZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrTWFya0xlbmd0aDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiAndHJhbnNwYXJlbnQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICB4QXhlczogW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tlZDogX2dldF9kYXRhLnN0YWNrZWQgPyBfZ2V0X2RhdGEuc3RhY2tlZCA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3M6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250Q29sb3I6ICcjOWVhZWNmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICdhdXRvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2U6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRMaW5lczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAidHJhbnNwYXJlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tNYXJrTGVuZ3RoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MaW5lQ29sb3I6ICd0cmFuc3BhcmVudCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSAvLyBpbml0IGNoYXJ0CgoKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgc3VwcG9ydFN0YXR1c0NoYXJ0KCk7CiAgICB9KTsKfShOaW9BcHAsIGpRdWVyeSk7"}},"time_used":24,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_img.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.076Z","timestamp":1785159465076,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_img.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 70953\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":70953,"size_decoded":71219,"mime_type":"image/png","magic":"PNG image data, 310 x 442, 8-bit colormap, non-interlaced","md5":"b17883e227c79fc8f79433049afa2a75","sha1":"e05cbf2bd955e31910c1f2d7cf59352bd6677360","sha256":"c9db17d9aefe3baaf4855b83201ec5ad6f1df5382f69f12a92e27e8f6a382006","sha512":"aefeadab49a4bf3949f974c636f8abc47e3ef72aa5bbfa7ba4e61448b3e1945c8ba07908d77f89e9fb47d52e4e007318a76f1cd5b10600c5e5fd01782e3e5982","ssdeep":"1536:t1e7tO0osYLF/KSsABMnYKhMbtfPP0dzA+EI8xsMruI9vUmDeceIGUVe:t1yK/tzbKhMRHMpBcFjc6e","tlshash":"e6631230366f75e246c114009fea0f999343f3f7698ef885b6921ad6b993076c5411f6","first_seen":"2025-10-13T02:30:07.601085Z","last_seen":"2026-07-27T13:38:47.776565Z","times_seen":10,"resource_available":false,"data":"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"}},"time_used":73,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":54,"receive":19,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/translate.google.com/translate_a/elementa0d8.js?cb=googleTranslateElementInit","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.786Z","timestamp":1785159464786,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /translate.google.com/translate_a/elementa0d8.js?cb=googleTranslateElementInit HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\ncontent-length: 1251\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1251,"size_decoded":1459,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-08-04T06:18:11.726458Z","times_seen":145690,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":56,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":56,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/gsap.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.804Z","timestamp":1785159464804,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/gsap.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 27336\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":87601,"size_decoded":27574,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2662)","md5":"bbc405241f9adee450ce6aa4bc2c721d","sha1":"bb4492d3077897c736196b96647d101d51cdeee2","sha256":"ef7ecab5c06cb266136a33c98db3c6cb6d65c4efcae773a697adfe1d319d66bf","sha512":"995ca8d1d8a2f593ee49e777c000144a2bf57c5d0473d5f4aa568f579087d1e828e765cd3f8c20096a6ba684113d7b163749f87abafb0a81c666a718f06cb135","ssdeep":"1536:mum9DvvZwT/ER4gp36k/pyHTKAWXLavcUDdSLORd42IEQmSH+OZOXfyf75o2g1wi:mPFR4gpKk/pyHTKAWXLavcUZSLORd42T","tlshash":"7b83655933d276358147f1369dafcc4ab33a989e1786540e720c90f86f2c478c77aea9","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.491424Z","times_seen":346,"resource_available":true,"data":"LyohCiAqIEdTQVAgMy4xMC40CiAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogKiAKICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMjIsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICovCgohIGZ1bmN0aW9uKHQsIGUpIHsgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IGUoZXhwb3J0cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiXSwgZSkgOiBlKCh0ID0gdCB8fCBzZWxmKS53aW5kb3cgPSB0LndpbmRvdyB8fCB7fSkgfSh0aGlzLCBmdW5jdGlvbihlKSB7ICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBfaW5oZXJpdHNMb29zZSh0LCBlKSB7IHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksICh0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHQpLl9fcHJvdG9fXyA9IGUgfQoKICAgIGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCkgeyBpZiAodm9pZCAwID09PSB0KSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyByZXR1cm4gdCB9CgogICAgZnVuY3Rpb24gbyh0KSB7IHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgdCB9CgogICAgZnVuY3Rpb24gcCh0KSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiB0IH0KCiAgICBmdW5jdGlvbiBxKHQpIHsgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiB0IH0KCiAgICBmdW5jdGlvbiByKHQpIHsgcmV0dXJuIHZvaWQgMCA9PT0gdCB9CgogICAgZnVuY3Rpb24gcyh0KSB7IHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgdCB9CgogICAgZnVuY3Rpb24gdCh0KSB7IHJldHVybiAhMSAhPT0gdCB9CgogICAgZnVuY3Rpb24gdSgpIHsgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgfQoKICAgIGZ1bmN0aW9uIHYodCkgeyByZXR1cm4gcCh0KSB8fCBvKHQpIH0KCiAgICBmdW5jdGlvbiBNKHQpIHsgcmV0dXJuIChoID0gbXQodCwgb3QpKSAmJiBoZSB9CgogICAgZnVuY3Rpb24gTih0LCBlKSB7IHJldHVybiBjb25zb2xlLndhcm4oIkludmFsaWQgcHJvcGVydHkiLCB0LCAic2V0IHRvIiwgZSwgIk1pc3NpbmcgcGx1Z2luPyBnc2FwLnJlZ2lzdGVyUGx1Z2luKCkiKSB9CgogICAgZnVuY3Rpb24gTyh0LCBlKSB7IHJldHVybiAhZSAmJiBjb25zb2xlLndhcm4odCkgfQoKICAgIGZ1bmN0aW9uIFAodCwgZSkgeyByZXR1cm4gdCAmJiAob3RbdF0gPSBlKSAmJiBoICYmIChoW3RdID0gZSkgfHwgb3QgfQoKICAgIGZ1bmN0aW9uIFEoKSB7IHJldHVybiAwIH0KCiAgICBmdW5jdGlvbiAkKHQpIHsgdmFyIGUsIHIsIGkgPSB0WzBdOyBpZiAocyhpKSB8fCBwKGkpIHx8ICh0ID0gW3RdKSwgIShlID0gKGkuX2dzYXAgfHwge30pLmhhcm5lc3MpKSB7IGZvciAociA9IHB0Lmxlbmd0aDsgci0tICYmICFwdFtyXS50YXJnZXRUZXN0KGkpOyk7CiAgICAgICAgICAgIGUgPSBwdFtyXSB9IGZvciAociA9IHQubGVuZ3RoOyByLS07KSB0W3JdICYmICh0W3JdLl9nc2FwIHx8ICh0W3JdLl9nc2FwID0gbmV3IEx0KHRbcl0sIGUpKSkgfHwgdC5zcGxpY2UociwgMSk7IHJldHVybiB0IH0KCiAgICBmdW5jdGlvbiBfKHQpIHsgcmV0dXJuIHQuX2dzYXAgfHwgJCh4dCh0KSlbMF0uX2dzYXAgfQoKICAgIGZ1bmN0aW9uIGFhKHQsIGUsIGkpIHsgcmV0dXJuIChpID0gdFtlXSkgJiYgcChpKSA/IHRbZV0oKSA6IHIoaSkgJiYgdC5nZXRBdHRyaWJ1dGUgJiYgdC5nZXRBdHRyaWJ1dGUoZSkgfHwgaSB9CgogICAgZnVuY3Rpb24gYmEodCwgZSkgeyByZXR1cm4gKHQgPSB0LnNwbGl0KCIsIikpLmZvckVhY2goZSkgfHwgdCB9CgogICAgZnVuY3Rpb24gY2EodCkgeyByZXR1cm4gTWF0aC5yb3VuZCgxZTUgKiB0KSAvIDFlNSB8fCAwIH0KCiAgICBmdW5jdGlvbiBkYSh0KSB7IHJldHVybiBNYXRoLnJvdW5kKDFlNyAqIHQpIC8gMWU3IHx8IDAgfQoKICAgIGZ1bmN0aW9uIGVhKHQsIGUpIHsgdmFyIHIgPSBlLmNoYXJBdCgwKSwKICAgICAgICAgICAgaSA9IHBhcnNlRmxvYXQoZS5zdWJzdHIoMikpOyByZXR1cm4gdCA9IHBhcnNlRmxvYXQodCksICIrIiA9PT0gciA/IHQgKyBpIDogIi0iID09PSByID8gdCAtIGkgOiAiKiIgPT09IHIgPyB0ICogaSA6IHQgLyBpIH0KCiAgICBmdW5jdGlvbiBmYSh0LCBlKSB7IGZvciAodmFyIHIgPSBlLmxlbmd0aCwgaSA9IDA7IHQuaW5kZXhPZihlW2ldKSA8IDAgJiYgKytpIDwgcjspOyByZXR1cm4gaSA8IHIgfQoKICAgIGZ1bmN0aW9uIGdhKCkgeyB2YXIgdCwgZSwgciA9IGh0Lmxlbmd0aCwKICAgICAgICAgICAgaSA9IGh0LnNsaWNlKDApOyBmb3IgKGx0ID0ge30sIHQgPSBodC5sZW5ndGggPSAwOyB0IDwgcjsgdCsrKShlID0gaVt0XSkgJiYgZS5fbGF6eSAmJiAoZS5yZW5kZXIoZS5fbGF6eVswXSwgZS5fbGF6eVsxXSwgITApLl9sYXp5ID0gMCkgfQoKICAgIGZ1bmN0aW9uIGhhKHQsIGUsIHIsIGkpIHsgaHQubGVuZ3RoICYmIGdhKCksIHQucmVuZGVyKGUsIHIsIGkpLCBodC5sZW5ndGggJiYgZ2EoKSB9CgogICAgZnVuY3Rpb24gaWEodCkgeyB2YXIgZSA9IHBhcnNlRmxvYXQodCk7IHJldHVybiAoZSB8fCAwID09PSBlKSAmJiAodCArICIiKS5tYXRjaChhdCkubGVuZ3RoIDwgMiA/IGUgOiBvKHQpID8gdC50cmltKCkgOiB0IH0KCiAgICBmdW5jdGlvbiBqYSh0KSB7IHJldHVybiB0IH0KCiAgICBmdW5jdGlvbiBrYSh0LCBlKSB7IGZvciAodmFyIHIgaW4gZSkgciBpbiB0IHx8ICh0W3JdID0gZVtyXSk7IHJldHVybiB0IH0KCiAgICBmdW5jdGlvbiBuYSh0LCBlKSB7IGZvciAodmFyIHIgaW4gZSkgIl9fcHJvdG9fXyIgIT09IHIgJiYgImNvbnN0cnVjdG9yIiAhPT0gciAmJiAicHJvdG90eXBlIiAhPT0gciAmJiAodFtyXSA9IHMoZVtyXSkgPyBuYSh0W3JdIHx8ICh0W3JdID0ge30pLCBlW3JdKSA6IGVbcl0pOyByZXR1cm4gdCB9CgogICAgZnVuY3Rpb24gb2EodCwgZSkgeyB2YXIgciwgaSA9IHt9OyBmb3IgKHIgaW4gdCkgciBpbiBlIHx8IChpW3JdID0gdFtyXSk7IHJldHVybiBpIH0KCiAgICBmdW5jdGlvbiBwYShlKSB7IHZhciByID0gZS5wYXJlbnQgfHwgSSwKICAgICAgICAgICAgaSA9IGUua2V5ZnJhbWVzID8gZnVuY3Rpb24gX3NldEtleWZyYW1lRGVmYXVsdHMoaSkgeyByZXR1cm4gZnVuY3Rpb24odCwgZSkgeyBmb3IgKHZhciByIGluIGUpIHIgaW4gdCB8fCAiZHVyYXRpb24iID09PSByICYmIGkgfHwgImVhc2UiID09PSByIHx8ICh0W3JdID0gZVtyXSkgfSB9KEooZS5rZXlmcmFtZXMpKSA6IGthOyBpZiAodChlLmluaGVyaXQpKQogICAgICAgICAgICBmb3IgKDsgcjspIGkoZSwgci52YXJzLmRlZmF1bHRzKSwgciA9IHIucGFyZW50IHx8IHIuX2RwOyByZXR1cm4gZSB9CgogICAgZnVuY3Rpb24gcmEodCwgZSwgciwgaSwgbikgeyB2b2lkIDAgPT09IHIgJiYgKHIgPSAiX2ZpcnN0IiksIHZvaWQgMCA9PT0gaSAmJiAoaSA9ICJfbGFzdCIpOyB2YXIgYSwgcyA9IHRbaV07IGlmIChuKQogICAgICAgICAgICBmb3IgKGEgPSBlW25dOyBzICYmIHNbbl0gPiBhOykgcyA9IHMuX3ByZXY7IHJldHVybiBzID8gKGUuX25leHQgPSBzLl9uZXh0LCBzLl9uZXh0ID0gZSkgOiAoZS5fbmV4dCA9IHRbcl0sIHRbcl0gPSBlKSwgZS5fbmV4dCA/IGUuX25leHQuX3ByZXYgPSBlIDogdFtpXSA9IGUsIGUuX3ByZXYgPSBzLCBlLnBhcmVudCA9IGUuX2RwID0gdCwgZSB9CgogICAgZnVuY3Rpb24gc2EodCwgZSwgciwgaSkgeyB2b2lkIDAgPT09IHIgJiYgKHIgPSAiX2ZpcnN0IiksIHZvaWQgMCA9PT0gaSAmJiAoaSA9ICJfbGFzdCIpOyB2YXIgbiA9IGUuX3ByZXYsCiAgICAgICAgICAgIGEgPSBlLl9uZXh0OwogICAgICAgIG4gPyBuLl9uZXh0ID0gYSA6IHRbcl0gPT09IGUgJiYgKHRbcl0gPSBhKSwgYSA/IGEuX3ByZXYgPSBuIDogdFtpXSA9PT0gZSAmJiAodFtpXSA9IG4pLCBlLl9uZXh0ID0gZS5fcHJldiA9IGUucGFyZW50ID0gbnVsbCB9CgogICAgZnVuY3Rpb24gdGEodCwgZSkgeyF0LnBhcmVudCB8fCBlICYmICF0LnBhcmVudC5hdXRvUmVtb3ZlQ2hpbGRyZW4gfHwgdC5wYXJlbnQucmVtb3ZlKHQpLCB0Ll9hY3QgPSAwIH0KCiAgICBmdW5jdGlvbiB1YSh0LCBlKSB7IGlmICh0ICYmICghZSB8fCBlLl9lbmQgPiB0Ll9kdXIgfHwgZS5fc3RhcnQgPCAwKSkKICAgICAgICAgICAgZm9yICh2YXIgciA9IHQ7IHI7KSByLl9kaXJ0eSA9IDEsIHIgPSByLnBhcmVudDsgcmV0dXJuIHQgfQoKICAgIGZ1bmN0aW9uIHhhKHQpIHsgcmV0dXJuIHQuX3JlcGVhdCA/IGd0KHQuX3RUaW1lLCB0ID0gdC5kdXJhdGlvbigpICsgdC5fckRlbGF5KSAqIHQgOiAwIH0KCiAgICBmdW5jdGlvbiB6YSh0LCBlKSB7IHJldHVybiAodCAtIGUuX3N0YXJ0KSAqIGUuX3RzICsgKDAgPD0gZS5fdHMgPyAwIDogZS5fZGlydHkgPyBlLnRvdGFsRHVyYXRpb24oKSA6IGUuX3REdXIpIH0KCiAgICBmdW5jdGlvbiBBYSh0KSB7IHJldHVybiB0Ll9lbmQgPSBkYSh0Ll9zdGFydCArICh0Ll90RHVyIC8gTWF0aC5hYnModC5fdHMgfHwgdC5fcnRzIHx8IFYpIHx8IDApKSB9CgogICAgZnVuY3Rpb24gQmEodCwgZSkgeyB2YXIgciA9IHQuX2RwOyByZXR1cm4gciAmJiByLnNtb290aENoaWxkVGltaW5nICYmIHQuX3RzICYmICh0Ll9zdGFydCA9IGRhKHIuX3RpbWUgLSAoMCA8IHQuX3RzID8gZSAvIHQuX3RzIDogKCh0Ll9kaXJ0eSA/IHQudG90YWxEdXJhdGlvbigpIDogdC5fdER1cikgLSBlKSAvIC10Ll90cykpLCBBYSh0KSwgci5fZGlydHkgfHwgdWEociwgdCkpLCB0IH0KCiAgICBmdW5jdGlvbiBDYSh0LCBlKSB7IHZhciByOyBpZiAoKGUuX3RpbWUgfHwgZS5faW5pdHRlZCAmJiAhZS5fZHVyKSAmJiAociA9IHphKHQucmF3VGltZSgpLCBlKSwgKCFlLl9kdXIgfHwgYnQoMCwgZS50b3RhbER1cmF0aW9uKCksIHIpIC0gZS5fdFRpbWUgPiBWKSAmJiBlLnJlbmRlcihyLCAhMCkpLCB1YSh0LCBlKS5fZHAgJiYgdC5faW5pdHRlZCAmJiB0Ll90aW1lID49IHQuX2R1ciAmJiB0Ll90cykgeyBpZiAodC5fZHVyIDwgdC5kdXJhdGlvbigpKQogICAgICAgICAgICAgICAgZm9yIChyID0gdDsgci5fZHA7KSAwIDw9IHIucmF3VGltZSgpICYmIHIudG90YWxUaW1lKHIuX3RUaW1lKSwgciA9IHIuX2RwOwogICAgICAgICAgICB0Ll96VGltZSA9IC1WIH0gfQoKICAgIGZ1bmN0aW9uIERhKHQsIGUsIHIsIGkpIHsgcmV0dXJuIGUucGFyZW50ICYmIHRhKGUpLCBlLl9zdGFydCA9IGRhKChxKHIpID8gciA6IHIgfHwgdCAhPT0gSSA/IFR0KHQsIHIsIGUpIDogdC5fdGltZSkgKyBlLl9kZWxheSksIGUuX2VuZCA9IGRhKGUuX3N0YXJ0ICsgKGUudG90YWxEdXJhdGlvbigpIC8gTWF0aC5hYnMoZS50aW1lU2NhbGUoKSkgfHwgMCkpLCByYSh0LCBlLCAiX2ZpcnN0IiwgIl9sYXN0IiwgdC5fc29ydCA/ICJfc3RhcnQiIDogMCksIHZ0KGUpIHx8ICh0Ll9yZWNlbnQgPSBlKSwgaSB8fCBDYSh0LCBlKSwgdCB9CgogICAgZnVuY3Rpb24gRWEodCwgZSkgeyByZXR1cm4gKG90LlNjcm9sbFRyaWdnZXIgfHwgTigic2Nyb2xsVHJpZ2dlciIsIGUpKSAmJiBvdC5TY3JvbGxUcmlnZ2VyLmNyZWF0ZShlLCB0KSB9CgogICAgZnVuY3Rpb24gRmEodCwgZSwgciwgaSkgeyByZXR1cm4gWHQodCwgZSksIHQuX2luaXR0ZWQgPyAhciAmJiB0Ll9wdCAmJiAodC5fZHVyICYmICExICE9PSB0LnZhcnMubGF6eSB8fCAhdC5fZHVyICYmIHQudmFycy5sYXp5KSAmJiBmICE9PSBEdC5mcmFtZSA/IChodC5wdXNoKHQpLCB0Ll9sYXp5ID0gW2UsIGldLCAxKSA6IHZvaWQgMCA6IDEgfQoKICAgIGZ1bmN0aW9uIEthKHQsIGUsIHIsIGkpIHsgdmFyIG4gPSB0Ll9yZXBlYXQsCiAgICAgICAgICAgIGEgPSBkYShlKSB8fCAwLAogICAgICAgICAgICBzID0gdC5fdFRpbWUgLyB0Ll90RHVyOyByZXR1cm4gcyAmJiAhaSAmJiAodC5fdGltZSAqPSBhIC8gdC5fZHVyKSwgdC5fZHVyID0gYSwgdC5fdER1ciA9IG4gPyBuIDwgMCA/IDFlMTAgOiBkYShhICogKG4gKyAxKSArIHQuX3JEZWxheSAqIG4pIDogYSwgMCA8IHMgJiYgIWkgPyBCYSh0LCB0Ll90VGltZSA9IHQuX3REdXIgKiBzKSA6IHQucGFyZW50ICYmIEFhKHQpLCByIHx8IHVhKHQucGFyZW50LCB0KSwgdCB9CgogICAgZnVuY3Rpb24gTGEodCkgeyByZXR1cm4gdCBpbnN0YW5jZW9mIFV0ID8gdWEodCkgOiBLYSh0LCB0Ll9kdXIpIH0KCiAgICBmdW5jdGlvbiBPYShlLCByLCBpKSB7IHZhciBuLCBhLCBzID0gcShyWzFdKSwKICAgICAgICAgICAgbyA9IChzID8gMiA6IDEpICsgKGUgPCAyID8gMCA6IDEpLAogICAgICAgICAgICB1ID0gcltvXTsgaWYgKHMgJiYgKHUuZHVyYXRpb24gPSByWzFdKSwgdS5wYXJlbnQgPSBpLCBlKSB7IGZvciAobiA9IHUsIGEgPSBpOyBhICYmICEoImltbWVkaWF0ZVJlbmRlciIgaW4gbik7KSBuID0gYS52YXJzLmRlZmF1bHRzIHx8IHt9LCBhID0gdChhLnZhcnMuaW5oZXJpdCkgJiYgYS5wYXJlbnQ7CiAgICAgICAgICAgIHUuaW1tZWRpYXRlUmVuZGVyID0gdChuLmltbWVkaWF0ZVJlbmRlciksIGUgPCAyID8gdS5ydW5CYWNrd2FyZHMgPSAxIDogdS5zdGFydEF0ID0gcltvIC0gMV0gfSByZXR1cm4gbmV3ICR0KHJbMF0sIHUsIHJbMSArIG9dKSB9CgogICAgZnVuY3Rpb24gUGEodCwgZSkgeyByZXR1cm4gdCB8fCAwID09PSB0ID8gZSh0KSA6IGUgfQoKICAgIGZ1bmN0aW9uIFJhKHQsIGUpIHsgcmV0dXJuIG8odCkgJiYgKGUgPSBzdC5leGVjKHQpKSA/IGVbMV0gOiAiIiB9CgogICAgZnVuY3Rpb24gVWEodCwgZSkgeyByZXR1cm4gdCAmJiBzKHQpICYmICJsZW5ndGgiIGluIHQgJiYgKCFlICYmICF0Lmxlbmd0aCB8fCB0Lmxlbmd0aCAtIDEgaW4gdCAmJiBzKHRbMF0pKSAmJiAhdC5ub2RlVHlwZSAmJiB0ICE9PSBpIH0KCiAgICBmdW5jdGlvbiBZYSh0KSB7IHJldHVybiB0LnNvcnQoZnVuY3Rpb24oKSB7IHJldHVybiAuNSAtIE1hdGgucmFuZG9tKCkgfSkgfQoKICAgIGZ1bmN0aW9uIFphKHQpIHsgaWYgKHAodCkpIHJldHVybiB0OyB2YXIgYyA9IHModCkgPyB0IDogeyBlYWNoOiB0IH0sCiAgICAgICAgICAgIG0gPSBCdChjLmVhc2UpLAogICAgICAgICAgICBnID0gYy5mcm9tIHx8IDAsCiAgICAgICAgICAgIHYgPSBwYXJzZUZsb2F0KGMuYmFzZSkgfHwgMCwKICAgICAgICAgICAgeSA9IHt9LAogICAgICAgICAgICBlID0gMCA8IGcgJiYgZyA8IDEsCiAgICAgICAgICAgIFQgPSBpc05hTihnKSB8fCBlLAogICAgICAgICAgICBiID0gYy5heGlzLAogICAgICAgICAgICB3ID0gZywKICAgICAgICAgICAgeCA9IGc7IHJldHVybiBvKGcpID8gdyA9IHggPSB7IGNlbnRlcjogLjUsIGVkZ2VzOiAuNSwgZW5kOiAxIH1bZ10gfHwgMCA6ICFlICYmIFQgJiYgKHcgPSBnWzBdLCB4ID0gZ1sxXSksCiAgICAgICAgICAgIGZ1bmN0aW9uKHQsIGUsIHIpIHsgdmFyIGksIG4sIGEsIHMsIG8sIHUsIGgsIGwsIGYsIGQgPSAociB8fCBjKS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgXyA9IHlbZF07IGlmICghXykgeyBpZiAoIShmID0gImF1dG8iID09PSBjLmdyaWQgPyAwIDogKGMuZ3JpZCB8fCBbMSwgWV0pWzFdKSkgeyBmb3IgKGggPSAtWTsgaCA8IChoID0gcltmKytdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpICYmIGYgPCBkOyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGYtLSB9IGZvciAoXyA9IHlbZF0gPSBbXSwgaSA9IFQgPyBNYXRoLm1pbihmLCBkKSAqIHcgLSAuNSA6IGcgJSBmLCBuID0gZiA9PT0gWSA/IDAgOiBUID8gZCAqIHggLyBmIC0gLjUgOiBnIC8gZiB8IDAsIGwgPSBZLCB1ID0gaCA9IDA7IHUgPCBkOyB1KyspIGEgPSB1ICUgZiAtIGksIHMgPSBuIC0gKHUgLyBmIHwgMCksIF9bdV0gPSBvID0gYiA/IE1hdGguYWJzKCJ5IiA9PT0gYiA/IHMgOiBhKSA6IEcoYSAqIGEgKyBzICogcyksIGggPCBvICYmIChoID0gbyksIG8gPCBsICYmIChsID0gbyk7ICJyYW5kb20iID09PSBnICYmIFlhKF8pLCBfLm1heCA9IGggLSBsLCBfLm1pbiA9IGwsIF8udiA9IGQgPSAocGFyc2VGbG9hdChjLmFtb3VudCkgfHwgcGFyc2VGbG9hdChjLmVhY2gpICogKGQgPCBmID8gZCAtIDEgOiBiID8gInkiID09PSBiID8gZCAvIGYgOiBmIDogTWF0aC5tYXgoZiwgZCAvIGYpKSB8fCAwKSAqICgiZWRnZXMiID09PSBnID8gLTEgOiAxKSwgXy5iID0gZCA8IDAgPyB2IC0gZCA6IHYsIF8udSA9IFJhKGMuYW1vdW50IHx8IGMuZWFjaCkgfHwgMCwgbSA9IG0gJiYgZCA8IDAgPyBGdChtKSA6IG0gfSByZXR1cm4gZCA9IChfW3RdIC0gXy5taW4pIC8gXy5tYXggfHwgMCwgZGEoXy5iICsgKG0gPyBtKGQpIDogZCkgKiBfLnYpICsgXy51IH0gfQoKICAgIGZ1bmN0aW9uICRhKHIpIHsgdmFyIGkgPSBNYXRoLnBvdygxMCwgKChyICsgIiIpLnNwbGl0KCIuIilbMV0gfHwgIiIpLmxlbmd0aCk7IHJldHVybiBmdW5jdGlvbih0KSB7IHZhciBlID0gTWF0aC5yb3VuZChwYXJzZUZsb2F0KHQpIC8gcikgKiByICogaTsgcmV0dXJuIChlIC0gZSAlIDEpIC8gaSArIChxKHQpID8gMCA6IFJhKHQpKSB9IH0KCiAgICBmdW5jdGlvbiBfYSh1LCB0KSB7IHZhciBoLCBsLCBlID0gSih1KTsgcmV0dXJuICFlICYmIHModSkgJiYgKGggPSBlID0gdS5yYWRpdXMgfHwgWSwgdS52YWx1ZXMgPyAodSA9IHh0KHUudmFsdWVzKSwgKGwgPSAhcSh1WzBdKSkgJiYgKGggKj0gaCkpIDogdSA9ICRhKHUuaW5jcmVtZW50KSksIFBhKHQsIGUgPyBwKHUpID8gZnVuY3Rpb24odCkgeyByZXR1cm4gbCA9IHUodCksIE1hdGguYWJzKGwgLSB0KSA8PSBoID8gbCA6IHQgfSA6IGZ1bmN0aW9uKHQpIHsgZm9yICh2YXIgZSwgciwgaSA9IHBhcnNlRmxvYXQobCA/IHQueCA6IHQpLCBuID0gcGFyc2VGbG9hdChsID8gdC55IDogMCksIGEgPSBZLCBzID0gMCwgbyA9IHUubGVuZ3RoOyBvLS07KShlID0gbCA/IChlID0gdVtvXS54IC0gaSkgKiBlICsgKHIgPSB1W29dLnkgLSBuKSAqIHIgOiBNYXRoLmFicyh1W29dIC0gaSkpIDwgYSAmJiAoYSA9IGUsIHMgPSBvKTsgcmV0dXJuIHMgPSAhaCB8fCBhIDw9IGggPyB1W3NdIDogdCwgbCB8fCBzID09PSB0IHx8IHEodCkgPyBzIDogcyArIFJhKHQpIH0gOiAkYSh1KSkgfQoKICAgIGZ1bmN0aW9uIGFiKHQsIGUsIHIsIGkpIHsgcmV0dXJuIFBhKEoodCkgPyAhZSA6ICEwID09PSByID8gISEociA9IDApIDogIWksIGZ1bmN0aW9uKCkgeyByZXR1cm4gSih0KSA/IHRbfn4oTWF0aC5yYW5kb20oKSAqIHQubGVuZ3RoKV0gOiAociA9IHIgfHwgMWUtNSkgJiYgKGkgPSByIDwgMSA/IE1hdGgucG93KDEwLCAociArICIiKS5sZW5ndGggLSAyKSA6IDEpICYmIE1hdGguZmxvb3IoTWF0aC5yb3VuZCgodCAtIHIgLyAyICsgTWF0aC5yYW5kb20oKSAqIChlIC0gdCArIC45OSAqIHIpKSAvIHIpICogciAqIGkpIC8gaSB9KSB9CgogICAgZnVuY3Rpb24gZWIoZSwgciwgdCkgeyByZXR1cm4gUGEodCwgZnVuY3Rpb24odCkgeyByZXR1cm4gZVt+fnIodCldIH0pIH0KCiAgICBmdW5jdGlvbiBoYih0KSB7IGZvciAodmFyIGUsIHIsIGksIG4sIGEgPSAwLCBzID0gIiI7IH4oZSA9IHQuaW5kZXhPZigicmFuZG9tKCIsIGEpKTspIGkgPSB0LmluZGV4T2YoIikiLCBlKSwgbiA9ICJbIiA9PT0gdC5jaGFyQXQoZSArIDcpLCByID0gdC5zdWJzdHIoZSArIDcsIGkgLSBlIC0gNykubWF0Y2gobiA/IGF0IDogdHQpLCBzICs9IHQuc3Vic3RyKGEsIGUgLSBhKSArIGFiKG4gPyByIDogK3JbMF0sIG4gPyAwIDogK3JbMV0sICtyWzJdIHx8IDFlLTUpLCBhID0gaSArIDE7IHJldHVybiBzICsgdC5zdWJzdHIoYSwgdC5sZW5ndGggLSBhKSB9CgogICAgZnVuY3Rpb24ga2IodCwgZSwgcikgeyB2YXIgaSwgbiwgYSwgcyA9IHQubGFiZWxzLAogICAgICAgICAgICBvID0gWTsgZm9yIChpIGluIHMpKG4gPSBzW2ldIC0gZSkgPCAwID09ICEhciAmJiBuICYmIG8gPiAobiA9IE1hdGguYWJzKG4pKSAmJiAoYSA9IGksIG8gPSBuKTsgcmV0dXJuIGEgfQoKICAgIGZ1bmN0aW9uIG1iKHQpIHsgcmV0dXJuIHRhKHQpLCB0LnNjcm9sbFRyaWdnZXIgJiYgdC5zY3JvbGxUcmlnZ2VyLmtpbGwoITEpLCB0LnByb2dyZXNzKCkgPCAxICYmIE90KHQsICJvbkludGVycnVwdCIpLCB0IH0KCiAgICBmdW5jdGlvbiByYih0LCBlLCByKSB7IHJldHVybiAoNiAqICh0ICs9IHQgPCAwID8gMSA6IDEgPCB0ID8gLTEgOiAwKSA8IDEgPyBlICsgKHIgLSBlKSAqIHQgKiA2IDogdCA8IC41ID8gciA6IDMgKiB0IDwgMiA/IGUgKyAociAtIGUpICogKDIgLyAzIC0gdCkgKiA2IDogZSkgKiBQdCArIC41IHwgMCB9CgogICAgZnVuY3Rpb24gc2IodCwgZSwgcikgeyB2YXIgaSwgbiwgYSwgcywgbywgdSwgaCwgbCwgZiwgZCwgXyA9IHQgPyBxKHQpID8gW3QgPj4gMTYsIHQgPj4gOCAmIFB0LCB0ICYgUHRdIDogMCA6IE10LmJsYWNrOyBpZiAoIV8pIHsgaWYgKCIsIiA9PT0gdC5zdWJzdHIoLTEpICYmICh0ID0gdC5zdWJzdHIoMCwgdC5sZW5ndGggLSAxKSksIE10W3RdKSBfID0gTXRbdF07CiAgICAgICAgICAgIGVsc2UgaWYgKCIjIiA9PT0gdC5jaGFyQXQoMCkpIHsgaWYgKHQubGVuZ3RoIDwgNiAmJiAodCA9ICIjIiArIChpID0gdC5jaGFyQXQoMSkpICsgaSArIChuID0gdC5jaGFyQXQoMikpICsgbiArIChhID0gdC5jaGFyQXQoMykpICsgYSArICg1ID09PSB0Lmxlbmd0aCA/IHQuY2hhckF0KDQpICsgdC5jaGFyQXQoNCkgOiAiIikpLCA5ID09PSB0Lmxlbmd0aCkgcmV0dXJuIFsoXyA9IHBhcnNlSW50KHQuc3Vic3RyKDEsIDYpLCAxNikpID4+IDE2LCBfID4+IDggJiBQdCwgXyAmIFB0LCBwYXJzZUludCh0LnN1YnN0cig3KSwgMTYpIC8gMjU1XTsKICAgICAgICAgICAgICAgIF8gPSBbKHQgPSBwYXJzZUludCh0LnN1YnN0cigxKSwgMTYpKSA+PiAxNiwgdCA+PiA4ICYgUHQsIHQgJiBQdF0gfSBlbHNlIGlmICgiaHNsIiA9PT0gdC5zdWJzdHIoMCwgMykpCiAgICAgICAgICAgICAgICBpZiAoXyA9IGQgPSB0Lm1hdGNoKHR0KSwgZSkgeyBpZiAofnQuaW5kZXhPZigiPSIpKSByZXR1cm4gXyA9IHQubWF0Y2goZXQpLCByICYmIF8ubGVuZ3RoIDwgNCAmJiAoX1szXSA9IDEpLCBfIH0gZWxzZSBzID0gK19bMF0gJSAzNjAgLyAzNjAsIG8gPSBfWzFdIC8gMTAwLCBpID0gMiAqICh1ID0gX1syXSAvIDEwMCkgLSAobiA9IHUgPD0gLjUgPyB1ICogKG8gKyAxKSA6IHUgKyBvIC0gdSAqIG8pLCAzIDwgXy5sZW5ndGggJiYgKF9bM10gKj0gMSksIF9bMF0gPSByYihzICsgMSAvIDMsIGksIG4pLCBfWzFdID0gcmIocywgaSwgbiksIF9bMl0gPSByYihzIC0gMSAvIDMsIGksIG4pOwogICAgICAgICAgICBlbHNlIF8gPSB0Lm1hdGNoKHR0KSB8fCBNdC50cmFuc3BhcmVudDsKICAgICAgICAgICAgXyA9IF8ubWFwKE51bWJlcikgfSByZXR1cm4gZSAmJiAhZCAmJiAoaSA9IF9bMF0gLyBQdCwgbiA9IF9bMV0gLyBQdCwgYSA9IF9bMl0gLyBQdCwgdSA9ICgoaCA9IE1hdGgubWF4KGksIG4sIGEpKSArIChsID0gTWF0aC5taW4oaSwgbiwgYSkpKSAvIDIsIGggPT09IGwgPyBzID0gbyA9IDAgOiAoZiA9IGggLSBsLCBvID0gLjUgPCB1ID8gZiAvICgyIC0gaCAtIGwpIDogZiAvIChoICsgbCksIHMgPSBoID09PSBpID8gKG4gLSBhKSAvIGYgKyAobiA8IGEgPyA2IDogMCkgOiBoID09PSBuID8gKGEgLSBpKSAvIGYgKyAyIDogKGkgLSBuKSAvIGYgKyA0LCBzICo9IDYwKSwgX1swXSA9IH5+KHMgKyAuNSksIF9bMV0gPSB+figxMDAgKiBvICsgLjUpLCBfWzJdID0gfn4oMTAwICogdSArIC41KSksIHIgJiYgXy5sZW5ndGggPCA0ICYmIChfWzNdID0gMSksIF8gfQoKICAgIGZ1bmN0aW9uIHRiKHQpIHsgdmFyIHIgPSBbXSwKICAgICAgICAgICAgaSA9IFtdLAogICAgICAgICAgICBuID0gLTE7IHJldHVybiB0LnNwbGl0KEN0KS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdmFyIGUgPSB0Lm1hdGNoKHJ0KSB8fCBbXTsKICAgICAgICAgICAgci5wdXNoLmFwcGx5KHIsIGUpLCBpLnB1c2gobiArPSBlLmxlbmd0aCArIDEpIH0pLCByLmMgPSBpLCByIH0KCiAgICBmdW5jdGlvbiB1Yih0LCBlLCByKSB7IHZhciBpLCBuLCBhLCBzLCBvID0gIiIsCiAgICAgICAgICAgIHUgPSAodCArIG8pLm1hdGNoKEN0KSwKICAgICAgICAgICAgaCA9IGUgPyAiaHNsYSgiIDogInJnYmEoIiwKICAgICAgICAgICAgbCA9IDA7IGlmICghdSkgcmV0dXJuIHQ7IGlmICh1ID0gdS5tYXAoZnVuY3Rpb24odCkgeyByZXR1cm4gKHQgPSBzYih0LCBlLCAxKSkgJiYgaCArIChlID8gdFswXSArICIsIiArIHRbMV0gKyAiJSwiICsgdFsyXSArICIlLCIgKyB0WzNdIDogdC5qb2luKCIsIikpICsgIikiIH0pLCByICYmIChhID0gdGIodCksIChpID0gci5jKS5qb2luKG8pICE9PSBhLmMuam9pbihvKSkpCiAgICAgICAgICAgIGZvciAocyA9IChuID0gdC5yZXBsYWNlKEN0LCAiMSIpLnNwbGl0KHJ0KSkubGVuZ3RoIC0gMTsgbCA8IHM7IGwrKykgbyArPSBuW2xdICsgKH5pLmluZGV4T2YobCkgPyB1LnNoaWZ0KCkgfHwgaCArICIwLDAsMCwwKSIgOiAoYS5sZW5ndGggPyBhIDogdS5sZW5ndGggPyB1IDogcikuc2hpZnQoKSk7IGlmICghbikKICAgICAgICAgICAgZm9yIChzID0gKG4gPSB0LnNwbGl0KEN0KSkubGVuZ3RoIC0gMTsgbCA8IHM7IGwrKykgbyArPSBuW2xdICsgdVtsXTsgcmV0dXJuIG8gKyBuW3NdIH0KCiAgICBmdW5jdGlvbiB4Yih0KSB7IHZhciBlLCByID0gdC5qb2luKCIgIik7IGlmIChDdC5sYXN0SW5kZXggPSAwLCBDdC50ZXN0KHIpKSByZXR1cm4gZSA9IEF0LnRlc3QociksIHRbMV0gPSB1Yih0WzFdLCBlKSwgdFswXSA9IHViKHRbMF0sIGUsIHRiKHRbMV0pKSwgITAgfQoKICAgIGZ1bmN0aW9uIEdiKHQpIHsgdmFyIGUgPSAodCArICIiKS5zcGxpdCgiKCIpLAogICAgICAgICAgICByID0genRbZVswXV07IHJldHVybiByICYmIDEgPCBlLmxlbmd0aCAmJiByLmNvbmZpZyA/IHIuY29uZmlnLmFwcGx5KG51bGwsIH50LmluZGV4T2YoInsiKSA/IFtmdW5jdGlvbiBfcGFyc2VPYmplY3RJblN0cmluZyh0KSB7IGZvciAodmFyIGUsIHIsIGksIG4gPSB7fSwgYSA9IHQuc3Vic3RyKDEsIHQubGVuZ3RoIC0gMykuc3BsaXQoIjoiKSwgcyA9IGFbMF0sIG8gPSAxLCB1ID0gYS5sZW5ndGg7IG8gPCB1OyBvKyspIHIgPSBhW29dLCBlID0gbyAhPT0gdSAtIDEgPyByLmxhc3RJbmRleE9mKCIsIikgOiByLmxlbmd0aCwgaSA9IHIuc3Vic3RyKDAsIGUpLCBuW3NdID0gaXNOYU4oaSkgPyBpLnJlcGxhY2UoRXQsICIiKS50cmltKCkgOiAraSwgcyA9IHIuc3Vic3RyKGUgKyAxKS50cmltKCk7IHJldHVybiBuIH0oZVsxXSldIDogZnVuY3Rpb24gX3ZhbHVlSW5QYXJlbnRoZXNlcyh0KSB7IHZhciBlID0gdC5pbmRleE9mKCIoIikgKyAxLAogICAgICAgICAgICAgICAgciA9IHQuaW5kZXhPZigiKSIpLAogICAgICAgICAgICAgICAgaSA9IHQuaW5kZXhPZigiKCIsIGUpOyByZXR1cm4gdC5zdWJzdHJpbmcoZSwgfmkgJiYgaSA8IHIgPyB0LmluZGV4T2YoIikiLCByICsgMSkgOiByKSB9KHQpLnNwbGl0KCIsIikubWFwKGlhKSkgOiB6dC5fQ0UgJiYgUnQudGVzdCh0KSA/IHp0Ll9DRSgiIiwgdCkgOiByIH0KCiAgICBmdW5jdGlvbiBJYih0LCBlKSB7IGZvciAodmFyIHIsIGkgPSB0Ll9maXJzdDsgaTspIGkgaW5zdGFuY2VvZiBVdCA/IEliKGksIGUpIDogIWkudmFycy55b3lvRWFzZSB8fCBpLl95b3lvICYmIGkuX3JlcGVhdCB8fCBpLl95b3lvID09PSBlIHx8IChpLnRpbWVsaW5lID8gSWIoaS50aW1lbGluZSwgZSkgOiAociA9IGkuX2Vhc2UsIGkuX2Vhc2UgPSBpLl95RWFzZSwgaS5feUVhc2UgPSByLCBpLl95b3lvID0gZSkpLCBpID0gaS5fbmV4dCB9CgogICAgZnVuY3Rpb24gS2IodCwgZSwgciwgaSkgeyB2b2lkIDAgPT09IHIgJiYgKHIgPSBmdW5jdGlvbiBlYXNlT3V0KHQpIHsgcmV0dXJuIDEgLSBlKDEgLSB0KSB9KSwgdm9pZCAwID09PSBpICYmIChpID0gZnVuY3Rpb24gZWFzZUluT3V0KHQpIHsgcmV0dXJuIHQgPCAuNSA/IGUoMiAqIHQpIC8gMiA6IDEgLSBlKDIgKiAoMSAtIHQpKSAvIDIgfSk7IHZhciBuLCBhID0geyBlYXNlSW46IGUsIGVhc2VPdXQ6IHIsIGVhc2VJbk91dDogaSB9OyByZXR1cm4gYmEodCwgZnVuY3Rpb24odCkgeyBmb3IgKHZhciBlIGluIHp0W3RdID0gb3RbdF0gPSBhLCB6dFtuID0gdC50b0xvd2VyQ2FzZSgpXSA9IHIsIGEpIHp0W24gKyAoImVhc2VJbiIgPT09IGUgPyAiLmluIiA6ICJlYXNlT3V0IiA9PT0gZSA/ICIub3V0IiA6ICIuaW5PdXQiKV0gPSB6dFt0ICsgIi4iICsgZV0gPSBhW2VdIH0pLCBhIH0KCiAgICBmdW5jdGlvbiBMYihlKSB7IHJldHVybiBmdW5jdGlvbih0KSB7IHJldHVybiB0IDwgLjUgPyAoMSAtIGUoMSAtIDIgKiB0KSkgLyAyIDogLjUgKyBlKDIgKiAodCAtIC41KSkgLyAyIH0gfQoKICAgIGZ1bmN0aW9uIE1iKHIsIHQsIGUpIHsKICAgICAgICBmdW5jdGlvbiBlbSh0KSB7IHJldHVybiAxID09PSB0ID8gMSA6IGkgKiBNYXRoLnBvdygyLCAtMTAgKiB0KSAqIFooKHQgLSBhKSAqIG4pICsgMSB9IHZhciBpID0gMSA8PSB0ID8gdCA6IDEsCiAgICAgICAgICAgIG4gPSAoZSB8fCAociA/IC4zIDogLjQ1KSkgLyAodCA8IDEgPyB0IDogMSksCiAgICAgICAgICAgIGEgPSBuIC8gWCAqIChNYXRoLmFzaW4oMSAvIGkpIHx8IDApLAogICAgICAgICAgICBzID0gIm91dCIgPT09IHIgPyBlbSA6ICJpbiIgPT09IHIgPyBmdW5jdGlvbih0KSB7IHJldHVybiAxIC0gZW0oMSAtIHQpIH0gOiBMYihlbSk7IHJldHVybiBuID0gWCAvIG4sIHMuY29uZmlnID0gZnVuY3Rpb24odCwgZSkgeyByZXR1cm4gTWIociwgdCwgZSkgfSwgcyB9CgogICAgZnVuY3Rpb24gTmIoZSwgcikgewogICAgICAgIGZ1bmN0aW9uIG1tKHQpIHsgcmV0dXJuIHQgPyAtLXQgKiB0ICogKChyICsgMSkgKiB0ICsgcikgKyAxIDogMCB9CiAgICAgICAgdm9pZCAwID09PSByICYmIChyID0gMS43MDE1OCk7IHZhciB0ID0gIm91dCIgPT09IGUgPyBtbSA6ICJpbiIgPT09IGUgPyBmdW5jdGlvbih0KSB7IHJldHVybiAxIC0gbW0oMSAtIHQpIH0gOiBMYihtbSk7IHJldHVybiB0LmNvbmZpZyA9IGZ1bmN0aW9uKHQpIHsgcmV0dXJuIE5iKGUsIHQpIH0sIHQgfSB2YXIgQiwgSSwgaSwgbiwgYSwgaCwgbCwgZiwgZCwgYywgbSwgZywgeSwgVCwgYiwgdywgeCwgaywgQywgQSwgRCwgUywgeiwgUiwgRSwgRiwgVSA9IHsgYXV0b1NsZWVwOiAxMjAsIGZvcmNlM0Q6ICJhdXRvIiwgbnVsbFRhcmdldFdhcm46IDEsIHVuaXRzOiB7IGxpbmVIZWlnaHQ6ICIiIH0gfSwKICAgICAgICBMID0geyBkdXJhdGlvbjogLjUsIG92ZXJ3cml0ZTogITEsIGRlbGF5OiAwIH0sCiAgICAgICAgWSA9IDFlOCwKICAgICAgICBWID0gMSAvIFksCiAgICAgICAgWCA9IDIgKiBNYXRoLlBJLAogICAgICAgIGogPSBYIC8gNCwKICAgICAgICBLID0gMCwKICAgICAgICBHID0gTWF0aC5zcXJ0LAogICAgICAgIFcgPSBNYXRoLmNvcywKICAgICAgICBaID0gTWF0aC5zaW4sCiAgICAgICAgSCA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIEFycmF5QnVmZmVyICYmIEFycmF5QnVmZmVyLmlzVmlldyB8fCBmdW5jdGlvbigpIHt9LAogICAgICAgIEogPSBBcnJheS5pc0FycmF5LAogICAgICAgIHR0ID0gLyg/Oi0/XC4/XGR8XC4pKy9naSwKICAgICAgICBldCA9IC9bLSs9Ll0qXGQrWy5lXC0rXSpcZCpbZVwtK10qXGQqL2csCiAgICAgICAgcnQgPSAvWy0rPS5dKlxkK1suZS1dKlxkKlthLXolXSovZywKICAgICAgICBpdCA9IC9bLSs9Ll0qXGQrXC4/XGQqKD86ZS18ZVwrKT9cZCovZ2ksCiAgICAgICAgbnQgPSAvWystXT0tP1suXGRdKy8sCiAgICAgICAgYXQgPSAvW14sJyJcW1xdXHNdKy9naSwKICAgICAgICBzdCA9IC9eWytcLT1lXHNcZF0qXGQrWy5cZF0qKFthLXpdKnwlKVxzKiQvaSwKICAgICAgICBvdCA9IHt9LAogICAgICAgIHV0ID0ge30sCiAgICAgICAgaHQgPSBbXSwKICAgICAgICBsdCA9IHt9LAogICAgICAgIGZ0ID0ge30sCiAgICAgICAgZHQgPSB7fSwKICAgICAgICBfdCA9IDMwLAogICAgICAgIHB0ID0gW10sCiAgICAgICAgY3QgPSAiIiwKICAgICAgICBtdCA9IGZ1bmN0aW9uIF9tZXJnZSh0LCBlKSB7IGZvciAodmFyIHIgaW4gZSkgdFtyXSA9IGVbcl07IHJldHVybiB0IH0sCiAgICAgICAgZ3QgPSBmdW5jdGlvbiBfYW5pbWF0aW9uQ3ljbGUodCwgZSkgeyB2YXIgciA9IE1hdGguZmxvb3IodCAvPSBlKTsgcmV0dXJuIHQgJiYgciA9PT0gdCA/IHIgLSAxIDogciB9LAogICAgICAgIHZ0ID0gZnVuY3Rpb24gX2lzRnJvbU9yRnJvbVN0YXJ0KHQpIHsgdmFyIGUgPSB0LmRhdGE7IHJldHVybiAiaXNGcm9tU3RhcnQiID09PSBlIHx8ICJpc1N0YXJ0IiA9PT0gZSB9LAogICAgICAgIHl0ID0geyBfc3RhcnQ6IDAsIGVuZFRpbWU6IFEsIHRvdGFsRHVyYXRpb246IFEgfSwKICAgICAgICBUdCA9IGZ1bmN0aW9uIF9wYXJzZVBvc2l0aW9uKHQsIGUsIHIpIHsgdmFyIGksIG4sIGEsIHMgPSB0LmxhYmVscywKICAgICAgICAgICAgICAgIHUgPSB0Ll9yZWNlbnQgfHwgeXQsCiAgICAgICAgICAgICAgICBoID0gdC5kdXJhdGlvbigpID49IFkgPyB1LmVuZFRpbWUoITEpIDogdC5fZHVyOyByZXR1cm4gbyhlKSAmJiAoaXNOYU4oZSkgfHwgZSBpbiBzKSA/IChuID0gZS5jaGFyQXQoMCksIGEgPSAiJSIgPT09IGUuc3Vic3RyKC0xKSwgaSA9IGUuaW5kZXhPZigiPSIpLCAiPCIgPT09IG4gfHwgIj4iID09PSBuID8gKDAgPD0gaSAmJiAoZSA9IGUucmVwbGFjZSgvPS8sICIiKSksICgiPCIgPT09IG4gPyB1Ll9zdGFydCA6IHUuZW5kVGltZSgwIDw9IHUuX3JlcGVhdCkpICsgKHBhcnNlRmxvYXQoZS5zdWJzdHIoMSkpIHx8IDApICogKGEgPyAoaSA8IDAgPyB1IDogcikudG90YWxEdXJhdGlvbigpIC8gMTAwIDogMSkpIDogaSA8IDAgPyAoZSBpbiBzIHx8IChzW2VdID0gaCksIHNbZV0pIDogKG4gPSBwYXJzZUZsb2F0KGUuY2hhckF0KGkgLSAxKSArIGUuc3Vic3RyKGkgKyAxKSksIGEgJiYgciAmJiAobiA9IG4gLyAxMDAgKiAoSihyKSA/IHJbMF0gOiByKS50b3RhbER1cmF0aW9uKCkpLCAxIDwgaSA/IF9wYXJzZVBvc2l0aW9uKHQsIGUuc3Vic3RyKDAsIGkgLSAxKSwgcikgKyBuIDogaCArIG4pKSA6IG51bGwgPT0gZSA/IGggOiArZSB9LAogICAgICAgIGJ0ID0gZnVuY3Rpb24gX2NsYW1wKHQsIGUsIHIpIHsgcmV0dXJuIHIgPCB0ID8gdCA6IGUgPCByID8gZSA6IHIgfSwKICAgICAgICB3dCA9IFtdLnNsaWNlLAogICAgICAgIHh0ID0gZnVuY3Rpb24gdG9BcnJheSh0LCBlLCByKSB7IHJldHVybiAhbyh0KSB8fCByIHx8ICFuICYmIFN0KCkgPyBKKHQpID8gZnVuY3Rpb24gX2ZsYXR0ZW4odCwgZSwgcikgeyByZXR1cm4gdm9pZCAwID09PSByICYmIChyID0gW10pLCB0LmZvckVhY2goZnVuY3Rpb24odCkgeyByZXR1cm4gbyh0KSAmJiAhZSB8fCBVYSh0LCAxKSA/IHIucHVzaC5hcHBseShyLCB4dCh0KSkgOiByLnB1c2godCkgfSkgfHwgciB9KHQsIHIpIDogVWEodCkgPyB3dC5jYWxsKHQsIDApIDogdCA/IFt0XSA6IFtdIDogd3QuY2FsbCgoZSB8fCBhKS5xdWVyeVNlbGVjdG9yQWxsKHQpLCAwKSB9LAogICAgICAgIGt0ID0gZnVuY3Rpb24gbWFwUmFuZ2UoZSwgdCwgciwgaSwgbikgeyB2YXIgYSA9IHQgLSBlLAogICAgICAgICAgICAgICAgcyA9IGkgLSByOyByZXR1cm4gUGEobiwgZnVuY3Rpb24odCkgeyByZXR1cm4gciArICgodCAtIGUpIC8gYSAqIHMgfHwgMCkgfSkgfSwKICAgICAgICBPdCA9IGZ1bmN0aW9uIF9jYWxsYmFjayh0LCBlLCByKSB7IHZhciBpLCBuLCBhID0gdC52YXJzLAogICAgICAgICAgICAgICAgcyA9IGFbZV07IGlmIChzKSByZXR1cm4gaSA9IGFbZSArICJQYXJhbXMiXSwgbiA9IGEuY2FsbGJhY2tTY29wZSB8fCB0LCByICYmIGh0Lmxlbmd0aCAmJiBnYSgpLCBpID8gcy5hcHBseShuLCBpKSA6IHMuY2FsbChuKSB9LAogICAgICAgIFB0ID0gMjU1LAogICAgICAgIE10ID0geyBhcXVhOiBbMCwgUHQsIFB0XSwgbGltZTogWzAsIFB0LCAwXSwgc2lsdmVyOiBbMTkyLCAxOTIsIDE5Ml0sIGJsYWNrOiBbMCwgMCwgMF0sIG1hcm9vbjogWzEyOCwgMCwgMF0sIHRlYWw6IFswLCAxMjgsIDEyOF0sIGJsdWU6IFswLCAwLCBQdF0sIG5hdnk6IFswLCAwLCAxMjhdLCB3aGl0ZTogW1B0LCBQdCwgUHRdLCBvbGl2ZTogWzEyOCwgMTI4LCAwXSwgeWVsbG93OiBbUHQsIFB0LCAwXSwgb3JhbmdlOiBbUHQsIDE2NSwgMF0sIGdyYXk6IFsxMjgsIDEyOCwgMTI4XSwgcHVycGxlOiBbMTI4LCAwLCAxMjhdLCBncmVlbjogWzAsIDEyOCwgMF0sIHJlZDogW1B0LCAwLCAwXSwgcGluazogW1B0LCAxOTIsIDIwM10sIGN5YW46IFswLCBQdCwgUHRdLCB0cmFuc3BhcmVudDogW1B0LCBQdCwgUHQsIDBdIH0sCiAgICAgICAgQ3QgPSBmdW5jdGlvbigpIHsgdmFyIHQsIGUgPSAiKD86XFxiKD86KD86cmdifHJnYmF8aHNsfGhzbGEpXFwoLis/XFwpKXxcXEIjKD86WzAtOWEtZl17Myw0fSl7MSwyfVxcYiI7IGZvciAodCBpbiBNdCkgZSArPSAifCIgKyB0ICsgIlxcYiI7IHJldHVybiBuZXcgUmVnRXhwKGUgKyAiKSIsICJnaSIpIH0oKSwKICAgICAgICBBdCA9IC9oc2xbYV0/XCgvLAogICAgICAgIER0ID0gKHggPSBEYXRlLm5vdywgayA9IDUwMCwgQyA9IDMzLCBBID0geCgpLCBEID0gQSwgeiA9IFMgPSAxZTMgLyAyNDAsIFQgPSB7IHRpbWU6IDAsIGZyYW1lOiAwLCB0aWNrOiBmdW5jdGlvbiB0aWNrKCkgeyBWayghMCkgfSwgZGVsdGFSYXRpbzogZnVuY3Rpb24gZGVsdGFSYXRpbyh0KSB7IHJldHVybiBiIC8gKDFlMyAvICh0IHx8IDYwKSkgfSwgd2FrZTogZnVuY3Rpb24gd2FrZSgpIHsgbCAmJiAoIW4gJiYgdSgpICYmIChpID0gbiA9IHdpbmRvdywgYSA9IGkuZG9jdW1lbnQgfHwge30sIG90LmdzYXAgPSBoZSwgKGkuZ3NhcFZlcnNpb25zIHx8IChpLmdzYXBWZXJzaW9ucyA9IFtdKSkucHVzaChoZS52ZXJzaW9uKSwgTShoIHx8IGkuR3JlZW5Tb2NrR2xvYmFscyB8fCAhaS5nc2FwICYmIGkgfHwge30pLCB5ID0gaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpLCBtICYmIFQuc2xlZXAoKSwgZyA9IHkgfHwgZnVuY3Rpb24odCkgeyByZXR1cm4gc2V0VGltZW91dCh0LCB6IC0gMWUzICogVC50aW1lICsgMSB8IDApIH0sIGMgPSAxLCBWaygyKSkgfSwgc2xlZXA6IGZ1bmN0aW9uIHNsZWVwKCkgewogICAgICAgICAgICAgICAgKHkgPyBpLmNhbmNlbEFuaW1hdGlvbkZyYW1lIDogY2xlYXJUaW1lb3V0KShtKSwgYyA9IDAsIGcgPSBRIH0sIGxhZ1Ntb290aGluZzogZnVuY3Rpb24gbGFnU21vb3RoaW5nKHQsIGUpIHsgayA9IHQgfHwgMWU4LCBDID0gTWF0aC5taW4oZSwgaywgMCkgfSwgZnBzOiBmdW5jdGlvbiBmcHModCkgeyBTID0gMWUzIC8gKHQgfHwgMjQwKSwgeiA9IDFlMyAqIFQudGltZSArIFMgfSwgYWRkOiBmdW5jdGlvbiBhZGQobiwgdCwgZSkgeyB2YXIgYSA9IHQgPyBmdW5jdGlvbih0LCBlLCByLCBpKSB7IG4odCwgZSwgciwgaSksIFQucmVtb3ZlKGEpIH0gOiBuOyByZXR1cm4gVC5yZW1vdmUobiksIFJbZSA/ICJ1bnNoaWZ0IiA6ICJwdXNoIl0oYSksIFN0KCksIGEgfSwgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUodCwgZSkge34oZSA9IFIuaW5kZXhPZih0KSkgJiYgUi5zcGxpY2UoZSwgMSkgJiYgZSA8PSB3ICYmIHctLSB9LCBfbGlzdGVuZXJzOiBSID0gW10gfSksCiAgICAgICAgU3QgPSBmdW5jdGlvbiBfd2FrZSgpIHsgcmV0dXJuICFjICYmIER0Lndha2UoKSB9LAogICAgICAgIHp0ID0ge30sCiAgICAgICAgUnQgPSAvXltcZC5cLU1dW1xkLlwtLFxzXS8sCiAgICAgICAgRXQgPSAvWyInXS9nLAogICAgICAgIEZ0ID0gZnVuY3Rpb24gX2ludmVydEVhc2UoZSkgeyByZXR1cm4gZnVuY3Rpb24odCkgeyByZXR1cm4gMSAtIGUoMSAtIHQpIH0gfSwKICAgICAgICBCdCA9IGZ1bmN0aW9uIF9wYXJzZUVhc2UodCwgZSkgeyByZXR1cm4gdCAmJiAocCh0KSA/IHQgOiB6dFt0XSB8fCBHYih0KSkgfHwgZSB9OwoKICAgIGZ1bmN0aW9uIFZrKHQpIHsgdmFyIGUsIHIsIGksIG4sIGEgPSB4KCkgLSBELAogICAgICAgICAgICBzID0gITAgPT09IHQ7IGlmIChrIDwgYSAmJiAoQSArPSBhIC0gQyksICgwIDwgKGUgPSAoaSA9IChEICs9IGEpIC0gQSkgLSB6KSB8fCBzKSAmJiAobiA9ICsrVC5mcmFtZSwgYiA9IGkgLSAxZTMgKiBULnRpbWUsIFQudGltZSA9IGkgLz0gMWUzLCB6ICs9IGUgKyAoUyA8PSBlID8gNCA6IFMgLSBlKSwgciA9IDEpLCBzIHx8IChtID0gZyhWaykpLCByKQogICAgICAgICAgICBmb3IgKHcgPSAwOyB3IDwgUi5sZW5ndGg7IHcrKykgUlt3XShpLCBiLCBuLCB0KSB9CgogICAgZnVuY3Rpb24gRG0odCkgeyByZXR1cm4gdCA8IEYgPyBFICogdCAqIHQgOiB0IDwgLjcyNzI3MjcyNzI3MjcyNzMgPyBFICogTWF0aC5wb3codCAtIDEuNSAvIDIuNzUsIDIpICsgLjc1IDogdCA8IC45MDkwOTA5MDkwOTA5MDkyID8gRSAqICh0IC09IDIuMjUgLyAyLjc1KSAqIHQgKyAuOTM3NSA6IEUgKiBNYXRoLnBvdyh0IC0gMi42MjUgLyAyLjc1LCAyKSArIC45ODQzNzUgfQogICAgYmEoIkxpbmVhcixRdWFkLEN1YmljLFF1YXJ0LFF1aW50LFN0cm9uZyIsIGZ1bmN0aW9uKHQsIGUpIHsgdmFyIHIgPSBlIDwgNSA/IGUgKyAxIDogZTsKICAgICAgICBLYih0ICsgIixQb3dlciIgKyAociAtIDEpLCBlID8gZnVuY3Rpb24odCkgeyByZXR1cm4gTWF0aC5wb3codCwgcikgfSA6IGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQgfSwgZnVuY3Rpb24odCkgeyByZXR1cm4gMSAtIE1hdGgucG93KDEgLSB0LCByKSB9LCBmdW5jdGlvbih0KSB7IHJldHVybiB0IDwgLjUgPyBNYXRoLnBvdygyICogdCwgcikgLyAyIDogMSAtIE1hdGgucG93KDIgKiAoMSAtIHQpLCByKSAvIDIgfSkgfSksIHp0LkxpbmVhci5lYXNlTm9uZSA9IHp0Lm5vbmUgPSB6dC5MaW5lYXIuZWFzZUluLCBLYigiRWxhc3RpYyIsIE1iKCJpbiIpLCBNYigib3V0IiksIE1iKCkpLCBFID0gNy41NjI1LCBGID0gMSAvIDIuNzUsIEtiKCJCb3VuY2UiLCBmdW5jdGlvbih0KSB7IHJldHVybiAxIC0gRG0oMSAtIHQpIH0sIERtKSwgS2IoIkV4cG8iLCBmdW5jdGlvbih0KSB7IHJldHVybiB0ID8gTWF0aC5wb3coMiwgMTAgKiAodCAtIDEpKSA6IDAgfSksIEtiKCJDaXJjIiwgZnVuY3Rpb24odCkgeyByZXR1cm4gLShHKDEgLSB0ICogdCkgLSAxKSB9KSwgS2IoIlNpbmUiLCBmdW5jdGlvbih0KSB7IHJldHVybiAxID09PSB0ID8gMSA6IDEgLSBXKHQgKiBqKSB9KSwgS2IoIkJhY2siLCBOYigiaW4iKSwgTmIoIm91dCIpLCBOYigpKSwgenQuU3RlcHBlZEVhc2UgPSB6dC5zdGVwcyA9IG90LlN0ZXBwZWRFYXNlID0geyBjb25maWc6IGZ1bmN0aW9uIGNvbmZpZyh0LCBlKSB7IHZvaWQgMCA9PT0gdCAmJiAodCA9IDEpOyB2YXIgciA9IDEgLyB0LAogICAgICAgICAgICAgICAgaSA9IHQgKyAoZSA/IDAgOiAxKSwKICAgICAgICAgICAgICAgIG4gPSBlID8gMSA6IDA7IHJldHVybiBmdW5jdGlvbih0KSB7IHJldHVybiAoKGkgKiBidCgwLCAuOTk5OTk5OTksIHQpIHwgMCkgKyBuKSAqIHIgfSB9IH0sIEwuZWFzZSA9IHp0WyJxdWFkLm91dCJdLCBiYSgib25Db21wbGV0ZSxvblVwZGF0ZSxvblN0YXJ0LG9uUmVwZWF0LG9uUmV2ZXJzZUNvbXBsZXRlLG9uSW50ZXJydXB0IiwgZnVuY3Rpb24odCkgeyByZXR1cm4gY3QgKz0gdCArICIsIiArIHQgKyAiUGFyYW1zLCIgfSk7IHZhciBJdCwgTHQgPSBmdW5jdGlvbiBHU0NhY2hlKHQsIGUpIHsgdGhpcy5pZCA9IEsrKywgKHQuX2dzYXAgPSB0aGlzKS50YXJnZXQgPSB0LCB0aGlzLmhhcm5lc3MgPSBlLCB0aGlzLmdldCA9IGUgPyBlLmdldCA6IGFhLCB0aGlzLnNldCA9IGUgPyBlLmdldFNldHRlciA6IEh0IH0sCiAgICAgICAgTnQgPSAoKEl0ID0gQW5pbWF0aW9uLnByb3RvdHlwZSkuZGVsYXkgPSBmdW5jdGlvbiBkZWxheSh0KSB7IHJldHVybiB0IHx8IDAgPT09IHQgPyAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuc21vb3RoQ2hpbGRUaW1pbmcgJiYgdGhpcy5zdGFydFRpbWUodGhpcy5fc3RhcnQgKyB0IC0gdGhpcy5fZGVsYXkpLCB0aGlzLl9kZWxheSA9IHQsIHRoaXMpIDogdGhpcy5fZGVsYXkgfSwgSXQuZHVyYXRpb24gPSBmdW5jdGlvbiBkdXJhdGlvbih0KSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy50b3RhbER1cmF0aW9uKDAgPCB0aGlzLl9yZXBlYXQgPyB0ICsgKHQgKyB0aGlzLl9yRGVsYXkpICogdGhpcy5fcmVwZWF0IDogdCkgOiB0aGlzLnRvdGFsRHVyYXRpb24oKSAmJiB0aGlzLl9kdXIgfSwgSXQudG90YWxEdXJhdGlvbiA9IGZ1bmN0aW9uIHRvdGFsRHVyYXRpb24odCkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9kaXJ0eSA9IDAsIEthKHRoaXMsIHRoaXMuX3JlcGVhdCA8IDAgPyB0IDogKHQgLSB0aGlzLl9yZXBlYXQgKiB0aGlzLl9yRGVsYXkpIC8gKHRoaXMuX3JlcGVhdCArIDEpKSkgOiB0aGlzLl90RHVyIH0sIEl0LnRvdGFsVGltZSA9IGZ1bmN0aW9uIHRvdGFsVGltZSh0LCBlKSB7IGlmIChTdCgpLCAhYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuX3RUaW1lOyB2YXIgciA9IHRoaXMuX2RwOyBpZiAociAmJiByLnNtb290aENoaWxkVGltaW5nICYmIHRoaXMuX3RzKSB7IGZvciAoQmEodGhpcywgdCksICFyLl9kcCB8fCByLnBhcmVudCB8fCBDYShyLCB0aGlzKTsgciAmJiByLnBhcmVudDspIHIucGFyZW50Ll90aW1lICE9PSByLl9zdGFydCArICgwIDw9IHIuX3RzID8gci5fdFRpbWUgLyByLl90cyA6IChyLnRvdGFsRHVyYXRpb24oKSAtIHIuX3RUaW1lKSAvIC1yLl90cykgJiYgci50b3RhbFRpbWUoci5fdFRpbWUsICEwKSwgciA9IHIucGFyZW50OyF0aGlzLnBhcmVudCAmJiB0aGlzLl9kcC5hdXRvUmVtb3ZlQ2hpbGRyZW4gJiYgKDAgPCB0aGlzLl90cyAmJiB0IDwgdGhpcy5fdER1ciB8fCB0aGlzLl90cyA8IDAgJiYgMCA8IHQgfHwgIXRoaXMuX3REdXIgJiYgIXQpICYmIERhKHRoaXMuX2RwLCB0aGlzLCB0aGlzLl9zdGFydCAtIHRoaXMuX2RlbGF5KSB9IHJldHVybiAodGhpcy5fdFRpbWUgIT09IHQgfHwgIXRoaXMuX2R1ciAmJiAhZSB8fCB0aGlzLl9pbml0dGVkICYmIE1hdGguYWJzKHRoaXMuX3pUaW1lKSA9PT0gViB8fCAhdCAmJiAhdGhpcy5faW5pdHRlZCAmJiAodGhpcy5hZGQgfHwgdGhpcy5fcHRMb29rdXApKSAmJiAodGhpcy5fdHMgfHwgKHRoaXMuX3BUaW1lID0gdCksIGhhKHRoaXMsIHQsIGUpKSwgdGhpcyB9LCBJdC50aW1lID0gZnVuY3Rpb24gdGltZSh0LCBlKSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy50b3RhbFRpbWUoTWF0aC5taW4odGhpcy50b3RhbER1cmF0aW9uKCksIHQgKyB4YSh0aGlzKSkgJSAodGhpcy5fZHVyICsgdGhpcy5fckRlbGF5KSB8fCAodCA/IHRoaXMuX2R1ciA6IDApLCBlKSA6IHRoaXMuX3RpbWUgfSwgSXQudG90YWxQcm9ncmVzcyA9IGZ1bmN0aW9uIHRvdGFsUHJvZ3Jlc3ModCwgZSkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxUaW1lKHRoaXMudG90YWxEdXJhdGlvbigpICogdCwgZSkgOiB0aGlzLnRvdGFsRHVyYXRpb24oKSA/IE1hdGgubWluKDEsIHRoaXMuX3RUaW1lIC8gdGhpcy5fdER1cikgOiB0aGlzLnJhdGlvIH0sIEl0LnByb2dyZXNzID0gZnVuY3Rpb24gcHJvZ3Jlc3ModCwgZSkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRoaXMudG90YWxUaW1lKHRoaXMuZHVyYXRpb24oKSAqICghdGhpcy5feW95byB8fCAxICYgdGhpcy5pdGVyYXRpb24oKSA/IHQgOiAxIC0gdCkgKyB4YSh0aGlzKSwgZSkgOiB0aGlzLmR1cmF0aW9uKCkgPyBNYXRoLm1pbigxLCB0aGlzLl90aW1lIC8gdGhpcy5fZHVyKSA6IHRoaXMucmF0aW8gfSwgSXQuaXRlcmF0aW9uID0gZnVuY3Rpb24gaXRlcmF0aW9uKHQsIGUpIHsgdmFyIHIgPSB0aGlzLmR1cmF0aW9uKCkgKyB0aGlzLl9yRGVsYXk7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy50b3RhbFRpbWUodGhpcy5fdGltZSArICh0IC0gMSkgKiByLCBlKSA6IHRoaXMuX3JlcGVhdCA/IGd0KHRoaXMuX3RUaW1lLCByKSArIDEgOiAxIH0sIEl0LnRpbWVTY2FsZSA9IGZ1bmN0aW9uIHRpbWVTY2FsZSh0KSB7IGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuX3J0cyA9PT0gLVYgPyAwIDogdGhpcy5fcnRzOyBpZiAodGhpcy5fcnRzID09PSB0KSByZXR1cm4gdGhpczsgdmFyIGUgPSB0aGlzLnBhcmVudCAmJiB0aGlzLl90cyA/IHphKHRoaXMucGFyZW50Ll90aW1lLCB0aGlzKSA6IHRoaXMuX3RUaW1lOyByZXR1cm4gdGhpcy5fcnRzID0gK3QgfHwgMCwgdGhpcy5fdHMgPSB0aGlzLl9wcyB8fCB0ID09PSAtViA/IDAgOiB0aGlzLl9ydHMsIHRoaXMudG90YWxUaW1lKGJ0KC10aGlzLl9kZWxheSwgdGhpcy5fdER1ciwgZSksICEwKSwgQWEodGhpcyksCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfcmVjYWNoZUFuY2VzdG9ycyh0KSB7IGZvciAodmFyIGUgPSB0LnBhcmVudDsgZSAmJiBlLnBhcmVudDspIGUuX2RpcnR5ID0gMSwgZS50b3RhbER1cmF0aW9uKCksIGUgPSBlLnBhcmVudDsgcmV0dXJuIHQgfSh0aGlzKSB9LCBJdC5wYXVzZWQgPSBmdW5jdGlvbiBwYXVzZWQodCkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9wcyAhPT0gdCAmJiAoKHRoaXMuX3BzID0gdCkgPyAodGhpcy5fcFRpbWUgPSB0aGlzLl90VGltZSB8fCBNYXRoLm1heCgtdGhpcy5fZGVsYXksIHRoaXMucmF3VGltZSgpKSwgdGhpcy5fdHMgPSB0aGlzLl9hY3QgPSAwKSA6IChTdCgpLCB0aGlzLl90cyA9IHRoaXMuX3J0cywgdGhpcy50b3RhbFRpbWUodGhpcy5wYXJlbnQgJiYgIXRoaXMucGFyZW50LnNtb290aENoaWxkVGltaW5nID8gdGhpcy5yYXdUaW1lKCkgOiB0aGlzLl90VGltZSB8fCB0aGlzLl9wVGltZSwgMSA9PT0gdGhpcy5wcm9ncmVzcygpICYmIE1hdGguYWJzKHRoaXMuX3pUaW1lKSAhPT0gViAmJiAodGhpcy5fdFRpbWUgLT0gVikpKSksIHRoaXMpIDogdGhpcy5fcHMgfSwgSXQuc3RhcnRUaW1lID0gZnVuY3Rpb24gc3RhcnRUaW1lKHQpIHsgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHsgdGhpcy5fc3RhcnQgPSB0OyB2YXIgZSA9IHRoaXMucGFyZW50IHx8IHRoaXMuX2RwOyByZXR1cm4gIWUgfHwgIWUuX3NvcnQgJiYgdGhpcy5wYXJlbnQgfHwgRGEoZSwgdGhpcywgdCAtIHRoaXMuX2RlbGF5KSwgdGhpcyB9IHJldHVybiB0aGlzLl9zdGFydCB9LCBJdC5lbmRUaW1lID0gZnVuY3Rpb24gZW5kVGltZShlKSB7IHJldHVybiB0aGlzLl9zdGFydCArICh0KGUpID8gdGhpcy50b3RhbER1cmF0aW9uKCkgOiB0aGlzLmR1cmF0aW9uKCkpIC8gTWF0aC5hYnModGhpcy5fdHMgfHwgMSkgfSwgSXQucmF3VGltZSA9IGZ1bmN0aW9uIHJhd1RpbWUodCkgeyB2YXIgZSA9IHRoaXMucGFyZW50IHx8IHRoaXMuX2RwOyByZXR1cm4gZSA/IHQgJiYgKCF0aGlzLl90cyB8fCB0aGlzLl9yZXBlYXQgJiYgdGhpcy5fdGltZSAmJiB0aGlzLnRvdGFsUHJvZ3Jlc3MoKSA8IDEpID8gdGhpcy5fdFRpbWUgJSAodGhpcy5fZHVyICsgdGhpcy5fckRlbGF5KSA6IHRoaXMuX3RzID8gemEoZS5yYXdUaW1lKHQpLCB0aGlzKSA6IHRoaXMuX3RUaW1lIDogdGhpcy5fdFRpbWUgfSwgSXQuZ2xvYmFsVGltZSA9IGZ1bmN0aW9uIGdsb2JhbFRpbWUodCkgeyBmb3IgKHZhciBlID0gdGhpcywgciA9IGFyZ3VtZW50cy5sZW5ndGggPyB0IDogZS5yYXdUaW1lKCk7IGU7KSByID0gZS5fc3RhcnQgKyByIC8gKGUuX3RzIHx8IDEpLCBlID0gZS5fZHA7IHJldHVybiByIH0sIEl0LnJlcGVhdCA9IGZ1bmN0aW9uIHJlcGVhdCh0KSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3JlcGVhdCA9IHQgPT09IDEgLyAwID8gLTIgOiB0LCBMYSh0aGlzKSkgOiAtMiA9PT0gdGhpcy5fcmVwZWF0ID8gMSAvIDAgOiB0aGlzLl9yZXBlYXQgfSwgSXQucmVwZWF0RGVsYXkgPSBmdW5jdGlvbiByZXBlYXREZWxheSh0KSB7IGlmIChhcmd1bWVudHMubGVuZ3RoKSB7IHZhciBlID0gdGhpcy5fdGltZTsgcmV0dXJuIHRoaXMuX3JEZWxheSA9IHQsIExhKHRoaXMpLCBlID8gdGhpcy50aW1lKGUpIDogdGhpcyB9IHJldHVybiB0aGlzLl9yRGVsYXkgfSwgSXQueW95byA9IGZ1bmN0aW9uIHlveW8odCkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95b3lvID0gdCwgdGhpcykgOiB0aGlzLl95b3lvIH0sIEl0LnNlZWsgPSBmdW5jdGlvbiBzZWVrKGUsIHIpIHsgcmV0dXJuIHRoaXMudG90YWxUaW1lKFR0KHRoaXMsIGUpLCB0KHIpKSB9LCBJdC5yZXN0YXJ0ID0gZnVuY3Rpb24gcmVzdGFydChlLCByKSB7IHJldHVybiB0aGlzLnBsYXkoKS50b3RhbFRpbWUoZSA/IC10aGlzLl9kZWxheSA6IDAsIHQocikpIH0sIEl0LnBsYXkgPSBmdW5jdGlvbiBwbGF5KHQsIGUpIHsgcmV0dXJuIG51bGwgIT0gdCAmJiB0aGlzLnNlZWsodCwgZSksIHRoaXMucmV2ZXJzZWQoITEpLnBhdXNlZCghMSkgfSwgSXQucmV2ZXJzZSA9IGZ1bmN0aW9uIHJldmVyc2UodCwgZSkgeyByZXR1cm4gbnVsbCAhPSB0ICYmIHRoaXMuc2Vlayh0IHx8IHRoaXMudG90YWxEdXJhdGlvbigpLCBlKSwgdGhpcy5yZXZlcnNlZCghMCkucGF1c2VkKCExKSB9LCBJdC5wYXVzZSA9IGZ1bmN0aW9uIHBhdXNlKHQsIGUpIHsgcmV0dXJuIG51bGwgIT0gdCAmJiB0aGlzLnNlZWsodCwgZSksIHRoaXMucGF1c2VkKCEwKSB9LCBJdC5yZXN1bWUgPSBmdW5jdGlvbiByZXN1bWUoKSB7IHJldHVybiB0aGlzLnBhdXNlZCghMSkgfSwgSXQucmV2ZXJzZWQgPSBmdW5jdGlvbiByZXZlcnNlZCh0KSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKCEhdCAhPT0gdGhpcy5yZXZlcnNlZCgpICYmIHRoaXMudGltZVNjYWxlKC10aGlzLl9ydHMgfHwgKHQgPyAtViA6IDApKSwgdGhpcykgOiB0aGlzLl9ydHMgPCAwIH0sIEl0LmludmFsaWRhdGUgPSBmdW5jdGlvbiBpbnZhbGlkYXRlKCkgeyByZXR1cm4gdGhpcy5faW5pdHRlZCA9IHRoaXMuX2FjdCA9IDAsIHRoaXMuX3pUaW1lID0gLVYsIHRoaXMgfSwgSXQuaXNBY3RpdmUgPSBmdW5jdGlvbiBpc0FjdGl2ZSgpIHsgdmFyIHQsIGUgPSB0aGlzLnBhcmVudCB8fCB0aGlzLl9kcCwKICAgICAgICAgICAgICAgIHIgPSB0aGlzLl9zdGFydDsgcmV0dXJuICEoZSAmJiAhKHRoaXMuX3RzICYmIHRoaXMuX2luaXR0ZWQgJiYgZS5pc0FjdGl2ZSgpICYmICh0ID0gZS5yYXdUaW1lKCEwKSkgPj0gciAmJiB0IDwgdGhpcy5lbmRUaW1lKCEwKSAtIFYpKSB9LCBJdC5ldmVudENhbGxiYWNrID0gZnVuY3Rpb24gZXZlbnRDYWxsYmFjayh0LCBlLCByKSB7IHZhciBpID0gdGhpcy52YXJzOyByZXR1cm4gMSA8IGFyZ3VtZW50cy5sZW5ndGggPyAoZSA/IChpW3RdID0gZSwgciAmJiAoaVt0ICsgIlBhcmFtcyJdID0gciksICJvblVwZGF0ZSIgPT09IHQgJiYgKHRoaXMuX29uVXBkYXRlID0gZSkpIDogZGVsZXRlIGlbdF0sIHRoaXMpIDogaVt0XSB9LCBJdC50aGVuID0gZnVuY3Rpb24gdGhlbih0KSB7IHZhciBpID0gdGhpczsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFVuKCkgeyB2YXIgdCA9IGkudGhlbjsKICAgICAgICAgICAgICAgICAgICBpLnRoZW4gPSBudWxsLCBwKHIpICYmIChyID0gcihpKSkgJiYgKHIudGhlbiB8fCByID09PSBpKSAmJiAoaS50aGVuID0gdCksIGUociksIGkudGhlbiA9IHQgfSB2YXIgciA9IHAodCkgPyB0IDogamE7CiAgICAgICAgICAgICAgICBpLl9pbml0dGVkICYmIDEgPT09IGkudG90YWxQcm9ncmVzcygpICYmIDAgPD0gaS5fdHMgfHwgIWkuX3RUaW1lICYmIGkuX3RzIDwgMCA/IFVuKCkgOiBpLl9wcm9tID0gVW4gfSkgfSwgSXQua2lsbCA9IGZ1bmN0aW9uIGtpbGwoKSB7IG1iKHRoaXMpIH0sIEFuaW1hdGlvbik7CgogICAgZnVuY3Rpb24gQW5pbWF0aW9uKHQpIHsgdGhpcy52YXJzID0gdCwgdGhpcy5fZGVsYXkgPSArdC5kZWxheSB8fCAwLCAodGhpcy5fcmVwZWF0ID0gdC5yZXBlYXQgPT09IDEgLyAwID8gLTIgOiB0LnJlcGVhdCB8fCAwKSAmJiAodGhpcy5fckRlbGF5ID0gdC5yZXBlYXREZWxheSB8fCAwLCB0aGlzLl95b3lvID0gISF0LnlveW8gfHwgISF0LnlveW9FYXNlKSwgdGhpcy5fdHMgPSAxLCBLYSh0aGlzLCArdC5kdXJhdGlvbiwgMSwgMSksIHRoaXMuZGF0YSA9IHQuZGF0YSwgYyB8fCBEdC53YWtlKCkgfQogICAga2EoTnQucHJvdG90eXBlLCB7IF90aW1lOiAwLCBfc3RhcnQ6IDAsIF9lbmQ6IDAsIF90VGltZTogMCwgX3REdXI6IDAsIF9kaXJ0eTogMCwgX3JlcGVhdDogMCwgX3lveW86ICExLCBwYXJlbnQ6IG51bGwsIF9pbml0dGVkOiAhMSwgX3JEZWxheTogMCwgX3RzOiAxLCBfZHA6IDAsIHJhdGlvOiAwLCBfelRpbWU6IC1WLCBfcHJvbTogMCwgX3BzOiAhMSwgX3J0czogMSB9KTsgdmFyIFV0ID0gZnVuY3Rpb24obikgewogICAgICAgIGZ1bmN0aW9uIFRpbWVsaW5lKGUsIHIpIHsgdmFyIGk7IHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB7fSksIChpID0gbi5jYWxsKHRoaXMsIGUpIHx8IHRoaXMpLmxhYmVscyA9IHt9LCBpLnNtb290aENoaWxkVGltaW5nID0gISFlLnNtb290aENoaWxkVGltaW5nLCBpLmF1dG9SZW1vdmVDaGlsZHJlbiA9ICEhZS5hdXRvUmVtb3ZlQ2hpbGRyZW4sIGkuX3NvcnQgPSB0KGUuc29ydENoaWxkcmVuKSwgSSAmJiBEYShlLnBhcmVudCB8fCBJLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGkpLCByKSwgZS5yZXZlcnNlZCAmJiBpLnJldmVyc2UoKSwgZS5wYXVzZWQgJiYgaS5wYXVzZWQoITApLCBlLnNjcm9sbFRyaWdnZXIgJiYgRWEoX2Fzc2VydFRoaXNJbml0aWFsaXplZChpKSwgZS5zY3JvbGxUcmlnZ2VyKSwgaSB9CiAgICAgICAgX2luaGVyaXRzTG9vc2UoVGltZWxpbmUsIG4pOyB2YXIgZSA9IFRpbWVsaW5lLnByb3RvdHlwZTsgcmV0dXJuIGUudG8gPSBmdW5jdGlvbiB0byh0LCBlLCByKSB7IHJldHVybiBPYSgwLCBhcmd1bWVudHMsIHRoaXMpLCB0aGlzIH0sIGUuZnJvbSA9IGZ1bmN0aW9uIGZyb20odCwgZSwgcikgeyByZXR1cm4gT2EoMSwgYXJndW1lbnRzLCB0aGlzKSwgdGhpcyB9LCBlLmZyb21UbyA9IGZ1bmN0aW9uIGZyb21Ubyh0LCBlLCByLCBpKSB7IHJldHVybiBPYSgyLCBhcmd1bWVudHMsIHRoaXMpLCB0aGlzIH0sIGUuc2V0ID0gZnVuY3Rpb24gc2V0KHQsIGUsIHIpIHsgcmV0dXJuIGUuZHVyYXRpb24gPSAwLCBlLnBhcmVudCA9IHRoaXMsIHBhKGUpLnJlcGVhdERlbGF5IHx8IChlLnJlcGVhdCA9IDApLCBlLmltbWVkaWF0ZVJlbmRlciA9ICEhZS5pbW1lZGlhdGVSZW5kZXIsIG5ldyAkdCh0LCBlLCBUdCh0aGlzLCByKSwgMSksIHRoaXMgfSwgZS5jYWxsID0gZnVuY3Rpb24gY2FsbCh0LCBlLCByKSB7IHJldHVybiBEYSh0aGlzLCAkdC5kZWxheWVkQ2FsbCgwLCB0LCBlKSwgcikgfSwgZS5zdGFnZ2VyVG8gPSBmdW5jdGlvbiBzdGFnZ2VyVG8odCwgZSwgciwgaSwgbiwgYSwgcykgeyByZXR1cm4gci5kdXJhdGlvbiA9IGUsIHIuc3RhZ2dlciA9IHIuc3RhZ2dlciB8fCBpLCByLm9uQ29tcGxldGUgPSBhLCByLm9uQ29tcGxldGVQYXJhbXMgPSBzLCByLnBhcmVudCA9IHRoaXMsIG5ldyAkdCh0LCByLCBUdCh0aGlzLCBuKSksIHRoaXMgfSwgZS5zdGFnZ2VyRnJvbSA9IGZ1bmN0aW9uIHN0YWdnZXJGcm9tKGUsIHIsIGksIG4sIGEsIHMsIG8pIHsgcmV0dXJuIGkucnVuQmFja3dhcmRzID0gMSwgcGEoaSkuaW1tZWRpYXRlUmVuZGVyID0gdChpLmltbWVkaWF0ZVJlbmRlciksIHRoaXMuc3RhZ2dlclRvKGUsIHIsIGksIG4sIGEsIHMsIG8pIH0sIGUuc3RhZ2dlckZyb21UbyA9IGZ1bmN0aW9uIHN0YWdnZXJGcm9tVG8oZSwgciwgaSwgbiwgYSwgcywgbywgdSkgeyByZXR1cm4gbi5zdGFydEF0ID0gaSwgcGEobikuaW1tZWRpYXRlUmVuZGVyID0gdChuLmltbWVkaWF0ZVJlbmRlciksIHRoaXMuc3RhZ2dlclRvKGUsIHIsIG4sIGEsIHMsIG8sIHUpIH0sIGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHQsIGUsIHIpIHsgdmFyIGksIG4sIGEsIHMsIG8sIHUsIGgsIGwsIGYsIGQsIF8sIHAsIGMgPSB0aGlzLl90aW1lLAogICAgICAgICAgICAgICAgbSA9IHRoaXMuX2RpcnR5ID8gdGhpcy50b3RhbER1cmF0aW9uKCkgOiB0aGlzLl90RHVyLAogICAgICAgICAgICAgICAgZyA9IHRoaXMuX2R1ciwKICAgICAgICAgICAgICAgIHYgPSB0IDw9IDAgPyAwIDogZGEodCksCiAgICAgICAgICAgICAgICB5ID0gdGhpcy5felRpbWUgPCAwICE9IHQgPCAwICYmICh0aGlzLl9pbml0dGVkIHx8ICFnKTsgaWYgKHRoaXMgIT09IEkgJiYgbSA8IHYgJiYgMCA8PSB0ICYmICh2ID0gbSksIHYgIT09IHRoaXMuX3RUaW1lIHx8IHIgfHwgeSkgeyBpZiAoYyAhPT0gdGhpcy5fdGltZSAmJiBnICYmICh2ICs9IHRoaXMuX3RpbWUgLSBjLCB0ICs9IHRoaXMuX3RpbWUgLSBjKSwgaSA9IHYsIGYgPSB0aGlzLl9zdGFydCwgdSA9ICEobCA9IHRoaXMuX3RzKSwgeSAmJiAoZyB8fCAoYyA9IHRoaXMuX3pUaW1lKSwgIXQgJiYgZSB8fCAodGhpcy5felRpbWUgPSB0KSksIHRoaXMuX3JlcGVhdCkgeyBpZiAoXyA9IHRoaXMuX3lveW8sIG8gPSBnICsgdGhpcy5fckRlbGF5LCB0aGlzLl9yZXBlYXQgPCAtMSAmJiB0IDwgMCkgcmV0dXJuIHRoaXMudG90YWxUaW1lKDEwMCAqIG8gKyB0LCBlLCByKTsgaWYgKGkgPSBkYSh2ICUgbyksIHYgPT09IG0gPyAocyA9IHRoaXMuX3JlcGVhdCwgaSA9IGcpIDogKChzID0gfn4odiAvIG8pKSAmJiBzID09PSB2IC8gbyAmJiAoaSA9IGcsIHMtLSksIGcgPCBpICYmIChpID0gZykpLCBkID0gZ3QodGhpcy5fdFRpbWUsIG8pLCAhYyAmJiB0aGlzLl90VGltZSAmJiBkICE9PSBzICYmIChkID0gcyksIF8gJiYgMSAmIHMgJiYgKGkgPSBnIC0gaSwgcCA9IDEpLCBzICE9PSBkICYmICF0aGlzLl9sb2NrKSB7IHZhciBUID0gXyAmJiAxICYgZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBUID09PSAoXyAmJiAxICYgcyk7IGlmIChzIDwgZCAmJiAoVCA9ICFUKSwgYyA9IFQgPyAwIDogZywgdGhpcy5fbG9jayA9IDEsIHRoaXMucmVuZGVyKGMgfHwgKHAgPyAwIDogZGEocyAqIG8pKSwgZSwgIWcpLl9sb2NrID0gMCwgdGhpcy5fdFRpbWUgPSB2LCAhZSAmJiB0aGlzLnBhcmVudCAmJiBPdCh0aGlzLCAib25SZXBlYXQiKSwgdGhpcy52YXJzLnJlcGVhdFJlZnJlc2ggJiYgIXAgJiYgKHRoaXMuaW52YWxpZGF0ZSgpLl9sb2NrID0gMSksIGMgJiYgYyAhPT0gdGhpcy5fdGltZSB8fCB1ICE9ICF0aGlzLl90cyB8fCB0aGlzLnZhcnMub25SZXBlYXQgJiYgIXRoaXMucGFyZW50ICYmICF0aGlzLl9hY3QpIHJldHVybiB0aGlzOyBpZiAoZyA9IHRoaXMuX2R1ciwgbSA9IHRoaXMuX3REdXIsIGIgJiYgKHRoaXMuX2xvY2sgPSAyLCBjID0gVCA/IGcgOiAtMWUtNCwgdGhpcy5yZW5kZXIoYywgITApLCB0aGlzLnZhcnMucmVwZWF0UmVmcmVzaCAmJiAhcCAmJiB0aGlzLmludmFsaWRhdGUoKSksIHRoaXMuX2xvY2sgPSAwLCAhdGhpcy5fdHMgJiYgIXUpIHJldHVybiB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBJYih0aGlzLCBwKSB9IH0gaWYgKHRoaXMuX2hhc1BhdXNlICYmICF0aGlzLl9mb3JjaW5nICYmIHRoaXMuX2xvY2sgPCAyICYmIChoID0gZnVuY3Rpb24gX2ZpbmROZXh0UGF1c2VUd2Vlbih0LCBlLCByKSB7IHZhciBpOyBpZiAoZSA8IHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSB0Ll9maXJzdDsgaSAmJiBpLl9zdGFydCA8PSByOykgeyBpZiAoImlzUGF1c2UiID09PSBpLmRhdGEgJiYgaS5fc3RhcnQgPiBlKSByZXR1cm4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5fbmV4dCB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSB0Ll9sYXN0OyBpICYmIGkuX3N0YXJ0ID49IHI7KSB7IGlmICgiaXNQYXVzZSIgPT09IGkuZGF0YSAmJiBpLl9zdGFydCA8IGUpIHJldHVybiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaS5fcHJldiB9IH0odGhpcywgZGEoYyksIGRhKGkpKSkgJiYgKHYgLT0gaSAtIChpID0gaC5fc3RhcnQpKSwgdGhpcy5fdFRpbWUgPSB2LCB0aGlzLl90aW1lID0gaSwgdGhpcy5fYWN0ID0gIWwsIHRoaXMuX2luaXR0ZWQgfHwgKHRoaXMuX29uVXBkYXRlID0gdGhpcy52YXJzLm9uVXBkYXRlLCB0aGlzLl9pbml0dGVkID0gMSwgdGhpcy5felRpbWUgPSB0LCBjID0gMCksICFjICYmIGkgJiYgIWUgJiYgKE90KHRoaXMsICJvblN0YXJ0IiksIHRoaXMuX3RUaW1lICE9PSB2KSkgcmV0dXJuIHRoaXM7IGlmIChjIDw9IGkgJiYgMCA8PSB0KQogICAgICAgICAgICAgICAgICAgIGZvciAobiA9IHRoaXMuX2ZpcnN0OyBuOykgeyBpZiAoYSA9IG4uX25leHQsIChuLl9hY3QgfHwgaSA+PSBuLl9zdGFydCkgJiYgbi5fdHMgJiYgaCAhPT0gbikgeyBpZiAobi5wYXJlbnQgIT09IHRoaXMpIHJldHVybiB0aGlzLnJlbmRlcih0LCBlLCByKTsgaWYgKG4ucmVuZGVyKDAgPCBuLl90cyA/IChpIC0gbi5fc3RhcnQpICogbi5fdHMgOiAobi5fZGlydHkgPyBuLnRvdGFsRHVyYXRpb24oKSA6IG4uX3REdXIpICsgKGkgLSBuLl9zdGFydCkgKiBuLl90cywgZSwgciksIGkgIT09IHRoaXMuX3RpbWUgfHwgIXRoaXMuX3RzICYmICF1KSB7IGggPSAwLCBhICYmICh2ICs9IHRoaXMuX3pUaW1lID0gLVYpOyBicmVhayB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGEgfSBlbHNlIHsgbiA9IHRoaXMuX2xhc3Q7IGZvciAodmFyIHcgPSB0IDwgMCA/IHQgOiBpOyBuOykgeyBpZiAoYSA9IG4uX3ByZXYsIChuLl9hY3QgfHwgdyA8PSBuLl9lbmQpICYmIG4uX3RzICYmIGggIT09IG4pIHsgaWYgKG4ucGFyZW50ICE9PSB0aGlzKSByZXR1cm4gdGhpcy5yZW5kZXIodCwgZSwgcik7IGlmIChuLnJlbmRlcigwIDwgbi5fdHMgPyAodyAtIG4uX3N0YXJ0KSAqIG4uX3RzIDogKG4uX2RpcnR5ID8gbi50b3RhbER1cmF0aW9uKCkgOiBuLl90RHVyKSArICh3IC0gbi5fc3RhcnQpICogbi5fdHMsIGUsIHIpLCBpICE9PSB0aGlzLl90aW1lIHx8ICF0aGlzLl90cyAmJiAhdSkgeyBoID0gMCwgYSAmJiAodiArPSB0aGlzLl96VGltZSA9IHcgPyAtViA6IFYpOyBicmVhayB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBhIH0gfQogICAgICAgICAgICAgICAgaWYgKGggJiYgIWUgJiYgKHRoaXMucGF1c2UoKSwgaC5yZW5kZXIoYyA8PSBpID8gMCA6IC1WKS5felRpbWUgPSBjIDw9IGkgPyAxIDogLTEsIHRoaXMuX3RzKSkgcmV0dXJuIHRoaXMuX3N0YXJ0ID0gZiwgQWEodGhpcyksIHRoaXMucmVuZGVyKHQsIGUsIHIpOwogICAgICAgICAgICAgICAgdGhpcy5fb25VcGRhdGUgJiYgIWUgJiYgT3QodGhpcywgIm9uVXBkYXRlIiwgITApLCAodiA9PT0gbSAmJiB0aGlzLl90VGltZSA+PSB0aGlzLnRvdGFsRHVyYXRpb24oKSB8fCAhdiAmJiBjKSAmJiAoZiAhPT0gdGhpcy5fc3RhcnQgJiYgTWF0aC5hYnMobCkgPT09IE1hdGguYWJzKHRoaXMuX3RzKSB8fCB0aGlzLl9sb2NrIHx8ICghdCAmJiBnIHx8ICEodiA9PT0gbSAmJiAwIDwgdGhpcy5fdHMgfHwgIXYgJiYgdGhpcy5fdHMgPCAwKSB8fCB0YSh0aGlzLCAxKSwgZSB8fCB0IDwgMCAmJiAhYyB8fCAhdiAmJiAhYyAmJiBtIHx8IChPdCh0aGlzLCB2ID09PSBtICYmIDAgPD0gdCA/ICJvbkNvbXBsZXRlIiA6ICJvblJldmVyc2VDb21wbGV0ZSIsICEwKSwgIXRoaXMuX3Byb20gfHwgdiA8IG0gJiYgMCA8IHRoaXMudGltZVNjYWxlKCkgfHwgdGhpcy5fcHJvbSgpKSkpIH0gcmV0dXJuIHRoaXMgfSwgZS5hZGQgPSBmdW5jdGlvbiBhZGQodCwgZSkgeyB2YXIgciA9IHRoaXM7IGlmIChxKGUpIHx8IChlID0gVHQodGhpcywgZSwgdCkpLCAhKHQgaW5zdGFuY2VvZiBOdCkpIHsgaWYgKEoodCkpIHJldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCkgeyByZXR1cm4gci5hZGQodCwgZSkgfSksIHRoaXM7IGlmIChvKHQpKSByZXR1cm4gdGhpcy5hZGRMYWJlbCh0LCBlKTsgaWYgKCFwKHQpKSByZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgIHQgPSAkdC5kZWxheWVkQ2FsbCgwLCB0KSB9IHJldHVybiB0aGlzICE9PSB0ID8gRGEodGhpcywgdCwgZSkgOiB0aGlzIH0sIGUuZ2V0Q2hpbGRyZW4gPSBmdW5jdGlvbiBnZXRDaGlsZHJlbih0LCBlLCByLCBpKSB7IHZvaWQgMCA9PT0gdCAmJiAodCA9ICEwKSwgdm9pZCAwID09PSBlICYmIChlID0gITApLCB2b2lkIDAgPT09IHIgJiYgKHIgPSAhMCksIHZvaWQgMCA9PT0gaSAmJiAoaSA9IC1ZKTsgZm9yICh2YXIgbiA9IFtdLCBhID0gdGhpcy5fZmlyc3Q7IGE7KSBhLl9zdGFydCA+PSBpICYmIChhIGluc3RhbmNlb2YgJHQgPyBlICYmIG4ucHVzaChhKSA6IChyICYmIG4ucHVzaChhKSwgdCAmJiBuLnB1c2guYXBwbHkobiwgYS5nZXRDaGlsZHJlbighMCwgZSwgcikpKSksIGEgPSBhLl9uZXh0OyByZXR1cm4gbiB9LCBlLmdldEJ5SWQgPSBmdW5jdGlvbiBnZXRCeUlkKHQpIHsgZm9yICh2YXIgZSA9IHRoaXMuZ2V0Q2hpbGRyZW4oMSwgMSwgMSksIHIgPSBlLmxlbmd0aDsgci0tOykKICAgICAgICAgICAgICAgIGlmIChlW3JdLnZhcnMuaWQgPT09IHQpIHJldHVybiBlW3JdIH0sIGUucmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKHQpIHsgcmV0dXJuIG8odCkgPyB0aGlzLnJlbW92ZUxhYmVsKHQpIDogcCh0KSA/IHRoaXMua2lsbFR3ZWVuc09mKHQpIDogKHNhKHRoaXMsIHQpLCB0ID09PSB0aGlzLl9yZWNlbnQgJiYgKHRoaXMuX3JlY2VudCA9IHRoaXMuX2xhc3QpLCB1YSh0aGlzKSkgfSwgZS50b3RhbFRpbWUgPSBmdW5jdGlvbiB0b3RhbFRpbWUodCwgZSkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl9mb3JjaW5nID0gMSwgIXRoaXMuX2RwICYmIHRoaXMuX3RzICYmICh0aGlzLl9zdGFydCA9IGRhKER0LnRpbWUgLSAoMCA8IHRoaXMuX3RzID8gdCAvIHRoaXMuX3RzIDogKHRoaXMudG90YWxEdXJhdGlvbigpIC0gdCkgLyAtdGhpcy5fdHMpKSksIG4ucHJvdG90eXBlLnRvdGFsVGltZS5jYWxsKHRoaXMsIHQsIGUpLCB0aGlzLl9mb3JjaW5nID0gMCwgdGhpcykgOiB0aGlzLl90VGltZSB9LCBlLmFkZExhYmVsID0gZnVuY3Rpb24gYWRkTGFiZWwodCwgZSkgeyByZXR1cm4gdGhpcy5sYWJlbHNbdF0gPSBUdCh0aGlzLCBlKSwgdGhpcyB9LCBlLnJlbW92ZUxhYmVsID0gZnVuY3Rpb24gcmVtb3ZlTGFiZWwodCkgeyByZXR1cm4gZGVsZXRlIHRoaXMubGFiZWxzW3RdLCB0aGlzIH0sIGUuYWRkUGF1c2UgPSBmdW5jdGlvbiBhZGRQYXVzZSh0LCBlLCByKSB7IHZhciBpID0gJHQuZGVsYXllZENhbGwoMCwgZSB8fCBRLCByKTsgcmV0dXJuIGkuZGF0YSA9ICJpc1BhdXNlIiwgdGhpcy5faGFzUGF1c2UgPSAxLCBEYSh0aGlzLCBpLCBUdCh0aGlzLCB0KSkgfSwgZS5yZW1vdmVQYXVzZSA9IGZ1bmN0aW9uIHJlbW92ZVBhdXNlKHQpIHsgdmFyIGUgPSB0aGlzLl9maXJzdDsgZm9yICh0ID0gVHQodGhpcywgdCk7IGU7KSBlLl9zdGFydCA9PT0gdCAmJiAiaXNQYXVzZSIgPT09IGUuZGF0YSAmJiB0YShlKSwgZSA9IGUuX25leHQgfSwgZS5raWxsVHdlZW5zT2YgPSBmdW5jdGlvbiBraWxsVHdlZW5zT2YodCwgZSwgcikgeyBmb3IgKHZhciBpID0gdGhpcy5nZXRUd2VlbnNPZih0LCByKSwgbiA9IGkubGVuZ3RoOyBuLS07KSBZdCAhPT0gaVtuXSAmJiBpW25dLmtpbGwodCwgZSk7IHJldHVybiB0aGlzIH0sIGUuZ2V0VHdlZW5zT2YgPSBmdW5jdGlvbiBnZXRUd2VlbnNPZih0LCBlKSB7IGZvciAodmFyIHIsIGkgPSBbXSwgbiA9IHh0KHQpLCBhID0gdGhpcy5fZmlyc3QsIHMgPSBxKGUpOyBhOykgYSBpbnN0YW5jZW9mICR0ID8gZmEoYS5fdGFyZ2V0cywgbikgJiYgKHMgPyAoIVl0IHx8IGEuX2luaXR0ZWQgJiYgYS5fdHMpICYmIGEuZ2xvYmFsVGltZSgwKSA8PSBlICYmIGEuZ2xvYmFsVGltZShhLnRvdGFsRHVyYXRpb24oKSkgPiBlIDogIWUgfHwgYS5pc0FjdGl2ZSgpKSAmJiBpLnB1c2goYSkgOiAociA9IGEuZ2V0VHdlZW5zT2YobiwgZSkpLmxlbmd0aCAmJiBpLnB1c2guYXBwbHkoaSwgciksIGEgPSBhLl9uZXh0OyByZXR1cm4gaSB9LCBlLnR3ZWVuVG8gPSBmdW5jdGlvbiB0d2VlblRvKHQsIGUpIHsgZSA9IGUgfHwge307IHZhciByLCBpID0gdGhpcywKICAgICAgICAgICAgICAgIG4gPSBUdChpLCB0KSwKICAgICAgICAgICAgICAgIGEgPSBlLnN0YXJ0QXQsCiAgICAgICAgICAgICAgICBzID0gZS5vblN0YXJ0LAogICAgICAgICAgICAgICAgbyA9IGUub25TdGFydFBhcmFtcywKICAgICAgICAgICAgICAgIHUgPSBlLmltbWVkaWF0ZVJlbmRlciwKICAgICAgICAgICAgICAgIGggPSAkdC50byhpLCBrYSh7IGVhc2U6IGUuZWFzZSB8fCAibm9uZSIsIGxhenk6ICExLCBpbW1lZGlhdGVSZW5kZXI6ICExLCB0aW1lOiBuLCBvdmVyd3JpdGU6ICJhdXRvIiwgZHVyYXRpb246IGUuZHVyYXRpb24gfHwgTWF0aC5hYnMoKG4gLSAoYSAmJiAidGltZSIgaW4gYSA/IGEudGltZSA6IGkuX3RpbWUpKSAvIGkudGltZVNjYWxlKCkpIHx8IFYsIG9uU3RhcnQ6IGZ1bmN0aW9uIG9uU3RhcnQoKSB7IGlmIChpLnBhdXNlKCksICFyKSB7IHZhciB0ID0gZS5kdXJhdGlvbiB8fCBNYXRoLmFicygobiAtIChhICYmICJ0aW1lIiBpbiBhID8gYS50aW1lIDogaS5fdGltZSkpIC8gaS50aW1lU2NhbGUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLl9kdXIgIT09IHQgJiYgS2EoaCwgdCwgMCwgMSkucmVuZGVyKGguX3RpbWUsICEwLCAhMCksIHIgPSAxIH0KICAgICAgICAgICAgICAgICAgICAgICAgcyAmJiBzLmFwcGx5KGgsIG8gfHwgW10pIH0gfSwgZSkpOyByZXR1cm4gdSA/IGgucmVuZGVyKDApIDogaCB9LCBlLnR3ZWVuRnJvbVRvID0gZnVuY3Rpb24gdHdlZW5Gcm9tVG8odCwgZSwgcikgeyByZXR1cm4gdGhpcy50d2VlblRvKGUsIGthKHsgc3RhcnRBdDogeyB0aW1lOiBUdCh0aGlzLCB0KSB9IH0sIHIpKSB9LCBlLnJlY2VudCA9IGZ1bmN0aW9uIHJlY2VudCgpIHsgcmV0dXJuIHRoaXMuX3JlY2VudCB9LCBlLm5leHRMYWJlbCA9IGZ1bmN0aW9uIG5leHRMYWJlbCh0KSB7IHJldHVybiB2b2lkIDAgPT09IHQgJiYgKHQgPSB0aGlzLl90aW1lKSwga2IodGhpcywgVHQodGhpcywgdCkpIH0sIGUucHJldmlvdXNMYWJlbCA9IGZ1bmN0aW9uIHByZXZpb3VzTGFiZWwodCkgeyByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcy5fdGltZSksIGtiKHRoaXMsIFR0KHRoaXMsIHQpLCAxKSB9LCBlLmN1cnJlbnRMYWJlbCA9IGZ1bmN0aW9uIGN1cnJlbnRMYWJlbCh0KSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy5zZWVrKHQsICEwKSA6IHRoaXMucHJldmlvdXNMYWJlbCh0aGlzLl90aW1lICsgVikgfSwgZS5zaGlmdENoaWxkcmVuID0gZnVuY3Rpb24gc2hpZnRDaGlsZHJlbih0LCBlLCByKSB7IHZvaWQgMCA9PT0gciAmJiAociA9IDApOyBmb3IgKHZhciBpLCBuID0gdGhpcy5fZmlyc3QsIGEgPSB0aGlzLmxhYmVsczsgbjspIG4uX3N0YXJ0ID49IHIgJiYgKG4uX3N0YXJ0ICs9IHQsIG4uX2VuZCArPSB0KSwgbiA9IG4uX25leHQ7IGlmIChlKQogICAgICAgICAgICAgICAgZm9yIChpIGluIGEpIGFbaV0gPj0gciAmJiAoYVtpXSArPSB0KTsgcmV0dXJuIHVhKHRoaXMpIH0sIGUuaW52YWxpZGF0ZSA9IGZ1bmN0aW9uIGludmFsaWRhdGUoKSB7IHZhciB0ID0gdGhpcy5fZmlyc3Q7IGZvciAodGhpcy5fbG9jayA9IDA7IHQ7KSB0LmludmFsaWRhdGUoKSwgdCA9IHQuX25leHQ7IHJldHVybiBuLnByb3RvdHlwZS5pbnZhbGlkYXRlLmNhbGwodGhpcykgfSwgZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKHQpIHsgdm9pZCAwID09PSB0ICYmICh0ID0gITApOyBmb3IgKHZhciBlLCByID0gdGhpcy5fZmlyc3Q7IHI7KSBlID0gci5fbmV4dCwgdGhpcy5yZW1vdmUociksIHIgPSBlOyByZXR1cm4gdGhpcy5fZHAgJiYgKHRoaXMuX3RpbWUgPSB0aGlzLl90VGltZSA9IHRoaXMuX3BUaW1lID0gMCksIHQgJiYgKHRoaXMubGFiZWxzID0ge30pLCB1YSh0aGlzKSB9LCBlLnRvdGFsRHVyYXRpb24gPSBmdW5jdGlvbiB0b3RhbER1cmF0aW9uKHQpIHsgdmFyIGUsIHIsIGksIG4gPSAwLAogICAgICAgICAgICAgICAgYSA9IHRoaXMsCiAgICAgICAgICAgICAgICBzID0gYS5fbGFzdCwKICAgICAgICAgICAgICAgIG8gPSBZOyBpZiAoYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGEudGltZVNjYWxlKChhLl9yZXBlYXQgPCAwID8gYS5kdXJhdGlvbigpIDogYS50b3RhbER1cmF0aW9uKCkpIC8gKGEucmV2ZXJzZWQoKSA/IC10IDogdCkpOyBpZiAoYS5fZGlydHkpIHsgZm9yIChpID0gYS5wYXJlbnQ7IHM7KSBlID0gcy5fcHJldiwgcy5fZGlydHkgJiYgcy50b3RhbER1cmF0aW9uKCksIG8gPCAociA9IHMuX3N0YXJ0KSAmJiBhLl9zb3J0ICYmIHMuX3RzICYmICFhLl9sb2NrID8gKGEuX2xvY2sgPSAxLCBEYShhLCBzLCByIC0gcy5fZGVsYXksIDEpLl9sb2NrID0gMCkgOiBvID0gciwgciA8IDAgJiYgcy5fdHMgJiYgKG4gLT0gciwgKCFpICYmICFhLl9kcCB8fCBpICYmIGkuc21vb3RoQ2hpbGRUaW1pbmcpICYmIChhLl9zdGFydCArPSByIC8gYS5fdHMsIGEuX3RpbWUgLT0gciwgYS5fdFRpbWUgLT0gciksIGEuc2hpZnRDaGlsZHJlbigtciwgITEsIC1JbmZpbml0eSksIG8gPSAwKSwgcy5fZW5kID4gbiAmJiBzLl90cyAmJiAobiA9IHMuX2VuZCksIHMgPSBlOwogICAgICAgICAgICAgICAgS2EoYSwgYSA9PT0gSSAmJiBhLl90aW1lID4gbiA/IGEuX3RpbWUgOiBuLCAxLCAxKSwgYS5fZGlydHkgPSAwIH0gcmV0dXJuIGEuX3REdXIgfSwgVGltZWxpbmUudXBkYXRlUm9vdCA9IGZ1bmN0aW9uIHVwZGF0ZVJvb3QodCkgeyBpZiAoSS5fdHMgJiYgKGhhKEksIHphKHQsIEkpKSwgZiA9IER0LmZyYW1lKSwgRHQuZnJhbWUgPj0gX3QpIHsgX3QgKz0gVS5hdXRvU2xlZXAgfHwgMTIwOyB2YXIgZSA9IEkuX2ZpcnN0OyBpZiAoKCFlIHx8ICFlLl90cykgJiYgVS5hdXRvU2xlZXAgJiYgRHQuX2xpc3RlbmVycy5sZW5ndGggPCAyKSB7IGZvciAoOyBlICYmICFlLl90czspIGUgPSBlLl9uZXh0OwogICAgICAgICAgICAgICAgICAgIGUgfHwgRHQuc2xlZXAoKSB9IH0gfSwgVGltZWxpbmUgfShOdCk7CiAgICBrYShVdC5wcm90b3R5cGUsIHsgX2xvY2s6IDAsIF9oYXNQYXVzZTogMCwgX2ZvcmNpbmc6IDAgfSk7CgogICAgZnVuY3Rpb24gVWIodCwgZSwgciwgaSwgbiwgYSkgeyB2YXIgdSwgaCwgbCwgZjsgaWYgKGZ0W3RdICYmICExICE9PSAodSA9IG5ldyBmdFt0XSkuaW5pdChuLCB1LnJhd1ZhcnMgPyBlW3RdIDogZnVuY3Rpb24gX3Byb2Nlc3NWYXJzKHQsIGUsIHIsIGksIG4pIHsgaWYgKHAodCkgJiYgKHQgPSBRdCh0LCBuLCBlLCByLCBpKSksICFzKHQpIHx8IHQuc3R5bGUgJiYgdC5ub2RlVHlwZSB8fCBKKHQpIHx8IEgodCkpIHJldHVybiBvKHQpID8gUXQodCwgbiwgZSwgciwgaSkgOiB0OyB2YXIgYSwgdSA9IHt9OyBmb3IgKGEgaW4gdCkgdVthXSA9IFF0KHRbYV0sIG4sIGUsIHIsIGkpOyByZXR1cm4gdSB9KGVbdF0sIGksIG4sIGEsIHIpLCByLCBpLCBhKSAmJiAoci5fcHQgPSBoID0gbmV3IG9lKHIuX3B0LCBuLCB0LCAwLCAxLCB1LnJlbmRlciwgdSwgMCwgdS5wcmlvcml0eSksIHIgIT09IGQpKQogICAgICAgICAgICBmb3IgKGwgPSByLl9wdExvb2t1cFtyLl90YXJnZXRzLmluZGV4T2YobildLCBmID0gdS5fcHJvcHMubGVuZ3RoOyBmLS07KSBsW3UuX3Byb3BzW2ZdXSA9IGg7IHJldHVybiB1IH0KCiAgICBmdW5jdGlvbiAkYih0LCByLCBlLCBpKSB7IHZhciBuLCBhLCBzID0gci5lYXNlIHx8IGkgfHwgInBvd2VyMS5pbk91dCI7IGlmIChKKHIpKSBhID0gZVt0XSB8fCAoZVt0XSA9IFtdKSwgci5mb3JFYWNoKGZ1bmN0aW9uKHQsIGUpIHsgcmV0dXJuIGEucHVzaCh7IHQ6IGUgLyAoci5sZW5ndGggLSAxKSAqIDEwMCwgdjogdCwgZTogcyB9KSB9KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGZvciAobiBpbiByKSBhID0gZVtuXSB8fCAoZVtuXSA9IFtdKSwgImVhc2UiID09PSBuIHx8IGEucHVzaCh7IHQ6IHBhcnNlRmxvYXQodCksIHY6IHJbbl0sIGU6IHMgfSkgfSB2YXIgWXQsIHF0LCBWdCA9IGZ1bmN0aW9uIF9hZGRQcm9wVHdlZW4odCwgZSwgciwgaSwgbiwgYSwgcywgdSwgaCkgeyBwKGkpICYmIChpID0gaShuIHx8IDAsIHQsIGEpKTsgdmFyIGwsIGYgPSB0W2VdLAogICAgICAgICAgICAgICAgZCA9ICJnZXQiICE9PSByID8gciA6IHAoZikgPyBoID8gdFtlLmluZGV4T2YoInNldCIpIHx8ICFwKHRbImdldCIgKyBlLnN1YnN0cigzKV0pID8gZSA6ICJnZXQiICsgZS5zdWJzdHIoMyldKGgpIDogdFtlXSgpIDogZiwKICAgICAgICAgICAgICAgIF8gPSBwKGYpID8gaCA/IFp0IDogV3QgOiBHdDsgaWYgKG8oaSkgJiYgKH5pLmluZGV4T2YoInJhbmRvbSgiKSAmJiAoaSA9IGhiKGkpKSwgIj0iID09PSBpLmNoYXJBdCgxKSAmJiAoIShsID0gZWEoZCwgaSkgKyAoUmEoZCkgfHwgMCkpICYmIDAgIT09IGwgfHwgKGkgPSBsKSkpLCBkICE9PSBpIHx8IHF0KSByZXR1cm4gaXNOYU4oZCAqIGkpIHx8ICIiID09PSBpID8gKGYgfHwgZSBpbiB0IHx8IE4oZSwgaSksIGZ1bmN0aW9uIF9hZGRDb21wbGV4U3RyaW5nUHJvcFR3ZWVuKHQsIGUsIHIsIGksIG4sIGEsIHMpIHsgdmFyIG8sIHUsIGgsIGwsIGYsIGQsIF8sIHAsIGMgPSBuZXcgb2UodGhpcy5fcHQsIHQsIGUsIDAsIDEsIGVlLCBudWxsLCBuKSwKICAgICAgICAgICAgICAgICAgICBtID0gMCwKICAgICAgICAgICAgICAgICAgICBnID0gMDsgZm9yIChjLmIgPSByLCBjLmUgPSBpLCByICs9ICIiLCAoXyA9IH4oaSArPSAiIikuaW5kZXhPZigicmFuZG9tKCIpKSAmJiAoaSA9IGhiKGkpKSwgYSAmJiAoYShwID0gW3IsIGldLCB0LCBlKSwgciA9IHBbMF0sIGkgPSBwWzFdKSwgdSA9IHIubWF0Y2goaXQpIHx8IFtdOyBvID0gaXQuZXhlYyhpKTspIGwgPSBvWzBdLCBmID0gaS5zdWJzdHJpbmcobSwgby5pbmRleCksIGggPyBoID0gKGggKyAxKSAlIDUgOiAicmdiYSgiID09PSBmLnN1YnN0cigtNSkgJiYgKGggPSAxKSwgbCAhPT0gdVtnKytdICYmIChkID0gcGFyc2VGbG9hdCh1W2cgLSAxXSkgfHwgMCwgYy5fcHQgPSB7IF9uZXh0OiBjLl9wdCwgcDogZiB8fCAxID09PSBnID8gZiA6ICIsIiwgczogZCwgYzogIj0iID09PSBsLmNoYXJBdCgxKSA/IGVhKGQsIGwpIC0gZCA6IHBhcnNlRmxvYXQobCkgLSBkLCBtOiBoICYmIGggPCA0ID8gTWF0aC5yb3VuZCA6IDAgfSwgbSA9IGl0Lmxhc3RJbmRleCk7IHJldHVybiBjLmMgPSBtIDwgaS5sZW5ndGggPyBpLnN1YnN0cmluZyhtLCBpLmxlbmd0aCkgOiAiIiwgYy5mcCA9IHMsIChudC50ZXN0KGkpIHx8IF8pICYmIChjLmUgPSAwKSwgdGhpcy5fcHQgPSBjIH0uY2FsbCh0aGlzLCB0LCBlLCBkLCBpLCBfLCB1IHx8IFUuc3RyaW5nRmlsdGVyLCBoKSkgOiAobCA9IG5ldyBvZSh0aGlzLl9wdCwgdCwgZSwgK2QgfHwgMCwgaSAtIChkIHx8IDApLCAiYm9vbGVhbiIgPT0gdHlwZW9mIGYgPyB0ZSA6IEp0LCAwLCBfKSwgaCAmJiAobC5mcCA9IGgpLCBzICYmIGwubW9kaWZpZXIocywgdGhpcywgdCksIHRoaXMuX3B0ID0gbCkgfSwKICAgICAgICBYdCA9IGZ1bmN0aW9uIF9pbml0VHdlZW4oZSwgcikgeyB2YXIgaSwgbiwgYSwgcywgbywgdSwgaCwgbCwgZiwgZCwgcCwgYywgbSwgZyA9IGUudmFycywKICAgICAgICAgICAgICAgIHYgPSBnLmVhc2UsCiAgICAgICAgICAgICAgICB5ID0gZy5zdGFydEF0LAogICAgICAgICAgICAgICAgVCA9IGcuaW1tZWRpYXRlUmVuZGVyLAogICAgICAgICAgICAgICAgYiA9IGcubGF6eSwKICAgICAgICAgICAgICAgIHcgPSBnLm9uVXBkYXRlLAogICAgICAgICAgICAgICAgeCA9IGcub25VcGRhdGVQYXJhbXMsCiAgICAgICAgICAgICAgICBrID0gZy5jYWxsYmFja1Njb3BlLAogICAgICAgICAgICAgICAgTyA9IGcucnVuQmFja3dhcmRzLAogICAgICAgICAgICAgICAgUCA9IGcueW95b0Vhc2UsCiAgICAgICAgICAgICAgICBNID0gZy5rZXlmcmFtZXMsCiAgICAgICAgICAgICAgICBDID0gZy5hdXRvUmV2ZXJ0LAogICAgICAgICAgICAgICAgQSA9IGUuX2R1ciwKICAgICAgICAgICAgICAgIEQgPSBlLl9zdGFydEF0LAogICAgICAgICAgICAgICAgUyA9IGUuX3RhcmdldHMsCiAgICAgICAgICAgICAgICB6ID0gZS5wYXJlbnQsCiAgICAgICAgICAgICAgICBSID0geiAmJiAibmVzdGVkIiA9PT0gei5kYXRhID8gei5wYXJlbnQuX3RhcmdldHMgOiBTLAogICAgICAgICAgICAgICAgRSA9ICJhdXRvIiA9PT0gZS5fb3ZlcndyaXRlICYmICFCLAogICAgICAgICAgICAgICAgRiA9IGUudGltZWxpbmU7IGlmICghRiB8fCBNICYmIHYgfHwgKHYgPSAibm9uZSIpLCBlLl9lYXNlID0gQnQodiwgTC5lYXNlKSwgZS5feUVhc2UgPSBQID8gRnQoQnQoITAgPT09IFAgPyB2IDogUCwgTC5lYXNlKSkgOiAwLCBQICYmIGUuX3lveW8gJiYgIWUuX3JlcGVhdCAmJiAoUCA9IGUuX3lFYXNlLCBlLl95RWFzZSA9IGUuX2Vhc2UsIGUuX2Vhc2UgPSBQKSwgZS5fZnJvbSA9ICFGICYmICEhZy5ydW5CYWNrd2FyZHMsICFGIHx8IE0gJiYgIWcuc3RhZ2dlcikgeyBpZiAoYyA9IChsID0gU1swXSA/IF8oU1swXSkuaGFybmVzcyA6IDApICYmIGdbbC5wcm9wXSwgaSA9IG9hKGcsIHV0KSwgRCAmJiAodGEoRC5yZW5kZXIoLTEsICEwKSksIEQuX2xhenkgPSAwKSwgeSkKICAgICAgICAgICAgICAgICAgICBpZiAodGEoZS5fc3RhcnRBdCA9ICR0LnNldChTLCBrYSh7IGRhdGE6ICJpc1N0YXJ0Iiwgb3ZlcndyaXRlOiAhMSwgcGFyZW50OiB6LCBpbW1lZGlhdGVSZW5kZXI6ICEwLCBsYXp5OiB0KGIpLCBzdGFydEF0OiBudWxsLCBkZWxheTogMCwgb25VcGRhdGU6IHcsIG9uVXBkYXRlUGFyYW1zOiB4LCBjYWxsYmFja1Njb3BlOiBrLCBzdGFnZ2VyOiAwIH0sIHkpKSksIHIgPCAwICYmICFUICYmICFDICYmIGUuX3N0YXJ0QXQucmVuZGVyKC0xLCAhMCksIFQpIHsgaWYgKDAgPCByICYmICFDICYmIChlLl9zdGFydEF0ID0gMCksIEEgJiYgciA8PSAwKSByZXR1cm4gdm9pZChyICYmIChlLl96VGltZSA9IHIpKSB9IGVsc2UgITEgPT09IEMgJiYgKGUuX3N0YXJ0QXQgPSAwKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKE8gJiYgQSkKICAgICAgICAgICAgICAgICAgICBpZiAoRCkgQyB8fCAoZS5fc3RhcnRBdCA9IDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIgJiYgKFQgPSAhMSksIGEgPSBrYSh7IG92ZXJ3cml0ZTogITEsIGRhdGE6ICJpc0Zyb21TdGFydCIsIGxhenk6IFQgJiYgdChiKSwgaW1tZWRpYXRlUmVuZGVyOiBULCBzdGFnZ2VyOiAwLCBwYXJlbnQ6IHogfSwgaSksIGMgJiYgKGFbbC5wcm9wXSA9IGMpLCB0YShlLl9zdGFydEF0ID0gJHQuc2V0KFMsIGEpKSwgciA8IDAgJiYgZS5fc3RhcnRBdC5yZW5kZXIoLTEsICEwKSwgZS5felRpbWUgPSByLCBUKSB7IGlmICghcikgcmV0dXJuIH0gZWxzZSBfaW5pdFR3ZWVuKGUuX3N0YXJ0QXQsIFYpOyBmb3IgKGUuX3B0ID0gZS5fcHRDYWNoZSA9IDAsIGIgPSBBICYmIHQoYikgfHwgYiAmJiAhQSwgbiA9IDA7IG4gPCBTLmxlbmd0aDsgbisrKSB7IGlmIChoID0gKG8gPSBTW25dKS5fZ3NhcCB8fCAkKFMpW25dLl9nc2FwLCBlLl9wdExvb2t1cFtuXSA9IGQgPSB7fSwgbHRbaC5pZF0gJiYgaHQubGVuZ3RoICYmIGdhKCksIHAgPSBSID09PSBTID8gbiA6IFIuaW5kZXhPZihvKSwgbCAmJiAhMSAhPT0gKGYgPSBuZXcgbCkuaW5pdChvLCBjIHx8IGksIGUsIHAsIFIpICYmIChlLl9wdCA9IHMgPSBuZXcgb2UoZS5fcHQsIG8sIGYubmFtZSwgMCwgMSwgZi5yZW5kZXIsIGYsIDAsIGYucHJpb3JpdHkpLCBmLl9wcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgZFt0XSA9IHMgfSksIGYucHJpb3JpdHkgJiYgKHUgPSAxKSksICFsIHx8IGMpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSBpbiBpKSBmdFthXSAmJiAoZiA9IFViKGEsIGksIGUsIHAsIG8sIFIpKSA/IGYucHJpb3JpdHkgJiYgKHUgPSAxKSA6IGRbYV0gPSBzID0gVnQuY2FsbChlLCBvLCBhLCAiZ2V0IiwgaVthXSwgcCwgUiwgMCwgZy5zdHJpbmdGaWx0ZXIpOwogICAgICAgICAgICAgICAgICAgIGUuX29wICYmIGUuX29wW25dICYmIGUua2lsbChvLCBlLl9vcFtuXSksIEUgJiYgZS5fcHQgJiYgKFl0ID0gZSwgSS5raWxsVHdlZW5zT2YobywgZCwgZS5nbG9iYWxUaW1lKHIpKSwgbSA9ICFlLnBhcmVudCwgWXQgPSAwKSwgZS5fcHQgJiYgYiAmJiAobHRbaC5pZF0gPSAxKSB9CiAgICAgICAgICAgICAgICB1ICYmIHNlKGUpLCBlLl9vbkluaXQgJiYgZS5fb25Jbml0KGUpIH0KICAgICAgICAgICAgZS5fb25VcGRhdGUgPSB3LCBlLl9pbml0dGVkID0gKCFlLl9vcCB8fCBlLl9wdCkgJiYgIW0sIE0gJiYgciA8PSAwICYmIEYucmVuZGVyKFksICEwLCAhMCkgfSwKICAgICAgICBRdCA9IGZ1bmN0aW9uIF9wYXJzZUZ1bmNPclN0cmluZyh0LCBlLCByLCBpLCBuKSB7IHJldHVybiBwKHQpID8gdC5jYWxsKGUsIHIsIGksIG4pIDogbyh0KSAmJiB+dC5pbmRleE9mKCJyYW5kb20oIikgPyBoYih0KSA6IHQgfSwKICAgICAgICBqdCA9IGN0ICsgInJlcGVhdCxyZXBlYXREZWxheSx5b3lvLHJlcGVhdFJlZnJlc2gseW95b0Vhc2UsYXV0b1JldmVydCIsCiAgICAgICAgS3QgPSB7fTsKICAgIGJhKGp0ICsgIixpZCxzdGFnZ2VyLGRlbGF5LGR1cmF0aW9uLHBhdXNlZCxzY3JvbGxUcmlnZ2VyIiwgZnVuY3Rpb24odCkgeyByZXR1cm4gS3RbdF0gPSAxIH0pOyB2YXIgJHQgPSBmdW5jdGlvbihSKSB7CiAgICAgICAgZnVuY3Rpb24gVHdlZW4oZSwgciwgaSwgbikgeyB2YXIgYTsgIm51bWJlciIgPT0gdHlwZW9mIHIgJiYgKGkuZHVyYXRpb24gPSByLCByID0gaSwgaSA9IG51bGwpOyB2YXIgbywgdSwgaCwgbCwgZiwgZCwgXywgcCwgYyA9IChhID0gUi5jYWxsKHRoaXMsIG4gPyByIDogcGEocikpIHx8IHRoaXMpLnZhcnMsCiAgICAgICAgICAgICAgICBtID0gYy5kdXJhdGlvbiwKICAgICAgICAgICAgICAgIGcgPSBjLmRlbGF5LAogICAgICAgICAgICAgICAgeSA9IGMuaW1tZWRpYXRlUmVuZGVyLAogICAgICAgICAgICAgICAgVCA9IGMuc3RhZ2dlciwKICAgICAgICAgICAgICAgIGIgPSBjLm92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgIHcgPSBjLmtleWZyYW1lcywKICAgICAgICAgICAgICAgIHggPSBjLmRlZmF1bHRzLAogICAgICAgICAgICAgICAgayA9IGMuc2Nyb2xsVHJpZ2dlciwKICAgICAgICAgICAgICAgIFAgPSBjLnlveW9FYXNlLAogICAgICAgICAgICAgICAgTSA9IHIucGFyZW50IHx8IEksCiAgICAgICAgICAgICAgICBDID0gKEooZSkgfHwgSChlKSA/IHEoZVswXSkgOiAibGVuZ3RoIiBpbiByKSA/IFtlXSA6IHh0KGUpOyBpZiAoYS5fdGFyZ2V0cyA9IEMubGVuZ3RoID8gJChDKSA6IE8oIkdTQVAgdGFyZ2V0ICIgKyBlICsgIiBub3QgZm91bmQuIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbSIsICFVLm51bGxUYXJnZXRXYXJuKSB8fCBbXSwgYS5fcHRMb29rdXAgPSBbXSwgYS5fb3ZlcndyaXRlID0gYiwgdyB8fCBUIHx8IHYobSkgfHwgdihnKSkgeyBpZiAociA9IGEudmFycywgKG8gPSBhLnRpbWVsaW5lID0gbmV3IFV0KHsgZGF0YTogIm5lc3RlZCIsIGRlZmF1bHRzOiB4IHx8IHt9IH0pKS5raWxsKCksIG8ucGFyZW50ID0gby5fZHAgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGEpLCBvLl9zdGFydCA9IDAsIFQgfHwgdihtKSB8fCB2KGcpKSB7IGlmIChsID0gQy5sZW5ndGgsIF8gPSBUICYmIFphKFQpLCBzKFQpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYgaW4gVCkgfmp0LmluZGV4T2YoZikgJiYgKChwID0gcCB8fCB7fSlbZl0gPSBUW2ZdKTsgZm9yICh1ID0gMDsgdSA8IGw7IHUrKykoaCA9IG9hKHIsIEt0KSkuc3RhZ2dlciA9IDAsIFAgJiYgKGgueW95b0Vhc2UgPSBQKSwgcCAmJiBtdChoLCBwKSwgZCA9IENbdV0sIGguZHVyYXRpb24gPSArUXQobSwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChhKSwgdSwgZCwgQyksIGguZGVsYXkgPSAoK1F0KGcsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoYSksIHUsIGQsIEMpIHx8IDApIC0gYS5fZGVsYXksICFUICYmIDEgPT09IGwgJiYgaC5kZWxheSAmJiAoYS5fZGVsYXkgPSBnID0gaC5kZWxheSwgYS5fc3RhcnQgKz0gZywgaC5kZWxheSA9IDApLCBvLnRvKGQsIGgsIF8gPyBfKHUsIGQsIEMpIDogMCksIG8uX2Vhc2UgPSB6dC5ub25lOwogICAgICAgICAgICAgICAgICAgIG8uZHVyYXRpb24oKSA/IG0gPSBnID0gMCA6IGEudGltZWxpbmUgPSAwIH0gZWxzZSBpZiAodykgeyBwYShrYShvLnZhcnMuZGVmYXVsdHMsIHsgZWFzZTogIm5vbmUiIH0pKSwgby5fZWFzZSA9IEJ0KHcuZWFzZSB8fCByLmVhc2UgfHwgIm5vbmUiKTsgdmFyIEEsIEQsIFMsIHogPSAwOyBpZiAoSih3KSkgdy5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIG8udG8oQywgdCwgIj4iKSB9KTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsgZm9yIChmIGluIGggPSB7fSwgdykgImVhc2UiID09PSBmIHx8ICJlYXNlRWFjaCIgPT09IGYgfHwgJGIoZiwgd1tmXSwgaCwgdy5lYXNlRWFjaCk7IGZvciAoZiBpbiBoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChBID0gaFtmXS5zb3J0KGZ1bmN0aW9uKHQsIGUpIHsgcmV0dXJuIHQudCAtIGUudCB9KSwgdSA9IHogPSAwOyB1IDwgQS5sZW5ndGg7IHUrKykoUyA9IHsgZWFzZTogKEQgPSBBW3VdKS5lLCBkdXJhdGlvbjogKEQudCAtICh1ID8gQVt1IC0gMV0udCA6IDApKSAvIDEwMCAqIG0gfSlbZl0gPSBELnYsIG8udG8oQywgUywgeiksIHogKz0gUy5kdXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgby5kdXJhdGlvbigpIDwgbSAmJiBvLnRvKHt9LCB7IGR1cmF0aW9uOiBtIC0gby5kdXJhdGlvbigpIH0pIH0gfQogICAgICAgICAgICAgICAgbSB8fCBhLmR1cmF0aW9uKG0gPSBvLmR1cmF0aW9uKCkpIH0gZWxzZSBhLnRpbWVsaW5lID0gMDsgcmV0dXJuICEwICE9PSBiIHx8IEIgfHwgKFl0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChhKSwgSS5raWxsVHdlZW5zT2YoQyksIFl0ID0gMCksIERhKE0sIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoYSksIGkpLCByLnJldmVyc2VkICYmIGEucmV2ZXJzZSgpLCByLnBhdXNlZCAmJiBhLnBhdXNlZCghMCksICh5IHx8ICFtICYmICF3ICYmIGEuX3N0YXJ0ID09PSBkYShNLl90aW1lKSAmJiB0KHkpICYmIGZ1bmN0aW9uIF9oYXNOb1BhdXNlZEFuY2VzdG9ycyh0KSB7IHJldHVybiAhdCB8fCB0Ll90cyAmJiBfaGFzTm9QYXVzZWRBbmNlc3RvcnModC5wYXJlbnQpIH0oX2Fzc2VydFRoaXNJbml0aWFsaXplZChhKSkgJiYgIm5lc3RlZCIgIT09IE0uZGF0YSkgJiYgKGEuX3RUaW1lID0gLVYsIGEucmVuZGVyKE1hdGgubWF4KDAsIC1nKSkpLCBrICYmIEVhKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoYSksIGspLCBhIH0KICAgICAgICBfaW5oZXJpdHNMb29zZShUd2VlbiwgUik7IHZhciBlID0gVHdlZW4ucHJvdG90eXBlOyByZXR1cm4gZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIodCwgZSwgcikgeyB2YXIgaSwgbiwgYSwgcywgbywgdSwgaCwgbCwgZiwgZCA9IHRoaXMuX3RpbWUsCiAgICAgICAgICAgICAgICBfID0gdGhpcy5fdER1ciwKICAgICAgICAgICAgICAgIHAgPSB0aGlzLl9kdXIsCiAgICAgICAgICAgICAgICBjID0gXyAtIFYgPCB0ICYmIDAgPD0gdCA/IF8gOiB0IDwgViA/IDAgOiB0OyBpZiAocCkgeyBpZiAoYyAhPT0gdGhpcy5fdFRpbWUgfHwgIXQgfHwgciB8fCAhdGhpcy5faW5pdHRlZCAmJiB0aGlzLl90VGltZSB8fCB0aGlzLl9zdGFydEF0ICYmIHRoaXMuX3pUaW1lIDwgMCAhPSB0IDwgMCkgeyBpZiAoaSA9IGMsIGwgPSB0aGlzLnRpbWVsaW5lLCB0aGlzLl9yZXBlYXQpIHsgaWYgKHMgPSBwICsgdGhpcy5fckRlbGF5LCB0aGlzLl9yZXBlYXQgPCAtMSAmJiB0IDwgMCkgcmV0dXJuIHRoaXMudG90YWxUaW1lKDEwMCAqIHMgKyB0LCBlLCByKTsgaWYgKGkgPSBkYShjICUgcyksIGMgPT09IF8gPyAoYSA9IHRoaXMuX3JlcGVhdCwgaSA9IHApIDogKChhID0gfn4oYyAvIHMpKSAmJiBhID09PSBjIC8gcyAmJiAoaSA9IHAsIGEtLSksIHAgPCBpICYmIChpID0gcCkpLCAodSA9IHRoaXMuX3lveW8gJiYgMSAmIGEpICYmIChmID0gdGhpcy5feUVhc2UsIGkgPSBwIC0gaSksIG8gPSBndCh0aGlzLl90VGltZSwgcyksIGkgPT09IGQgJiYgIXIgJiYgdGhpcy5faW5pdHRlZCkgcmV0dXJuIHRoaXMuX3RUaW1lID0gYywgdGhpczsKICAgICAgICAgICAgICAgICAgICAgICAgYSAhPT0gbyAmJiAobCAmJiB0aGlzLl95RWFzZSAmJiBJYihsLCB1KSwgIXRoaXMudmFycy5yZXBlYXRSZWZyZXNoIHx8IHUgfHwgdGhpcy5fbG9jayB8fCAodGhpcy5fbG9jayA9IHIgPSAxLCB0aGlzLnJlbmRlcihkYShzICogYSksICEwKS5pbnZhbGlkYXRlKCkuX2xvY2sgPSAwKSkgfSBpZiAoIXRoaXMuX2luaXR0ZWQpIHsgaWYgKEZhKHRoaXMsIHQgPCAwID8gdCA6IGksIHIsIGUpKSByZXR1cm4gdGhpcy5fdFRpbWUgPSAwLCB0aGlzOyBpZiAoZCAhPT0gdGhpcy5fdGltZSkgcmV0dXJuIHRoaXM7IGlmIChwICE9PSB0aGlzLl9kdXIpIHJldHVybiB0aGlzLnJlbmRlcih0LCBlLCByKSB9IGlmICh0aGlzLl90VGltZSA9IGMsIHRoaXMuX3RpbWUgPSBpLCAhdGhpcy5fYWN0ICYmIHRoaXMuX3RzICYmICh0aGlzLl9hY3QgPSAxLCB0aGlzLl9sYXp5ID0gMCksIHRoaXMucmF0aW8gPSBoID0gKGYgfHwgdGhpcy5fZWFzZSkoaSAvIHApLCB0aGlzLl9mcm9tICYmICh0aGlzLnJhdGlvID0gaCA9IDEgLSBoKSwgaSAmJiAhZCAmJiAhZSAmJiAoT3QodGhpcywgIm9uU3RhcnQiKSwgdGhpcy5fdFRpbWUgIT09IGMpKSByZXR1cm4gdGhpczsgZm9yIChuID0gdGhpcy5fcHQ7IG47KSBuLnIoaCwgbi5kKSwgbiA9IG4uX25leHQ7CiAgICAgICAgICAgICAgICAgICAgbCAmJiBsLnJlbmRlcih0IDwgMCA/IHQgOiAhaSAmJiB1ID8gLVYgOiBsLl9kdXIgKiBsLl9lYXNlKGkgLyB0aGlzLl9kdXIpLCBlLCByKSB8fCB0aGlzLl9zdGFydEF0ICYmICh0aGlzLl96VGltZSA9IHQpLCB0aGlzLl9vblVwZGF0ZSAmJiAhZSAmJiAodCA8IDAgJiYgdGhpcy5fc3RhcnRBdCAmJiB0aGlzLl9zdGFydEF0LnJlbmRlcih0LCAhMCwgciksIE90KHRoaXMsICJvblVwZGF0ZSIpKSwgdGhpcy5fcmVwZWF0ICYmIGEgIT09IG8gJiYgdGhpcy52YXJzLm9uUmVwZWF0ICYmICFlICYmIHRoaXMucGFyZW50ICYmIE90KHRoaXMsICJvblJlcGVhdCIpLCBjICE9PSB0aGlzLl90RHVyICYmIGMgfHwgdGhpcy5fdFRpbWUgIT09IGMgfHwgKHQgPCAwICYmIHRoaXMuX3N0YXJ0QXQgJiYgIXRoaXMuX29uVXBkYXRlICYmIHRoaXMuX3N0YXJ0QXQucmVuZGVyKHQsICEwLCAhMCksICF0ICYmIHAgfHwgIShjID09PSB0aGlzLl90RHVyICYmIDAgPCB0aGlzLl90cyB8fCAhYyAmJiB0aGlzLl90cyA8IDApIHx8IHRhKHRoaXMsIDEpLCBlIHx8IHQgPCAwICYmICFkIHx8ICFjICYmICFkIHx8IChPdCh0aGlzLCBjID09PSBfID8gIm9uQ29tcGxldGUiIDogIm9uUmV2ZXJzZUNvbXBsZXRlIiwgITApLCAhdGhpcy5fcHJvbSB8fCBjIDwgXyAmJiAwIDwgdGhpcy50aW1lU2NhbGUoKSB8fCB0aGlzLl9wcm9tKCkpKSB9IH0gZWxzZSAhIGZ1bmN0aW9uIF9yZW5kZXJaZXJvRHVyYXRpb25Ud2Vlbih0LCBlLCByLCBpKSB7IHZhciBuLCBhLCBzLCBvID0gdC5yYXRpbywKICAgICAgICAgICAgICAgICAgICB1ID0gZSA8IDAgfHwgIWUgJiYgKCF0Ll9zdGFydCAmJiBmdW5jdGlvbiBfcGFyZW50UGxheWhlYWRJc0JlZm9yZVN0YXJ0KHQpIHsgdmFyIGUgPSB0LnBhcmVudDsgcmV0dXJuIGUgJiYgZS5fdHMgJiYgZS5faW5pdHRlZCAmJiAhZS5fbG9jayAmJiAoZS5yYXdUaW1lKCkgPCAwIHx8IF9wYXJlbnRQbGF5aGVhZElzQmVmb3JlU3RhcnQoZSkpIH0odCkgJiYgKHQuX2luaXR0ZWQgfHwgIXZ0KHQpKSB8fCAodC5fdHMgPCAwIHx8IHQuX2RwLl90cyA8IDApICYmICF2dCh0KSkgPyAwIDogMSwKICAgICAgICAgICAgICAgICAgICBoID0gdC5fckRlbGF5LAogICAgICAgICAgICAgICAgICAgIGwgPSAwOyBpZiAoaCAmJiB0Ll9yZXBlYXQgJiYgKGwgPSBidCgwLCB0Ll90RHVyLCBlKSwgYSA9IGd0KGwsIGgpLCB0Ll95b3lvICYmIDEgJiBhICYmICh1ID0gMSAtIHUpLCBhICE9PSBndCh0Ll90VGltZSwgaCkgJiYgKG8gPSAxIC0gdSwgdC52YXJzLnJlcGVhdFJlZnJlc2ggJiYgdC5faW5pdHRlZCAmJiB0LmludmFsaWRhdGUoKSkpLCB1ICE9PSBvIHx8IGkgfHwgdC5felRpbWUgPT09IFYgfHwgIWUgJiYgdC5felRpbWUpIHsgaWYgKCF0Ll9pbml0dGVkICYmIEZhKHQsIGUsIGksIHIpKSByZXR1cm47IGZvciAocyA9IHQuX3pUaW1lLCB0Ll96VGltZSA9IGUgfHwgKHIgPyBWIDogMCksIHIgPSByIHx8IGUgJiYgIXMsIHQucmF0aW8gPSB1LCB0Ll9mcm9tICYmICh1ID0gMSAtIHUpLCB0Ll90aW1lID0gMCwgdC5fdFRpbWUgPSBsLCBuID0gdC5fcHQ7IG47KSBuLnIodSwgbi5kKSwgbiA9IG4uX25leHQ7CiAgICAgICAgICAgICAgICAgICAgdC5fc3RhcnRBdCAmJiBlIDwgMCAmJiB0Ll9zdGFydEF0LnJlbmRlcihlLCAhMCwgITApLCB0Ll9vblVwZGF0ZSAmJiAhciAmJiBPdCh0LCAib25VcGRhdGUiKSwgbCAmJiB0Ll9yZXBlYXQgJiYgIXIgJiYgdC5wYXJlbnQgJiYgT3QodCwgIm9uUmVwZWF0IiksIChlID49IHQuX3REdXIgfHwgZSA8IDApICYmIHQucmF0aW8gPT09IHUgJiYgKHUgJiYgdGEodCwgMSksIHIgfHwgKE90KHQsIHUgPyAib25Db21wbGV0ZSIgOiAib25SZXZlcnNlQ29tcGxldGUiLCAhMCksIHQuX3Byb20gJiYgdC5fcHJvbSgpKSkgfSBlbHNlIHQuX3pUaW1lIHx8ICh0Ll96VGltZSA9IGUpIH0odGhpcywgdCwgZSwgcik7IHJldHVybiB0aGlzIH0sIGUudGFyZ2V0cyA9IGZ1bmN0aW9uIHRhcmdldHMoKSB7IHJldHVybiB0aGlzLl90YXJnZXRzIH0sIGUuaW52YWxpZGF0ZSA9IGZ1bmN0aW9uIGludmFsaWRhdGUoKSB7IHJldHVybiB0aGlzLl9wdCA9IHRoaXMuX29wID0gdGhpcy5fc3RhcnRBdCA9IHRoaXMuX29uVXBkYXRlID0gdGhpcy5fbGF6eSA9IHRoaXMucmF0aW8gPSAwLCB0aGlzLl9wdExvb2t1cCA9IFtdLCB0aGlzLnRpbWVsaW5lICYmIHRoaXMudGltZWxpbmUuaW52YWxpZGF0ZSgpLCBSLnByb3RvdHlwZS5pbnZhbGlkYXRlLmNhbGwodGhpcykgfSwgZS5yZXNldFRvID0gZnVuY3Rpb24gcmVzZXRUbyh0LCBlLCByLCBpKSB7IGMgfHwgRHQud2FrZSgpLCB0aGlzLl90cyB8fCB0aGlzLnBsYXkoKTsgdmFyIG4sIGEgPSBNYXRoLm1pbih0aGlzLl9kdXIsICh0aGlzLl9kcC5fdGltZSAtIHRoaXMuX3N0YXJ0KSAqIHRoaXMuX3RzKTsgcmV0dXJuIHRoaXMuX2luaXR0ZWQgfHwgWHQodGhpcywgYSksIG4gPSB0aGlzLl9lYXNlKGEgLyB0aGlzLl9kdXIpLAogICAgICAgICAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZVByb3BUd2VlbnModCwgZSwgciwgaSwgbiwgYSwgcykgeyB2YXIgbywgdSwgaCwgbCA9ICh0Ll9wdCAmJiB0Ll9wdENhY2hlIHx8ICh0Ll9wdENhY2hlID0ge30pKVtlXTsgaWYgKCFsKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGwgPSB0Ll9wdENhY2hlW2VdID0gW10sIHUgPSB0Ll9wdExvb2t1cCwgaCA9IHQuX3RhcmdldHMubGVuZ3RoOyBoLS07KSB7IGlmICgobyA9IHVbaF1bZV0pICYmIG8uZCAmJiBvLmQuX3B0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IG8uZC5fcHQ7IG8gJiYgby5wICE9PSBlOykgbyA9IG8uX25leHQ7IGlmICghbykgcmV0dXJuIHF0ID0gMSwgdC52YXJzW2VdID0gIis9MCIsIFh0KHQsIHMpLCBxdCA9IDAsIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnB1c2gobykgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaCA9IGwubGVuZ3RoOyBoLS07KShvID0gbFtoXSkucyA9ICFpICYmIDAgIT09IGkgfHwgbiA/IG8ucyArIChpIHx8IDApICsgYSAqIG8uYyA6IGksIG8uYyA9IHIgLSBvLnMsIG8uZSAmJiAoby5lID0gY2EocikgKyBSYShvLmUpKSwgby5iICYmIChvLmIgPSBvLnMgKyBSYShvLmIpKSB9KHRoaXMsIHQsIGUsIHIsIGksIG4sIGEpID8gdGhpcy5yZXNldFRvKHQsIGUsIHIsIGkpIDogKEJhKHRoaXMsIDApLCB0aGlzLnBhcmVudCB8fCByYSh0aGlzLl9kcCwgdGhpcywgIl9maXJzdCIsICJfbGFzdCIsIHRoaXMuX2RwLl9zb3J0ID8gIl9zdGFydCIgOiAwKSwgdGhpcy5yZW5kZXIoMCkpIH0sIGUua2lsbCA9IGZ1bmN0aW9uIGtpbGwodCwgZSkgeyBpZiAodm9pZCAwID09PSBlICYmIChlID0gImFsbCIpLCAhKHQgfHwgZSAmJiAiYWxsIiAhPT0gZSkpIHJldHVybiB0aGlzLl9sYXp5ID0gdGhpcy5fcHQgPSAwLCB0aGlzLnBhcmVudCA/IG1iKHRoaXMpIDogdGhpczsgaWYgKHRoaXMudGltZWxpbmUpIHsgdmFyIHIgPSB0aGlzLnRpbWVsaW5lLnRvdGFsRHVyYXRpb24oKTsgcmV0dXJuIHRoaXMudGltZWxpbmUua2lsbFR3ZWVuc09mKHQsIGUsIFl0ICYmICEwICE9PSBZdC52YXJzLm92ZXJ3cml0ZSkuX2ZpcnN0IHx8IG1iKHRoaXMpLCB0aGlzLnBhcmVudCAmJiByICE9PSB0aGlzLnRpbWVsaW5lLnRvdGFsRHVyYXRpb24oKSAmJiBLYSh0aGlzLCB0aGlzLl9kdXIgKiB0aGlzLnRpbWVsaW5lLl90RHVyIC8gciwgMCwgMSksIHRoaXMgfSB2YXIgaSwgbiwgYSwgcywgdSwgaCwgbCwgZiA9IHRoaXMuX3RhcmdldHMsCiAgICAgICAgICAgICAgICBkID0gdCA/IHh0KHQpIDogZiwKICAgICAgICAgICAgICAgIHAgPSB0aGlzLl9wdExvb2t1cCwKICAgICAgICAgICAgICAgIGMgPSB0aGlzLl9wdDsgaWYgKCghZSB8fCAiYWxsIiA9PT0gZSkgJiYgZnVuY3Rpb24gX2FycmF5c01hdGNoKHQsIGUpIHsgZm9yICh2YXIgciA9IHQubGVuZ3RoLCBpID0gciA9PT0gZS5sZW5ndGg7IGkgJiYgci0tICYmIHRbcl0gPT09IGVbcl07KTsgcmV0dXJuIHIgPCAwIH0oZiwgZCkpIHJldHVybiAiYWxsIiA9PT0gZSAmJiAodGhpcy5fcHQgPSAwKSwgbWIodGhpcyk7IGZvciAoaSA9IHRoaXMuX29wID0gdGhpcy5fb3AgfHwgW10sICJhbGwiICE9PSBlICYmIChvKGUpICYmICh1ID0ge30sIGJhKGUsIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHVbdF0gPSAxIH0pLCBlID0gdSksIGUgPSBmdW5jdGlvbiBfYWRkQWxpYXNlc1RvVmFycyh0LCBlKSB7IHZhciByLCBpLCBuLCBhLCBzID0gdFswXSA/IF8odFswXSkuaGFybmVzcyA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBzICYmIHMuYWxpYXNlczsgaWYgKCFvKSByZXR1cm4gZTsgZm9yIChpIGluIHIgPSBtdCh7fSwgZSksIG8pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIGluIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSAoYSA9IG9baV0uc3BsaXQoIiwiKSkubGVuZ3RoOyBuLS07KSByW2Fbbl1dID0gcltpXTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gciB9KGYsIGUpKSwgbCA9IGYubGVuZ3RoOyBsLS07KQogICAgICAgICAgICAgICAgaWYgKH5kLmluZGV4T2YoZltsXSkpCiAgICAgICAgICAgICAgICAgICAgZm9yICh1IGluIG4gPSBwW2xdLCAiYWxsIiA9PT0gZSA/IChpW2xdID0gZSwgcyA9IG4sIGEgPSB7fSkgOiAoYSA9IGlbbF0gPSBpW2xdIHx8IHt9LCBzID0gZSksIHMpKGggPSBuICYmIG5bdV0pICYmICgia2lsbCIgaW4gaC5kICYmICEwICE9PSBoLmQua2lsbCh1KSB8fCBzYSh0aGlzLCBoLCAiX3B0IiksIGRlbGV0ZSBuW3VdKSwgImFsbCIgIT09IGEgJiYgKGFbdV0gPSAxKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luaXR0ZWQgJiYgIXRoaXMuX3B0ICYmIGMgJiYgbWIodGhpcyksIHRoaXMgfSwgVHdlZW4udG8gPSBmdW5jdGlvbiB0byh0LCBlLCByKSB7IHJldHVybiBuZXcgVHdlZW4odCwgZSwgcikgfSwgVHdlZW4uZnJvbSA9IGZ1bmN0aW9uIGZyb20odCwgZSkgeyByZXR1cm4gT2EoMSwgYXJndW1lbnRzKSB9LCBUd2Vlbi5kZWxheWVkQ2FsbCA9IGZ1bmN0aW9uIGRlbGF5ZWRDYWxsKHQsIGUsIHIsIGkpIHsgcmV0dXJuIG5ldyBUd2VlbihlLCAwLCB7IGltbWVkaWF0ZVJlbmRlcjogITEsIGxhenk6ICExLCBvdmVyd3JpdGU6ICExLCBkZWxheTogdCwgb25Db21wbGV0ZTogZSwgb25SZXZlcnNlQ29tcGxldGU6IGUsIG9uQ29tcGxldGVQYXJhbXM6IHIsIG9uUmV2ZXJzZUNvbXBsZXRlUGFyYW1zOiByLCBjYWxsYmFja1Njb3BlOiBpIH0pIH0sIFR3ZWVuLmZyb21UbyA9IGZ1bmN0aW9uIGZyb21Ubyh0LCBlLCByKSB7IHJldHVybiBPYSgyLCBhcmd1bWVudHMpIH0sIFR3ZWVuLnNldCA9IGZ1bmN0aW9uIHNldCh0LCBlKSB7IHJldHVybiBlLmR1cmF0aW9uID0gMCwgZS5yZXBlYXREZWxheSB8fCAoZS5yZXBlYXQgPSAwKSwgbmV3IFR3ZWVuKHQsIGUpIH0sIFR3ZWVuLmtpbGxUd2VlbnNPZiA9IGZ1bmN0aW9uIGtpbGxUd2VlbnNPZih0LCBlLCByKSB7IHJldHVybiBJLmtpbGxUd2VlbnNPZih0LCBlLCByKSB9LCBUd2VlbiB9KE50KTsKICAgIGthKCR0LnByb3RvdHlwZSwgeyBfdGFyZ2V0czogW10sIF9sYXp5OiAwLCBfc3RhcnRBdDogMCwgX29wOiAwLCBfb25Jbml0OiAwIH0pLCBiYSgic3RhZ2dlclRvLHN0YWdnZXJGcm9tLHN0YWdnZXJGcm9tVG8iLCBmdW5jdGlvbihyKSB7ICR0W3JdID0gZnVuY3Rpb24oKSB7IHZhciB0ID0gbmV3IFV0LAogICAgICAgICAgICAgICAgZSA9IHd0LmNhbGwoYXJndW1lbnRzLCAwKTsgcmV0dXJuIGUuc3BsaWNlKCJzdGFnZ2VyRnJvbVRvIiA9PT0gciA/IDUgOiA0LCAwLCAwKSwgdFtyXS5hcHBseSh0LCBlKSB9IH0pOwoKICAgIGZ1bmN0aW9uIGdjKHQsIGUsIHIpIHsgcmV0dXJuIHQuc2V0QXR0cmlidXRlKGUsIHIpIH0KCiAgICBmdW5jdGlvbiBvYyh0LCBlLCByLCBpKSB7IGkubVNldCh0LCBlLCBpLm0uY2FsbChpLnR3ZWVuLCByLCBpLm10KSwgaSkgfSB2YXIgR3QgPSBmdW5jdGlvbiBfc2V0dGVyUGxhaW4odCwgZSwgcikgeyByZXR1cm4gdFtlXSA9IHIgfSwKICAgICAgICBXdCA9IGZ1bmN0aW9uIF9zZXR0ZXJGdW5jKHQsIGUsIHIpIHsgcmV0dXJuIHRbZV0ocikgfSwKICAgICAgICBadCA9IGZ1bmN0aW9uIF9zZXR0ZXJGdW5jV2l0aFBhcmFtKHQsIGUsIHIsIGkpIHsgcmV0dXJuIHRbZV0oaS5mcCwgcikgfSwKICAgICAgICBIdCA9IGZ1bmN0aW9uIF9nZXRTZXR0ZXIodCwgZSkgeyByZXR1cm4gcCh0W2VdKSA/IFd0IDogcih0W2VdKSAmJiB0LnNldEF0dHJpYnV0ZSA/IGdjIDogR3QgfSwKICAgICAgICBKdCA9IGZ1bmN0aW9uIF9yZW5kZXJQbGFpbih0LCBlKSB7IHJldHVybiBlLnNldChlLnQsIGUucCwgTWF0aC5yb3VuZCgxZTYgKiAoZS5zICsgZS5jICogdCkpIC8gMWU2LCBlKSB9LAogICAgICAgIHRlID0gZnVuY3Rpb24gX3JlbmRlckJvb2xlYW4odCwgZSkgeyByZXR1cm4gZS5zZXQoZS50LCBlLnAsICEhKGUucyArIGUuYyAqIHQpLCBlKSB9LAogICAgICAgIGVlID0gZnVuY3Rpb24gX3JlbmRlckNvbXBsZXhTdHJpbmcodCwgZSkgeyB2YXIgciA9IGUuX3B0LAogICAgICAgICAgICAgICAgaSA9ICIiOyBpZiAoIXQgJiYgZS5iKSBpID0gZS5iOwogICAgICAgICAgICBlbHNlIGlmICgxID09PSB0ICYmIGUuZSkgaSA9IGUuZTsKICAgICAgICAgICAgZWxzZSB7IGZvciAoOyByOykgaSA9IHIucCArIChyLm0gPyByLm0oci5zICsgci5jICogdCkgOiBNYXRoLnJvdW5kKDFlNCAqIChyLnMgKyByLmMgKiB0KSkgLyAxZTQpICsgaSwgciA9IHIuX25leHQ7CiAgICAgICAgICAgICAgICBpICs9IGUuYyB9CiAgICAgICAgICAgIGUuc2V0KGUudCwgZS5wLCBpLCBlKSB9LAogICAgICAgIHJlID0gZnVuY3Rpb24gX3JlbmRlclByb3BUd2VlbnModCwgZSkgeyBmb3IgKHZhciByID0gZS5fcHQ7IHI7KSByLnIodCwgci5kKSwgciA9IHIuX25leHQgfSwKICAgICAgICBpZSA9IGZ1bmN0aW9uIF9hZGRQbHVnaW5Nb2RpZmllcih0LCBlLCByLCBpKSB7IGZvciAodmFyIG4sIGEgPSB0aGlzLl9wdDsgYTspIG4gPSBhLl9uZXh0LCBhLnAgPT09IGkgJiYgYS5tb2RpZmllcih0LCBlLCByKSwgYSA9IG4gfSwKICAgICAgICBuZSA9IGZ1bmN0aW9uIF9raWxsUHJvcFR3ZWVuc09mKHQpIHsgZm9yICh2YXIgZSwgciwgaSA9IHRoaXMuX3B0OyBpOykgciA9IGkuX25leHQsIGkucCA9PT0gdCAmJiAhaS5vcCB8fCBpLm9wID09PSB0ID8gc2EodGhpcywgaSwgIl9wdCIpIDogaS5kZXAgfHwgKGUgPSAxKSwgaSA9IHI7IHJldHVybiAhZSB9LAogICAgICAgIHNlID0gZnVuY3Rpb24gX3NvcnRQcm9wVHdlZW5zQnlQcmlvcml0eSh0KSB7IGZvciAodmFyIGUsIHIsIGksIG4sIGEgPSB0Ll9wdDsgYTspIHsgZm9yIChlID0gYS5fbmV4dCwgciA9IGk7IHIgJiYgci5wciA+IGEucHI7KSByID0gci5fbmV4dDsKICAgICAgICAgICAgICAgIChhLl9wcmV2ID0gciA/IHIuX3ByZXYgOiBuKSA/IGEuX3ByZXYuX25leHQgPSBhOiBpID0gYSwgKGEuX25leHQgPSByKSA/IHIuX3ByZXYgPSBhIDogbiA9IGEsIGEgPSBlIH0KICAgICAgICAgICAgdC5fcHQgPSBpIH0sCiAgICAgICAgb2UgPSAoUHJvcFR3ZWVuLnByb3RvdHlwZS5tb2RpZmllciA9IGZ1bmN0aW9uIG1vZGlmaWVyKHQsIGUsIHIpIHsgdGhpcy5tU2V0ID0gdGhpcy5tU2V0IHx8IHRoaXMuc2V0LCB0aGlzLnNldCA9IG9jLCB0aGlzLm0gPSB0LCB0aGlzLm10ID0gciwgdGhpcy50d2VlbiA9IGUgfSwgUHJvcFR3ZWVuKTsKCiAgICBmdW5jdGlvbiBQcm9wVHdlZW4odCwgZSwgciwgaSwgbiwgYSwgcywgbywgdSkgeyB0aGlzLnQgPSBlLCB0aGlzLnMgPSBpLCB0aGlzLmMgPSBuLCB0aGlzLnAgPSByLCB0aGlzLnIgPSBhIHx8IEp0LCB0aGlzLmQgPSBzIHx8IHRoaXMsIHRoaXMuc2V0ID0gbyB8fCBHdCwgdGhpcy5wciA9IHUgfHwgMCwgKHRoaXMuX25leHQgPSB0KSAmJiAodC5fcHJldiA9IHRoaXMpIH0KICAgIGJhKGN0ICsgInBhcmVudCxkdXJhdGlvbixlYXNlLGRlbGF5LG92ZXJ3cml0ZSxydW5CYWNrd2FyZHMsc3RhcnRBdCx5b3lvLGltbWVkaWF0ZVJlbmRlcixyZXBlYXQscmVwZWF0RGVsYXksZGF0YSxwYXVzZWQscmV2ZXJzZWQsbGF6eSxjYWxsYmFja1Njb3BlLHN0cmluZ0ZpbHRlcixpZCx5b3lvRWFzZSxzdGFnZ2VyLGluaGVyaXQscmVwZWF0UmVmcmVzaCxrZXlmcmFtZXMsYXV0b1JldmVydCxzY3JvbGxUcmlnZ2VyIiwgZnVuY3Rpb24odCkgeyByZXR1cm4gdXRbdF0gPSAxIH0pLCBvdC5Ud2Vlbk1heCA9IG90LlR3ZWVuTGl0ZSA9ICR0LCBvdC5UaW1lbGluZUxpdGUgPSBvdC5UaW1lbGluZU1heCA9IFV0LCBJID0gbmV3IFV0KHsgc29ydENoaWxkcmVuOiAhMSwgZGVmYXVsdHM6IEwsIGF1dG9SZW1vdmVDaGlsZHJlbjogITAsIGlkOiAicm9vdCIsIHNtb290aENoaWxkVGltaW5nOiAhMCB9KSwgVS5zdHJpbmdGaWx0ZXIgPSB4YjsgdmFyIHVlID0geyByZWdpc3RlclBsdWdpbjogZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW4oKSB7IGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBlID0gbmV3IEFycmF5KHQpLCByID0gMDsgciA8IHQ7IHIrKykgZVtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgZS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVQbHVnaW4odCkgeyB2YXIgZSA9ICh0ID0gIXQubmFtZSAmJiB0LmRlZmF1bHQgfHwgdCkubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHAodCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlICYmICFyICYmIHQuaW5pdCA/IGZ1bmN0aW9uKCkgeyB0aGlzLl9wcm9wcyA9IFtdIH0gOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0geyBpbml0OiBRLCByZW5kZXI6IHJlLCBhZGQ6IFZ0LCBraWxsOiBuZSwgbW9kaWZpZXI6IGllLCByYXdWYXJzOiAwIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB7IHRhcmdldFRlc3Q6IDAsIGdldDogMCwgZ2V0U2V0dGVyOiBIdCwgYWxpYXNlczoge30sIHJlZ2lzdGVyOiAwIH07IGlmIChTdCgpLCB0ICE9PSBpKSB7IGlmIChmdFtlXSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBrYShpLCBrYShvYSh0LCBuKSwgYSkpLCBtdChpLnByb3RvdHlwZSwgbXQobiwgb2EodCwgYSkpKSwgZnRbaS5wcm9wID0gZV0gPSBpLCB0LnRhcmdldFRlc3QgJiYgKHB0LnB1c2goaSksIHV0W2VdID0gMSksIGUgPSAoImNzcyIgPT09IGUgPyAiQ1NTIiA6IGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlLnN1YnN0cigxKSkgKyAiUGx1Z2luIiB9CiAgICAgICAgICAgICAgICAgICAgUChlLCBpKSwgdC5yZWdpc3RlciAmJiB0LnJlZ2lzdGVyKGhlLCBpLCBvZSkgfSh0KSB9KSB9LCB0aW1lbGluZTogZnVuY3Rpb24gdGltZWxpbmUodCkgeyByZXR1cm4gbmV3IFV0KHQpIH0sIGdldFR3ZWVuc09mOiBmdW5jdGlvbiBnZXRUd2VlbnNPZih0LCBlKSB7IHJldHVybiBJLmdldFR3ZWVuc09mKHQsIGUpIH0sIGdldFByb3BlcnR5OiBmdW5jdGlvbiBnZXRQcm9wZXJ0eShpLCB0LCBlLCByKSB7IG8oaSkgJiYgKGkgPSB4dChpKVswXSk7IHZhciBuID0gXyhpIHx8IHt9KS5nZXQsCiAgICAgICAgICAgICAgICBhID0gZSA/IGphIDogaWE7IHJldHVybiAibmF0aXZlIiA9PT0gZSAmJiAoZSA9ICIiKSwgaSA/IHQgPyBhKChmdFt0XSAmJiBmdFt0XS5nZXQgfHwgbikoaSwgdCwgZSwgcikpIDogZnVuY3Rpb24odCwgZSwgcikgeyByZXR1cm4gYSgoZnRbdF0gJiYgZnRbdF0uZ2V0IHx8IG4pKGksIHQsIGUsIHIpKSB9IDogaSB9LCBxdWlja1NldHRlcjogZnVuY3Rpb24gcXVpY2tTZXR0ZXIociwgZSwgaSkgeyBpZiAoMSA8IChyID0geHQocikpLmxlbmd0aCkgeyB2YXIgbiA9IHIubWFwKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGhlLnF1aWNrU2V0dGVyKHQsIGUsIGkpIH0pLAogICAgICAgICAgICAgICAgICAgIGEgPSBuLmxlbmd0aDsgcmV0dXJuIGZ1bmN0aW9uKHQpIHsgZm9yICh2YXIgZSA9IGE7IGUtLTspIG5bZV0odCkgfSB9CiAgICAgICAgICAgIHIgPSByWzBdIHx8IHt9OyB2YXIgcyA9IGZ0W2VdLAogICAgICAgICAgICAgICAgbyA9IF8ociksCiAgICAgICAgICAgICAgICB1ID0gby5oYXJuZXNzICYmIChvLmhhcm5lc3MuYWxpYXNlcyB8fCB7fSlbZV0gfHwgZSwKICAgICAgICAgICAgICAgIGggPSBzID8gZnVuY3Rpb24odCkgeyB2YXIgZSA9IG5ldyBzOwogICAgICAgICAgICAgICAgICAgIGQuX3B0ID0gMCwgZS5pbml0KHIsIGkgPyB0ICsgaSA6IHQsIGQsIDAsIFtyXSksIGUucmVuZGVyKDEsIGUpLCBkLl9wdCAmJiByZSgxLCBkKSB9IDogby5zZXQociwgdSk7IHJldHVybiBzID8gaCA6IGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGgociwgdSwgaSA/IHQgKyBpIDogdCwgbywgMSkgfSB9LCBxdWlja1RvOiBmdW5jdGlvbiBxdWlja1RvKHQsIGksIGUpIHsKICAgICAgICAgICAgZnVuY3Rpb24gaXcodCwgZSwgcikgeyByZXR1cm4gbi5yZXNldFRvKGksIHQsIGUsIHIpIH0gdmFyIHIsIG4gPSBoZS50byh0LCBtdCgoKHIgPSB7fSlbaV0gPSAiKz0wLjEiLCByLnBhdXNlZCA9ICEwLCByKSwgZSB8fCB7fSkpOyByZXR1cm4gaXcudHdlZW4gPSBuLCBpdyB9LCBpc1R3ZWVuaW5nOiBmdW5jdGlvbiBpc1R3ZWVuaW5nKHQpIHsgcmV0dXJuIDAgPCBJLmdldFR3ZWVuc09mKHQsICEwKS5sZW5ndGggfSwgZGVmYXVsdHM6IGZ1bmN0aW9uIGRlZmF1bHRzKHQpIHsgcmV0dXJuIHQgJiYgdC5lYXNlICYmICh0LmVhc2UgPSBCdCh0LmVhc2UsIEwuZWFzZSkpLCBuYShMLCB0IHx8IHt9KSB9LCBjb25maWc6IGZ1bmN0aW9uIGNvbmZpZyh0KSB7IHJldHVybiBuYShVLCB0IHx8IHt9KSB9LCByZWdpc3RlckVmZmVjdDogZnVuY3Rpb24gcmVnaXN0ZXJFZmZlY3QodCkgeyB2YXIgaSA9IHQubmFtZSwKICAgICAgICAgICAgICAgIG4gPSB0LmVmZmVjdCwKICAgICAgICAgICAgICAgIGUgPSB0LnBsdWdpbnMsCiAgICAgICAgICAgICAgICBhID0gdC5kZWZhdWx0cywKICAgICAgICAgICAgICAgIHIgPSB0LmV4dGVuZFRpbWVsaW5lOwogICAgICAgICAgICAoZSB8fCAiIikuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQgJiYgIWZ0W3RdICYmICFvdFt0XSAmJiBPKGkgKyAiIGVmZmVjdCByZXF1aXJlcyAiICsgdCArICIgcGx1Z2luLiIpIH0pLCBkdFtpXSA9IGZ1bmN0aW9uKHQsIGUsIHIpIHsgcmV0dXJuIG4oeHQodCksIGthKGUgfHwge30sIGEpLCByKSB9LCByICYmIChVdC5wcm90b3R5cGVbaV0gPSBmdW5jdGlvbih0LCBlLCByKSB7IHJldHVybiB0aGlzLmFkZChkdFtpXSh0LCBzKGUpID8gZSA6IChyID0gZSkgJiYge30sIHRoaXMpLCByKSB9KSB9LCByZWdpc3RlckVhc2U6IGZ1bmN0aW9uIHJlZ2lzdGVyRWFzZSh0LCBlKSB7IHp0W3RdID0gQnQoZSkgfSwgcGFyc2VFYXNlOiBmdW5jdGlvbiBwYXJzZUVhc2UodCwgZSkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IEJ0KHQsIGUpIDogenQgfSwgZ2V0QnlJZDogZnVuY3Rpb24gZ2V0QnlJZCh0KSB7IHJldHVybiBJLmdldEJ5SWQodCkgfSwgZXhwb3J0Um9vdDogZnVuY3Rpb24gZXhwb3J0Um9vdChlLCByKSB7IHZvaWQgMCA9PT0gZSAmJiAoZSA9IHt9KTsgdmFyIGksIG4sIGEgPSBuZXcgVXQoZSk7IGZvciAoYS5zbW9vdGhDaGlsZFRpbWluZyA9IHQoZS5zbW9vdGhDaGlsZFRpbWluZyksIEkucmVtb3ZlKGEpLCBhLl9kcCA9IDAsIGEuX3RpbWUgPSBhLl90VGltZSA9IEkuX3RpbWUsIGkgPSBJLl9maXJzdDsgaTspIG4gPSBpLl9uZXh0LCAhciAmJiAhaS5fZHVyICYmIGkgaW5zdGFuY2VvZiAkdCAmJiBpLnZhcnMub25Db21wbGV0ZSA9PT0gaS5fdGFyZ2V0c1swXSB8fCBEYShhLCBpLCBpLl9zdGFydCAtIGkuX2RlbGF5KSwgaSA9IG47IHJldHVybiBEYShJLCBhLCAwKSwgYSB9LCB1dGlsczogeyB3cmFwOiBmdW5jdGlvbiB3cmFwKGUsIHQsIHIpIHsgdmFyIGkgPSB0IC0gZTsgcmV0dXJuIEooZSkgPyBlYihlLCB3cmFwKDAsIGUubGVuZ3RoKSwgdCkgOiBQYShyLCBmdW5jdGlvbih0KSB7IHJldHVybiAoaSArICh0IC0gZSkgJSBpKSAlIGkgKyBlIH0pIH0sIHdyYXBZb3lvOiBmdW5jdGlvbiB3cmFwWW95byhlLCB0LCByKSB7IHZhciBpID0gdCAtIGUsCiAgICAgICAgICAgICAgICAgICAgbiA9IDIgKiBpOyByZXR1cm4gSihlKSA/IGViKGUsIHdyYXBZb3lvKDAsIGUubGVuZ3RoIC0gMSksIHQpIDogUGEociwgZnVuY3Rpb24odCkgeyByZXR1cm4gZSArIChpIDwgKHQgPSAobiArICh0IC0gZSkgJSBuKSAlIG4gfHwgMCkgPyBuIC0gdCA6IHQpIH0pIH0sIGRpc3RyaWJ1dGU6IFphLCByYW5kb206IGFiLCBzbmFwOiBfYSwgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUodCwgZSwgcikgeyByZXR1cm4ga3QodCwgZSwgMCwgMSwgcikgfSwgZ2V0VW5pdDogUmEsIGNsYW1wOiBmdW5jdGlvbiBjbGFtcChlLCByLCB0KSB7IHJldHVybiBQYSh0LCBmdW5jdGlvbih0KSB7IHJldHVybiBidChlLCByLCB0KSB9KSB9LCBzcGxpdENvbG9yOiBzYiwgdG9BcnJheTogeHQsIHNlbGVjdG9yOiBmdW5jdGlvbiBzZWxlY3RvcihyKSB7IHJldHVybiByID0geHQocilbMF0gfHwgTygiSW52YWxpZCBzY29wZSIpIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHQpIHsgdmFyIGUgPSByLmN1cnJlbnQgfHwgci5uYXRpdmVFbGVtZW50IHx8IHI7IHJldHVybiB4dCh0LCBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlIDogZSA9PT0gciA/IE8oIkludmFsaWQgc2NvcGUiKSB8fCBhLmNyZWF0ZUVsZW1lbnQoImRpdiIpIDogcikgfSB9LCBtYXBSYW5nZToga3QsIHBpcGU6IGZ1bmN0aW9uIHBpcGUoKSB7IGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBlID0gbmV3IEFycmF5KHQpLCByID0gMDsgciA8IHQ7IHIrKykgZVtyXSA9IGFyZ3VtZW50c1tyXTsgcmV0dXJuIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHQsIGUpIHsgcmV0dXJuIGUodCkgfSwgdCkgfSB9LCB1bml0aXplOiBmdW5jdGlvbiB1bml0aXplKGUsIHIpIHsgcmV0dXJuIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGUocGFyc2VGbG9hdCh0KSkgKyAociB8fCBSYSh0KSkgfSB9LCBpbnRlcnBvbGF0ZTogZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSwgciwgdCwgaSkgeyB2YXIgbiA9IGlzTmFOKGUgKyByKSA/IDAgOiBmdW5jdGlvbih0KSB7IHJldHVybiAoMSAtIHQpICogZSArIHQgKiByIH07IGlmICghbikgeyB2YXIgYSwgcywgdSwgaCwgbCwgZiA9IG8oZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSB7fTsgaWYgKCEwID09PSB0ICYmIChpID0gMSkgJiYgKHQgPSBudWxsKSwgZikgZSA9IHsgcDogZSB9LCByID0geyBwOiByIH07CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSihlKSAmJiAhSihyKSkgeyBmb3IgKHUgPSBbXSwgaCA9IGUubGVuZ3RoLCBsID0gaCAtIDIsIHMgPSAxOyBzIDwgaDsgcysrKSB1LnB1c2goaW50ZXJwb2xhdGUoZVtzIC0gMV0sIGVbc10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgaC0tLCBuID0gZnVuY3Rpb24gZnVuYyh0KSB7IHQgKj0gaDsgdmFyIGUgPSBNYXRoLm1pbihsLCB+fnQpOyByZXR1cm4gdVtlXSh0IC0gZSkgfSwgdCA9IHIgfSBlbHNlIGkgfHwgKGUgPSBtdChKKGUpID8gW10gOiB7fSwgZSkpOyBpZiAoIXUpIHsgZm9yIChhIGluIHIpIFZ0LmNhbGwoZCwgZSwgYSwgImdldCIsIHJbYV0pOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gZnVuY3Rpb24gZnVuYyh0KSB7IHJldHVybiByZSh0LCBkKSB8fCAoZiA/IGUucCA6IGUpIH0gfSB9IHJldHVybiBQYSh0LCBuKSB9LCBzaHVmZmxlOiBZYSB9LCBpbnN0YWxsOiBNLCBlZmZlY3RzOiBkdCwgdGlja2VyOiBEdCwgdXBkYXRlUm9vdDogVXQudXBkYXRlUm9vdCwgcGx1Z2luczogZnQsIGdsb2JhbFRpbWVsaW5lOiBJLCBjb3JlOiB7IFByb3BUd2Vlbjogb2UsIGdsb2JhbHM6IFAsIFR3ZWVuOiAkdCwgVGltZWxpbmU6IFV0LCBBbmltYXRpb246IE50LCBnZXRDYWNoZTogXywgX3JlbW92ZUxpbmtlZExpc3RJdGVtOiBzYSwgc3VwcHJlc3NPdmVyd3JpdGVzOiBmdW5jdGlvbiBzdXBwcmVzc092ZXJ3cml0ZXModCkgeyByZXR1cm4gQiA9IHQgfSB9IH07CiAgICBiYSgidG8sZnJvbSxmcm9tVG8sZGVsYXllZENhbGwsc2V0LGtpbGxUd2VlbnNPZiIsIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHVlW3RdID0gJHRbdF0gfSksIER0LmFkZChVdC51cGRhdGVSb290KSwgZCA9IHVlLnRvKHt9LCB7IGR1cmF0aW9uOiAwIH0pOwoKICAgIGZ1bmN0aW9uIHNjKHQsIGUpIHsgZm9yICh2YXIgciA9IHQuX3B0OyByICYmIHIucCAhPT0gZSAmJiByLm9wICE9PSBlICYmIHIuZnAgIT09IGU7KSByID0gci5fbmV4dDsgcmV0dXJuIHIgfQoKICAgIGZ1bmN0aW9uIHVjKHQsIG4pIHsgcmV0dXJuIHsgbmFtZTogdCwgcmF3VmFyczogMSwgaW5pdDogZnVuY3Rpb24gaW5pdCh0LCBpLCBlKSB7IGUuX29uSW5pdCA9IGZ1bmN0aW9uKHQpIHsgdmFyIGUsIHI7IGlmIChvKGkpICYmIChlID0ge30sIGJhKGksIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIGVbdF0gPSAxIH0pLCBpID0gZSksIG4pIHsgZm9yIChyIGluIGUgPSB7fSwgaSkgZVtyXSA9IG4oaVtyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlIH0hIGZ1bmN0aW9uIF9hZGRNb2RpZmllcnModCwgZSkgeyB2YXIgciwgaSwgbiwgYSA9IHQuX3RhcmdldHM7IGZvciAociBpbiBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gYS5sZW5ndGg7IGktLTspKG4gPSAobiA9IHQuX3B0TG9va3VwW2ldW3JdKSAmJiBuLmQpICYmIChuLl9wdCAmJiAobiA9IHNjKG4sIHIpKSwgbiAmJiBuLm1vZGlmaWVyICYmIG4ubW9kaWZpZXIoZVtyXSwgdCwgYVtpXSwgcikpIH0odCwgaSkgfSB9IH0gfSB2YXIgaGUgPSB1ZS5yZWdpc3RlclBsdWdpbih7IG5hbWU6ICJhdHRyIiwgaW5pdDogZnVuY3Rpb24gaW5pdCh0LCBlLCByLCBpLCBuKSB7IHZhciBhLCBzOyBmb3IgKGEgaW4gZSkocyA9IHRoaXMuYWRkKHQsICJzZXRBdHRyaWJ1dGUiLCAodC5nZXRBdHRyaWJ1dGUoYSkgfHwgMCkgKyAiIiwgZVthXSwgaSwgbiwgMCwgMCwgYSkpICYmIChzLm9wID0gYSksIHRoaXMuX3Byb3BzLnB1c2goYSkgfSB9LCB7IG5hbWU6ICJlbmRBcnJheSIsIGluaXQ6IGZ1bmN0aW9uIGluaXQodCwgZSkgeyBmb3IgKHZhciByID0gZS5sZW5ndGg7IHItLTspIHRoaXMuYWRkKHQsIHIsIHRbcl0gfHwgMCwgZVtyXSkgfSB9LCB1Yygicm91bmRQcm9wcyIsICRhKSwgdWMoIm1vZGlmaWVycyIpLCB1Yygic25hcCIsIF9hKSkgfHwgdWU7CiAgICAkdC52ZXJzaW9uID0gVXQudmVyc2lvbiA9IGhlLnZlcnNpb24gPSAiMy4xMC40IiwgbCA9IDEsIHUoKSAmJiBTdCgpOwoKICAgIGZ1bmN0aW9uIGRkKHQsIGUpIHsgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCBNYXRoLnJvdW5kKDFlNCAqIChlLnMgKyBlLmMgKiB0KSkgLyAxZTQgKyBlLnUsIGUpIH0KCiAgICBmdW5jdGlvbiBlZCh0LCBlKSB7IHJldHVybiBlLnNldChlLnQsIGUucCwgMSA9PT0gdCA/IGUuZSA6IE1hdGgucm91bmQoMWU0ICogKGUucyArIGUuYyAqIHQpKSAvIDFlNCArIGUudSwgZSkgfQoKICAgIGZ1bmN0aW9uIGZkKHQsIGUpIHsgcmV0dXJuIGUuc2V0KGUudCwgZS5wLCB0ID8gTWF0aC5yb3VuZCgxZTQgKiAoZS5zICsgZS5jICogdCkpIC8gMWU0ICsgZS51IDogZS5iLCBlKSB9CgogICAgZnVuY3Rpb24gZ2QodCwgZSkgeyB2YXIgciA9IGUucyArIGUuYyAqIHQ7CiAgICAgICAgZS5zZXQoZS50LCBlLnAsIH5+KHIgKyAociA8IDAgPyAtLjUgOiAuNSkpICsgZS51LCBlKSB9CgogICAgZnVuY3Rpb24gaGQodCwgZSkgeyByZXR1cm4gZS5zZXQoZS50LCBlLnAsIHQgPyBlLmUgOiBlLmIsIGUpIH0KCiAgICBmdW5jdGlvbiBpZCh0LCBlKSB7IHJldHVybiBlLnNldChlLnQsIGUucCwgMSAhPT0gdCA/IGUuYiA6IGUuZSwgZSkgfQoKICAgIGZ1bmN0aW9uIGpkKHQsIGUsIHIpIHsgcmV0dXJuIHQuc3R5bGVbZV0gPSByIH0KCiAgICBmdW5jdGlvbiBrZCh0LCBlLCByKSB7IHJldHVybiB0LnN0eWxlLnNldFByb3BlcnR5KGUsIHIpIH0KCiAgICBmdW5jdGlvbiBsZCh0LCBlLCByKSB7IHJldHVybiB0Ll9nc2FwW2VdID0gciB9CgogICAgZnVuY3Rpb24gbWQodCwgZSwgcikgeyByZXR1cm4gdC5fZ3NhcC5zY2FsZVggPSB0Ll9nc2FwLnNjYWxlWSA9IHIgfQoKICAgIGZ1bmN0aW9uIG5kKHQsIGUsIHIsIGksIG4pIHsgdmFyIGEgPSB0Ll9nc2FwOwogICAgICAgIGEuc2NhbGVYID0gYS5zY2FsZVkgPSByLCBhLnJlbmRlclRyYW5zZm9ybShuLCBhKSB9CgogICAgZnVuY3Rpb24gb2QodCwgZSwgciwgaSwgbikgeyB2YXIgYSA9IHQuX2dzYXA7CiAgICAgICAgYVtlXSA9IHIsIGEucmVuZGVyVHJhbnNmb3JtKG4sIGEpIH0KCiAgICBmdW5jdGlvbiBzZCh0LCBlKSB7IHZhciByID0gZmUuY3JlYXRlRWxlbWVudE5TID8gZmUuY3JlYXRlRWxlbWVudE5TKChlIHx8ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIikucmVwbGFjZSgvXmh0dHBzLywgImh0dHAiKSwgdCkgOiBmZS5jcmVhdGVFbGVtZW50KHQpOyByZXR1cm4gci5zdHlsZSA/IHIgOiBmZS5jcmVhdGVFbGVtZW50KHQpIH0KCiAgICBmdW5jdGlvbiB0ZCh0LCBlLCByKSB7IHZhciBpID0gZ2V0Q29tcHV0ZWRTdHlsZSh0KTsgcmV0dXJuIGlbZV0gfHwgaS5nZXRQcm9wZXJ0eVZhbHVlKGUucmVwbGFjZShOZSwgIi0kMSIpLnRvTG93ZXJDYXNlKCkpIHx8IGkuZ2V0UHJvcGVydHlWYWx1ZShlKSB8fCAhciAmJiB0ZCh0LCBqZShlKSB8fCBlLCAxKSB8fCAiIiB9CgogICAgZnVuY3Rpb24gd2QoKSB7CiAgICAgICAgKGZ1bmN0aW9uIF93aW5kb3dFeGlzdHMoKSB7IHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93IH0pKCkgJiYgd2luZG93LmRvY3VtZW50ICYmIChsZSA9IHdpbmRvdywgZmUgPSBsZS5kb2N1bWVudCwgZGUgPSBmZS5kb2N1bWVudEVsZW1lbnQsIHBlID0gc2QoImRpdiIpIHx8IHsgc3R5bGU6IHt9IH0sIHNkKCJkaXYiKSwgVmUgPSBqZShWZSksIFhlID0gVmUgKyAiT3JpZ2luIiwgcGUuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXItd2lkdGg6MDtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6MCIsIG1lID0gISFqZSgicGVyc3BlY3RpdmUiKSwgX2UgPSAxKSB9CgogICAgZnVuY3Rpb24geGQodCkgeyB2YXIgZSwgciA9IHNkKCJzdmciLCB0aGlzLm93bmVyU1ZHRWxlbWVudCAmJiB0aGlzLm93bmVyU1ZHRWxlbWVudC5nZXRBdHRyaWJ1dGUoInhtbG5zIikgfHwgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiksCiAgICAgICAgICAgIGkgPSB0aGlzLnBhcmVudE5vZGUsCiAgICAgICAgICAgIG4gPSB0aGlzLm5leHRTaWJsaW5nLAogICAgICAgICAgICBhID0gdGhpcy5zdHlsZS5jc3NUZXh0OyBpZiAoZGUuYXBwZW5kQ2hpbGQociksIHIuYXBwZW5kQ2hpbGQodGhpcyksIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIHQpIHRyeSB7IGUgPSB0aGlzLmdldEJCb3goKSwgdGhpcy5fZ3NhcEJCb3ggPSB0aGlzLmdldEJCb3gsIHRoaXMuZ2V0QkJveCA9IHhkIH0gY2F0Y2ggKHQpIHt9IGVsc2UgdGhpcy5fZ3NhcEJCb3ggJiYgKGUgPSB0aGlzLl9nc2FwQkJveCgpKTsgcmV0dXJuIGkgJiYgKG4gPyBpLmluc2VydEJlZm9yZSh0aGlzLCBuKSA6IGkuYXBwZW5kQ2hpbGQodGhpcykpLCBkZS5yZW1vdmVDaGlsZChyKSwgdGhpcy5zdHlsZS5jc3NUZXh0ID0gYSwgZSB9CgogICAgZnVuY3Rpb24geWQodCwgZSkgeyBmb3IgKHZhciByID0gZS5sZW5ndGg7IHItLTspCiAgICAgICAgICAgIGlmICh0Lmhhc0F0dHJpYnV0ZShlW3JdKSkgcmV0dXJuIHQuZ2V0QXR0cmlidXRlKGVbcl0pIH0KCiAgICBmdW5jdGlvbiB6ZChlKSB7IHZhciByOyB0cnkgeyByID0gZS5nZXRCQm94KCkgfSBjYXRjaCAodCkgeyByID0geGQuY2FsbChlLCAhMCkgfSByZXR1cm4gciAmJiAoci53aWR0aCB8fCByLmhlaWdodCkgfHwgZS5nZXRCQm94ID09PSB4ZCB8fCAociA9IHhkLmNhbGwoZSwgITApKSwgIXIgfHwgci53aWR0aCB8fCByLnggfHwgci55ID8gciA6IHsgeDogK3lkKGUsIFsieCIsICJjeCIsICJ4MSJdKSB8fCAwLCB5OiAreWQoZSwgWyJ5IiwgImN5IiwgInkxIl0pIHx8IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSB9CgogICAgZnVuY3Rpb24gQWQodCkgeyByZXR1cm4gISghdC5nZXRDVE0gfHwgdC5wYXJlbnROb2RlICYmICF0Lm93bmVyU1ZHRWxlbWVudCB8fCAhemQodCkpIH0KCiAgICBmdW5jdGlvbiBCZCh0LCBlKSB7IGlmIChlKSB7IHZhciByID0gdC5zdHlsZTsKICAgICAgICAgICAgZSBpbiBGZSAmJiBlICE9PSBYZSAmJiAoZSA9IFZlKSwgci5yZW1vdmVQcm9wZXJ0eSA/ICgibXMiICE9PSBlLnN1YnN0cigwLCAyKSAmJiAid2Via2l0IiAhPT0gZS5zdWJzdHIoMCwgNikgfHwgKGUgPSAiLSIgKyBlKSwgci5yZW1vdmVQcm9wZXJ0eShlLnJlcGxhY2UoTmUsICItJDEiKS50b0xvd2VyQ2FzZSgpKSkgOiByLnJlbW92ZUF0dHJpYnV0ZShlKSB9IH0KCiAgICBmdW5jdGlvbiBDZCh0LCBlLCByLCBpLCBuLCBhKSB7IHZhciBzID0gbmV3IG9lKHQuX3B0LCBlLCByLCAwLCAxLCBhID8gaWQgOiBoZCk7IHJldHVybiAodC5fcHQgPSBzKS5iID0gaSwgcy5lID0gbiwgdC5fcHJvcHMucHVzaChyKSwgcyB9CgogICAgZnVuY3Rpb24gRWQodCwgZSwgciwgaSkgeyB2YXIgbiwgYSwgcywgbywgdSA9IHBhcnNlRmxvYXQocikgfHwgMCwKICAgICAgICAgICAgaCA9IChyICsgIiIpLnRyaW0oKS5zdWJzdHIoKHUgKyAiIikubGVuZ3RoKSB8fCAicHgiLAogICAgICAgICAgICBsID0gcGUuc3R5bGUsCiAgICAgICAgICAgIGYgPSBVZS50ZXN0KGUpLAogICAgICAgICAgICBkID0gInN2ZyIgPT09IHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpLAogICAgICAgICAgICBwID0gKGQgPyAiY2xpZW50IiA6ICJvZmZzZXQiKSArIChmID8gIldpZHRoIiA6ICJIZWlnaHQiKSwKICAgICAgICAgICAgYyA9ICJweCIgPT09IGksCiAgICAgICAgICAgIG0gPSAiJSIgPT09IGk7IHJldHVybiBpID09PSBoIHx8ICF1IHx8IEtlW2ldIHx8IEtlW2hdID8gdSA6ICgicHgiID09PSBoIHx8IGMgfHwgKHUgPSBFZCh0LCBlLCByLCAicHgiKSksIG8gPSB0LmdldENUTSAmJiBBZCh0KSwgIW0gJiYgIiUiICE9PSBoIHx8ICFGZVtlXSAmJiAhfmUuaW5kZXhPZigiYWRpdXMiKSA/IChsW2YgPyAid2lkdGgiIDogImhlaWdodCJdID0gMTAwICsgKGMgPyBoIDogaSksIGEgPSB+ZS5pbmRleE9mKCJhZGl1cyIpIHx8ICJlbSIgPT09IGkgJiYgdC5hcHBlbmRDaGlsZCAmJiAhZCA/IHQgOiB0LnBhcmVudE5vZGUsIG8gJiYgKGEgPSAodC5vd25lclNWR0VsZW1lbnQgfHwge30pLnBhcmVudE5vZGUpLCBhICYmIGEgIT09IGZlICYmIGEuYXBwZW5kQ2hpbGQgfHwgKGEgPSBmZS5ib2R5KSwgKHMgPSBhLl9nc2FwKSAmJiBtICYmIHMud2lkdGggJiYgZiAmJiBzLnRpbWUgPT09IER0LnRpbWUgPyBjYSh1IC8gcy53aWR0aCAqIDEwMCkgOiAoIW0gJiYgIiUiICE9PSBoIHx8IChsLnBvc2l0aW9uID0gdGQodCwgInBvc2l0aW9uIikpLCBhID09PSB0ICYmIChsLnBvc2l0aW9uID0gInN0YXRpYyIpLCBhLmFwcGVuZENoaWxkKHBlKSwgbiA9IHBlW3BdLCBhLnJlbW92ZUNoaWxkKHBlKSwgbC5wb3NpdGlvbiA9ICJhYnNvbHV0ZSIsIGYgJiYgbSAmJiAoKHMgPSBfKGEpKS50aW1lID0gRHQudGltZSwgcy53aWR0aCA9IGFbcF0pLCBjYShjID8gbiAqIHUgLyAxMDAgOiBuICYmIHUgPyAxMDAgLyBuICogdSA6IDApKSkgOiAobiA9IG8gPyB0LmdldEJCb3goKVtmID8gIndpZHRoIiA6ICJoZWlnaHQiXSA6IHRbcF0sIGNhKG0gPyB1IC8gbiAqIDEwMCA6IHUgLyAxMDAgKiBuKSkpIH0KCiAgICBmdW5jdGlvbiBGZCh0LCBlLCByLCBpKSB7IHZhciBuOyByZXR1cm4gX2UgfHwgd2QoKSwgZSBpbiBxZSAmJiAidHJhbnNmb3JtIiAhPT0gZSAmJiB+KGUgPSBxZVtlXSkuaW5kZXhPZigiLCIpICYmIChlID0gZS5zcGxpdCgiLCIpWzBdKSwgRmVbZV0gJiYgInRyYW5zZm9ybSIgIT09IGUgPyAobiA9IEhlKHQsIGkpLCBuID0gInRyYW5zZm9ybU9yaWdpbiIgIT09IGUgPyBuW2VdIDogbi5zdmcgPyBuLm9yaWdpbiA6IEplKHRkKHQsIFhlKSkgKyAiICIgKyBuLnpPcmlnaW4gKyAicHgiKSA6IChuID0gdC5zdHlsZVtlXSkgJiYgImF1dG8iICE9PSBuICYmICFpICYmICF+KG4gKyAiIikuaW5kZXhPZigiY2FsYygiKSB8fCAobiA9IEdlW2VdICYmIEdlW2VdKHQsIGUsIHIpIHx8IHRkKHQsIGUpIHx8IGFhKHQsIGUpIHx8ICgib3BhY2l0eSIgPT09IGUgPyAxIDogMCkpLCByICYmICF+KG4gKyAiIikudHJpbSgpLmluZGV4T2YoIiAiKSA/IEVkKHQsIGUsIG4sIHIpICsgciA6IG4gfQoKICAgIGZ1bmN0aW9uIEdkKHQsIGUsIHIsIGkpIHsgaWYgKCFyIHx8ICJub25lIiA9PT0gcikgeyB2YXIgbiA9IGplKGUsIHQsIDEpLAogICAgICAgICAgICAgICAgYSA9IG4gJiYgdGQodCwgbiwgMSk7CiAgICAgICAgICAgIGEgJiYgYSAhPT0gciA/IChlID0gbiwgciA9IGEpIDogImJvcmRlckNvbG9yIiA9PT0gZSAmJiAociA9IHRkKHQsICJib3JkZXJUb3BDb2xvciIpKSB9IHZhciBzLCBvLCB1LCBoLCBsLCBmLCBkLCBfLCBwLCBjLCBtLCBnID0gbmV3IG9lKHRoaXMuX3B0LCB0LnN0eWxlLCBlLCAwLCAxLCBlZSksCiAgICAgICAgICAgIHYgPSAwLAogICAgICAgICAgICB5ID0gMDsgaWYgKGcuYiA9IHIsIGcuZSA9IGksIHIgKz0gIiIsICJhdXRvIiA9PT0gKGkgKz0gIiIpICYmICh0LnN0eWxlW2VdID0gaSwgaSA9IHRkKHQsIGUpIHx8IGksIHQuc3R5bGVbZV0gPSByKSwgeGIocyA9IFtyLCBpXSksIGkgPSBzWzFdLCB1ID0gKHIgPSBzWzBdKS5tYXRjaChydCkgfHwgW10sIChpLm1hdGNoKHJ0KSB8fCBbXSkubGVuZ3RoKSB7IGZvciAoOyBvID0gcnQuZXhlYyhpKTspIGQgPSBvWzBdLCBwID0gaS5zdWJzdHJpbmcodiwgby5pbmRleCksIGwgPyBsID0gKGwgKyAxKSAlIDUgOiAicmdiYSgiICE9PSBwLnN1YnN0cigtNSkgJiYgImhzbGEoIiAhPT0gcC5zdWJzdHIoLTUpIHx8IChsID0gMSksIGQgIT09IChmID0gdVt5KytdIHx8ICIiKSAmJiAoaCA9IHBhcnNlRmxvYXQoZikgfHwgMCwgbSA9IGYuc3Vic3RyKChoICsgIiIpLmxlbmd0aCksICI9IiA9PT0gZC5jaGFyQXQoMSkgJiYgKGQgPSBlYShoLCBkKSArIG0pLCBfID0gcGFyc2VGbG9hdChkKSwgYyA9IGQuc3Vic3RyKChfICsgIiIpLmxlbmd0aCksIHYgPSBydC5sYXN0SW5kZXggLSBjLmxlbmd0aCwgYyB8fCAoYyA9IGMgfHwgVS51bml0c1tlXSB8fCBtLCB2ID09PSBpLmxlbmd0aCAmJiAoaSArPSBjLCBnLmUgKz0gYykpLCBtICE9PSBjICYmIChoID0gRWQodCwgZSwgZiwgYykgfHwgMCksIGcuX3B0ID0geyBfbmV4dDogZy5fcHQsIHA6IHAgfHwgMSA9PT0geSA/IHAgOiAiLCIsIHM6IGgsIGM6IF8gLSBoLCBtOiBsICYmIGwgPCA0IHx8ICJ6SW5kZXgiID09PSBlID8gTWF0aC5yb3VuZCA6IDAgfSk7CiAgICAgICAgICAgIGcuYyA9IHYgPCBpLmxlbmd0aCA/IGkuc3Vic3RyaW5nKHYsIGkubGVuZ3RoKSA6ICIiIH0gZWxzZSBnLnIgPSAiZGlzcGxheSIgPT09IGUgJiYgIm5vbmUiID09PSBpID8gaWQgOiBoZDsgcmV0dXJuIG50LnRlc3QoaSkgJiYgKGcuZSA9IDApLCB0aGlzLl9wdCA9IGcgfQoKICAgIGZ1bmN0aW9uIElkKHQpIHsgdmFyIGUgPSB0LnNwbGl0KCIgIiksCiAgICAgICAgICAgIHIgPSBlWzBdLAogICAgICAgICAgICBpID0gZVsxXSB8fCAiNTAlIjsgcmV0dXJuICJ0b3AiICE9PSByICYmICJib3R0b20iICE9PSByICYmICJsZWZ0IiAhPT0gaSAmJiAicmlnaHQiICE9PSBpIHx8ICh0ID0gciwgciA9IGksIGkgPSB0KSwgZVswXSA9ICRlW3JdIHx8IHIsIGVbMV0gPSAkZVtpXSB8fCBpLCBlLmpvaW4oIiAiKSB9CgogICAgZnVuY3Rpb24gSmQodCwgZSkgeyBpZiAoZS50d2VlbiAmJiBlLnR3ZWVuLl90aW1lID09PSBlLnR3ZWVuLl9kdXIpIHsgdmFyIHIsIGksIG4sIGEgPSBlLnQsCiAgICAgICAgICAgICAgICBzID0gYS5zdHlsZSwKICAgICAgICAgICAgICAgIG8gPSBlLnUsCiAgICAgICAgICAgICAgICB1ID0gYS5fZ3NhcDsgaWYgKCJhbGwiID09PSBvIHx8ICEwID09PSBvKSBzLmNzc1RleHQgPSAiIiwgaSA9IDE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAobiA9IChvID0gby5zcGxpdCgiLCIpKS5sZW5ndGg7IC0gMSA8IC0tbjspIHIgPSBvW25dLCBGZVtyXSAmJiAoaSA9IDEsIHIgPSAidHJhbnNmb3JtT3JpZ2luIiA9PT0gciA/IFhlIDogVmUpLCBCZChhLCByKTsKICAgICAgICAgICAgaSAmJiAoQmQoYSwgVmUpLCB1ICYmICh1LnN2ZyAmJiBhLnJlbW92ZUF0dHJpYnV0ZSgidHJhbnNmb3JtIiksIEhlKGEsIDEpLCB1LnVuY2FjaGUgPSAxKSkgfSB9CgogICAgZnVuY3Rpb24gTmQodCkgeyByZXR1cm4gIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIgPT09IHQgfHwgIm5vbmUiID09PSB0IHx8ICF0IH0KCiAgICBmdW5jdGlvbiBPZCh0KSB7IHZhciBlID0gdGQodCwgVmUpOyByZXR1cm4gTmQoZSkgPyBXZSA6IGUuc3Vic3RyKDcpLm1hdGNoKGV0KS5tYXAoY2EpIH0KCiAgICBmdW5jdGlvbiBQZCh0LCBlKSB7IHZhciByLCBpLCBuLCBhLCBzID0gdC5fZ3NhcCB8fCBfKHQpLAogICAgICAgICAgICBvID0gdC5zdHlsZSwKICAgICAgICAgICAgdSA9IE9kKHQpOyByZXR1cm4gcy5zdmcgJiYgdC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpID8gIjEsMCwwLDEsMCwwIiA9PT0gKHUgPSBbKG4gPSB0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkubWF0cml4KS5hLCBuLmIsIG4uYywgbi5kLCBuLmUsIG4uZl0pLmpvaW4oIiwiKSA/IFdlIDogdSA6ICh1ICE9PSBXZSB8fCB0Lm9mZnNldFBhcmVudCB8fCB0ID09PSBkZSB8fCBzLnN2ZyB8fCAobiA9IG8uZGlzcGxheSwgby5kaXNwbGF5ID0gImJsb2NrIiwgKHIgPSB0LnBhcmVudE5vZGUpICYmIHQub2Zmc2V0UGFyZW50IHx8IChhID0gMSwgaSA9IHQubmV4dFNpYmxpbmcsIGRlLmFwcGVuZENoaWxkKHQpKSwgdSA9IE9kKHQpLCBuID8gby5kaXNwbGF5ID0gbiA6IEJkKHQsICJkaXNwbGF5IiksIGEgJiYgKGkgPyByLmluc2VydEJlZm9yZSh0LCBpKSA6IHIgPyByLmFwcGVuZENoaWxkKHQpIDogZGUucmVtb3ZlQ2hpbGQodCkpKSwgZSAmJiA2IDwgdS5sZW5ndGggPyBbdVswXSwgdVsxXSwgdVs0XSwgdVs1XSwgdVsxMl0sIHVbMTNdXSA6IHUpIH0KCiAgICBmdW5jdGlvbiBRZCh0LCBlLCByLCBpLCBuLCBhKSB7IHZhciBzLCBvLCB1LCBoID0gdC5fZ3NhcCwKICAgICAgICAgICAgbCA9IG4gfHwgUGQodCwgITApLAogICAgICAgICAgICBmID0gaC54T3JpZ2luIHx8IDAsCiAgICAgICAgICAgIGQgPSBoLnlPcmlnaW4gfHwgMCwKICAgICAgICAgICAgXyA9IGgueE9mZnNldCB8fCAwLAogICAgICAgICAgICBwID0gaC55T2Zmc2V0IHx8IDAsCiAgICAgICAgICAgIGMgPSBsWzBdLAogICAgICAgICAgICBtID0gbFsxXSwKICAgICAgICAgICAgZyA9IGxbMl0sCiAgICAgICAgICAgIHYgPSBsWzNdLAogICAgICAgICAgICB5ID0gbFs0XSwKICAgICAgICAgICAgVCA9IGxbNV0sCiAgICAgICAgICAgIGIgPSBlLnNwbGl0KCIgIiksCiAgICAgICAgICAgIHcgPSBwYXJzZUZsb2F0KGJbMF0pIHx8IDAsCiAgICAgICAgICAgIHggPSBwYXJzZUZsb2F0KGJbMV0pIHx8IDA7CiAgICAgICAgciA/IGwgIT09IFdlICYmIChvID0gYyAqIHYgLSBtICogZykgJiYgKHUgPSB3ICogKC1tIC8gbykgKyB4ICogKGMgLyBvKSAtIChjICogVCAtIG0gKiB5KSAvIG8sIHcgPSB3ICogKHYgLyBvKSArIHggKiAoLWcgLyBvKSArIChnICogVCAtIHYgKiB5KSAvIG8sIHggPSB1KSA6ICh3ID0gKHMgPSB6ZCh0KSkueCArICh+YlswXS5pbmRleE9mKCIlIikgPyB3IC8gMTAwICogcy53aWR0aCA6IHcpLCB4ID0gcy55ICsgKH4oYlsxXSB8fCBiWzBdKS5pbmRleE9mKCIlIikgPyB4IC8gMTAwICogcy5oZWlnaHQgOiB4KSksIGkgfHwgITEgIT09IGkgJiYgaC5zbW9vdGggPyAoeSA9IHcgLSBmLCBUID0geCAtIGQsIGgueE9mZnNldCA9IF8gKyAoeSAqIGMgKyBUICogZykgLSB5LCBoLnlPZmZzZXQgPSBwICsgKHkgKiBtICsgVCAqIHYpIC0gVCkgOiBoLnhPZmZzZXQgPSBoLnlPZmZzZXQgPSAwLCBoLnhPcmlnaW4gPSB3LCBoLnlPcmlnaW4gPSB4LCBoLnNtb290aCA9ICEhaSwgaC5vcmlnaW4gPSBlLCBoLm9yaWdpbklzQWJzb2x1dGUgPSAhIXIsIHQuc3R5bGVbWGVdID0gIjBweCAwcHgiLCBhICYmIChDZChhLCBoLCAieE9yaWdpbiIsIGYsIHcpLCBDZChhLCBoLCAieU9yaWdpbiIsIGQsIHgpLCBDZChhLCBoLCAieE9mZnNldCIsIF8sIGgueE9mZnNldCksIENkKGEsIGgsICJ5T2Zmc2V0IiwgcCwgaC55T2Zmc2V0KSksIHQuc2V0QXR0cmlidXRlKCJkYXRhLXN2Zy1vcmlnaW4iLCB3ICsgIiAiICsgeCkgfQoKICAgIGZ1bmN0aW9uIFRkKHQsIGUsIHIpIHsgdmFyIGkgPSBSYShlKTsgcmV0dXJuIGNhKHBhcnNlRmxvYXQoZSkgKyBwYXJzZUZsb2F0KEVkKHQsICJ4IiwgciArICJweCIsIGkpKSkgKyBpIH0KCiAgICBmdW5jdGlvbiAkZCh0LCBlLCByLCBpLCBuKSB7IHZhciBhLCBzLCB1ID0gMzYwLAogICAgICAgICAgICBoID0gbyhuKSwKICAgICAgICAgICAgbCA9IHBhcnNlRmxvYXQobikgKiAoaCAmJiB+bi5pbmRleE9mKCJyYWQiKSA/IEJlIDogMSkgLSBpLAogICAgICAgICAgICBmID0gaSArIGwgKyAiZGVnIjsgcmV0dXJuIGggJiYgKCJzaG9ydCIgPT09IChhID0gbi5zcGxpdCgiXyIpWzFdKSAmJiAobCAlPSB1KSAhPT0gbCAlIDE4MCAmJiAobCArPSBsIDwgMCA/IHUgOiAtdSksICJjdyIgPT09IGEgJiYgbCA8IDAgPyBsID0gKGwgKyAzNmU5KSAlIHUgLSB+fihsIC8gdSkgKiB1IDogImNjdyIgPT09IGEgJiYgMCA8IGwgJiYgKGwgPSAobCAtIDM2ZTkpICUgdSAtIH5+KGwgLyB1KSAqIHUpKSwgdC5fcHQgPSBzID0gbmV3IG9lKHQuX3B0LCBlLCByLCBpLCBsLCBlZCksIHMuZSA9IGYsIHMudSA9ICJkZWciLCB0Ll9wcm9wcy5wdXNoKHIpLCBzIH0KCiAgICBmdW5jdGlvbiBfZCh0LCBlKSB7IGZvciAodmFyIHIgaW4gZSkgdFtyXSA9IGVbcl07IHJldHVybiB0IH0KCiAgICBmdW5jdGlvbiBhZSh0LCBlLCByKSB7IHZhciBpLCBuLCBhLCBzLCBvLCB1LCBoLCBsID0gX2Qoe30sIHIuX2dzYXApLAogICAgICAgICAgICBmID0gci5zdHlsZTsgZm9yIChuIGluIGwuc3ZnID8gKGEgPSByLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiksIHIuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAiIiksIGZbVmVdID0gZSwgaSA9IEhlKHIsIDEpLCBCZChyLCBWZSksIHIuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCBhKSkgOiAoYSA9IGdldENvbXB1dGVkU3R5bGUocilbVmVdLCBmW1ZlXSA9IGUsIGkgPSBIZShyLCAxKSwgZltWZV0gPSBhKSwgRmUpKGEgPSBsW25dKSAhPT0gKHMgPSBpW25dKSAmJiAicGVyc3BlY3RpdmUsZm9yY2UzRCx0cmFuc2Zvcm1PcmlnaW4sc3ZnT3JpZ2luIi5pbmRleE9mKG4pIDwgMCAmJiAobyA9IFJhKGEpICE9PSAoaCA9IFJhKHMpKSA/IEVkKHIsIG4sIGEsIGgpIDogcGFyc2VGbG9hdChhKSwgdSA9IHBhcnNlRmxvYXQocyksIHQuX3B0ID0gbmV3IG9lKHQuX3B0LCBpLCBuLCBvLCB1IC0gbywgZGQpLCB0Ll9wdC51ID0gaCB8fCAwLCB0Ll9wcm9wcy5wdXNoKG4pKTsKICAgICAgICBfZChpLCBsKSB9IHZhciBsZSwgZmUsIGRlLCBfZSwgcGUsIGNlLCBtZSwgZ2UgPSB6dC5Qb3dlcjAsCiAgICAgICAgdmUgPSB6dC5Qb3dlcjEsCiAgICAgICAgeWUgPSB6dC5Qb3dlcjIsCiAgICAgICAgVGUgPSB6dC5Qb3dlcjMsCiAgICAgICAgYmUgPSB6dC5Qb3dlcjQsCiAgICAgICAgd2UgPSB6dC5MaW5lYXIsCiAgICAgICAgeGUgPSB6dC5RdWFkLAogICAgICAgIGtlID0genQuQ3ViaWMsCiAgICAgICAgT2UgPSB6dC5RdWFydCwKICAgICAgICBQZSA9IHp0LlF1aW50LAogICAgICAgIE1lID0genQuU3Ryb25nLAogICAgICAgIENlID0genQuRWxhc3RpYywKICAgICAgICBBZSA9IHp0LkJhY2ssCiAgICAgICAgRGUgPSB6dC5TdGVwcGVkRWFzZSwKICAgICAgICBTZSA9IHp0LkJvdW5jZSwKICAgICAgICB6ZSA9IHp0LlNpbmUsCiAgICAgICAgUmUgPSB6dC5FeHBvLAogICAgICAgIEVlID0genQuQ2lyYywKICAgICAgICBGZSA9IHt9LAogICAgICAgIEJlID0gMTgwIC8gTWF0aC5QSSwKICAgICAgICBJZSA9IE1hdGguUEkgLyAxODAsCiAgICAgICAgTGUgPSBNYXRoLmF0YW4yLAogICAgICAgIE5lID0gLyhbQS1aXSkvZywKICAgICAgICBVZSA9IC8obGVmdHxyaWdodHx3aWR0aHxtYXJnaW58cGFkZGluZ3x4KS9pLAogICAgICAgIFllID0gL1tccyxcKF1cUy8sCiAgICAgICAgcWUgPSB7IGF1dG9BbHBoYTogIm9wYWNpdHksdmlzaWJpbGl0eSIsIHNjYWxlOiAic2NhbGVYLHNjYWxlWSIsIGFscGhhOiAib3BhY2l0eSIgfSwKICAgICAgICBWZSA9ICJ0cmFuc2Zvcm0iLAogICAgICAgIFhlID0gVmUgKyAiT3JpZ2luIiwKICAgICAgICBRZSA9ICJPLE1veixtcyxNcyxXZWJraXQiLnNwbGl0KCIsIiksCiAgICAgICAgamUgPSBmdW5jdGlvbiBfY2hlY2tQcm9wUHJlZml4KHQsIGUsIHIpIHsgdmFyIGkgPSAoZSB8fCBwZSkuc3R5bGUsCiAgICAgICAgICAgICAgICBuID0gNTsgaWYgKHQgaW4gaSAmJiAhcikgcmV0dXJuIHQ7IGZvciAodCA9IHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0LnN1YnN0cigxKTsgbi0tICYmICEoUWVbbl0gKyB0IGluIGkpOyk7IHJldHVybiBuIDwgMCA/IG51bGwgOiAoMyA9PT0gbiA/ICJtcyIgOiAwIDw9IG4gPyBRZVtuXSA6ICIiKSArIHQgfSwKICAgICAgICBLZSA9IHsgZGVnOiAxLCByYWQ6IDEsIHR1cm46IDEgfSwKICAgICAgICAkZSA9IHsgdG9wOiAiMCUiLCBib3R0b206ICIxMDAlIiwgbGVmdDogIjAlIiwgcmlnaHQ6ICIxMDAlIiwgY2VudGVyOiAiNTAlIiB9LAogICAgICAgIEdlID0geyBjbGVhclByb3BzOiBmdW5jdGlvbiBjbGVhclByb3BzKHQsIGUsIHIsIGksIG4pIHsgaWYgKCJpc0Zyb21TdGFydCIgIT09IG4uZGF0YSkgeyB2YXIgYSA9IHQuX3B0ID0gbmV3IG9lKHQuX3B0LCBlLCByLCAwLCAwLCBKZCk7IHJldHVybiBhLnUgPSBpLCBhLnByID0gLTEwLCBhLnR3ZWVuID0gbiwgdC5fcHJvcHMucHVzaChyKSwgMSB9IH0gfSwKICAgICAgICBXZSA9IFsxLCAwLCAwLCAxLCAwLCAwXSwKICAgICAgICBaZSA9IHt9LAogICAgICAgIEhlID0gZnVuY3Rpb24gX3BhcnNlVHJhbnNmb3JtKHQsIGUpIHsgdmFyIHIgPSB0Ll9nc2FwIHx8IG5ldyBMdCh0KTsgaWYgKCJ4IiBpbiByICYmICFlICYmICFyLnVuY2FjaGUpIHJldHVybiByOyB2YXIgaSwgbiwgYSwgcywgbywgdSwgaCwgbCwgZiwgZCwgXywgcCwgYywgbSwgZywgdiwgeSwgVCwgYiwgdywgeCwgaywgTywgUCwgTSwgQywgQSwgRCwgUywgeiwgUiwgRSwgRiA9IHQuc3R5bGUsCiAgICAgICAgICAgICAgICBCID0gci5zY2FsZVggPCAwLAogICAgICAgICAgICAgICAgSSA9ICJkZWciLAogICAgICAgICAgICAgICAgTCA9IHRkKHQsIFhlKSB8fCAiMCI7IHJldHVybiBpID0gbiA9IGEgPSB1ID0gaCA9IGwgPSBmID0gZCA9IF8gPSAwLCBzID0gbyA9IDEsIHIuc3ZnID0gISghdC5nZXRDVE0gfHwgIUFkKHQpKSwgbSA9IFBkKHQsIHIuc3ZnKSwgci5zdmcgJiYgKFAgPSAoIXIudW5jYWNoZSB8fCAiMHB4IDBweCIgPT09IEwpICYmICFlICYmIHQuZ2V0QXR0cmlidXRlKCJkYXRhLXN2Zy1vcmlnaW4iKSwgUWQodCwgUCB8fCBMLCAhIVAgfHwgci5vcmlnaW5Jc0Fic29sdXRlLCAhMSAhPT0gci5zbW9vdGgsIG0pKSwgcCA9IHIueE9yaWdpbiB8fCAwLCBjID0gci55T3JpZ2luIHx8IDAsIG0gIT09IFdlICYmIChUID0gbVswXSwgYiA9IG1bMV0sIHcgPSBtWzJdLCB4ID0gbVszXSwgaSA9IGsgPSBtWzRdLCBuID0gTyA9IG1bNV0sIDYgPT09IG0ubGVuZ3RoID8gKHMgPSBNYXRoLnNxcnQoVCAqIFQgKyBiICogYiksIG8gPSBNYXRoLnNxcnQoeCAqIHggKyB3ICogdyksIHUgPSBUIHx8IGIgPyBMZShiLCBUKSAqIEJlIDogMCwgKGYgPSB3IHx8IHggPyBMZSh3LCB4KSAqIEJlICsgdSA6IDApICYmIChvICo9IE1hdGguYWJzKE1hdGguY29zKGYgKiBJZSkpKSwgci5zdmcgJiYgKGkgLT0gcCAtIChwICogVCArIGMgKiB3KSwgbiAtPSBjIC0gKHAgKiBiICsgYyAqIHgpKSkgOiAoRSA9IG1bNl0sIHogPSBtWzddLCBBID0gbVs4XSwgRCA9IG1bOV0sIFMgPSBtWzEwXSwgUiA9IG1bMTFdLCBpID0gbVsxMl0sIG4gPSBtWzEzXSwgYSA9IG1bMTRdLCBoID0gKGcgPSBMZShFLCBTKSkgKiBCZSwgZyAmJiAoUCA9IGsgKiAodiA9IE1hdGguY29zKC1nKSkgKyBBICogKHkgPSBNYXRoLnNpbigtZykpLCBNID0gTyAqIHYgKyBEICogeSwgQyA9IEUgKiB2ICsgUyAqIHksIEEgPSBrICogLXkgKyBBICogdiwgRCA9IE8gKiAteSArIEQgKiB2LCBTID0gRSAqIC15ICsgUyAqIHYsIFIgPSB6ICogLXkgKyBSICogdiwgayA9IFAsIE8gPSBNLCBFID0gQyksIGwgPSAoZyA9IExlKC13LCBTKSkgKiBCZSwgZyAmJiAodiA9IE1hdGguY29zKC1nKSwgUiA9IHggKiAoeSA9IE1hdGguc2luKC1nKSkgKyBSICogdiwgVCA9IFAgPSBUICogdiAtIEEgKiB5LCBiID0gTSA9IGIgKiB2IC0gRCAqIHksIHcgPSBDID0gdyAqIHYgLSBTICogeSksIHUgPSAoZyA9IExlKGIsIFQpKSAqIEJlLCBnICYmIChQID0gVCAqICh2ID0gTWF0aC5jb3MoZykpICsgYiAqICh5ID0gTWF0aC5zaW4oZykpLCBNID0gayAqIHYgKyBPICogeSwgYiA9IGIgKiB2IC0gVCAqIHksIE8gPSBPICogdiAtIGsgKiB5LCBUID0gUCwgayA9IE0pLCBoICYmIDM1OS45IDwgTWF0aC5hYnMoaCkgKyBNYXRoLmFicyh1KSAmJiAoaCA9IHUgPSAwLCBsID0gMTgwIC0gbCksIHMgPSBjYShNYXRoLnNxcnQoVCAqIFQgKyBiICogYiArIHcgKiB3KSksIG8gPSBjYShNYXRoLnNxcnQoTyAqIE8gKyBFICogRSkpLCBnID0gTGUoaywgTyksIGYgPSAyZS00IDwgTWF0aC5hYnMoZykgPyBnICogQmUgOiAwLCBfID0gUiA/IDEgLyAoUiA8IDAgPyAtUiA6IFIpIDogMCksIHIuc3ZnICYmIChQID0gdC5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLCByLmZvcmNlQ1NTID0gdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICIiKSB8fCAhTmQodGQodCwgVmUpKSwgUCAmJiB0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgUCkpKSwgOTAgPCBNYXRoLmFicyhmKSAmJiBNYXRoLmFicyhmKSA8IDI3MCAmJiAoQiA/IChzICo9IC0xLCBmICs9IHUgPD0gMCA/IDE4MCA6IC0xODAsIHUgKz0gdSA8PSAwID8gMTgwIDogLTE4MCkgOiAobyAqPSAtMSwgZiArPSBmIDw9IDAgPyAxODAgOiAtMTgwKSksIGUgPSBlIHx8IHIudW5jYWNoZSwgci54ID0gaSAtICgoci54UGVyY2VudCA9IGkgJiYgKCFlICYmIHIueFBlcmNlbnQgfHwgKE1hdGgucm91bmQodC5vZmZzZXRXaWR0aCAvIDIpID09PSBNYXRoLnJvdW5kKC1pKSA/IC01MCA6IDApKSkgPyB0Lm9mZnNldFdpZHRoICogci54UGVyY2VudCAvIDEwMCA6IDApICsgInB4Iiwgci55ID0gbiAtICgoci55UGVyY2VudCA9IG4gJiYgKCFlICYmIHIueVBlcmNlbnQgfHwgKE1hdGgucm91bmQodC5vZmZzZXRIZWlnaHQgLyAyKSA9PT0gTWF0aC5yb3VuZCgtbikgPyAtNTAgOiAwKSkpID8gdC5vZmZzZXRIZWlnaHQgKiByLnlQZXJjZW50IC8gMTAwIDogMCkgKyAicHgiLCByLnogPSBhICsgInB4Iiwgci5zY2FsZVggPSBjYShzKSwgci5zY2FsZVkgPSBjYShvKSwgci5yb3RhdGlvbiA9IGNhKHUpICsgSSwgci5yb3RhdGlvblggPSBjYShoKSArIEksIHIucm90YXRpb25ZID0gY2EobCkgKyBJLCByLnNrZXdYID0gZiArIEksIHIuc2tld1kgPSBkICsgSSwgci50cmFuc2Zvcm1QZXJzcGVjdGl2ZSA9IF8gKyAicHgiLCAoci56T3JpZ2luID0gcGFyc2VGbG9hdChMLnNwbGl0KCIgIilbMl0pIHx8IDApICYmIChGW1hlXSA9IEplKEwpKSwgci54T2Zmc2V0ID0gci55T2Zmc2V0ID0gMCwgci5mb3JjZTNEID0gVS5mb3JjZTNELCByLnJlbmRlclRyYW5zZm9ybSA9IHIuc3ZnID8gYXIgOiBtZSA/IG5yIDogdHIsIHIudW5jYWNoZSA9IDAsIHIgfSwKICAgICAgICBKZSA9IGZ1bmN0aW9uIF9maXJzdFR3b09ubHkodCkgeyByZXR1cm4gKHQgPSB0LnNwbGl0KCIgIikpWzBdICsgIiAiICsgdFsxXSB9LAogICAgICAgIHRyID0gZnVuY3Rpb24gX3JlbmRlck5vbjNEVHJhbnNmb3Jtcyh0LCBlKSB7IGUueiA9ICIwcHgiLCBlLnJvdGF0aW9uWSA9IGUucm90YXRpb25YID0gIjBkZWciLCBlLmZvcmNlM0QgPSAwLCBucih0LCBlKSB9LAogICAgICAgIGVyID0gIjBkZWciLAogICAgICAgIHJyID0gIjBweCIsCiAgICAgICAgaXIgPSAiKSAiLAogICAgICAgIG5yID0gZnVuY3Rpb24gX3JlbmRlckNTU1RyYW5zZm9ybXModCwgZSkgeyB2YXIgciA9IGUgfHwgdGhpcywKICAgICAgICAgICAgICAgIGkgPSByLnhQZXJjZW50LAogICAgICAgICAgICAgICAgbiA9IHIueVBlcmNlbnQsCiAgICAgICAgICAgICAgICBhID0gci54LAogICAgICAgICAgICAgICAgcyA9IHIueSwKICAgICAgICAgICAgICAgIG8gPSByLnosCiAgICAgICAgICAgICAgICB1ID0gci5yb3RhdGlvbiwKICAgICAgICAgICAgICAgIGggPSByLnJvdGF0aW9uWSwKICAgICAgICAgICAgICAgIGwgPSByLnJvdGF0aW9uWCwKICAgICAgICAgICAgICAgIGYgPSByLnNrZXdYLAogICAgICAgICAgICAgICAgZCA9IHIuc2tld1ksCiAgICAgICAgICAgICAgICBfID0gci5zY2FsZVgsCiAgICAgICAgICAgICAgICBwID0gci5zY2FsZVksCiAgICAgICAgICAgICAgICBjID0gci50cmFuc2Zvcm1QZXJzcGVjdGl2ZSwKICAgICAgICAgICAgICAgIG0gPSByLmZvcmNlM0QsCiAgICAgICAgICAgICAgICBnID0gci50YXJnZXQsCiAgICAgICAgICAgICAgICB2ID0gci56T3JpZ2luLAogICAgICAgICAgICAgICAgeSA9ICIiLAogICAgICAgICAgICAgICAgVCA9ICJhdXRvIiA9PT0gbSAmJiB0ICYmIDEgIT09IHQgfHwgITAgPT09IG07IGlmICh2ICYmIChsICE9PSBlciB8fCBoICE9PSBlcikpIHsgdmFyIGIsIHcgPSBwYXJzZUZsb2F0KGgpICogSWUsCiAgICAgICAgICAgICAgICAgICAgeCA9IE1hdGguc2luKHcpLAogICAgICAgICAgICAgICAgICAgIGsgPSBNYXRoLmNvcyh3KTsKICAgICAgICAgICAgICAgIHcgPSBwYXJzZUZsb2F0KGwpICogSWUsIGIgPSBNYXRoLmNvcyh3KSwgYSA9IFRkKGcsIGEsIHggKiBiICogLXYpLCBzID0gVGQoZywgcywgLU1hdGguc2luKHcpICogLXYpLCBvID0gVGQoZywgbywgayAqIGIgKiAtdiArIHYpIH0KICAgICAgICAgICAgYyAhPT0gcnIgJiYgKHkgKz0gInBlcnNwZWN0aXZlKCIgKyBjICsgaXIpLCAoaSB8fCBuKSAmJiAoeSArPSAidHJhbnNsYXRlKCIgKyBpICsgIiUsICIgKyBuICsgIiUpICIpLCAhVCAmJiBhID09PSByciAmJiBzID09PSByciAmJiBvID09PSByciB8fCAoeSArPSBvICE9PSByciB8fCBUID8gInRyYW5zbGF0ZTNkKCIgKyBhICsgIiwgIiArIHMgKyAiLCAiICsgbyArICIpICIgOiAidHJhbnNsYXRlKCIgKyBhICsgIiwgIiArIHMgKyBpciksIHUgIT09IGVyICYmICh5ICs9ICJyb3RhdGUoIiArIHUgKyBpciksIGggIT09IGVyICYmICh5ICs9ICJyb3RhdGVZKCIgKyBoICsgaXIpLCBsICE9PSBlciAmJiAoeSArPSAicm90YXRlWCgiICsgbCArIGlyKSwgZiA9PT0gZXIgJiYgZCA9PT0gZXIgfHwgKHkgKz0gInNrZXcoIiArIGYgKyAiLCAiICsgZCArIGlyKSwgMSA9PT0gXyAmJiAxID09PSBwIHx8ICh5ICs9ICJzY2FsZSgiICsgXyArICIsICIgKyBwICsgaXIpLCBnLnN0eWxlW1ZlXSA9IHkgfHwgInRyYW5zbGF0ZSgwLCAwKSIgfSwKICAgICAgICBhciA9IGZ1bmN0aW9uIF9yZW5kZXJTVkdUcmFuc2Zvcm1zKHQsIGUpIHsgdmFyIHIsIGksIG4sIGEsIHMsIG8gPSBlIHx8IHRoaXMsCiAgICAgICAgICAgICAgICB1ID0gby54UGVyY2VudCwKICAgICAgICAgICAgICAgIGggPSBvLnlQZXJjZW50LAogICAgICAgICAgICAgICAgbCA9IG8ueCwKICAgICAgICAgICAgICAgIGYgPSBvLnksCiAgICAgICAgICAgICAgICBkID0gby5yb3RhdGlvbiwKICAgICAgICAgICAgICAgIF8gPSBvLnNrZXdYLAogICAgICAgICAgICAgICAgcCA9IG8uc2tld1ksCiAgICAgICAgICAgICAgICBjID0gby5zY2FsZVgsCiAgICAgICAgICAgICAgICBtID0gby5zY2FsZVksCiAgICAgICAgICAgICAgICBnID0gby50YXJnZXQsCiAgICAgICAgICAgICAgICB2ID0gby54T3JpZ2luLAogICAgICAgICAgICAgICAgeSA9IG8ueU9yaWdpbiwKICAgICAgICAgICAgICAgIFQgPSBvLnhPZmZzZXQsCiAgICAgICAgICAgICAgICBiID0gby55T2Zmc2V0LAogICAgICAgICAgICAgICAgdyA9IG8uZm9yY2VDU1MsCiAgICAgICAgICAgICAgICB4ID0gcGFyc2VGbG9hdChsKSwKICAgICAgICAgICAgICAgIGsgPSBwYXJzZUZsb2F0KGYpOwogICAgICAgICAgICBkID0gcGFyc2VGbG9hdChkKSwgXyA9IHBhcnNlRmxvYXQoXyksIChwID0gcGFyc2VGbG9hdChwKSkgJiYgKF8gKz0gcCA9IHBhcnNlRmxvYXQocCksIGQgKz0gcCksIGQgfHwgXyA/IChkICo9IEllLCBfICo9IEllLCByID0gTWF0aC5jb3MoZCkgKiBjLCBpID0gTWF0aC5zaW4oZCkgKiBjLCBuID0gTWF0aC5zaW4oZCAtIF8pICogLW0sIGEgPSBNYXRoLmNvcyhkIC0gXykgKiBtLCBfICYmIChwICo9IEllLCBzID0gTWF0aC50YW4oXyAtIHApLCBuICo9IHMgPSBNYXRoLnNxcnQoMSArIHMgKiBzKSwgYSAqPSBzLCBwICYmIChzID0gTWF0aC50YW4ocCksIHIgKj0gcyA9IE1hdGguc3FydCgxICsgcyAqIHMpLCBpICo9IHMpKSwgciA9IGNhKHIpLCBpID0gY2EoaSksIG4gPSBjYShuKSwgYSA9IGNhKGEpKSA6IChyID0gYywgYSA9IG0sIGkgPSBuID0gMCksICh4ICYmICF+KGwgKyAiIikuaW5kZXhPZigicHgiKSB8fCBrICYmICF+KGYgKyAiIikuaW5kZXhPZigicHgiKSkgJiYgKHggPSBFZChnLCAieCIsIGwsICJweCIpLCBrID0gRWQoZywgInkiLCBmLCAicHgiKSksICh2IHx8IHkgfHwgVCB8fCBiKSAmJiAoeCA9IGNhKHggKyB2IC0gKHYgKiByICsgeSAqIG4pICsgVCksIGsgPSBjYShrICsgeSAtICh2ICogaSArIHkgKiBhKSArIGIpKSwgKHUgfHwgaCkgJiYgKHMgPSBnLmdldEJCb3goKSwgeCA9IGNhKHggKyB1IC8gMTAwICogcy53aWR0aCksIGsgPSBjYShrICsgaCAvIDEwMCAqIHMuaGVpZ2h0KSksIHMgPSAibWF0cml4KCIgKyByICsgIiwiICsgaSArICIsIiArIG4gKyAiLCIgKyBhICsgIiwiICsgeCArICIsIiArIGsgKyAiKSIsIGcuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCBzKSwgdyAmJiAoZy5zdHlsZVtWZV0gPSBzKSB9OwogICAgYmEoInBhZGRpbmcsbWFyZ2luLFdpZHRoLFJhZGl1cyIsIGZ1bmN0aW9uKGUsIHIpIHsgdmFyIHQgPSAiUmlnaHQiLAogICAgICAgICAgICBpID0gIkJvdHRvbSIsCiAgICAgICAgICAgIG4gPSAiTGVmdCIsCiAgICAgICAgICAgIG8gPSAociA8IDMgPyBbIlRvcCIsIHQsIGksIG5dIDogWyJUb3AiICsgbiwgIlRvcCIgKyB0LCBpICsgdCwgaSArIG5dKS5tYXAoZnVuY3Rpb24odCkgeyByZXR1cm4gciA8IDIgPyBlICsgdCA6ICJib3JkZXIiICsgdCArIGUgfSk7CiAgICAgICAgR2VbMSA8IHIgPyAiYm9yZGVyIiArIGUgOiBlXSA9IGZ1bmN0aW9uKGUsIHQsIHIsIGksIG4pIHsgdmFyIGEsIHM7IGlmIChhcmd1bWVudHMubGVuZ3RoIDwgNCkgcmV0dXJuIGEgPSBvLm1hcChmdW5jdGlvbih0KSB7IHJldHVybiBGZChlLCB0LCByKSB9KSwgNSA9PT0gKHMgPSBhLmpvaW4oIiAiKSkuc3BsaXQoYVswXSkubGVuZ3RoID8gYVswXSA6IHM7CiAgICAgICAgICAgIGEgPSAoaSArICIiKS5zcGxpdCgiICIpLCBzID0ge30sIG8uZm9yRWFjaChmdW5jdGlvbih0LCBlKSB7IHJldHVybiBzW3RdID0gYVtlXSA9IGFbZV0gfHwgYVsoZSAtIDEpIC8gMiB8IDBdIH0pLCBlLmluaXQodCwgcywgbikgfSB9KTsgdmFyIHNyLCBvciwgdXIsIGhyID0geyBuYW1lOiAiY3NzIiwgcmVnaXN0ZXI6IHdkLCB0YXJnZXRUZXN0OiBmdW5jdGlvbiB0YXJnZXRUZXN0KHQpIHsgcmV0dXJuIHQuc3R5bGUgJiYgdC5ub2RlVHlwZSB9LCBpbml0OiBmdW5jdGlvbiBpbml0KHQsIGUsIHIsIGksIG4pIHsgdmFyIGEsIHMsIHUsIGgsIGwsIGYsIGQsIF8sIHAsIGMsIG0sIGcsIHYsIHksIFQsIGIgPSB0aGlzLl9wcm9wcywKICAgICAgICAgICAgICAgIHcgPSB0LnN0eWxlLAogICAgICAgICAgICAgICAgeCA9IHIudmFycy5zdGFydEF0OyBmb3IgKGQgaW4gX2UgfHwgd2QoKSwgZSkKICAgICAgICAgICAgICAgIGlmICgiYXV0b1JvdW5kIiAhPT0gZCAmJiAocyA9IGVbZF0sICFmdFtkXSB8fCAhVWIoZCwgZSwgciwgaSwgdCwgbikpKQogICAgICAgICAgICAgICAgICAgIGlmIChsID0gdHlwZW9mIHMsIGYgPSBHZVtkXSwgImZ1bmN0aW9uIiA9PT0gbCAmJiAobCA9IHR5cGVvZihzID0gcy5jYWxsKHIsIGksIHQsIG4pKSksICJzdHJpbmciID09PSBsICYmIH5zLmluZGV4T2YoInJhbmRvbSgiKSAmJiAocyA9IGhiKHMpKSwgZikgZih0aGlzLCB0LCBkLCBzLCByKSAmJiAoVCA9IDEpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCItLSIgPT09IGQuc3Vic3RyKDAsIDIpKSBhID0gKGdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShkKSArICIiKS50cmltKCksIHMgKz0gIiIsIEN0Lmxhc3RJbmRleCA9IDAsIEN0LnRlc3QoYSkgfHwgKF8gPSBSYShhKSwgcCA9IFJhKHMpKSwgcCA/IF8gIT09IHAgJiYgKGEgPSBFZCh0LCBkLCBhLCBwKSArIHApIDogXyAmJiAocyArPSBfKSwgdGhpcy5hZGQodywgInNldFByb3BlcnR5IiwgYSwgcywgaSwgbiwgMCwgMCwgZCksIGIucHVzaChkKTsKICAgICAgICAgICAgZWxzZSBpZiAoInVuZGVmaW5lZCIgIT09IGwpIHsgaWYgKHggJiYgZCBpbiB4ID8gKGEgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB4W2RdID8geFtkXS5jYWxsKHIsIGksIHQsIG4pIDogeFtkXSwgbyhhKSAmJiB+YS5pbmRleE9mKCJyYW5kb20oIikgJiYgKGEgPSBoYihhKSksIFJhKGEgKyAiIikgfHwgKGEgKz0gVS51bml0c1tkXSB8fCBSYShGZCh0LCBkKSkgfHwgIiIpLCAiPSIgPT09IChhICsgIiIpLmNoYXJBdCgxKSAmJiAoYSA9IEZkKHQsIGQpKSkgOiBhID0gRmQodCwgZCksIGggPSBwYXJzZUZsb2F0KGEpLCAoYyA9ICJzdHJpbmciID09PSBsICYmICI9IiA9PT0gcy5jaGFyQXQoMSkgJiYgcy5zdWJzdHIoMCwgMikpICYmIChzID0gcy5zdWJzdHIoMikpLCB1ID0gcGFyc2VGbG9hdChzKSwgZCBpbiBxZSAmJiAoImF1dG9BbHBoYSIgPT09IGQgJiYgKDEgPT09IGggJiYgImhpZGRlbiIgPT09IEZkKHQsICJ2aXNpYmlsaXR5IikgJiYgdSAmJiAoaCA9IDApLCBDZCh0aGlzLCB3LCAidmlzaWJpbGl0eSIsIGggPyAiaW5oZXJpdCIgOiAiaGlkZGVuIiwgdSA/ICJpbmhlcml0IiA6ICJoaWRkZW4iLCAhdSkpLCAic2NhbGUiICE9PSBkICYmICJ0cmFuc2Zvcm0iICE9PSBkICYmIH4oZCA9IHFlW2RdKS5pbmRleE9mKCIsIikgJiYgKGQgPSBkLnNwbGl0KCIsIilbMF0pKSwgbSA9IGQgaW4gRmUpCiAgICAgICAgICAgICAgICAgICAgaWYgKGcgfHwgKCh2ID0gdC5fZ3NhcCkucmVuZGVyVHJhbnNmb3JtICYmICFlLnBhcnNlVHJhbnNmb3JtIHx8IEhlKHQsIGUucGFyc2VUcmFuc2Zvcm0pLCB5ID0gITEgIT09IGUuc21vb3RoT3JpZ2luICYmIHYuc21vb3RoLCAoZyA9IHRoaXMuX3B0ID0gbmV3IG9lKHRoaXMuX3B0LCB3LCBWZSwgMCwgMSwgdi5yZW5kZXJUcmFuc2Zvcm0sIHYsIDAsIC0xKSkuZGVwID0gMSksICJzY2FsZSIgPT09IGQpIHRoaXMuX3B0ID0gbmV3IG9lKHRoaXMuX3B0LCB2LCAic2NhbGVZIiwgdi5zY2FsZVksIChjID8gZWEodi5zY2FsZVksIGMgKyB1KSA6IHUpIC0gdi5zY2FsZVkgfHwgMCksIGIucHVzaCgic2NhbGVZIiwgZCksIGQgKz0gIlgiOwogICAgICAgICAgICAgICAgICAgIGVsc2UgeyBpZiAoInRyYW5zZm9ybU9yaWdpbiIgPT09IGQpIHsgcyA9IElkKHMpLCB2LnN2ZyA/IFFkKHQsIHMsIDAsIHksIDAsIHRoaXMpIDogKChwID0gcGFyc2VGbG9hdChzLnNwbGl0KCIgIilbMl0pIHx8IDApICE9PSB2LnpPcmlnaW4gJiYgQ2QodGhpcywgdiwgInpPcmlnaW4iLCB2LnpPcmlnaW4sIHApLCBDZCh0aGlzLCB3LCBkLCBKZShhKSwgSmUocykpKTsgY29udGludWUgfSBpZiAoInN2Z09yaWdpbiIgPT09IGQpIHsgUWQodCwgcywgMSwgeSwgMCwgdGhpcyk7IGNvbnRpbnVlIH0gaWYgKGQgaW4gWmUpIHsgJGQodGhpcywgdiwgZCwgaCwgYyA/IGVhKGgsIGMgKyBzKSA6IHMpOyBjb250aW51ZSB9IGlmICgic21vb3RoT3JpZ2luIiA9PT0gZCkgeyBDZCh0aGlzLCB2LCAic21vb3RoIiwgdi5zbW9vdGgsIHMpOyBjb250aW51ZSB9IGlmICgiZm9yY2UzRCIgPT09IGQpIHsgdltkXSA9IHM7IGNvbnRpbnVlIH0gaWYgKCJ0cmFuc2Zvcm0iID09PSBkKSB7IGFlKHRoaXMsIHMsIHQpOyBjb250aW51ZSB9IH0KICAgICAgICAgICAgICAgIGVsc2UgZCBpbiB3IHx8IChkID0gamUoZCkgfHwgZCk7IGlmIChtIHx8ICh1IHx8IDAgPT09IHUpICYmIChoIHx8IDAgPT09IGgpICYmICFZZS50ZXN0KHMpICYmIGQgaW4gdykgdSA9IHUgfHwgMCwgKF8gPSAoYSArICIiKS5zdWJzdHIoKGggKyAiIikubGVuZ3RoKSkgIT09IChwID0gUmEocykgfHwgKGQgaW4gVS51bml0cyA/IFUudW5pdHNbZF0gOiBfKSkgJiYgKGggPSBFZCh0LCBkLCBhLCBwKSksIHRoaXMuX3B0ID0gbmV3IG9lKHRoaXMuX3B0LCBtID8gdiA6IHcsIGQsIGgsIChjID8gZWEoaCwgYyArIHUpIDogdSkgLSBoLCBtIHx8ICJweCIgIT09IHAgJiYgInpJbmRleCIgIT09IGQgfHwgITEgPT09IGUuYXV0b1JvdW5kID8gZGQgOiBnZCksIHRoaXMuX3B0LnUgPSBwIHx8IDAsIF8gIT09IHAgJiYgIiUiICE9PSBwICYmICh0aGlzLl9wdC5iID0gYSwgdGhpcy5fcHQuciA9IGZkKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGQgaW4gdykgR2QuY2FsbCh0aGlzLCB0LCBkLCBhLCBjID8gYyArIHMgOiBzKTsKICAgICAgICAgICAgICAgIGVsc2UgeyBpZiAoIShkIGluIHQpKSB7IE4oZCwgcyk7IGNvbnRpbnVlIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZCh0LCBkLCBhIHx8IHRbZF0sIGMgPyBjICsgcyA6IHMsIGksIG4pIH0KICAgICAgICAgICAgICAgIGIucHVzaChkKSB9CiAgICAgICAgICAgIFQgJiYgc2UodGhpcykgfSwgZ2V0OiBGZCwgYWxpYXNlczogcWUsIGdldFNldHRlcjogZnVuY3Rpb24gZ2V0U2V0dGVyKHQsIGUsIGkpIHsgdmFyIG4gPSBxZVtlXTsgcmV0dXJuIG4gJiYgbi5pbmRleE9mKCIsIikgPCAwICYmIChlID0gbiksIGUgaW4gRmUgJiYgZSAhPT0gWGUgJiYgKHQuX2dzYXAueCB8fCBGZCh0LCAieCIpKSA/IGkgJiYgY2UgPT09IGkgPyAic2NhbGUiID09PSBlID8gbWQgOiBsZCA6IChjZSA9IGkgfHwge30pICYmICgic2NhbGUiID09PSBlID8gbmQgOiBvZCkgOiB0LnN0eWxlICYmICFyKHQuc3R5bGVbZV0pID8gamQgOiB+ZS5pbmRleE9mKCItIikgPyBrZCA6IEh0KHQsIGUpIH0sIGNvcmU6IHsgX3JlbW92ZVByb3BlcnR5OiBCZCwgX2dldE1hdHJpeDogUGQgfSB9OwogICAgaGUudXRpbHMuY2hlY2tQcmVmaXggPSBqZSwgdXIgPSBiYSgoc3IgPSAieCx5LHosc2NhbGUsc2NhbGVYLHNjYWxlWSx4UGVyY2VudCx5UGVyY2VudCIpICsgIiwiICsgKG9yID0gInJvdGF0aW9uLHJvdGF0aW9uWCxyb3RhdGlvblksc2tld1gsc2tld1kiKSArICIsdHJhbnNmb3JtLHRyYW5zZm9ybU9yaWdpbixzdmdPcmlnaW4sZm9yY2UzRCxzbW9vdGhPcmlnaW4sdHJhbnNmb3JtUGVyc3BlY3RpdmUiLCBmdW5jdGlvbih0KSB7IEZlW3RdID0gMSB9KSwgYmEob3IsIGZ1bmN0aW9uKHQpIHsgVS51bml0c1t0XSA9ICJkZWciLCBaZVt0XSA9IDEgfSksIHFlW3VyWzEzXV0gPSBzciArICIsIiArIG9yLCBiYSgiMDp0cmFuc2xhdGVYLDE6dHJhbnNsYXRlWSwyOnRyYW5zbGF0ZVosODpyb3RhdGUsODpyb3RhdGlvblosODpyb3RhdGVaLDk6cm90YXRlWCwxMDpyb3RhdGVZIiwgZnVuY3Rpb24odCkgeyB2YXIgZSA9IHQuc3BsaXQoIjoiKTsKICAgICAgICBxZVtlWzFdXSA9IHVyW2VbMF1dIH0pLCBiYSgieCx5LHosdG9wLHJpZ2h0LGJvdHRvbSxsZWZ0LHdpZHRoLGhlaWdodCxmb250U2l6ZSxwYWRkaW5nLG1hcmdpbixwZXJzcGVjdGl2ZSIsIGZ1bmN0aW9uKHQpIHsgVS51bml0c1t0XSA9ICJweCIgfSksIGhlLnJlZ2lzdGVyUGx1Z2luKGhyKTsgdmFyIGxyID0gaGUucmVnaXN0ZXJQbHVnaW4oaHIpIHx8IGhlLAogICAgICAgIGZyID0gbHIuY29yZS5Ud2VlbjsKICAgIGUuQmFjayA9IEFlLCBlLkJvdW5jZSA9IFNlLCBlLkNTU1BsdWdpbiA9IGhyLCBlLkNpcmMgPSBFZSwgZS5DdWJpYyA9IGtlLCBlLkVsYXN0aWMgPSBDZSwgZS5FeHBvID0gUmUsIGUuTGluZWFyID0gd2UsIGUuUG93ZXIwID0gZ2UsIGUuUG93ZXIxID0gdmUsIGUuUG93ZXIyID0geWUsIGUuUG93ZXIzID0gVGUsIGUuUG93ZXI0ID0gYmUsIGUuUXVhZCA9IHhlLCBlLlF1YXJ0ID0gT2UsIGUuUXVpbnQgPSBQZSwgZS5TaW5lID0gemUsIGUuU3RlcHBlZEVhc2UgPSBEZSwgZS5TdHJvbmcgPSBNZSwgZS5UaW1lbGluZUxpdGUgPSBVdCwgZS5UaW1lbGluZU1heCA9IFV0LCBlLlR3ZWVuTGl0ZSA9ICR0LCBlLlR3ZWVuTWF4ID0gZnIsIGUuZGVmYXVsdCA9IGxyLCBlLmdzYXAgPSBscjsgaWYgKHR5cGVvZih3aW5kb3cpID09PSAidW5kZWZpbmVkIiB8fCB3aW5kb3cgIT09IGUpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogITAgfSkgfSBlbHNlIHsgZGVsZXRlIGUuZGVmYXVsdCB9IH0pOw=="}},"time_used":41,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":38,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape03.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.081Z","timestamp":1785159465081,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape03.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 1791\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1791,"size_decoded":2056,"mime_type":"image/png","magic":"PNG image data, 102 x 100, 8-bit/color RGBA, non-interlaced","md5":"bdc4332c6a0b8e9941656dff1f04190c","sha1":"0852fdcf8c0aa94a86efc9092ed93421b4b118e1","sha256":"20d79b0318ecbcf29b930aca690a1f1d5b7cb1e78d595f7a059f896b2de79ac2","sha512":"e9c7a2a46f5428a64b1e020e52b28ed7dadfbe80d96b8370a544e41522f08662dd45eea02bed10079088accd11cd9f6b300eaaa8ad4167fc06085c5132c85945","ssdeep":"","tlshash":"f631e9c24120c6514c6fe8b4c125863b9dbba8288be4d519f6550a2ed312f94a539891","first_seen":"2025-10-13T02:30:07.746842Z","last_seen":"2026-07-27T13:38:47.762026Z","times_seen":11,"resource_available":false,"data":"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"}},"time_used":68,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":63,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/logo/w_logo.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.086Z","timestamp":1785159465086,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/logo/w_logo.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Wed, 22 Apr 2026 23:02:52 GMT\r\naccept-ranges: bytes\r\ncontent-length: 26607\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":26607,"size_decoded":26873,"mime_type":"image/png","magic":"PNG image data, 754 x 194, 8-bit/color RGBA, non-interlaced","md5":"4b8193f70e36a501c7b85d4350a19969","sha1":"1e6d5699a0b84feedf9a15cff997f6017d637c7d","sha256":"2b5d30de14876982a59c454337b1dcf148a15a79d6c8304e91fa5043a7b6a8ed","sha512":"ee5ea9d185de72b8e27347f64f02d930a0740daf9ba514b9fd524c6f43afbb5946033b867d4e81907a5b55d8c1636d205dfffb1fd6f312e41d516c2310de5603","ssdeep":"768:YF3moVAv8Hf98CIGq/IZBkGxskSm2mC+vXvnSQQ4:YRmoVMEqgLhxdvXqQT","tlshash":"86c2e13d00433009a39f9d5489c4e94dcd728ec4efd25457bb9b3d8fa61a1a42f305ba","first_seen":"2026-07-27T07:42:30.716812Z","last_seen":"2026-07-27T13:38:47.771349Z","times_seen":3,"resource_available":false,"data":"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vLDwG/eE8/s3BCkeAAAACXBIWXMAAC4jAAAuIwF4pT92AAADZWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+PGV4aWY6RGF0ZVRpbWVPcmlnaW5hbD4yMDI2LTA0LTIyVDAzOjIwOjMzLjA5MDwvZXhpZjpEYXRlVGltZU9yaWdpbmFsPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj48eG1wOkNyZWF0ZURhdGU+MjAyNi0wNC0yMlQwMzoyMDozMy4wOTA8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj48ZGM6Y3JlYXRvcj48cmRmOlNlcSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6bGk+VGFuc2k8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0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"}},"time_used":62,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":55,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/main.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.818Z","timestamp":1785159464818,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/main.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 2101\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":11209,"size_decoded":2338,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"b4d531f45ee0f66e3acec89efe9c7480","sha1":"5257ad2a3d4ccf0eec1a7867986598c7bc053308","sha256":"a6e56dea72365eddbaad8ea1fb03e3afa30dd340c41e8d6ab5ae5629c2bc863c","sha512":"0a759cdb5ef9da1db7f0f7131efc8f9729d11553af9ff5c416d49dbb00db930177515bb92649fa66b3dada443997cee48141137cc181f65489e6910c42d1168f","ssdeep":"96:tLPeRdEmDBCmyxbaGCmOFlY7Mt0U61lRxUnF/s8T7mO1sR8AhOImggoAlXovjT7X:tCRd6myxbaiolY7WxszjGtkS0XBRy6","tlshash":"9b322001e17410725137393a5e1f5314a3a252c7adaf7d32b8ac4188df5d32c66babbb","first_seen":"2025-08-12T03:58:17.885081Z","last_seen":"2026-07-27T13:38:47.789362Z","times_seen":14,"resource_available":true,"data":"KGZ1bmN0aW9uICgkKSB7CgkidXNlIHN0cmljdCI7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAJCSBQcmVsb2FkZXIJCQkgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCmZ1bmN0aW9uIHByZWxvYWRlcigpIHsKCSQoJyNwcmVsb2FkZXInKS5kZWxheSgwKS5mYWRlT3V0KCk7Cn07CgokKHdpbmRvdykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CglwcmVsb2FkZXIoKTsKCXdvd0FuaW1hdGlvbigpOwogICAgYW9zQW5pbWF0aW9uKCk7CiAgICB0Z190aXRsZV9hbmltYXRpb24oKTsKfSk7CgoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAJCU1vYmlsZSBNZW51CQkJICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovL1N1Yk1lbnUgRHJvcGRvd24gVG9nZ2xlCmlmICgkKCcudGdtZW51X193cmFwIGxpLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gdWwnKS5sZW5ndGgpIHsKCSQoJy50Z21lbnVfX3dyYXAgLm5hdmlnYXRpb24gbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbicpLmFwcGVuZCgnPGRpdiBjbGFzcz0iZHJvcGRvd24tYnRuIj48c3BhbiBjbGFzcz0icGx1cy1saW5lIj48L3NwYW4+PC9kaXY+Jyk7Cn0KCi8vTW9iaWxlIE5hdiBIaWRlIFNob3cKaWYgKCQoJy50Z21vYmlsZV9fbWVudScpLmxlbmd0aCkgewoKCXZhciBtb2JpbGVNZW51Q29udGVudCA9ICQoJy50Z21lbnVfX3dyYXAgLnRnbWVudV9fbWFpbi1tZW51JykuaHRtbCgpOwoJJCgnLnRnbW9iaWxlX19tZW51IC50Z21vYmlsZV9fbWVudS1ib3ggLnRnbW9iaWxlX19tZW51LW91dGVyJykuYXBwZW5kKG1vYmlsZU1lbnVDb250ZW50KTsKCgkvL0Ryb3Bkb3duIEJ1dHRvbgoJJCgnLnRnbW9iaWxlX19tZW51IGxpLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLmRyb3Bkb3duLWJ0bicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKCQkkKHRoaXMpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7CgkJJCh0aGlzKS5wcmV2KCd1bCcpLnNsaWRlVG9nZ2xlKDMwMCk7Cgl9KTsKCS8vTWVudSBUb2dnbGUgQnRuCgkkKCcubW9iaWxlLW5hdi10b2dnbGVyJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoJCSQoJ2JvZHknKS5hZGRDbGFzcygnbW9iaWxlLW1lbnUtdmlzaWJsZScpOwoJfSk7CgoJLy9NZW51IFRvZ2dsZSBCdG4KCSQoJy50Z21vYmlsZV9fbWVudS1iYWNrZHJvcCwgLnRnbW9iaWxlX19tZW51IC5jbG9zZS1idG4nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CgkJJCgnYm9keScpLnJlbW92ZUNsYXNzKCdtb2JpbGUtbWVudS12aXNpYmxlJyk7Cgl9KTsKfTsKCgoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCT0gICAgICAgICAgIERhdGEgQmFja2dyb3VuZCAgICAgICAgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiQoIltkYXRhLWJhY2tncm91bmRdIikuZWFjaChmdW5jdGlvbiAoKSB7CgkkKHRoaXMpLmNzcygiYmFja2dyb3VuZC1pbWFnZSIsICJ1cmwoIiArICQodGhpcykuYXR0cigiZGF0YS1iYWNrZ3JvdW5kIikgKyAiKSIpCn0pCgoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAgTWVudSBzdGlja3kgJiBTY3JvbGwgdG8gdG9wICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwokKHdpbmRvdykub24oJ3Njcm9sbCcsIGZ1bmN0aW9uICgpIHsKCXZhciBzY3JvbGwgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7CglpZiAoc2Nyb2xsIDwgMjQ1KSB7CgkJJCgiI3N0aWNreS1oZWFkZXIiKS5yZW1vdmVDbGFzcygic3RpY2t5LW1lbnUiKTsKCQkkKCcuc2Nyb2xsLXRvLXRhcmdldCcpLnJlbW92ZUNsYXNzKCdvcGVuJyk7CiAgICAgICAgJCgiI2hlYWRlci1maXhlZC1oZWlnaHQiKS5yZW1vdmVDbGFzcygiYWN0aXZlLWhlaWdodCIpOwoKCX0gZWxzZSB7CgkJJCgiI3N0aWNreS1oZWFkZXIiKS5hZGRDbGFzcygic3RpY2t5LW1lbnUiKTsKCQkkKCcuc2Nyb2xsLXRvLXRhcmdldCcpLmFkZENsYXNzKCdvcGVuJyk7CiAgICAgICAgJCgiI2hlYWRlci1maXhlZC1oZWlnaHQiKS5hZGRDbGFzcygiYWN0aXZlLWhlaWdodCIpOwoJfQp9KTsKCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAJCSBTY3JvbGwgVXAgIAkgICAgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCmlmICgkKCcuc2Nyb2xsLXRvLXRhcmdldCcpLmxlbmd0aCkgewogICQoIi5zY3JvbGwtdG8tdGFyZ2V0Iikub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgdmFyIHRhcmdldCA9ICQodGhpcykuYXR0cignZGF0YS10YXJnZXQnKTsKICAgIC8vIGFuaW1hdGUKICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHsKICAgICAgc2Nyb2xsVG9wOiAkKHRhcmdldCkub2Zmc2V0KCkudG9wCiAgICB9LCAxMDAwKTsKCiAgfSk7Cn0KCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAgICAgICAgIEhlYWRlciBTZWFyY2ggICAgICAgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiQoIi5zZWFyY2gtb3Blbi1idG4iKS5vbigiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAkKCIuc2VhcmNoX19wb3B1cCIpLmFkZENsYXNzKCJzZWFyY2gtb3BlbmVkIik7CiAgICAkKCIuc2VhcmNoLXBvcHVwLW92ZXJsYXkiKS5hZGRDbGFzcygic2VhcmNoLXBvcHVwLW92ZXJsYXktb3BlbiIpOwp9KTsKJCgiLnNlYXJjaC1jbG9zZS1idG4iKS5vbigiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAkKCIuc2VhcmNoX19wb3B1cCIpLnJlbW92ZUNsYXNzKCJzZWFyY2gtb3BlbmVkIik7CiAgICAkKCIuc2VhcmNoLXBvcHVwLW92ZXJsYXkiKS5yZW1vdmVDbGFzcygic2VhcmNoLXBvcHVwLW92ZXJsYXktb3BlbiIpOwp9KTsKCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9ICAgICBPZmZjYW52YXMgTWVudSAgICAgID0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KJCgiLm1lbnUtdGlnZ2VyIikub24oImNsaWNrIiwgZnVuY3Rpb24gKCkgewoJJCgiLm9mZkNhbnZhc19faW5mbywgLm9mZkNhbnZhc19fb3Zlcmx5IikuYWRkQ2xhc3MoImFjdGl2ZSIpOwoJcmV0dXJuIGZhbHNlOwp9KTsKJCgiLm1lbnUtY2xvc2UsIC5vZmZDYW52YXNfX292ZXJseSIpLm9uKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKCSQoIi5vZmZDYW52YXNfX2luZm8sIC5vZmZDYW52YXNfX292ZXJseSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsKfSk7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAgICAgICBicmFuZCBhY3RpdmUgICAgICAgICAgICAgID0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KdmFyIHN3aXBlcjIgPSBuZXcgU3dpcGVyKCIuc2xpZGVyX19hY3RpdmUiLCB7CiAgICBzcGFjZUJldHdlZW46IDAsCiAgICBlZmZlY3Q6ICJmYWRlIiwKICAgIGxvb3A6IHRydWUsCiAgICBhdXRvcGxheTogewogICAgICAgIGRlbGF5OiA2MDAwLAogICAgfSwKfSk7Cgp2YXIgc3dpcGVyMyA9IG5ldyBTd2lwZXIoIi5zbGlkZXJfYmFuZXJfX2FjdGl2ZSIsIHsKICAgIHNwYWNlQmV0d2VlbjogMCwKICAgIC8vIGVmZmVjdDogImZhZGUiLAogICAgbG9vcDogdHJ1ZSwKICAgIGF1dG9wbGF5OiB7CiAgICAgICAgZGVsYXk6IDYwMDAsCiAgICB9LAogICAgIC8vIE5hdmlnYXRpb24gYXJyb3dzCiAgICAgbmF2aWdhdGlvbjogewogICAgICAgIG5leHRFbDogJy5idXR0b24tc3dpcGVyLW5leHQnLAogICAgICAgIHByZXZFbDogJy5idXR0b24tc3dpcGVyLXByZXYnLAogICAgfSwKICAgIHBhZ2luYXRpb246IHsKICAgICAgICBlbDogJy5zd2lwZXItcGFnaW5hdGlvbi10ZXN0aW1vbmlhbHMnLAogICAgICAgIGNsaWNrYWJsZTogdHJ1ZQogICAgfSwKfSk7Cgp2YXIgc3dpcGVyNCA9IG5ldyBTd2lwZXIoIi5zbGlkZXJfcGFydG5lcnNfX2FjdGl2ZSIsIHsKICAgIHNwYWNlQmV0d2VlbjogMCwKICAgIHNsaWRlc1BlclZpZXc6ICJhdXRvIiwKCiAgICAvLyBlZmZlY3Q6ICJmYWRlIiwKICAgIGxvb3A6IHRydWUsCiAgICBhdXRvcGxheTogewogICAgICAgIGRlbGF5OiA2MDAwLAogICAgfSwKICAgICAvLyBOYXZpZ2F0aW9uIGFycm93cwogICAgIG5hdmlnYXRpb246IHsKICAgICAgICBuZXh0RWw6ICcuYnV0dG9uLXN3aXBlci1uZXh0JywKICAgICAgICBwcmV2RWw6ICcuYnV0dG9uLXN3aXBlci1wcmV2JywKICAgIH0sCn0pOwoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgICAgICAgIGJyYW5kIGFjdGl2ZSAgICAgICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwp2YXIgc2xpZGVyID0gbmV3IFN3aXBlcignLmJyYW5kLWFjdGl2ZScsIHsKICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICBzcGFjZUJldHdlZW46IDMwLApsb29wOiB0cnVlLAphdXRvcGxheTogewogICAgICAgIGRlbGF5OiAyMDAwLAogICAgfSwKICAgIGJyZWFrcG9pbnRzOiB7CiAgICAgICAgJzEyMDAnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDYsCiAgICAgICAgfSwKICAgICAgICAnOTkyJzogewogICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA1LAogICAgICAgIH0sCiAgICAgICAgJzc2OCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogNCwKICAgICAgICB9LAogICAgICAgICc1NzYnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDMsCiAgICAgICAgfSwKICAgICAgICAnMCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMiwKICAgICAgICB9LAogICAgfSwKfSk7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAgICAgICB0ZXN0aW1vbmlhbHMgYWN0aXZlICAgICAgICAgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCnZhciBzbGlkZXIgPSBuZXcgU3dpcGVyKCcudGVzdGltaW5pYWxzLWFjdGl2ZScsIHsKICAgIHNsaWRlc1BlclZpZXc6IDMsCiAgICBzcGFjZUJldHdlZW46IDI0LAogICAgbG9vcDogdHJ1ZSwKICAgIGJyZWFrcG9pbnRzOiB7CiAgICAgICAgJzEyMDAnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDMsCiAgICAgICAgfSwKICAgICAgICAnOTkyJzogewogICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLAogICAgICAgIH0sCiAgICAgICAgJzc2OCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMiwKICAgICAgICB9LAogICAgICAgICc1NzYnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgfSwKICAgICAgICAnMCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICB9LAogICAgfSwKfSk7Cgp2YXIgc2xpZGVyX3Rlc3QgPSBuZXcgU3dpcGVyKCcudGVzdGltaW5pYWxzLWFjdGl2ZS0yJywgewogICAgc2xpZGVzUGVyVmlldzogMiwKICAgIHNwYWNlQmV0d2VlbjogMjQsCiAgICBsb29wOiB0cnVlLAogICAgbmF2aWdhdGlvbjogewogICAgICAgIG5leHRFbDogJy5idXR0b24tc3dpcGVyLXRlc3RpbW9uaWFsLW5leHQnLAogICAgICAgIHByZXZFbDogJy5idXR0b24tc3dpcGVyLXRlc3RpbW9uaWFsLXByZXYnLAogICAgfSwKICAgIGJyZWFrcG9pbnRzOiB7CiAgICAgICAgJzEyMDAnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDIsCiAgICAgICAgfSwKICAgICAgICAnOTkyJzogewogICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyLAogICAgICAgIH0sCiAgICAgICAgJzc2OCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICB9LAogICAgICAgICc1NzYnOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgfSwKICAgICAgICAnMCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICB9LAogICAgfSwKfSk7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAgICAgICBwcm9qZWN0IGFjdGl2ZSAgICAgICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwp2YXIgc3dpcGVyMiA9IG5ldyBTd2lwZXIoIi5wcm9qZWN0LWFjdGl2ZSIsIHsKICAgIHNwYWNlQmV0d2VlbjogMCwKICAgIGxvb3A6IHRydWUsCiAgICBhdXRvcGxheTogewogICAgICAgIGRlbGF5OiA2MDAwLAogICAgfSwKICAgIHRodW1iczogewogICAgICAgIHN3aXBlcjogc3dpcGVyLAogICAgfSwKICAgICAvLyBOYXZpZ2F0aW9uIGFycm93cwogICAgbmF2aWdhdGlvbjogewogICAgICAgIG5leHRFbDogJy5wcm9qZWN0LWJ1dHRvbi1uZXh0JywKICAgICAgICBwcmV2RWw6ICcucHJvamVjdC1idXR0b24tcHJldicsCiAgICB9LAp9KTsKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgICAgICAgIGJyYW5kIGFjdGl2ZSAgICAgICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwp2YXIgc2xpZGVyID0gbmV3IFN3aXBlcignLnByb2plY3QtYWN0aXZlLXR3bycsIHsKICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICBzcGFjZUJldHdlZW46IDUsCiAgICBsb29wOiB0cnVlLAogICAgYnJlYWtwb2ludHM6IHsKICAgICAgICAnMTIwMCc6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogNCwKICAgICAgICB9LAogICAgICAgICc5OTInOiB7CiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDMsCiAgICAgICAgfSwKICAgICAgICAnNzY4JzogewogICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyLAogICAgICAgIH0sCiAgICAgICAgJzU3Nic6IHsKICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMiwKICAgICAgICB9LAogICAgICAgICcwJzogewogICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgIH0sCiAgICB9LAp9KTsKCgoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCT0gICAgICAgICAgdGVzdGltb25pYWwgYWN0aXZlICAgICAgICAgICAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCnZhciBzd2lwZXIgPSBuZXcgU3dpcGVyKCIudGVzdGltb25pYWwtbmF2IiwgewogICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgc2xpZGVzUGVyVmlldzogNCwKfSk7CnZhciBzd2lwZXIyID0gbmV3IFN3aXBlcigiLnRlc3RpbW9uaWFsLWFjdGl2ZSIsIHsKICAgIHNwYWNlQmV0d2VlbjogMCwKICAgIGxvb3A6IHRydWUsCiAgICBhdXRvcGxheTogewogICAgICAgIGRlbGF5OiA2MDAwLAogICAgfSwKICAgIHRodW1iczogewogICAgICAgIHN3aXBlcjogc3dpcGVyLAogICAgfSwKICAgIC8vIEFuZCBpZiB3ZSBuZWVkIHNjcm9sbGJhcgogICAgc2Nyb2xsYmFyOiB7CiAgICAgICAgZWw6ICIuc3dpcGVyLXNjcm9sbGJhciIsCiAgICAgICAgZHJhZ2dhYmxlOiAhMCwKICAgIH0sCn0pOwoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgICAgICAgIHRlc3RpbW9uaWFsIGFjdGl2ZSB0d28gICAgICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwp2YXIgc3dpcGVyMyA9IG5ldyBTd2lwZXIoIi50ZXN0aW1vbmlhbC1hY3RpdmUtdHdvIiwgewogICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgbG9vcDogdHJ1ZSwKICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICBzcGFjZUJldHdlZW46IDAsCiAgICBhdXRvcGxheTogewogICAgICAgIGRlbGF5OiA2MDAwLAogICAgfSwKICAgICAvLyBOYXZpZ2F0aW9uIGFycm93cwogICAgbmF2aWdhdGlvbjogewogICAgICAgIG5leHRFbDogJy50ZXN0aW1vbmlhbC1idXR0b24tbmV4dCcsCiAgICAgICAgcHJldkVsOiAnLnRlc3RpbW9uaWFsLWJ1dHRvbi1wcmV2JywKICAgIH0sCn0pOwoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgICAgICAgIHRlc3RpbW9uaWFsIGFjdGl2ZSAgICAgICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwp2YXIgc3dpcGVyID0gbmV3IFN3aXBlcigiLnRlc3RpbW9uaWFsX19uYXYtdGhyZWUiLCB7CiAgICBzcGFjZUJldHdlZW46IDAsCiAgICBzbGlkZXNQZXJWaWV3OiA0LAp9KTsKdmFyIHN3aXBlcjIgPSBuZXcgU3dpcGVyKCIudGVzdGltb25pYWwtYWN0aXZlLXRocmVlIiwgewogICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgbG9vcDogdHJ1ZSwKICAgIGF1dG9wbGF5OiB7CiAgICAgICAgZGVsYXk6IDYwMDAsCiAgICB9LAogICAgdGh1bWJzOiB7CiAgICAgICAgc3dpcGVyOiBzd2lwZXIsCiAgICB9LAogICAgLy8gTmF2aWdhdGlvbiBhcnJvd3MKICAgIG5hdmlnYXRpb246IHsKICAgICAgICBuZXh0RWw6ICcudGVzdGltb25pYWwtdHdvLWJ1dHRvbi1uZXh0JywKICAgICAgICBwcmV2RWw6ICcudGVzdGltb25pYWwtdHdvLWJ1dHRvbi1wcmV2JywKICAgIH0sCn0pOwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCT0gICAgICAgIFRlYW0gU29jaWFsIEFjdGl2ZSAJICAgICAgID0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KJCgnLnNvY2lhbC10b2dnbGUtaWNvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKCSQodGhpcykucGFyZW50KCkuZmluZCgndWwnKS5zbGlkZVRvZ2dsZSg0MDApOwoJJCh0aGlzKS5maW5kKCdpJykudG9nZ2xlQ2xhc3MoJ2ZhLXRpbWVzJyk7CglyZXR1cm4gZmFsc2U7Cn0pOwoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgIAkJcHJpY2luZyBBY3RpdmUgIAkgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwokKCIucHJpY2luZ19fdGFiLXN3aXRjaGVyLCAucHJpY2luZ19fdGFiLWJ0biIpLm9uKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKCSQoIi5wcmljaW5nX190YWItc3dpdGNoZXIsIC5wcmljaW5nX190YWItYnRuIikudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpLAoJJCgiLnByaWNpbmdfX3RhYiIpLnRvZ2dsZUNsYXNzKCJzZWxlY2V0ZWQiKSwKCSQoIi5wcmljaW5nX19wcmljZSIpLnRvZ2dsZUNsYXNzKCJjaGFuZ2Utc3Vicy1kdXJhdGlvbiIpOwp9KTsKCgoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCT0gICAgCQlPZG9tZXRlciBBY3RpdmUgIAkgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwokKCcub2RvbWV0ZXInKS5hcHBlYXIoZnVuY3Rpb24gKGUpIHsKCXZhciBvZG8gPSAkKCIub2RvbWV0ZXIiKTsKCW9kby5lYWNoKGZ1bmN0aW9uICgpIHsKCQl2YXIgY291bnROdW1iZXIgPSAkKHRoaXMpLmF0dHIoImRhdGEtY291bnQiKTsKCQkkKHRoaXMpLmh0bWwoY291bnROdW1iZXIpOwoJfSk7Cn0pOwoKCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgIAkJTWFnbmlmaWMgUG9wdXAJCSAgICAgID0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KJCgnLnBvcHVwLWltYWdlJykubWFnbmlmaWNQb3B1cCh7Cgl0eXBlOiAnaW1hZ2UnLAoJZ2FsbGVyeTogewoJCWVuYWJsZWQ6IHRydWUKCX0KfSk7CgovKiBtYWduaWZpY1BvcHVwIHZpZGVvIHZpZXcgKi8KJCgnLnBvcHVwLXZpZGVvJykubWFnbmlmaWNQb3B1cCh7Cgl0eXBlOiAnaWZyYW1lJwp9KTsKCgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJPSAgICAJCSBXb3cgQWN0aXZlICAJICAgICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwpmdW5jdGlvbiB3b3dBbmltYXRpb24oKSB7Cgl2YXIgd293ID0gbmV3IFdPVyh7CgkJYm94Q2xhc3M6ICd3b3cnLAoJCWFuaW1hdGVDbGFzczogJ2FuaW1hdGVkJywKCQlvZmZzZXQ6IDAsCgkJbW9iaWxlOiBmYWxzZSwKCQlsaXZlOiB0cnVlCgl9KTsKCXdvdy5pbml0KCk7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cgk9ICAgICAgICAgICBBb3MgQWN0aXZlICAgICAgID0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KZnVuY3Rpb24gYW9zQW5pbWF0aW9uKCkgewoJQU9TLmluaXQoewoJCWR1cmF0aW9uOiAxMDAwLAoJCW1pcnJvcjogdHJ1ZSwKCQlvbmNlOiB0cnVlLAoJCWRpc2FibGU6ICdtb2JpbGUnLAoJfSk7Cn0KCiQoIi52aWV3LXBhc3N3b3JkIikub24oImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgIHZhciBfcGFyZW50ID0gJCh0aGlzKS5wYXJlbnQoImRpdiIpOwogICAgdmFyIF9pbnB1dCA9IF9wYXJlbnQuZmluZCgiaW5wdXQiKTsKICAgIGlmIChfaW5wdXQuYXR0cigidHlwZSIpID09ICJwYXNzd29yZCIpIHsKICAgICAgICBfaW5wdXQuYXR0cigidHlwZSIsInRleHQiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgX2lucHV0LmF0dHIoInR5cGUiLCJwYXNzd29yZCIpOwogICAgfQp9KQoKJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgdmFyIF9jb250YWluZXIgPSAkKCdtYWluIC5jb250YWluZXInKTsKICAgIHZhciBfd2luZG93X3cgPSAkKHdpbmRvdykud2lkdGgoKTsKICAgIHZhciBfY29udGFpbmVyX3cgPSBfY29udGFpbmVyLndpZHRoKCk7CiAgICB2YXIgX3NwYWNlID0gKChfd2luZG93X3cgLSBfY29udGFpbmVyX3cpIC8gMikgLSAxNTsKICAgIHZhciBfZm9ybV9xdW90ZSA9ICQoIi5zbGlkZXJfX2FyZWEtaG9tZTggLmJveC1mb3JtLXF1b3RlIik7CiAgICBfZm9ybV9xdW90ZS5jc3MoInJpZ2h0IiwiIiArIF9zcGFjZSArICJweCIpOwp9KS5yZXNpemUoKTsKCn0pKGpRdWVyeSk7Cg=="}},"time_used":21,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/consulting_img.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.069Z","timestamp":1785159465069,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/consulting_img.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 39191\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":39191,"size_decoded":39458,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 392x260, components 3","md5":"b2415a27beefc0523b87c4f6a641a262","sha1":"d435765e0f57c6179b5898b5e5cd8b2bf7e6c994","sha256":"e3dc9b74407bc7203600f75ffd19ad17142e3e68e485fd51c77806b28c4e6951","sha512":"8a42777079756d2f4307ffab78854e561005b5b6bcd54806f74027621530552599edb0f12415e50192ae7e5f01285bbd4f01ff97c231fa34af093284369fbc8c","ssdeep":"768:SwBEvG/tiHMVQ3wl96wjM9Ywi6fcKaMeozHBMiB1zKB57IaeOlU+:SMaM84YwjMziazhzqinz+7ou","tlshash":"3e03e01fd4eb0403b61a867355b84acf5f45c423618cec868c9e2eeebcf5506c89f2a4","first_seen":"2025-10-03T03:28:59.228861Z","last_seen":"2026-07-27T13:38:47.767541Z","times_seen":6,"resource_available":false,"data":"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"}},"time_used":79,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":65,"receive":14,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.561Z","timestamp":1785159465561,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 433651\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-08-04T06:29:09.415181Z","times_seen":252335,"resource_available":false,"data":"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"}},"time_used":103,"timings":{"blocked":-1,"dns":3,"connect":33,"send":0,"wait":19,"receive":47,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/bg/choose_bg.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.714Z","timestamp":1785159465714,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/bg/choose_bg.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 56678\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":56678,"size_decoded":56945,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 871x712, components 3","md5":"89081e16f7d80de4ad742d1cf1e47265","sha1":"f618185c4c0aafe04800d7f8c60a6ce5cec13ac3","sha256":"c3422f7ac24629b3f09e84a512f2d261a2abf64e4af7f8a04a762c07ae0de766","sha512":"416794668452d7460df3910cef13dfa5654e3d984c06016c1c5ab7729f5868d052132eaa48901724fde05d4fe6f8fa4b7ad26d78e4a03188dee14acf115b5ce9","ssdeep":"1536:U4DI76/47oCY9nAdPDsTkRRZuwIQiQdwNpTuMR:fDy6XuPDsyHVTmNpTuMR","tlshash":"8443f1aa5290f303f83430bb8940b75ffe18f5e16987c692aa7b1f9272517c91bc5c85","first_seen":"2026-02-14T04:59:18.785702Z","last_seen":"2026-07-27T13:38:47.797975Z","times_seen":5,"resource_available":false,"data":"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"}},"time_used":53,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":40,"receive":13,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.smartsuppchat.com/loader.js?","fqdn":"www.smartsuppchat.com","domain":"smartsuppchat.com","tld":"com"},"ip":{"addr":"185.76.9.12","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.794Z","timestamp":1785159465794,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1161431244.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 14:34:49 GMT","end":"Wed, 02 Sep 2026 14:34:48 GMT"},"fingerprint":{"sha1":"77:06:42:CE:73:9F:CA:05:A3:6E:99:99:F2:3F:B7:EE:E4:60:E9:29","sha256":"E7:6E:68:C5:CD:6C:F6:14:84:A0:18:1A:D7:94:77:7A:28:F6:67:8E:90:58:94:AE:3A:65:6A:B7:95:0F:5D:1B"}}},"request":{"raw":"GET /loader.js? HTTP/1.1\r\nHost: www.smartsuppchat.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:49 GMT\r\ncontent-type: application/javascript\r\ncache-control: max-age=300, public, s-maxage=60\r\netag: W/\"6a2663cd-4668\"\r\nexpires: Mon, 08 Jun 2026 06:46:12 GMT\r\nlast-modified: Mon, 08 Jun 2026 06:40:13 GMT\r\nx-77-nzt: k+ReDAVsyq/M6FN+mJu7wbLecUyzE9sdCHFlo47ZK2aHHPDQFHR0uemRXHtMHGpte8biy8k\r\nx-77-nzt-ray: e2f75420ad173bd72d5f676a66ae5804\r\nx-77-cache: HIT\r\nx-77-age: 7\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":18024,"size_decoded":6041,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (17951)","md5":"218d24439d4e2c0990f35338a7ac220c","sha1":"5a7b913584c1244bf61beab9dc644204d130101c","sha256":"efb497f7159de26ea5e0521d675d909dc063e36d0d23c2ad96fa9109b73ee263","sha512":"17af39bfdc350c9d1f8dd74652641d0c028881ecb3935d2d9fdb763d24136665d135d00219aabac57693112e2314d4fa91b802ba2662a1580aa35c5e0b6e624b","ssdeep":"384:2/xzy2A3wyxNeBWbEgl/EuVaBWbE0rIcvqSI/aQ/UpG:2/xzy2A3wXscuVaAxka05","tlshash":"4182b7cc7691b16543ab61b4843f620ff1376929740d8865b965eae13cb8c8ed037fb8","first_seen":"2026-03-30T19:01:55.527327Z","last_seen":"2026-08-04T06:18:03.8209Z","times_seen":7979,"resource_available":true,"data":"LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgbG9hZGVyLnRlbXBsYXRlLmpzLkxJQ0VOU0UudHh0ICovCigoKT0+e3ZhciB0PXs3MTUodCl7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7LTEhPT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNU0lFIDEwIikmJih0PSEwKTt2YXIgZSxuPVtdLHI9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQsbz10P3IuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iik6ci5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwsaT0iRE9NQ29udGVudExvYWRlZCIscz1yJiYobz8vXmxvYWRlZHxeYy86L15sb2FkZWR8Xml8XmMvKS50ZXN0KHIucmVhZHlTdGF0ZSk7cmV0dXJuIXMmJnImJnIuYWRkRXZlbnRMaXN0ZW5lcihpLGU9ZnVuY3Rpb24oKXtmb3Ioci5yZW1vdmVFdmVudExpc3RlbmVyKGksZSkscz0xO2U9bi5zaGlmdCgpOyllKCl9KSxmdW5jdGlvbih0KXtzP3NldFRpbWVvdXQodCwwKTpuLnB1c2godCl9fSgpfSw3NjEodCxlLG4peyJ1c2Ugc3RyaWN0Ijtjb25zdCByPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gZS5yZXNvbHZlKHQoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiBufSl9LGZ1bmN0aW9uKG4pe3JldHVybiBlLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVqZWN0KG4pfSl9KX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHRoaXMoZnVuY3Rpb24oZSxuKXtpZighdHx8dm9pZCAwPT09dC5sZW5ndGgpcmV0dXJuIG4obmV3IFR5cGVFcnJvcih0eXBlb2YgdCsiICIrdCsiIGlzIG5vdCBpdGVyYWJsZShjYW5ub3QgcmVhZCBwcm9wZXJ0eSBTeW1ib2woU3ltYm9sLml0ZXJhdG9yKSkiKSk7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCk7aWYoMD09PXIubGVuZ3RoKXJldHVybiBlKFtdKTt2YXIgbz1yLmxlbmd0aDtmdW5jdGlvbiBpKHQsbil7aWYobiYmKCJvYmplY3QiPT10eXBlb2Ygbnx8ImZ1bmN0aW9uIj09dHlwZW9mIG4pKXt2YXIgcz1uLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpcmV0dXJuIHZvaWQgcy5jYWxsKG4sZnVuY3Rpb24oZSl7aSh0LGUpfSxmdW5jdGlvbihuKXtyW3RdPXtzdGF0dXM6InJlamVjdGVkIixyZWFzb246bn0sMD09PS0tbyYmZShyKX0pfXJbdF09e3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTpufSwwPT09LS1vJiZlKHIpfWZvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKWkocyxyW3NdKX0pfTtmdW5jdGlvbiBpKHQsZSl7dGhpcy5uYW1lPSJBZ2dyZWdhdGVFcnJvciIsdGhpcy5lcnJvcnM9dCx0aGlzLm1lc3NhZ2U9ZXx8IiJ9aS5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlO2NvbnN0IHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IGUoZnVuY3Rpb24obixyKXtpZighdHx8dm9pZCAwPT09dC5sZW5ndGgpcmV0dXJuIHIobmV3IFR5cGVFcnJvcigiUHJvbWlzZS5hbnkgYWNjZXB0cyBhbiBhcnJheSIpKTt2YXIgbz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KTtpZigwPT09by5sZW5ndGgpcmV0dXJuIHIoKTtmb3IodmFyIHM9W10sYT0wO2E8by5sZW5ndGg7YSsrKXRyeXtlLnJlc29sdmUob1thXSkudGhlbihuKS5jYXRjaChmdW5jdGlvbih0KXtzLnB1c2godCkscy5sZW5ndGg9PT1vLmxlbmd0aCYmcihuZXcgaShzLCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZCIpKX0pfWNhdGNoKHQpe3IodCl9fSl9O3ZhciBhPXNldFRpbWVvdXQ7ZnVuY3Rpb24gYyh0KXtyZXR1cm4gQm9vbGVhbih0JiZ2b2lkIDAhPT10Lmxlbmd0aCl9ZnVuY3Rpb24gdSgpe31mdW5jdGlvbiBsKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fc3RhdGU9MCx0aGlzLl9oYW5kbGVkPSExLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9kZWZlcnJlZHM9W10sdyh0LHRoaXMpfWZ1bmN0aW9uIHAodCxlKXtmb3IoOzM9PT10Ll9zdGF0ZTspdD10Ll92YWx1ZTswIT09dC5fc3RhdGU/KHQuX2hhbmRsZWQ9ITAsbC5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXt2YXIgbj0xPT09dC5fc3RhdGU/ZS5vbkZ1bGZpbGxlZDplLm9uUmVqZWN0ZWQ7aWYobnVsbCE9PW4pe3ZhciByO3RyeXtyPW4odC5fdmFsdWUpfWNhdGNoKHQpe3JldHVybiB2b2lkIGQoZS5wcm9taXNlLHQpfWYoZS5wcm9taXNlLHIpfWVsc2UoMT09PXQuX3N0YXRlP2Y6ZCkoZS5wcm9taXNlLHQuX3ZhbHVlKX0pKTp0Ll9kZWZlcnJlZHMucHVzaChlKX1mdW5jdGlvbiBmKHQsZSl7dHJ5e2lmKGU9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIik7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXt2YXIgbj1lLnRoZW47aWYoZSBpbnN0YW5jZW9mIGwpcmV0dXJuIHQuX3N0YXRlPTMsdC5fdmFsdWU9ZSx2b2lkIGgodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgdygocj1uLG89ZSxmdW5jdGlvbigpe3IuYXBwbHkobyxhcmd1bWVudHMpfSksdCl9dC5fc3RhdGU9MSx0Ll92YWx1ZT1lLGgodCl9Y2F0Y2goZSl7ZCh0LGUpfXZhciByLG99ZnVuY3Rpb24gZCh0LGUpe3QuX3N0YXRlPTIsdC5fdmFsdWU9ZSxoKHQpfWZ1bmN0aW9uIGgodCl7Mj09PXQuX3N0YXRlJiYwPT09dC5fZGVmZXJyZWRzLmxlbmd0aCYmbC5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXt0Ll9oYW5kbGVkfHxsLl91bmhhbmRsZWRSZWplY3Rpb25Gbih0Ll92YWx1ZSl9KTtmb3IodmFyIGU9MCxuPXQuX2RlZmVycmVkcy5sZW5ndGg7ZTxuO2UrKylwKHQsdC5fZGVmZXJyZWRzW2VdKTt0Ll9kZWZlcnJlZHM9bnVsbH1mdW5jdGlvbiB5KHQsZSxuKXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHcodCxlKXt2YXIgbj0hMTt0cnl7dChmdW5jdGlvbih0KXtufHwobj0hMCxmKGUsdCkpfSxmdW5jdGlvbih0KXtufHwobj0hMCxkKGUsdCkpfSl9Y2F0Y2godCl7aWYobilyZXR1cm47bj0hMCxkKGUsdCl9fWwucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4obnVsbCx0KX0sbC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBuPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHUpO3JldHVybiBwKHRoaXMsbmV3IHkodCxlLG4pKSxufSxsLnByb3RvdHlwZS5maW5hbGx5PXIsbC5hbGw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsKGZ1bmN0aW9uKGUsbil7aWYoIWModCkpcmV0dXJuIG4obmV3IFR5cGVFcnJvcigiUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheSIpKTt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KTtpZigwPT09ci5sZW5ndGgpcmV0dXJuIGUoW10pO3ZhciBvPXIubGVuZ3RoO2Z1bmN0aW9uIGkodCxzKXt0cnl7aWYocyYmKCJvYmplY3QiPT10eXBlb2Ygc3x8ImZ1bmN0aW9uIj09dHlwZW9mIHMpKXt2YXIgYT1zLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpcmV0dXJuIHZvaWQgYS5jYWxsKHMsZnVuY3Rpb24oZSl7aSh0LGUpfSxuKX1yW3RdPXMsMD09PS0tbyYmZShyKX1jYXRjaCh0KXtuKHQpfX1mb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKylpKHMscltzXSl9KX0sbC5hbnk9cyxsLmFsbFNldHRsZWQ9byxsLnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3Rvcj09PWw/dDpuZXcgbChmdW5jdGlvbihlKXtlKHQpfSl9LGwucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbChmdW5jdGlvbihlLG4pe24odCl9KX0sbC5yYWNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbChmdW5jdGlvbihlLG4pe2lmKCFjKHQpKXJldHVybiBuKG5ldyBUeXBlRXJyb3IoIlByb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5IikpO2Zvcih2YXIgcj0wLG89dC5sZW5ndGg7cjxvO3IrKylsLnJlc29sdmUodFtyXSkudGhlbihlLG4pfSl9LGwuX2ltbWVkaWF0ZUZuPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUmJmZ1bmN0aW9uKHQpe3NldEltbWVkaWF0ZSh0KX18fGZ1bmN0aW9uKHQpe2EodCwwKX0sbC5fdW5oYW5kbGVkUmVqZWN0aW9uRm49ZnVuY3Rpb24odCl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjoiLHQpfTtjb25zdCB2PWw7dmFyIGc9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYpcmV0dXJuIHNlbGY7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvdztpZih2b2lkIDAhPT1uLmcpcmV0dXJuIG4uZzt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBsb2NhdGUgZ2xvYmFsIG9iamVjdCIpfSgpOyJmdW5jdGlvbiIhPXR5cGVvZiBnLlByb21pc2U/Zy5Qcm9taXNlPXY6KGcuUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KGcuUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseT1yKSxnLlByb21pc2UuYWxsU2V0dGxlZHx8KGcuUHJvbWlzZS5hbGxTZXR0bGVkPW8pLGcuUHJvbWlzZS5hbnl8fChnLlByb21pc2UuYW55PXMpKX0sMzQ1KHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuU21hcnRzdXBwTG9hZGVyPXZvaWQgMDt2YXIgcj1uKDc0MCksbz1uKDg5MyksaT1uKDEzMCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5vcHRpb25zPXQsdGhpcy53aWRnZXRzPXt9LHRoaXMuY2hhdHM9dGhpcy53aWRnZXRzfXJldHVybiB0LnByb3RvdHlwZS5zZXREZWZhdWx0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zPSgwLG8ubWVyZ2VEZWVwKSh0aGlzLm9wdGlvbnMsdCksdGhpc30sdC5wcm90b3R5cGUuZ2V0Q2hhdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53aWRnZXRzW3RdfSx0LnByb3RvdHlwZS5nZXRXaWRnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud2lkZ2V0c1t0XX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHMpe3ZhciBjPSgwLG8ubWVyZ2VEZWVwKSh0aGlzLm9wdGlvbnMsZSk7YShjKTt2YXIgdT10aGlzLndpZGdldHNbdF09bmV3IGkuU21hcnRzdXBwV2lkZ2V0KHQsYyxuKTtyZXR1cm4gdS5faW5pdFByb21pc2U9KDAsby5yZXF1ZXN0KSgiIi5jb25jYXQoYy5ib290c3RyYXBVcmwsIi93aWRnZXQvIikuY29uY2F0KGMua2V5LCIuanNvbiIpKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBuPSgwLG8ucGFyc2VKU09OKSh0KTtyZXR1cm4gZGVsZXRlIGUuZmVhdHVyZXMsdS5pbml0KCgwLG8ubWVyZ2VEZWVwKShuLGUpLG4uZmVhdHVyZXMpLGUmJmUud2lkZ2V0VHJhY2tlckVuYWJsZWQmJigwLHIudHJhY2tPcHRpb25zKSh1Lm9wdGlvbnMsT2JqZWN0LmtleXMoZSkpLHdpbmRvdy5zbWFydHN1cHAuZ2V0QXNzZXRVcmw9dS5nZXRBc3NldFVybC5iaW5kKHUpLHMmJnModm9pZCAwLHUpLHUub3B0aW9ucy5yZW5kZXJUbyYmdS5yZW5kZXIodS5vcHRpb25zLnJlbmRlclRvKSxudWxsfSkuY2F0Y2goZnVuY3Rpb24odCl7cyYmcyh0KX0pLHV9LHQucHJvdG90eXBlLmNyZWF0ZVdpZGdldD1mdW5jdGlvbih0LGUsbil7dmFyIHM9dGhpcyxjPSgwLG8ubWVyZ2VEZWVwKSh0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIGEoYyksKDAsby5yZXF1ZXN0KSgiIi5jb25jYXQoYy5ib290c3RyYXBVcmwsIi93aWRnZXQvIikuY29uY2F0KGMua2V5LCIuanNvbiIpKS50aGVuKGZ1bmN0aW9uKGEpe3ZhciB1PSgwLG8ucGFyc2VKU09OKShhKSxsPXMud2lkZ2V0c1t0XT1uZXcgaS5TbWFydHN1cHBXaWRnZXQodCxjLG4pO3JldHVybiBkZWxldGUgZS5mZWF0dXJlcyxsLmluaXQoKDAsby5tZXJnZURlZXApKHUsZSksdS5mZWF0dXJlcyksZSYmZS53aWRnZXRUcmFja2VyRW5hYmxlZCYmKDAsci50cmFja09wdGlvbnMpKGwub3B0aW9ucyxPYmplY3Qua2V5cyhlKSksd2luZG93LnNtYXJ0c3VwcC5nZXRBc3NldFVybD1sLmdldEFzc2V0VXJsLmJpbmQobCksbH0pfSx0fSgpO2UuU21hcnRzdXBwTG9hZGVyPXM7dmFyIGE9ZnVuY3Rpb24odCl7aWYoIXQuYm9vdHN0cmFwVXJsKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBvcHRpb24gYm9vdHN0cmFwVXJsIik7aWYoIXQua2V5KXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBvcHRpb24ga2V5Iil9fSw3NDAodCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBzKHQpe3RyeXtjKHIubmV4dCh0KSl9Y2F0Y2godCl7aSh0KX19ZnVuY3Rpb24gYSh0KXt0cnl7YyhyLnRocm93KHQpKX1jYXRjaCh0KXtpKHQpfX1mdW5jdGlvbiBjKHQpe3ZhciBlO3QuZG9uZT9vKHQudmFsdWUpOihlPXQudmFsdWUsZSBpbnN0YW5jZW9mIG4/ZTpuZXcgbihmdW5jdGlvbih0KXt0KGUpfSkpLnRoZW4ocyxhKX1jKChyPXIuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KX0sbz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0LGUpe3ZhciBuLHIsbyxpLHM9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGEoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2kmJihpPTAsYVswXSYmKHM9MCkpLHM7KXRyeXtpZihuPTEsciYmKG89MiZhWzBdP3IucmV0dXJuOmFbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixhWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihhPVsyJmFbMF0sby52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6bz1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKysscj1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG89KG89cy50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe3M9MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFvfHxhWzFdPm9bMF0mJmFbMV08b1szXSkpe3MubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmcy5sYWJlbDxvWzFdKXtzLmxhYmVsPW9bMV0sbz1hO2JyZWFrfWlmKG8mJnMubGFiZWw8b1syXSl7cy5sYWJlbD1vWzJdLHMub3BzLnB1c2goYSk7YnJlYWt9b1syXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfWE9ZS5jYWxsKHQscyl9Y2F0Y2godCl7YT1bNix0XSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0oW2EsY10pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnRyYWNrT3BlcmF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOmlmKCF0LndpZGdldFRyYWNrZXJVcmx8fHMuaW5kZXhPZihlKT49MHx8YS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTApcmV0dXJuWzIsITFdO24ubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG4udHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCwoMCxpLnJlcXVlc3QpKHQud2lkZ2V0VHJhY2tlclVybCsiL3RyYWNrL29wZXJhdGlvbj9rZXk9Ii5jb25jYXQodC5rZXksIiZvcGVyYXRpb249IikuY29uY2F0KGUsIiZkb21haW49IikuY29uY2F0KHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSkpXTtjYXNlIDI6cmV0dXJuIG4uc2VudCgpLFsyLCEwXTtjYXNlIDM6cmV0dXJuIG4uc2VudCgpLFsyLCExXTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LGUudHJhY2tPcHRpb25zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIG8odGhpcyxmdW5jdGlvbihyKXtzd2l0Y2goci5sYWJlbCl7Y2FzZSAwOmlmKCF0LndpZGdldFRyYWNrZXJVcmx8fGEuaW5kZXhPZih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpPj0wKXJldHVyblsyLCExXTtpZigwPT09KG49ZS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGMuaW5kZXhPZih0KTwwfSkpLmxlbmd0aClyZXR1cm5bMiwhMV07ci5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gci50cnlzLnB1c2goWzEsMywsNF0pLFs0LCgwLGkucmVxdWVzdCkodC53aWRnZXRUcmFja2VyVXJsKyIvdHJhY2svb3B0aW9ucz9rZXk9Ii5jb25jYXQodC5rZXksIiZvcHRpb25zPSIpLmNvbmNhdChuLmpvaW4oIiwiKSwiJmRvbWFpbj0iKS5jb25jYXQod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKSldO2Nhc2UgMjpyZXR1cm4gci5zZW50KCksWzIsITBdO2Nhc2UgMzpyZXR1cm4gci5zZW50KCksWzIsITFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX07dmFyIGk9big4OTMpLHM9WyJodG1sOmFwcGx5IiwiY2hhdDptZXNzYWdlIiwib24iXSxhPVsid3d3LnNtYXJ0c3VwcC5jb20iLCJhcHAuc21hcnRzdXBwLmNvbSJdLGM9WyJrZXkiLCJnYU9wdGlvbnMiLCJnYU5hbWUiLCJjb29raWVQcmVmaXgiLCJjb29raWVQYXRoIiwiY3Jvc3NEb21haW5FbmFibGVkIiwicG9zaXRpb24iLCJvcGVuT25UcmlnZ2VyIl19LDg5Myh0LGUpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5wYXJzZUpTT049ZS5yZXF1ZXN0PWUuY3JlYXRlTGluaz1lLmNyZWF0ZVNjcmlwdD1lLnJlc29sdmVUYXJnZXRFbGVtZW50PWUubWVyZ2VEZWVwPXZvaWQgMDt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0fTtlLm1lcmdlRGVlcD1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxyPTA7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbz17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIGk9b1tyXSxzPXRbcl07dm9pZCAwIT09cyYmKEFycmF5LmlzQXJyYXkoaSl8fEFycmF5LmlzQXJyYXkocyk/b1tyXT1zOm4oaSkmJm4ocyk/b1tyXT0oMCxlLm1lcmdlRGVlcCkoaSxzKTpvW3JdPXMpfSl9KSxvfSxlLnJlc29sdmVUYXJnZXRFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRWxlbWVudD90OiJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTpkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdfSxlLmNyZWF0ZVNjcmlwdD1mdW5jdGlvbih0LGUpe3ZhciBuPXQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7cmV0dXJuIG4udHlwZT0idGV4dC9qYXZhc2NyaXB0IixuLmNoYXJzZXQ9InV0ZjgiLGUmJihuLnNyYz1lKSxufSxlLmNyZWF0ZUxpbms9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtyZXR1cm4gZSYmKG4uaHJlZj1lKSxufSxlLnJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihuLHIpe2Uub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWUucmVhZHlTdGF0ZSYmKGUuc3RhdHVzPj0yMDAmJmUuc3RhdHVzPDMwMD9uKGUucmVzcG9uc2UpOnIobmV3IEVycm9yKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyAiLmNvbmNhdChlLnN0YXR1cykpKSl9LGUub3BlbigiR0VUIix0LCEwKSxlLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsInRleHQvcGxhaW4iKSxlLnNlbmQoKX0pfSxlLnBhcnNlSlNPTj1mdW5jdGlvbih0KXtpZihKU09OLnBhcnNlKXJldHVybiBKU09OLnBhcnNlKHQpO2lmKEpTT04uZGVjb2RlKXJldHVybiBKU09OLmRlY29kZSh0KTt0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBwYXJzZSBqc29uLiIpfX0sMTMwKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKGZ1bmN0aW9uKG8saSl7ZnVuY3Rpb24gcyh0KXt0cnl7YyhyLm5leHQodCkpfWNhdGNoKHQpe2kodCl9fWZ1bmN0aW9uIGEodCl7dHJ5e2Moci50aHJvdyh0KSl9Y2F0Y2godCl7aSh0KX19ZnVuY3Rpb24gYyh0KXt2YXIgZTt0LmRvbmU/byh0LnZhbHVlKTooZT10LnZhbHVlLGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4oZnVuY3Rpb24odCl7dChlKX0pKS50aGVuKHMsYSl9Yygocj1yLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSl9LG89dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odCxlKXt2YXIgbixyLG8saSxzPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpPXtuZXh0OmEoMCksdGhyb3c6YSgxKSxyZXR1cm46YSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiBhKGEpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24oYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtpJiYoaT0wLGFbMF0mJihzPTApKSxzOyl0cnl7aWYobj0xLHImJihvPTImYVswXT9yLnJldHVybjphWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsYVsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoYT1bMiZhWzBdLG8udmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOm89YTticmVhaztjYXNlIDQ6cmV0dXJuIHMubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6cy5sYWJlbCsrLHI9YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1zLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPXMudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtzPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighb3x8YVsxXT5vWzBdJiZhWzFdPG9bM10pKXtzLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJnMubGFiZWw8b1sxXSl7cy5sYWJlbD1vWzFdLG89YTticmVha31pZihvJiZzLmxhYmVsPG9bMl0pe3MubGFiZWw9b1syXSxzLm9wcy5wdXNoKGEpO2JyZWFrfW9bMl0mJnMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZX1hPWUuY2FsbCh0LHMpfWNhdGNoKHQpe2E9WzYsdF0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLGNdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5TbWFydHN1cHBXaWRnZXQ9dm9pZCAwO3ZhciBpPW4oNzQwKSxzPW4oODkzKSxhPXdpbmRvdyxjPSItYXBwbGljYXRpb24taWZyYW1lIix1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7aWYodm9pZCAwPT09biYmKG49W10pLHRoaXMuaWQ9dCx0aGlzLm9wdGlvbnM9ZSx0aGlzLl9wdXNoQXBpPW4sdGhpcy5yZW5kZXJlZD0hMSx0aGlzLmFwaT1udWxsLHRoaXMuZWw9bnVsbCx0aGlzLmZyYW1lPW51bGwsdGhpcy52ZXJzaW9uPTIsdGhpcy5pbml0aWFsaXplZD0hMSwhZS5ib290c3RyYXBVcmwpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIG9wdGlvbiBib290c3RyYXBVcmwiKTtpZighZS5rZXkpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIG9wdGlvbiBrZXkiKX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zPSgwLHMubWVyZ2VEZWVwKSh0aGlzLm9wdGlvbnMsdCksdGhpcy5mZWF0dXJlcyYmKHRoaXMuZmVhdHVyZXMucmF0aW5nfHwodGhpcy5vcHRpb25zLnJhdGluZ0VuYWJsZWQ9ITEpLHRoaXMuZmVhdHVyZXMuZ3JvdXBzfHwodGhpcy5vcHRpb25zLmdyb3VwU2VsZWN0RW5hYmxlZD0hMSksdGhpcy5mZWF0dXJlcy5jdXN0b21pemV8fCh0aGlzLm9wdGlvbnMuaGlkZVdpZGdldD0hMSx0aGlzLm9wdGlvbnMuaGlkZU9mZmxpbmVDaGF0PSExLHRoaXMub3B0aW9ucy5udW1iZXJDb250cm9sPSExLHRoaXMub3B0aW9ucy5yZXF1aXJlTG9naW49ITEsdGhpcy5vcHRpb25zLnByaXZhY3lOb3RpY2VFbmFibGVkPSEwLHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbj0icmlnaHQiKSx0aGlzLmZlYXR1cmVzLmdhfHwodGhpcy5vcHRpb25zLmdvb2dsZUFuYWx5dGljc0VuYWJsZWQ9ITEpKSx0aGlzfSx0LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dGhpcy5mZWF0dXJlcz1lLHRoaXMuc2V0T3B0aW9ucyh0KSx0aGlzLmluaXRpYWxpemVkPSEwLCJhdXRvIj09PXRoaXMub3B0aW9ucy5wb3NpdGlvbiYmKHRoaXMub3B0aW9ucy5wb3NpdGlvbj10aGlzLm9wdGlvbnMucmVuZGVyVG8/InJlbGF0aXZlIjoiZml4ZWQiKX0sdC5wcm90b3R5cGUuY3JlYXRlRnJhbWU9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtyZXR1cm4gdC5pZD0iIi5jb25jYXQodGhpcy5pZCkuY29uY2F0KGMpLHQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIlNtYXJ0c3VwcCIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0LnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdC5zdHlsZS50b3A9IjAiLHQuc3R5bGUubGVmdD0iMCIsdC5zdHlsZS53aWR0aD0iMXB4Iix0LnN0eWxlLmhlaWdodD0iMXB4Iix0LnN0eWxlLm9wYWNpdHk9IjAiLHQuc3R5bGUuYm9yZGVyPSJub25lIix0LnN0eWxlLnpJbmRleD0iLTEiLHQuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsdH0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBvKHRoaXMsZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5faW5pdFByb21pc2U/WzQsdGhpcy5faW5pdFByb21pc2VdOlszLDJdO2Nhc2UgMTpuLnNlbnQoKSxuLmxhYmVsPTI7Y2FzZSAyOmlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQrYykpcmV0dXJuWzJdO2lmKCF0aGlzLmluaXRpYWxpemVkKXRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGluaXRpYWxpemUgd2lkZ2V0Iik7aWYoIShlPSgwLHMucmVzb2x2ZVRhcmdldEVsZW1lbnQpKHQpKSl0aHJvdyBuZXcgRXJyb3IoInRhcmdldCBlbGVtZW50IG5vdCBmb3VuZCIpO3JldHVybiB0aGlzLnJlbmRlckZyYW1lKGUpLHRoaXMucmVuZGVyZWQ9ITAsWzJdfX0pfSl9LHQucHJvdG90eXBlLnJlbmRlckZyYW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLmZyYW1lPXRoaXMuY3JlYXRlRnJhbWUoKTtuLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7dmFyIHQsaSxhPW51bGwhPT0odD1uLmNvbnRlbnREb2N1bWVudCkmJnZvaWQgMCE9PXQ/dDpudWxsPT09KGk9bi5jb250ZW50V2luZG93KXx8dm9pZCAwPT09aT92b2lkIDA6aS5kb2N1bWVudDtpZighYSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIERvY3VtZW50Iik7dmFyIGM9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLHU9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO3UuaWQ9ImJvZHkiLHUuZGF0YXNldC5zbWFydHN1cHBJZD1lLmlkLHUuaW5uZXJIVE1MPSc8ZGl2IGlkPSJhcHAiPjwvZGl2Pic7dmFyIGw9InNyYy9tYWluLnRzIixwPWZ1bmN0aW9uKHQpe3ZhciBuPSgwLHMuY3JlYXRlU2NyaXB0KShhLGUuZ2V0QmFzZVVybCgpKyIvIi5jb25jYXQodCkpO24udHlwZT0ibW9kdWxlIixjLmFwcGVuZENoaWxkKG4pfSxmPWZ1bmN0aW9uKHQpe3ZhciBuPSgwLHMuY3JlYXRlTGluaykoYSwiIi5jb25jYXQoZS5nZXRCYXNlVXJsKCksIi8iKS5jb25jYXQodCkpO24ucmVsPSJzdHlsZXNoZWV0IixuLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLGMuYXBwZW5kQ2hpbGQobil9O2Uub3B0aW9ucy53aWRnZXRWM0Rldk1vZGU/WyJAdml0ZS9jbGllbnQiLGxdLmZvckVhY2gocCk6cihlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdCxuLHIsaTtyZXR1cm4gbyh0aGlzLGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsKDAscy5yZXF1ZXN0KSgiIi5jb25jYXQodGhpcy5nZXRCYXNlVXJsKCksIi9tYW5pZmVzdC5qc29uIikpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuKDAscy5wYXJzZUpTT04pKHQpfSldO2Nhc2UgMTpyZXR1cm4gdD1vLnNlbnQoKSxuPXRbbF0scChuLmZpbGUpLG51bGw9PT0ocj1uLmltcG9ydHMpfHx2b2lkIDA9PT1yfHxyLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHIsbztyPXRbbl0uZmlsZSwobz0oMCxzLmNyZWF0ZUxpbmspKGEsIiIuY29uY2F0KGUuZ2V0QmFzZVVybCgpLCIvIikuY29uY2F0KHIpKSkucmVsPSJtb2R1bGVwcmVsb2FkIixjLmFwcGVuZENoaWxkKG8pfSksbnVsbD09PShpPW4uY3NzKXx8dm9pZCAwPT09aXx8aS5mb3JFYWNoKGYpLGYodFsic3R5bGUuY3NzIl0uZmlsZSksWzJdfX0pfSl9KSx0LmFwcGVuZENoaWxkKG4pfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5lbCYmdGhpcy5lbC5wYXJlbnROb2RlJiYodGhpcy5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWwpLHRoaXMuZWw9bnVsbCl9LHQucHJvdG90eXBlLmdldE9wdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10aGlzLm9wdGlvbnNbdF0/ZTp0aGlzLm9wdGlvbnNbdF19LHQucHJvdG90eXBlLmdldEJhc2VVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLndpZGdldFYzVXJsfSx0LnByb3RvdHlwZS5nZXRBc3NldFVybD1mdW5jdGlvbih0KXtyZXR1cm4iIi5jb25jYXQodGhpcy5nZXRCYXNlVXJsKCksIi8iKS5jb25jYXQodCl9LHQucHJvdG90eXBlLmdldEludGVybmFsQXBpVXJsPWZ1bmN0aW9uKCl7cmV0dXJuIiIuY29uY2F0KHRoaXMub3B0aW9ucy5ib290c3RyYXBVcmwsIi93aWRnZXQvIikuY29uY2F0KHRoaXMub3B0aW9ucy5rZXksIi9jb2RlLmpzIil9LHQucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dGhpcy5fcHVzaEFwaS5wdXNoKHQpfSx0LnByb3RvdHlwZS5pbnN0YWxsQXBpPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhpcy5hcGk9dCxhLnNtYXJ0c3VwcC5hcGk9dCx0aGlzLl9wdXNoQXBpJiYodGhpcy5fcHVzaEFwaS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4sMCk7dHJ5e2Uub3B0aW9ucy53aWRnZXRUcmFja2VyRW5hYmxlZCYmKDAsaS50cmFja09wZXJhdGlvbikoZS5vcHRpb25zLHJbMF0pLHQuZXhlY3V0ZShyKX1jYXRjaCh0KXtjb25zb2xlLmxvZyh0KX19KSx0aGlzLl9wdXNoQXBpLnB1c2g9ZnVuY3Rpb24obil7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobiwwKTt0cnl7ZS5vcHRpb25zLndpZGdldFRyYWNrZXJFbmFibGVkJiYoMCxpLnRyYWNrT3BlcmF0aW9uKShlLm9wdGlvbnMsclswXSksdC5leGVjdXRlKHIpfWNhdGNoKHQpe2NvbnNvbGUubG9nKHQpfX0pLHRoaXMub3B0aW9ucy5vblN0YXJ0dXApdHJ5e3RoaXMub3B0aW9ucy5vblN0YXJ0dXAodCl9Y2F0Y2godCl7Y29uc29sZS5sb2codCl9fSx0fSgpO2UuU21hcnRzdXBwV2lkZ2V0PXV9fSxlPXt9O2Z1bmN0aW9uIG4ocil7dmFyIG89ZVtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGk9ZVtyXT17ZXhwb3J0czp7fX07cmV0dXJuIHRbcl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfW4uZz1mdW5jdGlvbigpe2lmKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKHQpe2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLCgoKT0+eyJ1c2Ugc3RyaWN0IjtuKDc2MSk7dmFyIHQ9big3MTUpLGU9bigzNDUpLHI9ImNoYXQiO2lmKHdpbmRvdy5zbWFydHN1cHB8fCh3aW5kb3cuc21hcnRzdXBwPWZ1bmN0aW9uKCl7d2luZG93LnNtYXJ0c3VwcC5fLnB1c2goYXJndW1lbnRzKX0sd2luZG93LnNtYXJ0c3VwcC5fPVtdKSwhd2luZG93LlNNQVJUU1VQUF9MT0FERUQpe3dpbmRvdy5TTUFSVFNVUFBfTE9BREVEPSEwO3ZhciBvPW5ldyBlLlNtYXJ0c3VwcExvYWRlcih7d2lkZ2V0VmVyc2lvbjozLGJvb3RzdHJhcFVybDoiaHR0cHM6Ly9ib290c3RyYXAuc21hcnRzdXBwY2hhdC5jb20iLGZpbGVzVXJsOiJodHRwczovL2ZpbGVzLnNtYXJ0c3VwcGNkbi5jb20iLHdpZGdldFYzVXJsOiJodHRwczovL3dpZGdldC12My5zbWFydHN1cHBjZG4uY29tIixzdG9yYWdlVXJsOiJodHRwczovL3trZXl9LnN0b3JhZ2Uuc21hcnRzdXBwY2hhdC5jb20iLHdpZGdldEFwaVVybDoiaHR0cHM6Ly9hcGkuc21hcnRzdXBwY2hhdC5jb20iLHpJbmRleDoxZTcscG9zaXRpb246ImF1dG8iLG9yaWVudGF0aW9uOiJyaWdodCIsYXV0b0lubGluZU1vZGU6ITAsd2lkZ2V0VjNEZXZNb2RlOiExfSk7d2luZG93LiRzbWFydHN1cHA9byx3aW5kb3cuc21hcnRzdXBwPU9iamVjdC5hc3NpZ24od2luZG93LnNtYXJ0c3VwcCx7Y2hhdHM6by53aWRnZXRzLGNyZWF0ZTpvLmNyZWF0ZS5iaW5kKG8pLGNyZWF0ZVdpZGdldDpvLmNyZWF0ZVdpZGdldC5iaW5kKG8pLGdldENoYXQ6by5nZXRDaGF0LmJpbmQobyksZ2V0V2lkZ2V0Om8uZ2V0V2lkZ2V0LmJpbmQobyksc2V0RGVmYXVsdHM6by5zZXREZWZhdWx0cy5iaW5kKG8pfSksITEhPT13aW5kb3cuU01BUlRTVVBQX0FVVE9DUkVBVEUmJighMD09PXdpbmRvdy5TTUFSVFNVUFBfQkZDQUNIRSYmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsZnVuY3Rpb24oKXt2YXIgdDtudWxsPT09KHQ9d2luZG93LnNtYXJ0c3VwcC5nZXRXaWRnZXQocikpfHx2b2lkIDA9PT10fHx0LnJlbmRlcigpfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsZnVuY3Rpb24oKXt2YXIgdCxlO251bGw9PT0odD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIi5jb25jYXQociwiLWFwcGxpY2F0aW9uLWlmcmFtZSIpKSl8fHZvaWQgMD09PXR8fHQucmVtb3ZlKCksbnVsbD09PShlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzbWFydHN1cHAtd2lkZ2V0LWNvbnRhaW5lciIpKXx8dm9pZCAwPT09ZXx8ZS5yZW1vdmUoKX0pKSx0KGZ1bmN0aW9uKCl7d2luZG93LnNtYXJ0c3VwcCgiaHRtbDphcHBseSIsZG9jdW1lbnQpLG8uY3JlYXRlV2lkZ2V0KHIsd2luZG93Ll9zbWFydHN1cHAsd2luZG93LnNtYXJ0c3VwcC5fKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbmRlcigpfSkuY2F0Y2goZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKHQpfSl9KSl9fSkoKX0pKCk7"}},"time_used":3283,"timings":{"blocked":0,"dns":3,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3264},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/jquery.daterangepicker.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.013Z","timestamp":1785159465013,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/jquery.daterangepicker.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 16602\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":82863,"size_decoded":16840,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1083)","md5":"c563bbcee5d3df61cf88a33a02d7ebf4","sha1":"821f3f8a622d625c21de03da87141ad7508bdd31","sha256":"70728ad3932f6b2ad176a0fccbc1da828e37335563a8831c78096ff76af83d53","sha512":"f9ec50e8e73d407ed5176a633c8bae666f86938b77cc8f584e39d1de19878521e85ef8b291c456cd3f7d6be678e6438dfaa3939e2da268fe6d1db4adb8329c7d","ssdeep":"768:vgbIiPlXPe0gUlzoXvLsXj/XX877CQiKfDLGRt7SmRYbMYnPX8aIQQxzi4I65c3M:vgzlXP/gUlzoXv4z/8qQFG4zkaBmaM","tlshash":"6e83b406e9e00d73066b76644a5e59027753c43b9e52781c3b6c61889f8ec3f92feb9c","first_seen":"2026-07-27T07:42:30.786594Z","last_seen":"2026-07-27T13:38:47.772864Z","times_seen":3,"resource_available":true,"data":"LyoqCiAqIGpxdWVyeS1kYXRlLXJhbmdlLXBpY2tlcgogKiBAdmVyc2lvbiB2MC4yMS4xCiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb25nYmlsbC9qcXVlcnktZGF0ZS1yYW5nZS1waWNrZXIKICogQGxpY2Vuc2UgTUlUCiAqLwohIGZ1bmN0aW9uKGUpIHsKICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsianF1ZXJ5IiwgIm1vbWVudCJdLCBlKSA6ICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IGUocmVxdWlyZSgianF1ZXJ5IiksIHJlcXVpcmUoIm1vbWVudCIpKSA6IGUoalF1ZXJ5LCBtb21lbnQpCn0oZnVuY3Rpb24oVSwgUSkgewogICAgInVzZSBzdHJpY3QiOwogICAgVS5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMgPSB7CiAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICBzZWxlY3RlZDogIlNlbGVjdGVkOiIsCiAgICAgICAgICAgIGRheTogIkRheSIsCiAgICAgICAgICAgIGRheXM6ICJEYXlzIiwKICAgICAgICAgICAgYXBwbHk6ICJDbG9zZSIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibW8iLAogICAgICAgICAgICAid2Vlay0yIjogInR1IiwKICAgICAgICAgICAgIndlZWstMyI6ICJ3ZSIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAidGgiLAogICAgICAgICAgICAid2Vlay01IjogImZyIiwKICAgICAgICAgICAgIndlZWstNiI6ICJzYSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAic3UiLAogICAgICAgICAgICAid2Vlay1udW1iZXIiOiAiVyIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJqYW51YXJ5IiwgImZlYnJ1YXJ5IiwgIm1hcmNoIiwgImFwcmlsIiwgIm1heSIsICJqdW5lIiwgImp1bHkiLCAiYXVndXN0IiwgInNlcHRlbWJlciIsICJvY3RvYmVyIiwgIm5vdmVtYmVyIiwgImRlY2VtYmVyIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIlNob3J0Y3V0cyIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogIkN1c3RvbSBWYWx1ZXMiLAogICAgICAgICAgICBwYXN0OiAiUGFzdCIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIkZvbGxvd2luZyIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiUHJldmlvdXMiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIldlZWsiLAogICAgICAgICAgICAicHJldi1tb250aCI6ICJNb250aCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAiWWVhciIsCiAgICAgICAgICAgIG5leHQ6ICJOZXh0IiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJXZWVrIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiTW9udGgiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIlllYXIiLAogICAgICAgICAgICAibGVzcy10aGFuIjogIkRhdGUgcmFuZ2Ugc2hvdWxkIG5vdCBiZSBtb3JlIHRoYW4gJWQgZGF5cyIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAiRGF0ZSByYW5nZSBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiAlZCBkYXlzIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZSBsb25nZXIgdGhhbiAlZCBkYXlzIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogIlBsZWFzZSBzZWxlY3QgYSBkYXRlIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZSBsZXNzIHRoYW4gJWQgZGF5cyIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlBsZWFzZSBzZWxlY3QgYSBkYXRlIHJhbmdlIGJldHdlZW4gJWQgYW5kICVkIGRheXMiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIlBsZWFzZSBzZWxlY3QgYSBkYXRlIHJhbmdlIiwKICAgICAgICAgICAgdGltZTogIlRpbWUiLAogICAgICAgICAgICBob3VyOiAiSG91ciIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV0ZSIKICAgICAgICB9LAogICAgICAgIGlkOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiVGVycGlsaWg6IiwKICAgICAgICAgICAgZGF5OiAiSGFyaSIsCiAgICAgICAgICAgIGRheXM6ICJIYXJpIiwKICAgICAgICAgICAgYXBwbHk6ICJUdXR1cCIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAic2VuIiwKICAgICAgICAgICAgIndlZWstMiI6ICJzZWwiLAogICAgICAgICAgICAid2Vlay0zIjogInJhYiIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAia2FtIiwKICAgICAgICAgICAgIndlZWstNSI6ICJqdW0iLAogICAgICAgICAgICAid2Vlay02IjogInNhYiIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAibWluIiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogIlciLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiamFudWFyaSIsICJmZWJydWFyaSIsICJtYXJldCIsICJhcHJpbCIsICJtZWkiLCAianVuaSIsICJqdWxpIiwgImFndXN0dXMiLCAic2VwdGVtYmVyIiwgIm9rdG9iZXIiLCAibm92ZW1iZXIiLCAiZGVzZW1iZXIiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAiUGludGFzIiwKICAgICAgICAgICAgImN1c3RvbS12YWx1ZXMiOiAiTmlsYWkgeWFuZyBkaXRlbnR1a2FuIiwKICAgICAgICAgICAgcGFzdDogIllhbmcgTGFsdSIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIk1lbmdpa3V0aSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiU2ViZWx1bW55YSIsCiAgICAgICAgICAgICJwcmV2LXdlZWsiOiAiTWluZ2d1IiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAiQnVsYW4iLAogICAgICAgICAgICAicHJldi15ZWFyIjogIlRhaHVuIiwKICAgICAgICAgICAgbmV4dDogIlNlbGFuanV0bnlhIiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJNaW5nZ3UiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICJCdWxhbiIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiVGFodW4iLAogICAgICAgICAgICAibGVzcy10aGFuIjogIlRhbmdnYWwgaGFydXMgbGViaWggZGFyaSAlZCBoYXJpIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJUYW5nZ2FsIGhhcnVzIGt1cmFuZyBkYXJpICVkIGhhcmkiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIkphcmFrIHRhbmdnYWwgaGFydXMgbGViaWggbGFtYSBkYXJpICVkIGhhcmkiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiU2lsYWthbiBwaWxpaCB0YW5nZ2FsIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJKYXJhayByZW50YW5nIHRhbmdnYWwgdGlkYWsgYm9sZWggbGViaWggbGFtYSBkYXJpICVkIGhhcmkiLAogICAgICAgICAgICAiZGVmYXVsdC1yYW5nZSI6ICJSZW50YW5nIHRhbmdnYWwgaGFydXMgYW50YXJhICVkIGRhbiAlZCBoYXJpIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICJTaWxha2FuIHBpbGloIHJlbnRhbmcgdGFuZ2dhbCIsCiAgICAgICAgICAgIHRpbWU6ICJXYWt0dSIsCiAgICAgICAgICAgIGhvdXI6ICJKYW0iLAogICAgICAgICAgICBtaW51dGU6ICJNZW5pdCIKICAgICAgICB9LAogICAgICAgIGF6OiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiU2XDp2lsZGk6IiwKICAgICAgICAgICAgZGF5OiAiIGfDvG4iLAogICAgICAgICAgICBkYXlzOiAiIGfDvG4iLAogICAgICAgICAgICBhcHBseTogInTJmXRiaXEiLAogICAgICAgICAgICAid2Vlay0xIjogIjEiLAogICAgICAgICAgICAid2Vlay0yIjogIjIiLAogICAgICAgICAgICAid2Vlay0zIjogIjMiLAogICAgICAgICAgICAid2Vlay00IjogIjQiLAogICAgICAgICAgICAid2Vlay01IjogIjUiLAogICAgICAgICAgICAid2Vlay02IjogIjYiLAogICAgICAgICAgICAid2Vlay03IjogIjciLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsieWFudmFyIiwgImZldnJhbCIsICJtYXJ0IiwgImFwcmVsIiwgIm1heSIsICJpeXVuIiwgIml5dWwiLCAiYXZxdXN0IiwgInNlbnR5YWJyIiwgIm9rdHlhYnIiLCAibm95YWJyIiwgImRla2FiciJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJRxLFzYXlvbGxhciIsCiAgICAgICAgICAgIHBhc3Q6ICJLZcOnbWnFnyIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIk7DtnZiyZl0aSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiJm5ic3A7Jm5ic3A7Jm5ic3A7IiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICLDlm5jyZlraSBoyZlmdMmZIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAiw5ZuY8mZa2kgYXkiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIsOWbmPJmWtpIGlsIiwKICAgICAgICAgICAgbmV4dDogIiZuYnNwOyZuYnNwOyZuYnNwOyIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAiTsO2dmLJmXRpIGjJmWZ0yZkiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICJOw7Z2YsmZdGkgYXkiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIk7DtnZiyZl0aSBpbCIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiVGFyaXggYXJhbMSxxJ/EsSAlZCBnw7xuZMmZbiDDp294IG9sbWFtYWzEsWTEsXIiLAogICAgICAgICAgICAibW9yZS10aGFuIjogIlRhcml4IGFyYWzEscSfxLEgJWQgZ8O8bmTJmW4gYXogb2xtYW1hbMSxZMSxciIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAiJWQgZ8O8bmTJmW4gw6dveCBiaXIgdGFyaXggc2XDp2luIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogIlRhcml4IHNlw6dpbiIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAiJWQgZ8O8bmTJmW4gYXogYmlyIHRhcml4IHNlw6dpbiIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIiVkIHbJmSAlZCBnw7xuIGFyYWzEscSfxLFuZGEgdGFyaXhsyZlyIHNlw6dpbiIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiVGFyaXggYXJhbMSxxJ/EsSBzZcOnaW4iCiAgICAgICAgfSwKICAgICAgICBiZzogewogICAgICAgICAgICBzZWxlY3RlZDogItCY0LfQsdGA0LDQvdC+OiIsCiAgICAgICAgICAgIGRheTogItCU0LXQvSIsCiAgICAgICAgICAgIGRheXM6ICLQlNC90LgiLAogICAgICAgICAgICBhcHBseTogItCX0LDRgtCy0L7RgNC4IiwKICAgICAgICAgICAgIndlZWstMSI6ICLQv9C9IiwKICAgICAgICAgICAgIndlZWstMiI6ICLQstGCIiwKICAgICAgICAgICAgIndlZWstMyI6ICLRgdGAIiwKICAgICAgICAgICAgIndlZWstNCI6ICLRh9GCIiwKICAgICAgICAgICAgIndlZWstNSI6ICLQv9GCIiwKICAgICAgICAgICAgIndlZWstNiI6ICLRgdCxIiwKICAgICAgICAgICAgIndlZWstNyI6ICLQvdC0IiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogItChIiwKICAgICAgICAgICAgIm1vbnRoLW5hbWUiOiBbItGP0L3Rg9Cw0YDQuCIsICLRhNC10LLRgNGD0LDRgNC4IiwgItC80LDRgNGCIiwgItCw0L/RgNC40LsiLCAi0LzQsNC5IiwgItGO0L3QuCIsICLRjtC70LgiLCAi0LDQstCz0YPRgdGCIiwgItGB0LXQv9GC0LXQvNCy0YDQuCIsICLQvtC60YLQvtC80LLRgNC4IiwgItC90L7QtdC80LLRgNC4IiwgItC00LXQutC10LzQstGA0LgiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAi0J/RgNC10LrQuCDQv9GK0YLQuNGJ0LAiLAogICAgICAgICAgICAiY3VzdG9tLXZhbHVlcyI6ICLQn9C10YDRgdC+0L3QsNC70LjQt9C40YDQsNC90Lgg0YHRgtC+0LnQvdC+0YHRgtC4IiwKICAgICAgICAgICAgcGFzdDogItCc0LjQvdCw0LsiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICLQodC70LXQtNCy0LDRiSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAi0J/RgNC10LTQuNGI0LXQvSIsCiAgICAgICAgICAgICJwcmV2LXdlZWsiOiAi0KHQtdC00LzQuNGG0LAiLAogICAgICAgICAgICAicHJldi1tb250aCI6ICLQnNC10YHQtdGGIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICLQk9C+0LTQuNC90LAiLAogICAgICAgICAgICBuZXh0OiAi0KHQu9C10LTQstCw0YkiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogItCh0LXQtNC80LjRhtCwIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAi0JzQtdGB0LXRhiIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAi0JPQvtC00LjQvdCwIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICLQn9C10YDQuNC+0LTRitGCINC+0YIg0LLRgNC10LzQtSDQvdC1INGC0YDRj9Cx0LLQsCDQtNCwINC1INC/0L7QstC10YfQtSDQvtGCICVkINC00L3QuCIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAi0J/QtdGA0LjQvtC00YrRgiDQvtGCINCy0YDQtdC80LUg0L3QtSDRgtGA0Y/QsdCy0LAg0LTQsCDQtSDQv9C+LdC80LDQu9C60L4g0L7RgiAlZCDQtNC90LgiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogItCc0L7Qu9GPINC40LfQsdC10YDQtdGC0LUg0L/QtdGA0LjQvtC0INC/0L4t0LTRitC70YrQsyDQvtGCICVkINC00L3QuCIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICLQnNC+0LvRjyDQuNC30LHQtdGA0LXRgtC1INC00LDRgtCwIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICLQnNC+0LvRjyDQuNC30LHQtdGA0LXRgtC1INC/0LXRgNC40L7QtCDQv9C+LdC60YrRgSDQvtGCICVkINC00L3QuCIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogItCc0L7Qu9GPINC40LfQsdC10YDQtdGC0LUg0L/QtdGA0LjQvtC0INC80LXQttC00YMgJWQg0LggJWQg0LTQvdC4IiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICLQnNC+0LvRjyDQuNC30LHQtdGA0LXRgtC1INC/0LXRgNC40L7QtCIsCiAgICAgICAgICAgIHRpbWU6ICLQktGA0LXQvNC1IiwKICAgICAgICAgICAgaG91cjogItCn0LDRgSIsCiAgICAgICAgICAgIG1pbnV0ZTogItCc0LjQvdGD0YLQsCIKICAgICAgICB9LAogICAgICAgIGNuOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAi5bey6YCJ5oupOiIsCiAgICAgICAgICAgIGRheTogIuWkqSIsCiAgICAgICAgICAgIGRheXM6ICLlpKkiLAogICAgICAgICAgICBhcHBseTogIuehruWumiIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAi5LiAIiwKICAgICAgICAgICAgIndlZWstMiI6ICLkuowiLAogICAgICAgICAgICAid2Vlay0zIjogIuS4iSIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAi5ZubIiwKICAgICAgICAgICAgIndlZWstNSI6ICLkupQiLAogICAgICAgICAgICAid2Vlay02IjogIuWFrSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAi5pelIiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogIuWRqCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyLkuIDmnIgiLCAi5LqM5pyIIiwgIuS4ieaciCIsICLlm5vmnIgiLCAi5LqU5pyIIiwgIuWFreaciCIsICLkuIPmnIgiLCAi5YWr5pyIIiwgIuS5neaciCIsICLljYHmnIgiLCAi5Y2B5LiA5pyIIiwgIuWNgeS6jOaciCJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICLlv6vmjbfpgInmi6kiLAogICAgICAgICAgICBwYXN0OiAi6L+H5Y67IiwKICAgICAgICAgICAgZm9sbG93aW5nOiAi5bCG5p2lIiwKICAgICAgICAgICAgcHJldmlvdXM6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIuS4iuWRqCIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIuS4iuS4quaciCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAi5Y675bm0IiwKICAgICAgICAgICAgbmV4dDogIiZuYnNwOyZuYnNwOyZuYnNwOyIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAi5LiL5ZGoIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAi5LiL5Liq5pyIIiwKICAgICAgICAgICAgIm5leHQteWVhciI6ICLmmI7lubQiLAogICAgICAgICAgICAibGVzcy10aGFuIjogIuaJgOmAieaXpeacn+iMg+WbtOS4jeiDveWkp+S6jiVk5aSpIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICLmiYDpgInml6XmnJ/ojIPlm7TkuI3og73lsI/kuo4lZOWkqSIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAi6K+36YCJ5oup5aSn5LqOJWTlpKnnmoTml6XmnJ/ojIPlm7QiLAogICAgICAgICAgICAiZGVmYXVsdC1sZXNzIjogIuivt+mAieaLqeWwj+S6jiVk5aSp55qE5pel5pyf6IyD5Zu0IiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAi6K+36YCJ5oupJWTlpKnliLAlZOWkqeeahOaXpeacn+iMg+WbtCIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICLor7fpgInmi6nkuIDkuKrml6XmnJ8iLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIuivt+mAieaLqeS4gOS4quaXpeacn+iMg+WbtCIsCiAgICAgICAgICAgIHRpbWU6ICLml7bpl7QiLAogICAgICAgICAgICBob3VyOiAi5bCP5pe2IiwKICAgICAgICAgICAgbWludXRlOiAi5YiG6ZKfIgogICAgICAgIH0sCiAgICAgICAgY3o6IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICJWeWJyw6FubzoiLAogICAgICAgICAgICBkYXk6ICJEZW4iLAogICAgICAgICAgICBkYXlzOiAiRG55IiwKICAgICAgICAgICAgYXBwbHk6ICJaYXbFmcOtdCIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAicG8iLAogICAgICAgICAgICAid2Vlay0yIjogIsO6dCIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAic3QiLAogICAgICAgICAgICAid2Vlay00IjogIsSNdCIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAicMOhIiwKICAgICAgICAgICAgIndlZWstNiI6ICJzbyIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAibmUiLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsibGVkZW4iLCAiw7pub3IiLCAiYsWZZXplbiIsICJkdWJlbiIsICJrdsSbdGVuIiwgIsSNZXJ2ZW4iLCAixI1lcnZlbmVjIiwgInNycGVuIiwgInrDocWZw60iLCAixZnDrWplbiIsICJsaXN0b3BhZCIsICJwcm9zaW5lYyJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJaa3JhdGt5IiwKICAgICAgICAgICAgcGFzdDogInBvIiwKICAgICAgICAgICAgZm9sbG93aW5nOiAibsOhc2xlZHVqw61jw60iLAogICAgICAgICAgICBwcmV2aW91czogInDFmWVkY2hvesOtIiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICJ0w71kZW4iLAogICAgICAgICAgICAicHJldi1tb250aCI6ICJtxJtzw61jIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICJyb2siLAogICAgICAgICAgICBuZXh0OiAiZGFsxaHDrSIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAidMO9ZGVuIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAibcSbc8OtYyIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAicm9rIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJSb3pzYWggZGF0YSBieSBuZW3Em2wgYsO9dCB2xJt0xaHDrSBuZcW+ICVkIGRuxa8iLAogICAgICAgICAgICAibW9yZS10aGFuIjogIlJvenNhaCBkYXRhIGJ5IG5lbcSbbCBiw710IG1lbsWhw60gbmXFviAlZCBkbsWvIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJQcm9zw61tIHp2b2x0ZSByb3pzYWggZGF0YSB2xJt0xaHDrSBuZcW+ICVkIGRuxa8iLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiUHJvc8OtbSB6dm9sdGUgZGF0dW0iLAogICAgICAgICAgICAiZGVmYXVsdC1sZXNzIjogIlByb3PDrW0genZvbHRlIHJvenNhaCBkYXRhIG1lbsWhw60gbmXFviAlZCBkbsWvIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiUHJvc8OtbSB6dm9sdGUgcm96c2FoIGRhdGEgbWV6aSAlZCBhICVkIGRueSIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiUHJvc8OtbSB6dm9sdGUgcm96c2FoIGRhdGEiCiAgICAgICAgfSwKICAgICAgICBkZTogewogICAgICAgICAgICBzZWxlY3RlZDogIkF1c3dhaGw6IiwKICAgICAgICAgICAgZGF5OiAiVGFnIiwKICAgICAgICAgICAgZGF5czogIlRhZ2UiLAogICAgICAgICAgICBhcHBseTogIlNjaGxpZcOfZW4iLAogICAgICAgICAgICAid2Vlay0xIjogIm1vIiwKICAgICAgICAgICAgIndlZWstMiI6ICJkaSIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAibWkiLAogICAgICAgICAgICAid2Vlay00IjogImRvIiwKICAgICAgICAgICAgIndlZWstNSI6ICJmciIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAic2EiLAogICAgICAgICAgICAid2Vlay03IjogInNvIiwKICAgICAgICAgICAgIm1vbnRoLW5hbWUiOiBbImphbnVhciIsICJmZWJydWFyIiwgIm3DpHJ6IiwgImFwcmlsIiwgIm1haSIsICJqdW5pIiwgImp1bGkiLCAiYXVndXN0IiwgInNlcHRlbWJlciIsICJva3RvYmVyIiwgIm5vdmVtYmVyIiwgImRlemVtYmVyIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIlNjaG5lbGx3YWhsIiwKICAgICAgICAgICAgcGFzdDogIlZvcmhlcmlnZSIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIkZvbGdlbmRlIiwKICAgICAgICAgICAgcHJldmlvdXM6ICJWb3JoZXJpZ2UiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIldvY2hlIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAiTW9uYXQiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkphaHIiLAogICAgICAgICAgICBuZXh0OiAiTsOkY2hzdGUiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIldvY2hlIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiTW9uYXQiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIkphaHIiLAogICAgICAgICAgICAibGVzcy10aGFuIjogIkRhdHVtc2JlcmVpY2ggZGFyZiBuaWNodCBncsO2w59lciBzZWluIGFscyAlZCBUYWdlIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJEYXR1bXNiZXJlaWNoIGRhcmYgbmljaHQga2xlaW5lciBzZWluIGFscyAlZCBUYWdlIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJCaXR0ZSBtaW5kZXN0ZW5zICVkIFRhZ2UgYXVzd8OkaGxlbiIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJCaXR0ZSBlaW4gRGF0dW0gYXVzd8OkaGxlbiIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAiQml0dGUgd2VuaWdlciBhbHMgJWQgVGFnZSBhdXN3w6RobGVuIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiQml0dGUgZWluZW4gRGF0dW1zYmVyZWljaCB6d2lzY2hlbiAlZCB1bmQgJWQgVGFnZW4gYXVzd8OkaGxlbiIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiQml0dGUgZWluIFN0YXJ0LSB1bmQgRW5kZGF0dW0gYXVzd8OkaGxlbiIsCiAgICAgICAgICAgIFRpbWU6ICJaZWl0IiwKICAgICAgICAgICAgaG91cjogIlN0dW5kZSIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV0ZSIKICAgICAgICB9LAogICAgICAgIGVzOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiU2VsZWNjaW9uYWRvOiIsCiAgICAgICAgICAgIGRheTogIkTDrWEiLAogICAgICAgICAgICBkYXlzOiAiRMOtYXMiLAogICAgICAgICAgICBhcHBseTogIkNlcnJhciIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibHUiLAogICAgICAgICAgICAid2Vlay0yIjogIm1hIiwKICAgICAgICAgICAgIndlZWstMyI6ICJtaSIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAianUiLAogICAgICAgICAgICAid2Vlay01IjogInZpIiwKICAgICAgICAgICAgIndlZWstNiI6ICJzYSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAiZG8iLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiZW5lcm8iLCAiZmVicmVybyIsICJtYXJ6byIsICJhYnJpbCIsICJtYXlvIiwgImp1bmlvIiwgImp1bGlvIiwgImFnb3N0byIsICJzZXB0aWVtYnJlIiwgIm9jdHVicmUiLCAibm92aWVtYnJlIiwgImRpY2llbWJyZSJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJBY2Nlc29zIGRpcmVjdG9zIiwKICAgICAgICAgICAgcGFzdDogIlBhc2FkbyIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIlNpZ3VpZW50ZSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiQW50ZXJpb3IiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlNlbWFuYSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIk1lcyIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAiQcOxbyIsCiAgICAgICAgICAgIG5leHQ6ICJTaWd1aWVudGUiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIlNlbWFuYSIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogIk1lcyIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiQcOxbyIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiRWwgcmFuZ28gbm8gZGViZXLDrWEgc2VyIG1heW9yIGRlICVkIGTDrWFzIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJFbCByYW5nbyBubyBkZWJlcsOtYSBzZXIgbWVub3IgZGUgJWQgZMOtYXMiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIlBvciBmYXZvciBzZWxlY2Npb25hIHVuIHJhbmdvIG1heW9yIGEgJWQgZMOtYXMiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiUG9yIGZhdm9yIHNlbGVjY2lvbmEgdW4gZMOtYSIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAiUG9yIGZhdm9yIHNlbGVjY2lvbmEgdW4gcmFuZ28gbWVub3IgYSAlZCBkw61hcyIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlBvciBmYXZvciBzZWxlY2Npb25hIHVuIHJhbmdvIGVudHJlICVkIHkgJWQgZMOtYXMiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIlBvciBmYXZvciBzZWxlY2Npb25hIHVuIHJhbmdvIGRlIGZlY2hhcy4iCiAgICAgICAgfSwKICAgICAgICBmcjogewogICAgICAgICAgICBzZWxlY3RlZDogIlPDqWxlY3Rpb246IiwKICAgICAgICAgICAgZGF5OiAiSm91ciIsCiAgICAgICAgICAgIGRheXM6ICJKb3VycyIsCiAgICAgICAgICAgIGFwcGx5OiAiRmVybWVyIiwKICAgICAgICAgICAgIndlZWstMSI6ICJsdSIsCiAgICAgICAgICAgICJ3ZWVrLTIiOiAibWEiLAogICAgICAgICAgICAid2Vlay0zIjogIm1lIiwKICAgICAgICAgICAgIndlZWstNCI6ICJqZSIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAidmUiLAogICAgICAgICAgICAid2Vlay02IjogInNhIiwKICAgICAgICAgICAgIndlZWstNyI6ICJkaSIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJqYW52aWVyIiwgImbDqXZyaWVyIiwgIm1hcnMiLCAiYXZyaWwiLCAibWFpIiwgImp1aW4iLCAianVpbGxldCIsICJhb8O7dCIsICJzZXB0ZW1icmUiLCAib2N0b2JyZSIsICJub3ZlbWJyZSIsICJkw6ljZW1icmUiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAiUmFjY291cmNpcyIsCiAgICAgICAgICAgIHBhc3Q6ICJQYXNzw6kiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJTdWl2YW50IiwKICAgICAgICAgICAgcHJldmlvdXM6ICJQcsOpY8OpZGVudCIsCiAgICAgICAgICAgICJwcmV2LXdlZWsiOiAiU2VtYWluZSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIk1vaXMiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkFubsOpZSIsCiAgICAgICAgICAgIG5leHQ6ICJTdWl2YW50IiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJTZW1haW5lIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiTW9pcyIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiQW5uw6llIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJMJ2ludGVydmFsbGUgbmUgZG9pdCBwYXMgw6p0cmUgc3Vww6lyaWV1cmUgw6AgJWQgam91cnMiLAogICAgICAgICAgICAibW9yZS10aGFuIjogIkwnaW50ZXJ2YWxsZSBuZSBkb2l0IHBhcyDDqnRyZSBpbmbDqXJpZXVyZSDDoCAlZCBqb3VycyIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAiTWVyY2kgZGUgY2hvaXNpciB1bmUgaW50ZXJ2YWxsZSBzdXDDqXJpZXVyZSDDoCAlZCBqb3VycyIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJNZXJjaSBkZSBjaG9pc2lyIHVuZSBkYXRlIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJNZXJjaSBkZSBjaG9pc2lyIHVuZSBpbnRlcnZhbGxlIGluZsOpcmlldXJlICVkIGpvdXJzIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiTWVyY2kgZGUgY2hvaXNpciB1bmUgaW50ZXJ2YWxsZSBjb21wcmlzZSBlbnRyZSAlZCBldCAlZCBqb3VycyIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiTWVyY2kgZGUgY2hvaXNpciB1bmUgZGF0ZSIKICAgICAgICB9LAogICAgICAgIGh1OiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiS2l2w6FsYXN6dHZhOiIsCiAgICAgICAgICAgIGRheTogIk5hcCIsCiAgICAgICAgICAgIGRheXM6ICJOYXAiLAogICAgICAgICAgICBhcHBseTogIk9rIiwKICAgICAgICAgICAgIndlZWstMSI6ICJoIiwKICAgICAgICAgICAgIndlZWstMiI6ICJrIiwKICAgICAgICAgICAgIndlZWstMyI6ICJzeiIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAiY3MiLAogICAgICAgICAgICAid2Vlay01IjogInAiLAogICAgICAgICAgICAid2Vlay02IjogInN6IiwKICAgICAgICAgICAgIndlZWstNyI6ICJ2IiwKICAgICAgICAgICAgIm1vbnRoLW5hbWUiOiBbImphbnXDoXIiLCAiZmVicnXDoXIiLCAibcOhcmNpdXMiLCAiw6FwcmlsaXMiLCAibcOhanVzIiwgImrDum5pdXMiLCAiasO6bGl1cyIsICJhdWd1c3p0dXMiLCAic3plcHRlbWJlciIsICJva3TDs2JlciIsICJub3ZlbWJlciIsICJkZWNlbWJlciJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJHeW9yc3bDoWxhc3p0w7MiLAogICAgICAgICAgICBwYXN0OiAiTcO6bHQiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJLw7Z2ZXRrZXrFkSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiRWzFkXrFkSIsCiAgICAgICAgICAgICJwcmV2LXdlZWsiOiAiSMOpdCIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIkjDs25hcCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAiw4l2IiwKICAgICAgICAgICAgbmV4dDogIkvDtnZldGtlesWRIiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJIw6l0IiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiSMOzbmFwIiwKICAgICAgICAgICAgIm5leHQteWVhciI6ICLDiXYiLAogICAgICAgICAgICAibGVzcy10aGFuIjogIkEga2l2w6FsYXN6dMOhcyBuZW0gbGVoZXQgdMO2YmIgJWQgbmFwbsOhbCIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAiQSBraXbDoWxhc3p0w6FzIG5lbSBsZWhldCB0w7ZiYiAlZCBuYXBuw6FsIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJWw6FsYXNzeiBraSBlZ3kgaWTFkXN6YWtvdCBhbWkgaG9zc3phYmIgbWludCAlZCBuYXAiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiVsOhbGFzc3ogZWd5IG5hcG90IiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJWw6FsYXNzeiBraSBlZ3kgaWTFkXN6YWtvdCBhbWkgcsO2dmlkZWJiIG1pbnQgJWQgbmFwIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiVsOhbGFzc3oga2kgZWd5ICVkIC0gJWQgbmFwIGhvc3N6w7ogaWTFkXN6YWtvdCIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiVsOhbGFzc3oga2kgZWd5IGlkxZFzemFrb3QiCiAgICAgICAgfSwKICAgICAgICBpdDogewogICAgICAgICAgICBzZWxlY3RlZDogIlNlbGV6aW9uYXRpOiIsCiAgICAgICAgICAgIGRheTogIkdpb3JubyIsCiAgICAgICAgICAgIGRheXM6ICJHaW9ybmkiLAogICAgICAgICAgICBhcHBseTogIkNoaXVkaSIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibHUiLAogICAgICAgICAgICAid2Vlay0yIjogIm1hIiwKICAgICAgICAgICAgIndlZWstMyI6ICJtZSIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAiZ2kiLAogICAgICAgICAgICAid2Vlay01IjogInZlIiwKICAgICAgICAgICAgIndlZWstNiI6ICJzYSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAiZG8iLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiZ2VubmFpbyIsICJmZWJicmFpbyIsICJtYXJ6byIsICJhcHJpbGUiLCAibWFnZ2lvIiwgImdpdWdubyIsICJsdWdsaW8iLCAiYWdvc3RvIiwgInNldHRlbWJyZSIsICJvdHRvYnJlIiwgIm5vdmVtYnJlIiwgImRpY2VtYnJlIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIlNjb3JjaWF0b2llIiwKICAgICAgICAgICAgcGFzdDogIlNjb3JzbyIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIlN1Y2Nlc3Npdm8iLAogICAgICAgICAgICBwcmV2aW91czogIlByZWNlZGVudGUiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlNldHRpbWFuYSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIk1lc2UiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkFubm8iLAogICAgICAgICAgICBuZXh0OiAiUHJvc3NpbW8iLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIlNldHRpbWFuYSIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogIk1lc2UiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIkFubm8iLAogICAgICAgICAgICAibGVzcy10aGFuIjogIkwnaW50ZXJ2YWxsbyBub24gZGV2J2Vzc2VyZSBtYWdnaW9yZSBkaSAlZCBnaW9ybmkiLAogICAgICAgICAgICAibW9yZS10aGFuIjogIkwnaW50ZXJ2YWxsbyBub24gZGV2J2Vzc2VyZSBtaW5vcmUgZGkgJWQgZ2lvcm5pIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJTZWxlemlvbmEgdW4gaW50ZXJ2YWxsbyBtYWdnaW9yZSBkaSAlZCBnaW9ybmkiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiU2VsZXppb25hIHVuYSBkYXRhIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJTZWxlemlvbmEgdW4gaW50ZXJ2YWxsbyBtaW5vcmUgZGkgJWQgZ2lvcm5pIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiU2VsZXppb25hIHVuIGludGVydmFsbG8gY29tcHJlc28gdHJhIGkgJWQgZSBpICVkIGdpb3JuaSIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiU2VsZXppb25hIHVuIGludGVydmFsbG8gZGkgZGF0ZSIKICAgICAgICB9LAogICAgICAgIGtvOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAi6riw6rCEOiIsCiAgICAgICAgICAgIGRheTogIuydvCIsCiAgICAgICAgICAgIGRheXM6ICLsnbzqsIQiLAogICAgICAgICAgICBhcHBseTogIuuLq+q4sCIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAi7JuUIiwKICAgICAgICAgICAgIndlZWstMiI6ICLtmZQiLAogICAgICAgICAgICAid2Vlay0zIjogIuyImCIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAi66qpIiwKICAgICAgICAgICAgIndlZWstNSI6ICLquIgiLAogICAgICAgICAgICAid2Vlay02IjogIu2GoCIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAi7J28IiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogIuyjvCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyIx7JuUIiwgIjLsm5QiLCAiM+yblCIsICI07JuUIiwgIjXsm5QiLCAiNuyblCIsICI37JuUIiwgIjjsm5QiLCAiOeyblCIsICIxMOyblCIsICIxMeyblCIsICIxMuyblCJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICLri6jstpXtgqTrk6QiLAogICAgICAgICAgICBwYXN0OiAi7KeA64KcKOyYpOuKmOq4sOykgCkiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICLsnbTtm4Qo7Jik64qY6riw7KSAKSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAi7J207KCEIiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICIx7KO8IiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAiMeuLrCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAiMeuFhCIsCiAgICAgICAgICAgIG5leHQ6ICLri6TsnYwiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIjHso7wiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICIx64usIiwKICAgICAgICAgICAgIm5leHQteWVhciI6ICIx64WEIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICLrgqDsp5wg67KU7JyE64qUICVkIOydvOuztOuLpCDrp47snYQg7IiYIOyXhuyKteuLiOuLpCIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAi64Kg7KecIOuylOychOuKlCAlZCDsnbzrs7Tri6Qg7J6R7J2EIOyImCDsl4bsirXri4jri6QiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIuuCoOynnCDrspTsnITrpbwgJWQg7J2867O064ukIOq4uOqyjCDshKDtg53tlbQg7KO87IS47JqUIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogIuuCoOynnOulvCDshKDtg53tlbQg7KO87IS47JqUIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICIlZCDsnbzrs7Tri6Qg7J6R7J2AIOuCoOynnOulvCDshKDtg53tlbQg7KO87IS47JqUIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiJWTsmYAgJWQg7J28IOyCrOydtOydmCDrgqDsp5wg67KU7JyE66W8IOyEoO2Dne2VtCDso7zshLjsmpQiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIuuCoOynnCDrspTsnITrpbwg7ISg7YOd7ZW0IOyjvOyEuOyalCIsCiAgICAgICAgICAgIHRpbWU6ICLsi5zqsIEiLAogICAgICAgICAgICBob3VyOiAi7IucIiwKICAgICAgICAgICAgbWludXRlOiAi67aEIgogICAgICAgIH0sCiAgICAgICAgbm86IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICJWYWxndDoiLAogICAgICAgICAgICBkYXk6ICJEYWciLAogICAgICAgICAgICBkYXlzOiAiRGFnZXIiLAogICAgICAgICAgICBhcHBseTogIkx1a2siLAogICAgICAgICAgICAid2Vlay0xIjogIm1hIiwKICAgICAgICAgICAgIndlZWstMiI6ICJ0aSIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAib24iLAogICAgICAgICAgICAid2Vlay00IjogInRvIiwKICAgICAgICAgICAgIndlZWstNSI6ICJmciIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAibMO4IiwKICAgICAgICAgICAgIndlZWstNyI6ICJzw7giLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiamFudWFyIiwgImZlYnJ1YXIiLCAibWFycyIsICJhcHJpbCIsICJtYWkiLCAianVuaSIsICJqdWxpIiwgImF1Z3VzdCIsICJzZXB0ZW1iZXIiLCAib2t0b2JlciIsICJub3ZlbWJlciIsICJkZXNlbWJlciJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJTbmFydmVpZXIiLAogICAgICAgICAgICAiY3VzdG9tLXZhbHVlcyI6ICJFZ2VuZGVmaW5lcnRlIFZlcmRpZXIiLAogICAgICAgICAgICBwYXN0OiAiT3ZlciIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIkbDuGxnZXIiLAogICAgICAgICAgICBwcmV2aW91czogIkZvcnJpZ2UiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlVrZSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIk3DpW5lZCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAiw4VyIiwKICAgICAgICAgICAgbmV4dDogIk5lc3RlIiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJVa2UiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICJNw6VuZWQiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIsOFciIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiRGF0b3BlcmlvZGVuIHNrYWwgaWtramUgdsOmcmUgbGVuZ3JlIGVubiAlZCBkYWdlciIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAiRGF0b3BlcmlvZGVuIHNrYWwgaWtramUgdsOmcmUga29ydGVyZSBlbm4gJWQgZGFnZXIiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIlZlbm5saWdzdCB2ZWxnIGVpbiBkYXRvcGVyaW9kZSBsZW5ncmUgZW5uICVkIGRhZ2VyIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogIlZlbm5saWdzdCB2ZWxnIGVpbiBkYXRvIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJWZW5ubGlnc3QgdmVsZyBlaW4gZGF0b3BlcmlvZGUgbWluZHJlIGVubiAlZCBkYWdlciIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlZlbm5saWdzdCB2ZWxnIGVpbiBkYXRvcGVyaW9kZSBtZWxsb20gJWQgb2cgJWQgZGFnZXIiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIlZlbm5saWdzdCB2ZWxnIGVpbiBkYXRvcGVyaW9kZSIsCiAgICAgICAgICAgIHRpbWU6ICJUaWQiLAogICAgICAgICAgICBob3VyOiAiVGltZSIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV0dGVyIgogICAgICAgIH0sCiAgICAgICAgbmw6IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICJHZXNlbGVjdGVlcmQ6IiwKICAgICAgICAgICAgZGF5OiAiRGFnIiwKICAgICAgICAgICAgZGF5czogIkRhZ2VuIiwKICAgICAgICAgICAgYXBwbHk6ICJPayIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibWEiLAogICAgICAgICAgICAid2Vlay0yIjogImRpIiwKICAgICAgICAgICAgIndlZWstMyI6ICJ3byIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAiZG8iLAogICAgICAgICAgICAid2Vlay01IjogInZyIiwKICAgICAgICAgICAgIndlZWstNiI6ICJ6YSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAiem8iLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiamFudWFyaSIsICJmZWJydWFyaSIsICJtYWFydCIsICJhcHJpbCIsICJtZWkiLCAianVuaSIsICJqdWxpIiwgImF1Z3VzdHVzIiwgInNlcHRlbWJlciIsICJva3RvYmVyIiwgIm5vdmVtYmVyIiwgImRlY2VtYmVyIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIlNuZWxrb3BwZWxpbmdlbiIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogIkFhbmdlcGFzdGUgd2FhcmRlbiIsCiAgICAgICAgICAgIHBhc3Q6ICJWZXJsZWRlbiIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIktvbWVuZCIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiVm9yaWdlIiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICJXZWVrIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAiTWFhbmQiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkphYXIiLAogICAgICAgICAgICBuZXh0OiAiVm9sZ2VuZGUiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIldlZWsiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICJNYWFuZCIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiSmFhciIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiSW50ZXJ2YWwgbW9ldCBsYW5nZXIgZGFuICVkIGRhZ2VuIHppam4iLAogICAgICAgICAgICAibW9yZS10aGFuIjogIkludGVydmFsIG1hZyBuaWV0IG1pbmRlciBkYW4gJWQgZGFnZW4gemlqbiIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAiU2VsZWN0ZWVyIGVlbiBpbnRlcnZhbCBsYW5nZXIgZGFuICVkYWdlbiIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJTZWxlY3RlZXIgZWVuIGRhdHVtIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJTZWxlY3RlZXIgZWVuIGludGVydmFsIG1pbmRlciBkYW4gJWQgZGFnZW4iLAogICAgICAgICAgICAiZGVmYXVsdC1yYW5nZSI6ICJTZWxlY3RlZXIgZWVuIGludGVydmFsIHR1c3NlbiAlZCBlbiAlZCBkYWdlbiIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiU2VsZWN0ZWVyIGVlbiBpbnRlcnZhbCIsCiAgICAgICAgICAgIHRpbWU6ICJUaWpkIiwKICAgICAgICAgICAgaG91cjogIlV1ciIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV1dCIKICAgICAgICB9LAogICAgICAgIHJ1OiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAi0JLRi9Cx0YDQsNC90L46IiwKICAgICAgICAgICAgZGF5OiAi0JTQtdC90YwiLAogICAgICAgICAgICBkYXlzOiAi0JTQvdC10LkiLAogICAgICAgICAgICBhcHBseTogItCf0YDQuNC80LXQvdC40YLRjCIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAi0L/QvSIsCiAgICAgICAgICAgICJ3ZWVrLTIiOiAi0LLRgiIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAi0YHRgCIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAi0YfRgiIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAi0L/RgiIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAi0YHQsSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAi0LLRgSIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyLRj9C90LLQsNGA0YwiLCAi0YTQtdCy0YDQsNC70YwiLCAi0LzQsNGA0YIiLCAi0LDQv9GA0LXQu9GMIiwgItC80LDQuSIsICLQuNGO0L3RjCIsICLQuNGO0LvRjCIsICLQsNCy0LPRg9GB0YIiLCAi0YHQtdC90YLRj9Cx0YDRjCIsICLQvtC60YLRj9Cx0YDRjCIsICLQvdC+0Y/QsdGA0YwiLCAi0LTQtdC60LDQsdGA0YwiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAi0JHRi9GB0YLRgNGL0Lkg0LLRi9Cx0L7RgCIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogItCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC1INC30L3QsNGH0LXQvdC40Y8iLAogICAgICAgICAgICBwYXN0OiAi0J/RgNC+0YjQtdC00YjQuNC1IiwKICAgICAgICAgICAgZm9sbG93aW5nOiAi0KHQu9C10LTRg9GO0YnQuNC1IiwKICAgICAgICAgICAgcHJldmlvdXM6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAicHJldi13ZWVrIjogItCd0LXQtNC10LvRjyIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogItCc0LXRgdGP0YYiLAogICAgICAgICAgICAicHJldi15ZWFyIjogItCT0L7QtCIsCiAgICAgICAgICAgIG5leHQ6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogItCd0LXQtNC10LvRjyIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogItCc0LXRgdGP0YYiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogItCT0L7QtCIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAi0JTQuNCw0L/QsNC30L7QvSDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0LHQvtC70YzRiNC1ICVkINC00L3QtdC5IiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICLQlNC40LDQv9Cw0LfQvtC9INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQvNC10L3RjNGI0LUgJWQg0LTQvdC10LkiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogItCf0L7QttCw0LvRg9C50YHRgtCwINCy0YvQsdC10YDQuNGC0LUg0LTQuNCw0L/QsNC30L7QvSDQsdC+0LvRjNGI0LUgJWQg0LTQvdC10LkiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAi0J/QvtC20LDQu9GD0LnRgdGC0LAg0LLRi9Cx0LXRgNC40YLQtSDQtNCw0YLRgyIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAi0J/QvtC20LDQu9GD0LnRgdGC0LAg0LLRi9Cx0LXRgNC40YLQtSDQtNC40LDQv9Cw0LfQvtC9INC80LXQvdGM0YjQtSAlZCDQtNC90LXQuSIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogItCf0L7QttCw0LvRg9C50YHRgtCwINCy0YvQsdC10YDQuNGC0LUg0LTQuNCw0L/QsNC30L7QvSDQvNC10LbQtNGDICVkINC4ICVkINC00L3Rj9C80LgiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogItCf0L7QttCw0LvRg9C50YHRgtCwINCy0YvQsdC10YDQuNGC0LUg0LTQuNCw0L/QsNC30L7QvSIsCiAgICAgICAgICAgIHRpbWU6ICLQktGA0LXQvNGPIiwKICAgICAgICAgICAgaG91cjogItCn0LDRgdGLIiwKICAgICAgICAgICAgbWludXRlOiAi0JzQuNC90YPRgtGLIgogICAgICAgIH0sCiAgICAgICAgdWs6IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICLQktC40LHRgNCw0L3QvjoiLAogICAgICAgICAgICBkYXk6ICLQlNC10L3RjCIsCiAgICAgICAgICAgIGRheXM6ICLQlNC90ZbQsiIsCiAgICAgICAgICAgIGFwcGx5OiAi0JfQsNGB0YLQvtGB0YPQstCw0YLQuCIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAi0L/QvSIsCiAgICAgICAgICAgICJ3ZWVrLTIiOiAi0LLRgiIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAi0YHRgCIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAi0YfRgiIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAi0L/RgiIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAi0YHQsSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAi0L3QtCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyLRgdGW0YfQtdC90YwiLCAi0LvRjtGC0LjQuSIsICLQsdC10YDQtdC30LXQvdGMIiwgItC60LLRltGC0LXQvdGMIiwgItGC0YDQsNCy0LXQvdGMIiwgItGH0LXRgNCy0LXQvdGMIiwgItC70LjQv9C10L3RjCIsICLRgdC10YDQv9C10L3RjCIsICLQstC10YDQtdGB0LXQvdGMIiwgItC20L7QstGC0LXQvdGMIiwgItC70LjRgdGC0L7Qv9Cw0LQiLCAi0LPRgNGD0LTQtdC90YwiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAi0KjQstC40LTQutC40Lkg0LLQuNCx0ZbRgCIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogItCX0L3QsNGH0LXQvdC90Y8g0LrQvtGA0LjRgdGC0YPQstCw0YfQsCIsCiAgICAgICAgICAgIHBhc3Q6ICLQnNC40L3Rg9C70ZYiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICLQndCw0YHRgtGD0L/QvdGWIiwKICAgICAgICAgICAgcHJldmlvdXM6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAicHJldi13ZWVrIjogItCi0LjQttC00LXQvdGMIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAi0JzRltGB0Y/RhtGMIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICLQoNGW0LoiLAogICAgICAgICAgICBuZXh0OiAiJm5ic3A7Jm5ic3A7Jm5ic3A7IiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICLQotC40LbQtNC10L3RjCIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogItCc0ZbRgdGP0YbRjCIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAi0KDRltC6IiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICLQlNGW0LDQv9Cw0LfQvtC9INC90LUg0LzQvtC20LUg0LHRg9GC0Lgg0LHRltC70YzRiCDQvdGW0LYgJWQg0LTQvdGW0LIiLAogICAgICAgICAgICAibW9yZS10aGFuIjogItCU0ZbQsNC/0LDQt9C+0L0g0L3QtSDQvNC+0LbQtSDQsdGD0YLQuCDQvNC10L3RjNGIINC90ZbQtiAlZCDQtNC90ZbQsiIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAi0JHRg9C00Ywg0LvQsNGB0LrQsCDQstC40LHQtdGA0ZbRgtGMINC00ZbQsNC/0LDQt9C+0L0g0LHRltC70YzRiNC1ICVkINC00L3RltCyIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogItCR0YPQtNGMINC70LDRgdC60LAg0LLQuNCx0LXRgNGW0YLRjCDQtNCw0YLRgyIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAi0JHRg9C00Ywg0LvQsNGB0LrQsCDQstC40LHQtdGA0ZbRgtGMINC00ZbQsNC/0LDQt9C+0L0g0LzQtdC90YjQtSAlZCDQtNC90ZbQsiIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogItCR0YPQtNGMINC70LDRgdC60LAg0LLQuNCx0LXRgNGW0YLRjCDQtNGW0LDQv9Cw0LfQvtC9INC80ZbQtiAlZCDRgtCwICVkINC00L3Rj9C80LgiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogItCR0YPQtNGMINC70LDRgdC60LAg0LLQuNCx0LXRgNGW0YLRjCDQtNGW0LDQv9Cw0LfQvtC9IiwKICAgICAgICAgICAgdGltZTogItCn0LDRgSIsCiAgICAgICAgICAgIGhvdXI6ICLQk9C+0LTQuNC90LgiLAogICAgICAgICAgICBtaW51dGU6ICLQpdCy0LjQu9C40L3QuCIKICAgICAgICB9LAogICAgICAgIHBsOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiV3licmFueToiLAogICAgICAgICAgICBkYXk6ICJEemllxYQiLAogICAgICAgICAgICBkYXlzOiAiRG5pIiwKICAgICAgICAgICAgYXBwbHk6ICJaYW1rbmlqIiwKICAgICAgICAgICAgIndlZWstMSI6ICJwb24iLAogICAgICAgICAgICAid2Vlay0yIjogInd0IiwKICAgICAgICAgICAgIndlZWstMyI6ICLFm3IiLAogICAgICAgICAgICAid2Vlay00IjogImN6dyIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAicHQiLAogICAgICAgICAgICAid2Vlay02IjogInNvIiwKICAgICAgICAgICAgIndlZWstNyI6ICJuZCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJzdHljemXFhCIsICJsdXR5IiwgIm1hcnplYyIsICJrd2llY2llxYQiLCAibWFqIiwgImN6ZXJ3aWVjIiwgImxpcGllYyIsICJzaWVycGllxYQiLCAid3J6ZXNpZcWEIiwgInBhxbpkemllcm5payIsICJsaXN0b3BhZCIsICJncnVkemllxYQiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAiU2tyw7N0eSIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogIk5pZXN0YW5kYXJkb3dlIHdhcnRvxZtjaSIsCiAgICAgICAgICAgIHBhc3Q6ICJQcnplc3rFgmUiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJOYXN0xJlwbmUiLAogICAgICAgICAgICBwcmV2aW91czogIlBvcHJ6ZWRuaWUiLAogICAgICAgICAgICAicHJldi13ZWVrIjogInR5ZHppZcWEIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAibWllc2nEhWMiLAogICAgICAgICAgICAicHJldi15ZWFyIjogInJvayIsCiAgICAgICAgICAgIG5leHQ6ICJOYXN0xJlwbnkiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogInR5ZHppZcWEIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAibWllc2nEhWMiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogInJvayIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiT2tyZXMgbmllIHBvd2luaWVuIGJ5xIcgZMWCdcW8c3p5IG5pxbwgJWQgZG5pIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJPa3JlcyBuaWUgcG93aW5pZW4gYnnEhyBrcsOzdHN6eSBuacW8ICAlZCBuaSIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAiV3liaWVyeiBva3JlcyBkxYJ1xbxzenkgbmnFvCAlZCBkbmkiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiV3liaWVyeiBkYXTEmSIsCiAgICAgICAgICAgICJkZWZhdWx0LWxlc3MiOiAiV3liaWVyeiBva3JlcyBrcsOzdHN6eSBuacW8ICVkIGRuaSIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIld5Ymllcnogb2tyZXMgdHJ3YWrEhWN5IG9kICVkIGRvICVkIGRuaSIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiV3liaWVyeiBva3JlcyIsCiAgICAgICAgICAgIHRpbWU6ICJDemFzIiwKICAgICAgICAgICAgaG91cjogIkdvZHppbmEiLAogICAgICAgICAgICBtaW51dGU6ICJNaW51dGEiCiAgICAgICAgfSwKICAgICAgICBzZTogewogICAgICAgICAgICBzZWxlY3RlZDogIlZhbGQ6IiwKICAgICAgICAgICAgZGF5OiAiZGFnIiwKICAgICAgICAgICAgZGF5czogImRhZ2FyIiwKICAgICAgICAgICAgYXBwbHk6ICJnb2Rrw6RubiIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibWEiLAogICAgICAgICAgICAid2Vlay0yIjogInRpIiwKICAgICAgICAgICAgIndlZWstMyI6ICJvbiIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAidG8iLAogICAgICAgICAgICAid2Vlay01IjogImZyIiwKICAgICAgICAgICAgIndlZWstNiI6ICJsw7YiLAogICAgICAgICAgICAid2Vlay03IjogInPDtiIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJqYW51YXJpIiwgImZlYnJ1YXJpIiwgIm1hcnMiLCAiYXByaWwiLCAibWFqIiwgImp1bmkiLCAianVsaSIsICJhdWd1c3RpIiwgInNlcHRlbWJlciIsICJva3RvYmVyIiwgIm5vdmVtYmVyIiwgImRlY2VtYmVyIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogImdlbnbDpGdhciIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogIkFucGFzc2FkZSB2w6RyZGVuIiwKICAgICAgICAgICAgcGFzdDogIsO2dmVyIiwKICAgICAgICAgICAgZm9sbG93aW5nOiAiZsO2bGphbmRlIiwKICAgICAgICAgICAgcHJldmlvdXM6ICJmw7ZycmEiLAogICAgICAgICAgICAicHJldi13ZWVrIjogInZlY2thIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAibcOlbmFkIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICLDpXIiLAogICAgICAgICAgICBuZXh0OiAibsOkc3RhIiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJ2ZWNrYSIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogIm3DpW5lZCIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiw6VyIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJEYXR1bWludGVydmFsbCBiw7ZyIGludGUgdmFyYSBtaW5kcmUgw6RuICVkIGRhZ2FyIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJEYXR1bWludGVydmFsbCBiw7ZyIGludGUgdmFyYSBtZXIgw6RuICVkIGRhZ2FyIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJWw6RsaiBldHQgZGF0dW1pbnRlcnZhbGwgbMOkbmdyZSDDpG4gJWQgZGFnYXIiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiVsOkbGogZXR0IGRhdHVtIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJWw6RsaiBldHQgZGF0dW1pbnRlcnZhbGwgbWluZHJlIMOkbiAlZCBkYWdhciIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlbDpGxqIGV0dCBkYXR1bWludGVydmFsbCBtZWxsYW4gJWQgb2NoICVkIGRhZ2FyIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICJWw6RsaiBldHQgZGF0dW1pbnRlcnZhbGwiLAogICAgICAgICAgICB0aW1lOiAidGlkIiwKICAgICAgICAgICAgaG91cjogInRpbW1lIiwKICAgICAgICAgICAgbWludXRlOiAibWludXQiCiAgICAgICAgfSwKICAgICAgICBwdDogewogICAgICAgICAgICBzZWxlY3RlZDogIlNlbGVjaW9uYWRvOiIsCiAgICAgICAgICAgIGRheTogIkRpYSIsCiAgICAgICAgICAgIGRheXM6ICJEaWFzIiwKICAgICAgICAgICAgYXBwbHk6ICJGZWNoYXIiLAogICAgICAgICAgICAid2Vlay0xIjogInNlZyIsCiAgICAgICAgICAgICJ3ZWVrLTIiOiAidGVyIiwKICAgICAgICAgICAgIndlZWstMyI6ICJxdWEiLAogICAgICAgICAgICAid2Vlay00IjogInF1aSIsCiAgICAgICAgICAgICJ3ZWVrLTUiOiAic2V4IiwKICAgICAgICAgICAgIndlZWstNiI6ICJzYWIiLAogICAgICAgICAgICAid2Vlay03IjogImRvbSIsCiAgICAgICAgICAgICJ3ZWVrLW51bWJlciI6ICJOIiwKICAgICAgICAgICAgIm1vbnRoLW5hbWUiOiBbImphbmVpcm8iLCAiZmV2ZXJlaXJvIiwgIm1hcsOnbyIsICJhYnJpbCIsICJtYWlvIiwgImp1bmhvIiwgImp1bGhvIiwgImFnb3N0byIsICJzZXRlbWJybyIsICJvdXR1YnJvIiwgIm5vdmVtYnJvIiwgImRlemVtYnJvIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIkF0YWxob3MiLAogICAgICAgICAgICAiY3VzdG9tLXZhbHVlcyI6ICJWYWxvcmVzIFBlcnNvbmFsaXphZG9zIiwKICAgICAgICAgICAgcGFzdDogIlBhc3NhZG8iLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJTZWd1aW50ZSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiQW50ZXJpb3IiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlNlbWFuYSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIk3DqnMiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkFubyIsCiAgICAgICAgICAgIG5leHQ6ICJQcsOzeGltbyIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAiUHLDs3hpbWEgU2VtYW5hIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiUHLDs3hpbW8gTcOqcyIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiUHLDs3hpbW8gQW5vIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJPIHBlcsOtb2RvIHNlbGVjaW9uYWRvIG7Do28gZGV2ZSBzZXIgbWFpb3IgcXVlICVkIGRpYXMiLAogICAgICAgICAgICAibW9yZS10aGFuIjogIk8gcGVyw61vZG8gc2VsZWNpb25hZG8gbsOjbyBkZXZlIHNlciBtZW5vciBxdWUgJWQgZGlhcyIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAiU2VsZWNpb25lIHVtIHBlcsOtb2RvIHN1cGVyaW9yIGEgJWQgZGlhcyIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJTZWxlY2lvbmUgdW1hIGRhdGEiLAogICAgICAgICAgICAiZGVmYXVsdC1sZXNzIjogIlNlbGVjaW9uZSB1bSBwZXLDrW9kbyBpbmZlcmlvciBhICVkIGRpYXMiLAogICAgICAgICAgICAiZGVmYXVsdC1yYW5nZSI6ICJTZWxlY2lvbmUgdW0gcGVyw61vZG8gZGUgJWQgYSAlZCBkaWFzIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICJTZWxlY2lvbmUgdW0gcGVyw61vZG8iLAogICAgICAgICAgICB0aW1lOiAiVGVtcG8iLAogICAgICAgICAgICBob3VyOiAiSG9yYSIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV0byIKICAgICAgICB9LAogICAgICAgIHRjOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAi5bey6YG45pOHOiIsCiAgICAgICAgICAgIGRheTogIuWkqSIsCiAgICAgICAgICAgIGRheXM6ICLlpKkiLAogICAgICAgICAgICBhcHBseTogIueiuuWumiIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAi5LiAIiwKICAgICAgICAgICAgIndlZWstMiI6ICLkuowiLAogICAgICAgICAgICAid2Vlay0zIjogIuS4iSIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAi5ZubIiwKICAgICAgICAgICAgIndlZWstNSI6ICLkupQiLAogICAgICAgICAgICAid2Vlay02IjogIuWFrSIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAi5pelIiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogIumAsSIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyLkuIDmnIgiLCAi5LqM5pyIIiwgIuS4ieaciCIsICLlm5vmnIgiLCAi5LqU5pyIIiwgIuWFreaciCIsICLkuIPmnIgiLCAi5YWr5pyIIiwgIuS5neaciCIsICLljYHmnIgiLCAi5Y2B5LiA5pyIIiwgIuWNgeS6jOaciCJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICLlv6vpgJ/pgbjmk4ciLAogICAgICAgICAgICBwYXN0OiAi6YGO5Y67IiwKICAgICAgICAgICAgZm9sbG93aW5nOiAi5bCH5L6GIiwKICAgICAgICAgICAgcHJldmlvdXM6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIuS4iumAsSIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIuS4iuWAi+aciCIsCiAgICAgICAgICAgICJwcmV2LXllYXIiOiAi5Y675bm0IiwKICAgICAgICAgICAgbmV4dDogIiZuYnNwOyZuYnNwOyZuYnNwOyIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAi5LiL6YCxIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAi5LiL5YCL5pyIIiwKICAgICAgICAgICAgIm5leHQteWVhciI6ICLmmI7lubQiLAogICAgICAgICAgICAibGVzcy10aGFuIjogIuaJgOmBuOaXpeacn+evhOWcjeS4jeiDveWkp+aWvCVk5aSpIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICLmiYDpgbjml6XmnJ/nr4TlnI3kuI3og73lsI/mlrwlZOWkqSIsCiAgICAgICAgICAgICJkZWZhdWx0LW1vcmUiOiAi6KuL6YG45pOH5aSn5pa8JWTlpKnnmoTml6XmnJ/nr4TlnI0iLAogICAgICAgICAgICAiZGVmYXVsdC1sZXNzIjogIuiri+mBuOaTh+WwkeaWvCVk5aSp55qE5pel5pyf56+E5ZyNIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAi6KuL6YG45pOHJWTlpKnliLAlZOWkqeeahOaXpeacn+evhOWcjSIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICLoq4vpgbjmk4fkuIDlgIvml6XmnJ8iLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIuiri+mBuOaTh+S4gOWAi+aXpeacn+evhOWcjSIsCiAgICAgICAgICAgIHRpbWU6ICLml6XmnJ8iLAogICAgICAgICAgICBob3VyOiAi5bCP5pmCIiwKICAgICAgICAgICAgbWludXRlOiAi5YiG6ZCYIgogICAgICAgIH0sCiAgICAgICAgamE6IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICLpgbjmip7jgZfjgb7jgZfjgZ86IiwKICAgICAgICAgICAgZGF5OiAi5pelIiwKICAgICAgICAgICAgZGF5czogIuaXpSIsCiAgICAgICAgICAgIGFwcGx5OiAi56K65a6aIiwKICAgICAgICAgICAgIndlZWstMSI6ICLmnIgiLAogICAgICAgICAgICAid2Vlay0yIjogIueBqyIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAi5rC0IiwKICAgICAgICAgICAgIndlZWstNCI6ICLmnKgiLAogICAgICAgICAgICAid2Vlay01IjogIumHkSIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAi5ZyfIiwKICAgICAgICAgICAgIndlZWstNyI6ICLml6UiLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsiMeaciCIsICIy5pyIIiwgIjPmnIgiLCAiNOaciCIsICI15pyIIiwgIjbmnIgiLCAiN+aciCIsICI45pyIIiwgIjnmnIgiLCAiMTDmnIgiLCAiMTHmnIgiLCAiMTLmnIgiXSwKICAgICAgICAgICAgc2hvcnRjdXRzOiAi44Kv44Kk44OD44Kv6YG45oqeIiwKICAgICAgICAgICAgcGFzdDogIumBjuWOuyIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIuWwhuadpSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiJm5ic3A7Jm5ic3A7Jm5ic3A7IiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICLlhYjpgLEiLAogICAgICAgICAgICAicHJldi1tb250aCI6ICLlhYjmnIgiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIuaYqOW5tCIsCiAgICAgICAgICAgIG5leHQ6ICImbmJzcDsmbmJzcDsmbmJzcDsiLAogICAgICAgICAgICAibmV4dC13ZWVrIjogIuadpemAsSIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogIuadpeaciCIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAi5p2l5bm0IiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICLml6Xku5jjga7nr4Tlm7Ljga/vvIVk5pel5Lul5LiK44Gr44GZ44G544GN44Gn44Gv44GC44KK44G+44Gb44KTIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICLml6Xku5jjga7nr4Tlm7Ljga/vvIVk5pel44KS5LiL5Zue44Gj44Gm44Gv44GE44GR44G+44Gb44KTIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICLvvIVk5pel44KI44KK44KC6ZW344GE5pyf6ZaT44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICLvvIVk5pel5pyq5rqA44Gu5pyf6ZaT44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAi77yFZOaXpeOBqO+8hWTml6Xjga7plpPjga7ml6Xku5jnr4Tlm7LjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYQiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAi5pel5LuY44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICLml6Xku5jnr4Tlm7LjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYQiLAogICAgICAgICAgICB0aW1lOiAi5pmC6ZaTIiwKICAgICAgICAgICAgaG91cjogIuaZgumWkyIsCiAgICAgICAgICAgIG1pbnV0ZTogIuWIhiIKICAgICAgICB9LAogICAgICAgIGRhOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiVmFsZ3Q6IiwKICAgICAgICAgICAgZGF5OiAiRGFnIiwKICAgICAgICAgICAgZGF5czogIkRhZ2UiLAogICAgICAgICAgICBhcHBseTogIkx1ayIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAibWEiLAogICAgICAgICAgICAid2Vlay0yIjogInRpIiwKICAgICAgICAgICAgIndlZWstMyI6ICJvbiIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAidG8iLAogICAgICAgICAgICAid2Vlay01IjogImZyIiwKICAgICAgICAgICAgIndlZWstNiI6ICJsw7giLAogICAgICAgICAgICAid2Vlay03IjogInPDuCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJqYW51YXIiLCAiZmVicnVhciIsICJtYXJ0cyIsICJhcHJpbCIsICJtYWoiLCAianVuaSIsICJqdWxpIiwgImF1Z3VzdCIsICJzZXB0ZW1iZXIiLCAib2t0b2JlciIsICJub3ZlbWJlciIsICJkZWNlbWJlciJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJnZW52ZWplIiwKICAgICAgICAgICAgImN1c3RvbS12YWx1ZXMiOiAiQnJ1Z2VyZGVmaW5lcmVkZSB2w6ZyZGllciIsCiAgICAgICAgICAgIHBhc3Q6ICJGb3JiaSIsCiAgICAgICAgICAgIGZvbGxvd2luZzogIkbDuGxnZW5kZSIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiRm9ycmlnZSIsCiAgICAgICAgICAgICJwcmV2LXdlZWsiOiAidWdlIiwKICAgICAgICAgICAgInByZXYtbW9udGgiOiAibcOlbmVkIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICLDpXIiLAogICAgICAgICAgICBuZXh0OiAiTsOmc3RlIiwKICAgICAgICAgICAgIm5leHQtd2VlayI6ICJ1Z2UiLAogICAgICAgICAgICAibmV4dC1tb250aCI6ICJtw6VuZWQiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIsOlciIsCiAgICAgICAgICAgICJsZXNzLXRoYW4iOiAiRGF0byBpbnRlcnZhbCBiw7hyIGlra2UgdsOmcmUgbWVkIGVuZCAlZCBkYWdlIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJEYXRvIGludGVydmFsIGLDuHIgaWtrZSB2w6ZyZSBtaW5kcmUgZW5kICVkIGRhZ2UiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIlbDpmxnIGRhdG9pbnRlcnZhbCBsw6ZuZ2VyZSBlbmQgJWQgZGFnZSIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJWw6ZsZyBkYXRvIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJWw6ZsZyBkYXRvaW50ZXJ2YWwgbWluZHJlIGVuZCAlZCBkYWdlIiwKICAgICAgICAgICAgImRlZmF1bHQtcmFuZ2UiOiAiVsOmbGcgZGF0b2ludGVydmFsIG1lbGxlbSAlZCBvZyAlZCBkYWdlIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICJWw6ZsZyBkYXRvaW50ZXJ2YWwiLAogICAgICAgICAgICB0aW1lOiAidGlkIiwKICAgICAgICAgICAgaG91cjogInRpbWUiLAogICAgICAgICAgICBtaW51dGU6ICJtaW51dCIKICAgICAgICB9LAogICAgICAgIGZpOiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiVmFsaXR0dToiLAogICAgICAgICAgICBkYXk6ICJQw6RpdsOkIiwKICAgICAgICAgICAgZGF5czogIlDDpGl2w6TDpCIsCiAgICAgICAgICAgIGFwcGx5OiAiU3VsamUiLAogICAgICAgICAgICAid2Vlay0xIjogIm1hIiwKICAgICAgICAgICAgIndlZWstMiI6ICJ0aSIsCiAgICAgICAgICAgICJ3ZWVrLTMiOiAia2UiLAogICAgICAgICAgICAid2Vlay00IjogInRvIiwKICAgICAgICAgICAgIndlZWstNSI6ICJwZSIsCiAgICAgICAgICAgICJ3ZWVrLTYiOiAibGEiLAogICAgICAgICAgICAid2Vlay03IjogInN1IiwKICAgICAgICAgICAgIndlZWstbnVtYmVyIjogIlYiLAogICAgICAgICAgICAibW9udGgtbmFtZSI6IFsidGFtbWlrdXUiLCAiaGVsbWlrdXUiLCAibWFhbGlza3V1IiwgImh1aHRpa3V1IiwgInRvdWtva3V1IiwgImtlc8Oka3V1IiwgImhlaW7DpGt1dSIsICJlbG9rdXUiLCAic3l5c2t1dSIsICJsb2tha3V1IiwgIm1hcnJhc2t1dSIsICJqb3VsdWt1dSJdLAogICAgICAgICAgICBzaG9ydGN1dHM6ICJQaWthdmFsaW5uYXQiLAogICAgICAgICAgICAiY3VzdG9tLXZhbHVlcyI6ICJNdWthdXRldHV0IEFydm90IiwKICAgICAgICAgICAgcGFzdDogIk1lbm5lZXQiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJUdWxldmF0IiwKICAgICAgICAgICAgcHJldmlvdXM6ICJFZGVsbGluZW4iLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlZpaWtrbyIsCiAgICAgICAgICAgICJwcmV2LW1vbnRoIjogIkt1dWthdXNpIiwKICAgICAgICAgICAgInByZXYteWVhciI6ICJWdW9zaSIsCiAgICAgICAgICAgIG5leHQ6ICJTZXVyYWF2YSIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAiVmlpa2tvIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAiS3V1a2F1c2kiLAogICAgICAgICAgICAibmV4dC15ZWFyIjogIlZ1b3NpIiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJBaWthamFrc29uIHR1bGlzaSBvbGxhIHbDpGhlbW3DpG4ga3VpbiAlZCBww6RpdsOkw6QiLAogICAgICAgICAgICAibW9yZS10aGFuIjogIkFpa2FqYWtzb24gZWkgdHVsaXNpIG9sbGEgdsOkaGVtcMOkw6Qga3VpbiAlZCBww6RpdsOkw6QiLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIlZhbGl0c2UgcGlkZW1waSBhaWthamFrc28ga3VpbiAlZCBww6RpdsOkw6QiLAogICAgICAgICAgICAiZGVmYXVsdC1zaW5nbGUiOiAiVmFsaXRzZSBww6RpdsOkIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJWYWxpdHNlIGx5aHllbXBpIGFpa2FqYWtzbyBrdWluICVkIHDDpGl2w6TDpCIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlZhbGl0c2UgYWlrYWpha3NvICVkIGphICVkIHDDpGl2w6RuIHbDpGxpbHTDpCIsCiAgICAgICAgICAgICJkZWZhdWx0LWRlZmF1bHQiOiAiVmFsaXRzZSBhaWthamFrc28iLAogICAgICAgICAgICB0aW1lOiAiQWlrYSIsCiAgICAgICAgICAgIGhvdXI6ICJUdW50aSIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV1dHRpIgogICAgICAgIH0sCiAgICAgICAgY2F0OiB7CiAgICAgICAgICAgIHNlbGVjdGVkOiAiU2VsZWNjaW9uYXRzOiIsCiAgICAgICAgICAgIGRheTogIkRpYSIsCiAgICAgICAgICAgIGRheXM6ICJEaWVzIiwKICAgICAgICAgICAgYXBwbHk6ICJUYW5jYSIsCiAgICAgICAgICAgICJ3ZWVrLTEiOiAiRGwiLAogICAgICAgICAgICAid2Vlay0yIjogIkRtIiwKICAgICAgICAgICAgIndlZWstMyI6ICJEYyIsCiAgICAgICAgICAgICJ3ZWVrLTQiOiAiRGoiLAogICAgICAgICAgICAid2Vlay01IjogIkR2IiwKICAgICAgICAgICAgIndlZWstNiI6ICJEcyIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAiRGciLAogICAgICAgICAgICAid2Vlay1udW1iZXIiOiAiUyIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJnZW5lciIsICJmZWJyZXIiLCAibWFyw6ciLCAiYWJyaWwiLCAibWFpZyIsICJqdW55IiwgImp1bGlvbCIsICJhZ29zdCIsICJzZXRlbWJyZSIsICJvY3R1YnJlIiwgIm5vdmVtYnJlIiwgImRlc2VtYnJlIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIkRyZcOnZXJlcyIsCiAgICAgICAgICAgICJjdXN0b20tdmFsdWVzIjogIlZhbG9ycyBwZXJzb25hbGl0emF0cyIsCiAgICAgICAgICAgIHBhc3Q6ICJQYXNzYXQiLAogICAgICAgICAgICBmb2xsb3dpbmc6ICJGdXR1ciIsCiAgICAgICAgICAgIHByZXZpb3VzOiAiQW50ZXJpb3IiLAogICAgICAgICAgICAicHJldi13ZWVrIjogIlNldG1hbmEiLAogICAgICAgICAgICAicHJldi1tb250aCI6ICJNZXMiLAogICAgICAgICAgICAicHJldi15ZWFyIjogIkFueSIsCiAgICAgICAgICAgIG5leHQ6ICJTZWfDvGVudCIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAiU2V0bWFuYSIsCiAgICAgICAgICAgICJuZXh0LW1vbnRoIjogIk1lcyIsCiAgICAgICAgICAgICJuZXh0LXllYXIiOiAiQW55IiwKICAgICAgICAgICAgImxlc3MtdGhhbiI6ICJFbCBwZXLDrW9kZSBubyBoYXVyaWEgZGUgc2VyIGRlIG3DqXMgZGUgJWQgZGllcyIsCiAgICAgICAgICAgICJtb3JlLXRoYW4iOiAiRWwgcGVyw61vZGUgbm8gaGF1cmlhIGRlIHNlciBkZSBtZW55cyBkZSAlZCBkaWVzIiwKICAgICAgICAgICAgImRlZmF1bHQtbW9yZSI6ICJQZXJmYXZvciBzZWxlY2Npb25hIHVuIHBlcsOtb2RlIG3DqXMgZ3JhbiBkZSAlZCBkaWVzIiwKICAgICAgICAgICAgImRlZmF1bHQtc2luZ2xlIjogIlBlcmZhdm9yIHNlbGVjY2lvbmEgdW5hIGRhdGEiLAogICAgICAgICAgICAiZGVmYXVsdC1sZXNzIjogIlBlcmZhdm9yIHNlbGVjY2lvbmEgdW4gcGVyw61vZGUgZGUgbWVueXMgZGUgJWQgZGllcyIsCiAgICAgICAgICAgICJkZWZhdWx0LXJhbmdlIjogIlBlcmZhdm9yIHNlbGVjY2lvbmEgdW4gcGVyw61vZGUgZCdlbnRyZSAlZCBpICVkIGRpZXMiLAogICAgICAgICAgICAiZGVmYXVsdC1kZWZhdWx0IjogIlBlcmZhdm9yIHNlbGVjY2lvbmEgdW4gcGVyw61vZGUiLAogICAgICAgICAgICB0aW1lOiAiVGVtcHMiLAogICAgICAgICAgICBob3VyOiAiSG9yYSIsCiAgICAgICAgICAgIG1pbnV0ZTogIk1pbnV0IgogICAgICAgIH0sCiAgICAgICAgc2s6IHsKICAgICAgICAgICAgc2VsZWN0ZWQ6ICJWeWJyYW7DqToiLAogICAgICAgICAgICBkYXk6ICJEZcWIIiwKICAgICAgICAgICAgZGF5czogIkRuaSIsCiAgICAgICAgICAgIGFwcGx5OiAiWmF2cmllxaUiLAogICAgICAgICAgICAid2Vlay0xIjogInBvIiwKICAgICAgICAgICAgIndlZWstMiI6ICLDunQiLAogICAgICAgICAgICAid2Vlay0zIjogInN0IiwKICAgICAgICAgICAgIndlZWstNCI6ICLFoXQiLAogICAgICAgICAgICAid2Vlay01IjogInBpIiwKICAgICAgICAgICAgIndlZWstNiI6ICJzbyIsCiAgICAgICAgICAgICJ3ZWVrLTciOiAibmUiLAogICAgICAgICAgICAid2Vlay1udW1iZXIiOiAiVCIsCiAgICAgICAgICAgICJtb250aC1uYW1lIjogWyJqYW51w6FyIiwgImZlYnJ1w6FyIiwgIm1hcmVjIiwgImFwcsOtbCIsICJtw6FqIiwgImrDum4iLCAiasO6bCIsICJhdWd1c3QiLCAic2VwdGVtYmVyIiwgIm9rdMOzYmVyIiwgIm5vdmVtYmVyIiwgImRlY2VtYmVyIl0sCiAgICAgICAgICAgIHNob3J0Y3V0czogIlNrcmF0a3kiLAogICAgICAgICAgICAiY3VzdG9tLXZhbHVlcyI6ICJWbGFzdG7DqSBob2Rub3R5IiwKICAgICAgICAgICAgcGFzdDogInBvIiwKICAgICAgICAgICAgZm9sbG93aW5nOiAibmFzbGVkdWrDumNpIiwKICAgICAgICAgICAgcHJldmlvdXM6ICJwcmVkY2jDoWR6YWrDumNpIiwKICAgICAgICAgICAgInByZXYtd2VlayI6ICJ0w73FvmRlxYgiLAogICAgICAgICAgICAicHJldi1tb250aCI6ICJtZXNpYWMiLAogICAgICAgICAgICAicHJldi15ZWFyIjogInJvayIsCiAgICAgICAgICAgIG5leHQ6ICLEj2FsxaHDrSIsCiAgICAgICAgICAgICJuZXh0LXdlZWsiOiAidMO9xb5kZcWIIiwKICAgICAgICAgICAgIm5leHQtbW9udGgiOiAibWVzaWFjIiwKICAgICAgICAgICAgIm5leHQteWVhciI6ICJyb2siLAogICAgICAgICAgICAibGVzcy10aGFuIjogIlJvenNhaCBkw6F0dW11IGJ5IG5lbWFsIGJ5xaUgdsOkxI3FocOtIGFrbyAlZCBkbsOtIiwKICAgICAgICAgICAgIm1vcmUtdGhhbiI6ICJSb3pzYWggZMOhdHVtdSBieSBuZW1hbCBiecWlIG1lbsWhw60gYWtvICVkIGRuw60iLAogICAgICAgICAgICAiZGVmYXVsdC1tb3JlIjogIlByb3PDrW0genZvxL50ZSByb3pzYWggZGxoxaHDrSBha28gJWQgZG7DrSIsCiAgICAgICAgICAgICJkZWZhdWx0LXNpbmdsZSI6ICJQcm9zw61tIHp2b8S+dGUgZMOhdHVtIiwKICAgICAgICAgICAgImRlZmF1bHQtbGVzcyI6ICJQcm9zw61tIHp2b8S+dGUgcm96c2FoIG1lbsWhw60gYWtvICVkIGRuw60iLAogICAgICAgICAgICAiZGVmYXVsdC1yYW5nZSI6ICJQcm9zw61tIHp2b8S+dGUgcm96c2FoIG1lZHppICVkIGEgJWQgZMWIYW1pIiwKICAgICAgICAgICAgImRlZmF1bHQtZGVmYXVsdCI6ICJQcm9zw61tIHp2b8S+dGUgcm96c2FoIiwKICAgICAgICAgICAgdGltZTogIsSMYXMiLAogICAgICAgICAgICBob3VyOiAiSG9kaW5hIiwKICAgICAgICAgICAgbWludXRlOiAiTWluw7p0YSIKICAgICAgICB9CiAgICB9LCBVLmZuLmRhdGVSYW5nZVBpY2tlciA9IGZ1bmN0aW9uKGYpIHsKICAgICAgICBmIHx8IChmID0ge30pLCAoZiA9IFUuZXh0ZW5kKCEwLCB7CiAgICAgICAgICAgIGF1dG9DbG9zZTogITEsCiAgICAgICAgICAgIGZvcm1hdDogIllZWVktTU0tREQiLAogICAgICAgICAgICBzZXBhcmF0b3I6ICIgdG8gIiwKICAgICAgICAgICAgbGFuZ3VhZ2U6ICJhdXRvIiwKICAgICAgICAgICAgc3RhcnRPZldlZWs6ICJzdW5kYXkiLAogICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVSh0aGlzKS52YWwoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRWYWx1ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgVSh0aGlzKS5hdHRyKCJyZWFkb25seSIpIHx8IFUodGhpcykuaXMoIjpkaXNhYmxlZCIpIHx8IGUgPT0gVSh0aGlzKS52YWwoKSB8fCBVKHRoaXMpLnZhbChlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzdGFydERhdGU6ICExLAogICAgICAgICAgICBlbmREYXRlOiAhMSwKICAgICAgICAgICAgdGltZTogewogICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbWluRGF5czogMCwKICAgICAgICAgICAgbWF4RGF5czogMCwKICAgICAgICAgICAgc2hvd1Nob3J0Y3V0czogITEsCiAgICAgICAgICAgIHNob3J0Y3V0czoge30sCiAgICAgICAgICAgIGN1c3RvbVNob3J0Y3V0czogW10sCiAgICAgICAgICAgIGlubGluZTogITEsCiAgICAgICAgICAgIGNvbnRhaW5lcjogImJvZHkiLAogICAgICAgICAgICBhbHdheXNPcGVuOiAhMSwKICAgICAgICAgICAgc2luZ2xlRGF0ZTogITEsCiAgICAgICAgICAgIGxvb2tCZWhpbmQ6ICExLAogICAgICAgICAgICBiYXRjaE1vZGU6ICExLAogICAgICAgICAgICBkdXJhdGlvbjogMjAwLAogICAgICAgICAgICBzdGlja3lNb250aHM6ICExLAogICAgICAgICAgICBkYXlEaXZBdHRyczogW10sCiAgICAgICAgICAgIGRheVRkQXR0cnM6IFtdLAogICAgICAgICAgICBzZWxlY3RGb3J3YXJkOiAhMSwKICAgICAgICAgICAgc2VsZWN0QmFja3dhcmQ6ICExLAogICAgICAgICAgICBhcHBseUJ0bkNsYXNzOiAiIiwKICAgICAgICAgICAgc2luZ2xlTW9udGg6ICJhdXRvIiwKICAgICAgICAgICAgaG92ZXJpbmdUb29sdGlwOiBmdW5jdGlvbihlLCB0LCBhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMSA8IGUgPyBlICsgIiAiICsgSygiZGF5cyIpIDogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2hvd1RvcGJhcjogITAsCiAgICAgICAgICAgIHN3YXBUaW1lOiAhMSwKICAgICAgICAgICAgc2hvd1dlZWtOdW1iZXJzOiAhMSwKICAgICAgICAgICAgZ2V0V2Vla051bWJlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFEoZSkuZm9ybWF0KCJ3IikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY3VzdG9tT3BlbkFuaW1hdGlvbjogbnVsbCwKICAgICAgICAgICAgY3VzdG9tQ2xvc2VBbmltYXRpb246IG51bGwsCiAgICAgICAgICAgIGN1c3RvbUFycm93UHJldlN5bWJvbDogbnVsbCwKICAgICAgICAgICAgY3VzdG9tQXJyb3dOZXh0U3ltYm9sOiBudWxsLAogICAgICAgICAgICBtb250aFNlbGVjdDogITEsCiAgICAgICAgICAgIHllYXJTZWxlY3Q6ICExCiAgICAgICAgfSwgZikpLnN0YXJ0ID0gITEsIGYuZW5kID0gITEsIGYuc3RhcnRXZWVrID0gITEsIGYuaXNUb3VjaERldmljZSA9ICJvbnRvdWNoc3RhcnQiIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cywgZi5pc1RvdWNoRGV2aWNlICYmIChmLmhvdmVyaW5nVG9vbHRpcCA9ICExKSwgImF1dG8iID09IGYuc2luZ2xlTW9udGggJiYgKGYuc2luZ2xlTW9udGggPSBVKHdpbmRvdykud2lkdGgoKSA8IDQ4MCksIGYuc2luZ2xlTW9udGggJiYgKGYuc3RpY2t5TW9udGhzID0gITEpLCBmLnNob3dUb3BiYXIgfHwgKGYuYXV0b0Nsb3NlID0gITApLCBmLnN0YXJ0RGF0ZSAmJiAic3RyaW5nIiA9PSB0eXBlb2YgZi5zdGFydERhdGUgJiYgKGYuc3RhcnREYXRlID0gUShmLnN0YXJ0RGF0ZSwgZi5mb3JtYXQpLnRvRGF0ZSgpKSwgZi5lbmREYXRlICYmICJzdHJpbmciID09IHR5cGVvZiBmLmVuZERhdGUgJiYgKGYuZW5kRGF0ZSA9IFEoZi5lbmREYXRlLCBmLmZvcm1hdCkudG9EYXRlKCkpLCBmLnllYXJTZWxlY3QgJiYgImJvb2xlYW4iID09IHR5cGVvZiBmLnllYXJTZWxlY3QgJiYgKGYueWVhclNlbGVjdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIFtlIC0gNSwgZSArIDVdCiAgICAgICAgfSk7CiAgICAgICAgdmFyIG0sIGUsIHIgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoImF1dG8iID09IGYubGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgPyBuYXZpZ2F0b3IubGFuZ3VhZ2UgOiBuYXZpZ2F0b3IuYnJvd3Nlckxhbmd1YWdlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiAoZSA9IGUudG9Mb3dlckNhc2UoKSkgaW4gVS5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMgPyBVLmRhdGVSYW5nZVBpY2tlckxhbmd1YWdlc1tlXSA6IFUuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzLmRlZmF1bHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYubGFuZ3VhZ2UgJiYgZi5sYW5ndWFnZSBpbiBVLmRhdGVSYW5nZVBpY2tlckxhbmd1YWdlcyA/IFUuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzW2YubGFuZ3VhZ2VdIDogVS5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMuZGVmYXVsdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KCksCiAgICAgICAgICAgIHMgPSAhMSwKICAgICAgICAgICAgbiA9IHRoaXMsCiAgICAgICAgICAgIG8gPSBVKG4pLmdldCgwKTsKICAgICAgICByZXR1cm4gVSh0aGlzKS5vZmYoIi5kYXRlcGlja2VyIikub24oImNsaWNrLmRhdGVwaWNrZXIiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBtLmlzKCI6dmlzaWJsZSIpIHx8IHQoZi5kdXJhdGlvbikKICAgICAgICAgICAgfSkub24oImNoYW5nZS5kYXRlcGlja2VyIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgYSgpCiAgICAgICAgICAgIH0pLm9uKCJrZXl1cC5kYXRlcGlja2VyIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChlKQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgIGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGEoKQogICAgICAgICAgICAgICAgfSwgMmUzKQogICAgICAgICAgICB9KSwKICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoVSh0aGlzKS5kYXRhKCJkYXRlLXBpY2tlci1vcGVuZWQiKSkgcmV0dXJuIHZvaWQgQigpOwogICAgICAgICAgICAgICAgVSh0aGlzKS5kYXRhKCJkYXRlLXBpY2tlci1vcGVuZWQiLCAhMCksIChtID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUsIHQgPSAnPGRpdiBjbGFzcz0iZGF0ZS1waWNrZXItd3JhcHBlcic7CiAgICAgICAgICAgICAgICAgICAgZi5leHRyYUNsYXNzICYmICh0ICs9ICIgIiArIGYuZXh0cmFDbGFzcyArICIgIiksIGYuc2luZ2xlRGF0ZSAmJiAodCArPSAiIHNpbmdsZS1kYXRlICIpLCBmLnNob3dTaG9ydGN1dHMgfHwgKHQgKz0gIiBuby1zaG9ydGN1dHMgIiksIGYuc2hvd1RvcGJhciB8fCAodCArPSAiIG5vLXRvcGJhciAiKSwgZi5jdXN0b21Ub3BCYXIgJiYgKHQgKz0gIiBjdXN0b20tdG9wYmFyICIpLCB0ICs9ICciPicsIGYuc2hvd1RvcGJhciAmJiAodCArPSAnPGRpdiBjbGFzcz0iZHJwX3RvcC1iYXIiPicsIGYuY3VzdG9tVG9wQmFyID8gKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGYuY3VzdG9tVG9wQmFyICYmIChmLmN1c3RvbVRvcEJhciA9IGYuY3VzdG9tVG9wQmFyKCkpLCB0ICs9ICc8ZGl2IGNsYXNzPSJjdXN0b20tdG9wIj4nICsgZi5jdXN0b21Ub3BCYXIgKyAiPC9kaXY+IikgOiAodCArPSAnPGRpdiBjbGFzcz0ibm9ybWFsLXRvcCI+PHNwYW4gY2xhc3M9InNlbGVjdGlvbi10b3AiPicgKyBLKCJzZWxlY3RlZCIpICsgJyA8L3NwYW4+IDxiIGNsYXNzPSJzdGFydC1kYXkiPi4uLjwvYj4nLCBmLnNpbmdsZURhdGUgfHwgKHQgKz0gJyA8c3BhbiBjbGFzcz0ic2VwYXJhdG9yLWRheSI+JyArIGYuc2VwYXJhdG9yICsgJzwvc3Bhbj4gPGIgY2xhc3M9ImVuZC1kYXkiPi4uLjwvYj4gPGkgY2xhc3M9InNlbGVjdGVkLWRheXMiPig8c3BhbiBjbGFzcz0ic2VsZWN0ZWQtZGF5cy1udW0iPjM8L3NwYW4+ICcgKyBLKCJkYXlzIikgKyAiKTwvaT4iKSwgdCArPSAiPC9kaXY+IiwgdCArPSAnPGRpdiBjbGFzcz0iZXJyb3ItdG9wIj5lcnJvcjwvZGl2PjxkaXYgY2xhc3M9ImRlZmF1bHQtdG9wIj5kZWZhdWx0PC9kaXY+JyksIHQgKz0gJzxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJhcHBseS1idG4gZGlzYWJsZWQnICsgKCEoZSA9ICIiKSA9PT0gZi5hdXRvQ2xvc2UgJiYgKGUgKz0gIiBoaWRlIiksICIiICE9PSBmLmFwcGx5QnRuQ2xhc3MgJiYgKGUgKz0gIiAiICsgZi5hcHBseUJ0bkNsYXNzKSwgZSkgKyAnIiB2YWx1ZT0iJyArIEsoImFwcGx5IikgKyAnIiAvPicsIHQgKz0gIjwvZGl2PiIpOwogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZi5zaG93V2Vla051bWJlcnMgPyA2IDogNSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICImbHQ7IjsKICAgICAgICAgICAgICAgICAgICBmLmN1c3RvbUFycm93UHJldlN5bWJvbCAmJiAobiA9IGYuY3VzdG9tQXJyb3dQcmV2U3ltYm9sKTsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICImZ3Q7IjsKICAgICAgICAgICAgICAgICAgICBpZiAoZi5jdXN0b21BcnJvd05leHRTeW1ib2wgJiYgKHIgPSBmLmN1c3RvbUFycm93TmV4dFN5bWJvbCksIHQgKz0gJzxkaXYgY2xhc3M9Im1vbnRoLXdyYXBwZXIiPiAgIDx0YWJsZSBjbGFzcz0ibW9udGgxIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCI+ICAgICAgIDx0aGVhZD4gICAgICAgICAgIDx0ciBjbGFzcz0iY2FwdGlvbiI+ICAgICAgICAgICAgICAgPHRoPiAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJldiI+JyArIG4gKyAnICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gICAgICAgICAgICAgICA8L3RoPiAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPSInICsgYSArICciIGNsYXNzPSJtb250aC1uYW1lIj4gICAgICAgICAgICAgICA8L3RoPiAgICAgICAgICAgICAgIDx0aD4nICsgKGYuc2luZ2xlRGF0ZSB8fCAhZi5zdGlja3lNb250aHMgPyAnPHNwYW4gY2xhc3M9Im5leHQiPicgKyByICsgIjwvc3Bhbj4iIDogIiIpICsgJyAgICAgICAgICAgICAgIDwvdGg+ICAgICAgICAgICA8L3RyPiAgICAgICAgICAgPHRyIGNsYXNzPSJ3ZWVrLW5hbWUiPicgKyBFKCkgKyAiICAgICAgIDwvdGhlYWQ+ICAgICAgIDx0Ym9keT48L3Rib2R5PiAgIDwvdGFibGU+IiwgZi5zaW5nbGVNb250aCB8fCAodCArPSAnPGRpdiBjbGFzcz0iZ2FwIj4nICsgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gWyc8ZGl2IGNsYXNzPSJnYXAtdG9wLW1hc2siPjwvZGl2PjxkaXYgY2xhc3M9ImdhcC1ib3R0b20tbWFzayI+PC9kaXY+PGRpdiBjbGFzcz0iZ2FwLWxpbmVzIj4nXSwgdCA9IDA7IHQgPCAyMDsgdCsrKSBlLnB1c2goJzxkaXYgY2xhc3M9ImdhcC1saW5lIj48ZGl2IGNsYXNzPSJnYXAtMSI+PC9kaXY+PGRpdiBjbGFzcz0iZ2FwLTIiPjwvZGl2PjxkaXYgY2xhc3M9ImdhcC0zIj48L2Rpdj48L2Rpdj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnB1c2goIjwvZGl2PiIpLCBlLmpvaW4oIiIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0oKSArICc8L2Rpdj48dGFibGUgY2xhc3M9Im1vbnRoMiIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiPiAgIDx0aGVhZD4gICA8dHIgY2xhc3M9ImNhcHRpb24iPiAgICAgICA8dGg+JyArIChmLnN0aWNreU1vbnRocyA/ICIiIDogJzxzcGFuIGNsYXNzPSJwcmV2Ij4nICsgbiArICI8L3NwYW4+IikgKyAnICAgICAgIDwvdGg+ICAgICAgIDx0aCBjb2xzcGFuPSInICsgYSArICciIGNsYXNzPSJtb250aC1uYW1lIj4gICAgICAgPC90aD4gICAgICAgPHRoPiAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5leHQiPicgKyByICsgJzwvc3Bhbj4gICAgICAgPC90aD4gICA8L3RyPiAgIDx0ciBjbGFzcz0id2Vlay1uYW1lIj4nICsgRSgpICsgIiAgIDwvdGhlYWQ+ICAgPHRib2R5PjwvdGJvZHk+PC90YWJsZT4iKSwgdCArPSAnPGRpdiBjbGFzcz0iZHAtY2xlYXJmaXgiPjwvZGl2PjxkaXYgY2xhc3M9InRpbWUiPjxkaXYgY2xhc3M9InRpbWUxIj48L2Rpdj4nLCBmLnNpbmdsZURhdGUgfHwgKHQgKz0gJzxkaXYgY2xhc3M9InRpbWUyIj48L2Rpdj4nKSwgdCArPSAnPC9kaXY+PGRpdiBjbGFzcz0iZHAtY2xlYXJmaXgiPjwvZGl2PjwvZGl2PicsIHQgKz0gJzxkaXYgY2xhc3M9ImZvb3RlciI+JywgZi5zaG93U2hvcnRjdXRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gJzxkaXYgY2xhc3M9InNob3J0Y3V0cyI+PGI+JyArIEsoInNob3J0Y3V0cyIpICsgIjwvYj4iOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGYuc2hvcnRjdXRzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1sicHJldi1kYXlzIl0gJiYgMCA8IHNbInByZXYtZGF5cyJdLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJwcmV2LWRheXMiPicgKyBLKCJwYXN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzWyJwcmV2LWRheXMiXS5sZW5ndGg7IGkrKykgbyA9IHNbInByZXYtZGF5cyJdW2ldLCBvICs9IDEgPCBzWyJwcmV2LWRheXMiXVtpXSA/IEsoImRheXMiKSA6IEsoImRheSIpLCB0ICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0iZGF5LC0nICsgc1sicHJldi1kYXlzIl1baV0gKyAnIj4nICsgbyArICI8L2E+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICs9ICI8L3NwYW4+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbIm5leHQtZGF5cyJdICYmIDAgPCBzWyJuZXh0LWRheXMiXS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICs9ICcmbmJzcDs8c3BhbiBjbGFzcz0ibmV4dC1kYXlzIj4nICsgSygiZm9sbG93aW5nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzWyJuZXh0LWRheXMiXS5sZW5ndGg7IGkrKykgbyA9IHNbIm5leHQtZGF5cyJdW2ldLCBvICs9IDEgPCBzWyJuZXh0LWRheXMiXVtpXSA/IEsoImRheXMiKSA6IEsoImRheSIpLCB0ICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0iZGF5LCcgKyBzWyJuZXh0LWRheXMiXVtpXSArICciPicgKyBvICsgIjwvYT4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gIjwvc3Bhbj4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5wcmV2ICYmIDAgPCBzLnByZXYubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCArPSAnJm5ic3A7PHNwYW4gY2xhc3M9InByZXYtYnV0dG9ucyI+JyArIEsoInByZXZpb3VzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnByZXYubGVuZ3RoOyBpKyspIG8gPSBLKCJwcmV2LSIgKyBzLnByZXZbaV0pLCB0ICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0icHJldiwnICsgcy5wcmV2W2ldICsgJyI+JyArIG8gKyAiPC9hPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCArPSAiPC9zcGFuPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLm5leHQgJiYgMCA8IHMubmV4dC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICs9ICcmbmJzcDs8c3BhbiBjbGFzcz0ibmV4dC1idXR0b25zIj4nICsgSygibmV4dCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5uZXh0Lmxlbmd0aDsgaSsrKSBvID0gSygibmV4dC0iICsgcy5uZXh0W2ldKSwgdCArPSAnIDxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgc2hvcnRjdXQ9Im5leHQsJyArIHMubmV4dFtpXSArICciPicgKyBvICsgIjwvYT4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgKz0gIjwvc3Bhbj4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYuY3VzdG9tU2hvcnRjdXRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmLmN1c3RvbVNob3J0Y3V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi5jdXN0b21TaG9ydGN1dHNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCArPSAnJm5ic3A7PHNwYW4gY2xhc3M9ImN1c3RvbS1zaG9ydGN1dCI+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1dD0iY3VzdG9tIj4nICsgZC5uYW1lICsgIjwvYT48L3NwYW4+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0ICs9ICI8L2Rpdj4iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChmLnNob3dDdXN0b21WYWx1ZXMgJiYgKHQgKz0gJzxkaXYgY2xhc3M9ImN1c3RvbVZhbHVlcyI+PGI+JyArIChmLmN1c3RvbVZhbHVlTGFiZWwgfHwgSygiY3VzdG9tLXZhbHVlcyIpKSArICI8L2I+IiwgZi5jdXN0b21WYWx1ZXMpKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGYuY3VzdG9tVmFsdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGYuY3VzdG9tVmFsdWVzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCArPSAnJm5ic3A7PHNwYW4gY2xhc3M9ImN1c3RvbS12YWx1ZSI+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjdXN0b209IicgKyBsLnZhbHVlICsgJyI+JyArIGwubmFtZSArICI8L2E+PC9zcGFuPiIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBVKHQgKz0gIjwvZGl2PjwvZGl2PiIpCiAgICAgICAgICAgICAgICB9KCkuaGlkZSgpKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImRhdGUtcmFuZ2UtbGVuZ3RoLXRpcCI+PC9kaXY+JyksIFUoZi5jb250YWluZXIpLmFwcGVuZChtKSwgZi5pbmxpbmUgPyBtLmFkZENsYXNzKCJpbmxpbmUtd3JhcHBlciIpIDogaSgpOwogICAgICAgICAgICAgICAgZi5hbHdheXNPcGVuICYmIG0uZmluZCgiLmFwcGx5LWJ0biIpLmhpZGUoKTsKICAgICAgICAgICAgICAgIHZhciBlID0gXygpOwogICAgICAgICAgICAgICAgaWYgKEcoZSksIGYudGltZS5lbmFibGVkKQogICAgICAgICAgICAgICAgICAgIGlmIChmLnN0YXJ0RGF0ZSAmJiBmLmVuZERhdGUgfHwgZi5zdGFydCAmJiBmLmVuZCkgWShRKGYuc3RhcnQgfHwgZi5zdGFydERhdGUpLnRvRGF0ZSgpLCAidGltZTEiKSwgWShRKGYuZW5kIHx8IGYuZW5kRGF0ZSkudG9EYXRlKCksICJ0aW1lMiIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGYuZGVmYXVsdEVuZFRpbWUgPyBmLmRlZmF1bHRFbmRUaW1lIDogZTsKICAgICAgICAgICAgICAgICAgICAgICAgWShlLCAidGltZTEiKSwgWShhLCAidGltZTIiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBuID0gIiI7CiAgICAgICAgICAgICAgICBuID0gZi5zaW5nbGVEYXRlID8gSygiZGVmYXVsdC1zaW5nbGUiKSA6IGYubWluRGF5cyAmJiBmLm1heERheXMgPyBLKCJkZWZhdWx0LXJhbmdlIikgOiBmLm1pbkRheXMgPyBLKCJkZWZhdWx0LW1vcmUiKSA6IGYubWF4RGF5cyA/IEsoImRlZmF1bHQtbGVzcyIpIDogSygiZGVmYXVsdC1kZWZhdWx0Iik7CiAgICAgICAgICAgICAgICBtLmZpbmQoIi5kZWZhdWx0LXRvcCIpLmh0bWwobi5yZXBsYWNlKC9cJWQvLCBmLm1pbkRheXMpLnJlcGxhY2UoL1wlZC8sIGYubWF4RGF5cykpLCBmLnNpbmdsZU1vbnRoID8gbS5hZGRDbGFzcygic2luZ2xlLW1vbnRoIikgOiBtLmFkZENsYXNzKCJ0d28tbW9udGhzIik7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGwoKSwgcyA9ICEwCiAgICAgICAgICAgICAgICB9LCAwKSwgbS5vbigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKQogICAgICAgICAgICAgICAgfSksIFUoZG9jdW1lbnQpLm9uKCJjbGljay5kYXRlcGlja2VyIiwgWiksIG0uZmluZCgiLm5leHQiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBmLnN0aWNreU1vbnRocyA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBGKGYubW9udGgxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBGKGYubW9udGgyKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEoYSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmLnNpbmdsZURhdGUgJiYgMCA8PSBMKHQsIGEpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIE8odCwgIm1vbnRoMSIpLCBPKGEsICJtb250aDIiKSwgQygpCiAgICAgICAgICAgICAgICAgICAgfSgpIDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFUoZSkucGFyZW50cygidGFibGUiKS5oYXNDbGFzcygibW9udGgyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdCA/IGYubW9udGgyIDogZi5tb250aDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID0gRihhKSwgIWYuc2luZ2xlTW9udGggJiYgIWYuc2luZ2xlRGF0ZSAmJiAhdCAmJiAwIDw9IEwoYSwgZi5tb250aDIpIHx8IHEoYSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgTyhhLCB0ID8gIm1vbnRoMiIgOiAibW9udGgxIiksIEkoKQogICAgICAgICAgICAgICAgICAgIH0odGhpcykKICAgICAgICAgICAgICAgIH0pLCBtLmZpbmQoIi5wcmV2Iikub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZi5zdGlja3lNb250aHMgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gUihmLm1vbnRoMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gUihmLm1vbnRoMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxKHQpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZi5zaW5nbGVEYXRlICYmIEwoYSwgdCkgPD0gMCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBPKGEsICJtb250aDIiKSwgTyh0LCAibW9udGgxIiksIEMoKQogICAgICAgICAgICAgICAgICAgIH0oKSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBVKGUpLnBhcmVudHMoInRhYmxlIikuaGFzQ2xhc3MoIm1vbnRoMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQgPyBmLm1vbnRoMiA6IGYubW9udGgxOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9IFIoYSksIHQgJiYgTChhLCBmLm1vbnRoMSkgPD0gMCB8fCBxKGEpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIE8oYSwgdCA/ICJtb250aDIiIDogIm1vbnRoMSIpLCBJKCkKICAgICAgICAgICAgICAgICAgICB9KHRoaXMpCiAgICAgICAgICAgICAgICB9KSwgbS5hdHRyKCJ1bnNlbGVjdGFibGUiLCAib24iKS5jc3MoInVzZXItc2VsZWN0IiwgIm5vbmUiKS5vbigic2VsZWN0c3RhcnQiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSwgITEKICAgICAgICAgICAgICAgIH0pLCBtLmZpbmQoIi5hcHBseS1idG4iKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBCKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBXKG5ldyBEYXRlKGYuc3RhcnQpKSArIGYuc2VwYXJhdG9yICsgVyhuZXcgRGF0ZShmLmVuZCkpOwogICAgICAgICAgICAgICAgICAgIFUodCkudHJpZ2dlcigiZGF0ZXBpY2tlci1hcHBseSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUxOiBuZXcgRGF0ZShmLnN0YXJ0KSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTI6IG5ldyBEYXRlKGYuZW5kKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgbS5maW5kKCJbY3VzdG9tXSIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gVSh0aGlzKS5hdHRyKCJjdXN0b20iKTsKICAgICAgICAgICAgICAgICAgICBmLnN0YXJ0ID0gITEsIGYuZW5kID0gITEsIG0uZmluZCgiLmRheS5jaGVja2VkIikucmVtb3ZlQ2xhc3MoImNoZWNrZWQiKSwgZi5zZXRWYWx1ZS5jYWxsKG8sIGUpLCBNKCksIFMoITApLCBDKCksIGYuYXV0b0Nsb3NlICYmIEIoKQogICAgICAgICAgICAgICAgfSksIG0uZmluZCgiW3Nob3J0Y3V0XSIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlLCB0ID0gVSh0aGlzKS5hdHRyKCJzaG9ydGN1dCIpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV3IERhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAhMTsKICAgICAgICAgICAgICAgICAgICBpZiAoLTEgIT0gdC5pbmRleE9mKCJkYXkiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHBhcnNlSW50KHQuc3BsaXQoIiwiLCAyKVsxXSwgMTApOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gbmV3IERhdGUoKG5ldyBEYXRlKS5nZXRUaW1lKCkgKyA4NjRlNSAqIHIpLCBhID0gbmV3IERhdGUoYS5nZXRUaW1lKCkgKyA4NjRlNSAqICgwIDwgciA/IDEgOiAtMSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgtMSAhPSB0LmluZGV4T2YoIndlZWsiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlID0gLTEgIT0gdC5pbmRleE9mKCJwcmV2LCIpID8gLTEgOiAxLCBzID0gMSA9PSBlID8gIm1vbmRheSIgPT0gZi5zdGFydE9mV2VlayA/IDEgOiAwIDogIm1vbmRheSIgPT0gZi5zdGFydE9mV2VlayA/IDAgOiA2LCBhID0gbmV3IERhdGUoYS5nZXRUaW1lKCkgLSA4NjRlNSk7IGEuZ2V0RGF5KCkgIT0gczspIGEgPSBuZXcgRGF0ZShhLmdldFRpbWUoKSArIDg2NGU1ICogZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuZXcgRGF0ZShhLmdldFRpbWUoKSArIDg2NGU1ICogZSAqIDYpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgtMSAhPSB0LmluZGV4T2YoIm1vbnRoIikpIGUgPSAtMSAhPSB0LmluZGV4T2YoInByZXYsIikgPyAtMSA6IDEsIChuID0gMSA9PSBlID8gRihhKSA6IFIoYSkpLnNldERhdGUoMSksIChhID0gRihuKSkuc2V0RGF0ZSgxKSwgYSA9IG5ldyBEYXRlKGEuZ2V0VGltZSgpIC0gODY0ZTUpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKC0xICE9IHQuaW5kZXhPZigieWVhciIpKSBlID0gLTEgIT0gdC5pbmRleE9mKCJwcmV2LCIpID8gLTEgOiAxLCAobiA9IG5ldyBEYXRlKS5zZXRGdWxsWWVhcihhLmdldEZ1bGxZZWFyKCkgKyBlKSwgbi5zZXRNb250aCgwKSwgbi5zZXREYXRlKDEpLCBhLnNldEZ1bGxZZWFyKGEuZ2V0RnVsbFllYXIoKSArIGUpLCBhLnNldE1vbnRoKDExKSwgYS5zZXREYXRlKDMxKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgiY3VzdG9tIiA9PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gVSh0aGlzKS5odG1sKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmLmN1c3RvbVNob3J0Y3V0cyAmJiAwIDwgZi5jdXN0b21TaG9ydGN1dHMubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmLmN1c3RvbVNob3J0Y3V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZi5jdXN0b21TaG9ydGN1dHNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQubmFtZSA9PSBvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCA9IGQuZGF0ZXMuY2FsbCgpKSAmJiAyID09IGwubGVuZ3RoICYmIChuID0gbFswXSwgYSA9IGxbMV0pLCBsICYmIDEgPT0gbC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0gbFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8odSwgIm1vbnRoMSIpLCBPKEYodSksICJtb250aDIiKSwgSSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gJiYgYSAmJiAoaihuLCBhKSwgTSgpKQogICAgICAgICAgICAgICAgfSksIG0uZmluZCgiLnRpbWUxIGlucHV0W3R5cGU9cmFuZ2VdIikub24oImNoYW5nZSB0b3VjaG1vdmUiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9ICJob3VyIiA9PSB0Lm5hbWUgPyBVKHQpLnZhbCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICJtaW51dGUiID09IHQubmFtZSA/IFUodCkudmFsKCkucmVwbGFjZSgvXihcZHsxfSkkLywgIjAkMSIpIDogdm9pZCAwOwogICAgICAgICAgICAgICAgICAgIGMoInRpbWUxIiwgYSwgbikKICAgICAgICAgICAgICAgIH0pLCBtLmZpbmQoIi50aW1lMiBpbnB1dFt0eXBlPXJhbmdlXSIpLm9uKCJjaGFuZ2UgdG91Y2htb3ZlIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAiaG91ciIgPT0gdC5uYW1lID8gVSh0KS52YWwoKS5yZXBsYWNlKC9eKFxkezF9KSQvLCAiMCQxIikgOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAibWludXRlIiA9PSB0Lm5hbWUgPyBVKHQpLnZhbCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICBjKCJ0aW1lMiIsIGEsIG4pCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LmNhbGwodGhpcyksIGYuYWx3YXlzT3BlbiAmJiB0KDApLCBVKHRoaXMpLmRhdGEoImRhdGVSYW5nZVBpY2tlciIsIHsKICAgICAgICAgICAgICAgIHNldFN0YXJ0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gUShlLCBmLmZvcm1hdCkudG9EYXRlKCkpLCBmLmVuZCA9ICExLCBUKGUpLCB0aGlzCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0RW5kOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBuZXcgRGF0ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5zZXRUaW1lKGYuc3RhcnQpLCAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiAoZSA9IFEoZSwgZi5mb3JtYXQpLnRvRGF0ZSgpKSwgaihhLCBlLCB0KSwgdGhpcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldERhdGVSYW5nZTogZnVuY3Rpb24oZSwgdCwgYSkgewogICAgICAgICAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmIChlID0gUShlLCBmLmZvcm1hdCkudG9EYXRlKCksIHQgPSBRKHQsIGYuZm9ybWF0KS50b0RhdGUoKSksIGooZSwgdCwgYSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjbGVhcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZi5zdGFydCA9ICExLCBmLmVuZCA9ICExLCBtLmZpbmQoIi5kYXkuY2hlY2tlZCIpLnJlbW92ZUNsYXNzKCJjaGVja2VkIiksIG0uZmluZCgiLmRheS5sYXN0LWRhdGUtc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygibGFzdC1kYXRlLXNlbGVjdGVkIiksIG0uZmluZCgiLmRheS5maXJzdC1kYXRlLXNlbGVjdGVkIikucmVtb3ZlQ2xhc3MoImZpcnN0LWRhdGUtc2VsZWN0ZWQiKSwgZi5zZXRWYWx1ZS5jYWxsKG8sICIiKSwgTSgpLCBTKCksIEMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsb3NlOiBCLAogICAgICAgICAgICAgICAgb3BlbjogdCwKICAgICAgICAgICAgICAgIHJlZHJhdzogTiwKICAgICAgICAgICAgICAgIGdldERhdGVQaWNrZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVzZXRNb250aHNWaWV3OiBHLAogICAgICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgVShuKS5vZmYoIi5kYXRlcGlja2VyIiksIFUobikuZGF0YSgiZGF0ZVJhbmdlUGlja2VyIiwgIiIpLCBVKG4pLmRhdGEoImRhdGUtcGlja2VyLW9wZW5lZCIsIG51bGwpLCBtLnJlbW92ZSgpLCBVKHdpbmRvdykub2ZmKCJyZXNpemUuZGF0ZXBpY2tlciIsIGkpLCBVKGRvY3VtZW50KS5vZmYoImNsaWNrLmRhdGVwaWNrZXIiLCBaKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSwgVSh3aW5kb3cpLm9uKCJyZXNpemUuZGF0ZXBpY2tlciIsIGkpLCB0aGlzOwoKICAgICAgICBmdW5jdGlvbiBpKCkgewogICAgICAgICAgICBpZiAoIWYuaW5saW5lKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IFUobikub2Zmc2V0KCk7CiAgICAgICAgICAgICAgICBpZiAoInJlbGF0aXZlIiA9PSBVKGYuY29udGFpbmVyKS5jc3MoInBvc2l0aW9uIikpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IFUoZi5jb250YWluZXIpLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5tYXgoMCwgZS5sZWZ0ICsgbS5vdXRlcldpZHRoKCkgLSBVKCJib2R5Iikud2lkdGgoKSArIDE2KTsKICAgICAgICAgICAgICAgICAgICBtLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZS50b3AgLSB0LnRvcCArIFUobikub3V0ZXJIZWlnaHQoKSArIDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUubGVmdCAtIHQubGVmdCAtIGEKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSBlbHNlIGUubGVmdCA8IDQ2MCA/IG0uY3NzKHsKICAgICAgICAgICAgICAgICAgICB0b3A6IGUudG9wICsgVShuKS5vdXRlckhlaWdodCgpICsgcGFyc2VJbnQoVSgiYm9keSIpLmNzcygiYm9yZGVyLXRvcCIpIHx8IDAsIDEwKSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQKICAgICAgICAgICAgICAgIH0pIDogbS5jc3MoewogICAgICAgICAgICAgICAgICAgIHRvcDogZS50b3AgKyBVKG4pLm91dGVySGVpZ2h0KCkgKyBwYXJzZUludChVKCJib2R5IikuY3NzKCJib3JkZXItdG9wIikgfHwgMCwgMTApLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUubGVmdCArIFUobikud2lkdGgoKSAtIG0ud2lkdGgoKSAtIDE2CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgTigpLCBhKCksIGYuY3VzdG9tT3BlbkFuaW1hdGlvbiA/IGYuY3VzdG9tT3BlbkFuaW1hdGlvbi5jYWxsKG0uZ2V0KDApLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFUobikudHJpZ2dlcigiZGF0ZXBpY2tlci1vcGVuZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogbQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSkgOiBtLnNsaWRlRG93bihlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFUobikudHJpZ2dlcigiZGF0ZXBpY2tlci1vcGVuZWQiLCB7CiAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogbQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSksIFUobikudHJpZ2dlcigiZGF0ZXBpY2tlci1vcGVuIiwgewogICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogbQogICAgICAgICAgICB9KSwgSSgpLCBsKCksIGkoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgICAgdmFyIGUgPSBmLmdldFZhbHVlLmNhbGwobyksCiAgICAgICAgICAgICAgICB0ID0gZSA/IGUuc3BsaXQoZi5zZXBhcmF0b3IpIDogIiI7CiAgICAgICAgICAgIGlmICh0ICYmICgxID09IHQubGVuZ3RoICYmIGYuc2luZ2xlRGF0ZSB8fCAyIDw9IHQubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBmLmZvcm1hdDsKICAgICAgICAgICAgICAgIGEubWF0Y2goL0RvLykgJiYgKGEgPSBhLnJlcGxhY2UoL0RvLywgIkQiKSwgdFswXSA9IHRbMF0ucmVwbGFjZSgvKFxkKykodGh8bmR8c3QpLywgIiQxIiksIDIgPD0gdC5sZW5ndGggJiYgKHRbMV0gPSB0WzFdLnJlcGxhY2UoLyhcZCspKHRofG5kfHN0KS8sICIkMSIpKSksIHMgPSAhMSwgMiA8PSB0Lmxlbmd0aCA/IGooZCh0WzBdLCBhLCBRLmxvY2FsZShmLmxhbmd1YWdlKSksIGQodFsxXSwgYSwgUS5sb2NhbGUoZi5sYW5ndWFnZSkpKSA6IDEgPT0gdC5sZW5ndGggJiYgZi5zaW5nbGVEYXRlICYmIFQoZCh0WzBdLCBhLCBRLmxvY2FsZShmLmxhbmd1YWdlKSkpLCBzID0gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZChlLCB0LCBhKSB7CiAgICAgICAgICAgIHJldHVybiBRKGUsIHQsIGEpLmlzVmFsaWQoKSA/IFEoZSwgdCwgYSkudG9EYXRlKCkgOiBRKCkudG9EYXRlKCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGwoKSB7CiAgICAgICAgICAgIHZhciBlID0gbS5maW5kKCIuZ2FwIikuY3NzKCJtYXJnaW4tbGVmdCIpOwogICAgICAgICAgICBlICYmIChlID0gcGFyc2VJbnQoZSkpOwogICAgICAgICAgICB2YXIgdCA9IG0uZmluZCgiLm1vbnRoMSIpLndpZHRoKCksCiAgICAgICAgICAgICAgICBhID0gbS5maW5kKCIuZ2FwIikud2lkdGgoKSArIChlID8gMiAqIGUgOiAwKSwKICAgICAgICAgICAgICAgIG4gPSBtLmZpbmQoIi5tb250aDIiKS53aWR0aCgpOwogICAgICAgICAgICBtLmZpbmQoIi5tb250aC13cmFwcGVyIikud2lkdGgodCArIGEgKyBuKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdShlLCB0KSB7CiAgICAgICAgICAgIG0uZmluZCgiLiIgKyBlICsgIiBpbnB1dFt0eXBlPXJhbmdlXS5ob3VyLXJhbmdlIikudmFsKFEodCkuaG91cnMoKSksIG0uZmluZCgiLiIgKyBlICsgIiBpbnB1dFt0eXBlPXJhbmdlXS5taW51dGUtcmFuZ2UiKS52YWwoUSh0KS5taW51dGVzKCkpLCBjKGUsIFEodCkuZm9ybWF0KCJISCIpLCBRKHQpLmZvcm1hdCgibW0iKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGgoZSwgdCkgewogICAgICAgICAgICBmW2VdID0gcGFyc2VJbnQoUShwYXJzZUludCh0KSkuaG91cihRKGZbZSArICJUaW1lIl0pLmZvcm1hdCgiSEgiKSwgImgiKS5taW51dGUoUShmW2UgKyAiVGltZSJdKS5mb3JtYXQoIm1tIiksICJtIikudmFsdWVPZigpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYyhlLCByLCBzKSB7CiAgICAgICAgICAgIHN3aXRjaCAociAmJiBtLmZpbmQoIi4iICsgZSArICIgLmhvdXItdmFsIikudGV4dChyKSwgcyAmJiBtLmZpbmQoIi4iICsgZSArICIgLm1pbnV0ZS12YWwiKS50ZXh0KHMpLCBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJ0aW1lMSI6CiAgICAgICAgICAgICAgICAgICAgZi5zdGFydCAmJiB0KCJzdGFydCIsIFEoZi5zdGFydCkpLCB0KCJzdGFydFRpbWUiLCBRKGYuc3RhcnRUaW1lIHx8IFEoKS52YWx1ZU9mKCkpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRpbWUyIjoKICAgICAgICAgICAgICAgICAgICBmLmVuZCAmJiB0KCJlbmQiLCBRKGYuZW5kKSksIHQoImVuZFRpbWUiLCBRKGYuZW5kVGltZSB8fCBRKCkudmFsdWVPZigpKSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdChlLCB0KSB7CiAgICAgICAgICAgICAgICB2YXIgYSA9IHQuZm9ybWF0KCJISCIpLAogICAgICAgICAgICAgICAgICAgIG4gPSB0LmZvcm1hdCgibW0iKTsKICAgICAgICAgICAgICAgIGZbZV0gPSB0LmhvdXIociB8fCBhLCAiaCIpLm1pbnV0ZShzIHx8IG4sICJtIikudmFsdWVPZigpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgTSgpLCBTKCksIEMoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZTsKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrLXJhbmdlIiA9PT0gZi5iYXRjaE1vZGUgPyB0ID0gIm1vbmRheSIgPT09IGYuc3RhcnRPZldlZWsgPyBRKHBhcnNlSW50KGUpKS5zdGFydE9mKCJpc293ZWVrIikudmFsdWVPZigpIDogUShwYXJzZUludChlKSkuc3RhcnRPZigid2VlayIpLnZhbHVlT2YoKSA6ICJtb250aC1yYW5nZSIgPT09IGYuYmF0Y2hNb2RlICYmICh0ID0gUShwYXJzZUludChlKSkuc3RhcnRPZigibW9udGgiKS52YWx1ZU9mKCkpLCB0CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2KGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlOwogICAgICAgICAgICByZXR1cm4gIndlZWstcmFuZ2UiID09PSBmLmJhdGNoTW9kZSA/IHQgPSAibW9uZGF5IiA9PT0gZi5zdGFydE9mV2VlayA/IFEocGFyc2VJbnQoZSkpLmVuZE9mKCJpc293ZWVrIikudmFsdWVPZigpIDogUShwYXJzZUludChlKSkuZW5kT2YoIndlZWsiKS52YWx1ZU9mKCkgOiAibW9udGgtcmFuZ2UiID09PSBmLmJhdGNoTW9kZSAmJiAodCA9IFEocGFyc2VJbnQoZSkpLmVuZE9mKCJtb250aCIpLnZhbHVlT2YoKSksIHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGsoZSkgewogICAgICAgICAgICBpZiAoIWUuaGFzQ2xhc3MoImludmFsaWQiKSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBlLmF0dHIoInRpbWUiKTsKICAgICAgICAgICAgICAgIGlmIChlLmFkZENsYXNzKCJjaGVja2VkIiksIGYuc2luZ2xlRGF0ZSA/IChmLnN0YXJ0ID0gdCwgZi5lbmQgPSAhMSkgOiAid2VlayIgPT09IGYuYmF0Y2hNb2RlID8gIm1vbmRheSIgPT09IGYuc3RhcnRPZldlZWsgPyAoZi5zdGFydCA9IFEocGFyc2VJbnQodCkpLnN0YXJ0T2YoImlzb3dlZWsiKS52YWx1ZU9mKCksIGYuZW5kID0gUShwYXJzZUludCh0KSkuZW5kT2YoImlzb3dlZWsiKS52YWx1ZU9mKCkpIDogKGYuZW5kID0gUShwYXJzZUludCh0KSkuZW5kT2YoIndlZWsiKS52YWx1ZU9mKCksIGYuc3RhcnQgPSBRKHBhcnNlSW50KHQpKS5zdGFydE9mKCJ3ZWVrIikudmFsdWVPZigpKSA6ICJ3b3Jrd2VlayIgPT09IGYuYmF0Y2hNb2RlID8gKGYuc3RhcnQgPSBRKHBhcnNlSW50KHQpKS5kYXkoMSkudmFsdWVPZigpLCBmLmVuZCA9IFEocGFyc2VJbnQodCkpLmRheSg1KS52YWx1ZU9mKCkpIDogIndlZWtlbmQiID09PSBmLmJhdGNoTW9kZSA/IChmLnN0YXJ0ID0gUShwYXJzZUludCh0KSkuZGF5KDYpLnZhbHVlT2YoKSwgZi5lbmQgPSBRKHBhcnNlSW50KHQpKS5kYXkoNykudmFsdWVPZigpKSA6ICJtb250aCIgPT09IGYuYmF0Y2hNb2RlID8gKGYuc3RhcnQgPSBRKHBhcnNlSW50KHQpKS5zdGFydE9mKCJtb250aCIpLnZhbHVlT2YoKSwgZi5lbmQgPSBRKHBhcnNlSW50KHQpKS5lbmRPZigibW9udGgiKS52YWx1ZU9mKCkpIDogZi5zdGFydCAmJiBmLmVuZCB8fCAhZi5zdGFydCAmJiAhZi5lbmQgPyAoZi5zdGFydCA9IHAodCksIGYuZW5kID0gITEpIDogZi5zdGFydCAmJiAoZi5lbmQgPSB2KHQpLCBmLnRpbWUuZW5hYmxlZCAmJiBoKCJlbmQiLCBmLmVuZCkpLCBmLnRpbWUuZW5hYmxlZCAmJiAoZi5zdGFydCAmJiBoKCJzdGFydCIsIGYuc3RhcnQpLCBmLmVuZCAmJiBoKCJlbmQiLCBmLmVuZCkpLCAhZi5zaW5nbGVEYXRlICYmIGYuc3RhcnQgJiYgZi5lbmQgJiYgZi5zdGFydCA+IGYuZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBmLmVuZDsKICAgICAgICAgICAgICAgICAgICBmLmVuZCA9IHYoZi5zdGFydCksIGYuc3RhcnQgPSBwKGEpLCBmLnRpbWUuZW5hYmxlZCAmJiBmLnN3YXBUaW1lICYmICh1KCJ0aW1lMSIsIGYuc3RhcnQpLCB1KCJ0aW1lMiIsIGYuZW5kKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYuc3RhcnQgPSBwYXJzZUludChmLnN0YXJ0KSwgZi5lbmQgPSBwYXJzZUludChmLmVuZCksIGIoKSwgZi5zdGFydCAmJiAhZi5lbmQgJiYgKFUobikudHJpZ2dlcigiZGF0ZXBpY2tlci1maXJzdC1kYXRlLXNlbGVjdGVkIiwgewogICAgICAgICAgICAgICAgICAgIGRhdGUxOiBuZXcgRGF0ZShmLnN0YXJ0KQogICAgICAgICAgICAgICAgfSksIHkoZSkpLCB3KCksIE0oKSwgUygpLCBDKCksIHgoKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnKGUpIHsKICAgICAgICAgICAgaWYgKGUgPSBwYXJzZUludChlLCAxMCksIGYuc3RhcnREYXRlICYmIEgoZSwgZi5zdGFydERhdGUpIDwgMCkgcmV0dXJuICExOwogICAgICAgICAgICBpZiAoZi5lbmREYXRlICYmIDAgPCBIKGUsIGYuZW5kRGF0ZSkpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKGYuc3RhcnQgJiYgIWYuZW5kICYmICFmLnNpbmdsZURhdGUpIHsKICAgICAgICAgICAgICAgIGlmICgwIDwgZi5tYXhEYXlzICYmIHooZSwgZi5zdGFydCkgPiBmLm1heERheXMpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGlmICgwIDwgZi5taW5EYXlzICYmIHooZSwgZi5zdGFydCkgPCBmLm1pbkRheXMpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGlmIChmLnNlbGVjdEZvcndhcmQgJiYgZSA8IGYuc3RhcnQpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgIGlmIChmLnNlbGVjdEJhY2t3YXJkICYmIGUgPiBmLnN0YXJ0KSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBpZiAoZi5iZWZvcmVTaG93RGF5ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGYuYmVmb3JlU2hvd0RheSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSAhMCwgYSA9IGU7IDEgPCB6KGEsIGYuc3RhcnQpOykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWYuYmVmb3JlU2hvd0RheShuZXcgRGF0ZShhKSlbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGEgLSBmLnN0YXJ0KSA8IDg2NGU1KSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgYSA+IGYuc3RhcnQgJiYgKGEgLT0gODY0ZTUpLCBhIDwgZi5zdGFydCAmJiAoYSArPSA4NjRlNSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gITAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHcoKSB7CiAgICAgICAgICAgIHJldHVybiBtLmZpbmQoIi5kYXkuaW52YWxpZC50bXAiKS5yZW1vdmVDbGFzcygidG1wIGludmFsaWQiKS5hZGRDbGFzcygidmFsaWQiKSwgZi5zdGFydCAmJiAhZi5lbmQgJiYgbS5maW5kKCIuZGF5LnRvTW9udGgudmFsaWQiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZyhwYXJzZUludChVKHRoaXMpLmF0dHIoInRpbWUiKSwgMTApKSA/IFUodGhpcykuYWRkQ2xhc3MoInZhbGlkIHRtcCIpLnJlbW92ZUNsYXNzKCJpbnZhbGlkIikgOiBVKHRoaXMpLmFkZENsYXNzKCJpbnZhbGlkIHRtcCIpLnJlbW92ZUNsYXNzKCJ2YWxpZCIpCiAgICAgICAgICAgIH0pLCAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geShlKSB7CiAgICAgICAgICAgIHZhciB0ID0gcGFyc2VJbnQoZS5hdHRyKCJ0aW1lIikpLAogICAgICAgICAgICAgICAgYSA9ICIiOwogICAgICAgICAgICBpZiAoZS5oYXNDbGFzcygiaGFzLXRvb2x0aXAiKSAmJiBlLmF0dHIoImRhdGEtdG9vbHRpcCIpKSBhID0gJzxzcGFuIGNsYXNzPSJ0b29sdGlwLWNvbnRlbnQiPicgKyBlLmF0dHIoImRhdGEtdG9vbHRpcCIpICsgIjwvc3Bhbj4iOwogICAgICAgICAgICBlbHNlIGlmICghZS5oYXNDbGFzcygiaW52YWxpZCIpKQogICAgICAgICAgICAgICAgaWYgKGYuc2luZ2xlRGF0ZSkgbS5maW5kKCIuZGF5LmhvdmVyaW5nIikucmVtb3ZlQ2xhc3MoImhvdmVyaW5nIiksIGUuYWRkQ2xhc3MoImhvdmVyaW5nIik7CiAgICAgICAgICAgICAgICBlbHNlIGlmIChtLmZpbmQoIi5kYXkiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gcGFyc2VJbnQoVSh0aGlzKS5hdHRyKCJ0aW1lIikpOwogICAgICAgICAgICAgICAgICAgIGYuc3RhcnQsIGYuZW5kOwogICAgICAgICAgICAgICAgICAgIGUgPT0gdCA/IFUodGhpcykuYWRkQ2xhc3MoImhvdmVyaW5nIikgOiBVKHRoaXMpLnJlbW92ZUNsYXNzKCJob3ZlcmluZyIpLCBmLnN0YXJ0ICYmICFmLmVuZCAmJiAoZi5zdGFydCA8IGUgJiYgZSA8PSB0IHx8IGYuc3RhcnQgPiBlICYmIHQgPD0gZSkgPyBVKHRoaXMpLmFkZENsYXNzKCJob3ZlcmluZyIpIDogVSh0aGlzKS5yZW1vdmVDbGFzcygiaG92ZXJpbmciKQogICAgICAgICAgICAgICAgfSksIGYuc3RhcnQgJiYgIWYuZW5kKSB7CiAgICAgICAgICAgICAgICB2YXIgbiA9IHoodCwgZi5zdGFydCk7CiAgICAgICAgICAgICAgICBmLmhvdmVyaW5nVG9vbHRpcCAmJiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZi5ob3ZlcmluZ1Rvb2x0aXAgPyBhID0gZi5ob3ZlcmluZ1Rvb2x0aXAobiwgZi5zdGFydCwgdCkgOiAhMCA9PT0gZi5ob3ZlcmluZ1Rvb2x0aXAgJiYgMSA8IG4gJiYgKGEgPSBuICsgIiAiICsgSygiZGF5cyIpKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBlLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgIHMgPSBtLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgIG8gPSByLmxlZnQgLSBzLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgaSA9IHIudG9wIC0gcy50b3A7CiAgICAgICAgICAgICAgICBvICs9IGUud2lkdGgoKSAvIDI7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG0uZmluZCgiLmRhdGUtcmFuZ2UtbGVuZ3RoLXRpcCIpLAogICAgICAgICAgICAgICAgICAgIGwgPSBkLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJoaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAibm9uZSIKICAgICAgICAgICAgICAgICAgICB9KS5odG1sKGEpLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgdSA9IGQuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICBvIC09IGwgLyAyLCBpIC09IHUsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZC5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBvLAogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJ2aXNpYmxlIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LCAxMCkKICAgICAgICAgICAgfSBlbHNlIG0uZmluZCgiLmRhdGUtcmFuZ2UtbGVuZ3RoLXRpcCIpLmhpZGUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYigpIHsKICAgICAgICAgICAgbS5maW5kKCIuZGF5LmhvdmVyaW5nIikucmVtb3ZlQ2xhc3MoImhvdmVyaW5nIiksIG0uZmluZCgiLmRhdGUtcmFuZ2UtbGVuZ3RoLXRpcCIpLmhpZGUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gRChlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZS52YWwoKSwKICAgICAgICAgICAgICAgIGEgPSBlLmF0dHIoIm5hbWUiKSwKICAgICAgICAgICAgICAgIG4gPSBlLnBhcmVudHMoInRhYmxlIikuaGFzQ2xhc3MoIm1vbnRoMSIpID8gIm1vbnRoMSIgOiAibW9udGgyIiwKICAgICAgICAgICAgICAgIHIgPSAibW9udGgxIiA9PT0gbiA/ICJtb250aDIiIDogIm1vbnRoMSIsCiAgICAgICAgICAgICAgICBzID0gISFmLnN0YXJ0RGF0ZSAmJiBRKGYuc3RhcnREYXRlKSwKICAgICAgICAgICAgICAgIG8gPSAhIWYuZW5kRGF0ZSAmJiBRKGYuZW5kRGF0ZSksCiAgICAgICAgICAgICAgICBpID0gUShmW25dKVthXSh0KTsKICAgICAgICAgICAgcyAmJiBpLmlzU2FtZU9yQmVmb3JlKHMpICYmIChpID0gcy5hZGQoIm1vbnRoMiIgPT09IG4gPyAxIDogMCwgIm1vbnRoIikpLCBvICYmIGkuaXNTYW1lT3JBZnRlcihvKSAmJiAoaSA9IG8uYWRkKGYuc2luZ2xlTW9udGggfHwgIm1vbnRoMSIgIT09IG4gPyAwIDogLTEsICJtb250aCIpKSwgTyhpLCBuKSwgIm1vbnRoMSIgPT09IG4gPyAoZi5zdGlja3lNb250aHMgfHwgUShpKS5pc1NhbWVPckFmdGVyKGZbcl0sICJtb250aCIpKSAmJiBPKFEoaSkuYWRkKDEsICJtb250aCIpLCByKSA6IChmLnN0aWNreU1vbnRocyB8fCBRKGkpLmlzU2FtZU9yQmVmb3JlKGZbcl0sICJtb250aCIpKSAmJiBPKFEoaSkuYWRkKC0xLCAibW9udGgiKSwgciksIEkoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geCgpIHsKICAgICAgICAgICAgITAgPT09IGYuc2luZ2xlRGF0ZSA/IHMgJiYgZi5zdGFydCAmJiBmLmF1dG9DbG9zZSAmJiBCKCkgOiBzICYmIGYuc3RhcnQgJiYgZi5lbmQgJiYgZi5hdXRvQ2xvc2UgJiYgQigpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNKCkgewogICAgICAgICAgICB2YXIgZSA9IE1hdGguY2VpbCgoZi5lbmQgLSBmLnN0YXJ0KSAvIDg2NGU1KSArIDE7CiAgICAgICAgICAgIGYuc2luZ2xlRGF0ZSA/IGYuc3RhcnQgJiYgIWYuZW5kID8gbS5maW5kKCIuZHJwX3RvcC1iYXIiKS5yZW1vdmVDbGFzcygiZXJyb3IiKS5hZGRDbGFzcygibm9ybWFsIikgOiBtLmZpbmQoIi5kcnBfdG9wLWJhciIpLnJlbW92ZUNsYXNzKCJlcnJvciIpLnJlbW92ZUNsYXNzKCJub3JtYWwiKSA6IGYubWF4RGF5cyAmJiBlID4gZi5tYXhEYXlzID8gKGYuc3RhcnQgPSAhMSwgZi5lbmQgPSAhMSwgbS5maW5kKCIuZGF5IikucmVtb3ZlQ2xhc3MoImNoZWNrZWQiKSwgbS5maW5kKCIuZHJwX3RvcC1iYXIiKS5yZW1vdmVDbGFzcygibm9ybWFsIikuYWRkQ2xhc3MoImVycm9yIikuZmluZCgiLmVycm9yLXRvcCIpLmh0bWwoSygibGVzcy10aGFuIikucmVwbGFjZSgiJWQiLCBmLm1heERheXMpKSkgOiBmLm1pbkRheXMgJiYgZSA8IGYubWluRGF5cyA/IChmLnN0YXJ0ID0gITEsIGYuZW5kID0gITEsIG0uZmluZCgiLmRheSIpLnJlbW92ZUNsYXNzKCJjaGVja2VkIiksIG0uZmluZCgiLmRycF90b3AtYmFyIikucmVtb3ZlQ2xhc3MoIm5vcm1hbCIpLmFkZENsYXNzKCJlcnJvciIpLmZpbmQoIi5lcnJvci10b3AiKS5odG1sKEsoIm1vcmUtdGhhbiIpLnJlcGxhY2UoIiVkIiwgZi5taW5EYXlzKSkpIDogZi5zdGFydCB8fCBmLmVuZCA/IG0uZmluZCgiLmRycF90b3AtYmFyIikucmVtb3ZlQ2xhc3MoImVycm9yIikuYWRkQ2xhc3MoIm5vcm1hbCIpIDogbS5maW5kKCIuZHJwX3RvcC1iYXIiKS5yZW1vdmVDbGFzcygiZXJyb3IiKS5yZW1vdmVDbGFzcygibm9ybWFsIiksIGYuc2luZ2xlRGF0ZSAmJiBmLnN0YXJ0ICYmICFmLmVuZCB8fCAhZi5zaW5nbGVEYXRlICYmIGYuc3RhcnQgJiYgZi5lbmQgPyBtLmZpbmQoIi5hcHBseS1idG4iKS5yZW1vdmVDbGFzcygiZGlzYWJsZWQiKSA6IG0uZmluZCgiLmFwcGx5LWJ0biIpLmFkZENsYXNzKCJkaXNhYmxlZCIpLCBmLmJhdGNoTW9kZSAmJiAoZi5zdGFydCAmJiBmLnN0YXJ0RGF0ZSAmJiBIKGYuc3RhcnQsIGYuc3RhcnREYXRlKSA8IDAgfHwgZi5lbmQgJiYgZi5lbmREYXRlICYmIDAgPCBIKGYuZW5kLCBmLmVuZERhdGUpKSAmJiAoZi5zdGFydCA9ICExLCBmLmVuZCA9ICExLCBtLmZpbmQoIi5kYXkiKS5yZW1vdmVDbGFzcygiY2hlY2tlZCIpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUyhlLCB0KSB7CiAgICAgICAgICAgIHZhciBhOwogICAgICAgICAgICBtLmZpbmQoIi5zdGFydC1kYXkiKS5odG1sKCIuLi4iKSwgbS5maW5kKCIuZW5kLWRheSIpLmh0bWwoIi4uLiIpLCBtLmZpbmQoIi5zZWxlY3RlZC1kYXlzIikuaGlkZSgpLCBmLnN0YXJ0ICYmIG0uZmluZCgiLnN0YXJ0LWRheSIpLmh0bWwoVyhuZXcgRGF0ZShwYXJzZUludChmLnN0YXJ0KSkpKSwgZi5lbmQgJiYgbS5maW5kKCIuZW5kLWRheSIpLmh0bWwoVyhuZXcgRGF0ZShwYXJzZUludChmLmVuZCkpKSksIGYuc3RhcnQgJiYgZi5zaW5nbGVEYXRlID8gKG0uZmluZCgiLmFwcGx5LWJ0biIpLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpLCBhID0gVyhuZXcgRGF0ZShmLnN0YXJ0KSksIGYuc2V0VmFsdWUuY2FsbChvLCBhLCBXKG5ldyBEYXRlKGYuc3RhcnQpKSwgVyhuZXcgRGF0ZShmLmVuZCkpKSwgcyAmJiAhdCAmJiBVKG4pLnRyaWdnZXIoImRhdGVwaWNrZXItY2hhbmdlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6IGEsCiAgICAgICAgICAgICAgICBkYXRlMTogbmV3IERhdGUoZi5zdGFydCkKICAgICAgICAgICAgfSkpIDogZi5zdGFydCAmJiBmLmVuZCA/IChtLmZpbmQoIi5zZWxlY3RlZC1kYXlzIikuc2hvdygpLmZpbmQoIi5zZWxlY3RlZC1kYXlzLW51bSIpLmh0bWwoeihmLmVuZCwgZi5zdGFydCkpLCBtLmZpbmQoIi5hcHBseS1idG4iKS5yZW1vdmVDbGFzcygiZGlzYWJsZWQiKSwgYSA9IFcobmV3IERhdGUoZi5zdGFydCkpICsgZi5zZXBhcmF0b3IgKyBXKG5ldyBEYXRlKGYuZW5kKSksIGYuc2V0VmFsdWUuY2FsbChvLCBhLCBXKG5ldyBEYXRlKGYuc3RhcnQpKSwgVyhuZXcgRGF0ZShmLmVuZCkpKSwgcyAmJiAhdCAmJiBVKG4pLnRyaWdnZXIoImRhdGVwaWNrZXItY2hhbmdlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6IGEsCiAgICAgICAgICAgICAgICBkYXRlMTogbmV3IERhdGUoZi5zdGFydCksCiAgICAgICAgICAgICAgICBkYXRlMjogbmV3IERhdGUoZi5lbmQpCiAgICAgICAgICAgIH0pKSA6IGUgPyBtLmZpbmQoIi5hcHBseS1idG4iKS5yZW1vdmVDbGFzcygiZGlzYWJsZWQiKSA6IG0uZmluZCgiLmFwcGx5LWJ0biIpLmFkZENsYXNzKCJkaXNhYmxlZCIpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB6KGUsIHQpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKFEoZSkuZGlmZihRKHQpLCAiZCIpKSArIDEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGooZSwgdCwgYSkgewogICAgICAgICAgICBpZiAoZS5nZXRUaW1lKCkgPiB0LmdldFRpbWUoKSkgewogICAgICAgICAgICAgICAgdmFyIG4gPSB0OwogICAgICAgICAgICAgICAgdCA9IGUsIGUgPSBuLCBuID0gbnVsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciByID0gITA7CiAgICAgICAgICAgIGlmIChmLnN0YXJ0RGF0ZSAmJiBIKGUsIGYuc3RhcnREYXRlKSA8IDAgJiYgKHIgPSAhMSksIGYuZW5kRGF0ZSAmJiAwIDwgSCh0LCBmLmVuZERhdGUpICYmIChyID0gITEpLCAhcikgcmV0dXJuIE8oZi5zdGFydERhdGUsICJtb250aDEiKSwgTyhGKGYuc3RhcnREYXRlKSwgIm1vbnRoMiIpLCB2b2lkIEkoKTsKICAgICAgICAgICAgZi5zdGFydCA9IGUuZ2V0VGltZSgpLCBmLmVuZCA9IHQuZ2V0VGltZSgpLCBmLnRpbWUuZW5hYmxlZCAmJiAodSgidGltZTEiLCBlKSwgdSgidGltZTIiLCB0KSksIChmLnN0aWNreU1vbnRocyB8fCAwIDwgSChlLCB0KSAmJiAwID09PSBMKGUsIHQpKSAmJiAoZi5sb29rQmVoaW5kID8gZSA9IFIodCkgOiB0ID0gRihlKSksIGYuc3RpY2t5TW9udGhzICYmICExICE9PSBmLmVuZERhdGUgJiYgMCA8IEwodCwgZi5lbmREYXRlKSAmJiAoZSA9IFIoZSksIHQgPSBSKHQpKSwgZi5zdGlja3lNb250aHMgfHwgMCA9PT0gTChlLCB0KSAmJiAoZi5sb29rQmVoaW5kID8gZSA9IFIodCkgOiB0ID0gRihlKSksIE8oZSwgIm1vbnRoMSIpLCBPKHQsICJtb250aDIiKSwgSSgpLCBNKCksIFMoITEsIGEpLCB4KCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFQoZSkgewogICAgICAgICAgICB2YXIgdCA9ICEwOwogICAgICAgICAgICBpZiAoZi5zdGFydERhdGUgJiYgSChlLCBmLnN0YXJ0RGF0ZSkgPCAwICYmICh0ID0gITEpLCBmLmVuZERhdGUgJiYgMCA8IEgoZSwgZi5lbmREYXRlKSAmJiAodCA9ICExKSwgdCkgewogICAgICAgICAgICAgICAgaWYgKGYuc3RhcnQgPSBlLmdldFRpbWUoKSwgZi50aW1lLmVuYWJsZWQgJiYgdSgidGltZTEiLCBlKSwgTyhlLCAibW9udGgxIiksICEwICE9PSBmLnNpbmdsZU1vbnRoKSBPKEYoZSksICJtb250aDIiKTsKICAgICAgICAgICAgICAgIEkoKSwgUygpLCB4KCkKICAgICAgICAgICAgfSBlbHNlIE8oZi5zdGFydERhdGUsICJtb250aDEiKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQygpIHsKICAgICAgICAgICAgKGYuc3RhcnQgfHwgZi5lbmQpICYmIChtLmZpbmQoIi5kYXkiKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBwYXJzZUludChVKHRoaXMpLmF0dHIoInRpbWUiKSksCiAgICAgICAgICAgICAgICAgICAgdCA9IGYuc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgYSA9IGYuZW5kOwogICAgICAgICAgICAgICAgZi50aW1lLmVuYWJsZWQgJiYgKGUgPSBRKGUpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSwgdCA9IFEodCB8fCBRKCkudmFsdWVPZigpKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksIGEgPSBRKGEgfHwgUSgpLnZhbHVlT2YoKSkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpKSwgZi5zdGFydCAmJiBmLmVuZCAmJiBlIDw9IGEgJiYgdCA8PSBlIHx8IGYuc3RhcnQgJiYgIWYuZW5kICYmIFEodCkuZm9ybWF0KCJZWVlZLU1NLUREIikgPT0gUShlKS5mb3JtYXQoIllZWVktTU0tREQiKSA/IFUodGhpcykuYWRkQ2xhc3MoImNoZWNrZWQiKSA6IFUodGhpcykucmVtb3ZlQ2xhc3MoImNoZWNrZWQiKSwgZi5zdGFydCAmJiBRKHQpLmZvcm1hdCgiWVlZWS1NTS1ERCIpID09IFEoZSkuZm9ybWF0KCJZWVlZLU1NLUREIikgPyBVKHRoaXMpLmFkZENsYXNzKCJmaXJzdC1kYXRlLXNlbGVjdGVkIikgOiBVKHRoaXMpLnJlbW92ZUNsYXNzKCJmaXJzdC1kYXRlLXNlbGVjdGVkIiksIGYuZW5kICYmIFEoYSkuZm9ybWF0KCJZWVlZLU1NLUREIikgPT0gUShlKS5mb3JtYXQoIllZWVktTU0tREQiKSA/IFUodGhpcykuYWRkQ2xhc3MoImxhc3QtZGF0ZS1zZWxlY3RlZCIpIDogVSh0aGlzKS5yZW1vdmVDbGFzcygibGFzdC1kYXRlLXNlbGVjdGVkIikKICAgICAgICAgICAgfSksIG0uZmluZCgiLndlZWstbnVtYmVyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIFUodGhpcykuYXR0cigiZGF0YS1zdGFydC10aW1lIikgPT0gZi5zdGFydFdlZWsgJiYgVSh0aGlzKS5hZGRDbGFzcygid2Vlay1udW1iZXItc2VsZWN0ZWQiKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE8oZSwgdCkgewogICAgICAgICAgICB2YXIgYSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChlID0gUShlKSkuZ2V0KCJtb250aCIpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gJzxkaXYgY2xhc3M9Im1vbnRoLWVsZW1lbnQiPicgKyBBKGEpICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFmLm1vbnRoU2VsZWN0KSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9ICEhZi5zdGFydERhdGUgJiYgUShmLnN0YXJ0RGF0ZSkuYWRkKGYuc2luZ2xlTW9udGggfHwgIm1vbnRoMiIgIT09IHQgPyAwIDogMSwgIm1vbnRoIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhIWYuZW5kRGF0ZSAmJiBRKGYuZW5kRGF0ZSkuYWRkKGYuc2luZ2xlTW9udGggfHwgIm1vbnRoMSIgIT09IHQgPyAwIDogLTEsICJtb250aCIpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gciAmJiBlLmlzU2FtZShyLCAieWVhciIpID8gci5nZXQoIm1vbnRoIikgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gcyAmJiBlLmlzU2FtZShzLCAieWVhciIpID8gcy5nZXQoIm1vbnRoIikgOiAxMSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE1hdGgubWluKG8sIGEpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gTWF0aC5tYXgoaSwgYSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT09IGwpIHJldHVybiBuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBQKCJtb250aCIsIFYoewogICAgICAgICAgICAgICAgICAgICAgICBtaW5TZWxlY3RhYmxlOiBvLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhTZWxlY3RhYmxlOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5WaXNpYmxlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhWaXNpYmxlOiBsCiAgICAgICAgICAgICAgICAgICAgfSwgYSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQShlKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfShlID0gUShlKS50b0RhdGUoKSwgdCksCiAgICAgICAgICAgICAgICBuID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBhID0gKGUgPSBRKGUpKS5nZXQoInllYXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9ICc8ZGl2IGNsYXNzPSJtb250aC1lbGVtZW50Ij4nICsgYSArICI8L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgIGlmICghZi55ZWFyU2VsZWN0KSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGYueWVhclNlbGVjdCAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBmLnllYXJTZWxlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAhIWYuc3RhcnREYXRlICYmIFEoZi5zdGFydERhdGUpLmFkZChmLnNpbmdsZU1vbnRoIHx8ICJtb250aDIiICE9PSB0ID8gMCA6IDEsICJtb250aCIpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gISFmLmVuZERhdGUgJiYgUShmLmVuZERhdGUpLmFkZChmLnNpbmdsZU1vbnRoIHx8ICJtb250aDEiICE9PSB0ID8gMCA6IC0xLCAibW9udGgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHIgPyBmLnllYXJTZWxlY3QoYSkgOiBmLnllYXJTZWxlY3Quc2xpY2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMgPyBNYXRoLm1heChpWzBdLCBzLmdldCgieWVhciIpKSA6IE1hdGgubWluKGlbMF0sIGEpLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gbyA/IE1hdGgubWluKGlbMV0sIG8uZ2V0KCJ5ZWFyIikpIDogTWF0aC5tYXgoaVsxXSwgYSksCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBNYXRoLm1pbihkLCBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IE1hdGgubWF4KGwsIGEpOwogICAgICAgICAgICAgICAgICAgIGlmICh1ID09PSBtKSByZXR1cm4gbjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUCgieWVhciIsIFYoewogICAgICAgICAgICAgICAgICAgICAgICBtaW5TZWxlY3RhYmxlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICBtYXhTZWxlY3RhYmxlOiBsLAogICAgICAgICAgICAgICAgICAgICAgICBtaW5WaXNpYmxlOiB1LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhWaXNpYmxlOiBtCiAgICAgICAgICAgICAgICAgICAgfSwgYSkpCiAgICAgICAgICAgICAgICB9KGUsIHQpOwogICAgICAgICAgICBtLmZpbmQoIi4iICsgdCArICIgLm1vbnRoLW5hbWUiKS5odG1sKGEgKyAiICIgKyBuKSwgbS5maW5kKCIuIiArIHQgKyAiIHRib2R5IikuaHRtbChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IFtdOwogICAgICAgICAgICAgICAgZS5zZXREYXRlKDEpOwogICAgICAgICAgICAgICAgbmV3IERhdGUoZS5nZXRUaW1lKCkgLSA4NjRlNSk7CiAgICAgICAgICAgICAgICB2YXIgYSwgbiwgciA9IG5ldyBEYXRlLAogICAgICAgICAgICAgICAgICAgIHMgPSBlLmdldERheSgpOwogICAgICAgICAgICAgICAgMCA9PT0gcyAmJiAibW9uZGF5IiA9PT0gZi5zdGFydE9mV2VlayAmJiAocyA9IDcpOwogICAgICAgICAgICAgICAgaWYgKDAgPCBzKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPSBzOyAwIDwgbzsgby0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbmV3IERhdGUoZS5nZXRUaW1lKCkgLSA4NjRlNSAqIG8pOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gZyhpLmdldFRpbWUoKSksIGYuc3RhcnREYXRlICYmIEgoaSwgZi5zdGFydERhdGUpIDwgMCAmJiAobiA9ICExKSwgZi5lbmREYXRlICYmIDAgPCBIKGksIGYuZW5kRGF0ZSkgJiYgKG4gPSAhMSksIHQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImxhc3RNb250aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXk6IGkuZ2V0RGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogaS5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogbgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSBlLmdldE1vbnRoKCksIG8gPSAwOyBvIDwgNDA7IG8rKykgYSA9IFEoZSkuYWRkKG8sICJkYXlzIikudG9EYXRlKCksIG4gPSBnKGEuZ2V0VGltZSgpKSwgZi5zdGFydERhdGUgJiYgSChhLCBmLnN0YXJ0RGF0ZSkgPCAwICYmIChuID0gITEpLCBmLmVuZERhdGUgJiYgMCA8IEgoYSwgZi5lbmREYXRlKSAmJiAobiA9ICExKSwgdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBkYXRlOiBhLAogICAgICAgICAgICAgICAgICAgIHR5cGU6IGEuZ2V0TW9udGgoKSA9PSBkID8gInRvTW9udGgiIDogIm5leHRNb250aCIsCiAgICAgICAgICAgICAgICAgICAgZGF5OiBhLmdldERhdGUoKSwKICAgICAgICAgICAgICAgICAgICB0aW1lOiBhLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgICAgICB2YWxpZDogbgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gW10sIHUgPSAwOyB1IDwgNiAmJiAibmV4dE1vbnRoIiAhPSB0WzcgKiB1XS50eXBlOyB1KyspIHsKICAgICAgICAgICAgICAgICAgICBsLnB1c2goIjx0cj4iKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9ICJtb25kYXkiID09IGYuc3RhcnRPZldlZWsgPyBpICsgMSA6IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0WzcgKiB1ICsgbV07CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gUShhLnRpbWUpLmZvcm1hdCgiTCIpID09IFEocikuZm9ybWF0KCJMIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLmV4dHJhQ2xhc3MgPSAiIiwgYS50b29sdGlwID0gIiIsIGEudmFsaWQgJiYgZi5iZWZvcmVTaG93RGF5ICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGYuYmVmb3JlU2hvd0RheSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBmLmJlZm9yZVNob3dEYXkoUShhLnRpbWUpLnRvRGF0ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEudmFsaWQgPSBjWzBdLCBhLmV4dHJhQ2xhc3MgPSBjWzFdIHx8ICIiLCBhLnRvb2x0aXAgPSBjWzJdIHx8ICIiLCAiIiAhPT0gYS50b29sdGlwICYmIChhLmV4dHJhQ2xhc3MgKz0gIiBoYXMtdG9vbHRpcCAiKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogYS50aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEtdG9vbHRpcCI6IGEudG9vbHRpcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAiZGF5ICIgKyBhLnR5cGUgKyAiICIgKyBhLmV4dHJhQ2xhc3MgKyAiICIgKyAoYS52YWxpZCA/ICJ2YWxpZCIgOiAiaW52YWxpZCIpICsgIiAiICsgKGggPyAicmVhbC10b2RheSIgOiAiIikKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgMCA9PT0gaSAmJiBmLnNob3dXZWVrTnVtYmVycyAmJiBsLnB1c2goJzx0ZD48ZGl2IGNsYXNzPSJ3ZWVrLW51bWJlciIgZGF0YS1zdGFydC10aW1lPSInICsgYS50aW1lICsgJyI+JyArIGYuZ2V0V2Vla051bWJlcihhLmRhdGUpICsgIjwvZGl2PjwvdGQ+IiksIGwucHVzaCgiPHRkICIgKyAkKHt9LCBmLmRheVRkQXR0cnMsIGEpICsgIj48ZGl2ICIgKyAkKHAsIGYuZGF5RGl2QXR0cnMsIGEpICsgIj4iICsgSihhLnRpbWUsIGEuZGF5KSArICI8L2Rpdj48L3RkPiIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGwucHVzaCgiPC90cj4iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGwuam9pbigiIikKICAgICAgICAgICAgfShlKSksIGZbdF0gPSBlLCB3KCksIG0uZmluZCgiLmRheSIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBrKFUodGhpcykpCiAgICAgICAgICAgIH0pLCBtLmZpbmQoIi5kYXkiKS5vZmYoIm1vdXNlZW50ZXIiKS5vbigibW91c2VlbnRlciIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHkoVSh0aGlzKSkKICAgICAgICAgICAgfSksIG0uZmluZCgiLmRheSIpLm9mZigibW91c2VsZWF2ZSIpLm9uKCJtb3VzZWxlYXZlIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgbS5maW5kKCIuZGF0ZS1yYW5nZS1sZW5ndGgtdGlwIikuaGlkZSgpLCBmLnNpbmdsZURhdGUgJiYgYigpCiAgICAgICAgICAgIH0pLCBtLmZpbmQoIi53ZWVrLW51bWJlciIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCwgYSwgbiwgcjsKICAgICAgICAgICAgICAgIHQgPSBVKHRoaXMpLCByID0gcGFyc2VJbnQodC5hdHRyKCJkYXRhLXN0YXJ0LXRpbWUiKSwgMTApLCBmLnN0YXJ0V2VlayA/IChtLmZpbmQoIi53ZWVrLW51bWJlci1zZWxlY3RlZCIpLnJlbW92ZUNsYXNzKCJ3ZWVrLW51bWJlci1zZWxlY3RlZCIpLCBhID0gbmV3IERhdGUociA8IGYuc3RhcnRXZWVrID8gciA6IGYuc3RhcnRXZWVrKSwgbiA9IG5ldyBEYXRlKHIgPCBmLnN0YXJ0V2VlayA/IGYuc3RhcnRXZWVrIDogciksIGYuc3RhcnRXZWVrID0gITEsIGYuc3RhcnQgPSBRKGEpLmRheSgibW9uZGF5IiA9PSBmLnN0YXJ0T2ZXZWVrID8gMSA6IDApLnZhbHVlT2YoKSwgZi5lbmQgPSBRKG4pLmRheSgibW9uZGF5IiA9PSBmLnN0YXJ0T2ZXZWVrID8gNyA6IDYpLnZhbHVlT2YoKSkgOiAoZi5zdGFydFdlZWsgPSByLCB0LmFkZENsYXNzKCJ3ZWVrLW51bWJlci1zZWxlY3RlZCIpLCBhID0gbmV3IERhdGUociksIGYuc3RhcnQgPSBRKGEpLmRheSgibW9uZGF5IiA9PSBmLnN0YXJ0T2ZXZWVrID8gMSA6IDApLnZhbHVlT2YoKSwgZi5lbmQgPSBRKGEpLmRheSgibW9uZGF5IiA9PSBmLnN0YXJ0T2ZXZWVrID8gNyA6IDYpLnZhbHVlT2YoKSksIHcoKSwgTSgpLCBTKCksIEMoKSwgeCgpCiAgICAgICAgICAgIH0pLCBtLmZpbmQoIi5tb250aCIpLm9mZigiY2hhbmdlIikub24oImNoYW5nZSIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIEQoVSh0aGlzKSkKICAgICAgICAgICAgfSksIG0uZmluZCgiLnllYXIiKS5vZmYoImNoYW5nZSIpLm9uKCJjaGFuZ2UiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBEKFUodGhpcykpCiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBWKGUsIHQsIGEpIHsKICAgICAgICAgICAgdmFyIG4gPSBbXTsKICAgICAgICAgICAgYSA9IGEgfHwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yICh2YXIgciA9IGUubWluVmlzaWJsZTsgciA8PSBlLm1heFZpc2libGU7IHIrKykgbi5wdXNoKHsKICAgICAgICAgICAgICAgIHZhbHVlOiByLAogICAgICAgICAgICAgICAgdGV4dDogYShyKSwKICAgICAgICAgICAgICAgIHNlbGVjdGVkOiByID09PSB0LAogICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHIgPCBlLm1pblNlbGVjdGFibGUgfHwgciA+IGUubWF4U2VsZWN0YWJsZQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFAoZSwgdCkgewogICAgICAgICAgICBmb3IgKHZhciBhLCBuID0gJzxkaXYgY2xhc3M9InNlbGVjdC13cmFwcGVyIj48c2VsZWN0IGNsYXNzPSInICsgZSArICciIG5hbWU9IicgKyBlICsgJyI+JywgciA9IDAsIHMgPSB0Lmxlbmd0aDsgciA8IHM7IHIrKykgewogICAgICAgICAgICAgICAgdmFyIG8gPSB0W3JdOwogICAgICAgICAgICAgICAgbiArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIG8udmFsdWUgKyAnIicgKyAoby5zZWxlY3RlZCA/ICIgc2VsZWN0ZWQiIDogIiIpICsgKG8uZGlzYWJsZWQgPyAiIGRpc2FibGVkIiA6ICIiKSArICI+IiArIG8udGV4dCArICI8L29wdGlvbj4iLCBvLnNlbGVjdGVkICYmIChhID0gby50ZXh0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuICs9ICI8L3NlbGVjdD4iICsgYSArICI8L2Rpdj4iCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBZKGUsIHQpIHsKICAgICAgICAgICAgbS5maW5kKCIuIiArIHQpLmFwcGVuZCgiPGRpdj48c3Bhbj4iICsgSygiVGltZSIpICsgJzogPHNwYW4gY2xhc3M9ImhvdXItdmFsIj4wMDwvc3Bhbj46PHNwYW4gY2xhc3M9Im1pbnV0ZS12YWwiPjAwPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJob3VyIj48bGFiZWw+JyArIEsoIkhvdXIiKSArICc6IDxpbnB1dCB0eXBlPSJyYW5nZSIgY2xhc3M9ImhvdXItcmFuZ2UiIG5hbWU9ImhvdXIiIG1pbj0iMCIgbWF4PSIyMyI+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSJtaW51dGUiPjxsYWJlbD4nICsgSygiTWludXRlIikgKyAnOiA8aW5wdXQgdHlwZT0icmFuZ2UiIGNsYXNzPSJtaW51dGUtcmFuZ2UiIG5hbWU9Im1pbnV0ZSIgbWluPSIwIiBtYXg9IjU5Ij48L2xhYmVsPjwvZGl2PicpLCB1KHQsIGUpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBBKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEsoIm1vbnRoLW5hbWUiKVtlXQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVyhlKSB7CiAgICAgICAgICAgIHJldHVybiBRKGUpLmZvcm1hdChmLmZvcm1hdCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEkoKSB7CiAgICAgICAgICAgIEMoKTsKICAgICAgICAgICAgdmFyIGUgPSBwYXJzZUludChRKGYubW9udGgxKS5mb3JtYXQoIllZWVlNTSIpKSwKICAgICAgICAgICAgICAgIHQgPSBwYXJzZUludChRKGYubW9udGgyKS5mb3JtYXQoIllZWVlNTSIpKSwKICAgICAgICAgICAgICAgIGEgPSBNYXRoLmFicyhlIC0gdCk7CiAgICAgICAgICAgIDEgPCBhICYmIDg5ICE9IGEgPyBtLmFkZENsYXNzKCJoYXMtZ2FwIikucmVtb3ZlQ2xhc3MoIm5vLWdhcCIpLmZpbmQoIi5nYXAiKS5jc3MoInZpc2liaWxpdHkiLCAidmlzaWJsZSIpIDogbS5yZW1vdmVDbGFzcygiaGFzLWdhcCIpLmFkZENsYXNzKCJuby1nYXAiKS5maW5kKCIuZ2FwIikuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgICAgICB2YXIgbiA9IG0uZmluZCgidGFibGUubW9udGgxIikuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICByID0gbS5maW5kKCJ0YWJsZS5tb250aDIiKS5oZWlnaHQoKTsKICAgICAgICAgICAgbS5maW5kKCIuZ2FwIikuaGVpZ2h0KE1hdGgubWF4KG4sIHIpICsgMTApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBCKCkgewogICAgICAgICAgICBpZiAoIWYuYWx3YXlzT3BlbikgewogICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBVKG4pLmRhdGEoImRhdGUtcGlja2VyLW9wZW5lZCIsICExKSwgVShuKS50cmlnZ2VyKCJkYXRlcGlja2VyLWNsb3NlZCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogbQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZi5jdXN0b21DbG9zZUFuaW1hdGlvbiA/IGYuY3VzdG9tQ2xvc2VBbmltYXRpb24uY2FsbChtLmdldCgwKSwgZSkgOiBVKG0pLnNsaWRlVXAoZi5kdXJhdGlvbiwgZSksIFUobikudHJpZ2dlcigiZGF0ZXBpY2tlci1jbG9zZSIsIHsKICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBtCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBOKCkgewogICAgICAgICAgICBPKGYubW9udGgxLCAibW9udGgxIiksIE8oZi5tb250aDIsICJtb250aDIiKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTChlLCB0KSB7CiAgICAgICAgICAgIHZhciBhID0gcGFyc2VJbnQoUShlKS5mb3JtYXQoIllZWVlNTSIpKSAtIHBhcnNlSW50KFEodCkuZm9ybWF0KCJZWVlZTU0iKSk7CiAgICAgICAgICAgIHJldHVybiAwIDwgYSA/IDEgOiAwID09PSBhID8gMCA6IC0xCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBIKGUsIHQpIHsKICAgICAgICAgICAgdmFyIGEgPSBwYXJzZUludChRKGUpLmZvcm1hdCgiWVlZWU1NREQiKSkgLSBwYXJzZUludChRKHQpLmZvcm1hdCgiWVlZWU1NREQiKSk7CiAgICAgICAgICAgIHJldHVybiAwIDwgYSA/IDEgOiAwID09PSBhID8gMCA6IC0xCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBGKGUpIHsKICAgICAgICAgICAgcmV0dXJuIFEoZSkuYWRkKDEsICJtb250aHMiKS50b0RhdGUoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUihlKSB7CiAgICAgICAgICAgIHJldHVybiBRKGUpLmFkZCgtMSwgIm1vbnRocyIpLnRvRGF0ZSgpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFKCkgewogICAgICAgICAgICB2YXIgZSA9IGYuc2hvd1dlZWtOdW1iZXJzID8gIjx0aD4iICsgSygid2Vlay1udW1iZXIiKSArICI8L3RoPiIgOiAiIjsKICAgICAgICAgICAgcmV0dXJuICJtb25kYXkiID09IGYuc3RhcnRPZldlZWsgPyBlICsgIjx0aD4iICsgSygid2Vlay0xIikgKyAiPC90aD48dGg+IiArIEsoIndlZWstMiIpICsgIjwvdGg+PHRoPiIgKyBLKCJ3ZWVrLTMiKSArICI8L3RoPjx0aD4iICsgSygid2Vlay00IikgKyAiPC90aD48dGg+IiArIEsoIndlZWstNSIpICsgIjwvdGg+PHRoPiIgKyBLKCJ3ZWVrLTYiKSArICI8L3RoPjx0aD4iICsgSygid2Vlay03IikgKyAiPC90aD4iIDogZSArICI8dGg+IiArIEsoIndlZWstNyIpICsgIjwvdGg+PHRoPiIgKyBLKCJ3ZWVrLTEiKSArICI8L3RoPjx0aD4iICsgSygid2Vlay0yIikgKyAiPC90aD48dGg+IiArIEsoIndlZWstMyIpICsgIjwvdGg+PHRoPiIgKyBLKCJ3ZWVrLTQiKSArICI8L3RoPjx0aD4iICsgSygid2Vlay01IikgKyAiPC90aD48dGg+IiArIEsoIndlZWstNiIpICsgIjwvdGg+IgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcShlKSB7CiAgICAgICAgICAgIHJldHVybiBlID0gUShlKSwgISghZi5zdGFydERhdGUgfHwgIWUuZW5kT2YoIm1vbnRoIikuaXNCZWZvcmUoZi5zdGFydERhdGUpKSB8fCAhKCFmLmVuZERhdGUgfHwgIWUuc3RhcnRPZigibW9udGgiKS5pc0FmdGVyKGYuZW5kRGF0ZSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiAkKGUsIHQsIHIpIHsKICAgICAgICAgICAgdmFyIHMgPSBVLmV4dGVuZCghMCwge30sIGUpOwogICAgICAgICAgICBVLmVhY2godCwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSB0KHIpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBhKSBzLmhhc093blByb3BlcnR5KG4pID8gc1tuXSArPSBhW25dIDogc1tuXSA9IGFbbl0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZhciBhID0gIiI7CiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gcykgcy5oYXNPd25Qcm9wZXJ0eShuKSAmJiAoYSArPSBuICsgJz0iJyArIHNbbl0gKyAnIiAnKTsKICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEooZSwgdCkgewogICAgICAgICAgICByZXR1cm4gZi5zaG93RGF0ZUZpbHRlciAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBmLnNob3dEYXRlRmlsdGVyID8gZi5zaG93RGF0ZUZpbHRlcihlLCB0KSA6IHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEsoZSkgewogICAgICAgICAgICB2YXIgdCA9IGUudG9Mb3dlckNhc2UoKSwKICAgICAgICAgICAgICAgIGEgPSBlIGluIHIgPyByW2VdIDogdCBpbiByID8gclt0XSA6IG51bGwsCiAgICAgICAgICAgICAgICBuID0gVS5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMuZGVmYXVsdDsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gYSAmJiAoYSA9IGUgaW4gbiA/IG5bZV0gOiB0IGluIG4gPyBuW3RdIDogIiIpLCBhCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfKCkgewogICAgICAgICAgICB2YXIgZSA9IGYuZGVmYXVsdFRpbWUgPyBmLmRlZmF1bHRUaW1lIDogbmV3IERhdGU7CiAgICAgICAgICAgIHJldHVybiBmLmxvb2tCZWhpbmQgPyAoZi5zdGFydERhdGUgJiYgTChlLCBmLnN0YXJ0RGF0ZSkgPCAwICYmIChlID0gRihRKGYuc3RhcnREYXRlKS50b0RhdGUoKSkpLCBmLmVuZERhdGUgJiYgMCA8IEwoZSwgZi5lbmREYXRlKSAmJiAoZSA9IFEoZi5lbmREYXRlKS50b0RhdGUoKSkpIDogKGYuc3RhcnREYXRlICYmIEwoZSwgZi5zdGFydERhdGUpIDwgMCAmJiAoZSA9IFEoZi5zdGFydERhdGUpLnRvRGF0ZSgpKSwgZi5lbmREYXRlICYmIDAgPCBMKEYoZSksIGYuZW5kRGF0ZSkgJiYgKGUgPSBSKFEoZi5lbmREYXRlKS50b0RhdGUoKSkpKSwgZi5zaW5nbGVEYXRlICYmIChmLnN0YXJ0RGF0ZSAmJiBMKGUsIGYuc3RhcnREYXRlKSA8IDAgJiYgKGUgPSBRKGYuc3RhcnREYXRlKS50b0RhdGUoKSksIGYuZW5kRGF0ZSAmJiAwIDwgTChlLCBmLmVuZERhdGUpICYmIChlID0gUShmLmVuZERhdGUpLnRvRGF0ZSgpKSksIGUKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEcoZSkgewogICAgICAgICAgICBlIHx8IChlID0gXygpKSwgZi5sb29rQmVoaW5kID8gKE8oUihlKSwgIm1vbnRoMSIpLCBPKGUsICJtb250aDIiKSkgOiAoTyhlLCAibW9udGgxIiksIE8oRihlKSwgIm1vbnRoMiIpKSwgZi5zaW5nbGVEYXRlICYmIE8oZSwgIm1vbnRoMSIpLCBDKCksIEkoKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gWihlKSB7CiAgICAgICAgICAgIHZhciB0LCBhOwogICAgICAgICAgICB0ID0gZSwgKGEgPSBuWzBdKS5jb250YWlucyh0LnRhcmdldCkgfHwgdC50YXJnZXQgPT0gYSB8fCBudWxsICE9IGEuY2hpbGROb2RlcyAmJiAwIDw9IFUuaW5BcnJheSh0LnRhcmdldCwgYS5jaGlsZE5vZGVzKSB8fCBtLmlzKCI6dmlzaWJsZSIpICYmIEIoKQogICAgICAgIH0KICAgIH0KfSk7"}},"time_used":41,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":35,"receive":6,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testi_avatar02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.073Z","timestamp":1785159465073,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testi_avatar02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 13975\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":13975,"size_decoded":14241,"mime_type":"image/png","magic":"PNG image data, 173 x 173, 8-bit colormap, non-interlaced","md5":"5d543e6c06ccf0729b95013c530908ba","sha1":"9e7c819e8f64ff8d9497536852ebaf7fefc38617","sha256":"cdc1b4860e4fbae29eb1d09e627ea8a0dfb86d431051f080360c49980bddbef1","sha512":"8e15f489c6ecfcf8777695d80717abf05d27048bdb72d028becd5d5fb8620b6cc78a3865ed5643fd1ef44b3ae6da952293ffbdb632b9538901d03856f8482217","ssdeep":"192:qVyuCxpkWs7VWNRcQpmrp1iQS/jgpBVM1ns/1LY2pmeJ3QL7SqYqM8Stdkds2PJp:qwLiCLkpBV4s/ZJ3QLuH8S7ylT","tlshash":"7352c1d57410b4c5afeb53e04a0504114622a25bf6e4a7c0cffba3e069e2937a5bfb5c","first_seen":"2025-08-04T11:51:21.56412Z","last_seen":"2026-07-27T13:38:47.750959Z","times_seen":8,"resource_available":false,"data":"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"}},"time_used":76,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":65,"receive":11,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/moment.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.012Z","timestamp":1785159465012,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/moment.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 20267\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":84184,"size_decoded":20505,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (493)","md5":"6860996d0ca4f1796fbe360c0ae16a18","sha1":"1f9129c04bfb98a444405da491c0b017d658ef68","sha256":"7a1aadf281f3a050264ed80442f898717f647d09877fd151d7224c51a6fa9c08","sha512":"f905de1badb98096be92b70abb16a3289e1b973d0a3728a09dbd232401ea8d60f78503ca808edf4aead98fe267cb06edc56fdeb5b5f8472932557b56c131bc3a","ssdeep":"1536:bap8FbGUWdmJ0skZvOKRqPRobxhBBvjUbZ:bap8FbCZsrKRERobxvF8","tlshash":"28834f4aaae274359317f0384d6fcc08b63a580b558e9d09790c92e52f1d93897b9ffc","first_seen":"2026-07-27T07:42:30.715386Z","last_seen":"2026-07-27T13:38:47.787229Z","times_seen":3,"resource_available":true,"data":"ISBmdW5jdGlvbihlLCB0KSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgPSB0KCkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSh0KSA6IGUubW9tZW50ID0gdCgpCn0odGhpcywgZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICB2YXIgZSwgaTsKCiAgICBmdW5jdGlvbiBmKCkgewogICAgICAgIHJldHVybiBlLmFwcGx5KG51bGwsIGFyZ3VtZW50cykKICAgIH0KCiAgICBmdW5jdGlvbiBvKGUpIHsKICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEFycmF5IHx8ICJbb2JqZWN0IEFycmF5XSIgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKQogICAgfQoKICAgIGZ1bmN0aW9uIHUoZSkgewogICAgICAgIHJldHVybiBudWxsICE9IGUgJiYgIltvYmplY3QgT2JqZWN0XSIgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKQogICAgfQoKICAgIGZ1bmN0aW9uIG0oZSwgdCkgewogICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgdCkKICAgIH0KCiAgICBmdW5jdGlvbiBsKGUpIHsKICAgICAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpIHJldHVybiAwID09PSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5sZW5ndGg7CiAgICAgICAgZm9yICh2YXIgdCBpbiBlKQogICAgICAgICAgICBpZiAobShlLCB0KSkgcmV0dXJuOwogICAgICAgIHJldHVybiAxCiAgICB9CgogICAgZnVuY3Rpb24gcihlKSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZQogICAgfQoKICAgIGZ1bmN0aW9uIGgoZSkgewogICAgICAgIHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgZSB8fCAiW29iamVjdCBOdW1iZXJdIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICB9CgogICAgZnVuY3Rpb24gYShlKSB7CiAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlIHx8ICJbb2JqZWN0IERhdGVdIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICB9CgogICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgZm9yICh2YXIgbiA9IFtdLCBzID0gMDsgcyA8IGUubGVuZ3RoOyArK3MpIG4ucHVzaCh0KGVbc10sIHMpKTsKICAgICAgICByZXR1cm4gbgogICAgfQoKICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgIGZvciAodmFyIG4gaW4gdCkgbSh0LCBuKSAmJiAoZVtuXSA9IHRbbl0pOwogICAgICAgIHJldHVybiBtKHQsICJ0b1N0cmluZyIpICYmIChlLnRvU3RyaW5nID0gdC50b1N0cmluZyksIG0odCwgInZhbHVlT2YiKSAmJiAoZS52YWx1ZU9mID0gdC52YWx1ZU9mKSwgZQogICAgfQoKICAgIGZ1bmN0aW9uIF8oZSwgdCwgbiwgcykgewogICAgICAgIHJldHVybiB4dChlLCB0LCBuLCBzLCAhMCkudXRjKCkKICAgIH0KCiAgICBmdW5jdGlvbiB5KGUpIHsKICAgICAgICByZXR1cm4gbnVsbCA9PSBlLl9wZiAmJiAoZS5fcGYgPSB7CiAgICAgICAgICAgIGVtcHR5OiAhMSwKICAgICAgICAgICAgdW51c2VkVG9rZW5zOiBbXSwKICAgICAgICAgICAgdW51c2VkSW5wdXQ6IFtdLAogICAgICAgICAgICBvdmVyZmxvdzogLTIsCiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXI6IDAsCiAgICAgICAgICAgIG51bGxJbnB1dDogITEsCiAgICAgICAgICAgIGludmFsaWRFcmE6IG51bGwsCiAgICAgICAgICAgIGludmFsaWRNb250aDogbnVsbCwKICAgICAgICAgICAgaW52YWxpZEZvcm1hdDogITEsCiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZDogITEsCiAgICAgICAgICAgIGlzbzogITEsCiAgICAgICAgICAgIHBhcnNlZERhdGVQYXJ0czogW10sCiAgICAgICAgICAgIGVyYTogbnVsbCwKICAgICAgICAgICAgbWVyaWRpZW06IG51bGwsCiAgICAgICAgICAgIHJmYzI4MjI6ICExLAogICAgICAgICAgICB3ZWVrZGF5TWlzbWF0Y2g6ICExCiAgICAgICAgfSksIGUuX3BmCiAgICB9CgogICAgZnVuY3Rpb24gZyhlKSB7CiAgICAgICAgaWYgKG51bGwgPT0gZS5faXNWYWxpZCkgewogICAgICAgICAgICB2YXIgdCA9IHkoZSksCiAgICAgICAgICAgICAgICBuID0gaS5jYWxsKHQucGFyc2VkRGF0ZVBhcnRzLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBzID0gIWlzTmFOKGUuX2QuZ2V0VGltZSgpKSAmJiB0Lm92ZXJmbG93IDwgMCAmJiAhdC5lbXB0eSAmJiAhdC5pbnZhbGlkRXJhICYmICF0LmludmFsaWRNb250aCAmJiAhdC5pbnZhbGlkV2Vla2RheSAmJiAhdC53ZWVrZGF5TWlzbWF0Y2ggJiYgIXQubnVsbElucHV0ICYmICF0LmludmFsaWRGb3JtYXQgJiYgIXQudXNlckludmFsaWRhdGVkICYmICghdC5tZXJpZGllbSB8fCB0Lm1lcmlkaWVtICYmIG4pOwogICAgICAgICAgICBpZiAoZS5fc3RyaWN0ICYmIChzID0gcyAmJiAwID09PSB0LmNoYXJzTGVmdE92ZXIgJiYgMCA9PT0gdC51bnVzZWRUb2tlbnMubGVuZ3RoICYmIHZvaWQgMCA9PT0gdC5iaWdIb3VyKSwgbnVsbCAhPSBPYmplY3QuaXNGcm96ZW4gJiYgT2JqZWN0LmlzRnJvemVuKGUpKSByZXR1cm4gczsKICAgICAgICAgICAgZS5faXNWYWxpZCA9IHMKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGUuX2lzVmFsaWQKICAgIH0KCiAgICBmdW5jdGlvbiB3KGUpIHsKICAgICAgICB2YXIgdCA9IF8oTmFOKTsKICAgICAgICByZXR1cm4gbnVsbCAhPSBlID8gYyh5KHQpLCBlKSA6IHkodCkudXNlckludmFsaWRhdGVkID0gITAsIHQKICAgIH0KICAgIGkgPSBBcnJheS5wcm90b3R5cGUuc29tZSA/IEFycmF5LnByb3RvdHlwZS5zb21lIDogZnVuY3Rpb24oZSkgewogICAgICAgIGZvciAodmFyIHQgPSBPYmplY3QodGhpcyksIG4gPSB0Lmxlbmd0aCA+Pj4gMCwgcyA9IDA7IHMgPCBuOyBzKyspCiAgICAgICAgICAgIGlmIChzIGluIHQgJiYgZS5jYWxsKHRoaXMsIHRbc10sIHMsIHQpKSByZXR1cm4gITA7CiAgICAgICAgcmV0dXJuICExCiAgICB9OwogICAgdmFyIHAgPSBmLm1vbWVudFByb3BlcnRpZXMgPSBbXSwKICAgICAgICB0ID0gITE7CgogICAgZnVuY3Rpb24gdihlLCB0KSB7CiAgICAgICAgdmFyIG4sIHMsIGk7CiAgICAgICAgaWYgKHIodC5faXNBTW9tZW50T2JqZWN0KSB8fCAoZS5faXNBTW9tZW50T2JqZWN0ID0gdC5faXNBTW9tZW50T2JqZWN0KSwgcih0Ll9pKSB8fCAoZS5faSA9IHQuX2kpLCByKHQuX2YpIHx8IChlLl9mID0gdC5fZiksIHIodC5fbCkgfHwgKGUuX2wgPSB0Ll9sKSwgcih0Ll9zdHJpY3QpIHx8IChlLl9zdHJpY3QgPSB0Ll9zdHJpY3QpLCByKHQuX3R6bSkgfHwgKGUuX3R6bSA9IHQuX3R6bSksIHIodC5faXNVVEMpIHx8IChlLl9pc1VUQyA9IHQuX2lzVVRDKSwgcih0Ll9vZmZzZXQpIHx8IChlLl9vZmZzZXQgPSB0Ll9vZmZzZXQpLCByKHQuX3BmKSB8fCAoZS5fcGYgPSB5KHQpKSwgcih0Ll9sb2NhbGUpIHx8IChlLl9sb2NhbGUgPSB0Ll9sb2NhbGUpLCAwIDwgcC5sZW5ndGgpCiAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBwLmxlbmd0aDsgbisrKSByKGkgPSB0W3MgPSBwW25dXSkgfHwgKGVbc10gPSBpKTsKICAgICAgICByZXR1cm4gZQogICAgfQoKICAgIGZ1bmN0aW9uIGsoZSkgewogICAgICAgIHYodGhpcywgZSksIHRoaXMuX2QgPSBuZXcgRGF0ZShudWxsICE9IGUuX2QgPyBlLl9kLmdldFRpbWUoKSA6IE5hTiksIHRoaXMuaXNWYWxpZCgpIHx8ICh0aGlzLl9kID0gbmV3IERhdGUoTmFOKSksICExID09PSB0ICYmICh0ID0gITAsIGYudXBkYXRlT2Zmc2V0KHRoaXMpLCB0ID0gITEpCiAgICB9CgogICAgZnVuY3Rpb24gTShlKSB7CiAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBrIHx8IG51bGwgIT0gZSAmJiBudWxsICE9IGUuX2lzQU1vbWVudE9iamVjdAogICAgfQoKICAgIGZ1bmN0aW9uIEQoZSkgewogICAgICAgICExID09PSBmLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgY29uc29sZSAmJiBjb25zb2xlLndhcm4gJiYgY29uc29sZS53YXJuKCJEZXByZWNhdGlvbiB3YXJuaW5nOiAiICsgZSkKICAgIH0KCiAgICBmdW5jdGlvbiBuKGksIHIpIHsKICAgICAgICB2YXIgYSA9ICEwOwogICAgICAgIHJldHVybiBjKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAobnVsbCAhPSBmLmRlcHJlY2F0aW9uSGFuZGxlciAmJiBmLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBpKSwgYSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSwgdCwgbiA9IFtdLCBzID0gMDsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykgewogICAgICAgICAgICAgICAgICAgIGlmIChlID0gIiIsICJvYmplY3QiID09IHR5cGVvZiBhcmd1bWVudHNbc10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIGUgKz0gIlxuWyIgKyBzICsgIl0gIiwgYXJndW1lbnRzWzBdKSBtKGFyZ3VtZW50c1swXSwgdCkgJiYgKGUgKz0gdCArICI6ICIgKyBhcmd1bWVudHNbMF1bdF0gKyAiLCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUuc2xpY2UoMCwgLTIpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGUgPSBhcmd1bWVudHNbc107CiAgICAgICAgICAgICAgICAgICAgbi5wdXNoKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBEKGkgKyAiXG5Bcmd1bWVudHM6ICIgKyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKS5qb2luKCIiKSArICJcbiIgKyAobmV3IEVycm9yKS5zdGFjayksIGEgPSAhMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykKICAgICAgICB9LCByKQogICAgfQogICAgdmFyIHMsIFMgPSB7fTsKCiAgICBmdW5jdGlvbiBZKGUsIHQpIHsKICAgICAgICBudWxsICE9IGYuZGVwcmVjYXRpb25IYW5kbGVyICYmIGYuZGVwcmVjYXRpb25IYW5kbGVyKGUsIHQpLCBTW2VdIHx8IChEKHQpLCBTW2VdID0gITApCiAgICB9CgogICAgZnVuY3Rpb24gTyhlKSB7CiAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiBGdW5jdGlvbiAmJiBlIGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgIltvYmplY3QgRnVuY3Rpb25dIiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpCiAgICB9CgogICAgZnVuY3Rpb24gYihlLCB0KSB7CiAgICAgICAgdmFyIG4sIHMgPSBjKHt9LCBlKTsKICAgICAgICBmb3IgKG4gaW4gdCkgbSh0LCBuKSAmJiAodShlW25dKSAmJiB1KHRbbl0pID8gKHNbbl0gPSB7fSwgYyhzW25dLCBlW25dKSwgYyhzW25dLCB0W25dKSkgOiBudWxsICE9IHRbbl0gPyBzW25dID0gdFtuXSA6IGRlbGV0ZSBzW25dKTsKICAgICAgICBmb3IgKG4gaW4gZSkgbShlLCBuKSAmJiAhbSh0LCBuKSAmJiB1KGVbbl0pICYmIChzW25dID0gYyh7fSwgc1tuXSkpOwogICAgICAgIHJldHVybiBzCiAgICB9CgogICAgZnVuY3Rpb24geChlKSB7CiAgICAgICAgbnVsbCAhPSBlICYmIHRoaXMuc2V0KGUpCiAgICB9CiAgICBmLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyA9ICExLCBmLmRlcHJlY2F0aW9uSGFuZGxlciA9IG51bGwsIHMgPSBPYmplY3Qua2V5cyA/IE9iamVjdC5rZXlzIDogZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0LCBuID0gW107CiAgICAgICAgZm9yICh0IGluIGUpIG0oZSwgdCkgJiYgbi5wdXNoKHQpOwogICAgICAgIHJldHVybiBuCiAgICB9OwoKICAgIGZ1bmN0aW9uIFQoZSwgdCwgbikgewogICAgICAgIHZhciBzID0gIiIgKyBNYXRoLmFicyhlKSwKICAgICAgICAgICAgaSA9IHQgLSBzLmxlbmd0aDsKICAgICAgICByZXR1cm4gKDAgPD0gZSA/IG4gPyAiKyIgOiAiIiA6ICItIikgKyBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgaSkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpICsgcwogICAgfQogICAgdmFyIE4gPSAvKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xOezEsNX18WVlZWVlZfFlZWVlZfFlZWVl8WVl8eXsyLDR9fHlvP3xnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZywKICAgICAgICBQID0gLyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csCiAgICAgICAgUiA9IHt9LAogICAgICAgIFcgPSB7fTsKCiAgICBmdW5jdGlvbiBDKGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9ICJzdHJpbmciID09IHR5cGVvZiBzID8gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzW3NdKCkKICAgICAgICB9IDogczsKICAgICAgICBlICYmIChXW2VdID0gaSksIHQgJiYgKFdbdFswXV0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIFQoaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0WzFdLCB0WzJdKQogICAgICAgIH0pLCBuICYmIChXW25dID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGkuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgZSkKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIFUoZSwgdCkgewogICAgICAgIHJldHVybiBlLmlzVmFsaWQoKSA/ICh0ID0gSCh0LCBlLmxvY2FsZURhdGEoKSksIFJbdF0gPSBSW3RdIHx8IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgZm9yICh2YXIgZSwgaSA9IHMubWF0Y2goTiksIHQgPSAwLCByID0gaS5sZW5ndGg7IHQgPCByOyB0KyspIFdbaVt0XV0gPyBpW3RdID0gV1tpW3RdXSA6IGlbdF0gPSAoZSA9IGlbdF0pLm1hdGNoKC9cW1tcc1xTXS8pID8gZS5yZXBsYWNlKC9eXFt8XF0kL2csICIiKSA6IGUucmVwbGFjZSgvXFwvZywgIiIpOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgdCA9ICIiLCBuID0gMDsgbiA8IHI7IG4rKykgdCArPSBPKGlbbl0pID8gaVtuXS5jYWxsKGUsIHMpIDogaVtuXTsKICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgIH0KICAgICAgICB9KHQpLCBSW3RdKGUpKSA6IGUubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCkKICAgIH0KCiAgICBmdW5jdGlvbiBIKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IDU7CgogICAgICAgIGZ1bmN0aW9uIHMoZSkgewogICAgICAgICAgICByZXR1cm4gdC5sb25nRGF0ZUZvcm1hdChlKSB8fCBlCiAgICAgICAgfQogICAgICAgIGZvciAoUC5sYXN0SW5kZXggPSAwOyAwIDw9IG4gJiYgUC50ZXN0KGUpOykgZSA9IGUucmVwbGFjZShQLCBzKSwgUC5sYXN0SW5kZXggPSAwLCAtLW47CiAgICAgICAgcmV0dXJuIGUKICAgIH0KICAgIHZhciBGID0ge307CgogICAgZnVuY3Rpb24gTChlLCB0KSB7CiAgICAgICAgdmFyIG4gPSBlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgRltuXSA9IEZbbiArICJzIl0gPSBGW3RdID0gZQogICAgfQoKICAgIGZ1bmN0aW9uIFYoZSkgewogICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IEZbZV0gfHwgRltlLnRvTG93ZXJDYXNlKCldIDogdm9pZCAwCiAgICB9CgogICAgZnVuY3Rpb24gRyhlKSB7CiAgICAgICAgdmFyIHQsIG4sIHMgPSB7fTsKICAgICAgICBmb3IgKG4gaW4gZSkgbShlLCBuKSAmJiAodCA9IFYobikpICYmIChzW3RdID0gZVtuXSk7CiAgICAgICAgcmV0dXJuIHMKICAgIH0KICAgIHZhciBFID0ge307CgogICAgZnVuY3Rpb24gQShlLCB0KSB7CiAgICAgICAgRVtlXSA9IHQKICAgIH0KCiAgICBmdW5jdGlvbiBqKGUpIHsKICAgICAgICByZXR1cm4gZSAlIDQgPT0gMCAmJiBlICUgMTAwICE9IDAgfHwgZSAlIDQwMCA9PSAwCiAgICB9CgogICAgZnVuY3Rpb24gSShlKSB7CiAgICAgICAgcmV0dXJuIGUgPCAwID8gTWF0aC5jZWlsKGUpIHx8IDAgOiBNYXRoLmZsb29yKGUpCiAgICB9CgogICAgZnVuY3Rpb24gWihlKSB7CiAgICAgICAgdmFyIHQgPSArZSwKICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgcmV0dXJuIDAgIT0gdCAmJiBpc0Zpbml0ZSh0KSAmJiAobiA9IEkodCkpLCBuCiAgICB9CgogICAgZnVuY3Rpb24geih0LCBuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZSA/IChxKHRoaXMsIHQsIGUpLCBmLnVwZGF0ZU9mZnNldCh0aGlzLCBuKSwgdGhpcykgOiAkKHRoaXMsIHQpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uICQoZSwgdCkgewogICAgICAgIHJldHVybiBlLmlzVmFsaWQoKSA/IGUuX2RbImdldCIgKyAoZS5faXNVVEMgPyAiVVRDIiA6ICIiKSArIHRdKCkgOiBOYU4KICAgIH0KCiAgICBmdW5jdGlvbiBxKGUsIHQsIG4pIHsKICAgICAgICBlLmlzVmFsaWQoKSAmJiAhaXNOYU4obikgJiYgKCJGdWxsWWVhciIgPT09IHQgJiYgaihlLnllYXIoKSkgJiYgMSA9PT0gZS5tb250aCgpICYmIDI5ID09PSBlLmRhdGUoKSA/IChuID0gWihuKSwgZS5fZFsic2V0IiArIChlLl9pc1VUQyA/ICJVVEMiIDogIiIpICsgdF0obiwgZS5tb250aCgpLCB4ZShuLCBlLm1vbnRoKCkpKSkgOiBlLl9kWyJzZXQiICsgKGUuX2lzVVRDID8gIlVUQyIgOiAiIikgKyB0XShuKSkKICAgIH0KICAgIHZhciBCLCBKID0gL1xkLywKICAgICAgICBRID0gL1xkXGQvLAogICAgICAgIFggPSAvXGR7M30vLAogICAgICAgIEsgPSAvXGR7NH0vLAogICAgICAgIGVlID0gL1srLV0/XGR7Nn0vLAogICAgICAgIHRlID0gL1xkXGQ/LywKICAgICAgICBuZSA9IC9cZFxkXGRcZD8vLAogICAgICAgIHNlID0gL1xkXGRcZFxkXGRcZD8vLAogICAgICAgIGllID0gL1xkezEsM30vLAogICAgICAgIHJlID0gL1xkezEsNH0vLAogICAgICAgIGFlID0gL1srLV0/XGR7MSw2fS8sCiAgICAgICAgb2UgPSAvXGQrLywKICAgICAgICB1ZSA9IC9bKy1dP1xkKy8sCiAgICAgICAgbGUgPSAvWnxbKy1dXGRcZDo/XGRcZC9naSwKICAgICAgICBoZSA9IC9afFsrLV1cZFxkKD86Oj9cZFxkKT8vZ2ksCiAgICAgICAgZGUgPSAvWzAtOV17MCwyNTZ9WydhLXpcdTAwQTAtXHUwNUZGXHUwNzAwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRjA3XHVGRjEwLVx1RkZFRl17MSwyNTZ9fFtcdTA2MDAtXHUwNkZGXC9dezEsMjU2fShccyo/W1x1MDYwMC1cdTA2RkZdezEsMjU2fSl7MSwyfS9pOwoKICAgIGZ1bmN0aW9uIGNlKGUsIG4sIHMpIHsKICAgICAgICBCW2VdID0gTyhuKSA/IG4gOiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBlICYmIHMgPyBzIDogbgogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBmZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIG0oQiwgZSkgPyBCW2VdKHQuX3N0cmljdCwgdC5fbG9jYWxlKSA6IG5ldyBSZWdFeHAobWUoZS5yZXBsYWNlKCJcXCIsICIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csIGZ1bmN0aW9uKGUsIHQsIG4sIHMsIGkpIHsKICAgICAgICAgICAgcmV0dXJuIHQgfHwgbiB8fCBzIHx8IGkKICAgICAgICB9KSkpCiAgICB9CgogICAgZnVuY3Rpb24gbWUoZSkgewogICAgICAgIHJldHVybiBlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAiXFwkJiIpCiAgICB9CiAgICBCID0ge307CiAgICB2YXIgX2UgPSB7fTsKCiAgICBmdW5jdGlvbiB5ZShlLCBuKSB7CiAgICAgICAgdmFyIHQsIHMgPSBuOwogICAgICAgIGZvciAoInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgKGUgPSBbZV0pLCBoKG4pICYmIChzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdFtuXSA9IFooZSkKICAgICAgICAgICAgfSksIHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgX2VbZVt0XV0gPSBzCiAgICB9CgogICAgZnVuY3Rpb24gZ2UoZSwgaSkgewogICAgICAgIHllKGUsIGZ1bmN0aW9uKGUsIHQsIG4sIHMpIHsKICAgICAgICAgICAgbi5fdyA9IG4uX3cgfHwge30sIGkoZSwgbi5fdywgbiwgcykKICAgICAgICB9KQogICAgfQogICAgdmFyIHdlLCBwZSA9IDAsCiAgICAgICAgdmUgPSAxLAogICAgICAgIGtlID0gMiwKICAgICAgICBNZSA9IDMsCiAgICAgICAgRGUgPSA0LAogICAgICAgIFNlID0gNSwKICAgICAgICBZZSA9IDYsCiAgICAgICAgT2UgPSA3LAogICAgICAgIGJlID0gODsKCiAgICBmdW5jdGlvbiB4ZShlLCB0KSB7CiAgICAgICAgaWYgKGlzTmFOKGUpIHx8IGlzTmFOKHQpKSByZXR1cm4gTmFOOwogICAgICAgIHZhciBuLCBzID0gKHQgJSAobiA9IDEyKSArIG4pICUgbjsKICAgICAgICByZXR1cm4gZSArPSAodCAtIHMpIC8gMTIsIDEgPT0gcyA/IGooZSkgPyAyOSA6IDI4IDogMzEgLSBzICUgNyAlIDIKICAgIH0KICAgIHdlID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPyBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRoaXMubGVuZ3RoOyArK3QpCiAgICAgICAgICAgIGlmICh0aGlzW3RdID09PSBlKSByZXR1cm4gdDsKICAgICAgICByZXR1cm4gLTEKICAgIH0sIEMoIk0iLCBbIk1NIiwgMl0sICJNbyIsIGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLm1vbnRoKCkgKyAxCiAgICB9KSwgQygiTU1NIiwgMCwgMCwgZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBlKQogICAgfSksIEMoIk1NTU0iLCAwLCAwLCBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLCBlKQogICAgfSksIEwoIm1vbnRoIiwgIk0iKSwgQSgibW9udGgiLCA4KSwgY2UoIk0iLCB0ZSksIGNlKCJNTSIsIHRlLCBRKSwgY2UoIk1NTSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC5tb250aHNTaG9ydFJlZ2V4KGUpCiAgICB9KSwgY2UoIk1NTU0iLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHQubW9udGhzUmVnZXgoZSkKICAgIH0pLCB5ZShbIk0iLCAiTU0iXSwgZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHRbdmVdID0gWihlKSAtIDEKICAgIH0pLCB5ZShbIk1NTSIsICJNTU1NIl0sIGZ1bmN0aW9uKGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9IG4uX2xvY2FsZS5tb250aHNQYXJzZShlLCBzLCBuLl9zdHJpY3QpOwogICAgICAgIG51bGwgIT0gaSA/IHRbdmVdID0gaSA6IHkobikuaW52YWxpZE1vbnRoID0gZQogICAgfSk7CiAgICB2YXIgVGUgPSAiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSwKICAgICAgICBOZSA9ICJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSwKICAgICAgICBQZSA9IC9EW29EXT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NPy8sCiAgICAgICAgUmUgPSBkZSwKICAgICAgICBXZSA9IGRlOwoKICAgIGZ1bmN0aW9uIENlKGUsIHQpIHsKICAgICAgICB2YXIgbjsKICAgICAgICBpZiAoIWUuaXNWYWxpZCgpKSByZXR1cm4gZTsKICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpCiAgICAgICAgICAgIGlmICgvXlxkKyQvLnRlc3QodCkpIHQgPSBaKHQpOwogICAgICAgICAgICBlbHNlIGlmICghaCh0ID0gZS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodCkpKSByZXR1cm4gZTsKICAgICAgICByZXR1cm4gbiA9IE1hdGgubWluKGUuZGF0ZSgpLCB4ZShlLnllYXIoKSwgdCkpLCBlLl9kWyJzZXQiICsgKGUuX2lzVVRDID8gIlVUQyIgOiAiIikgKyAiTW9udGgiXSh0LCBuKSwgZQogICAgfQoKICAgIGZ1bmN0aW9uIFVlKGUpIHsKICAgICAgICByZXR1cm4gbnVsbCAhPSBlID8gKENlKHRoaXMsIGUpLCBmLnVwZGF0ZU9mZnNldCh0aGlzLCAhMCksIHRoaXMpIDogJCh0aGlzLCAiTW9udGgiKQogICAgfQoKICAgIGZ1bmN0aW9uIEhlKCkgewogICAgICAgIGZ1bmN0aW9uIGUoZSwgdCkgewogICAgICAgICAgICByZXR1cm4gdC5sZW5ndGggLSBlLmxlbmd0aAogICAgICAgIH0KICAgICAgICBmb3IgKHZhciB0LCBuID0gW10sIHMgPSBbXSwgaSA9IFtdLCByID0gMDsgciA8IDEyOyByKyspIHQgPSBfKFsyZTMsIHJdKSwgbi5wdXNoKHRoaXMubW9udGhzU2hvcnQodCwgIiIpKSwgcy5wdXNoKHRoaXMubW9udGhzKHQsICIiKSksIGkucHVzaCh0aGlzLm1vbnRocyh0LCAiIikpLCBpLnB1c2godGhpcy5tb250aHNTaG9ydCh0LCAiIikpOwogICAgICAgIGZvciAobi5zb3J0KGUpLCBzLnNvcnQoZSksIGkuc29ydChlKSwgciA9IDA7IHIgPCAxMjsgcisrKSBuW3JdID0gbWUobltyXSksIHNbcl0gPSBtZShzW3JdKTsKICAgICAgICBmb3IgKHIgPSAwOyByIDwgMjQ7IHIrKykgaVtyXSA9IG1lKGlbcl0pOwogICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgiXigiICsgaS5qb2luKCJ8IikgKyAiKSIsICJpIiksIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleCwgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCJeKCIgKyBzLmpvaW4oInwiKSArICIpIiwgImkiKSwgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoIl4oIiArIG4uam9pbigifCIpICsgIikiLCAiaSIpCiAgICB9CgogICAgZnVuY3Rpb24gRmUoZSkgewogICAgICAgIHJldHVybiBqKGUpID8gMzY2IDogMzY1CiAgICB9CiAgICBDKCJZIiwgMCwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzLnllYXIoKTsKICAgICAgICByZXR1cm4gZSA8PSA5OTk5ID8gVChlLCA0KSA6ICIrIiArIGUKICAgIH0pLCBDKDAsIFsiWVkiLCAyXSwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMueWVhcigpICUgMTAwCiAgICB9KSwgQygwLCBbIllZWVkiLCA0XSwgMCwgInllYXIiKSwgQygwLCBbIllZWVlZIiwgNV0sIDAsICJ5ZWFyIiksIEMoMCwgWyJZWVlZWVkiLCA2LCAhMF0sIDAsICJ5ZWFyIiksIEwoInllYXIiLCAieSIpLCBBKCJ5ZWFyIiwgMSksIGNlKCJZIiwgdWUpLCBjZSgiWVkiLCB0ZSwgUSksIGNlKCJZWVlZIiwgcmUsIEspLCBjZSgiWVlZWVkiLCBhZSwgZWUpLCBjZSgiWVlZWVlZIiwgYWUsIGVlKSwgeWUoWyJZWVlZWSIsICJZWVlZWVkiXSwgcGUpLCB5ZSgiWVlZWSIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB0W3BlXSA9IDIgPT09IGUubGVuZ3RoID8gZi5wYXJzZVR3b0RpZ2l0WWVhcihlKSA6IFooZSkKICAgIH0pLCB5ZSgiWVkiLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdFtwZV0gPSBmLnBhcnNlVHdvRGlnaXRZZWFyKGUpCiAgICB9KSwgeWUoIlkiLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdFtwZV0gPSBwYXJzZUludChlLCAxMCkKICAgIH0pLCBmLnBhcnNlVHdvRGlnaXRZZWFyID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBaKGUpICsgKDY4IDwgWihlKSA/IDE5MDAgOiAyZTMpCiAgICB9OwogICAgdmFyIExlID0geigiRnVsbFllYXIiLCAhMCk7CgogICAgZnVuY3Rpb24gVmUoZSkgewogICAgICAgIHZhciB0LCBuOwogICAgICAgIHJldHVybiBlIDwgMTAwICYmIDAgPD0gZSA/ICgobiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpWzBdID0gZSArIDQwMCwgdCA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIG4pKSwgaXNGaW5pdGUodC5nZXRVVENGdWxsWWVhcigpKSAmJiB0LnNldFVUQ0Z1bGxZZWFyKGUpKSA6IHQgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmd1bWVudHMpKSwgdAogICAgfQoKICAgIGZ1bmN0aW9uIEdlKGUsIHQsIG4pIHsKICAgICAgICB2YXIgcyA9IDcgKyB0IC0gbjsKICAgICAgICByZXR1cm4gcyAtICg3ICsgVmUoZSwgMCwgcykuZ2V0VVRDRGF5KCkgLSB0KSAlIDcgLSAxCiAgICB9CgogICAgZnVuY3Rpb24gRWUoZSwgdCwgbiwgcywgaSkgewogICAgICAgIHZhciByLCBhID0gMSArIDcgKiAodCAtIDEpICsgKDcgKyBuIC0gcykgJSA3ICsgR2UoZSwgcywgaSksCiAgICAgICAgICAgIG8gPSBhIDw9IDAgPyBGZShyID0gZSAtIDEpICsgYSA6IGEgPiBGZShlKSA/IChyID0gZSArIDEsIGEgLSBGZShlKSkgOiAociA9IGUsIGEpOwogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHllYXI6IHIsCiAgICAgICAgICAgIGRheU9mWWVhcjogbwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBBZShlLCB0LCBuKSB7CiAgICAgICAgdmFyIHMsIGksIHIgPSBHZShlLnllYXIoKSwgdCwgbiksCiAgICAgICAgICAgIGEgPSBNYXRoLmZsb29yKChlLmRheU9mWWVhcigpIC0gciAtIDEpIC8gNykgKyAxOwogICAgICAgIHJldHVybiBhIDwgMSA/IHMgPSBhICsgamUoaSA9IGUueWVhcigpIC0gMSwgdCwgbikgOiBhID4gamUoZS55ZWFyKCksIHQsIG4pID8gKHMgPSBhIC0gamUoZS55ZWFyKCksIHQsIG4pLCBpID0gZS55ZWFyKCkgKyAxKSA6IChpID0gZS55ZWFyKCksIHMgPSBhKSwgewogICAgICAgICAgICB3ZWVrOiBzLAogICAgICAgICAgICB5ZWFyOiBpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGplKGUsIHQsIG4pIHsKICAgICAgICB2YXIgcyA9IEdlKGUsIHQsIG4pLAogICAgICAgICAgICBpID0gR2UoZSArIDEsIHQsIG4pOwogICAgICAgIHJldHVybiAoRmUoZSkgLSBzICsgaSkgLyA3CiAgICB9CiAgICBDKCJ3IiwgWyJ3dyIsIDJdLCAid28iLCAid2VlayIpLCBDKCJXIiwgWyJXVyIsIDJdLCAiV28iLCAiaXNvV2VlayIpLCBMKCJ3ZWVrIiwgInciKSwgTCgiaXNvV2VlayIsICJXIiksIEEoIndlZWsiLCA1KSwgQSgiaXNvV2VlayIsIDUpLCBjZSgidyIsIHRlKSwgY2UoInd3IiwgdGUsIFEpLCBjZSgiVyIsIHRlKSwgY2UoIldXIiwgdGUsIFEpLCBnZShbInciLCAid3ciLCAiVyIsICJXVyJdLCBmdW5jdGlvbihlLCB0LCBuLCBzKSB7CiAgICAgICAgdFtzLnN1YnN0cigwLCAxKV0gPSBaKGUpCiAgICB9KTsKCiAgICBmdW5jdGlvbiBJZShlLCB0KSB7CiAgICAgICAgcmV0dXJuIGUuc2xpY2UodCwgNykuY29uY2F0KGUuc2xpY2UoMCwgdCkpCiAgICB9CiAgICBDKCJkIiwgMCwgImRvIiwgImRheSIpLCBDKCJkZCIsIDAsIDAsIGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZSkKICAgIH0pLCBDKCJkZGQiLCAwLCAwLCBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZSkKICAgIH0pLCBDKCJkZGRkIiwgMCwgMCwgZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBlKQogICAgfSksIEMoImUiLCAwLCAwLCAid2Vla2RheSIpLCBDKCJFIiwgMCwgMCwgImlzb1dlZWtkYXkiKSwgTCgiZGF5IiwgImQiKSwgTCgid2Vla2RheSIsICJlIiksIEwoImlzb1dlZWtkYXkiLCAiRSIpLCBBKCJkYXkiLCAxMSksIEEoIndlZWtkYXkiLCAxMSksIEEoImlzb1dlZWtkYXkiLCAxMSksIGNlKCJkIiwgdGUpLCBjZSgiZSIsIHRlKSwgY2UoIkUiLCB0ZSksIGNlKCJkZCIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC53ZWVrZGF5c01pblJlZ2V4KGUpCiAgICB9KSwgY2UoImRkZCIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC53ZWVrZGF5c1Nob3J0UmVnZXgoZSkKICAgIH0pLCBjZSgiZGRkZCIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC53ZWVrZGF5c1JlZ2V4KGUpCiAgICB9KSwgZ2UoWyJkZCIsICJkZGQiLCAiZGRkZCJdLCBmdW5jdGlvbihlLCB0LCBuLCBzKSB7CiAgICAgICAgdmFyIGkgPSBuLl9sb2NhbGUud2Vla2RheXNQYXJzZShlLCBzLCBuLl9zdHJpY3QpOwogICAgICAgIG51bGwgIT0gaSA/IHQuZCA9IGkgOiB5KG4pLmludmFsaWRXZWVrZGF5ID0gZQogICAgfSksIGdlKFsiZCIsICJlIiwgIkUiXSwgZnVuY3Rpb24oZSwgdCwgbiwgcykgewogICAgICAgIHRbc10gPSBaKGUpCiAgICB9KTsKICAgIHZhciBaZSA9ICJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSwKICAgICAgICB6ZSA9ICJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksCiAgICAgICAgJGUgPSAiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksCiAgICAgICAgcWUgPSBkZSwKICAgICAgICBCZSA9IGRlLAogICAgICAgIEplID0gZGU7CgogICAgZnVuY3Rpb24gUWUoKSB7CiAgICAgICAgZnVuY3Rpb24gZShlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiB0Lmxlbmd0aCAtIGUubGVuZ3RoCiAgICAgICAgfQogICAgICAgIGZvciAodmFyIHQsIG4sIHMsIGksIHIgPSBbXSwgYSA9IFtdLCBvID0gW10sIHUgPSBbXSwgbCA9IDA7IGwgPCA3OyBsKyspIHQgPSBfKFsyZTMsIDFdKS5kYXkobCksIG4gPSBtZSh0aGlzLndlZWtkYXlzTWluKHQsICIiKSksIHMgPSBtZSh0aGlzLndlZWtkYXlzU2hvcnQodCwgIiIpKSwgaSA9IG1lKHRoaXMud2Vla2RheXModCwgIiIpKSwgci5wdXNoKG4pLCBhLnB1c2gocyksIG8ucHVzaChpKSwgdS5wdXNoKG4pLCB1LnB1c2gocyksIHUucHVzaChpKTsKICAgICAgICByLnNvcnQoZSksIGEuc29ydChlKSwgby5zb3J0KGUpLCB1LnNvcnQoZSksIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBuZXcgUmVnRXhwKCJeKCIgKyB1LmpvaW4oInwiKSArICIpIiwgImkiKSwgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleCwgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXgsIHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCJeKCIgKyBvLmpvaW4oInwiKSArICIpIiwgImkiKSwgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgiXigiICsgYS5qb2luKCJ8IikgKyAiKSIsICJpIiksIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCJeKCIgKyByLmpvaW4oInwiKSArICIpIiwgImkiKQogICAgfQoKICAgIGZ1bmN0aW9uIFhlKCkgewogICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMgogICAgfQoKICAgIGZ1bmN0aW9uIEtlKGUsIHQpIHsKICAgICAgICBDKGUsIDAsIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgdCkKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIGV0KGUsIHQpIHsKICAgICAgICByZXR1cm4gdC5fbWVyaWRpZW1QYXJzZQogICAgfQogICAgQygiSCIsIFsiSEgiLCAyXSwgMCwgImhvdXIiKSwgQygiaCIsIFsiaGgiLCAyXSwgMCwgWGUpLCBDKCJrIiwgWyJrayIsIDJdLCAwLCBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0CiAgICB9KSwgQygiaG1tIiwgMCwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICIiICsgWGUuYXBwbHkodGhpcykgKyBUKHRoaXMubWludXRlcygpLCAyKQogICAgfSksIEMoImhtbXNzIiwgMCwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICIiICsgWGUuYXBwbHkodGhpcykgKyBUKHRoaXMubWludXRlcygpLCAyKSArIFQodGhpcy5zZWNvbmRzKCksIDIpCiAgICB9KSwgQygiSG1tIiwgMCwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICIiICsgdGhpcy5ob3VycygpICsgVCh0aGlzLm1pbnV0ZXMoKSwgMikKICAgIH0pLCBDKCJIbW1zcyIsIDAsIDAsIGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiAiIiArIHRoaXMuaG91cnMoKSArIFQodGhpcy5taW51dGVzKCksIDIpICsgVCh0aGlzLnNlY29uZHMoKSwgMikKICAgIH0pLCBLZSgiYSIsICEwKSwgS2UoIkEiLCAhMSksIEwoImhvdXIiLCAiaCIpLCBBKCJob3VyIiwgMTMpLCBjZSgiYSIsIGV0KSwgY2UoIkEiLCBldCksIGNlKCJIIiwgdGUpLCBjZSgiaCIsIHRlKSwgY2UoImsiLCB0ZSksIGNlKCJISCIsIHRlLCBRKSwgY2UoImhoIiwgdGUsIFEpLCBjZSgia2siLCB0ZSwgUSksIGNlKCJobW0iLCBuZSksIGNlKCJobW1zcyIsIHNlKSwgY2UoIkhtbSIsIG5lKSwgY2UoIkhtbXNzIiwgc2UpLCB5ZShbIkgiLCAiSEgiXSwgTWUpLCB5ZShbImsiLCAia2siXSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzID0gWihlKTsKICAgICAgICB0W01lXSA9IDI0ID09PSBzID8gMCA6IHMKICAgIH0pLCB5ZShbImEiLCAiQSJdLCBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgbi5faXNQbSA9IG4uX2xvY2FsZS5pc1BNKGUpLCBuLl9tZXJpZGllbSA9IGUKICAgIH0pLCB5ZShbImgiLCAiaGgiXSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHRbTWVdID0gWihlKSwgeShuKS5iaWdIb3VyID0gITAKICAgIH0pLCB5ZSgiaG1tIiwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzID0gZS5sZW5ndGggLSAyOwogICAgICAgIHRbTWVdID0gWihlLnN1YnN0cigwLCBzKSksIHRbRGVdID0gWihlLnN1YnN0cihzKSksIHkobikuYmlnSG91ciA9ICEwCiAgICB9KSwgeWUoImhtbXNzIiwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzID0gZS5sZW5ndGggLSA0LAogICAgICAgICAgICBpID0gZS5sZW5ndGggLSAyOwogICAgICAgIHRbTWVdID0gWihlLnN1YnN0cigwLCBzKSksIHRbRGVdID0gWihlLnN1YnN0cihzLCAyKSksIHRbU2VdID0gWihlLnN1YnN0cihpKSksIHkobikuYmlnSG91ciA9ICEwCiAgICB9KSwgeWUoIkhtbSIsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICB2YXIgcyA9IGUubGVuZ3RoIC0gMjsKICAgICAgICB0W01lXSA9IFooZS5zdWJzdHIoMCwgcykpLCB0W0RlXSA9IFooZS5zdWJzdHIocykpCiAgICB9KSwgeWUoIkhtbXNzIiwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzID0gZS5sZW5ndGggLSA0LAogICAgICAgICAgICBpID0gZS5sZW5ndGggLSAyOwogICAgICAgIHRbTWVdID0gWihlLnN1YnN0cigwLCBzKSksIHRbRGVdID0gWihlLnN1YnN0cihzLCAyKSksIHRbU2VdID0gWihlLnN1YnN0cihpKSkKICAgIH0pOwogICAgdmFyIHR0ID0geigiSG91cnMiLCAhMCk7CiAgICB2YXIgbnQsIHN0ID0gewogICAgICAgICAgICBjYWxlbmRhcjogewogICAgICAgICAgICAgICAgc2FtZURheTogIltUb2RheSBhdF0gTFQiLAogICAgICAgICAgICAgICAgbmV4dERheTogIltUb21vcnJvdyBhdF0gTFQiLAogICAgICAgICAgICAgICAgbmV4dFdlZWs6ICJkZGRkIFthdF0gTFQiLAogICAgICAgICAgICAgICAgbGFzdERheTogIltZZXN0ZXJkYXkgYXRdIExUIiwKICAgICAgICAgICAgICAgIGxhc3RXZWVrOiAiW0xhc3RdIGRkZGQgW2F0XSBMVCIsCiAgICAgICAgICAgICAgICBzYW1lRWxzZTogIkwiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7CiAgICAgICAgICAgICAgICBMVFM6ICJoOm1tOnNzIEEiLAogICAgICAgICAgICAgICAgTFQ6ICJoOm1tIEEiLAogICAgICAgICAgICAgICAgTDogIk1NL0REL1lZWVkiLAogICAgICAgICAgICAgICAgTEw6ICJNTU1NIEQsIFlZWVkiLAogICAgICAgICAgICAgICAgTExMOiAiTU1NTSBELCBZWVlZIGg6bW0gQSIsCiAgICAgICAgICAgICAgICBMTExMOiAiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW52YWxpZERhdGU6ICJJbnZhbGlkIGRhdGUiLAogICAgICAgICAgICBvcmRpbmFsOiAiJWQiLAogICAgICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXGR7MSwyfS8sCiAgICAgICAgICAgIHJlbGF0aXZlVGltZTogewogICAgICAgICAgICAgICAgZnV0dXJlOiAiaW4gJXMiLAogICAgICAgICAgICAgICAgcGFzdDogIiVzIGFnbyIsCiAgICAgICAgICAgICAgICBzOiAiYSBmZXcgc2Vjb25kcyIsCiAgICAgICAgICAgICAgICBzczogIiVkIHNlY29uZHMiLAogICAgICAgICAgICAgICAgbTogImEgbWludXRlIiwKICAgICAgICAgICAgICAgIG1tOiAiJWQgbWludXRlcyIsCiAgICAgICAgICAgICAgICBoOiAiYW4gaG91ciIsCiAgICAgICAgICAgICAgICBoaDogIiVkIGhvdXJzIiwKICAgICAgICAgICAgICAgIGQ6ICJhIGRheSIsCiAgICAgICAgICAgICAgICBkZDogIiVkIGRheXMiLAogICAgICAgICAgICAgICAgdzogImEgd2VlayIsCiAgICAgICAgICAgICAgICB3dzogIiVkIHdlZWtzIiwKICAgICAgICAgICAgICAgIE06ICJhIG1vbnRoIiwKICAgICAgICAgICAgICAgIE1NOiAiJWQgbW9udGhzIiwKICAgICAgICAgICAgICAgIHk6ICJhIHllYXIiLAogICAgICAgICAgICAgICAgeXk6ICIlZCB5ZWFycyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbW9udGhzOiBUZSwKICAgICAgICAgICAgbW9udGhzU2hvcnQ6IE5lLAogICAgICAgICAgICB3ZWVrOiB7CiAgICAgICAgICAgICAgICBkb3c6IDAsCiAgICAgICAgICAgICAgICBkb3k6IDYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgd2Vla2RheXM6IFplLAogICAgICAgICAgICB3ZWVrZGF5c01pbjogJGUsCiAgICAgICAgICAgIHdlZWtkYXlzU2hvcnQ6IHplLAogICAgICAgICAgICBtZXJpZGllbVBhcnNlOiAvW2FwXVwuP20/XC4/L2kKICAgICAgICB9LAogICAgICAgIGl0ID0ge30sCiAgICAgICAgcnQgPSB7fTsKCiAgICBmdW5jdGlvbiBhdChlKSB7CiAgICAgICAgcmV0dXJuIGUgPyBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsICItIikgOiBlCiAgICB9CgogICAgZnVuY3Rpb24gb3QoZSkgewogICAgICAgIGZvciAodmFyIHQsIG4sIHMsIGksIHIgPSAwOyByIDwgZS5sZW5ndGg7KSB7CiAgICAgICAgICAgIGZvciAodCA9IChpID0gYXQoZVtyXSkuc3BsaXQoIi0iKSkubGVuZ3RoLCBuID0gKG4gPSBhdChlW3IgKyAxXSkpID8gbi5zcGxpdCgiLSIpIDogbnVsbDsgMCA8IHQ7KSB7CiAgICAgICAgICAgICAgICBpZiAocyA9IHV0KGkuc2xpY2UoMCwgdCkuam9pbigiLSIpKSkgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBpZiAobiAmJiBuLmxlbmd0aCA+PSB0ICYmIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IE1hdGgubWluKGUubGVuZ3RoLCB0Lmxlbmd0aCksIHMgPSAwOyBzIDwgbjsgcyArPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVbc10gIT09IHRbc10pIHJldHVybiBzOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICAgICAgICAgICAgIH0oaSwgbikgPj0gdCAtIDEpIGJyZWFrOwogICAgICAgICAgICAgICAgdC0tCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcisrCiAgICAgICAgfQogICAgICAgIHJldHVybiBudAogICAgfQoKICAgIGZ1bmN0aW9uIHV0KHQpIHsKICAgICAgICB2YXIgZTsKICAgICAgICBpZiAodm9pZCAwID09PSBpdFt0XSAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlICYmIG1vZHVsZSAmJiBtb2R1bGUuZXhwb3J0cykgdHJ5IHsKICAgICAgICAgICAgZSA9IG50Ll9hYmJyLCByZXF1aXJlKCIuL2xvY2FsZS8iICsgdCksIGx0KGUpCiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBpdFt0XSA9IG51bGwKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGl0W3RdCiAgICB9CgogICAgZnVuY3Rpb24gbHQoZSwgdCkgewogICAgICAgIHZhciBuOwogICAgICAgIHJldHVybiBlICYmICgobiA9IHIodCkgPyBkdChlKSA6IGh0KGUsIHQpKSA/IG50ID0gbiA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBjb25zb2xlICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLndhcm4oIkxvY2FsZSAiICsgZSArICIgbm90IGZvdW5kLiBEaWQgeW91IGZvcmdldCB0byBsb2FkIGl0PyIpKSwgbnQuX2FiYnIKICAgIH0KCiAgICBmdW5jdGlvbiBodChlLCB0KSB7CiAgICAgICAgaWYgKG51bGwgPT09IHQpIHJldHVybiBkZWxldGUgaXRbZV0sIG51bGw7CiAgICAgICAgdmFyIG4sIHMgPSBzdDsKICAgICAgICBpZiAodC5hYmJyID0gZSwgbnVsbCAhPSBpdFtlXSkgWSgiZGVmaW5lTG9jYWxlT3ZlcnJpZGUiLCAidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksIHMgPSBpdFtlXS5fY29uZmlnOwogICAgICAgIGVsc2UgaWYgKG51bGwgIT0gdC5wYXJlbnRMb2NhbGUpCiAgICAgICAgICAgIGlmIChudWxsICE9IGl0W3QucGFyZW50TG9jYWxlXSkgcyA9IGl0W3QucGFyZW50TG9jYWxlXS5fY29uZmlnOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09IChuID0gdXQodC5wYXJlbnRMb2NhbGUpKSkgcmV0dXJuIHJ0W3QucGFyZW50TG9jYWxlXSB8fCAocnRbdC5wYXJlbnRMb2NhbGVdID0gW10pLCBydFt0LnBhcmVudExvY2FsZV0ucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogZSwKICAgICAgICAgICAgICAgICAgICBjb25maWc6IHQKICAgICAgICAgICAgICAgIH0pLCBudWxsOwogICAgICAgICAgICAgICAgcyA9IG4uX2NvbmZpZwogICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIGl0W2VdID0gbmV3IHgoYihzLCB0KSksIHJ0W2VdICYmIHJ0W2VdLmZvckVhY2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICBodChlLm5hbWUsIGUuY29uZmlnKQogICAgICAgIH0pLCBsdChlKSwgaXRbZV0KICAgIH0KCiAgICBmdW5jdGlvbiBkdChlKSB7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgaWYgKGUgJiYgZS5fbG9jYWxlICYmIGUuX2xvY2FsZS5fYWJiciAmJiAoZSA9IGUuX2xvY2FsZS5fYWJiciksICFlKSByZXR1cm4gbnQ7CiAgICAgICAgaWYgKCFvKGUpKSB7CiAgICAgICAgICAgIGlmICh0ID0gdXQoZSkpIHJldHVybiB0OwogICAgICAgICAgICBlID0gW2VdCiAgICAgICAgfQogICAgICAgIHJldHVybiBvdChlKQogICAgfQoKICAgIGZ1bmN0aW9uIGN0KGUpIHsKICAgICAgICB2YXIgdCwgbiA9IGUuX2E7CiAgICAgICAgcmV0dXJuIG4gJiYgLTIgPT09IHkoZSkub3ZlcmZsb3cgJiYgKHQgPSBuW3ZlXSA8IDAgfHwgMTEgPCBuW3ZlXSA/IHZlIDogbltrZV0gPCAxIHx8IG5ba2VdID4geGUobltwZV0sIG5bdmVdKSA/IGtlIDogbltNZV0gPCAwIHx8IDI0IDwgbltNZV0gfHwgMjQgPT09IG5bTWVdICYmICgwICE9PSBuW0RlXSB8fCAwICE9PSBuW1NlXSB8fCAwICE9PSBuW1llXSkgPyBNZSA6IG5bRGVdIDwgMCB8fCA1OSA8IG5bRGVdID8gRGUgOiBuW1NlXSA8IDAgfHwgNTkgPCBuW1NlXSA/IFNlIDogbltZZV0gPCAwIHx8IDk5OSA8IG5bWWVdID8gWWUgOiAtMSwgeShlKS5fb3ZlcmZsb3dEYXlPZlllYXIgJiYgKHQgPCBwZSB8fCBrZSA8IHQpICYmICh0ID0ga2UpLCB5KGUpLl9vdmVyZmxvd1dlZWtzICYmIC0xID09PSB0ICYmICh0ID0gT2UpLCB5KGUpLl9vdmVyZmxvd1dlZWtkYXkgJiYgLTEgPT09IHQgJiYgKHQgPSBiZSksIHkoZSkub3ZlcmZsb3cgPSB0KSwgZQogICAgfQogICAgdmFyIGZ0ID0gL15ccyooKD86WystXVxkezZ9fFxkezR9KS0oPzpcZFxkLVxkXGR8V1xkXGQtXGR8V1xkXGR8XGRcZFxkfFxkXGQpKSg/OihUfCApKFxkXGQoPzo6XGRcZCg/OjpcZFxkKD86Wy4sXVxkKyk/KT8pPykoWystXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLAogICAgICAgIG10ID0gL15ccyooKD86WystXVxkezZ9fFxkezR9KSg/OlxkXGRcZFxkfFdcZFxkXGR8V1xkXGR8XGRcZFxkfFxkXGR8KSkoPzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbKy1dXGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/JC8sCiAgICAgICAgX3QgPSAvWnxbKy1dXGRcZCg/Ojo/XGRcZCk/LywKICAgICAgICB5dCA9IFsKICAgICAgICAgICAgWyJZWVlZWVktTU0tREQiLCAvWystXVxkezZ9LVxkXGQtXGRcZC9dLAogICAgICAgICAgICBbIllZWVktTU0tREQiLCAvXGR7NH0tXGRcZC1cZFxkL10sCiAgICAgICAgICAgIFsiR0dHRy1bV11XVy1FIiwgL1xkezR9LVdcZFxkLVxkL10sCiAgICAgICAgICAgIFsiR0dHRy1bV11XVyIsIC9cZHs0fS1XXGRcZC8sICExXSwKICAgICAgICAgICAgWyJZWVlZLURERCIsIC9cZHs0fS1cZHszfS9dLAogICAgICAgICAgICBbIllZWVktTU0iLCAvXGR7NH0tXGRcZC8sICExXSwKICAgICAgICAgICAgWyJZWVlZWVlNTUREIiwgL1srLV1cZHsxMH0vXSwKICAgICAgICAgICAgWyJZWVlZTU1ERCIsIC9cZHs4fS9dLAogICAgICAgICAgICBbIkdHR0dbV11XV0UiLCAvXGR7NH1XXGR7M30vXSwKICAgICAgICAgICAgWyJHR0dHW1ddV1ciLCAvXGR7NH1XXGR7Mn0vLCAhMV0sCiAgICAgICAgICAgIFsiWVlZWURERCIsIC9cZHs3fS9dLAogICAgICAgICAgICBbIllZWVlNTSIsIC9cZHs2fS8sICExXSwKICAgICAgICAgICAgWyJZWVlZIiwgL1xkezR9LywgITFdCiAgICAgICAgXSwKICAgICAgICBndCA9IFsKICAgICAgICAgICAgWyJISDptbTpzcy5TU1NTIiwgL1xkXGQ6XGRcZDpcZFxkXC5cZCsvXSwKICAgICAgICAgICAgWyJISDptbTpzcyxTU1NTIiwgL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLAogICAgICAgICAgICBbIkhIOm1tOnNzIiwgL1xkXGQ6XGRcZDpcZFxkL10sCiAgICAgICAgICAgIFsiSEg6bW0iLCAvXGRcZDpcZFxkL10sCiAgICAgICAgICAgIFsiSEhtbXNzLlNTU1MiLCAvXGRcZFxkXGRcZFxkXC5cZCsvXSwKICAgICAgICAgICAgWyJISG1tc3MsU1NTUyIsIC9cZFxkXGRcZFxkXGQsXGQrL10sCiAgICAgICAgICAgIFsiSEhtbXNzIiwgL1xkXGRcZFxkXGRcZC9dLAogICAgICAgICAgICBbIkhIbW0iLCAvXGRcZFxkXGQvXSwKICAgICAgICAgICAgWyJISCIsIC9cZFxkL10KICAgICAgICBdLAogICAgICAgIHd0ID0gL15cLz9EYXRlXCgoLT9cZCspL2ksCiAgICAgICAgcHQgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9ccyk/KFxkezEsMn0pXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoXGR7Miw0fSlccyhcZFxkKTooXGRcZCkoPzo6KFxkXGQpKT9ccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxkezR9KSkkLywKICAgICAgICB2dCA9IHsKICAgICAgICAgICAgVVQ6IDAsCiAgICAgICAgICAgIEdNVDogMCwKICAgICAgICAgICAgRURUOiAtMjQwLAogICAgICAgICAgICBFU1Q6IC0zMDAsCiAgICAgICAgICAgIENEVDogLTMwMCwKICAgICAgICAgICAgQ1NUOiAtMzYwLAogICAgICAgICAgICBNRFQ6IC0zNjAsCiAgICAgICAgICAgIE1TVDogLTQyMCwKICAgICAgICAgICAgUERUOiAtNDIwLAogICAgICAgICAgICBQU1Q6IC00ODAKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIGt0KGUpIHsKICAgICAgICB2YXIgdCwgbiwgcywgaSwgciwgYSwgbyA9IGUuX2ksCiAgICAgICAgICAgIHUgPSBmdC5leGVjKG8pIHx8IG10LmV4ZWMobyk7CiAgICAgICAgaWYgKHUpIHsKICAgICAgICAgICAgZm9yICh5KGUpLmlzbyA9ICEwLCB0ID0gMCwgbiA9IHl0Lmxlbmd0aDsgdCA8IG47IHQrKykKICAgICAgICAgICAgICAgIGlmICh5dFt0XVsxXS5leGVjKHVbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IHl0W3RdWzBdLCBzID0gITEgIT09IHl0W3RdWzJdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChudWxsID09IGkpIHJldHVybiB2b2lkKGUuX2lzVmFsaWQgPSAhMSk7CiAgICAgICAgICAgIGlmICh1WzNdKSB7CiAgICAgICAgICAgICAgICBmb3IgKHQgPSAwLCBuID0gZ3QubGVuZ3RoOyB0IDwgbjsgdCsrKQogICAgICAgICAgICAgICAgICAgIGlmIChndFt0XVsxXS5leGVjKHVbM10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAodVsyXSB8fCAiICIpICsgZ3RbdF1bMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHZvaWQoZS5faXNWYWxpZCA9ICExKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghcyAmJiBudWxsICE9IHIpIHJldHVybiB2b2lkKGUuX2lzVmFsaWQgPSAhMSk7CiAgICAgICAgICAgIGlmICh1WzRdKSB7CiAgICAgICAgICAgICAgICBpZiAoIV90LmV4ZWModVs0XSkpIHJldHVybiB2b2lkKGUuX2lzVmFsaWQgPSAhMSk7CiAgICAgICAgICAgICAgICBhID0gIloiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5fZiA9IGkgKyAociB8fCAiIikgKyAoYSB8fCAiIiksIE90KGUpCiAgICAgICAgfSBlbHNlIGUuX2lzVmFsaWQgPSAhMQogICAgfQoKICAgIGZ1bmN0aW9uIE10KGUsIHQsIG4sIHMsIGksIHIpIHsKICAgICAgICB2YXIgYSA9IFtmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gcGFyc2VJbnQoZSwgMTApOyB7CiAgICAgICAgICAgICAgICBpZiAodCA8PSA0OSkgcmV0dXJuIDJlMyArIHQ7CiAgICAgICAgICAgICAgICBpZiAodCA8PSA5OTkpIHJldHVybiAxOTAwICsgdAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgfShlKSwgTmUuaW5kZXhPZih0KSwgcGFyc2VJbnQobiwgMTApLCBwYXJzZUludChzLCAxMCksIHBhcnNlSW50KGksIDEwKV07CiAgICAgICAgcmV0dXJuIHIgJiYgYS5wdXNoKHBhcnNlSW50KHIsIDEwKSksIGEKICAgIH0KCiAgICBmdW5jdGlvbiBEdChlKSB7CiAgICAgICAgdmFyIHQsIG4sIHMsIGksIHIgPSBwdC5leGVjKGUuX2kucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCAiICIpLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKS5yZXBsYWNlKC9eXHNccyovLCAiIikucmVwbGFjZSgvXHNccyokLywgIiIpKTsKICAgICAgICBpZiAocikgewogICAgICAgICAgICBpZiAodCA9IE10KHJbNF0sIHJbM10sIHJbMl0sIHJbNV0sIHJbNl0sIHJbN10pLCBuID0gclsxXSwgcyA9IHQsIGkgPSBlLCBuICYmIHplLmluZGV4T2YobikgIT09IG5ldyBEYXRlKHNbMF0sIHNbMV0sIHNbMl0pLmdldERheSgpICYmICh5KGkpLndlZWtkYXlNaXNtYXRjaCA9ICEwLCAhdm9pZChpLl9pc1ZhbGlkID0gITEpKSkgcmV0dXJuOwogICAgICAgICAgICBlLl9hID0gdCwgZS5fdHptID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICAgICAgaWYgKGUpIHJldHVybiB2dFtlXTsKICAgICAgICAgICAgICAgIGlmICh0KSByZXR1cm4gMDsKICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VJbnQobiwgMTApLAogICAgICAgICAgICAgICAgICAgIGkgPSBzICUgMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDYwICogKChzIC0gaSkgLyAxMDApICsgaQogICAgICAgICAgICB9KHJbOF0sIHJbOV0sIHJbMTBdKSwgZS5fZCA9IFZlLmFwcGx5KG51bGwsIGUuX2EpLCBlLl9kLnNldFVUQ01pbnV0ZXMoZS5fZC5nZXRVVENNaW51dGVzKCkgLSBlLl90em0pLCB5KGUpLnJmYzI4MjIgPSAhMAogICAgICAgIH0gZWxzZSBlLl9pc1ZhbGlkID0gITEKICAgIH0KCiAgICBmdW5jdGlvbiBTdChlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuIG51bGwgIT0gZSA/IGUgOiBudWxsICE9IHQgPyB0IDogbgogICAgfQoKICAgIGZ1bmN0aW9uIFl0KGUpIHsKICAgICAgICB2YXIgdCwgbiwgcywgaSwgciwgYSwgbywgdSA9IFtdOwogICAgICAgIGlmICghZS5fZCkgewogICAgICAgICAgICBmb3IgKGEgPSBlLCBvID0gbmV3IERhdGUoZi5ub3coKSksIHMgPSBhLl91c2VVVEMgPyBbby5nZXRVVENGdWxsWWVhcigpLCBvLmdldFVUQ01vbnRoKCksIG8uZ2V0VVRDRGF0ZSgpXSA6IFtvLmdldEZ1bGxZZWFyKCksIG8uZ2V0TW9udGgoKSwgby5nZXREYXRlKCldLCBlLl93ICYmIG51bGwgPT0gZS5fYVtrZV0gJiYgbnVsbCA9PSBlLl9hW3ZlXSAmJiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQsIG4sIHMsIGksIHIsIGEsIG8sIHUsIGw7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSAodCA9IGUuX3cpLkdHIHx8IG51bGwgIT0gdC5XIHx8IG51bGwgIT0gdC5FID8gKHIgPSAxLCBhID0gNCwgbiA9IFN0KHQuR0csIGUuX2FbcGVdLCBBZShUdCgpLCAxLCA0KS55ZWFyKSwgcyA9IFN0KHQuVywgMSksICgoaSA9IFN0KHQuRSwgMSkpIDwgMSB8fCA3IDwgaSkgJiYgKHUgPSAhMCkpIDogKHIgPSBlLl9sb2NhbGUuX3dlZWsuZG93LCBhID0gZS5fbG9jYWxlLl93ZWVrLmRveSwgbCA9IEFlKFR0KCksIHIsIGEpLCBuID0gU3QodC5nZywgZS5fYVtwZV0sIGwueWVhciksIHMgPSBTdCh0LncsIGwud2VlayksIG51bGwgIT0gdC5kID8gKChpID0gdC5kKSA8IDAgfHwgNiA8IGkpICYmICh1ID0gITApIDogbnVsbCAhPSB0LmUgPyAoaSA9IHQuZSArIHIsICh0LmUgPCAwIHx8IDYgPCB0LmUpICYmICh1ID0gITApKSA6IGkgPSByKTsKICAgICAgICAgICAgICAgICAgICBzIDwgMSB8fCBzID4gamUobiwgciwgYSkgPyB5KGUpLl9vdmVyZmxvd1dlZWtzID0gITAgOiBudWxsICE9IHUgPyB5KGUpLl9vdmVyZmxvd1dlZWtkYXkgPSAhMCA6IChvID0gRWUobiwgcywgaSwgciwgYSksIGUuX2FbcGVdID0gby55ZWFyLCBlLl9kYXlPZlllYXIgPSBvLmRheU9mWWVhcikKICAgICAgICAgICAgICAgIH0oZSksIG51bGwgIT0gZS5fZGF5T2ZZZWFyICYmIChyID0gU3QoZS5fYVtwZV0sIHNbcGVdKSwgKGUuX2RheU9mWWVhciA+IEZlKHIpIHx8IDAgPT09IGUuX2RheU9mWWVhcikgJiYgKHkoZSkuX292ZXJmbG93RGF5T2ZZZWFyID0gITApLCBuID0gVmUociwgMCwgZS5fZGF5T2ZZZWFyKSwgZS5fYVt2ZV0gPSBuLmdldFVUQ01vbnRoKCksIGUuX2Fba2VdID0gbi5nZXRVVENEYXRlKCkpLCB0ID0gMDsgdCA8IDMgJiYgbnVsbCA9PSBlLl9hW3RdOyArK3QpIGUuX2FbdF0gPSB1W3RdID0gc1t0XTsKICAgICAgICAgICAgZm9yICg7IHQgPCA3OyB0KyspIGUuX2FbdF0gPSB1W3RdID0gbnVsbCA9PSBlLl9hW3RdID8gMiA9PT0gdCA/IDEgOiAwIDogZS5fYVt0XTsKICAgICAgICAgICAgMjQgPT09IGUuX2FbTWVdICYmIDAgPT09IGUuX2FbRGVdICYmIDAgPT09IGUuX2FbU2VdICYmIDAgPT09IGUuX2FbWWVdICYmIChlLl9uZXh0RGF5ID0gITAsIGUuX2FbTWVdID0gMCksIGUuX2QgPSAoZS5fdXNlVVRDID8gVmUgOiBmdW5jdGlvbihlLCB0LCBuLCBzLCBpLCByLCBhKSB7CiAgICAgICAgICAgICAgICB2YXIgbzsKICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMTAwICYmIDAgPD0gZSA/IChvID0gbmV3IERhdGUoZSArIDQwMCwgdCwgbiwgcywgaSwgciwgYSksIGlzRmluaXRlKG8uZ2V0RnVsbFllYXIoKSkgJiYgby5zZXRGdWxsWWVhcihlKSkgOiBvID0gbmV3IERhdGUoZSwgdCwgbiwgcywgaSwgciwgYSksIG8KICAgICAgICAgICAgfSkuYXBwbHkobnVsbCwgdSksIGkgPSBlLl91c2VVVEMgPyBlLl9kLmdldFVUQ0RheSgpIDogZS5fZC5nZXREYXkoKSwgbnVsbCAhPSBlLl90em0gJiYgZS5fZC5zZXRVVENNaW51dGVzKGUuX2QuZ2V0VVRDTWludXRlcygpIC0gZS5fdHptKSwgZS5fbmV4dERheSAmJiAoZS5fYVtNZV0gPSAyNCksIGUuX3cgJiYgdm9pZCAwICE9PSBlLl93LmQgJiYgZS5fdy5kICE9PSBpICYmICh5KGUpLndlZWtkYXlNaXNtYXRjaCA9ICEwKQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBPdChlKSB7CiAgICAgICAgaWYgKGUuX2YgIT09IGYuSVNPXzg2MDEpCiAgICAgICAgICAgIGlmIChlLl9mICE9PSBmLlJGQ18yODIyKSB7CiAgICAgICAgICAgICAgICBlLl9hID0gW10sIHkoZSkuZW1wdHkgPSAhMDsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQsIG4sIHMsIGksIHIsIGEsIG8sIHUgPSAiIiArIGUuX2ksIGwgPSB1Lmxlbmd0aCwgaCA9IDAsIGQgPSBIKGUuX2YsIGUuX2xvY2FsZSkubWF0Y2goTikgfHwgW10sIGMgPSAwOyBjIDwgZC5sZW5ndGg7IGMrKykgbiA9IGRbY10sICh0ID0gKHUubWF0Y2goZmUobiwgZSkpIHx8IFtdKVswXSkgJiYgKDAgPCAocyA9IHUuc3Vic3RyKDAsIHUuaW5kZXhPZih0KSkpLmxlbmd0aCAmJiB5KGUpLnVudXNlZElucHV0LnB1c2gocyksIHUgPSB1LnNsaWNlKHUuaW5kZXhPZih0KSArIHQubGVuZ3RoKSwgaCArPSB0Lmxlbmd0aCksIFdbbl0gPyAodCA/IHkoZSkuZW1wdHkgPSAhMSA6IHkoZSkudW51c2VkVG9rZW5zLnB1c2gobiksIHIgPSBuLCBvID0gZSwgbnVsbCAhPSAoYSA9IHQpICYmIG0oX2UsIHIpICYmIF9lW3JdKGEsIG8uX2EsIG8sIHIpKSA6IGUuX3N0cmljdCAmJiAhdCAmJiB5KGUpLnVudXNlZFRva2Vucy5wdXNoKG4pOwogICAgICAgICAgICAgICAgeShlKS5jaGFyc0xlZnRPdmVyID0gbCAtIGgsIDAgPCB1Lmxlbmd0aCAmJiB5KGUpLnVudXNlZElucHV0LnB1c2godSksIGUuX2FbTWVdIDw9IDEyICYmICEwID09PSB5KGUpLmJpZ0hvdXIgJiYgMCA8IGUuX2FbTWVdICYmICh5KGUpLmJpZ0hvdXIgPSB2b2lkIDApLCB5KGUpLnBhcnNlZERhdGVQYXJ0cyA9IGUuX2Euc2xpY2UoMCksIHkoZSkubWVyaWRpZW0gPSBlLl9tZXJpZGllbSwgZS5fYVtNZV0gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHM7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gbikgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT0gZS5tZXJpZGllbUhvdXIgPyBlLm1lcmlkaWVtSG91cih0LCBuKSA6IChudWxsICE9IGUuaXNQTSAmJiAoKHMgPSBlLmlzUE0obikpICYmIHQgPCAxMiAmJiAodCArPSAxMiksIHMgfHwgMTIgIT09IHQgfHwgKHQgPSAwKSksIHQpCiAgICAgICAgICAgICAgICB9KGUuX2xvY2FsZSwgZS5fYVtNZV0sIGUuX21lcmlkaWVtKSwgbnVsbCAhPT0gKGkgPSB5KGUpLmVyYSkgJiYgKGUuX2FbcGVdID0gZS5fbG9jYWxlLmVyYXNDb252ZXJ0WWVhcihpLCBlLl9hW3BlXSkpLCBZdChlKSwgY3QoZSkKICAgICAgICAgICAgfSBlbHNlIER0KGUpOwogICAgICAgIGVsc2Uga3QoZSkKICAgIH0KCiAgICBmdW5jdGlvbiBidChlKSB7CiAgICAgICAgdmFyIHQsIG4sIHMgPSBlLl9pLAogICAgICAgICAgICBpID0gZS5fZjsKICAgICAgICByZXR1cm4gZS5fbG9jYWxlID0gZS5fbG9jYWxlIHx8IGR0KGUuX2wpLCBudWxsID09PSBzIHx8IHZvaWQgMCA9PT0gaSAmJiAiIiA9PT0gcyA/IHcoewogICAgICAgICAgICBudWxsSW5wdXQ6ICEwCiAgICAgICAgfSkgOiAoInN0cmluZyIgPT0gdHlwZW9mIHMgJiYgKGUuX2kgPSBzID0gZS5fbG9jYWxlLnByZXBhcnNlKHMpKSwgTShzKSA/IG5ldyBrKGN0KHMpKSA6IChhKHMpID8gZS5fZCA9IHMgOiBvKGkpID8gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdCwgbiwgcywgaSwgciwgYSwgbyA9ICExOwogICAgICAgICAgICBpZiAoMCA9PT0gZS5fZi5sZW5ndGgpIHJldHVybiB5KGUpLmludmFsaWRGb3JtYXQgPSAhMCwgZS5fZCA9IG5ldyBEYXRlKE5hTik7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlLl9mLmxlbmd0aDsgaSsrKSByID0gMCwgYSA9ICExLCB0ID0gdih7fSwgZSksIG51bGwgIT0gZS5fdXNlVVRDICYmICh0Ll91c2VVVEMgPSBlLl91c2VVVEMpLCB0Ll9mID0gZS5fZltpXSwgT3QodCksIGcodCkgJiYgKGEgPSAhMCksIHIgKz0geSh0KS5jaGFyc0xlZnRPdmVyLCByICs9IDEwICogeSh0KS51bnVzZWRUb2tlbnMubGVuZ3RoLCB5KHQpLnNjb3JlID0gciwgbyA/IHIgPCBzICYmIChzID0gciwgbiA9IHQpIDogKG51bGwgPT0gcyB8fCByIDwgcyB8fCBhKSAmJiAocyA9IHIsIG4gPSB0LCBhICYmIChvID0gITApKTsKICAgICAgICAgICAgYyhlLCBuIHx8IHQpCiAgICAgICAgfShlKSA6IGkgPyBPdChlKSA6IHIobiA9ICh0ID0gZSkuX2kpID8gdC5fZCA9IG5ldyBEYXRlKGYubm93KCkpIDogYShuKSA/IHQuX2QgPSBuZXcgRGF0ZShuLnZhbHVlT2YoKSkgOiAic3RyaW5nIiA9PSB0eXBlb2YgbiA/IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSB3dC5leGVjKGUuX2kpOwogICAgICAgICAgICBudWxsID09PSB0ID8gKGt0KGUpLCAhMSA9PT0gZS5faXNWYWxpZCAmJiAoZGVsZXRlIGUuX2lzVmFsaWQsIER0KGUpLCAhMSA9PT0gZS5faXNWYWxpZCAmJiAoZGVsZXRlIGUuX2lzVmFsaWQsIGUuX3N0cmljdCA/IGUuX2lzVmFsaWQgPSAhMSA6IGYuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soZSkpKSkgOiBlLl9kID0gbmV3IERhdGUoK3RbMV0pCiAgICAgICAgfSh0KSA6IG8obikgPyAodC5fYSA9IGQobi5zbGljZSgwKSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZSwgMTApCiAgICAgICAgfSksIFl0KHQpKSA6IHUobikgPyBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuOwogICAgICAgICAgICBlLl9kIHx8IChuID0gdm9pZCAwID09PSAodCA9IEcoZS5faSkpLmRheSA/IHQuZGF0ZSA6IHQuZGF5LCBlLl9hID0gZChbdC55ZWFyLCB0Lm1vbnRoLCBuLCB0LmhvdXIsIHQubWludXRlLCB0LnNlY29uZCwgdC5taWxsaXNlY29uZF0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIHBhcnNlSW50KGUsIDEwKQogICAgICAgICAgICB9KSwgWXQoZSkpCiAgICAgICAgfSh0KSA6IGgobikgPyB0Ll9kID0gbmV3IERhdGUobikgOiBmLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHQpLCBnKGUpIHx8IChlLl9kID0gbnVsbCksIGUpKQogICAgfQoKICAgIGZ1bmN0aW9uIHh0KGUsIHQsIG4sIHMsIGkpIHsKICAgICAgICB2YXIgciwgYSA9IHt9OwogICAgICAgIHJldHVybiAhMCAhPT0gdCAmJiAhMSAhPT0gdCB8fCAocyA9IHQsIHQgPSB2b2lkIDApLCAhMCAhPT0gbiAmJiAhMSAhPT0gbiB8fCAocyA9IG4sIG4gPSB2b2lkIDApLCAodShlKSAmJiBsKGUpIHx8IG8oZSkgJiYgMCA9PT0gZS5sZW5ndGgpICYmIChlID0gdm9pZCAwKSwgYS5faXNBTW9tZW50T2JqZWN0ID0gITAsIGEuX3VzZVVUQyA9IGEuX2lzVVRDID0gaSwgYS5fbCA9IG4sIGEuX2kgPSBlLCBhLl9mID0gdCwgYS5fc3RyaWN0ID0gcywgKHIgPSBuZXcgayhjdChidChhKSkpKS5fbmV4dERheSAmJiAoci5hZGQoMSwgImQiKSwgci5fbmV4dERheSA9IHZvaWQgMCksIHIKICAgIH0KCiAgICBmdW5jdGlvbiBUdChlLCB0LCBuLCBzKSB7CiAgICAgICAgcmV0dXJuIHh0KGUsIHQsIG4sIHMsICExKQogICAgfQogICAgZi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IG4oInZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2VkLiBQbGVhc2UgcmVmZXIgdG8gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9qcy1kYXRlLyBmb3IgbW9yZSBpbmZvLiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLl9kID0gbmV3IERhdGUoZS5faSArIChlLl91c2VVVEMgPyAiIFVUQyIgOiAiIikpCiAgICB9KSwgZi5JU09fODYwMSA9IGZ1bmN0aW9uKCkge30sIGYuUkZDXzI4MjIgPSBmdW5jdGlvbigpIHt9OwogICAgdmFyIE50ID0gbigibW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8iLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGUgPSBUdC5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgJiYgZS5pc1ZhbGlkKCkgPyBlIDwgdGhpcyA/IHRoaXMgOiBlIDogdygpCiAgICAgICAgfSksCiAgICAgICAgUHQgPSBuKCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IFR0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSAmJiBlLmlzVmFsaWQoKSA/IHRoaXMgPCBlID8gdGhpcyA6IGUgOiB3KCkKICAgICAgICB9KTsKCiAgICBmdW5jdGlvbiBSdChlLCB0KSB7CiAgICAgICAgdmFyIG4sIHM7CiAgICAgICAgaWYgKDEgPT09IHQubGVuZ3RoICYmIG8odFswXSkgJiYgKHQgPSB0WzBdKSwgIXQubGVuZ3RoKSByZXR1cm4gVHQoKTsKICAgICAgICBmb3IgKG4gPSB0WzBdLCBzID0gMTsgcyA8IHQubGVuZ3RoOyArK3MpIHRbc10uaXNWYWxpZCgpICYmICF0W3NdW2VdKG4pIHx8IChuID0gdFtzXSk7CiAgICAgICAgcmV0dXJuIG4KICAgIH0KICAgIHZhciBXdCA9IFsieWVhciIsICJxdWFydGVyIiwgIm1vbnRoIiwgIndlZWsiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAgIGZ1bmN0aW9uIEN0KGUpIHsKICAgICAgICB2YXIgdCA9IEcoZSksCiAgICAgICAgICAgIG4gPSB0LnllYXIgfHwgMCwKICAgICAgICAgICAgcyA9IHQucXVhcnRlciB8fCAwLAogICAgICAgICAgICBpID0gdC5tb250aCB8fCAwLAogICAgICAgICAgICByID0gdC53ZWVrIHx8IHQuaXNvV2VlayB8fCAwLAogICAgICAgICAgICBhID0gdC5kYXkgfHwgMCwKICAgICAgICAgICAgbyA9IHQuaG91ciB8fCAwLAogICAgICAgICAgICB1ID0gdC5taW51dGUgfHwgMCwKICAgICAgICAgICAgbCA9IHQuc2Vjb25kIHx8IDAsCiAgICAgICAgICAgIGggPSB0Lm1pbGxpc2Vjb25kIHx8IDA7CiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQsIG4sIHMgPSAhMTsKICAgICAgICAgICAgZm9yICh0IGluIGUpCiAgICAgICAgICAgICAgICBpZiAobShlLCB0KSAmJiAoLTEgPT09IHdlLmNhbGwoV3QsIHQpIHx8IG51bGwgIT0gZVt0XSAmJiBpc05hTihlW3RdKSkpIHJldHVybiAhMTsKICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IFd0Lmxlbmd0aDsgKytuKQogICAgICAgICAgICAgICAgaWYgKGVbV3Rbbl1dKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHJldHVybiAhMTsKICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGVbV3Rbbl1dKSAhPT0gWihlW1d0W25dXSkgJiYgKHMgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICEwCiAgICAgICAgfSh0KSwgdGhpcy5fbWlsbGlzZWNvbmRzID0gK2ggKyAxZTMgKiBsICsgNmU0ICogdSArIDFlMyAqIG8gKiA2MCAqIDYwLCB0aGlzLl9kYXlzID0gK2EgKyA3ICogciwgdGhpcy5fbW9udGhzID0gK2kgKyAzICogcyArIDEyICogbiwgdGhpcy5fZGF0YSA9IHt9LCB0aGlzLl9sb2NhbGUgPSBkdCgpLCB0aGlzLl9idWJibGUoKQogICAgfQoKICAgIGZ1bmN0aW9uIFV0KGUpIHsKICAgICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEN0CiAgICB9CgogICAgZnVuY3Rpb24gSHQoZSkgewogICAgICAgIHJldHVybiBlIDwgMCA/IC0xICogTWF0aC5yb3VuZCgtMSAqIGUpIDogTWF0aC5yb3VuZChlKQogICAgfQoKICAgIGZ1bmN0aW9uIEZ0KGUsIG4pIHsKICAgICAgICBDKGUsIDAsIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMudXRjT2Zmc2V0KCksCiAgICAgICAgICAgICAgICB0ID0gIisiOwogICAgICAgICAgICByZXR1cm4gZSA8IDAgJiYgKGUgPSAtZSwgdCA9ICItIiksIHQgKyBUKH5+KGUgLyA2MCksIDIpICsgbiArIFQofn5lICUgNjAsIDIpCiAgICAgICAgfSkKICAgIH0KICAgIEZ0KCJaIiwgIjoiKSwgRnQoIlpaIiwgIiIpLCBjZSgiWiIsIGhlKSwgY2UoIlpaIiwgaGUpLCB5ZShbIloiLCAiWloiXSwgZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIG4uX3VzZVVUQyA9ICEwLCBuLl90em0gPSBWdChoZSwgZSkKICAgIH0pOwogICAgdmFyIEx0ID0gLyhbXCtcLV18XGRcZCkvZ2k7CgogICAgZnVuY3Rpb24gVnQoZSwgdCkgewogICAgICAgIHZhciBuLCBzLCBpID0gKHQgfHwgIiIpLm1hdGNoKGUpOwogICAgICAgIHJldHVybiBudWxsID09PSBpID8gbnVsbCA6IDAgPT09IChzID0gNjAgKiAobiA9ICgoaVtpLmxlbmd0aCAtIDFdIHx8IFtdKSArICIiKS5tYXRjaChMdCkgfHwgWyItIiwgMCwgMF0pWzFdICsgWihuWzJdKSkgPyAwIDogIisiID09PSBuWzBdID8gcyA6IC1zCiAgICB9CgogICAgZnVuY3Rpb24gR3QoZSwgdCkgewogICAgICAgIHZhciBuLCBzOwogICAgICAgIHJldHVybiB0Ll9pc1VUQyA/IChuID0gdC5jbG9uZSgpLCBzID0gKE0oZSkgfHwgYShlKSA/IGUudmFsdWVPZigpIDogVHQoZSkudmFsdWVPZigpKSAtIG4udmFsdWVPZigpLCBuLl9kLnNldFRpbWUobi5fZC52YWx1ZU9mKCkgKyBzKSwgZi51cGRhdGVPZmZzZXQobiwgITEpLCBuKSA6IFR0KGUpLmxvY2FsKCkKICAgIH0KCiAgICBmdW5jdGlvbiBFdChlKSB7CiAgICAgICAgcmV0dXJuIC1NYXRoLnJvdW5kKGUuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSkKICAgIH0KCiAgICBmdW5jdGlvbiBBdCgpIHsKICAgICAgICByZXR1cm4gISF0aGlzLmlzVmFsaWQoKSAmJiAodGhpcy5faXNVVEMgJiYgMCA9PT0gdGhpcy5fb2Zmc2V0KQogICAgfQogICAgZi51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbigpIHt9OwogICAgdmFyIGp0ID0gL14oLXxcKyk/KD86KFxkKilbLiBdKT8oXGQrKTooXGQrKSg/OjooXGQrKShcLlxkKik/KT8kLywKICAgICAgICBJdCA9IC9eKC18XCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLzsKCiAgICBmdW5jdGlvbiBadChlLCB0KSB7CiAgICAgICAgdmFyIG4sIHMsIGksIHIgPSBlLAogICAgICAgICAgICBhID0gbnVsbDsKICAgICAgICByZXR1cm4gVXQoZSkgPyByID0gewogICAgICAgICAgICBtczogZS5fbWlsbGlzZWNvbmRzLAogICAgICAgICAgICBkOiBlLl9kYXlzLAogICAgICAgICAgICBNOiBlLl9tb250aHMKICAgICAgICB9IDogaChlKSB8fCAhaXNOYU4oK2UpID8gKHIgPSB7fSwgdCA/IHJbdF0gPSArZSA6IHIubWlsbGlzZWNvbmRzID0gK2UpIDogKGEgPSBqdC5leGVjKGUpKSA/IChuID0gIi0iID09PSBhWzFdID8gLTEgOiAxLCByID0gewogICAgICAgICAgICB5OiAwLAogICAgICAgICAgICBkOiBaKGFba2VdKSAqIG4sCiAgICAgICAgICAgIGg6IFooYVtNZV0pICogbiwKICAgICAgICAgICAgbTogWihhW0RlXSkgKiBuLAogICAgICAgICAgICBzOiBaKGFbU2VdKSAqIG4sCiAgICAgICAgICAgIG1zOiBaKEh0KDFlMyAqIGFbWWVdKSkgKiBuCiAgICAgICAgfSkgOiAoYSA9IEl0LmV4ZWMoZSkpID8gKG4gPSAiLSIgPT09IGFbMV0gPyAtMSA6IDEsIHIgPSB7CiAgICAgICAgICAgIHk6IHp0KGFbMl0sIG4pLAogICAgICAgICAgICBNOiB6dChhWzNdLCBuKSwKICAgICAgICAgICAgdzogenQoYVs0XSwgbiksCiAgICAgICAgICAgIGQ6IHp0KGFbNV0sIG4pLAogICAgICAgICAgICBoOiB6dChhWzZdLCBuKSwKICAgICAgICAgICAgbTogenQoYVs3XSwgbiksCiAgICAgICAgICAgIHM6IHp0KGFbOF0sIG4pCiAgICAgICAgfSkgOiBudWxsID09IHIgPyByID0ge30gOiAib2JqZWN0IiA9PSB0eXBlb2YgciAmJiAoImZyb20iIGluIHIgfHwgInRvIiBpbiByKSAmJiAoaSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdmFyIG47CiAgICAgICAgICAgIGlmICghZS5pc1ZhbGlkKCkgfHwgIXQuaXNWYWxpZCgpKSByZXR1cm4gewogICAgICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiAwLAogICAgICAgICAgICAgICAgbW9udGhzOiAwCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHQgPSBHdCh0LCBlKSwgZS5pc0JlZm9yZSh0KSA/IG4gPSAkdChlLCB0KSA6ICgobiA9ICR0KHQsIGUpKS5taWxsaXNlY29uZHMgPSAtbi5taWxsaXNlY29uZHMsIG4ubW9udGhzID0gLW4ubW9udGhzKTsKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICB9KFR0KHIuZnJvbSksIFR0KHIudG8pKSwgKHIgPSB7fSkubXMgPSBpLm1pbGxpc2Vjb25kcywgci5NID0gaS5tb250aHMpLCBzID0gbmV3IEN0KHIpLCBVdChlKSAmJiBtKGUsICJfbG9jYWxlIikgJiYgKHMuX2xvY2FsZSA9IGUuX2xvY2FsZSksIFV0KGUpICYmIG0oZSwgIl9pc1ZhbGlkIikgJiYgKHMuX2lzVmFsaWQgPSBlLl9pc1ZhbGlkKSwgcwogICAgfQoKICAgIGZ1bmN0aW9uIHp0KGUsIHQpIHsKICAgICAgICB2YXIgbiA9IGUgJiYgcGFyc2VGbG9hdChlLnJlcGxhY2UoIiwiLCAiLiIpKTsKICAgICAgICByZXR1cm4gKGlzTmFOKG4pID8gMCA6IG4pICogdAogICAgfQoKICAgIGZ1bmN0aW9uICR0KGUsIHQpIHsKICAgICAgICB2YXIgbiA9IHt9OwogICAgICAgIHJldHVybiBuLm1vbnRocyA9IHQubW9udGgoKSAtIGUubW9udGgoKSArIDEyICogKHQueWVhcigpIC0gZS55ZWFyKCkpLCBlLmNsb25lKCkuYWRkKG4ubW9udGhzLCAiTSIpLmlzQWZ0ZXIodCkgJiYgLS1uLm1vbnRocywgbi5taWxsaXNlY29uZHMgPSB0IC0gZS5jbG9uZSgpLmFkZChuLm1vbnRocywgIk0iKSwgbgogICAgfQoKICAgIGZ1bmN0aW9uIHF0KHMsIGkpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICB2YXIgbjsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09IHQgfHwgaXNOYU4oK3QpIHx8IChZKGksICJtb21lbnQoKS4iICsgaSArICIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuIiArIGkgKyAiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIpLCBuID0gZSwgZSA9IHQsIHQgPSBuKSwgQnQodGhpcywgWnQoZSwgdCksIHMpLCB0aGlzCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIEJ0KGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9IHQuX21pbGxpc2Vjb25kcywKICAgICAgICAgICAgciA9IEh0KHQuX2RheXMpLAogICAgICAgICAgICBhID0gSHQodC5fbW9udGhzKTsKICAgICAgICBlLmlzVmFsaWQoKSAmJiAocyA9IG51bGwgPT0gcyB8fCBzLCBhICYmIENlKGUsICQoZSwgIk1vbnRoIikgKyBhICogbiksIHIgJiYgcShlLCAiRGF0ZSIsICQoZSwgIkRhdGUiKSArIHIgKiBuKSwgaSAmJiBlLl9kLnNldFRpbWUoZS5fZC52YWx1ZU9mKCkgKyBpICogbiksIHMgJiYgZi51cGRhdGVPZmZzZXQoZSwgciB8fCBhKSkKICAgIH0KICAgIFp0LmZuID0gQ3QucHJvdG90eXBlLCBadC5pbnZhbGlkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIFp0KE5hTikKICAgIH07CiAgICB2YXIgSnQgPSBxdCgxLCAiYWRkIiksCiAgICAgICAgUXQgPSBxdCgtMSwgInN1YnRyYWN0Iik7CgogICAgZnVuY3Rpb24gWHQoZSkgewogICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSB8fCBlIGluc3RhbmNlb2YgU3RyaW5nCiAgICB9CgogICAgZnVuY3Rpb24gS3QoZSkgewogICAgICAgIHJldHVybiBNKGUpIHx8IGEoZSkgfHwgWHQoZSkgfHwgaChlKSB8fCBmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBlID0gbyh0KSwKICAgICAgICAgICAgICAgIG4gPSAhMTsKICAgICAgICAgICAgZSAmJiAobiA9IDAgPT09IHQuZmlsdGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAhaChlKSAmJiBYdCh0KQogICAgICAgICAgICB9KS5sZW5ndGgpOwogICAgICAgICAgICByZXR1cm4gZSAmJiBuCiAgICAgICAgfShlKSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0LCBuLCBzID0gdShlKSAmJiAhbChlKSwKICAgICAgICAgICAgICAgIGkgPSAhMSwKICAgICAgICAgICAgICAgIHIgPSBbInllYXJzIiwgInllYXIiLCAieSIsICJtb250aHMiLCAibW9udGgiLCAiTSIsICJkYXlzIiwgImRheSIsICJkIiwgImRhdGVzIiwgImRhdGUiLCAiRCIsICJob3VycyIsICJob3VyIiwgImgiLCAibWludXRlcyIsICJtaW51dGUiLCAibSIsICJzZWNvbmRzIiwgInNlY29uZCIsICJzIiwgIm1pbGxpc2Vjb25kcyIsICJtaWxsaXNlY29uZCIsICJtcyJdOwogICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgci5sZW5ndGg7IHQgKz0gMSkgbiA9IHJbdF0sIGkgPSBpIHx8IG0oZSwgbik7CiAgICAgICAgICAgIHJldHVybiBzICYmIGkKICAgICAgICB9KGUpIHx8IG51bGwgPT0gZQogICAgfQoKICAgIGZ1bmN0aW9uIGVuKGUsIHQpIHsKICAgICAgICBpZiAoZS5kYXRlKCkgPCB0LmRhdGUoKSkgcmV0dXJuIC1lbih0LCBlKTsKICAgICAgICB2YXIgbiA9IDEyICogKHQueWVhcigpIC0gZS55ZWFyKCkpICsgKHQubW9udGgoKSAtIGUubW9udGgoKSksCiAgICAgICAgICAgIHMgPSBlLmNsb25lKCkuYWRkKG4sICJtb250aHMiKSwKICAgICAgICAgICAgaSA9IHQgLSBzIDwgMCA/ICh0IC0gcykgLyAocyAtIGUuY2xvbmUoKS5hZGQobiAtIDEsICJtb250aHMiKSkgOiAodCAtIHMpIC8gKGUuY2xvbmUoKS5hZGQoMSArIG4sICJtb250aHMiKSAtIHMpOwogICAgICAgIHJldHVybiAtKG4gKyBpKSB8fCAwCiAgICB9CgogICAgZnVuY3Rpb24gdG4oZSkgewogICAgICAgIHZhciB0OwogICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyB0aGlzLl9sb2NhbGUuX2FiYnIgOiAobnVsbCAhPSAodCA9IGR0KGUpKSAmJiAodGhpcy5fbG9jYWxlID0gdCksIHRoaXMpCiAgICB9CiAgICBmLmRlZmF1bHRGb3JtYXQgPSAiWVlZWS1NTS1ERFRISDptbTpzc1oiLCBmLmRlZmF1bHRGb3JtYXRVdGMgPSAiWVlZWS1NTS1ERFRISDptbTpzc1taXSI7CiAgICB2YXIgbm4gPSBuKCJtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gdGhpcy5sb2NhbGVEYXRhKCkgOiB0aGlzLmxvY2FsZShlKQogICAgfSk7CgogICAgZnVuY3Rpb24gc24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZQogICAgfQogICAgdmFyIHJuID0gMTI2MjI3ODA4ZTU7CgogICAgZnVuY3Rpb24gYW4oZSwgdCkgewogICAgICAgIHJldHVybiAoZSAlIHQgKyB0KSAlIHQKICAgIH0KCiAgICBmdW5jdGlvbiBvbihlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuIGUgPCAxMDAgJiYgMCA8PSBlID8gbmV3IERhdGUoZSArIDQwMCwgdCwgbikgLSBybiA6IG5ldyBEYXRlKGUsIHQsIG4pLnZhbHVlT2YoKQogICAgfQoKICAgIGZ1bmN0aW9uIHVuKGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gZSA8IDEwMCAmJiAwIDw9IGUgPyBEYXRlLlVUQyhlICsgNDAwLCB0LCBuKSAtIHJuIDogRGF0ZS5VVEMoZSwgdCwgbikKICAgIH0KCiAgICBmdW5jdGlvbiBsbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHQuZXJhc0FiYnJSZWdleChlKQogICAgfQoKICAgIGZ1bmN0aW9uIGhuKCkgewogICAgICAgIGZvciAodmFyIGUgPSBbXSwgdCA9IFtdLCBuID0gW10sIHMgPSBbXSwgaSA9IHRoaXMuZXJhcygpLCByID0gMCwgYSA9IGkubGVuZ3RoOyByIDwgYTsgKytyKSB0LnB1c2gobWUoaVtyXS5uYW1lKSksIGUucHVzaChtZShpW3JdLmFiYnIpKSwgbi5wdXNoKG1lKGlbcl0ubmFycm93KSksIHMucHVzaChtZShpW3JdLm5hbWUpKSwgcy5wdXNoKG1lKGlbcl0uYWJicikpLCBzLnB1c2gobWUoaVtyXS5uYXJyb3cpKTsKICAgICAgICB0aGlzLl9lcmFzUmVnZXggPSBuZXcgUmVnRXhwKCJeKCIgKyBzLmpvaW4oInwiKSArICIpIiwgImkiKSwgdGhpcy5fZXJhc05hbWVSZWdleCA9IG5ldyBSZWdFeHAoIl4oIiArIHQuam9pbigifCIpICsgIikiLCAiaSIpLCB0aGlzLl9lcmFzQWJiclJlZ2V4ID0gbmV3IFJlZ0V4cCgiXigiICsgZS5qb2luKCJ8IikgKyAiKSIsICJpIiksIHRoaXMuX2VyYXNOYXJyb3dSZWdleCA9IG5ldyBSZWdFeHAoIl4oIiArIG4uam9pbigifCIpICsgIikiLCAiaSIpCiAgICB9CgogICAgZnVuY3Rpb24gZG4oZSwgdCkgewogICAgICAgIEMoMCwgW2UsIGUubGVuZ3RoXSwgMCwgdCkKICAgIH0KCiAgICBmdW5jdGlvbiBjbihlLCB0LCBuLCBzLCBpKSB7CiAgICAgICAgdmFyIHI7CiAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IEFlKHRoaXMsIHMsIGkpLnllYXIgOiAoKHIgPSBqZShlLCBzLCBpKSkgPCB0ICYmICh0ID0gciksIGZ1bmN0aW9uKGUsIHQsIG4sIHMsIGkpIHsKICAgICAgICAgICAgdmFyIHIgPSBFZShlLCB0LCBuLCBzLCBpKSwKICAgICAgICAgICAgICAgIGEgPSBWZShyLnllYXIsIDAsIHIuZGF5T2ZZZWFyKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMueWVhcihhLmdldFVUQ0Z1bGxZZWFyKCkpLCB0aGlzLm1vbnRoKGEuZ2V0VVRDTW9udGgoKSksIHRoaXMuZGF0ZShhLmdldFVUQ0RhdGUoKSksIHRoaXMKICAgICAgICB9LmNhbGwodGhpcywgZSwgdCwgbiwgcywgaSkpCiAgICB9CiAgICBDKCJOIiwgMCwgMCwgImVyYUFiYnIiKSwgQygiTk4iLCAwLCAwLCAiZXJhQWJiciIpLCBDKCJOTk4iLCAwLCAwLCAiZXJhQWJiciIpLCBDKCJOTk5OIiwgMCwgMCwgImVyYU5hbWUiKSwgQygiTk5OTk4iLCAwLCAwLCAiZXJhTmFycm93IiksIEMoInkiLCBbInkiLCAxXSwgInlvIiwgImVyYVllYXIiKSwgQygieSIsIFsieXkiLCAyXSwgMCwgImVyYVllYXIiKSwgQygieSIsIFsieXl5IiwgM10sIDAsICJlcmFZZWFyIiksIEMoInkiLCBbInl5eXkiLCA0XSwgMCwgImVyYVllYXIiKSwgY2UoIk4iLCBsbiksIGNlKCJOTiIsIGxuKSwgY2UoIk5OTiIsIGxuKSwgY2UoIk5OTk4iLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHQuZXJhc05hbWVSZWdleChlKQogICAgfSksIGNlKCJOTk5OTiIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC5lcmFzTmFycm93UmVnZXgoZSkKICAgIH0pLCB5ZShbIk4iLCAiTk4iLCAiTk5OIiwgIk5OTk4iLCAiTk5OTk4iXSwgZnVuY3Rpb24oZSwgdCwgbiwgcykgewogICAgICAgIHZhciBpID0gbi5fbG9jYWxlLmVyYXNQYXJzZShlLCBzLCBuLl9zdHJpY3QpOwogICAgICAgIGkgPyB5KG4pLmVyYSA9IGkgOiB5KG4pLmludmFsaWRFcmEgPSBlCiAgICB9KSwgY2UoInkiLCBvZSksIGNlKCJ5eSIsIG9lKSwgY2UoInl5eSIsIG9lKSwgY2UoInl5eXkiLCBvZSksIGNlKCJ5byIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdC5fZXJhWWVhck9yZGluYWxSZWdleCB8fCBvZQogICAgfSksIHllKFsieSIsICJ5eSIsICJ5eXkiLCAieXl5eSJdLCBwZSksIHllKFsieW8iXSwgZnVuY3Rpb24oZSwgdCwgbiwgcykgewogICAgICAgIHZhciBpOwogICAgICAgIG4uX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCAmJiAoaSA9IGUubWF0Y2gobi5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4KSksIG4uX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlID8gdFtwZV0gPSBuLl9sb2NhbGUuZXJhWWVhck9yZGluYWxQYXJzZShlLCBpKSA6IHRbcGVdID0gcGFyc2VJbnQoZSwgMTApCiAgICB9KSwgQygwLCBbImdnIiwgMl0sIDAsIGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLndlZWtZZWFyKCkgJSAxMDAKICAgIH0pLCBDKDAsIFsiR0ciLCAyXSwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSAlIDEwMAogICAgfSksIGRuKCJnZ2dnIiwgIndlZWtZZWFyIiksIGRuKCJnZ2dnZyIsICJ3ZWVrWWVhciIpLCBkbigiR0dHRyIsICJpc29XZWVrWWVhciIpLCBkbigiR0dHR0ciLCAiaXNvV2Vla1llYXIiKSwgTCgid2Vla1llYXIiLCAiZ2ciKSwgTCgiaXNvV2Vla1llYXIiLCAiR0ciKSwgQSgid2Vla1llYXIiLCAxKSwgQSgiaXNvV2Vla1llYXIiLCAxKSwgY2UoIkciLCB1ZSksIGNlKCJnIiwgdWUpLCBjZSgiR0ciLCB0ZSwgUSksIGNlKCJnZyIsIHRlLCBRKSwgY2UoIkdHR0ciLCByZSwgSyksIGNlKCJnZ2dnIiwgcmUsIEspLCBjZSgiR0dHR0ciLCBhZSwgZWUpLCBjZSgiZ2dnZ2ciLCBhZSwgZWUpLCBnZShbImdnZ2ciLCAiZ2dnZ2ciLCAiR0dHRyIsICJHR0dHRyJdLCBmdW5jdGlvbihlLCB0LCBuLCBzKSB7CiAgICAgICAgdFtzLnN1YnN0cigwLCAyKV0gPSBaKGUpCiAgICB9KSwgZ2UoWyJnZyIsICJHRyJdLCBmdW5jdGlvbihlLCB0LCBuLCBzKSB7CiAgICAgICAgdFtzXSA9IGYucGFyc2VUd29EaWdpdFllYXIoZSkKICAgIH0pLCBDKCJRIiwgMCwgIlFvIiwgInF1YXJ0ZXIiKSwgTCgicXVhcnRlciIsICJRIiksIEEoInF1YXJ0ZXIiLCA3KSwgY2UoIlEiLCBKKSwgeWUoIlEiLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdFt2ZV0gPSAzICogKFooZSkgLSAxKQogICAgfSksIEMoIkQiLCBbIkREIiwgMl0sICJEbyIsICJkYXRlIiksIEwoImRhdGUiLCAiRCIpLCBBKCJkYXRlIiwgOSksIGNlKCJEIiwgdGUpLCBjZSgiREQiLCB0ZSwgUSksIGNlKCJEbyIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gZSA/IHQuX2RheU9mTW9udGhPcmRpbmFsUGFyc2UgfHwgdC5fb3JkaW5hbFBhcnNlIDogdC5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQKICAgIH0pLCB5ZShbIkQiLCAiREQiXSwga2UpLCB5ZSgiRG8iLCBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdFtrZV0gPSBaKGUubWF0Y2godGUpWzBdKQogICAgfSk7CiAgICB2YXIgZm4gPSB6KCJEYXRlIiwgITApOwogICAgQygiREREIiwgWyJEREREIiwgM10sICJERERvIiwgImRheU9mWWVhciIpLCBMKCJkYXlPZlllYXIiLCAiREREIiksIEEoImRheU9mWWVhciIsIDQpLCBjZSgiREREIiwgaWUpLCBjZSgiRERERCIsIFgpLCB5ZShbIkRERCIsICJEREREIl0sIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICBuLl9kYXlPZlllYXIgPSBaKGUpCiAgICB9KSwgQygibSIsIFsibW0iLCAyXSwgMCwgIm1pbnV0ZSIpLCBMKCJtaW51dGUiLCAibSIpLCBBKCJtaW51dGUiLCAxNCksIGNlKCJtIiwgdGUpLCBjZSgibW0iLCB0ZSwgUSksIHllKFsibSIsICJtbSJdLCBEZSk7CiAgICB2YXIgbW4gPSB6KCJNaW51dGVzIiwgITEpOwogICAgQygicyIsIFsic3MiLCAyXSwgMCwgInNlY29uZCIpLCBMKCJzZWNvbmQiLCAicyIpLCBBKCJzZWNvbmQiLCAxNSksIGNlKCJzIiwgdGUpLCBjZSgic3MiLCB0ZSwgUSksIHllKFsicyIsICJzcyJdLCBTZSk7CiAgICB2YXIgX24sIHluLCBnbiA9IHooIlNlY29uZHMiLCAhMSk7CiAgICBmb3IgKEMoIlMiLCAwLCAwLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCkKICAgICAgICB9KSwgQygwLCBbIlNTIiwgMl0sIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApCiAgICAgICAgfSksIEMoMCwgWyJTU1MiLCAzXSwgMCwgIm1pbGxpc2Vjb25kIiksIEMoMCwgWyJTU1NTIiwgNF0sIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gMTAgKiB0aGlzLm1pbGxpc2Vjb25kKCkKICAgICAgICB9KSwgQygwLCBbIlNTU1NTIiwgNV0sIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gMTAwICogdGhpcy5taWxsaXNlY29uZCgpCiAgICAgICAgfSksIEMoMCwgWyJTU1NTU1MiLCA2XSwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAxZTMgKiB0aGlzLm1pbGxpc2Vjb25kKCkKICAgICAgICB9KSwgQygwLCBbIlNTU1NTU1MiLCA3XSwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAxZTQgKiB0aGlzLm1pbGxpc2Vjb25kKCkKICAgICAgICB9KSwgQygwLCBbIlNTU1NTU1NTIiwgOF0sIDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gMWU1ICogdGhpcy5taWxsaXNlY29uZCgpCiAgICAgICAgfSksIEMoMCwgWyJTU1NTU1NTU1MiLCA5XSwgMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAxZTYgKiB0aGlzLm1pbGxpc2Vjb25kKCkKICAgICAgICB9KSwgTCgibWlsbGlzZWNvbmQiLCAibXMiKSwgQSgibWlsbGlzZWNvbmQiLCAxNiksIGNlKCJTIiwgaWUsIEopLCBjZSgiU1MiLCBpZSwgUSksIGNlKCJTU1MiLCBpZSwgWCksIF9uID0gIlNTU1MiOyBfbi5sZW5ndGggPD0gOTsgX24gKz0gIlMiKSBjZShfbiwgb2UpOwoKICAgIGZ1bmN0aW9uIHduKGUsIHQpIHsKICAgICAgICB0W1llXSA9IFooMWUzICogKCIwLiIgKyBlKSkKICAgIH0KICAgIGZvciAoX24gPSAiUyI7IF9uLmxlbmd0aCA8PSA5OyBfbiArPSAiUyIpIHllKF9uLCB3bik7CiAgICB5biA9IHooIk1pbGxpc2Vjb25kcyIsICExKSwgQygieiIsIDAsIDAsICJ6b25lQWJiciIpLCBDKCJ6eiIsIDAsIDAsICJ6b25lTmFtZSIpOwogICAgdmFyIHBuID0gay5wcm90b3R5cGU7CgogICAgZnVuY3Rpb24gdm4oZSkgewogICAgICAgIHJldHVybiBlCiAgICB9CiAgICBwbi5hZGQgPSBKdCwgcG4uY2FsZW5kYXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgMSA9PT0gYXJndW1lbnRzLmxlbmd0aCAmJiAoYXJndW1lbnRzWzBdID8gS3QoYXJndW1lbnRzWzBdKSA/IChlID0gYXJndW1lbnRzWzBdLCB0ID0gdm9pZCAwKSA6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdCA9IHUoZSkgJiYgIWwoZSksIG4gPSAhMSwgcyA9IFsic2FtZURheSIsICJuZXh0RGF5IiwgImxhc3REYXkiLCAibmV4dFdlZWsiLCAibGFzdFdlZWsiLCAic2FtZUVsc2UiXSwgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSArPSAxKSBuID0gbiB8fCBtKGUsIHNbaV0pOwogICAgICAgICAgICByZXR1cm4gdCAmJiBuCiAgICAgICAgfShhcmd1bWVudHNbMF0pICYmICh0ID0gYXJndW1lbnRzWzBdLCBlID0gdm9pZCAwKSA6IHQgPSBlID0gdm9pZCAwKTsKICAgICAgICB2YXIgbiA9IGUgfHwgVHQoKSwKICAgICAgICAgICAgcyA9IEd0KG4sIHRoaXMpLnN0YXJ0T2YoImRheSIpLAogICAgICAgICAgICBpID0gZi5jYWxlbmRhckZvcm1hdCh0aGlzLCBzKSB8fCAic2FtZUVsc2UiLAogICAgICAgICAgICByID0gdCAmJiAoTyh0W2ldKSA/IHRbaV0uY2FsbCh0aGlzLCBuKSA6IHRbaV0pOwogICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChyIHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGksIHRoaXMsIFR0KG4pKSkKICAgIH0sIHBuLmNsb25lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyBrKHRoaXMpCiAgICB9LCBwbi5kaWZmID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzLCBpLCByOwogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHJldHVybiBOYU47CiAgICAgICAgaWYgKCEocyA9IEd0KGUsIHRoaXMpKS5pc1ZhbGlkKCkpIHJldHVybiBOYU47CiAgICAgICAgc3dpdGNoIChpID0gNmU0ICogKHMudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSwgdCA9IFYodCkpIHsKICAgICAgICAgICAgY2FzZSAieWVhciI6CiAgICAgICAgICAgICAgICByID0gZW4odGhpcywgcykgLyAxMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtb250aCI6CiAgICAgICAgICAgICAgICByID0gZW4odGhpcywgcyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAicXVhcnRlciI6CiAgICAgICAgICAgICAgICByID0gZW4odGhpcywgcykgLyAzOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInNlY29uZCI6CiAgICAgICAgICAgICAgICByID0gKHRoaXMgLSBzKSAvIDFlMzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtaW51dGUiOgogICAgICAgICAgICAgICAgciA9ICh0aGlzIC0gcykgLyA2ZTQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaG91ciI6CiAgICAgICAgICAgICAgICByID0gKHRoaXMgLSBzKSAvIDM2ZTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZGF5IjoKICAgICAgICAgICAgICAgIHIgPSAodGhpcyAtIHMgLSBpKSAvIDg2NGU1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIndlZWsiOgogICAgICAgICAgICAgICAgciA9ICh0aGlzIC0gcyAtIGkpIC8gNjA0OGU1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByID0gdGhpcyAtIHMKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG4gPyByIDogSShyKQogICAgfSwgcG4uZW5kT2YgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQsIG47CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gKGUgPSBWKGUpKSB8fCAibWlsbGlzZWNvbmQiID09PSBlIHx8ICF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIHRoaXM7CiAgICAgICAgc3dpdGNoIChuID0gdGhpcy5faXNVVEMgPyB1biA6IG9uLCBlKSB7CiAgICAgICAgICAgIGNhc2UgInllYXIiOgogICAgICAgICAgICAgICAgdCA9IG4odGhpcy55ZWFyKCkgKyAxLCAwLCAxKSAtIDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAicXVhcnRlciI6CiAgICAgICAgICAgICAgICB0ID0gbih0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpIC0gdGhpcy5tb250aCgpICUgMyArIDMsIDEpIC0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtb250aCI6CiAgICAgICAgICAgICAgICB0ID0gbih0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpICsgMSwgMSkgLSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIndlZWsiOgogICAgICAgICAgICAgICAgdCA9IG4odGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSArIDcpIC0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJpc29XZWVrIjoKICAgICAgICAgICAgICAgIHQgPSBuKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpIC0gKHRoaXMuaXNvV2Vla2RheSgpIC0gMSkgKyA3KSAtIDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZGF5IjoKICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICB0ID0gbih0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSArIDEpIC0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJob3VyIjoKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl9kLnZhbHVlT2YoKSwgdCArPSAzNmU1IC0gYW4odCArICh0aGlzLl9pc1VUQyA/IDAgOiA2ZTQgKiB0aGlzLnV0Y09mZnNldCgpKSwgMzZlNSkgLSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm1pbnV0ZSI6CiAgICAgICAgICAgICAgICB0ID0gdGhpcy5fZC52YWx1ZU9mKCksIHQgKz0gNmU0IC0gYW4odCwgNmU0KSAtIDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAic2Vjb25kIjoKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl9kLnZhbHVlT2YoKSwgdCArPSAxZTMgLSBhbih0LCAxZTMpIC0gMTsKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9kLnNldFRpbWUodCksIGYudXBkYXRlT2Zmc2V0KHRoaXMsICEwKSwgdGhpcwogICAgfSwgcG4uZm9ybWF0ID0gZnVuY3Rpb24oZSkgewogICAgICAgIGUgPSBlIHx8ICh0aGlzLmlzVXRjKCkgPyBmLmRlZmF1bHRGb3JtYXRVdGMgOiBmLmRlZmF1bHRGb3JtYXQpOwogICAgICAgIHZhciB0ID0gVSh0aGlzLCBlKTsKICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdCh0KQogICAgfSwgcG4uZnJvbSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgJiYgKE0oZSkgJiYgZS5pc1ZhbGlkKCkgfHwgVHQoZSkuaXNWYWxpZCgpKSA/IFp0KHsKICAgICAgICAgICAgdG86IHRoaXMsCiAgICAgICAgICAgIGZyb206IGUKICAgICAgICB9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXQpIDogdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKQogICAgfSwgcG4uZnJvbU5vdyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5mcm9tKFR0KCksIGUpCiAgICB9LCBwbi50byA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgJiYgKE0oZSkgJiYgZS5pc1ZhbGlkKCkgfHwgVHQoZSkuaXNWYWxpZCgpKSA/IFp0KHsKICAgICAgICAgICAgZnJvbTogdGhpcywKICAgICAgICAgICAgdG86IGUKICAgICAgICB9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXQpIDogdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKQogICAgfSwgcG4udG9Ob3cgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG8oVHQoKSwgZSkKICAgIH0sIHBuLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gTyh0aGlzW2UgPSBWKGUpXSkgPyB0aGlzW2VdKCkgOiB0aGlzCiAgICB9LCBwbi5pbnZhbGlkQXQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4geSh0aGlzKS5vdmVyZmxvdwogICAgfSwgcG4uaXNBZnRlciA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IE0oZSkgPyBlIDogVHQoZSk7CiAgICAgICAgcmV0dXJuICEoIXRoaXMuaXNWYWxpZCgpIHx8ICFuLmlzVmFsaWQoKSkgJiYgKCJtaWxsaXNlY29uZCIgPT09ICh0ID0gVih0KSB8fCAibWlsbGlzZWNvbmQiKSA/IHRoaXMudmFsdWVPZigpID4gbi52YWx1ZU9mKCkgOiBuLnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHQpLnZhbHVlT2YoKSkKICAgIH0sIHBuLmlzQmVmb3JlID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuID0gTShlKSA/IGUgOiBUdChlKTsKICAgICAgICByZXR1cm4gISghdGhpcy5pc1ZhbGlkKCkgfHwgIW4uaXNWYWxpZCgpKSAmJiAoIm1pbGxpc2Vjb25kIiA9PT0gKHQgPSBWKHQpIHx8ICJtaWxsaXNlY29uZCIpID8gdGhpcy52YWx1ZU9mKCkgPCBuLnZhbHVlT2YoKSA6IHRoaXMuY2xvbmUoKS5lbmRPZih0KS52YWx1ZU9mKCkgPCBuLnZhbHVlT2YoKSkKICAgIH0sIHBuLmlzQmV0d2VlbiA9IGZ1bmN0aW9uKGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9IE0oZSkgPyBlIDogVHQoZSksCiAgICAgICAgICAgIHIgPSBNKHQpID8gdCA6IFR0KHQpOwogICAgICAgIHJldHVybiAhISh0aGlzLmlzVmFsaWQoKSAmJiBpLmlzVmFsaWQoKSAmJiByLmlzVmFsaWQoKSkgJiYgKCgiKCIgPT09IChzID0gcyB8fCAiKCkiKVswXSA/IHRoaXMuaXNBZnRlcihpLCBuKSA6ICF0aGlzLmlzQmVmb3JlKGksIG4pKSAmJiAoIikiID09PSBzWzFdID8gdGhpcy5pc0JlZm9yZShyLCBuKSA6ICF0aGlzLmlzQWZ0ZXIociwgbikpKQogICAgfSwgcG4uaXNTYW1lID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuLCBzID0gTShlKSA/IGUgOiBUdChlKTsKICAgICAgICByZXR1cm4gISghdGhpcy5pc1ZhbGlkKCkgfHwgIXMuaXNWYWxpZCgpKSAmJiAoIm1pbGxpc2Vjb25kIiA9PT0gKHQgPSBWKHQpIHx8ICJtaWxsaXNlY29uZCIpID8gdGhpcy52YWx1ZU9mKCkgPT09IHMudmFsdWVPZigpIDogKG4gPSBzLnZhbHVlT2YoKSwgdGhpcy5jbG9uZSgpLnN0YXJ0T2YodCkudmFsdWVPZigpIDw9IG4gJiYgbiA8PSB0aGlzLmNsb25lKCkuZW5kT2YodCkudmFsdWVPZigpKSkKICAgIH0sIHBuLmlzU2FtZU9yQWZ0ZXIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGUsIHQpIHx8IHRoaXMuaXNBZnRlcihlLCB0KQogICAgfSwgcG4uaXNTYW1lT3JCZWZvcmUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGUsIHQpIHx8IHRoaXMuaXNCZWZvcmUoZSwgdCkKICAgIH0sIHBuLmlzVmFsaWQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZyh0aGlzKQogICAgfSwgcG4ubGFuZyA9IG5uLCBwbi5sb2NhbGUgPSB0biwgcG4ubG9jYWxlRGF0YSA9IHNuLCBwbi5tYXggPSBQdCwgcG4ubWluID0gTnQsIHBuLnBhcnNpbmdGbGFncyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBjKHt9LCB5KHRoaXMpKQogICAgfSwgcG4uc2V0ID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkKICAgICAgICAgICAgZm9yICh2YXIgbiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCwgbiA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodCBpbiBlKSBtKGUsIHQpICYmIG4ucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBFW3RdCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uc29ydChmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnByaW9yaXR5IC0gdC5wcmlvcml0eQogICAgICAgICAgICAgICAgICAgIH0pLCBuCiAgICAgICAgICAgICAgICB9KGUgPSBHKGUpKSwgcyA9IDA7IHMgPCBuLmxlbmd0aDsgcysrKSB0aGlzW25bc10udW5pdF0oZVtuW3NdLnVuaXRdKTsKICAgICAgICBlbHNlIGlmIChPKHRoaXNbZSA9IFYoZSldKSkgcmV0dXJuIHRoaXNbZV0odCk7CiAgICAgICAgcmV0dXJuIHRoaXMKICAgIH0sIHBuLnN0YXJ0T2YgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQsIG47CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gKGUgPSBWKGUpKSB8fCAibWlsbGlzZWNvbmQiID09PSBlIHx8ICF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIHRoaXM7CiAgICAgICAgc3dpdGNoIChuID0gdGhpcy5faXNVVEMgPyB1biA6IG9uLCBlKSB7CiAgICAgICAgICAgIGNhc2UgInllYXIiOgogICAgICAgICAgICAgICAgdCA9IG4odGhpcy55ZWFyKCksIDAsIDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInF1YXJ0ZXIiOgogICAgICAgICAgICAgICAgdCA9IG4odGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSAtIHRoaXMubW9udGgoKSAlIDMsIDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIm1vbnRoIjoKICAgICAgICAgICAgICAgIHQgPSBuKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIndlZWsiOgogICAgICAgICAgICAgICAgdCA9IG4odGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiaXNvV2VlayI6CiAgICAgICAgICAgICAgICB0ID0gbih0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJkYXkiOgogICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgIHQgPSBuKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCksIHRoaXMuZGF0ZSgpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJob3VyIjoKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl9kLnZhbHVlT2YoKSwgdCAtPSBhbih0ICsgKHRoaXMuX2lzVVRDID8gMCA6IDZlNCAqIHRoaXMudXRjT2Zmc2V0KCkpLCAzNmU1KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJtaW51dGUiOgogICAgICAgICAgICAgICAgdCA9IHRoaXMuX2QudmFsdWVPZigpLCB0IC09IGFuKHQsIDZlNCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAic2Vjb25kIjoKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl9kLnZhbHVlT2YoKSwgdCAtPSBhbih0LCAxZTMpOwogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2Quc2V0VGltZSh0KSwgZi51cGRhdGVPZmZzZXQodGhpcywgITApLCB0aGlzCiAgICB9LCBwbi5zdWJ0cmFjdCA9IFF0LCBwbi50b0FycmF5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzOwogICAgICAgIHJldHVybiBbZS55ZWFyKCksIGUubW9udGgoKSwgZS5kYXRlKCksIGUuaG91cigpLCBlLm1pbnV0ZSgpLCBlLnNlY29uZCgpLCBlLm1pbGxpc2Vjb25kKCldCiAgICB9LCBwbi50b09iamVjdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB5ZWFyczogZS55ZWFyKCksCiAgICAgICAgICAgIG1vbnRoczogZS5tb250aCgpLAogICAgICAgICAgICBkYXRlOiBlLmRhdGUoKSwKICAgICAgICAgICAgaG91cnM6IGUuaG91cnMoKSwKICAgICAgICAgICAgbWludXRlczogZS5taW51dGVzKCksCiAgICAgICAgICAgIHNlY29uZHM6IGUuc2Vjb25kcygpLAogICAgICAgICAgICBtaWxsaXNlY29uZHM6IGUubWlsbGlzZWNvbmRzKCkKICAgICAgICB9CiAgICB9LCBwbi50b0RhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpCiAgICB9LCBwbi50b0lTT1N0cmluZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgdCA9ICEwICE9PSBlLAogICAgICAgICAgICBuID0gdCA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7CiAgICAgICAgcmV0dXJuIG4ueWVhcigpIDwgMCB8fCA5OTk5IDwgbi55ZWFyKCkgPyBVKG4sIHQgPyAiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIiA6ICJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIikgOiBPKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSA/IHQgPyB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSArIDYwICogdGhpcy51dGNPZmZzZXQoKSAqIDFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKCJaIiwgVShuLCAiWiIpKSA6IFUobiwgdCA/ICJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIiA6ICJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpCiAgICB9LCBwbi5pbnNwZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuICJtb21lbnQuaW52YWxpZCgvKiAiICsgdGhpcy5faSArICIgKi8pIjsKICAgICAgICB2YXIgZSwgdCwgbiwgcyA9ICJtb21lbnQiLAogICAgICAgICAgICBpID0gIiI7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNMb2NhbCgpIHx8IChzID0gMCA9PT0gdGhpcy51dGNPZmZzZXQoKSA/ICJtb21lbnQudXRjIiA6ICJtb21lbnQucGFyc2Vab25lIiwgaSA9ICJaIiksIGUgPSAiWyIgKyBzICsgJygiXScsIHQgPSAwIDw9IHRoaXMueWVhcigpICYmIHRoaXMueWVhcigpIDw9IDk5OTkgPyAiWVlZWSIgOiAiWVlZWVlZIiwgbiA9IGkgKyAnWyIpXScsIHRoaXMuZm9ybWF0KGUgKyB0ICsgIi1NTS1ERFtUXUhIOm1tOnNzLlNTUyIgKyBuKQogICAgfSwgInVuZGVmaW5lZCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IFN5bWJvbC5mb3IgJiYgKHBuW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICJNb21lbnQ8IiArIHRoaXMuZm9ybWF0KCkgKyAiPiIKICAgIH0pLCBwbi50b0pTT04gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsCiAgICB9LCBwbi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKQogICAgfSwgcG4udW5peCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpIC8gMWUzKQogICAgfSwgcG4udmFsdWVPZiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVlT2YoKSAtIDZlNCAqICh0aGlzLl9vZmZzZXQgfHwgMCkKICAgIH0sIHBuLmNyZWF0aW9uRGF0YSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLAogICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX2YsCiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLAogICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsCiAgICAgICAgICAgIHN0cmljdDogdGhpcy5fc3RyaWN0CiAgICAgICAgfQogICAgfSwgcG4uZXJhTmFtZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGUsIHQgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCksIG4gPSAwLCBzID0gdC5sZW5ndGg7IG4gPCBzOyArK24pIHsKICAgICAgICAgICAgaWYgKGUgPSB0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLCB0W25dLnNpbmNlIDw9IGUgJiYgZSA8PSB0W25dLnVudGlsKSByZXR1cm4gdFtuXS5uYW1lOwogICAgICAgICAgICBpZiAodFtuXS51bnRpbCA8PSBlICYmIGUgPD0gdFtuXS5zaW5jZSkgcmV0dXJuIHRbbl0ubmFtZQogICAgICAgIH0KICAgICAgICByZXR1cm4gIiIKICAgIH0sIHBuLmVyYU5hcnJvdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGUsIHQgPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCksIG4gPSAwLCBzID0gdC5sZW5ndGg7IG4gPCBzOyArK24pIHsKICAgICAgICAgICAgaWYgKGUgPSB0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLCB0W25dLnNpbmNlIDw9IGUgJiYgZSA8PSB0W25dLnVudGlsKSByZXR1cm4gdFtuXS5uYXJyb3c7CiAgICAgICAgICAgIGlmICh0W25dLnVudGlsIDw9IGUgJiYgZSA8PSB0W25dLnNpbmNlKSByZXR1cm4gdFtuXS5uYXJyb3cKICAgICAgICB9CiAgICAgICAgcmV0dXJuICIiCiAgICB9LCBwbi5lcmFBYmJyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZm9yICh2YXIgZSwgdCA9IHRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKSwgbiA9IDAsIHMgPSB0Lmxlbmd0aDsgbiA8IHM7ICsrbikgewogICAgICAgICAgICBpZiAoZSA9IHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksIHRbbl0uc2luY2UgPD0gZSAmJiBlIDw9IHRbbl0udW50aWwpIHJldHVybiB0W25dLmFiYnI7CiAgICAgICAgICAgIGlmICh0W25dLnVudGlsIDw9IGUgJiYgZSA8PSB0W25dLnNpbmNlKSByZXR1cm4gdFtuXS5hYmJyCiAgICAgICAgfQogICAgICAgIHJldHVybiAiIgogICAgfSwgcG4uZXJhWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGZvciAodmFyIGUsIHQsIG4gPSB0aGlzLmxvY2FsZURhdGEoKS5lcmFzKCksIHMgPSAwLCBpID0gbi5sZW5ndGg7IHMgPCBpOyArK3MpCiAgICAgICAgICAgIGlmIChlID0gbltzXS5zaW5jZSA8PSBuW3NdLnVudGlsID8gMSA6IC0xLCB0ID0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSwgbltzXS5zaW5jZSA8PSB0ICYmIHQgPD0gbltzXS51bnRpbCB8fCBuW3NdLnVudGlsIDw9IHQgJiYgdCA8PSBuW3NdLnNpbmNlKSByZXR1cm4gKHRoaXMueWVhcigpIC0gZihuW3NdLnNpbmNlKS55ZWFyKCkpICogZSArIG5bc10ub2Zmc2V0OwogICAgICAgIHJldHVybiB0aGlzLnllYXIoKQogICAgfSwgcG4ueWVhciA9IExlLCBwbi5pc0xlYXBZZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGoodGhpcy55ZWFyKCkpCiAgICB9LCBwbi53ZWVrWWVhciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gY24uY2FsbCh0aGlzLCBlLCB0aGlzLndlZWsoKSwgdGhpcy53ZWVrZGF5KCksIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdywgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KQogICAgfSwgcG4uaXNvV2Vla1llYXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIGNuLmNhbGwodGhpcywgZSwgdGhpcy5pc29XZWVrKCksIHRoaXMuaXNvV2Vla2RheSgpLCAxLCA0KQogICAgfSwgcG4ucXVhcnRlciA9IHBuLnF1YXJ0ZXJzID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBudWxsID09IGUgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKDMgKiAoZSAtIDEpICsgdGhpcy5tb250aCgpICUgMykKICAgIH0sIHBuLm1vbnRoID0gVWUsIHBuLmRheXNJbk1vbnRoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHhlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpCiAgICB9LCBwbi53ZWVrID0gcG4ud2Vla3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSB0aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpOwogICAgICAgIHJldHVybiBudWxsID09IGUgPyB0IDogdGhpcy5hZGQoNyAqIChlIC0gdCksICJkIikKICAgIH0sIHBuLmlzb1dlZWsgPSBwbi5pc29XZWVrcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IEFlKHRoaXMsIDEsIDQpLndlZWs7CiAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHQgOiB0aGlzLmFkZCg3ICogKGUgLSB0KSwgImQiKQogICAgfSwgcG4ud2Vla3NJblllYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrOwogICAgICAgIHJldHVybiBqZSh0aGlzLnllYXIoKSwgZS5kb3csIGUuZG95KQogICAgfSwgcG4ud2Vla3NJbldlZWtZZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUgPSB0aGlzLmxvY2FsZURhdGEoKS5fd2VlazsKICAgICAgICByZXR1cm4gamUodGhpcy53ZWVrWWVhcigpLCBlLmRvdywgZS5kb3kpCiAgICB9LCBwbi5pc29XZWVrc0luWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBqZSh0aGlzLnllYXIoKSwgMSwgNCkKICAgIH0sIHBuLmlzb1dlZWtzSW5JU09XZWVrWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBqZSh0aGlzLmlzb1dlZWtZZWFyKCksIDEsIDQpCiAgICB9LCBwbi5kYXRlID0gZm4sIHBuLmRheSA9IHBuLmRheXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIG51bGwgIT0gZSA/IHRoaXMgOiBOYU47CiAgICAgICAgdmFyIHQsIG4sIHMgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpOwogICAgICAgIHJldHVybiBudWxsICE9IGUgPyAodCA9IGUsIG4gPSB0aGlzLmxvY2FsZURhdGEoKSwgZSA9ICJzdHJpbmciICE9IHR5cGVvZiB0ID8gdCA6IGlzTmFOKHQpID8gIm51bWJlciIgPT0gdHlwZW9mKHQgPSBuLndlZWtkYXlzUGFyc2UodCkpID8gdCA6IG51bGwgOiBwYXJzZUludCh0LCAxMCksIHRoaXMuYWRkKGUgLSBzLCAiZCIpKSA6IHMKICAgIH0sIHBuLndlZWtkYXkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIG51bGwgIT0gZSA/IHRoaXMgOiBOYU47CiAgICAgICAgdmFyIHQgPSAodGhpcy5kYXkoKSArIDcgLSB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpICUgNzsKICAgICAgICByZXR1cm4gbnVsbCA9PSBlID8gdCA6IHRoaXMuYWRkKGUgLSB0LCAiZCIpCiAgICB9LCBwbi5pc29XZWVrZGF5ID0gZnVuY3Rpb24oZSkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHJldHVybiBudWxsICE9IGUgPyB0aGlzIDogTmFOOwogICAgICAgIGlmIChudWxsID09IGUpIHJldHVybiB0aGlzLmRheSgpIHx8IDc7CiAgICAgICAgdmFyIHQsIG4sIHMgPSAodCA9IGUsIG4gPSB0aGlzLmxvY2FsZURhdGEoKSwgInN0cmluZyIgPT0gdHlwZW9mIHQgPyBuLndlZWtkYXlzUGFyc2UodCkgJSA3IHx8IDcgOiBpc05hTih0KSA/IG51bGwgOiB0KTsKICAgICAgICByZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSAlIDcgPyBzIDogcyAtIDcpCiAgICB9LCBwbi5kYXlPZlllYXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSBNYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikgLSB0aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKSAvIDg2NGU1KSArIDE7CiAgICAgICAgcmV0dXJuIG51bGwgPT0gZSA/IHQgOiB0aGlzLmFkZChlIC0gdCwgImQiKQogICAgfSwgcG4uaG91ciA9IHBuLmhvdXJzID0gdHQsIHBuLm1pbnV0ZSA9IHBuLm1pbnV0ZXMgPSBtbiwgcG4uc2Vjb25kID0gcG4uc2Vjb25kcyA9IGduLCBwbi5taWxsaXNlY29uZCA9IHBuLm1pbGxpc2Vjb25kcyA9IHluLCBwbi51dGNPZmZzZXQgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIHMsIGkgPSB0aGlzLl9vZmZzZXQgfHwgMDsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSByZXR1cm4gbnVsbCAhPSBlID8gdGhpcyA6IE5hTjsKICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm4gdGhpcy5faXNVVEMgPyBpIDogRXQodGhpcyk7CiAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAoZSA9IFZ0KGhlLCBlKSkpIHJldHVybiB0aGlzCiAgICAgICAgfSBlbHNlIE1hdGguYWJzKGUpIDwgMTYgJiYgIW4gJiYgKGUgKj0gNjApOwogICAgICAgIHJldHVybiAhdGhpcy5faXNVVEMgJiYgdCAmJiAocyA9IEV0KHRoaXMpKSwgdGhpcy5fb2Zmc2V0ID0gZSwgdGhpcy5faXNVVEMgPSAhMCwgbnVsbCAhPSBzICYmIHRoaXMuYWRkKHMsICJtIiksIGkgIT09IGUgJiYgKCF0IHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPyBCdCh0aGlzLCBadChlIC0gaSwgIm0iKSwgMSwgITEpIDogdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyB8fCAodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcyA9ICEwLCBmLnVwZGF0ZU9mZnNldCh0aGlzLCAhMCksIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsKSksIHRoaXMKICAgIH0sIHBuLnV0YyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy51dGNPZmZzZXQoMCwgZSkKICAgIH0sIHBuLmxvY2FsID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyAmJiAodGhpcy51dGNPZmZzZXQoMCwgZSksIHRoaXMuX2lzVVRDID0gITEsIGUgJiYgdGhpcy5zdWJ0cmFjdChFdCh0aGlzKSwgIm0iKSksIHRoaXMKICAgIH0sIHBuLnBhcnNlWm9uZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlOwogICAgICAgIHJldHVybiBudWxsICE9IHRoaXMuX3R6bSA/IHRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSwgITEsICEwKSA6ICJzdHJpbmciID09IHR5cGVvZiB0aGlzLl9pICYmIChudWxsICE9IChlID0gVnQobGUsIHRoaXMuX2kpKSA/IHRoaXMudXRjT2Zmc2V0KGUpIDogdGhpcy51dGNPZmZzZXQoMCwgITApKSwgdGhpcwogICAgfSwgcG4uaGFzQWxpZ25lZEhvdXJPZmZzZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuICEhdGhpcy5pc1ZhbGlkKCkgJiYgKGUgPSBlID8gVHQoZSkudXRjT2Zmc2V0KCkgOiAwLCAodGhpcy51dGNPZmZzZXQoKSAtIGUpICUgNjAgPT0gMCkKICAgIH0sIHBuLmlzRFNUID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCkgfHwgdGhpcy51dGNPZmZzZXQoKSA+IHRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKQogICAgfSwgcG4uaXNMb2NhbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiAhIXRoaXMuaXNWYWxpZCgpICYmICF0aGlzLl9pc1VUQwogICAgfSwgcG4uaXNVdGNPZmZzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gISF0aGlzLmlzVmFsaWQoKSAmJiB0aGlzLl9pc1VUQwogICAgfSwgcG4uaXNVdGMgPSBBdCwgcG4uaXNVVEMgPSBBdCwgcG4uem9uZUFiYnIgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAiVVRDIiA6ICIiCiAgICB9LCBwbi56b25lTmFtZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICJDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSIgOiAiIgogICAgfSwgcG4uZGF0ZXMgPSBuKCJkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLiIsIGZuKSwgcG4ubW9udGhzID0gbigibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIiwgVWUpLCBwbi55ZWFycyA9IG4oInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQiLCBMZSksIHBuLnpvbmUgPSBuKCJtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLyIsIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gbnVsbCAhPSBlID8gKCJzdHJpbmciICE9IHR5cGVvZiBlICYmIChlID0gLWUpLCB0aGlzLnV0Y09mZnNldChlLCB0KSwgdGhpcykgOiAtdGhpcy51dGNPZmZzZXQoKQogICAgfSksIHBuLmlzRFNUU2hpZnRlZCA9IG4oImlzRFNUU2hpZnRlZCBpcyBkZXByZWNhdGVkLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kc3Qtc2hpZnRlZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24iLCBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoIXIodGhpcy5faXNEU1RTaGlmdGVkKSkgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDsKICAgICAgICB2YXIgZSwgdCA9IHt9OwogICAgICAgIHJldHVybiB2KHQsIHRoaXMpLCAodCA9IGJ0KHQpKS5fYSA/IChlID0gKHQuX2lzVVRDID8gXyA6IFR0KSh0Ll9hKSwgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiYgMCA8IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICAgICAgZm9yICh2YXIgcyA9IE1hdGgubWluKGUubGVuZ3RoLCB0Lmxlbmd0aCksIGkgPSBNYXRoLmFicyhlLmxlbmd0aCAtIHQubGVuZ3RoKSwgciA9IDAsIGEgPSAwOyBhIDwgczsgYSsrKShuICYmIGVbYV0gIT09IHRbYV0gfHwgIW4gJiYgWihlW2FdKSAhPT0gWih0W2FdKSkgJiYgcisrOwogICAgICAgICAgICByZXR1cm4gciArIGkKICAgICAgICB9KHQuX2EsIGUudG9BcnJheSgpKSkgOiB0aGlzLl9pc0RTVFNoaWZ0ZWQgPSAhMSwgdGhpcy5faXNEU1RTaGlmdGVkCiAgICB9KTsKICAgIHZhciBrbiA9IHgucHJvdG90eXBlOwoKICAgIGZ1bmN0aW9uIE1uKGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9IGR0KCksCiAgICAgICAgICAgIHIgPSBfKCkuc2V0KHMsIHQpOwogICAgICAgIHJldHVybiBpW25dKHIsIGUpCiAgICB9CgogICAgZnVuY3Rpb24gRG4oZSwgdCwgbikgewogICAgICAgIGlmIChoKGUpICYmICh0ID0gZSwgZSA9IHZvaWQgMCksIGUgPSBlIHx8ICIiLCBudWxsICE9IHQpIHJldHVybiBNbihlLCB0LCBuLCAibW9udGgiKTsKICAgICAgICBmb3IgKHZhciBzID0gW10sIGkgPSAwOyBpIDwgMTI7IGkrKykgc1tpXSA9IE1uKGUsIGksIG4sICJtb250aCIpOwogICAgICAgIHJldHVybiBzCiAgICB9CgogICAgZnVuY3Rpb24gU24oZSwgdCwgbiwgcykgewogICAgICAgIHQgPSAoImJvb2xlYW4iID09IHR5cGVvZiBlID8gaCh0KSAmJiAobiA9IHQsIHQgPSB2b2lkIDApIDogKHQgPSBlLCBlID0gITEsIGgobiA9IHQpICYmIChuID0gdCwgdCA9IHZvaWQgMCkpLCB0IHx8ICIiKTsKICAgICAgICB2YXIgaSwgciA9IGR0KCksCiAgICAgICAgICAgIGEgPSBlID8gci5fd2Vlay5kb3cgOiAwLAogICAgICAgICAgICBvID0gW107CiAgICAgICAgaWYgKG51bGwgIT0gbikgcmV0dXJuIE1uKHQsIChuICsgYSkgJSA3LCBzLCAiZGF5Iik7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykgb1tpXSA9IE1uKHQsIChpICsgYSkgJSA3LCBzLCAiZGF5Iik7CiAgICAgICAgcmV0dXJuIG8KICAgIH0KICAgIGtuLmNhbGVuZGFyID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHZhciBzID0gdGhpcy5fY2FsZW5kYXJbZV0gfHwgdGhpcy5fY2FsZW5kYXIuc2FtZUVsc2U7CiAgICAgICAgcmV0dXJuIE8ocykgPyBzLmNhbGwodCwgbikgOiBzCiAgICB9LCBrbi5sb25nRGF0ZUZvcm1hdCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2VdLAogICAgICAgICAgICBuID0gdGhpcy5fbG9uZ0RhdGVGb3JtYXRbZS50b1VwcGVyQ2FzZSgpXTsKICAgICAgICByZXR1cm4gdCB8fCAhbiA/IHQgOiAodGhpcy5fbG9uZ0RhdGVGb3JtYXRbZV0gPSBuLm1hdGNoKE4pLm1hcChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiAiTU1NTSIgPT09IGUgfHwgIk1NIiA9PT0gZSB8fCAiREQiID09PSBlIHx8ICJkZGRkIiA9PT0gZSA/IGUuc2xpY2UoMSkgOiBlCiAgICAgICAgfSkuam9pbigiIiksIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2VdKQogICAgfSwga24uaW52YWxpZERhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGUKICAgIH0sIGtuLm9yZGluYWwgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLCBlKQogICAgfSwga24ucHJlcGFyc2UgPSB2biwga24ucG9zdGZvcm1hdCA9IHZuLCBrbi5yZWxhdGl2ZVRpbWUgPSBmdW5jdGlvbihlLCB0LCBuLCBzKSB7CiAgICAgICAgdmFyIGkgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbbl07CiAgICAgICAgcmV0dXJuIE8oaSkgPyBpKGUsIHQsIG4sIHMpIDogaS5yZXBsYWNlKC8lZC9pLCBlKQogICAgfSwga24ucGFzdEZ1dHVyZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiA9IHRoaXMuX3JlbGF0aXZlVGltZVswIDwgZSA/ICJmdXR1cmUiIDogInBhc3QiXTsKICAgICAgICByZXR1cm4gTyhuKSA/IG4odCkgOiBuLnJlcGxhY2UoLyVzL2ksIHQpCiAgICB9LCBrbi5zZXQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQsIG47CiAgICAgICAgZm9yIChuIGluIGUpIG0oZSwgbikgJiYgKE8odCA9IGVbbl0pID8gdGhpc1tuXSA9IHQgOiB0aGlzWyJfIiArIG5dID0gdCk7CiAgICAgICAgdGhpcy5fY29uZmlnID0gZSwgdGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQgPSBuZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZSB8fCB0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlKSArICJ8IiArIC9cZHsxLDJ9Ly5zb3VyY2UpCiAgICB9LCBrbi5lcmFzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIGZvciAodmFyIG4sIHMgPSB0aGlzLl9lcmFzIHx8IGR0KCJlbiIpLl9lcmFzLCBpID0gMCwgciA9IHMubGVuZ3RoOyBpIDwgcjsgKytpKSB7CiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHNbaV0uc2luY2UpIHsKICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgICAgbiA9IGYoc1tpXS5zaW5jZSkuc3RhcnRPZigiZGF5IiksIHNbaV0uc2luY2UgPSBuLnZhbHVlT2YoKTsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHNbaV0udW50aWwpIHsKICAgICAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6CiAgICAgICAgICAgICAgICAgICAgc1tpXS51bnRpbCA9IDEgLyAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICAgICAgICBuID0gZihzW2ldLnVudGlsKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksIHNbaV0udW50aWwgPSBuLnZhbHVlT2YoKTsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzCiAgICB9LCBrbi5lcmFzUGFyc2UgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIHMsIGksIHIsIGEsIG8sIHUgPSB0aGlzLmVyYXMoKTsKICAgICAgICBmb3IgKGUgPSBlLnRvVXBwZXJDYXNlKCksIHMgPSAwLCBpID0gdS5sZW5ndGg7IHMgPCBpOyArK3MpCiAgICAgICAgICAgIGlmIChyID0gdVtzXS5uYW1lLnRvVXBwZXJDYXNlKCksIGEgPSB1W3NdLmFiYnIudG9VcHBlckNhc2UoKSwgbyA9IHVbc10ubmFycm93LnRvVXBwZXJDYXNlKCksIG4pIHN3aXRjaCAodCkgewogICAgICAgICAgICAgICAgY2FzZSAiTiI6CiAgICAgICAgICAgICAgICBjYXNlICJOTiI6CiAgICAgICAgICAgICAgICBjYXNlICJOTk4iOgogICAgICAgICAgICAgICAgICAgIGlmIChhID09PSBlKSByZXR1cm4gdVtzXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIk5OTk4iOgogICAgICAgICAgICAgICAgICAgIGlmIChyID09PSBlKSByZXR1cm4gdVtzXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIk5OTk5OIjoKICAgICAgICAgICAgICAgICAgICBpZiAobyA9PT0gZSkgcmV0dXJuIHVbc107CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgfSBlbHNlIGlmICgwIDw9IFtyLCBhLCBvXS5pbmRleE9mKGUpKSByZXR1cm4gdVtzXQogICAgfSwga24uZXJhc0NvbnZlcnRZZWFyID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHZhciBuID0gZS5zaW5jZSA8PSBlLnVudGlsID8gMSA6IC0xOwogICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgPyBmKGUuc2luY2UpLnllYXIoKSA6IGYoZS5zaW5jZSkueWVhcigpICsgKHQgLSBlLm9mZnNldCkgKiBuCiAgICB9LCBrbi5lcmFzQWJiclJlZ2V4ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBtKHRoaXMsICJfZXJhc0FiYnJSZWdleCIpIHx8IGhuLmNhbGwodGhpcyksIGUgPyB0aGlzLl9lcmFzQWJiclJlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4CiAgICB9LCBrbi5lcmFzTmFtZVJlZ2V4ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBtKHRoaXMsICJfZXJhc05hbWVSZWdleCIpIHx8IGhuLmNhbGwodGhpcyksIGUgPyB0aGlzLl9lcmFzTmFtZVJlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4CiAgICB9LCBrbi5lcmFzTmFycm93UmVnZXggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIG0odGhpcywgIl9lcmFzTmFycm93UmVnZXgiKSB8fCBobi5jYWxsKHRoaXMpLCBlID8gdGhpcy5fZXJhc05hcnJvd1JlZ2V4IDogdGhpcy5fZXJhc1JlZ2V4CiAgICB9LCBrbi5tb250aHMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIGUgPyBvKHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbZS5tb250aCgpXSA6IHRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0IHx8IFBlKS50ZXN0KHQpID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSJdW2UubW9udGgoKV0gOiBvKHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOiB0aGlzLl9tb250aHMuc3RhbmRhbG9uZQogICAgfSwga24ubW9udGhzU2hvcnQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIGUgPyBvKHRoaXMuX21vbnRoc1Nob3J0KSA/IHRoaXMuX21vbnRoc1Nob3J0W2UubW9udGgoKV0gOiB0aGlzLl9tb250aHNTaG9ydFtQZS50ZXN0KHQpID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSJdW2UubW9udGgoKV0gOiBvKHRoaXMuX21vbnRoc1Nob3J0KSA/IHRoaXMuX21vbnRoc1Nob3J0IDogdGhpcy5fbW9udGhzU2hvcnQuc3RhbmRhbG9uZQogICAgfSwga24ubW9udGhzUGFyc2UgPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgdmFyIHMsIGksIHI7CiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHJldHVybiBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgICAgIHZhciBzLCBpLCByLCBhID0gZS50b0xvY2FsZUxvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKQogICAgICAgICAgICAgICAgZm9yICh0aGlzLl9tb250aHNQYXJzZSA9IFtdLCB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXSwgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdLCBzID0gMDsgcyA8IDEyOyArK3MpIHIgPSBfKFsyZTMsIHNdKSwgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtzXSA9IHRoaXMubW9udGhzU2hvcnQociwgIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksIHRoaXMuX2xvbmdNb250aHNQYXJzZVtzXSA9IHRoaXMubW9udGhzKHIsICIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpOwogICAgICAgICAgICByZXR1cm4gbiA/ICJNTU0iID09PSB0ID8gLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBhKSkgPyBpIDogbnVsbCA6IC0xICE9PSAoaSA9IHdlLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBhKSkgPyBpIDogbnVsbCA6ICJNTU0iID09PSB0ID8gLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBhKSkgfHwgLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGEpKSA/IGkgOiBudWxsIDogLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGEpKSB8fCAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGEpKSA/IGkgOiBudWxsCiAgICAgICAgfS5jYWxsKHRoaXMsIGUsIHQsIG4pOwogICAgICAgIGZvciAodGhpcy5fbW9udGhzUGFyc2UgfHwgKHRoaXMuX21vbnRoc1BhcnNlID0gW10sIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdLCB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW10pLCBzID0gMDsgcyA8IDEyOyBzKyspIHsKICAgICAgICAgICAgaWYgKGkgPSBfKFsyZTMsIHNdKSwgbiAmJiAhdGhpcy5fbG9uZ01vbnRoc1BhcnNlW3NdICYmICh0aGlzLl9sb25nTW9udGhzUGFyc2Vbc10gPSBuZXcgUmVnRXhwKCJeIiArIHRoaXMubW9udGhzKGksICIiKS5yZXBsYWNlKCIuIiwgIiIpICsgIiQiLCAiaSIpLCB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW3NdID0gbmV3IFJlZ0V4cCgiXiIgKyB0aGlzLm1vbnRoc1Nob3J0KGksICIiKS5yZXBsYWNlKCIuIiwgIiIpICsgIiQiLCAiaSIpKSwgbiB8fCB0aGlzLl9tb250aHNQYXJzZVtzXSB8fCAociA9ICJeIiArIHRoaXMubW9udGhzKGksICIiKSArICJ8XiIgKyB0aGlzLm1vbnRoc1Nob3J0KGksICIiKSwgdGhpcy5fbW9udGhzUGFyc2Vbc10gPSBuZXcgUmVnRXhwKHIucmVwbGFjZSgiLiIsICIiKSwgImkiKSksIG4gJiYgIk1NTU0iID09PSB0ICYmIHRoaXMuX2xvbmdNb250aHNQYXJzZVtzXS50ZXN0KGUpKSByZXR1cm4gczsKICAgICAgICAgICAgaWYgKG4gJiYgIk1NTSIgPT09IHQgJiYgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtzXS50ZXN0KGUpKSByZXR1cm4gczsKICAgICAgICAgICAgaWYgKCFuICYmIHRoaXMuX21vbnRoc1BhcnNlW3NdLnRlc3QoZSkpIHJldHVybiBzCiAgICAgICAgfQogICAgfSwga24ubW9udGhzUmVnZXggPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3QgPyAobSh0aGlzLCAiX21vbnRoc1JlZ2V4IikgfHwgSGUuY2FsbCh0aGlzKSwgZSA/IHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzUmVnZXgpIDogKG0odGhpcywgIl9tb250aHNSZWdleCIpIHx8ICh0aGlzLl9tb250aHNSZWdleCA9IFdlKSwgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggJiYgZSA/IHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzUmVnZXgpCiAgICB9LCBrbi5tb250aHNTaG9ydFJlZ2V4ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0ID8gKG0odGhpcywgIl9tb250aHNSZWdleCIpIHx8IEhlLmNhbGwodGhpcyksIGUgPyB0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fbW9udGhzU2hvcnRSZWdleCkgOiAobSh0aGlzLCAiX21vbnRoc1Nob3J0UmVnZXgiKSB8fCAodGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IFJlKSwgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCAmJiBlID8gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1Nob3J0UmVnZXgpCiAgICB9LCBrbi53ZWVrID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiBBZShlLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWsKICAgIH0sIGtuLmZpcnN0RGF5T2ZZZWFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95CiAgICB9LCBrbi5maXJzdERheU9mV2VlayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdwogICAgfSwga24ud2Vla2RheXMgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4gPSBvKHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDogdGhpcy5fd2Vla2RheXNbZSAmJiAhMCAhPT0gZSAmJiB0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KHQpID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSJdOwogICAgICAgIHJldHVybiAhMCA9PT0gZSA/IEllKG4sIHRoaXMuX3dlZWsuZG93KSA6IGUgPyBuW2UuZGF5KCldIDogbgogICAgfSwga24ud2Vla2RheXNNaW4gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuICEwID09PSBlID8gSWUodGhpcy5fd2Vla2RheXNNaW4sIHRoaXMuX3dlZWsuZG93KSA6IGUgPyB0aGlzLl93ZWVrZGF5c01pbltlLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzTWluCiAgICB9LCBrbi53ZWVrZGF5c1Nob3J0ID0gZnVuY3Rpb24oZSkgewogICAgICAgIHJldHVybiAhMCA9PT0gZSA/IEllKHRoaXMuX3dlZWtkYXlzU2hvcnQsIHRoaXMuX3dlZWsuZG93KSA6IGUgPyB0aGlzLl93ZWVrZGF5c1Nob3J0W2UuZGF5KCldIDogdGhpcy5fd2Vla2RheXNTaG9ydAogICAgfSwga24ud2Vla2RheXNQYXJzZSA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICB2YXIgcywgaSwgcjsKICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSByZXR1cm4gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgICAgICB2YXIgcywgaSwgciwgYSA9IGUudG9Mb2NhbGVMb3dlckNhc2UoKTsKICAgICAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKQogICAgICAgICAgICAgICAgZm9yICh0aGlzLl93ZWVrZGF5c1BhcnNlID0gW10sIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdLCB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW10sIHMgPSAwOyBzIDwgNzsgKytzKSByID0gXyhbMmUzLCAxXSkuZGF5KHMpLCB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW3NdID0gdGhpcy53ZWVrZGF5c01pbihyLCAiIikudG9Mb2NhbGVMb3dlckNhc2UoKSwgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3NdID0gdGhpcy53ZWVrZGF5c1Nob3J0KHIsICIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLCB0aGlzLl93ZWVrZGF5c1BhcnNlW3NdID0gdGhpcy53ZWVrZGF5cyhyLCAiIikudG9Mb2NhbGVMb3dlckNhc2UoKTsKICAgICAgICAgICAgcmV0dXJuIG4gPyAiZGRkZCIgPT09IHQgPyAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGEpKSA/IGkgOiBudWxsIDogImRkZCIgPT09IHQgPyAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgYSkpID8gaSA6IG51bGwgOiAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGEpKSA/IGkgOiBudWxsIDogImRkZGQiID09PSB0ID8gLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBhKSkgfHwgLTEgIT09IChpID0gd2UuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGEpKSB8fCAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGEpKSA/IGkgOiBudWxsIDogImRkZCIgPT09IHQgPyAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgYSkpIHx8IC0xICE9PSAoaSA9IHdlLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgYSkpIHx8IC0xICE9PSAoaSA9IHdlLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgYSkpID8gaSA6IG51bGwgOiAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGEpKSB8fCAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGEpKSB8fCAtMSAhPT0gKGkgPSB3ZS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgYSkpID8gaSA6IG51bGwKICAgICAgICB9LmNhbGwodGhpcywgZSwgdCwgbik7CiAgICAgICAgZm9yICh0aGlzLl93ZWVrZGF5c1BhcnNlIHx8ICh0aGlzLl93ZWVrZGF5c1BhcnNlID0gW10sIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXSwgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW10sIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlID0gW10pLCBzID0gMDsgcyA8IDc7IHMrKykgewogICAgICAgICAgICBpZiAoaSA9IF8oWzJlMywgMV0pLmRheShzKSwgbiAmJiAhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2Vbc10gJiYgKHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW3NdID0gbmV3IFJlZ0V4cCgiXiIgKyB0aGlzLndlZWtkYXlzKGksICIiKS5yZXBsYWNlKCIuIiwgIlxcLj8iKSArICIkIiwgImkiKSwgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3NdID0gbmV3IFJlZ0V4cCgiXiIgKyB0aGlzLndlZWtkYXlzU2hvcnQoaSwgIiIpLnJlcGxhY2UoIi4iLCAiXFwuPyIpICsgIiQiLCAiaSIpLCB0aGlzLl9taW5XZWVrZGF5c1BhcnNlW3NdID0gbmV3IFJlZ0V4cCgiXiIgKyB0aGlzLndlZWtkYXlzTWluKGksICIiKS5yZXBsYWNlKCIuIiwgIlxcLj8iKSArICIkIiwgImkiKSksIHRoaXMuX3dlZWtkYXlzUGFyc2Vbc10gfHwgKHIgPSAiXiIgKyB0aGlzLndlZWtkYXlzKGksICIiKSArICJ8XiIgKyB0aGlzLndlZWtkYXlzU2hvcnQoaSwgIiIpICsgInxeIiArIHRoaXMud2Vla2RheXNNaW4oaSwgIiIpLCB0aGlzLl93ZWVrZGF5c1BhcnNlW3NdID0gbmV3IFJlZ0V4cChyLnJlcGxhY2UoIi4iLCAiIiksICJpIikpLCBuICYmICJkZGRkIiA9PT0gdCAmJiB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtzXS50ZXN0KGUpKSByZXR1cm4gczsKICAgICAgICAgICAgaWYgKG4gJiYgImRkZCIgPT09IHQgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW3NdLnRlc3QoZSkpIHJldHVybiBzOwogICAgICAgICAgICBpZiAobiAmJiAiZGQiID09PSB0ICYmIHRoaXMuX21pbldlZWtkYXlzUGFyc2Vbc10udGVzdChlKSkgcmV0dXJuIHM7CiAgICAgICAgICAgIGlmICghbiAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW3NdLnRlc3QoZSkpIHJldHVybiBzCiAgICAgICAgfQogICAgfSwga24ud2Vla2RheXNSZWdleCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0ID8gKG0odGhpcywgIl93ZWVrZGF5c1JlZ2V4IikgfHwgUWUuY2FsbCh0aGlzKSwgZSA/IHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c1JlZ2V4KSA6IChtKHRoaXMsICJfd2Vla2RheXNSZWdleCIpIHx8ICh0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gcWUpLCB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ICYmIGUgPyB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNSZWdleCkKICAgIH0sIGtuLndlZWtkYXlzU2hvcnRSZWdleCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0ID8gKG0odGhpcywgIl93ZWVrZGF5c1JlZ2V4IikgfHwgUWUuY2FsbCh0aGlzKSwgZSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCkgOiAobSh0aGlzLCAiX3dlZWtkYXlzU2hvcnRSZWdleCIpIHx8ICh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBCZSksIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBlID8gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KQogICAgfSwga24ud2Vla2RheXNNaW5SZWdleCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0ID8gKG0odGhpcywgIl93ZWVrZGF5c1JlZ2V4IikgfHwgUWUuY2FsbCh0aGlzKSwgZSA/IHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4KSA6IChtKHRoaXMsICJfd2Vla2RheXNNaW5SZWdleCIpIHx8ICh0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gSmUpLCB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ICYmIGUgPyB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNNaW5SZWdleCkKICAgIH0sIGtuLmlzUE0gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuICJwIiA9PT0gKGUgKyAiIikudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkKICAgIH0sIGtuLm1lcmlkaWVtID0gZnVuY3Rpb24oZSwgdCwgbikgewogICAgICAgIHJldHVybiAxMSA8IGUgPyBuID8gInBtIiA6ICJQTSIgOiBuID8gImFtIiA6ICJBTSIKICAgIH0sIGx0KCJlbiIsIHsKICAgICAgICBlcmFzOiBbewogICAgICAgICAgICBzaW5jZTogIjAwMDEtMDEtMDEiLAogICAgICAgICAgICB1bnRpbDogMSAvIDAsCiAgICAgICAgICAgIG9mZnNldDogMSwKICAgICAgICAgICAgbmFtZTogIkFubm8gRG9taW5pIiwKICAgICAgICAgICAgbmFycm93OiAiQUQiLAogICAgICAgICAgICBhYmJyOiAiQUQiCiAgICAgICAgfSwgewogICAgICAgICAgICBzaW5jZTogIjAwMDAtMTItMzEiLAogICAgICAgICAgICB1bnRpbDogLTEgLyAwLAogICAgICAgICAgICBvZmZzZXQ6IDEsCiAgICAgICAgICAgIG5hbWU6ICJCZWZvcmUgQ2hyaXN0IiwKICAgICAgICAgICAgbmFycm93OiAiQkMiLAogICAgICAgICAgICBhYmJyOiAiQkMiCiAgICAgICAgfV0sCiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xkezEsMn0odGh8c3R8bmR8cmQpLywKICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0ID0gZSAlIDEwOwogICAgICAgICAgICByZXR1cm4gZSArICgxID09PSBaKGUgJSAxMDAgLyAxMCkgPyAidGgiIDogMSA9PSB0ID8gInN0IiA6IDIgPT0gdCA/ICJuZCIgOiAzID09IHQgPyAicmQiIDogInRoIikKICAgICAgICB9CiAgICB9KSwgZi5sYW5nID0gbigibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLCBsdCksIGYubGFuZ0RhdGEgPSBuKCJtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuIiwgZHQpOwogICAgdmFyIFluID0gTWF0aC5hYnM7CgogICAgZnVuY3Rpb24gT24oZSwgdCwgbiwgcykgewogICAgICAgIHZhciBpID0gWnQodCwgbik7CiAgICAgICAgcmV0dXJuIGUuX21pbGxpc2Vjb25kcyArPSBzICogaS5fbWlsbGlzZWNvbmRzLCBlLl9kYXlzICs9IHMgKiBpLl9kYXlzLCBlLl9tb250aHMgKz0gcyAqIGkuX21vbnRocywgZS5fYnViYmxlKCkKICAgIH0KCiAgICBmdW5jdGlvbiBibihlKSB7CiAgICAgICAgcmV0dXJuIGUgPCAwID8gTWF0aC5mbG9vcihlKSA6IE1hdGguY2VpbChlKQogICAgfQoKICAgIGZ1bmN0aW9uIHhuKGUpIHsKICAgICAgICByZXR1cm4gNDgwMCAqIGUgLyAxNDYwOTcKICAgIH0KCiAgICBmdW5jdGlvbiBUbihlKSB7CiAgICAgICAgcmV0dXJuIDE0NjA5NyAqIGUgLyA0ODAwCiAgICB9CgogICAgZnVuY3Rpb24gTm4oZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXMoZSkKICAgICAgICB9CiAgICB9CiAgICB2YXIgUG4gPSBObigibXMiKSwKICAgICAgICBSbiA9IE5uKCJzIiksCiAgICAgICAgV24gPSBObigibSIpLAogICAgICAgIENuID0gTm4oImgiKSwKICAgICAgICBVbiA9IE5uKCJkIiksCiAgICAgICAgSG4gPSBObigidyIpLAogICAgICAgIEZuID0gTm4oIk0iKSwKICAgICAgICBMbiA9IE5uKCJRIiksCiAgICAgICAgVm4gPSBObigieSIpOwoKICAgIGZ1bmN0aW9uIEduKGUpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2RhdGFbZV0gOiBOYU4KICAgICAgICB9CiAgICB9CiAgICB2YXIgRW4gPSBHbigibWlsbGlzZWNvbmRzIiksCiAgICAgICAgQW4gPSBHbigic2Vjb25kcyIpLAogICAgICAgIGpuID0gR24oIm1pbnV0ZXMiKSwKICAgICAgICBJbiA9IEduKCJob3VycyIpLAogICAgICAgIFpuID0gR24oImRheXMiKSwKICAgICAgICB6biA9IEduKCJtb250aHMiKSwKICAgICAgICAkbiA9IEduKCJ5ZWFycyIpOwogICAgdmFyIHFuID0gTWF0aC5yb3VuZCwKICAgICAgICBCbiA9IHsKICAgICAgICAgICAgc3M6IDQ0LAogICAgICAgICAgICBzOiA0NSwKICAgICAgICAgICAgbTogNDUsCiAgICAgICAgICAgIGg6IDIyLAogICAgICAgICAgICBkOiAyNiwKICAgICAgICAgICAgdzogbnVsbCwKICAgICAgICAgICAgTTogMTEKICAgICAgICB9OwoKICAgIGZ1bmN0aW9uIEpuKGUsIHQsIG4sIHMpIHsKICAgICAgICB2YXIgaSA9IFp0KGUpLmFicygpLAogICAgICAgICAgICByID0gcW4oaS5hcygicyIpKSwKICAgICAgICAgICAgYSA9IHFuKGkuYXMoIm0iKSksCiAgICAgICAgICAgIG8gPSBxbihpLmFzKCJoIikpLAogICAgICAgICAgICB1ID0gcW4oaS5hcygiZCIpKSwKICAgICAgICAgICAgbCA9IHFuKGkuYXMoIk0iKSksCiAgICAgICAgICAgIGggPSBxbihpLmFzKCJ3IikpLAogICAgICAgICAgICBkID0gcW4oaS5hcygieSIpKSwKICAgICAgICAgICAgYyA9IChyIDw9IG4uc3MgPyBbInMiLCByXSA6IHIgPCBuLnMgJiYgWyJzcyIsIHJdKSB8fCBhIDw9IDEgJiYgWyJtIl0gfHwgYSA8IG4ubSAmJiBbIm1tIiwgYV0gfHwgbyA8PSAxICYmIFsiaCJdIHx8IG8gPCBuLmggJiYgWyJoaCIsIG9dIHx8IHUgPD0gMSAmJiBbImQiXSB8fCB1IDwgbi5kICYmIFsiZGQiLCB1XTsKICAgICAgICByZXR1cm4gbnVsbCAhPSBuLncgJiYgKGMgPSBjIHx8IGggPD0gMSAmJiBbInciXSB8fCBoIDwgbi53ICYmIFsid3ciLCBoXSksIChjID0gYyB8fCBsIDw9IDEgJiYgWyJNIl0gfHwgbCA8IG4uTSAmJiBbIk1NIiwgbF0gfHwgZCA8PSAxICYmIFsieSJdIHx8IFsieXkiLCBkXSlbMl0gPSB0LCBjWzNdID0gMCA8ICtlLCBjWzRdID0gcywKICAgICAgICAgICAgZnVuY3Rpb24oZSwgdCwgbiwgcywgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGkucmVsYXRpdmVUaW1lKHQgfHwgMSwgISFuLCBlLCBzKQogICAgICAgICAgICB9LmFwcGx5KG51bGwsIGMpCiAgICB9CiAgICB2YXIgUW4gPSBNYXRoLmFiczsKCiAgICBmdW5jdGlvbiBYbihlKSB7CiAgICAgICAgcmV0dXJuICgwIDwgZSkgLSAoZSA8IDApIHx8ICtlCiAgICB9CgogICAgZnVuY3Rpb24gS24oKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7CiAgICAgICAgdmFyIGUsIHQsIG4sIHMsIGksIHIsIGEsIG8sIHUgPSBRbih0aGlzLl9taWxsaXNlY29uZHMpIC8gMWUzLAogICAgICAgICAgICBsID0gUW4odGhpcy5fZGF5cyksCiAgICAgICAgICAgIGggPSBRbih0aGlzLl9tb250aHMpLAogICAgICAgICAgICBkID0gdGhpcy5hc1NlY29uZHMoKTsKICAgICAgICByZXR1cm4gZCA/IChlID0gSSh1IC8gNjApLCB0ID0gSShlIC8gNjApLCB1ICU9IDYwLCBlICU9IDYwLCBuID0gSShoIC8gMTIpLCBoICU9IDEyLCBzID0gdSA/IHUudG9GaXhlZCgzKS5yZXBsYWNlKC9cLj8wKyQvLCAiIikgOiAiIiwgaSA9IGQgPCAwID8gIi0iIDogIiIsIHIgPSBYbih0aGlzLl9tb250aHMpICE9PSBYbihkKSA/ICItIiA6ICIiLCBhID0gWG4odGhpcy5fZGF5cykgIT09IFhuKGQpID8gIi0iIDogIiIsIG8gPSBYbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBYbihkKSA/ICItIiA6ICIiLCBpICsgIlAiICsgKG4gPyByICsgbiArICJZIiA6ICIiKSArIChoID8gciArIGggKyAiTSIgOiAiIikgKyAobCA/IGEgKyBsICsgIkQiIDogIiIpICsgKHQgfHwgZSB8fCB1ID8gIlQiIDogIiIpICsgKHQgPyBvICsgdCArICJIIiA6ICIiKSArIChlID8gbyArIGUgKyAiTSIgOiAiIikgKyAodSA/IG8gKyBzICsgIlMiIDogIiIpKSA6ICJQMEQiCiAgICB9CiAgICB2YXIgZXMgPSBDdC5wcm90b3R5cGU7CiAgICByZXR1cm4gZXMuaXNWYWxpZCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkCiAgICB9LCBlcy5hYnMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZSA9IHRoaXMuX2RhdGE7CiAgICAgICAgcmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcyA9IFluKHRoaXMuX21pbGxpc2Vjb25kcyksIHRoaXMuX2RheXMgPSBZbih0aGlzLl9kYXlzKSwgdGhpcy5fbW9udGhzID0gWW4odGhpcy5fbW9udGhzKSwgZS5taWxsaXNlY29uZHMgPSBZbihlLm1pbGxpc2Vjb25kcyksIGUuc2Vjb25kcyA9IFluKGUuc2Vjb25kcyksIGUubWludXRlcyA9IFluKGUubWludXRlcyksIGUuaG91cnMgPSBZbihlLmhvdXJzKSwgZS5tb250aHMgPSBZbihlLm1vbnRocyksIGUueWVhcnMgPSBZbihlLnllYXJzKSwgdGhpcwogICAgfSwgZXMuYWRkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiBPbih0aGlzLCBlLCB0LCAxKQogICAgfSwgZXMuc3VidHJhY3QgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIE9uKHRoaXMsIGUsIHQsIC0xKQogICAgfSwgZXMuYXMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIE5hTjsKICAgICAgICB2YXIgdCwgbiwgcyA9IHRoaXMuX21pbGxpc2Vjb25kczsKICAgICAgICBpZiAoIm1vbnRoIiA9PT0gKGUgPSBWKGUpKSB8fCAicXVhcnRlciIgPT09IGUgfHwgInllYXIiID09PSBlKSBzd2l0Y2ggKHQgPSB0aGlzLl9kYXlzICsgcyAvIDg2NGU1LCBuID0gdGhpcy5fbW9udGhzICsgeG4odCksIGUpIHsKICAgICAgICAgICAgY2FzZSAibW9udGgiOgogICAgICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgICAgIGNhc2UgInF1YXJ0ZXIiOgogICAgICAgICAgICAgICAgcmV0dXJuIG4gLyAzOwogICAgICAgICAgICBjYXNlICJ5ZWFyIjoKICAgICAgICAgICAgICAgIHJldHVybiBuIC8gMTIKICAgICAgICB9IGVsc2Ugc3dpdGNoICh0ID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQoVG4odGhpcy5fbW9udGhzKSksIGUpIHsKICAgICAgICAgICAgY2FzZSAid2VlayI6CiAgICAgICAgICAgICAgICByZXR1cm4gdCAvIDcgKyBzIC8gNjA0OGU1OwogICAgICAgICAgICBjYXNlICJkYXkiOgogICAgICAgICAgICAgICAgcmV0dXJuIHQgKyBzIC8gODY0ZTU7CiAgICAgICAgICAgIGNhc2UgImhvdXIiOgogICAgICAgICAgICAgICAgcmV0dXJuIDI0ICogdCArIHMgLyAzNmU1OwogICAgICAgICAgICBjYXNlICJtaW51dGUiOgogICAgICAgICAgICAgICAgcmV0dXJuIDE0NDAgKiB0ICsgcyAvIDZlNDsKICAgICAgICAgICAgY2FzZSAic2Vjb25kIjoKICAgICAgICAgICAgICAgIHJldHVybiA4NjQwMCAqIHQgKyBzIC8gMWUzOwogICAgICAgICAgICBjYXNlICJtaWxsaXNlY29uZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcig4NjRlNSAqIHQpICsgczsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIgKyBlKQogICAgICAgIH0KICAgIH0sIGVzLmFzTWlsbGlzZWNvbmRzID0gUG4sIGVzLmFzU2Vjb25kcyA9IFJuLCBlcy5hc01pbnV0ZXMgPSBXbiwgZXMuYXNIb3VycyA9IENuLCBlcy5hc0RheXMgPSBVbiwgZXMuYXNXZWVrcyA9IEhuLCBlcy5hc01vbnRocyA9IEZuLCBlcy5hc1F1YXJ0ZXJzID0gTG4sIGVzLmFzWWVhcnMgPSBWbiwgZXMudmFsdWVPZiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX21pbGxpc2Vjb25kcyArIDg2NGU1ICogdGhpcy5fZGF5cyArIHRoaXMuX21vbnRocyAlIDEyICogMjU5MmU2ICsgMzE1MzZlNiAqIFoodGhpcy5fbW9udGhzIC8gMTIpIDogTmFOCiAgICB9LCBlcy5fYnViYmxlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGUsIHQsIG4sIHMsIGksIHIgPSB0aGlzLl9taWxsaXNlY29uZHMsCiAgICAgICAgICAgIGEgPSB0aGlzLl9kYXlzLAogICAgICAgICAgICBvID0gdGhpcy5fbW9udGhzLAogICAgICAgICAgICB1ID0gdGhpcy5fZGF0YTsKICAgICAgICByZXR1cm4gMCA8PSByICYmIDAgPD0gYSAmJiAwIDw9IG8gfHwgciA8PSAwICYmIGEgPD0gMCAmJiBvIDw9IDAgfHwgKHIgKz0gODY0ZTUgKiBibihUbihvKSArIGEpLCBvID0gYSA9IDApLCB1Lm1pbGxpc2Vjb25kcyA9IHIgJSAxZTMsIGUgPSBJKHIgLyAxZTMpLCB1LnNlY29uZHMgPSBlICUgNjAsIHQgPSBJKGUgLyA2MCksIHUubWludXRlcyA9IHQgJSA2MCwgbiA9IEkodCAvIDYwKSwgdS5ob3VycyA9IG4gJSAyNCwgYSArPSBJKG4gLyAyNCksIG8gKz0gaSA9IEkoeG4oYSkpLCBhIC09IGJuKFRuKGkpKSwgcyA9IEkobyAvIDEyKSwgbyAlPSAxMiwgdS5kYXlzID0gYSwgdS5tb250aHMgPSBvLCB1LnllYXJzID0gcywgdGhpcwogICAgfSwgZXMuY2xvbmUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gWnQodGhpcykKICAgIH0sIGVzLmdldCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gZSA9IFYoZSksIHRoaXMuaXNWYWxpZCgpID8gdGhpc1tlICsgInMiXSgpIDogTmFOCiAgICB9LCBlcy5taWxsaXNlY29uZHMgPSBFbiwgZXMuc2Vjb25kcyA9IEFuLCBlcy5taW51dGVzID0gam4sIGVzLmhvdXJzID0gSW4sIGVzLmRheXMgPSBabiwgZXMud2Vla3MgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gSSh0aGlzLmRheXMoKSAvIDcpCiAgICB9LCBlcy5tb250aHMgPSB6biwgZXMueWVhcnMgPSAkbiwgZXMuaHVtYW5pemUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7CiAgICAgICAgdmFyIG4sIHMsIGkgPSAhMSwKICAgICAgICAgICAgciA9IEJuOwogICAgICAgIHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAodCA9IGUsIGUgPSAhMSksICJib29sZWFuIiA9PSB0eXBlb2YgZSAmJiAoaSA9IGUpLCAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAociA9IE9iamVjdC5hc3NpZ24oe30sIEJuLCB0KSwgbnVsbCAhPSB0LnMgJiYgbnVsbCA9PSB0LnNzICYmIChyLnNzID0gdC5zIC0gMSkpLCBuID0gdGhpcy5sb2NhbGVEYXRhKCksIHMgPSBKbih0aGlzLCAhaSwgciwgbiksIGkgJiYgKHMgPSBuLnBhc3RGdXR1cmUoK3RoaXMsIHMpKSwgbi5wb3N0Zm9ybWF0KHMpCiAgICB9LCBlcy50b0lTT1N0cmluZyA9IEtuLCBlcy50b1N0cmluZyA9IEtuLCBlcy50b0pTT04gPSBLbiwgZXMubG9jYWxlID0gdG4sIGVzLmxvY2FsZURhdGEgPSBzbiwgZXMudG9Jc29TdHJpbmcgPSBuKCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsIEtuKSwgZXMubGFuZyA9IG5uLCBDKCJYIiwgMCwgMCwgInVuaXgiKSwgQygieCIsIDAsIDAsICJ2YWx1ZU9mIiksIGNlKCJ4IiwgdWUpLCBjZSgiWCIsIC9bKy1dP1xkKyhcLlxkezEsM30pPy8pLCB5ZSgiWCIsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICBuLl9kID0gbmV3IERhdGUoMWUzICogcGFyc2VGbG9hdChlKSkKICAgIH0pLCB5ZSgieCIsIGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICBuLl9kID0gbmV3IERhdGUoWihlKSkKICAgIH0pLCBmLnZlcnNpb24gPSAiMi4yOS4xIiwgZSA9IFR0LCBmLmZuID0gcG4sIGYubWluID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIFJ0KCJpc0JlZm9yZSIsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSkKICAgIH0sIGYubWF4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIFJ0KCJpc0FmdGVyIiwgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKQogICAgfSwgZi5ub3cgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gRGF0ZS5ub3cgPyBEYXRlLm5vdygpIDogK25ldyBEYXRlCiAgICB9LCBmLnV0YyA9IF8sIGYudW5peCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gVHQoMWUzICogZSkKICAgIH0sIGYubW9udGhzID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiBEbihlLCB0LCAibW9udGhzIikKICAgIH0sIGYuaXNEYXRlID0gYSwgZi5sb2NhbGUgPSBsdCwgZi5pbnZhbGlkID0gdywgZi5kdXJhdGlvbiA9IFp0LCBmLmlzTW9tZW50ID0gTSwgZi53ZWVrZGF5cyA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gU24oZSwgdCwgbiwgIndlZWtkYXlzIikKICAgIH0sIGYucGFyc2Vab25lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIFR0LmFwcGx5KG51bGwsIGFyZ3VtZW50cykucGFyc2Vab25lKCkKICAgIH0sIGYubG9jYWxlRGF0YSA9IGR0LCBmLmlzRHVyYXRpb24gPSBVdCwgZi5tb250aHNTaG9ydCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICByZXR1cm4gRG4oZSwgdCwgIm1vbnRoc1Nob3J0IikKICAgIH0sIGYud2Vla2RheXNNaW4gPSBmdW5jdGlvbihlLCB0LCBuKSB7CiAgICAgICAgcmV0dXJuIFNuKGUsIHQsIG4sICJ3ZWVrZGF5c01pbiIpCiAgICB9LCBmLmRlZmluZUxvY2FsZSA9IGh0LCBmLnVwZGF0ZUxvY2FsZSA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICB2YXIgbiwgcywgaTsKICAgICAgICByZXR1cm4gbnVsbCAhPSB0ID8gKGkgPSBzdCwgbnVsbCAhPSBpdFtlXSAmJiBudWxsICE9IGl0W2VdLnBhcmVudExvY2FsZSA/IGl0W2VdLnNldChiKGl0W2VdLl9jb25maWcsIHQpKSA6IChudWxsICE9IChzID0gdXQoZSkpICYmIChpID0gcy5fY29uZmlnKSwgdCA9IGIoaSwgdCksIG51bGwgPT0gcyAmJiAodC5hYmJyID0gZSksIChuID0gbmV3IHgodCkpLnBhcmVudExvY2FsZSA9IGl0W2VdLCBpdFtlXSA9IG4pLCBsdChlKSkgOiBudWxsICE9IGl0W2VdICYmIChudWxsICE9IGl0W2VdLnBhcmVudExvY2FsZSA/IChpdFtlXSA9IGl0W2VdLnBhcmVudExvY2FsZSwgZSA9PT0gbHQoKSAmJiBsdChlKSkgOiBudWxsICE9IGl0W2VdICYmIGRlbGV0ZSBpdFtlXSksIGl0W2VdCiAgICB9LCBmLmxvY2FsZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gcyhpdCkKICAgIH0sIGYud2Vla2RheXNTaG9ydCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHsKICAgICAgICByZXR1cm4gU24oZSwgdCwgbiwgIndlZWtkYXlzU2hvcnQiKQogICAgfSwgZi5ub3JtYWxpemVVbml0cyA9IFYsIGYucmVsYXRpdmVUaW1lUm91bmRpbmcgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IHFuIDogImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiAocW4gPSBlLCAhMCkKICAgIH0sIGYucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgIHJldHVybiB2b2lkIDAgIT09IEJuW2VdICYmICh2b2lkIDAgPT09IHQgPyBCbltlXSA6IChCbltlXSA9IHQsICJzIiA9PT0gZSAmJiAoQm4uc3MgPSB0IC0gMSksICEwKSkKICAgIH0sIGYuY2FsZW5kYXJGb3JtYXQgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgdmFyIG4gPSBlLmRpZmYodCwgImRheXMiLCAhMCk7CiAgICAgICAgcmV0dXJuIG4gPCAtNiA/ICJzYW1lRWxzZSIgOiBuIDwgLTEgPyAibGFzdFdlZWsiIDogbiA8IDAgPyAibGFzdERheSIgOiBuIDwgMSA/ICJzYW1lRGF5IiA6IG4gPCAyID8gIm5leHREYXkiIDogbiA8IDcgPyAibmV4dFdlZWsiIDogInNhbWVFbHNlIgogICAgfSwgZi5wcm90b3R5cGUgPSBwbiwgZi5IVE1MNV9GTVQgPSB7CiAgICAgICAgREFURVRJTUVfTE9DQUw6ICJZWVlZLU1NLUREVEhIOm1tIiwKICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAiWVlZWS1NTS1ERFRISDptbTpzcyIsCiAgICAgICAgREFURVRJTUVfTE9DQUxfTVM6ICJZWVlZLU1NLUREVEhIOm1tOnNzLlNTUyIsCiAgICAgICAgREFURTogIllZWVktTU0tREQiLAogICAgICAgIFRJTUU6ICJISDptbSIsCiAgICAgICAgVElNRV9TRUNPTkRTOiAiSEg6bW06c3MiLAogICAgICAgIFRJTUVfTVM6ICJISDptbTpzcy5TU1MiLAogICAgICAgIFdFRUs6ICJHR0dHLVtXXVdXIiwKICAgICAgICBNT05USDogIllZWVktTU0iCiAgICB9LCBmCn0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1tb21lbnQubWluLmpzLm1hcA=="}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/default.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.783Z","timestamp":1785159464783,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/default.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1031\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":7923,"size_decoded":1340,"mime_type":"text/css","magic":"ASCII text","md5":"27e72a40c8ee2ae04a64faaf95f83b87","sha1":"adcf994e8fa5f14e886befdc9285e72e6efb1d1c","sha256":"d28b5ef42b1a1a63a04e35d2f84e82345f13beebc9792c780cc9c4ccbcd23391","sha512":"18b9a7be4411de25b7001ffb08ccaaf0ee2afdfdb069c7bea8bd92378054398bf627599c8116c8b9298187a57a115c6ca566fdd67e784aee1a64a704d80807cb","ssdeep":"96:8QaT/CY2GCMyTE6La+2LNohA3ENGPfMBpoPEtsXkFkNrghSJU+EGR0xZM5MJmuey:hw6MdDyRg+3pH25W","tlshash":"38f110937a932cc8d10f68e5cfaba1a0e75e18935ecf76d3ad40664edcc42ea815344d","first_seen":"2023-05-04T01:46:35Z","last_seen":"2026-07-27T13:38:47.782252Z","times_seen":195,"resource_available":false,"data":"LyogRGVhZnVsdCBNYXJnaW4gJiBQYWRkaW5nICovCi8qLS0gTWFyZ2luIFRvcCAtLSovCi5tdC01IHsKCW1hcmdpbi10b3A6IDVweDsKfQoubXQtMTAgewoJbWFyZ2luLXRvcDogMTBweDsKfQoubXQtMTUgewoJbWFyZ2luLXRvcDogMTVweDsKfQoubXQtMjAgewoJbWFyZ2luLXRvcDogMjBweDsKfQoubXQtMjUgewoJbWFyZ2luLXRvcDogMjVweDsKfQoubXQtMzAgewoJbWFyZ2luLXRvcDogMzBweDsKfQoubXQtMzUgewoJbWFyZ2luLXRvcDogMzVweDsKfQoubXQtNDAgewoJbWFyZ2luLXRvcDogNDBweDsKfQoubXQtNDUgewoJbWFyZ2luLXRvcDogNDVweDsKfQoubXQtNTAgewoJbWFyZ2luLXRvcDogNTBweDsKfQoubXQtNTUgewoJbWFyZ2luLXRvcDogNTVweDsKfQoubXQtNjAgewoJbWFyZ2luLXRvcDogNjBweDsKfQoubXQtNjUgewoJbWFyZ2luLXRvcDogNjVweDsKfQoubXQtNzAgewoJbWFyZ2luLXRvcDogNzBweDsKfQoubXQtNzUgewoJbWFyZ2luLXRvcDogNzVweDsKfQoubXQtODAgewoJbWFyZ2luLXRvcDogODBweDsKfQoubXQtODUgewoJbWFyZ2luLXRvcDogODVweDsKfQoubXQtOTAgewoJbWFyZ2luLXRvcDogOTBweDsKfQoubXQtOTUgewoJbWFyZ2luLXRvcDogOTVweDsKfQoubXQtMTAwIHsKCW1hcmdpbi10b3A6IDEwMHB4Owp9Ci5tdC0xMDUgewoJbWFyZ2luLXRvcDogMTA1cHg7Cn0KLm10LTExMCB7CgltYXJnaW4tdG9wOiAxMTBweDsKfQoubXQtMTE1IHsKCW1hcmdpbi10b3A6IDExNXB4Owp9Ci5tdC0xMjAgewoJbWFyZ2luLXRvcDogMTIwcHg7Cn0KLm10LTEyNSB7CgltYXJnaW4tdG9wOiAxMjVweDsKfQoubXQtMTMwIHsKCW1hcmdpbi10b3A6IDEzMHB4Owp9Ci5tdC0xMzUgewoJbWFyZ2luLXRvcDogMTM1cHg7Cn0KLm10LTE0MCB7CgltYXJnaW4tdG9wOiAxNDBweDsKfQoubXQtMTQ1IHsKCW1hcmdpbi10b3A6IDE0NXB4Owp9Ci5tdC0xNTAgewoJbWFyZ2luLXRvcDogMTUwcHg7Cn0KLm10LTE1NSB7CgltYXJnaW4tdG9wOiAxNTVweDsKfQoubXQtMTYwIHsKCW1hcmdpbi10b3A6IDE2MHB4Owp9Ci5tdC0xNjUgewoJbWFyZ2luLXRvcDogMTY1cHg7Cn0KLm10LTE3MCB7CgltYXJnaW4tdG9wOiAxNzBweDsKfQoubXQtMTc1IHsKCW1hcmdpbi10b3A6IDE3NXB4Owp9Ci5tdC0xODAgewoJbWFyZ2luLXRvcDogMTgwcHg7Cn0KLm10LTE4NSB7CgltYXJnaW4tdG9wOiAxODVweDsKfQoubXQtMTkwIHsKCW1hcmdpbi10b3A6IDE5MHB4Owp9Ci5tdC0xOTUgewoJbWFyZ2luLXRvcDogMTk1cHg7Cn0KLm10LTIwMCB7CgltYXJnaW4tdG9wOiAyMDBweDsKfQovKi0tIE1hcmdpbiBCb3R0b20gLS0qLwoKLm1iLTUgewoJbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci5tYi0xMCB7CgltYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5tYi0xNSB7CgltYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5tYi0yMCB7CgltYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5tYi0yNSB7CgltYXJnaW4tYm90dG9tOiAyNXB4Owp9Ci5tYi0zMCB7CgltYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5tYi0zNSB7CgltYXJnaW4tYm90dG9tOiAzNXB4Owp9Ci5tYi00MCB7CgltYXJnaW4tYm90dG9tOiA0MHB4Owp9Ci5tYi00NSB7CgltYXJnaW4tYm90dG9tOiA0NXB4Owp9Ci5tYi01MCB7CgltYXJnaW4tYm90dG9tOiA1MHB4Owp9Ci5tYi01NSB7CgltYXJnaW4tYm90dG9tOiA1NXB4Owp9Ci5tYi02MCB7CgltYXJnaW4tYm90dG9tOiA2MHB4Owp9Ci5tYi02NSB7CgltYXJnaW4tYm90dG9tOiA2NXB4Owp9Ci5tYi03MCB7CgltYXJnaW4tYm90dG9tOiA3MHB4Owp9Ci5tYi03NSB7CgltYXJnaW4tYm90dG9tOiA3NXB4Owp9Ci5tYi04MCB7CgltYXJnaW4tYm90dG9tOiA4MHB4Owp9Ci5tYi04NSB7CgltYXJnaW4tYm90dG9tOiA4NXB4Owp9Ci5tYi05MCB7CgltYXJnaW4tYm90dG9tOiA5MHB4Owp9Ci5tYi05NSB7CgltYXJnaW4tYm90dG9tOiA5NXB4Owp9Ci5tYi0xMDAgewoJbWFyZ2luLWJvdHRvbTogMTAwcHg7Cn0KLm1iLTEwNSB7CgltYXJnaW4tYm90dG9tOiAxMDVweDsKfQoubWItMTEwIHsKCW1hcmdpbi1ib3R0b206IDExMHB4Owp9Ci5tYi0xMTUgewoJbWFyZ2luLWJvdHRvbTogMTE1cHg7Cn0KLm1iLTEyMCB7CgltYXJnaW4tYm90dG9tOiAxMjBweDsKfQoubWItMTI1IHsKCW1hcmdpbi1ib3R0b206IDEyNXB4Owp9Ci5tYi0xMzAgewoJbWFyZ2luLWJvdHRvbTogMTMwcHg7Cn0KLm1iLTEzNSB7CgltYXJnaW4tYm90dG9tOiAxMzVweDsKfQoubWItMTQwIHsKCW1hcmdpbi1ib3R0b206IDE0MHB4Owp9Ci5tYi0xNDUgewoJbWFyZ2luLWJvdHRvbTogMTQ1cHg7Cn0KLm1iLTE1MCB7CgltYXJnaW4tYm90dG9tOiAxNTBweDsKfQoubWItMTU1IHsKCW1hcmdpbi1ib3R0b206IDE1NXB4Owp9Ci5tYi0xNjAgewoJbWFyZ2luLWJvdHRvbTogMTYwcHg7Cn0KLm1iLTE2NSB7CgltYXJnaW4tYm90dG9tOiAxNjVweDsKfQoubWItMTcwIHsKCW1hcmdpbi1ib3R0b206IDE3MHB4Owp9Ci5tYi0xNzUgewoJbWFyZ2luLWJvdHRvbTogMTc1cHg7Cn0KLm1iLTE4MCB7CgltYXJnaW4tYm90dG9tOiAxODBweDsKfQoubWItMTg1IHsKCW1hcmdpbi1ib3R0b206IDE4NXB4Owp9Ci5tYi0xOTAgewoJbWFyZ2luLWJvdHRvbTogMTkwcHg7Cn0KLm1iLTE5NSB7CgltYXJnaW4tYm90dG9tOiAxOTVweDsKfQoubWItMjAwIHsKCW1hcmdpbi1ib3R0b206IDIwMHB4Owp9Ci8qLS0gUGFkZGluZyBUb3AgLS0qLwoKLnB0LTUgewoJcGFkZGluZy10b3A6IDVweDsKfQoucHQtMTAgewoJcGFkZGluZy10b3A6IDEwcHg7Cn0KLnB0LTE1IHsKCXBhZGRpbmctdG9wOiAxNXB4Owp9Ci5wdC0yMCB7CglwYWRkaW5nLXRvcDogMjBweDsKfQoucHQtMjUgewoJcGFkZGluZy10b3A6IDI1cHg7Cn0KLnB0LTMwIHsKCXBhZGRpbmctdG9wOiAzMHB4Owp9Ci5wdC0zNSB7CglwYWRkaW5nLXRvcDogMzVweDsKfQoucHQtNDAgewoJcGFkZGluZy10b3A6IDQwcHg7Cn0KLnB0LTQ1IHsKCXBhZGRpbmctdG9wOiA0NXB4Owp9Ci5wdC01MCB7CglwYWRkaW5nLXRvcDogNTBweDsKfQoucHQtNTUgewoJcGFkZGluZy10b3A6IDU1cHg7Cn0KLnB0LTYwIHsKCXBhZGRpbmctdG9wOiA2MHB4Owp9Ci5wdC02NSB7CglwYWRkaW5nLXRvcDogNjVweDsKfQoucHQtNzAgewoJcGFkZGluZy10b3A6IDcwcHg7Cn0KLnB0LTc1IHsKCXBhZGRpbmctdG9wOiA3NXB4Owp9Ci5wdC04MCB7CglwYWRkaW5nLXRvcDogODBweDsKfQoucHQtODUgewoJcGFkZGluZy10b3A6IDg1cHg7Cn0KLnB0LTkwIHsKCXBhZGRpbmctdG9wOiA5MHB4Owp9Ci5wdC05NSB7CglwYWRkaW5nLXRvcDogOTVweDsKfQoucHQtMTAwIHsKCXBhZGRpbmctdG9wOiAxMDBweDsKfQoucHQtMTA1IHsKCXBhZGRpbmctdG9wOiAxMDVweDsKfQoucHQtMTEwIHsKCXBhZGRpbmctdG9wOiAxMTBweDsKfQoucHQtMTE1IHsKCXBhZGRpbmctdG9wOiAxMTVweDsKfQoucHQtMTIwIHsKCXBhZGRpbmctdG9wOiAxMjBweDsKfQoucHQtMTI1IHsKCXBhZGRpbmctdG9wOiAxMjVweDsKfQoucHQtMTMwIHsKCXBhZGRpbmctdG9wOiAxMzBweDsKfQoucHQtMTM1IHsKCXBhZGRpbmctdG9wOiAxMzVweDsKfQoucHQtMTQwIHsKCXBhZGRpbmctdG9wOiAxNDBweDsKfQoucHQtMTQ1IHsKCXBhZGRpbmctdG9wOiAxNDVweDsKfQoucHQtMTUwIHsKCXBhZGRpbmctdG9wOiAxNTBweDsKfQoucHQtMTU1IHsKCXBhZGRpbmctdG9wOiAxNTVweDsKfQoucHQtMTYwIHsKCXBhZGRpbmctdG9wOiAxNjBweDsKfQoucHQtMTY1IHsKCXBhZGRpbmctdG9wOiAxNjVweDsKfQoucHQtMTcwIHsKCXBhZGRpbmctdG9wOiAxNzBweDsKfQoucHQtMTc1IHsKCXBhZGRpbmctdG9wOiAxNzVweDsKfQoucHQtMTgwIHsKCXBhZGRpbmctdG9wOiAxODBweDsKfQoucHQtMTg1IHsKCXBhZGRpbmctdG9wOiAxODVweDsKfQoucHQtMTkwIHsKCXBhZGRpbmctdG9wOiAxOTBweDsKfQoucHQtMTk1IHsKCXBhZGRpbmctdG9wOiAxOTVweDsKfQoucHQtMjAwIHsKCXBhZGRpbmctdG9wOiAyMDBweDsKfQovKi0tIFBhZGRpbmcgQm90dG9tIC0tKi8KCi5wYi01IHsKCXBhZGRpbmctYm90dG9tOiA1cHg7Cn0KLnBiLTEwIHsKCXBhZGRpbmctYm90dG9tOiAxMHB4Owp9Ci5wYi0xNSB7CglwYWRkaW5nLWJvdHRvbTogMTVweDsKfQoucGItMjAgewoJcGFkZGluZy1ib3R0b206IDIwcHg7Cn0KLnBiLTI1IHsKCXBhZGRpbmctYm90dG9tOiAyNXB4Owp9Ci5wYi0zMCB7CglwYWRkaW5nLWJvdHRvbTogMzBweDsKfQoucGItMzUgewoJcGFkZGluZy1ib3R0b206IDM1cHg7Cn0KLnBiLTQwIHsKCXBhZGRpbmctYm90dG9tOiA0MHB4Owp9Ci5wYi00NSB7CglwYWRkaW5nLWJvdHRvbTogNDVweDsKfQoucGItNTAgewoJcGFkZGluZy1ib3R0b206IDUwcHg7Cn0KLnBiLTU1IHsKCXBhZGRpbmctYm90dG9tOiA1NXB4Owp9Ci5wYi02MCB7CglwYWRkaW5nLWJvdHRvbTogNjBweDsKfQoucGItNjUgewoJcGFkZGluZy1ib3R0b206IDY1cHg7Cn0KLnBiLTcwIHsKCXBhZGRpbmctYm90dG9tOiA3MHB4Owp9Ci5wYi03NSB7CglwYWRkaW5nLWJvdHRvbTogNzVweDsKfQoucGItODAgewoJcGFkZGluZy1ib3R0b206IDgwcHg7Cn0KLnBiLTg1IHsKCXBhZGRpbmctYm90dG9tOiA4NXB4Owp9Ci5wYi05MCB7CglwYWRkaW5nLWJvdHRvbTogOTBweDsKfQoucGItOTUgewoJcGFkZGluZy1ib3R0b206IDk1cHg7Cn0KLnBiLTEwMCB7CglwYWRkaW5nLWJvdHRvbTogMTAwcHg7Cn0KLnBiLTEwNSB7CglwYWRkaW5nLWJvdHRvbTogMTA1cHg7Cn0KLnBiLTExMCB7CglwYWRkaW5nLWJvdHRvbTogMTEwcHg7Cn0KLnBiLTExNSB7CglwYWRkaW5nLWJvdHRvbTogMTE1cHg7Cn0KLnBiLTEyMCB7CglwYWRkaW5nLWJvdHRvbTogMTIwcHg7Cn0KLnBiLTEyNSB7CglwYWRkaW5nLWJvdHRvbTogMTI1cHg7Cn0KLnBiLTEzMCB7CglwYWRkaW5nLWJvdHRvbTogMTMwcHg7Cn0KLnBiLTEzNSB7CglwYWRkaW5nLWJvdHRvbTogMTM1cHg7Cn0KLnBiLTE0MCB7CglwYWRkaW5nLWJvdHRvbTogMTQwcHg7Cn0KLnBiLTE0NSB7CglwYWRkaW5nLWJvdHRvbTogMTQ1cHg7Cn0KLnBiLTE1MCB7CglwYWRkaW5nLWJvdHRvbTogMTUwcHg7Cn0KLnBiLTE1NSB7CglwYWRkaW5nLWJvdHRvbTogMTU1cHg7Cn0KLnBiLTE2MCB7CglwYWRkaW5nLWJvdHRvbTogMTYwcHg7Cn0KLnBiLTE2NSB7CglwYWRkaW5nLWJvdHRvbTogMTY1cHg7Cn0KLnBiLTE3MCB7CglwYWRkaW5nLWJvdHRvbTogMTcwcHg7Cn0KLnBiLTE3NSB7CglwYWRkaW5nLWJvdHRvbTogMTc1cHg7Cn0KLnBiLTE4MCB7CglwYWRkaW5nLWJvdHRvbTogMTgwcHg7Cn0KLnBiLTE4NSB7CglwYWRkaW5nLWJvdHRvbTogMTg1cHg7Cn0KLnBiLTE5MCB7CglwYWRkaW5nLWJvdHRvbTogMTkwcHg7Cn0KLnBiLTE5NSB7CglwYWRkaW5nLWJvdHRvbTogMTk1cHg7Cn0KLnBiLTIwMCB7CglwYWRkaW5nLWJvdHRvbTogMjAwcHg7Cn0KCgoKLyotLSBQYWRkaW5nIExlZnQgLS0qLwoucGwtMCB7CglwYWRkaW5nLWxlZnQ6IDBweDsKfQoucGwtNSB7CglwYWRkaW5nLWxlZnQ6IDVweDsKfQoucGwtMTAgewoJcGFkZGluZy1sZWZ0OiAxMHB4Owp9Ci5wbC0xNSB7CglwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KLnBsLTIwewoJcGFkZGluZy1sZWZ0OiAyMHB4Owp9Ci5wbC0yNSB7CglwYWRkaW5nLWxlZnQ6IDM1cHg7Cn0KLnBsLTMwIHsKCXBhZGRpbmctbGVmdDogMzBweDsKfQoucGwtMzUgewoJcGFkZGluZy1sZWZ0OiAzNXB4Owp9CgoucGwtMzUgewoJcGFkZGluZy1sZWZ0OiAzNXB4Owp9CgoucGwtNDAgewoJcGFkZGluZy1sZWZ0OiA0MHB4Owp9CgoucGwtNDUgewoJcGFkZGluZy1sZWZ0OiA0NXB4Owp9CgoucGwtNTAgewoJcGFkZGluZy1sZWZ0OiA1MHB4Owp9CgoucGwtNTUgewoJcGFkZGluZy1sZWZ0OiA1NXB4Owp9CgoucGwtNjAgewoJcGFkZGluZy1sZWZ0OiA2MHB4Owp9Ci5wbC02NSB7CglwYWRkaW5nLWxlZnQ6IDY1cHg7Cn0KLnBsLTcwIHsKCXBhZGRpbmctbGVmdDogNzBweDsKfQoucGwtNzUgewoJcGFkZGluZy1sZWZ0OiA3NXB4Owp9Ci5wbC04MCB7CglwYWRkaW5nLWxlZnQ6IDgwcHg7Cn0KLnBsLTg1IHsKCXBhZGRpbmctbGVmdDogODBweDsKfQoucGwtOTAgewoJcGFkZGluZy1sZWZ0OiA5MHB4Owp9Ci5wbC05NSB7CglwYWRkaW5nLWxlZnQ6IDk1cHg7Cn0KLnBsLTEwMCB7CglwYWRkaW5nLWxlZnQ6IDEwMHB4Owp9CgoKLyotLSBQYWRkaW5nIFJpZ2h0IC0tKi8KLnByLTAgewoJcGFkZGluZy1yaWdodDogMHB4Owp9Ci5wci01IHsKCXBhZGRpbmctcmlnaHQ6IDVweDsKfQoucHItMTAgewoJcGFkZGluZy1yaWdodDogMTBweDsKfQoucHItMTUgewoJcGFkZGluZy1yaWdodDogMTVweDsKfQoucHItMjB7CglwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9Ci5wci0yNSB7CglwYWRkaW5nLXJpZ2h0OiAzNXB4Owp9Ci5wci0zMCB7CglwYWRkaW5nLXJpZ2h0OiAzMHB4Owp9Ci5wci0zNSB7CglwYWRkaW5nLXJpZ2h0OiAzNXB4Owp9CgoucHItMzUgewoJcGFkZGluZy1yaWdodDogMzVweDsKfQoKLnByLTQwIHsKCXBhZGRpbmctcmlnaHQ6IDQwcHg7Cn0KCi5wci00NSB7CglwYWRkaW5nLXJpZ2h0OiA0NXB4Owp9CgoucHItNTAgewoJcGFkZGluZy1yaWdodDogNTBweDsKfQoKLnByLTU1IHsKCXBhZGRpbmctcmlnaHQ6IDU1cHg7Cn0KCi5wci02MCB7CglwYWRkaW5nLXJpZ2h0OiA2MHB4Owp9Ci5wci02NSB7CglwYWRkaW5nLXJpZ2h0OiA2NXB4Owp9Ci5wci03MCB7CglwYWRkaW5nLXJpZ2h0OiA3MHB4Owp9Ci5wci03NSB7CglwYWRkaW5nLXJpZ2h0OiA3NXB4Owp9Ci5wci04MCB7CglwYWRkaW5nLXJpZ2h0OiA4MHB4Owp9Ci5wci04NSB7CglwYWRkaW5nLXJpZ2h0OiA4MHB4Owp9Ci5wci05MCB7CglwYWRkaW5nLXJpZ2h0OiA5MHB4Owp9Ci5wci05NSB7CglwYWRkaW5nLXJpZ2h0OiA5NXB4Owp9Ci5wci0xMDAgewoJcGFkZGluZy1yaWdodDogMTAwcHg7Cn0KCi8qIGZvbnQgd2VpZ2h0ICovCi5mLTcwMHtmb250LXdlaWdodDogNzAwO30KLmYtNjAwe2ZvbnQtd2VpZ2h0OiA2MDA7fQouZi01MDB7Zm9udC13ZWlnaHQ6IDUwMDt9Ci5mLTQwMHtmb250LXdlaWdodDogNDAwO30KLmYtMzAwe2ZvbnQtd2VpZ2h0OiAzMDA7fQoKLyogQmFja2dyb3VuZCBDb2xvciAqLwoKLmdyYXktYmcgewoJYmFja2dyb3VuZDogI2Y3ZjdmZDsKfQoud2hpdGUtYmcgewoJYmFja2dyb3VuZDogI2ZmZjsKfQouYmxhY2stYmcgewoJYmFja2dyb3VuZDogIzIyMjsKfQoudGhlbWUtYmcgewoJYmFja2dyb3VuZDogIzIyMjsKfQoucHJpbWFyeS1iZyB7CgliYWNrZ3JvdW5kOiAjMjIyOwp9Ci8qIENvbG9yICovCgoud2hpdGUtY29sb3IgewoJY29sb3I6ICNmZmY7Cn0KLmJsYWNrLWNvbG9yIHsKCWNvbG9yOiAjMjIyOwp9Ci50aGVtZS1jb2xvciB7Cgljb2xvcjogIzIyMjsKfQoucHJpbWFyeS1jb2xvciB7Cgljb2xvcjogIzIyMjsKfQovKiBibGFjayBvdmVybGF5ICovCgpbZGF0YS1vdmVybGF5XSB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KW2RhdGEtb3ZlcmxheV06OmJlZm9yZSB7CgliYWNrZ3JvdW5kOiAjMDAwIG5vbmUgcmVwZWF0IHNjcm9sbCAwIDA7Cgljb250ZW50OiAiIjsKCWhlaWdodDogMTAwJTsKCWxlZnQ6IDA7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cgl3aWR0aDogMTAwJTsKCXotaW5kZXg6IDE7Cn0KW2RhdGEtb3ZlcmxheT0iMyJdOjpiZWZvcmUgewoJb3BhY2l0eTogMC4zOwp9CltkYXRhLW92ZXJsYXk9IjQiXTo6YmVmb3JlIHsKCW9wYWNpdHk6IDAuNDsKfQpbZGF0YS1vdmVybGF5PSI1Il06OmJlZm9yZSB7CglvcGFjaXR5OiAwLjU7Cn0KW2RhdGEtb3ZlcmxheT0iNiJdOjpiZWZvcmUgewoJb3BhY2l0eTogMC42Owp9CltkYXRhLW92ZXJsYXk9IjciXTo6YmVmb3JlIHsKCW9wYWNpdHk6IDAuNzsKfQpbZGF0YS1vdmVybGF5PSI4Il06OmJlZm9yZSB7CglvcGFjaXR5OiAwLjg7Cn0KW2RhdGEtb3ZlcmxheT0iOSJdOjpiZWZvcmUgewoJb3BhY2l0eTogMC45Owp9"}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/ScrollTrigger.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.806Z","timestamp":1785159464806,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/ScrollTrigger.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 16995\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":52453,"size_decoded":17233,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2554)","md5":"fe0035bf95ea998c247100405a3156ff","sha1":"512642755f7b998893e722aca92554eb8f50d048","sha256":"b65fd407ffda9f927f60f5a662a2919a26b571be89c1db6ff1c20541bdd6e38f","sha512":"ce2bf2b43362429e4223a138214d30d0303354edb7a351dce4d2530b1d4a8fd34d9979b2ce27798532b235d4797413150f24a251a97993354f9593e58540d843","ssdeep":"768:vwRpBQSdefRPULPb/9AE3KGvMzOfmWdKpII9UStJMKoEcxTgvBHb7Psz2:v2zHdxnKE6GLbUUSt7tEEvBHfPd","tlshash":"1c33936a32843235824bf237dd9fcd08b77a189b26c59549720c51a91f2d93c877eeec","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.590725Z","times_seen":344,"resource_available":true,"data":"LyohCiAqIFNjcm9sbFRyaWdnZXIgMy4xMC40CiAqIGh0dHBzOi8vZ3JlZW5zb2NrLmNvbQogKiAKICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMjIsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICovCgohIGZ1bmN0aW9uKGUsIHQpIHsgIm9iamVjdCIgPT0gdHlwZW9mIGV4cG9ydHMgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIG1vZHVsZSA/IHQoZXhwb3J0cykgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbImV4cG9ydHMiXSwgdCkgOiB0KChlID0gZSB8fCBzZWxmKS53aW5kb3cgPSBlLndpbmRvdyB8fCB7fSkgfSh0aGlzLCBmdW5jdGlvbihlKSB7ICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSB7IGZvciAodmFyIHIgPSAwOyByIDwgdC5sZW5ndGg7IHIrKykgeyB2YXIgbiA9IHRbcl07CiAgICAgICAgICAgIG4uZW51bWVyYWJsZSA9IG4uZW51bWVyYWJsZSB8fCAhMSwgbi5jb25maWd1cmFibGUgPSAhMCwgInZhbHVlIiBpbiBuICYmIChuLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgbi5rZXksIG4pIH0gfQoKICAgIGZ1bmN0aW9uIHEoKSB7IHJldHVybiB3ZSB8fCAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ICYmICh3ZSA9IHdpbmRvdy5nc2FwKSAmJiB3ZS5yZWdpc3RlclBsdWdpbiAmJiB3ZSB9CgogICAgZnVuY3Rpb24geShlLCB0KSB7IHJldHVybiB+TGUuaW5kZXhPZihlKSAmJiBMZVtMZS5pbmRleE9mKGUpICsgMV1bdF0gfQoKICAgIGZ1bmN0aW9uIHooZSkgeyByZXR1cm4gISF+dC5pbmRleE9mKGUpIH0KCiAgICBmdW5jdGlvbiBBKGUsIHQsIHIsIG4sIGkpIHsgcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LCByLCB7IHBhc3NpdmU6ICFuLCBjYXB0dXJlOiAhIWkgfSkgfQoKICAgIGZ1bmN0aW9uIEIoZSwgdCwgciwgbikgeyByZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsIHIsICEhbikgfQoKICAgIGZ1bmN0aW9uIEUoKSB7IHJldHVybiBEZSAmJiBEZS5pc1ByZXNzZWQgfHwgVC5jYWNoZSsrIH0KCiAgICBmdW5jdGlvbiBGKHIsIG4pIHsKICAgICAgICBmdW5jdGlvbiBVYyhlKSB7IGlmIChlIHx8IDAgPT09IGUpIHsgaSAmJiAoTWUuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICJtYW51YWwiKTsgdmFyIHQgPSBEZSAmJiBEZS5pc1ByZXNzZWQ7CiAgICAgICAgICAgICAgICBlID0gVWMudiA9IE1hdGgucm91bmQoZSkgfHwgKERlICYmIERlLmlPUyA/IDEgOiAwKSwgcihlKSwgVWMuY2FjaGVJRCA9IFQuY2FjaGUsIHQgJiYgbygic3MiLCBlKSB9IGVsc2UobiB8fCBULmNhY2hlICE9PSBVYy5jYWNoZUlEIHx8IG8oInJlZiIpKSAmJiAoVWMuY2FjaGVJRCA9IFQuY2FjaGUsIFVjLnYgPSByKCkpOyByZXR1cm4gVWMudiArIFVjLm9mZnNldCB9IHJldHVybiBVYy5vZmZzZXQgPSAwLCByICYmIFVjIH0KCiAgICBmdW5jdGlvbiBJKGUpIHsgcmV0dXJuIHdlLnV0aWxzLnRvQXJyYXkoZSlbMF0gfHwgKCJzdHJpbmciID09IHR5cGVvZiBlICYmICExICE9PSB3ZS5jb25maWcoKS5udWxsVGFyZ2V0V2FybiA/IGNvbnNvbGUud2FybigiRWxlbWVudCBub3QgZm91bmQ6IiwgZSkgOiBudWxsKSB9CgogICAgZnVuY3Rpb24gSih0LCBlKSB7IHZhciByID0gZS5zLAogICAgICAgICAgICBuID0gZS5zYywKICAgICAgICAgICAgaSA9IFQuaW5kZXhPZih0KSwKICAgICAgICAgICAgbyA9IG4gPT09IE5lLnNjID8gMSA6IDI7IHJldHVybiB+aSB8fCAoaSA9IFQucHVzaCh0KSAtIDEpLCBUW2kgKyBvXSB8fCAoVFtpICsgb10gPSBGKHkodCwgciksICEwKSB8fCAoeih0KSA/IG4gOiBGKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyB0W3JdID0gZSA6IHRbcl0gfSkpKSB9CgogICAgZnVuY3Rpb24gSyhlLCB0LCBpKSB7CiAgICAgICAgZnVuY3Rpb24gb2QoZSwgdCkgeyB2YXIgciA9IEhlKCk7CiAgICAgICAgICAgIHQgfHwgbiA8IHIgLSBzID8gKGEgPSBvLCBvID0gZSwgbCA9IHMsIHMgPSByKSA6IGkgPyBvICs9IGUgOiBvID0gYSArIChlIC0gYSkgLyAociAtIGwpICogKHMgLSBsKSB9IHZhciBvID0gZSwKICAgICAgICAgICAgYSA9IGUsCiAgICAgICAgICAgIHMgPSBIZSgpLAogICAgICAgICAgICBsID0gcywKICAgICAgICAgICAgbiA9IHQgfHwgNTAsCiAgICAgICAgICAgIGMgPSBNYXRoLm1heCg1MDAsIDMgKiBuKTsgcmV0dXJuIHsgdXBkYXRlOiBvZCwgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgeyBhID0gbyA9IGkgPyAwIDogbywgbCA9IHMgPSAwIH0sIGdldFZlbG9jaXR5OiBmdW5jdGlvbiBnZXRWZWxvY2l0eShlKSB7IHZhciB0ID0gbCwKICAgICAgICAgICAgICAgICAgICByID0gYSwKICAgICAgICAgICAgICAgICAgICBuID0gSGUoKTsgcmV0dXJuICFlICYmIDAgIT09IGUgfHwgZSA9PT0gbyB8fCBvZChlKSwgcyA9PT0gbCB8fCBjIDwgbiAtIGwgPyAwIDogKG8gKyAoaSA/IHIgOiAtcikpIC8gKChpID8gbiA6IHMpIC0gdCkgKiAxZTMgfSB9IH0KCiAgICBmdW5jdGlvbiBMKGUsIHQpIHsgcmV0dXJuIHQgJiYgIWUuX2dzYXBBbGxvdyAmJiBlLnByZXZlbnREZWZhdWx0KCksIGUuY2hhbmdlZFRvdWNoZXMgPyBlLmNoYW5nZWRUb3VjaGVzWzBdIDogZSB9CgogICAgZnVuY3Rpb24gTShlKSB7IHZhciB0ID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgZSksCiAgICAgICAgICAgIHIgPSBNYXRoLm1pbi5hcHBseShNYXRoLCBlKTsgcmV0dXJuIE1hdGguYWJzKHQpID49IE1hdGguYWJzKHIpID8gdCA6IHIgfQoKICAgIGZ1bmN0aW9uIE4oKSB7CiAgICAgICAgKEJlID0gd2UuY29yZS5nbG9iYWxzKCkuU2Nyb2xsVHJpZ2dlcikgJiYgQmUuY29yZSAmJiBmdW5jdGlvbiBfaW50ZWdyYXRlKCkgeyB2YXIgZSA9IEJlLmNvcmUsCiAgICAgICAgICAgICAgICByID0gZS5icmlkZ2UgfHwge30sCiAgICAgICAgICAgICAgICB0ID0gZS5fc2Nyb2xsZXJzLAogICAgICAgICAgICAgICAgbiA9IGUuX3Byb3hpZXM7CiAgICAgICAgICAgIHQucHVzaC5hcHBseSh0LCBUKSwgbi5wdXNoLmFwcGx5KG4sIExlKSwgVCA9IHQsIExlID0gbiwgbyA9IGZ1bmN0aW9uIF9icmlkZ2UoZSwgdCkgeyByZXR1cm4gcltlXSh0KSB9IH0oKSB9CgogICAgZnVuY3Rpb24gTyhlKSB7IHJldHVybiAod2UgPSBlIHx8IHEoKSkgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGRvY3VtZW50ICYmIGRvY3VtZW50LmJvZHkgJiYgKE1lID0gd2luZG93LCBDZSA9IChBZSA9IGRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQsIE9lID0gQWUuYm9keSwgdCA9IFtNZSwgQWUsIENlLCBPZV0sIHdlLnV0aWxzLmNsYW1wLCBJZSA9ICJvbnBvaW50ZXJlbnRlciIgaW4gT2UgPyAicG9pbnRlciIgOiAibW91c2UiLCBFZSA9IGsuaXNUb3VjaCA9IE1lLm1hdGNoTWVkaWEgJiYgTWUubWF0Y2hNZWRpYSgiKGhvdmVyOiBub25lKSwgKHBvaW50ZXI6IGNvYXJzZSkiKS5tYXRjaGVzID8gMSA6ICJvbnRvdWNoc3RhcnQiIGluIE1lIHx8IDAgPCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgfHwgMCA8IG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzID8gMiA6IDAsIHplID0gay5ldmVudFR5cGVzID0gKCJvbnRvdWNoc3RhcnQiIGluIENlID8gInRvdWNoc3RhcnQsdG91Y2htb3ZlLHRvdWNoY2FuY2VsLHRvdWNoZW5kIiA6ICJvbnBvaW50ZXJkb3duIiBpbiBDZSA/ICJwb2ludGVyZG93bixwb2ludGVybW92ZSxwb2ludGVyY2FuY2VsLHBvaW50ZXJ1cCIgOiAibW91c2Vkb3duLG1vdXNlbW92ZSxtb3VzZXVwLG1vdXNldXAiKS5zcGxpdCgiLCIpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyByZXR1cm4gaSA9IDAgfSwgNTAwKSwgTigpLCBrZSA9IDEpLCBrZSB9IHZhciB3ZSwga2UsIE1lLCBBZSwgQ2UsIE9lLCBFZSwgSWUsIEJlLCB0LCBEZSwgemUsIGkgPSAxLAogICAgICAgIEZlID0gW10sCiAgICAgICAgVCA9IFtdLAogICAgICAgIExlID0gW10sCiAgICAgICAgSGUgPSBEYXRlLm5vdywKICAgICAgICBvID0gZnVuY3Rpb24gX2JyaWRnZShlLCB0KSB7IHJldHVybiB0IH0sCiAgICAgICAgciA9ICJzY3JvbGxMZWZ0IiwKICAgICAgICBuID0gInNjcm9sbFRvcCIsCiAgICAgICAgUmUgPSB7IHM6IHIsIHA6ICJsZWZ0IiwgcDI6ICJMZWZ0Iiwgb3M6ICJyaWdodCIsIG9zMjogIlJpZ2h0IiwgZDogIndpZHRoIiwgZDI6ICJXaWR0aCIsIGE6ICJ4Iiwgc2M6IEYoZnVuY3Rpb24oZSkgeyByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IE1lLnNjcm9sbFRvKGUsIE5lLnNjKCkpIDogTWUucGFnZVhPZmZzZXQgfHwgQWVbcl0gfHwgQ2Vbcl0gfHwgT2Vbcl0gfHwgMCB9KSB9LAogICAgICAgIE5lID0geyBzOiBuLCBwOiAidG9wIiwgcDI6ICJUb3AiLCBvczogImJvdHRvbSIsIG9zMjogIkJvdHRvbSIsIGQ6ICJoZWlnaHQiLCBkMjogIkhlaWdodCIsIGE6ICJ5Iiwgb3A6IFJlLCBzYzogRihmdW5jdGlvbihlKSB7IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gTWUuc2Nyb2xsVG8oUmUuc2MoKSwgZSkgOiBNZS5wYWdlWU9mZnNldCB8fCBBZVtuXSB8fCBDZVtuXSB8fCBPZVtuXSB8fCAwIH0pIH07CiAgICBSZS5vcCA9IE5lLCBULmNhY2hlID0gMDsgdmFyIGsgPSAoT2JzZXJ2ZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiBpbml0KGUpIHsga2UgfHwgTyh3ZSkgfHwgY29uc29sZS53YXJuKCJQbGVhc2UgZ3NhcC5yZWdpc3RlclBsdWdpbihPYnNlcnZlcikiKSwgQmUgfHwgTigpOyB2YXIgaSA9IGUudG9sZXJhbmNlLAogICAgICAgICAgICBhID0gZS5kcmFnTWluaW11bSwKICAgICAgICAgICAgdCA9IGUudHlwZSwKICAgICAgICAgICAgbiA9IGUudGFyZ2V0LAogICAgICAgICAgICByID0gZS5saW5lSGVpZ2h0LAogICAgICAgICAgICBvID0gZS5kZWJvdW5jZSwKICAgICAgICAgICAgcyA9IGUucHJldmVudERlZmF1bHQsCiAgICAgICAgICAgIGwgPSBlLm9uU3RvcCwKICAgICAgICAgICAgYyA9IGUub25TdG9wRGVsYXksCiAgICAgICAgICAgIHUgPSBlLmlnbm9yZSwKICAgICAgICAgICAgZiA9IGUud2hlZWxTcGVlZCwKICAgICAgICAgICAgZCA9IGUuZXZlbnQsCiAgICAgICAgICAgIHAgPSBlLm9uRHJhZ1N0YXJ0LAogICAgICAgICAgICBnID0gZS5vbkRyYWdFbmQsCiAgICAgICAgICAgIGggPSBlLm9uRHJhZywKICAgICAgICAgICAgdiA9IGUub25QcmVzcywKICAgICAgICAgICAgYiA9IGUub25SZWxlYXNlLAogICAgICAgICAgICBtID0gZS5vblJpZ2h0LAogICAgICAgICAgICB5ID0gZS5vbkxlZnQsCiAgICAgICAgICAgIHggPSBlLm9uVXAsCiAgICAgICAgICAgIHcgPSBlLm9uRG93biwKICAgICAgICAgICAgUyA9IGUub25DaGFuZ2VYLAogICAgICAgICAgICBfID0gZS5vbkNoYW5nZVksCiAgICAgICAgICAgIFQgPSBlLm9uQ2hhbmdlLAogICAgICAgICAgICBrID0gZS5vblRvZ2dsZVgsCiAgICAgICAgICAgIEMgPSBlLm9uVG9nZ2xlWSwKICAgICAgICAgICAgUCA9IGUub25Ib3ZlciwKICAgICAgICAgICAgRCA9IGUub25Ib3ZlckVuZCwKICAgICAgICAgICAgWSA9IGUub25Nb3ZlLAogICAgICAgICAgICBYID0gZS5pZ25vcmVDaGVjaywKICAgICAgICAgICAgRiA9IGUuaXNOb3JtYWxpemVyLAogICAgICAgICAgICBIID0gZS5vbkdlc3R1cmVTdGFydCwKICAgICAgICAgICAgUiA9IGUub25HZXN0dXJlRW5kLAogICAgICAgICAgICBVID0gZS5vbldoZWVsLAogICAgICAgICAgICBWID0gZS5vbkVuYWJsZSwKICAgICAgICAgICAgVyA9IGUub25EaXNhYmxlLAogICAgICAgICAgICBqID0gZS5vbkNsaWNrLAogICAgICAgICAgICBRID0gZS5zY3JvbGxTcGVlZCwKICAgICAgICAgICAgcSA9IGUuY2FwdHVyZSwKICAgICAgICAgICAgRyA9IGUuYWxsb3dDbGlja3MsCiAgICAgICAgICAgIFogPSBlLmxvY2tBeGlzLAogICAgICAgICAgICAkID0gZS5vbkxvY2tBeGlzOwoKICAgICAgICBmdW5jdGlvbiBQZSgpIHsgcmV0dXJuIHllID0gSGUoKSB9CgogICAgICAgIGZ1bmN0aW9uIFFlKGUsIHQpIHsgcmV0dXJuIChzZS5ldmVudCA9IGUpICYmIHUgJiYgfnUuaW5kZXhPZihlLnRhcmdldCkgfHwgdCAmJiBnZSAmJiAidG91Y2giICE9PSBlLnBvaW50ZXJUeXBlIHx8IFggJiYgWChlLCB0KSB9CgogICAgICAgIGZ1bmN0aW9uIFNlKCkgeyB2YXIgZSA9IHNlLmRlbHRhWCA9IE0oYmUpLAogICAgICAgICAgICAgICAgdCA9IHNlLmRlbHRhWSA9IE0obWUpLAogICAgICAgICAgICAgICAgciA9IE1hdGguYWJzKGUpID49IGksCiAgICAgICAgICAgICAgICBuID0gTWF0aC5hYnModCkgPj0gaTsKICAgICAgICAgICAgVCAmJiAociB8fCBuKSAmJiBUKHNlLCBlLCB0LCBiZSwgbWUpLCByICYmIChtICYmIDAgPCBzZS5kZWx0YVggJiYgbShzZSksIHkgJiYgc2UuZGVsdGFYIDwgMCAmJiB5KHNlKSwgUyAmJiBTKHNlKSwgayAmJiBzZS5kZWx0YVggPCAwICE9IGxlIDwgMCAmJiBrKHNlKSwgbGUgPSBzZS5kZWx0YVgsIGJlWzBdID0gYmVbMV0gPSBiZVsyXSA9IDApLCBuICYmICh3ICYmIDAgPCBzZS5kZWx0YVkgJiYgdyhzZSksIHggJiYgc2UuZGVsdGFZIDwgMCAmJiB4KHNlKSwgXyAmJiBfKHNlKSwgQyAmJiBzZS5kZWx0YVkgPCAwICE9IGNlIDwgMCAmJiBDKHNlKSwgY2UgPSBzZS5kZWx0YVksIG1lWzBdID0gbWVbMV0gPSBtZVsyXSA9IDApLCAobmUgfHwgcmUpICYmIChZICYmIFkoc2UpLCAkICYmIG9lICYmICQoc2UpLCByZSAmJiAoaChzZSksIHJlID0gITEpLCBuZSA9IG9lID0gITEpLCBpZSAmJiAoVShzZSksIGllID0gITEpLCBlZSA9IDAgfQoKICAgICAgICBmdW5jdGlvbiBUZShlLCB0LCByKSB7IGJlW3JdICs9IGUsIG1lW3JdICs9IHQsIHNlLl92eC51cGRhdGUoZSksIHNlLl92eS51cGRhdGUodCksIG8gPyBlZSA9IGVlIHx8IHJlcXVlc3RBbmltYXRpb25GcmFtZShTZSkgOiBTZSgpIH0KCiAgICAgICAgZnVuY3Rpb24gVWUoZSwgdCkgeyAieSIgIT09IGFlICYmIChiZVsyXSArPSBlLCBzZS5fdngudXBkYXRlKGUsICEwKSksICJ4IiAhPT0gYWUgJiYgKG1lWzJdICs9IHQsIHNlLl92eS51cGRhdGUodCwgITApKSwgWiAmJiAhYWUgJiYgKHNlLmF4aXMgPSBhZSA9IE1hdGguYWJzKGUpID4gTWF0aC5hYnModCkgPyAieCIgOiAieSIsIG9lID0gITApLCBvID8gZWUgPSBlZSB8fCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoU2UpIDogU2UoKSB9CgogICAgICAgIGZ1bmN0aW9uIFZlKGUpIHsgaWYgKCFRZShlLCAxKSkgeyB2YXIgdCA9IChlID0gTChlLCBzKSkuY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICByID0gZS5jbGllbnRZLAogICAgICAgICAgICAgICAgICAgIG4gPSB0IC0gc2UueCwKICAgICAgICAgICAgICAgICAgICBpID0gciAtIHNlLnksCiAgICAgICAgICAgICAgICAgICAgbyA9IHNlLmlzRHJhZ2dpbmc7CiAgICAgICAgICAgICAgICBzZS54ID0gdCwgc2UueSA9IHIsIChvIHx8IE1hdGguYWJzKHNlLnN0YXJ0WCAtIHQpID49IGEgfHwgTWF0aC5hYnMoc2Uuc3RhcnRZIC0gcikgPj0gYSkgJiYgKGggJiYgKHJlID0gITApLCBvIHx8IChzZS5pc0RyYWdnaW5nID0gITApLCBVZShuLCBpKSwgbyB8fCBwICYmIHAoc2UpKSB9IH0KCiAgICAgICAgZnVuY3Rpb24gWGUodCkgeyBpZiAoIVFlKHQsIDEpKSB7IEIoRiA/IG4gOiB2ZSwgemVbMV0sIFZlLCAhMCk7IHZhciBlID0gc2UuaXNEcmFnZ2luZyAmJiAoMyA8IE1hdGguYWJzKHNlLnggLSBzZS5zdGFydFgpIHx8IDMgPCBNYXRoLmFicyhzZS55IC0gc2Uuc3RhcnRZKSksCiAgICAgICAgICAgICAgICAgICAgciA9IEwodCk7CiAgICAgICAgICAgICAgICBlIHx8IChzZS5fdngucmVzZXQoKSwgc2UuX3Z5LnJlc2V0KCksIHMgJiYgRyAmJiB3ZS5kZWxheWVkQ2FsbCguMDgsIGZ1bmN0aW9uKCkgeyBpZiAoMzAwIDwgSGUoKSAtIHllICYmICF0LmRlZmF1bHRQcmV2ZW50ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnRhcmdldC5jbGljaykgdC50YXJnZXQuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmUuY3JlYXRlRXZlbnQpIHsgdmFyIGUgPSB2ZS5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5pbml0TW91c2VFdmVudCgiY2xpY2siLCAhMCwgITAsIE1lLCAxLCByLnNjcmVlblgsIHIuc2NyZWVuWSwgci5jbGllbnRYLCByLmNsaWVudFksICExLCAhMSwgITEsICExLCAwLCBudWxsKSwgdC50YXJnZXQuZGlzcGF0Y2hFdmVudChlKSB9IH0pKSwgc2UuaXNEcmFnZ2luZyA9IHNlLmlzR2VzdHVyaW5nID0gc2UuaXNQcmVzc2VkID0gITEsIGwgJiYgIUYgJiYgdGUucmVzdGFydCghMCksIGcgJiYgZSAmJiBnKHNlKSwgYiAmJiBiKHNlLCBlKSB9IH0KCiAgICAgICAgZnVuY3Rpb24gWWUoZSkgeyByZXR1cm4gZS50b3VjaGVzICYmIDEgPCBlLnRvdWNoZXMubGVuZ3RoICYmIChzZS5pc0dlc3R1cmluZyA9ICEwKSAmJiBIKGUsIHNlLmlzRHJhZ2dpbmcpIH0KCiAgICAgICAgZnVuY3Rpb24gWmUoKSB7IHJldHVybiAoc2UuaXNHZXN0dXJpbmcgPSAhMSkgfHwgUihzZSkgfQoKICAgICAgICBmdW5jdGlvbiAkZShlKSB7IGlmICghUWUoZSkpIHsgdmFyIHQgPSB1ZSgpLAogICAgICAgICAgICAgICAgICAgIHIgPSBmZSgpOwogICAgICAgICAgICAgICAgVGUoKHQgLSBkZSkgKiBRLCAociAtIHBlKSAqIFEsIDEpLCBkZSA9IHQsIHBlID0gciwgbCAmJiB0ZS5yZXN0YXJ0KCEwKSB9IH0KCiAgICAgICAgZnVuY3Rpb24gX2UoZSkgeyBpZiAoIVFlKGUpKSB7IGUgPSBMKGUsIHMpLCBVICYmIChpZSA9ICEwKTsgdmFyIHQgPSAoMSA9PT0gZS5kZWx0YU1vZGUgPyByIDogMiA9PT0gZS5kZWx0YU1vZGUgPyBNZS5pbm5lckhlaWdodCA6IDEpICogZjsKICAgICAgICAgICAgICAgIFRlKGUuZGVsdGFYICogdCwgZS5kZWx0YVkgKiB0LCAwKSwgbCAmJiAhRiAmJiB0ZS5yZXN0YXJ0KCEwKSB9IH0KCiAgICAgICAgZnVuY3Rpb24gYWYoZSkgeyBpZiAoIVFlKGUpKSB7IHZhciB0ID0gZS5jbGllbnRYLAogICAgICAgICAgICAgICAgICAgIHIgPSBlLmNsaWVudFksCiAgICAgICAgICAgICAgICAgICAgbiA9IHQgLSBzZS54LAogICAgICAgICAgICAgICAgICAgIGkgPSByIC0gc2UueTsKICAgICAgICAgICAgICAgIHNlLnggPSB0LCBzZS55ID0gciwgbmUgPSAhMCwgKG4gfHwgaSkgJiYgVWUobiwgaSkgfSB9CgogICAgICAgIGZ1bmN0aW9uIGJmKGUpIHsgc2UuZXZlbnQgPSBlLCBQKHNlKSB9CgogICAgICAgIGZ1bmN0aW9uIGNmKGUpIHsgc2UuZXZlbnQgPSBlLCBEKHNlKSB9CgogICAgICAgIGZ1bmN0aW9uIGRmKGUpIHsgcmV0dXJuIFFlKGUpIHx8IEwoZSwgcykgJiYgaihzZSkgfQogICAgICAgIHRoaXMudGFyZ2V0ID0gbiA9IEkobikgfHwgQ2UsIHRoaXMudmFycyA9IGUsIHUgPSB1ICYmIHdlLnV0aWxzLnRvQXJyYXkodSksIGkgPSBpIHx8IDAsIGEgPSBhIHx8IDAsIGYgPSBmIHx8IDEsIFEgPSBRIHx8IDEsIHQgPSB0IHx8ICJ3aGVlbCx0b3VjaCxwb2ludGVyIiwgbyA9ICExICE9PSBvLCByID0gciB8fCBwYXJzZUZsb2F0KE1lLmdldENvbXB1dGVkU3R5bGUoT2UpLmxpbmVIZWlnaHQpIHx8IDIyOyB2YXIgZWUsIHRlLCByZSwgbmUsIGllLCBvZSwgYWUsIHNlID0gdGhpcywKICAgICAgICAgICAgbGUgPSAwLAogICAgICAgICAgICBjZSA9IDAsCiAgICAgICAgICAgIHVlID0gSihuLCBSZSksCiAgICAgICAgICAgIGZlID0gSihuLCBOZSksCiAgICAgICAgICAgIGRlID0gdWUoKSwKICAgICAgICAgICAgcGUgPSBmZSgpLAogICAgICAgICAgICBnZSA9IH50LmluZGV4T2YoInRvdWNoIikgJiYgIX50LmluZGV4T2YoInBvaW50ZXIiKSAmJiAicG9pbnRlcmRvd24iID09PSB6ZVswXSwKICAgICAgICAgICAgaGUgPSB6KG4pLAogICAgICAgICAgICB2ZSA9IG4ub3duZXJEb2N1bWVudCB8fCBBZSwKICAgICAgICAgICAgYmUgPSBbMCwgMCwgMF0sCiAgICAgICAgICAgIG1lID0gWzAsIDAsIDBdLAogICAgICAgICAgICB5ZSA9IDAsCiAgICAgICAgICAgIHhlID0gc2Uub25QcmVzcyA9IGZ1bmN0aW9uKGUpIHsgUWUoZSwgMSkgfHwgKHNlLmF4aXMgPSBhZSA9IG51bGwsIHRlLnBhdXNlKCksIHNlLmlzUHJlc3NlZCA9ICEwLCBlID0gTChlKSwgbGUgPSBjZSA9IDAsIHNlLnN0YXJ0WCA9IHNlLnggPSBlLmNsaWVudFgsIHNlLnN0YXJ0WSA9IHNlLnkgPSBlLmNsaWVudFksIHNlLl92eC5yZXNldCgpLCBzZS5fdnkucmVzZXQoKSwgQShGID8gbiA6IHZlLCB6ZVsxXSwgVmUsIHMsICEwKSwgc2UuZGVsdGFYID0gc2UuZGVsdGFZID0gMCwgdiAmJiB2KHNlKSkgfTsKICAgICAgICB0ZSA9IHNlLl9kYyA9IHdlLmRlbGF5ZWRDYWxsKGMgfHwgLjI1LCBmdW5jdGlvbiBvblN0b3BGdW5jKCkgeyBzZS5fdngucmVzZXQoKSwgc2UuX3Z5LnJlc2V0KCksIHRlLnBhdXNlKCksIGwgJiYgbChzZSkgfSkucGF1c2UoKSwgc2UuZGVsdGFYID0gc2UuZGVsdGFZID0gMCwgc2UuX3Z4ID0gSygwLCA1MCwgITApLCBzZS5fdnkgPSBLKDAsIDUwLCAhMCksIHNlLnNjcm9sbFggPSB1ZSwgc2Uuc2Nyb2xsWSA9IGZlLCBzZS5pc0RyYWdnaW5nID0gc2UuaXNHZXN0dXJpbmcgPSBzZS5pc1ByZXNzZWQgPSAhMSwgc2UuZW5hYmxlID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gc2UuaXNFbmFibGVkIHx8IChBKGhlID8gdmUgOiBuLCAic2Nyb2xsIiwgRSksIDAgPD0gdC5pbmRleE9mKCJzY3JvbGwiKSAmJiBBKGhlID8gdmUgOiBuLCAic2Nyb2xsIiwgJGUsIHMsIHEpLCAwIDw9IHQuaW5kZXhPZigid2hlZWwiKSAmJiBBKG4sICJ3aGVlbCIsIF9lLCBzLCBxKSwgKDAgPD0gdC5pbmRleE9mKCJ0b3VjaCIpICYmIEVlIHx8IDAgPD0gdC5pbmRleE9mKCJwb2ludGVyIikpICYmIChBKG4sIHplWzBdLCB4ZSwgcywgcSksIEEodmUsIHplWzJdLCBYZSksIEEodmUsIHplWzNdLCBYZSksIEcgJiYgQShuLCAiY2xpY2siLCBQZSwgITEsICEwKSwgaiAmJiBBKG4sICJjbGljayIsIGRmKSwgSCAmJiBBKHZlLCAiZ2VzdHVyZXN0YXJ0IiwgWWUpLCBSICYmIEEodmUsICJnZXN0dXJlZW5kIiwgWmUpLCBQICYmIEEobiwgSWUgKyAiZW50ZXIiLCBiZiksIEQgJiYgQShuLCBJZSArICJsZWF2ZSIsIGNmKSwgWSAmJiBBKG4sIEllICsgIm1vdmUiLCBhZikpLCBzZS5pc0VuYWJsZWQgPSAhMCwgZSAmJiBlLnR5cGUgJiYgeGUoZSksIFYgJiYgVihzZSkpLCBzZSB9LCBzZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7IHNlLmlzRW5hYmxlZCAmJiAoRmUuZmlsdGVyKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUgIT09IHNlICYmIHooZS50YXJnZXQpIH0pLmxlbmd0aCB8fCBCKGhlID8gdmUgOiBuLCAic2Nyb2xsIiwgRSksIHNlLmlzUHJlc3NlZCAmJiAoc2UuX3Z4LnJlc2V0KCksIHNlLl92eS5yZXNldCgpLCBCKEYgPyBuIDogdmUsIHplWzFdLCBWZSwgITApKSwgQihoZSA/IHZlIDogbiwgInNjcm9sbCIsICRlLCBxKSwgQihuLCAid2hlZWwiLCBfZSwgcSksIEIobiwgemVbMF0sIHhlLCBxKSwgQih2ZSwgemVbMl0sIFhlKSwgQih2ZSwgemVbM10sIFhlKSwgQihuLCAiY2xpY2siLCBQZSwgITApLCBCKG4sICJjbGljayIsIGRmKSwgQih2ZSwgImdlc3R1cmVzdGFydCIsIFllKSwgQih2ZSwgImdlc3R1cmVlbmQiLCBaZSksIEIobiwgSWUgKyAiZW50ZXIiLCBiZiksIEIobiwgSWUgKyAibGVhdmUiLCBjZiksIEIobiwgSWUgKyAibW92ZSIsIGFmKSwgc2UuaXNFbmFibGVkID0gc2UuaXNQcmVzc2VkID0gc2UuaXNEcmFnZ2luZyA9ICExLCBXICYmIFcoc2UpKSB9LCBzZS5raWxsID0gZnVuY3Rpb24oKSB7IHNlLmRpc2FibGUoKTsgdmFyIGUgPSBGZS5pbmRleE9mKHNlKTsKICAgICAgICAgICAgMCA8PSBlICYmIEZlLnNwbGljZShlLCAxKSwgRGUgPT09IHNlICYmIChEZSA9IDApIH0sIEZlLnB1c2goc2UpLCBGICYmIHoobikgJiYgKERlID0gc2UpLCBzZS5lbmFibGUoZCkgfSwgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHQsIHIpIHsgcmV0dXJuIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHQpLCByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpLCBlIH0oT2JzZXJ2ZXIsIFt7IGtleTogInZlbG9jaXR5WCIsIGdldDogZnVuY3Rpb24gZ2V0KCkgeyByZXR1cm4gdGhpcy5fdnguZ2V0VmVsb2NpdHkoKSB9IH0sIHsga2V5OiAidmVsb2NpdHlZIiwgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiB0aGlzLl92eS5nZXRWZWxvY2l0eSgpIH0gfV0pLCBPYnNlcnZlcik7CgogICAgZnVuY3Rpb24gT2JzZXJ2ZXIoZSkgeyB0aGlzLmluaXQoZSkgfQogICAgay52ZXJzaW9uID0gIjMuMTAuNCIsIGsuY3JlYXRlID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gbmV3IGsoZSkgfSwgay5yZWdpc3RlciA9IE8sIGsuZ2V0QWxsID0gZnVuY3Rpb24oKSB7IHJldHVybiBGZS5zbGljZSgpIH0sIGsuZ2V0QnlJZCA9IGZ1bmN0aW9uKHQpIHsgcmV0dXJuIEZlLmZpbHRlcihmdW5jdGlvbihlKSB7IHJldHVybiBlLnZhcnMuaWQgPT09IHQgfSlbMF0gfSwgcSgpICYmIHdlLnJlZ2lzdGVyUGx1Z2luKGspOwoKICAgIGZ1bmN0aW9uIHZhKCkgeyByZXR1cm4gbnQgPSAxIH0KCiAgICBmdW5jdGlvbiB3YSgpIHsgcmV0dXJuIG50ID0gMCB9CgogICAgZnVuY3Rpb24geGEoZSkgeyByZXR1cm4gZSB9CgogICAgZnVuY3Rpb24geWEoZSkgeyByZXR1cm4gTWF0aC5yb3VuZCgxZTUgKiBlKSAvIDFlNSB8fCAwIH0KCiAgICBmdW5jdGlvbiB6YSgpIHsgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgfQoKICAgIGZ1bmN0aW9uIEFhKCkgeyByZXR1cm4gV2UgfHwgemEoKSAmJiAoV2UgPSB3aW5kb3cuZ3NhcCkgJiYgV2UucmVnaXN0ZXJQbHVnaW4gJiYgV2UgfQoKICAgIGZ1bmN0aW9uIEJhKGUpIHsgcmV0dXJuICEhfnMuaW5kZXhPZihlKSB9CgogICAgZnVuY3Rpb24gQ2EoZSkgeyByZXR1cm4geShlLCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IikgfHwgKEJhKGUpID8gZnVuY3Rpb24oKSB7IHJldHVybiBCdC53aWR0aCA9IGplLmlubmVyV2lkdGgsIEJ0LmhlaWdodCA9IGplLmlubmVySGVpZ2h0LCBCdCB9IDogZnVuY3Rpb24oKSB7IHJldHVybiBNdChlKSB9KSB9CgogICAgZnVuY3Rpb24gRmEoZSwgdCkgeyB2YXIgciA9IHQucywKICAgICAgICAgICAgbiA9IHQuZDIsCiAgICAgICAgICAgIGkgPSB0LmQsCiAgICAgICAgICAgIG8gPSB0LmE7IHJldHVybiAociA9ICJzY3JvbGwiICsgbikgJiYgKG8gPSB5KGUsIHIpKSA/IG8oKSAtIENhKGUpKClbaV0gOiBCYShlKSA/IChxZVtyXSB8fCBHZVtyXSkgLSAoamVbImlubmVyIiArIG5dIHx8IHFlWyJjbGllbnQiICsgbl0gfHwgR2VbImNsaWVudCIgKyBuXSkgOiBlW3JdIC0gZVsib2Zmc2V0IiArIG5dIH0KCiAgICBmdW5jdGlvbiBHYShlLCB0KSB7IGZvciAodmFyIHIgPSAwOyByIDwgcC5sZW5ndGg7IHIgKz0gMykgdCAmJiAhfnQuaW5kZXhPZihwW3IgKyAxXSkgfHwgZShwW3JdLCBwW3IgKyAxXSwgcFtyICsgMl0pIH0KCiAgICBmdW5jdGlvbiBIYShlKSB7IHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgZSB9CgogICAgZnVuY3Rpb24gSWEoZSkgeyByZXR1cm4gImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSB9CgogICAgZnVuY3Rpb24gSmEoZSkgeyByZXR1cm4gIm51bWJlciIgPT0gdHlwZW9mIGUgfQoKICAgIGZ1bmN0aW9uIEthKGUpIHsgcmV0dXJuICJvYmplY3QiID09IHR5cGVvZiBlIH0KCiAgICBmdW5jdGlvbiBMYShlKSB7IHJldHVybiBJYShlKSAmJiBlKCkgfQoKICAgIGZ1bmN0aW9uIE1hKHIsIG4pIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeyB2YXIgZSA9IExhKHIpLAogICAgICAgICAgICAgICAgdCA9IExhKG4pOyByZXR1cm4gZnVuY3Rpb24oKSB7IExhKGUpLCBMYSh0KSB9IH0gfQoKICAgIGZ1bmN0aW9uIE5hKGUsIHQsIHIpIHsgcmV0dXJuIGUgJiYgZS5wcm9ncmVzcyh0ID8gMCA6IDEpICYmIHIgJiYgZS5wYXVzZSgpIH0KCiAgICBmdW5jdGlvbiBPYShlLCB0KSB7IGlmIChlLmVuYWJsZWQpIHsgdmFyIHIgPSB0KGUpOwogICAgICAgICAgICByICYmIHIudG90YWxUaW1lICYmIChlLmNhbGxiYWNrQW5pbWF0aW9uID0gcikgfSB9CgogICAgZnVuY3Rpb24gZGIoZSkgeyByZXR1cm4gamUuZ2V0Q29tcHV0ZWRTdHlsZShlKSB9CgogICAgZnVuY3Rpb24gZmIoZSwgdCkgeyBmb3IgKHZhciByIGluIHQpIHIgaW4gZSB8fCAoZVtyXSA9IHRbcl0pOyByZXR1cm4gZSB9CgogICAgZnVuY3Rpb24gaGIoZSwgdCkgeyB2YXIgciA9IHQuZDI7IHJldHVybiBlWyJvZmZzZXQiICsgcl0gfHwgZVsiY2xpZW50IiArIHJdIHx8IDAgfQoKICAgIGZ1bmN0aW9uIGliKGUpIHsgdmFyIHQsIHIgPSBbXSwKICAgICAgICAgICAgbiA9IGUubGFiZWxzLAogICAgICAgICAgICBpID0gZS5kdXJhdGlvbigpOyBmb3IgKHQgaW4gbikgci5wdXNoKG5bdF0gLyBpKTsgcmV0dXJuIHIgfQoKICAgIGZ1bmN0aW9uIGtiKGkpIHsgdmFyIG8gPSBXZS51dGlscy5zbmFwKGkpLAogICAgICAgICAgICBhID0gQXJyYXkuaXNBcnJheShpKSAmJiBpLnNsaWNlKDApLnNvcnQoZnVuY3Rpb24oZSwgdCkgeyByZXR1cm4gZSAtIHQgfSk7IHJldHVybiBhID8gZnVuY3Rpb24oZSwgdCwgcikgeyB2YXIgbjsgaWYgKHZvaWQgMCA9PT0gciAmJiAociA9IC4wMDEpLCAhdCkgcmV0dXJuIG8oZSk7IGlmICgwIDwgdCkgeyBmb3IgKGUgLT0gciwgbiA9IDA7IG4gPCBhLmxlbmd0aDsgbisrKQogICAgICAgICAgICAgICAgICAgIGlmIChhW25dID49IGUpIHJldHVybiBhW25dOwogICAgICAgICAgICAgICAgcmV0dXJuIGFbbiAtIDFdIH0gZm9yIChuID0gYS5sZW5ndGgsIGUgKz0gcjsgbi0tOykKICAgICAgICAgICAgICAgIGlmIChhW25dIDw9IGUpIHJldHVybiBhW25dOwogICAgICAgICAgICByZXR1cm4gYVswXSB9IDogZnVuY3Rpb24oZSwgdCwgcikgeyB2b2lkIDAgPT09IHIgJiYgKHIgPSAuMDAxKTsgdmFyIG4gPSBvKGUpOyByZXR1cm4gIXQgfHwgTWF0aC5hYnMobiAtIGUpIDwgciB8fCBuIC0gZSA8IDAgPT0gdCA8IDAgPyBuIDogbyh0IDwgMCA/IGUgLSBpIDogZSArIGkpIH0gfQoKICAgIGZ1bmN0aW9uIG1iKHQsIHIsIGUsIG4pIHsgcmV0dXJuIGUuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIHQociwgZSwgbikgfSkgfQoKICAgIGZ1bmN0aW9uIG5iKGUsIHQsIHIsIG4sIGkpIHsgcmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcih0LCByLCB7IHBhc3NpdmU6ICFuLCBjYXB0dXJlOiAhIWkgfSkgfQoKICAgIGZ1bmN0aW9uIG9iKGUsIHQsIHIsIG4pIHsgcmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCByLCAhIW4pIH0KCiAgICBmdW5jdGlvbiBwYihlLCB0LCByKSB7IHJldHVybiByICYmIHIud2hlZWxIYW5kbGVyICYmIGUodCwgIndoZWVsIiwgcikgfQoKICAgIGZ1bmN0aW9uIHRiKGUsIHQpIHsgaWYgKEhhKGUpKSB7IHZhciByID0gZS5pbmRleE9mKCI9IiksCiAgICAgICAgICAgICAgICBuID0gfnIgPyAoZS5jaGFyQXQociAtIDEpICsgMSkgKiBwYXJzZUZsb2F0KGUuc3Vic3RyKHIgKyAxKSkgOiAwO35yICYmIChlLmluZGV4T2YoIiUiKSA+IHIgJiYgKG4gKj0gdCAvIDEwMCksIGUgPSBlLnN1YnN0cigwLCByIC0gMSkpLCBlID0gbiArIChlIGluIFkgPyBZW2VdICogdCA6IH5lLmluZGV4T2YoIiUiKSA/IHBhcnNlRmxvYXQoZSkgKiB0IC8gMTAwIDogcGFyc2VGbG9hdChlKSB8fCAwKSB9IHJldHVybiBlIH0KCiAgICBmdW5jdGlvbiB1YihlLCB0LCByLCBuLCBpLCBvLCBhLCBzKSB7IHZhciBsID0gaS5zdGFydENvbG9yLAogICAgICAgICAgICBjID0gaS5lbmRDb2xvciwKICAgICAgICAgICAgdSA9IGkuZm9udFNpemUsCiAgICAgICAgICAgIGYgPSBpLmluZGVudCwKICAgICAgICAgICAgZCA9IGkuZm9udFdlaWdodCwKICAgICAgICAgICAgcCA9IEplLmNyZWF0ZUVsZW1lbnQoImRpdiIpLAogICAgICAgICAgICBnID0gQmEocikgfHwgImZpeGVkIiA9PT0geShyLCAicGluVHlwZSIpLAogICAgICAgICAgICBoID0gLTEgIT09IGUuaW5kZXhPZigic2Nyb2xsZXIiKSwKICAgICAgICAgICAgdiA9IGcgPyBHZSA6IHIsCiAgICAgICAgICAgIGIgPSAtMSAhPT0gZS5pbmRleE9mKCJzdGFydCIpLAogICAgICAgICAgICBtID0gYiA/IGwgOiBjLAogICAgICAgICAgICB4ID0gImJvcmRlci1jb2xvcjoiICsgbSArICI7Zm9udC1zaXplOiIgKyB1ICsgIjtjb2xvcjoiICsgbSArICI7Zm9udC13ZWlnaHQ6IiArIGQgKyAiO3BvaW50ZXItZXZlbnRzOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWYsQXJpYWw7ei1pbmRleDoxMDAwO3BhZGRpbmc6NHB4IDhweDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7IjsgcmV0dXJuIHggKz0gInBvc2l0aW9uOiIgKyAoKGggfHwgcykgJiYgZyA/ICJmaXhlZDsiIDogImFic29sdXRlOyIpLCAhaCAmJiAhcyAmJiBnIHx8ICh4ICs9IChuID09PSBOZSA/IF8gOiBQKSArICI6IiArIChvICsgcGFyc2VGbG9hdChmKSkgKyAicHg7IiksIGEgJiYgKHggKz0gImJveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LWFsaWduOmxlZnQ7d2lkdGg6IiArIGEub2Zmc2V0V2lkdGggKyAicHg7IiksIHAuX2lzU3RhcnQgPSBiLCBwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiZ3NhcC1tYXJrZXItIiArIGUgKyAodCA/ICIgbWFya2VyLSIgKyB0IDogIiIpKSwgcC5zdHlsZS5jc3NUZXh0ID0geCwgcC5pbm5lclRleHQgPSB0IHx8IDAgPT09IHQgPyBlICsgIi0iICsgdCA6IGUsIHYuY2hpbGRyZW5bMF0gPyB2Lmluc2VydEJlZm9yZShwLCB2LmNoaWxkcmVuWzBdKSA6IHYuYXBwZW5kQ2hpbGQocCksIHAuX29mZnNldCA9IHBbIm9mZnNldCIgKyBuLm9wLmQyXSwgWChwLCAwLCBuLCBiKSwgcCB9CgogICAgZnVuY3Rpb24gemIoKSB7IHJldHVybiAzNCA8IGR0KCkgLSBwdCAmJiBlZSgpIH0KCiAgICBmdW5jdGlvbiBBYigpIHsgaCAmJiBoLmlzUHJlc3NlZCAmJiAhKGguc3RhcnRYID4gR2UuY2xpZW50V2lkdGgpIHx8IChULmNhY2hlKyssIHggPSB4IHx8IHJlcXVlc3RBbmltYXRpb25GcmFtZShlZSksIHB0IHx8IFYoInNjcm9sbFN0YXJ0IiksIHB0ID0gZHQoKSkgfQoKICAgIGZ1bmN0aW9uIEJiKCkgeyBtID0gamUuaW5uZXJXaWR0aCwgYiA9IGplLmlubmVySGVpZ2h0IH0KCiAgICBmdW5jdGlvbiBDYigpIHsgVC5jYWNoZSsrLCBydCB8fCBnIHx8IEplLmZ1bGxzY3JlZW5FbGVtZW50IHx8IEplLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IHx8IHYgJiYgbSA9PT0gamUuaW5uZXJXaWR0aCAmJiAhKE1hdGguYWJzKGplLmlubmVySGVpZ2h0IC0gYikgPiAuMjUgKiBqZS5pbm5lckhlaWdodCkgfHwgbC5yZXN0YXJ0KCEwKSB9CgogICAgZnVuY3Rpb24gSWIoZSkgeyB2YXIgdCwgciA9IFdlLnRpY2tlci5mcmFtZSwKICAgICAgICAgICAgbiA9IFtdLAogICAgICAgICAgICBpID0gMDsgaWYgKHcgIT09IHIgfHwgZnQpIHsgZm9yIChRKCk7IGkgPCBVLmxlbmd0aDsgaSArPSA0KSh0ID0gamUubWF0Y2hNZWRpYShVW2ldKS5tYXRjaGVzKSAhPT0gVVtpICsgM10gJiYgKChVW2kgKyAzXSA9IHQpID8gbi5wdXNoKGkpIDogUSgxLCBVW2ldKSB8fCBJYShVW2kgKyAyXSkgJiYgVVtpICsgMl0oKSk7IGZvciAoaigpLCBpID0gMDsgaSA8IG4ubGVuZ3RoOyBpKyspIHQgPSBuW2ldLCBsdCA9IFVbdF0sIFVbdCArIDJdID0gVVt0ICsgMV0oZSk7CiAgICAgICAgICAgIGx0ID0gMCwgYSAmJiBaKDAsIDEpLCB3ID0gciwgVigibWF0Y2hNZWRpYSIpIH0gfQoKICAgIGZ1bmN0aW9uIEpiKCkgeyByZXR1cm4gb2Iob2UsICJzY3JvbGxFbmQiLCBKYikgfHwgWighMCkgfQoKICAgIGZ1bmN0aW9uIE9iKCkgeyByZXR1cm4gVC5jYWNoZSsrICYmIFQuZm9yRWFjaChmdW5jdGlvbihlKSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlICYmIChlLnJlYyA9IDApIH0pIH0KCiAgICBmdW5jdGlvbiBaYihlLCB0LCByLCBuKSB7IGlmIChlLnBhcmVudE5vZGUgIT09IHQpIHsgZm9yICh2YXIgaSwgbyA9IHRlLmxlbmd0aCwgYSA9IHQuc3R5bGUsIHMgPSBlLnN0eWxlOyBvLS07KSBhW2kgPSB0ZVtvXV0gPSByW2ldOwogICAgICAgICAgICBhLnBvc2l0aW9uID0gImFic29sdXRlIiA9PT0gci5wb3NpdGlvbiA/ICJhYnNvbHV0ZSIgOiAicmVsYXRpdmUiLCAiaW5saW5lIiA9PT0gci5kaXNwbGF5ICYmIChhLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIiksIHNbUF0gPSBzW19dID0gYS5mbGV4QmFzaXMgPSAiYXV0byIsIGEub3ZlcmZsb3cgPSAidmlzaWJsZSIsIGEuYm94U2l6aW5nID0gImJvcmRlci1ib3giLCBhW3Z0XSA9IGhiKGUsIFJlKSArIGt0LCBhW2J0XSA9IGhiKGUsIE5lKSArIGt0LCBhW1N0XSA9IHNbX3RdID0gcy50b3AgPSBzLmxlZnQgPSAiMCIsIEl0KG4pLCBzW3Z0XSA9IHMubWF4V2lkdGggPSByW3Z0XSwgc1tidF0gPSBzLm1heEhlaWdodCA9IHJbYnRdLCBzW1N0XSA9IHJbU3RdLCBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsIGUpLCB0LmFwcGVuZENoaWxkKGUpIH0gfQoKICAgIGZ1bmN0aW9uIGFjKGUpIHsgZm9yICh2YXIgdCA9IHJlLmxlbmd0aCwgciA9IGUuc3R5bGUsIG4gPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIG4ucHVzaChyZVtpXSwgcltyZVtpXV0pOyByZXR1cm4gbi50ID0gZSwgbiB9CgogICAgZnVuY3Rpb24gZGMoZSwgdCwgciwgbiwgaSwgbywgYSwgcywgbCwgYywgdSwgZiwgZCkgeyBJYShlKSAmJiAoZSA9IGUocykpLCBIYShlKSAmJiAibWF4IiA9PT0gZS5zdWJzdHIoMCwgMykgJiYgKGUgPSBmICsgKCI9IiA9PT0gZS5jaGFyQXQoNCkgPyB0YigiMCIgKyBlLnN1YnN0cigzKSwgcikgOiAwKSk7IHZhciBwLCBnLCBoLCB2ID0gZCA/IGQudGltZSgpIDogMDsgaWYgKGQgJiYgZC5zZWVrKDApLCBKYShlKSkgYSAmJiBYKGEsIHIsIG4sICEwKTsKICAgICAgICBlbHNlIHsgSWEodCkgJiYgKHQgPSB0KHMpKTsgdmFyIGIsIG0sIHksIHgsIHcgPSBlLnNwbGl0KCIgIik7CiAgICAgICAgICAgIGggPSBJKHQpIHx8IEdlLCAoYiA9IE10KGgpIHx8IHt9KSAmJiAoYi5sZWZ0IHx8IGIudG9wKSB8fCAibm9uZSIgIT09IGRiKGgpLmRpc3BsYXkgfHwgKHggPSBoLnN0eWxlLmRpc3BsYXksIGguc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIGIgPSBNdChoKSwgeCA/IGguc3R5bGUuZGlzcGxheSA9IHggOiBoLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5IikpLCBtID0gdGIod1swXSwgYltuLmRdKSwgeSA9IHRiKHdbMV0gfHwgIjAiLCByKSwgZSA9IGJbbi5wXSAtIGxbbi5wXSAtIGMgKyBtICsgaSAtIHksIGEgJiYgWChhLCB5LCBuLCByIC0geSA8IDIwIHx8IGEuX2lzU3RhcnQgJiYgMjAgPCB5KSwgciAtPSByIC0geSB9IGlmIChvKSB7IHZhciBTID0gZSArIHIsCiAgICAgICAgICAgICAgICBfID0gby5faXNTdGFydDsKICAgICAgICAgICAgcCA9ICJzY3JvbGwiICsgbi5kMiwgWChvLCBTLCBuLCBfICYmIDIwIDwgUyB8fCAhXyAmJiAodSA/IE1hdGgubWF4KEdlW3BdLCBxZVtwXSkgOiBvLnBhcmVudE5vZGVbcF0pIDw9IFMgKyAxKSwgdSAmJiAobCA9IE10KGEpLCB1ICYmIChvLnN0eWxlW24ub3AucF0gPSBsW24ub3AucF0gLSBuLm9wLm0gLSBvLl9vZmZzZXQgKyBrdCkpIH0gcmV0dXJuIGQgJiYgaCAmJiAocCA9IE10KGgpLCBkLnNlZWsoZiksIGcgPSBNdChoKSwgZC5fY2FTY3JvbGxEaXN0ID0gcFtuLnBdIC0gZ1tuLnBdLCBlID0gZSAvIGQuX2NhU2Nyb2xsRGlzdCAqIGYpLCBkICYmIGQuc2Vlayh2KSwgZCA/IGUgOiBNYXRoLnJvdW5kKGUpIH0KCiAgICBmdW5jdGlvbiBmYyhlLCB0LCByLCBuKSB7IGlmIChlLnBhcmVudE5vZGUgIT09IHQpIHsgdmFyIGksIG8sIGEgPSBlLnN0eWxlOyBpZiAodCA9PT0gR2UpIHsgZm9yIChpIGluIGUuX3N0T3JpZyA9IGEuY3NzVGV4dCwgbyA9IGRiKGUpKSArIGkgfHwgaWUudGVzdChpKSB8fCAhb1tpXSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgYVtpXSB8fCAiMCIgPT09IGkgfHwgKGFbaV0gPSBvW2ldKTsKICAgICAgICAgICAgICAgIGEudG9wID0gciwgYS5sZWZ0ID0gbiB9IGVsc2UgYS5jc3NUZXh0ID0gZS5fc3RPcmlnOwogICAgICAgICAgICBXZS5jb3JlLmdldENhY2hlKGUpLnVuY2FjaGUgPSAxLCB0LmFwcGVuZENoaWxkKGUpIH0gfQoKICAgIGZ1bmN0aW9uIGdjKGwsIGUpIHsKICAgICAgICBmdW5jdGlvbiBRaihlLCB0LCByLCBuLCBpKSB7IHZhciBvID0gUWoudHdlZW4sCiAgICAgICAgICAgICAgICBhID0gdC5vbkNvbXBsZXRlLAogICAgICAgICAgICAgICAgcyA9IHt9OyByZXR1cm4gciA9IHIgfHwgZigpLCBpID0gbiAmJiBpIHx8IDAsIG4gPSBuIHx8IGUgLSByLCBvICYmIG8ua2lsbCgpLCBjID0gTWF0aC5yb3VuZChyKSwgdFtkXSA9IGUsICh0Lm1vZGlmaWVycyA9IHMpW2RdID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gKGUgPSB5YShmKCkpKSAhPT0gYyAmJiBlICE9PSB1ICYmIDIgPCBNYXRoLmFicyhlIC0gYykgJiYgMiA8IE1hdGguYWJzKGUgLSB1KSA/IChvLmtpbGwoKSwgUWoudHdlZW4gPSAwKSA6IGUgPSByICsgbiAqIG8ucmF0aW8gKyBpICogby5yYXRpbyAqIG8ucmF0aW8sIHUgPSBjLCBjID0geWEoZSkgfSwgdC5vbkNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IFFqLnR3ZWVuID0gMCwgYSAmJiBhLmNhbGwobykgfSwgbyA9IFFqLnR3ZWVuID0gV2UudG8obCwgdCkgfSB2YXIgYywgdSwgZiA9IEoobCwgZSksCiAgICAgICAgICAgIGQgPSAiX3Njcm9sbCIgKyBlLnAyOyByZXR1cm4gKGxbZF0gPSBmKS53aGVlbEhhbmRsZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIFFqLnR3ZWVuICYmIFFqLnR3ZWVuLmtpbGwoKSAmJiAoUWoudHdlZW4gPSAwKSB9LCBuYihsLCAid2hlZWwiLCBmLndoZWVsSGFuZGxlciksIFFqIH0gdmFyIFdlLCBhLCBqZSwgSmUsIHFlLCBHZSwgcywgbCwgS2UsIGV0LCB0dCwgYywgcnQsIG50LCB1LCBpdCwgZiwgZCwgcCwgb3QsIGF0LCBnLCBoLCB2LCBiLCBtLCBDLCBzdCwgeCwgbHQsIHcsIGN0LCB1dCwgZnQgPSAxLAogICAgICAgIGR0ID0gRGF0ZS5ub3csCiAgICAgICAgUyA9IGR0KCksCiAgICAgICAgcHQgPSAwLAogICAgICAgIGd0ID0gMCwKICAgICAgICBodCA9IE1hdGguYWJzLAogICAgICAgIF8gPSAicmlnaHQiLAogICAgICAgIFAgPSAiYm90dG9tIiwKICAgICAgICB2dCA9ICJ3aWR0aCIsCiAgICAgICAgYnQgPSAiaGVpZ2h0IiwKICAgICAgICBtdCA9ICJSaWdodCIsCiAgICAgICAgeXQgPSAiTGVmdCIsCiAgICAgICAgeHQgPSAiVG9wIiwKICAgICAgICB3dCA9ICJCb3R0b20iLAogICAgICAgIFN0ID0gInBhZGRpbmciLAogICAgICAgIF90ID0gIm1hcmdpbiIsCiAgICAgICAgVHQgPSAiV2lkdGgiLAogICAgICAgIEQgPSAiSGVpZ2h0IiwKICAgICAgICBrdCA9ICJweCIsCiAgICAgICAgTXQgPSBmdW5jdGlvbiBfZ2V0Qm91bmRzKGUsIHQpIHsgdmFyIHIgPSB0ICYmICJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMCkiICE9PSBkYihlKVt1XSAmJiBXZS50byhlLCB7IHg6IDAsIHk6IDAsIHhQZXJjZW50OiAwLCB5UGVyY2VudDogMCwgcm90YXRpb246IDAsIHJvdGF0aW9uWDogMCwgcm90YXRpb25ZOiAwLCBzY2FsZTogMSwgc2tld1g6IDAsIHNrZXdZOiAwIH0pLnByb2dyZXNzKDEpLAogICAgICAgICAgICAgICAgbiA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IHJldHVybiByICYmIHIucHJvZ3Jlc3MoMCkua2lsbCgpLCBuIH0sCiAgICAgICAgQXQgPSB7IHN0YXJ0Q29sb3I6ICJncmVlbiIsIGVuZENvbG9yOiAicmVkIiwgaW5kZW50OiAwLCBmb250U2l6ZTogIjE2cHgiLCBmb250V2VpZ2h0OiAibm9ybWFsIiB9LAogICAgICAgIEN0ID0geyB0b2dnbGVBY3Rpb25zOiAicGxheSIsIGFudGljaXBhdGVQaW46IDAgfSwKICAgICAgICBZID0geyB0b3A6IDAsIGxlZnQ6IDAsIGNlbnRlcjogLjUsIGJvdHRvbTogMSwgcmlnaHQ6IDEgfSwKICAgICAgICBYID0gZnVuY3Rpb24gX3Bvc2l0aW9uTWFya2VyKGUsIHQsIHIsIG4pIHsgdmFyIGkgPSB7IGRpc3BsYXk6ICJibG9jayIgfSwKICAgICAgICAgICAgICAgIG8gPSByW24gPyAib3MyIiA6ICJwMiJdLAogICAgICAgICAgICAgICAgYSA9IHJbbiA/ICJwMiIgOiAib3MyIl07CiAgICAgICAgICAgIGUuX2lzRmxpcHBlZCA9IG4sIGlbci5hICsgIlBlcmNlbnQiXSA9IG4gPyAtMTAwIDogMCwgaVtyLmFdID0gbiA/ICIxcHgiIDogMCwgaVsiYm9yZGVyIiArIG8gKyBUdF0gPSAxLCBpWyJib3JkZXIiICsgYSArIFR0XSA9IDAsIGlbci5wXSA9IHQgKyAicHgiLCBXZS5zZXQoZSwgaSkgfSwKICAgICAgICBPdCA9IFtdLAogICAgICAgIFB0ID0ge30sCiAgICAgICAgSCA9IHt9LAogICAgICAgIFIgPSBbXSwKICAgICAgICBVID0gW10sCiAgICAgICAgViA9IGZ1bmN0aW9uIF9kaXNwYXRjaChlKSB7IHJldHVybiBIW2VdICYmIEhbZV0ubWFwKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUoKSB9KSB8fCBSIH0sCiAgICAgICAgVyA9IFtdLAogICAgICAgIGogPSBmdW5jdGlvbiBfcmV2ZXJ0UmVjb3JkZWQoZSkgeyBmb3IgKHZhciB0ID0gMDsgdCA8IFcubGVuZ3RoOyB0ICs9IDUpIGUgJiYgV1t0ICsgNF0gIT09IGUgfHwgKFdbdF0uc3R5bGUuY3NzVGV4dCA9IFdbdCArIDFdLCBXW3RdLmdldEJCb3ggJiYgV1t0XS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIFdbdCArIDJdIHx8ICIiKSwgV1t0ICsgM10udW5jYWNoZSA9IDEpIH0sCiAgICAgICAgUSA9IGZ1bmN0aW9uIF9yZXZlcnRBbGwoZSwgdCkgeyB2YXIgcjsgZm9yIChpdCA9IDA7IGl0IDwgT3QubGVuZ3RoOyBpdCsrKSByID0gT3RbaXRdLCB0ICYmIHIubWVkaWEgIT09IHQgfHwgKGUgPyByLmtpbGwoMSkgOiByLnJldmVydCgpKTsKICAgICAgICAgICAgdCAmJiBqKHQpLCB0IHx8IFYoInJldmVydCIpIH0sCiAgICAgICAgRyA9IDAsCiAgICAgICAgWiA9IGZ1bmN0aW9uIF9yZWZyZXNoQWxsKGUsIHQpIHsgaWYgKCFwdCB8fCBlKSB7IGN0ID0gITA7IHZhciByID0gVigicmVmcmVzaEluaXQiKTsKICAgICAgICAgICAgICAgIG90ICYmIG9lLnNvcnQoKSwgdCB8fCBRKCksIE90LnNsaWNlKDApLmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5yZWZyZXNoKCkgfSksIE90LmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gIm1heCIgPT09IGUudmFycy5lbmQgJiYgZS5zZXRQb3NpdGlvbnMoZS5zdGFydCwgRmEoZS5zY3JvbGxlciwgZS5fZGlyKSkgfSksIHIuZm9yRWFjaChmdW5jdGlvbihlKSB7IHJldHVybiBlICYmIGUucmVuZGVyICYmIGUucmVuZGVyKC0xKSB9KSwgT2IoKSwgbC5wYXVzZSgpLCBHKyssIGN0ID0gITEsIFYoInJlZnJlc2giKSB9IGVsc2UgbmIob2UsICJzY3JvbGxFbmQiLCBKYikgfSwKICAgICAgICAkID0gMCwKICAgICAgICBFdCA9IDEsCiAgICAgICAgZWUgPSBmdW5jdGlvbiBfdXBkYXRlQWxsKCkgeyBpZiAoIWN0KSB7IG9lLmlzVXBkYXRpbmcgPSAhMCwgdXQgJiYgdXQudXBkYXRlKDApOyB2YXIgZSA9IE90Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICB0ID0gZHQoKSwKICAgICAgICAgICAgICAgICAgICByID0gNTAgPD0gdCAtIFMsCiAgICAgICAgICAgICAgICAgICAgbiA9IGUgJiYgT3RbMF0uc2Nyb2xsKCk7IGlmIChFdCA9IG4gPCAkID8gLTEgOiAxLCAkID0gbiwgciAmJiAocHQgJiYgIW50ICYmIDIwMCA8IHQgLSBwdCAmJiAocHQgPSAwLCBWKCJzY3JvbGxFbmQiKSksIHR0ID0gUywgUyA9IHQpLCBFdCA8IDApIHsgZm9yIChpdCA9IGU7IDAgPCBpdC0tOykgT3RbaXRdICYmIE90W2l0XS51cGRhdGUoMCwgcik7CiAgICAgICAgICAgICAgICAgICAgRXQgPSAxIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAoaXQgPSAwOyBpdCA8IGU7IGl0KyspIE90W2l0XSAmJiBPdFtpdF0udXBkYXRlKDAsIHIpOwogICAgICAgICAgICAgICAgb2UuaXNVcGRhdGluZyA9ICExIH0KICAgICAgICAgICAgeCA9IDAgfSwKICAgICAgICB0ZSA9IFsibGVmdCIsICJ0b3AiLCBQLCBfLCBfdCArIHd0LCBfdCArIG10LCBfdCArIHh0LCBfdCArIHl0LCAiZGlzcGxheSIsICJmbGV4U2hyaW5rIiwgImZsb2F0IiwgInpJbmRleCIsICJncmlkQ29sdW1uU3RhcnQiLCAiZ3JpZENvbHVtbkVuZCIsICJncmlkUm93U3RhcnQiLCAiZ3JpZFJvd0VuZCIsICJncmlkQXJlYSIsICJqdXN0aWZ5U2VsZiIsICJhbGlnblNlbGYiLCAicGxhY2VTZWxmIiwgIm9yZGVyIl0sCiAgICAgICAgcmUgPSB0ZS5jb25jYXQoW3Z0LCBidCwgImJveFNpemluZyIsICJtYXgiICsgVHQsICJtYXgiICsgRCwgInBvc2l0aW9uIiwgX3QsIFN0LCBTdCArIHh0LCBTdCArIG10LCBTdCArIHd0LCBTdCArIHl0XSksCiAgICAgICAgbmUgPSAvKFtBLVpdKS9nLAogICAgICAgIEl0ID0gZnVuY3Rpb24gX3NldFN0YXRlKGUpIHsgaWYgKGUpIHsgdmFyIHQsIHIsIG4gPSBlLnQuc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgaSA9IGUubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIG8gPSAwOyBmb3IgKChlLnQuX2dzYXAgfHwgV2UuY29yZS5nZXRDYWNoZShlLnQpKS51bmNhY2hlID0gMTsgbyA8IGk7IG8gKz0gMikgciA9IGVbbyArIDFdLCB0ID0gZVtvXSwgciA/IG5bdF0gPSByIDogblt0XSAmJiBuLnJlbW92ZVByb3BlcnR5KHQucmVwbGFjZShuZSwgIi0kMSIpLnRvTG93ZXJDYXNlKCkpIH0gfSwKICAgICAgICBCdCA9IHsgbGVmdDogMCwgdG9wOiAwIH0sCiAgICAgICAgaWUgPSAvKHdlYmtpdHxtb3p8bGVuZ3RofGNzc1RleHR8aW5zZXQpL2ksCiAgICAgICAgb2UgPSAoU2Nyb2xsVHJpZ2dlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIGluaXQoXywgVCkgeyBpZiAodGhpcy5wcm9ncmVzcyA9IHRoaXMuc3RhcnQgPSAwLCB0aGlzLnZhcnMgJiYgdGhpcy5raWxsKCEwLCAhMCksIGd0KSB7IHZhciBrLCBuLCBwLCBNLCBBLCBDLCBPLCBQLCBFLCBCLCBELCBlLCB6LCBZLCBYLCBGLCBMLCB0LCBILCBiLCBSLCBOLCBtLCBVLCB4LCB3LCByLCBTLCBWLCBXLCBpLCBnLCBqLCBRLCBxLCBHLCBLLCBvLCBaID0gKF8gPSBmYihIYShfKSB8fCBKYShfKSB8fCBfLm5vZGVUeXBlID8geyB0cmlnZ2VyOiBfIH0gOiBfLCBDdCkpLm9uVXBkYXRlLAogICAgICAgICAgICAgICAgICAgICQgPSBfLnRvZ2dsZUNsYXNzLAogICAgICAgICAgICAgICAgICAgIGEgPSBfLmlkLAogICAgICAgICAgICAgICAgICAgIGVlID0gXy5vblRvZ2dsZSwKICAgICAgICAgICAgICAgICAgICB0ZSA9IF8ub25SZWZyZXNoLAogICAgICAgICAgICAgICAgICAgIHJlID0gXy5zY3J1YiwKICAgICAgICAgICAgICAgICAgICBuZSA9IF8udHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICBpZSA9IF8ucGluLAogICAgICAgICAgICAgICAgICAgIG9lID0gXy5waW5TcGFjaW5nLAogICAgICAgICAgICAgICAgICAgIGFlID0gXy5pbnZhbGlkYXRlT25SZWZyZXNoLAogICAgICAgICAgICAgICAgICAgIHNlID0gXy5hbnRpY2lwYXRlUGluLAogICAgICAgICAgICAgICAgICAgIHMgPSBfLm9uU2NydWJDb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICBoID0gXy5vblNuYXBDb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICBsZSA9IF8ub25jZSwKICAgICAgICAgICAgICAgICAgICBjZSA9IF8uc25hcCwKICAgICAgICAgICAgICAgICAgICB1ZSA9IF8ucGluUmVwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgbCA9IF8ucGluU3BhY2VyLAogICAgICAgICAgICAgICAgICAgIGZlID0gXy5jb250YWluZXJBbmltYXRpb24sCiAgICAgICAgICAgICAgICAgICAgZGUgPSBfLmZhc3RTY3JvbGxFbmQsCiAgICAgICAgICAgICAgICAgICAgcGUgPSBfLnByZXZlbnRPdmVybGFwcywKICAgICAgICAgICAgICAgICAgICBnZSA9IF8uaG9yaXpvbnRhbCB8fCBfLmNvbnRhaW5lckFuaW1hdGlvbiAmJiAhMSAhPT0gXy5ob3Jpem9udGFsID8gUmUgOiBOZSwKICAgICAgICAgICAgICAgICAgICBoZSA9ICFyZSAmJiAwICE9PSByZSwKICAgICAgICAgICAgICAgICAgICB2ZSA9IEkoXy5zY3JvbGxlciB8fCBqZSksCiAgICAgICAgICAgICAgICAgICAgYyA9IFdlLmNvcmUuZ2V0Q2FjaGUodmUpLAogICAgICAgICAgICAgICAgICAgIGJlID0gQmEodmUpLAogICAgICAgICAgICAgICAgICAgIG1lID0gImZpeGVkIiA9PT0gKCJwaW5UeXBlIiBpbiBfID8gXy5waW5UeXBlIDogeSh2ZSwgInBpblR5cGUiKSB8fCBiZSAmJiAiZml4ZWQiKSwKICAgICAgICAgICAgICAgICAgICB5ZSA9IFtfLm9uRW50ZXIsIF8ub25MZWF2ZSwgXy5vbkVudGVyQmFjaywgXy5vbkxlYXZlQmFja10sCiAgICAgICAgICAgICAgICAgICAgeGUgPSBoZSAmJiBfLnRvZ2dsZUFjdGlvbnMuc3BsaXQoIiAiKSwKICAgICAgICAgICAgICAgICAgICB1ID0gIm1hcmtlcnMiIGluIF8gPyBfLm1hcmtlcnMgOiBDdC5tYXJrZXJzLAogICAgICAgICAgICAgICAgICAgIHdlID0gYmUgPyAwIDogcGFyc2VGbG9hdChkYih2ZSlbImJvcmRlciIgKyBnZS5wMiArIFR0XSkgfHwgMCwKICAgICAgICAgICAgICAgICAgICBTZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgX2UgPSBfLm9uUmVmcmVzaEluaXQgJiYgZnVuY3Rpb24oKSB7IHJldHVybiBfLm9uUmVmcmVzaEluaXQoU2UpIH0sCiAgICAgICAgICAgICAgICAgICAgVGUgPSBmdW5jdGlvbiBfZ2V0U2l6ZUZ1bmMoZSwgdCwgcikgeyB2YXIgbiA9IHIuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSByLmQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHIuYTsgcmV0dXJuIChvID0geShlLCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IikpID8gZnVuY3Rpb24oKSB7IHJldHVybiBvKClbbl0gfSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gKHQgPyBqZVsiaW5uZXIiICsgaV0gOiBlWyJjbGllbnQiICsgaV0pIHx8IDAgfSB9KHZlLCBiZSwgZ2UpLAogICAgICAgICAgICAgICAgICAgIGtlID0gZnVuY3Rpb24gX2dldE9mZnNldHNGdW5jKGUsIHQpIHsgcmV0dXJuICF0IHx8IH5MZS5pbmRleE9mKGUpID8gQ2EoZSkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIEJ0IH0gfSh2ZSwgYmUpLAogICAgICAgICAgICAgICAgICAgIE1lID0gMCwKICAgICAgICAgICAgICAgICAgICBBZSA9IDAsCiAgICAgICAgICAgICAgICAgICAgQ2UgPSBKKHZlLCBnZSk7IGlmIChTZS5tZWRpYSA9IGx0LCBTZS5fZGlyID0gZ2UsIHNlICo9IDQ1LCBTZS5zY3JvbGxlciA9IHZlLCBTZS5zY3JvbGwgPSBmZSA/IGZlLnRpbWUuYmluZChmZSkgOiBDZSwgTSA9IENlKCksIFNlLnZhcnMgPSBfLCBUID0gVCB8fCBfLmFuaW1hdGlvbiwgInJlZnJlc2hQcmlvcml0eSIgaW4gXyAmJiAob3QgPSAxLCAtOTk5OSA9PT0gXy5yZWZyZXNoUHJpb3JpdHkgJiYgKHV0ID0gU2UpKSwgYy50d2VlblNjcm9sbCA9IGMudHdlZW5TY3JvbGwgfHwgeyB0b3A6IGdjKHZlLCBOZSksIGxlZnQ6IGdjKHZlLCBSZSkgfSwgU2UudHdlZW5UbyA9IGsgPSBjLnR3ZWVuU2Nyb2xsW2dlLnBdLCBTZS5zY3J1YkR1cmF0aW9uID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICAoaSA9IEphKGUpICYmIGUpID8gVyA/IFcuZHVyYXRpb24oZSkgOiBXID0gV2UudG8oVCwgeyBlYXNlOiAiZXhwbyIsIHRvdGFsUHJvZ3Jlc3M6ICIrPTAuMDAxIiwgZHVyYXRpb246IGksIHBhdXNlZDogITAsIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUoKSB7IHJldHVybiBzICYmIHMoU2UpIH0gfSk6IChXICYmIFcucHJvZ3Jlc3MoMSkua2lsbCgpLCBXID0gMCkgfSwgVCAmJiAoVC52YXJzLmxhenkgPSAhMSwgVC5faW5pdHRlZCB8fCAhMSAhPT0gVC52YXJzLmltbWVkaWF0ZVJlbmRlciAmJiAhMSAhPT0gXy5pbW1lZGlhdGVSZW5kZXIgJiYgVC5yZW5kZXIoMCwgITAsICEwKSwgU2UuYW5pbWF0aW9uID0gVC5wYXVzZSgpLCAoVC5zY3JvbGxUcmlnZ2VyID0gU2UpLnNjcnViRHVyYXRpb24ocmUpLCBTID0gMCwgYSA9IGEgfHwgVC52YXJzLmlkKSwgT3QucHVzaChTZSksIGNlICYmIChLYShjZSkgJiYgIWNlLnB1c2ggfHwgKGNlID0geyBzbmFwVG86IGNlIH0pLCAic2Nyb2xsQmVoYXZpb3IiIGluIEdlLnN0eWxlICYmIFdlLnNldChiZSA/IFtHZSwgcWVdIDogdmUsIHsgc2Nyb2xsQmVoYXZpb3I6ICJhdXRvIiB9KSwgcCA9IElhKGNlLnNuYXBUbykgPyBjZS5zbmFwVG8gOiAibGFiZWxzIiA9PT0gY2Uuc25hcFRvID8gZnVuY3Rpb24gX2dldENsb3Nlc3RMYWJlbCh0KSB7IHJldHVybiBmdW5jdGlvbihlKSB7IHJldHVybiBXZS51dGlscy5zbmFwKGliKHQpLCBlKSB9IH0oVCkgOiAibGFiZWxzRGlyZWN0aW9uYWwiID09PSBjZS5zbmFwVG8gPyBmdW5jdGlvbiBfZ2V0TGFiZWxBdERpcmVjdGlvbihyKSB7IHJldHVybiBmdW5jdGlvbihlLCB0KSB7IHJldHVybiBrYihpYihyKSkoZSwgdC5kaXJlY3Rpb24pIH0gfShUKSA6ICExICE9PSBjZS5kaXJlY3Rpb25hbCA/IGZ1bmN0aW9uKGUsIHQpIHsgcmV0dXJuIGtiKGNlLnNuYXBUbykoZSwgZHQoKSAtIEFlIDwgNTAwID8gMCA6IHQuZGlyZWN0aW9uKSB9IDogV2UudXRpbHMuc25hcChjZS5zbmFwVG8pLCBnID0gY2UuZHVyYXRpb24gfHwgeyBtaW46IC4xLCBtYXg6IDIgfSwgZyA9IEthKGcpID8gZXQoZy5taW4sIGcubWF4KSA6IGV0KGcsIGcpLCBqID0gV2UuZGVsYXllZENhbGwoY2UuZGVsYXkgfHwgaSAvIDIgfHwgLjEsIGZ1bmN0aW9uKCkgeyB2YXIgZSA9IENlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gZHQoKSAtIEFlIDwgNTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGsudHdlZW47IGlmICghKHQgfHwgTWF0aC5hYnMoU2UuZ2V0VmVsb2NpdHkoKSkgPCAxMCkgfHwgciB8fCBudCB8fCBNZSA9PT0gZSkgU2UuaXNBY3RpdmUgJiYgTWUgIT09IGUgJiYgai5yZXN0YXJ0KCEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IHZhciBuID0gKGUgLSBDKSAvIHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFQgJiYgIWhlID8gVC50b3RhbFByb2dyZXNzKCkgOiBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0ID8gMCA6IChpIC0gVikgLyAoZHQoKSAtIHR0KSAqIDFlMyB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBXZS51dGlscy5jbGFtcCgtbiwgMSAtIG4sIGh0KG8gLyAyKSAqIG8gLyAuMTg1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbiArICghMSA9PT0gY2UuaW5lcnRpYSA/IDAgOiBhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZXQoMCwgMSwgcChzLCBTZSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBNYXRoLnJvdW5kKEMgKyBsICogeiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IGNlLm9uU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGNlLm9uSW50ZXJydXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjZS5vbkNvbXBsZXRlOyBpZiAoZSA8PSBPICYmIEMgPD0gZSAmJiBjICE9PSBlKSB7IGlmIChyICYmICFyLl9pbml0dGVkICYmIHIuZGF0YSA8PSBodChjIC0gZSkpIHJldHVybjshMSA9PT0gY2UuaW5lcnRpYSAmJiAoYSA9IGwgLSBuKSwgayhjLCB7IGR1cmF0aW9uOiBnKGh0KC4xODUgKiBNYXRoLm1heChodChzIC0gaSksIGh0KGwgLSBpKSkgLyBvIC8gLjA1IHx8IDApKSwgZWFzZTogY2UuZWFzZSB8fCAicG93ZXIzIiwgZGF0YTogaHQoYyAtIGUpLCBvbkludGVycnVwdDogZnVuY3Rpb24gb25JbnRlcnJ1cHQoKSB7IHJldHVybiBqLnJlc3RhcnQoITApICYmIGYgJiYgZihTZSkgfSwgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZSgpIHsgU2UudXBkYXRlKCksIE1lID0gQ2UoKSwgUyA9IFYgPSBUICYmICFoZSA/IFQudG90YWxQcm9ncmVzcygpIDogU2UucHJvZ3Jlc3MsIGggJiYgaChTZSksIGQgJiYgZChTZSkgfSB9LCBlLCBhICogeiwgYyAtIGUgLSBhICogeiksIHUgJiYgdShTZSwgay50d2VlbikgfSB9IH0pLnBhdXNlKCkpLCBhICYmIChQdFthXSA9IFNlKSwgbyA9IChvID0gKG5lID0gU2UudHJpZ2dlciA9IEkobmUgfHwgaWUpKSAmJiBuZS5fZ3NhcCAmJiBuZS5fZ3NhcC5zdFJldmVydCkgJiYgbyhTZSksIGllID0gITAgPT09IGllID8gbmUgOiBJKGllKSwgSGEoJCkgJiYgKCQgPSB7IHRhcmdldHM6IG5lLCBjbGFzc05hbWU6ICQgfSksIGllICYmICghMSA9PT0gb2UgfHwgb2UgPT09IF90IHx8IChvZSA9ICEoIW9lICYmICJmbGV4IiA9PT0gZGIoaWUucGFyZW50Tm9kZSkuZGlzcGxheSkgJiYgU3QpLCBTZS5waW4gPSBpZSwgITEgIT09IF8uZm9yY2UzRCAmJiBXZS5zZXQoaWUsIHsgZm9yY2UzRDogITAgfSksIChuID0gV2UuY29yZS5nZXRDYWNoZShpZSkpLnNwYWNlciA/IFkgPSBuLnBpblN0YXRlIDogKGwgJiYgKChsID0gSShsKSkgJiYgIWwubm9kZVR5cGUgJiYgKGwgPSBsLmN1cnJlbnQgfHwgbC5uYXRpdmVFbGVtZW50KSwgbi5zcGFjZXJJc05hdGl2ZSA9ICEhbCwgbCAmJiAobi5zcGFjZXJTdGF0ZSA9IGFjKGwpKSksIG4uc3BhY2VyID0gTCA9IGwgfHwgSmUuY3JlYXRlRWxlbWVudCgiZGl2IiksIEwuY2xhc3NMaXN0LmFkZCgicGluLXNwYWNlciIpLCBhICYmIEwuY2xhc3NMaXN0LmFkZCgicGluLXNwYWNlci0iICsgYSksIG4ucGluU3RhdGUgPSBZID0gYWMoaWUpKSwgU2Uuc3BhY2VyID0gTCA9IG4uc3BhY2VyLCByID0gZGIoaWUpLCBtID0gcltvZSArIGdlLm9zMl0sIEggPSBXZS5nZXRQcm9wZXJ0eShpZSksIGIgPSBXZS5xdWlja1NldHRlcihpZSwgZ2UuYSwga3QpLCBaYihpZSwgTCwgciksIEYgPSBhYyhpZSkpLCB1KSB7IGUgPSBLYSh1KSA/IGZiKHUsIEF0KSA6IEF0LCBCID0gdWIoInNjcm9sbGVyLXN0YXJ0IiwgYSwgdmUsIGdlLCBlLCAwKSwgRCA9IHViKCJzY3JvbGxlci1lbmQiLCBhLCB2ZSwgZ2UsIGUsIDAsIEIpLCB0ID0gQlsib2Zmc2V0IiArIGdlLm9wLmQyXTsgdmFyIGYgPSBJKHkodmUsICJjb250ZW50IikgfHwgdmUpOwogICAgICAgICAgICAgICAgICAgIFAgPSB0aGlzLm1hcmtlclN0YXJ0ID0gdWIoInN0YXJ0IiwgYSwgZiwgZ2UsIGUsIHQsIDAsIGZlKSwgRSA9IHRoaXMubWFya2VyRW5kID0gdWIoImVuZCIsIGEsIGYsIGdlLCBlLCB0LCAwLCBmZSksIGZlICYmIChLID0gV2UucXVpY2tTZXR0ZXIoW1AsIEVdLCBnZS5hLCBrdCkpLCBtZSB8fCBMZS5sZW5ndGggJiYgITAgPT09IHkodmUsICJmaXhlZE1hcmtlcnMiKSB8fCAoZnVuY3Rpb24gX21ha2VQb3NpdGlvbmFibGUoZSkgeyB2YXIgdCA9IGRiKGUpLnBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBlLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiA9PT0gdCB8fCAiZml4ZWQiID09PSB0ID8gdCA6ICJyZWxhdGl2ZSIgfShiZSA/IEdlIDogdmUpLCBXZS5zZXQoW0IsIERdLCB7IGZvcmNlM0Q6ICEwIH0pLCB4ID0gV2UucXVpY2tTZXR0ZXIoQiwgZ2UuYSwga3QpLCB3ID0gV2UucXVpY2tTZXR0ZXIoRCwgZ2UuYSwga3QpKSB9IGlmIChmZSkgeyB2YXIgZCA9IGZlLnZhcnMub25VcGRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBmZS52YXJzLm9uVXBkYXRlUGFyYW1zOwogICAgICAgICAgICAgICAgICAgIGZlLmV2ZW50Q2FsbGJhY2soIm9uVXBkYXRlIiwgZnVuY3Rpb24oKSB7IFNlLnVwZGF0ZSgwLCAwLCAxKSwgZCAmJiBkLmFwcGx5KHYgfHwgW10pIH0pIH0KICAgICAgICAgICAgICAgIFNlLnByZXZpb3VzID0gZnVuY3Rpb24oKSB7IHJldHVybiBPdFtPdC5pbmRleE9mKFNlKSAtIDFdIH0sIFNlLm5leHQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE90W090LmluZGV4T2YoU2UpICsgMV0gfSwgU2UucmV2ZXJ0ID0gZnVuY3Rpb24oZSkgeyB2YXIgdCA9ICExICE9PSBlIHx8ICFTZS5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICByID0gcnQ7CiAgICAgICAgICAgICAgICAgICAgdCAhPT0gU2UuaXNSZXZlcnRlZCAmJiAodCAmJiAoIVNlLnNjcm9sbC5yZWMgJiYgcnQgJiYgY3QgJiYgKFNlLnNjcm9sbC5yZWMgPSBDZSgpKSwgcSA9IE1hdGgubWF4KENlKCksIFNlLnNjcm9sbC5yZWMgfHwgMCksIFEgPSBTZS5wcm9ncmVzcywgRyA9IFQgJiYgVC5wcm9ncmVzcygpKSwgUCAmJiBbUCwgRSwgQiwgRF0uZm9yRWFjaChmdW5jdGlvbihlKSB7IHJldHVybiBlLnN0eWxlLmRpc3BsYXkgPSB0ID8gIm5vbmUiIDogImJsb2NrIiB9KSwgdCAmJiAocnQgPSAxKSwgU2UudXBkYXRlKHQpLCBydCA9IHIsIGllICYmICh0ID8gZnVuY3Rpb24gX3N3YXBQaW5PdXQoZSwgdCwgcikgeyBJdChyKTsgdmFyIG4gPSBlLl9nc2FwOyBpZiAobi5zcGFjZXJJc05hdGl2ZSkgSXQobi5zcGFjZXJTdGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUucGFyZW50Tm9kZSA9PT0gdCkgeyB2YXIgaSA9IHQucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgKGkuaW5zZXJ0QmVmb3JlKGUsIHQpLCBpLnJlbW92ZUNoaWxkKHQpKSB9IH0oaWUsIEwsIFkpIDogdWUgJiYgU2UuaXNBY3RpdmUgfHwgWmIoaWUsIEwsIGRiKGllKSwgVSkpLCBTZS5pc1JldmVydGVkID0gdCkgfSwgU2UucmVmcmVzaCA9IGZ1bmN0aW9uKGUsIHQpIHsgaWYgKCFydCAmJiBTZS5lbmFibGVkIHx8IHQpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZSAmJiBlICYmIHB0KSBuYihTY3JvbGxUcmlnZ2VyLCAic2Nyb2xsRW5kIiwgSmIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHshY3QgJiYgX2UgJiYgX2UoU2UpLCBydCA9IDEsIEFlID0gZHQoKSwgay50d2VlbiAmJiAoay50d2Vlbi5raWxsKCksIGsudHdlZW4gPSAwKSwgVyAmJiBXLnBhdXNlKCksIGFlICYmIFQgJiYgVC50aW1lKC0uMDEsICEwKS5pbnZhbGlkYXRlKCksIFNlLmlzUmV2ZXJ0ZWQgfHwgU2UucmV2ZXJ0KCk7IGZvciAodmFyIHIsIG4sIGksIG8sIGEsIHMsIGwsIGMsIHUsIGYsIGQgPSBUZSgpLCBwID0ga2UoKSwgZyA9IGZlID8gZmUuZHVyYXRpb24oKSA6IEZhKHZlLCBnZSksIGggPSAwLCB2ID0gMCwgYiA9IF8uZW5kLCBtID0gXy5lbmRUcmlnZ2VyIHx8IG5lLCB5ID0gXy5zdGFydCB8fCAoMCAhPT0gXy5zdGFydCAmJiBuZSA/IGllID8gIjAgMCIgOiAiMCAxMDAlIiA6IDApLCB4ID0gU2UucGlubmVkQ29udGFpbmVyID0gXy5waW5uZWRDb250YWluZXIgJiYgSShfLnBpbm5lZENvbnRhaW5lciksIHcgPSBuZSAmJiBNYXRoLm1heCgwLCBPdC5pbmRleE9mKFNlKSkgfHwgMCwgUyA9IHc7IFMtLTspKHMgPSBPdFtTXSkuZW5kIHx8IHMucmVmcmVzaCgwLCAxKSB8fCAocnQgPSAxKSwgIShsID0gcy5waW4pIHx8IGwgIT09IG5lICYmIGwgIT09IGllIHx8IHMuaXNSZXZlcnRlZCB8fCAoKGYgPSBmIHx8IFtdKS51bnNoaWZ0KHMpLCBzLnJldmVydCgpKSwgcyAhPT0gT3RbU10gJiYgKHctLSwgUy0tKTsgZm9yIChJYSh5KSAmJiAoeSA9IHkoU2UpKSwgQyA9IGRjKHksIG5lLCBkLCBnZSwgQ2UoKSwgUCwgQiwgU2UsIHAsIHdlLCBtZSwgZywgZmUpIHx8IChpZSA/IC0uMDAxIDogMCksIElhKGIpICYmIChiID0gYihTZSkpLCBIYShiKSAmJiAhYi5pbmRleE9mKCIrPSIpICYmICh+Yi5pbmRleE9mKCIgIikgPyBiID0gKEhhKHkpID8geS5zcGxpdCgiICIpWzBdIDogIiIpICsgYiA6IChoID0gdGIoYi5zdWJzdHIoMiksIGQpLCBiID0gSGEoeSkgPyB5IDogQyArIGgsIG0gPSBuZSkpLCBPID0gTWF0aC5tYXgoQywgZGMoYiB8fCAobSA/ICIxMDAlIDAiIDogZyksIG0sIGQsIGdlLCBDZSgpICsgaCwgRSwgRCwgU2UsIHAsIHdlLCBtZSwgZywgZmUpKSB8fCAtLjAwMSwgeiA9IE8gLSBDIHx8IChDIC09IC4wMSkgJiYgLjAwMSwgaCA9IDAsIFMgPSB3OyBTLS07KShsID0gKHMgPSBPdFtTXSkucGluKSAmJiBzLnN0YXJ0IC0gcy5fcGluUHVzaCA8IEMgJiYgIWZlICYmIDAgPCBzLmVuZCAmJiAociA9IHMuZW5kIC0gcy5zdGFydCwgbCAhPT0gbmUgJiYgbCAhPT0geCB8fCBKYSh5KSB8fCAoaCArPSByICogKDEgLSBzLnByb2dyZXNzKSksIGwgPT09IGllICYmICh2ICs9IHIpKTsgaWYgKEMgKz0gaCwgTyArPSBoLCBTZS5fcGluUHVzaCA9IHYsIFAgJiYgaCAmJiAoKHIgPSB7fSlbZ2UuYV0gPSAiKz0iICsgaCwgeCAmJiAocltnZS5wXSA9ICItPSIgKyBDZSgpKSwgV2Uuc2V0KFtQLCBFXSwgcikpLCBpZSkgciA9IGRiKGllKSwgbyA9IGdlID09PSBOZSwgaSA9IENlKCksIFIgPSBwYXJzZUZsb2F0KEgoZ2UuYSkpICsgdiwgIWcgJiYgMSA8IE8gJiYgKChiZSA/IEdlIDogdmUpLnN0eWxlWyJvdmVyZmxvdy0iICsgZ2UuYV0gPSAic2Nyb2xsIiksIFpiKGllLCBMLCByKSwgRiA9IGFjKGllKSwgbiA9IE10KGllLCAhMCksIGMgPSBtZSAmJiBKKHZlLCBvID8gUmUgOiBOZSkoKSwgb2UgJiYgKChVID0gW29lICsgZ2Uub3MyLCB6ICsgdiArIGt0XSkudCA9IEwsIChTID0gb2UgPT09IFN0ID8gaGIoaWUsIGdlKSArIHogKyB2IDogMCkgJiYgVS5wdXNoKGdlLmQsIFMgKyBrdCksIEl0KFUpLCBtZSAmJiBDZShxKSksIG1lICYmICgoYSA9IHsgdG9wOiBuLnRvcCArIChvID8gaSAtIEMgOiBjKSArIGt0LCBsZWZ0OiBuLmxlZnQgKyAobyA/IGMgOiBpIC0gQykgKyBrdCwgYm94U2l6aW5nOiAiYm9yZGVyLWJveCIsIHBvc2l0aW9uOiAiZml4ZWQiIH0pW3Z0XSA9IGEubWF4V2lkdGggPSBNYXRoLmNlaWwobi53aWR0aCkgKyBrdCwgYVtidF0gPSBhLm1heEhlaWdodCA9IE1hdGguY2VpbChuLmhlaWdodCkgKyBrdCwgYVtfdF0gPSBhW190ICsgeHRdID0gYVtfdCArIG10XSA9IGFbX3QgKyB3dF0gPSBhW190ICsgeXRdID0gIjAiLCBhW1N0XSA9IHJbU3RdLCBhW1N0ICsgeHRdID0gcltTdCArIHh0XSwgYVtTdCArIG10XSA9IHJbU3QgKyBtdF0sIGFbU3QgKyB3dF0gPSByW1N0ICsgd3RdLCBhW1N0ICsgeXRdID0gcltTdCArIHl0XSwgWCA9IGZ1bmN0aW9uIF9jb3B5U3RhdGUoZSwgdCwgcikgeyBmb3IgKHZhciBuLCBpID0gW10sIG8gPSBlLmxlbmd0aCwgYSA9IHIgPyA4IDogMDsgYSA8IG87IGEgKz0gMikgbiA9IGVbYV0sIGkucHVzaChuLCBuIGluIHQgPyB0W25dIDogZVthICsgMV0pOyByZXR1cm4gaS50ID0gZS50LCBpIH0oWSwgYSwgdWUpKSwgVCA/ICh1ID0gVC5faW5pdHRlZCwgYXQoMSksIFQucmVuZGVyKFQuZHVyYXRpb24oKSwgITAsICEwKSwgTiA9IEgoZ2UuYSkgLSBSICsgeiArIHYsIHogIT09IE4gJiYgbWUgJiYgWC5zcGxpY2UoWC5sZW5ndGggLSAyLCAyKSwgVC5yZW5kZXIoMCwgITAsICEwKSwgdSB8fCBULmludmFsaWRhdGUoKSwgYXQoMCkpIDogTiA9IHo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZSAmJiBDZSgpICYmICFmZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG4gPSBuZS5wYXJlbnROb2RlOyBuICYmIG4gIT09IEdlOykgbi5fcGluT2Zmc2V0ICYmIChDIC09IG4uX3Bpbk9mZnNldCwgTyAtPSBuLl9waW5PZmZzZXQpLCBuID0gbi5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAmJiBmLmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5yZXZlcnQoITEpIH0pLCBTZS5zdGFydCA9IEMsIFNlLmVuZCA9IE8sIE0gPSBBID0gQ2UoKSwgZmUgfHwgKE0gPCBxICYmIENlKHEpLCBTZS5zY3JvbGwucmVjID0gMCksIFNlLnJldmVydCghMSksIGogJiYgKE1lID0gLTEsIFNlLmlzQWN0aXZlICYmIENlKEMgKyB6ICogUSksIGoucmVzdGFydCghMCkpLCBydCA9IDAsIFQgJiYgaGUgJiYgKFQuX2luaXR0ZWQgfHwgRykgJiYgVC5wcm9ncmVzcygpICE9PSBHICYmIFQucHJvZ3Jlc3MoRywgITApLnJlbmRlcihULnRpbWUoKSwgITAsICEwKSwgUSA9PT0gU2UucHJvZ3Jlc3MgJiYgIWZlIHx8IChUICYmICFoZSAmJiBULnRvdGFsUHJvZ3Jlc3MoUSwgITApLCBTZS5wcm9ncmVzcyA9IFEsIFNlLnVwZGF0ZSgwLCAwLCAxKSksIGllICYmIG9lICYmIChMLl9waW5PZmZzZXQgPSBNYXRoLnJvdW5kKFNlLnByb2dyZXNzICogTikpLCB0ZSAmJiB0ZShTZSkgfSB9LCBTZS5nZXRWZWxvY2l0eSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gKENlKCkgLSBBKSAvIChkdCgpIC0gdHQpICogMWUzIHx8IDAgfSwgU2UuZW5kQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7IE5hKFNlLmNhbGxiYWNrQW5pbWF0aW9uKSwgVCAmJiAoVyA/IFcucHJvZ3Jlc3MoMSkgOiBULnBhdXNlZCgpID8gaGUgfHwgTmEoVCwgU2UuZGlyZWN0aW9uIDwgMCwgMSkgOiBOYShULCBULnJldmVyc2VkKCkpKSB9LCBTZS5sYWJlbFRvU2Nyb2xsID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gVCAmJiBULmxhYmVscyAmJiAoQyB8fCBTZS5yZWZyZXNoKCkgfHwgQykgKyBULmxhYmVsc1tlXSAvIFQuZHVyYXRpb24oKSAqIHogfHwgMCB9LCBTZS5nZXRUcmFpbGluZyA9IGZ1bmN0aW9uKHQpIHsgdmFyIGUgPSBPdC5pbmRleE9mKFNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IDAgPCBTZS5kaXJlY3Rpb24gPyBPdC5zbGljZSgwLCBlKS5yZXZlcnNlKCkgOiBPdC5zbGljZShlICsgMSk7IHJldHVybiAoSGEodCkgPyByLmZpbHRlcihmdW5jdGlvbihlKSB7IHJldHVybiBlLnZhcnMucHJldmVudE92ZXJsYXBzID09PSB0IH0pIDogcikuZmlsdGVyKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIDAgPCBTZS5kaXJlY3Rpb24gPyBlLmVuZCA8PSBDIDogZS5zdGFydCA+PSBPIH0pIH0sIFNlLnVwZGF0ZSA9IGZ1bmN0aW9uKGUsIHQsIHIpIHsgaWYgKCFmZSB8fCByIHx8IGUpIHsgdmFyIG4sIGksIG8sIGEsIHMsIGwsIGMsIHUgPSBTZS5zY3JvbGwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBlID8gMCA6ICh1IC0gQykgLyB6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGYgPCAwID8gMCA6IDEgPCBmID8gMSA6IGYgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBTZS5wcm9ncmVzczsgaWYgKHQgJiYgKEEgPSBNLCBNID0gZmUgPyBDZSgpIDogdSwgY2UgJiYgKFYgPSBTLCBTID0gVCAmJiAhaGUgPyBULnRvdGFsUHJvZ3Jlc3MoKSA6IGQpKSwgc2UgJiYgIWQgJiYgaWUgJiYgIXJ0ICYmICFmdCAmJiBwdCAmJiBDIDwgdSArICh1IC0gQSkgLyAoZHQoKSAtIHR0KSAqIHNlICYmIChkID0gMWUtNCksIGQgIT09IHAgJiYgU2UuZW5hYmxlZCkgeyBpZiAoYSA9IChzID0gKG4gPSBTZS5pc0FjdGl2ZSA9ICEhZCAmJiBkIDwgMSkgIT0gKCEhcCAmJiBwIDwgMSkpIHx8ICEhZCAhPSAhIXAsIFNlLmRpcmVjdGlvbiA9IHAgPCBkID8gMSA6IC0xLCBTZS5wcm9ncmVzcyA9IGQsIGEgJiYgIXJ0ICYmIChpID0gZCAmJiAhcCA/IDAgOiAxID09PSBkID8gMSA6IDEgPT09IHAgPyAyIDogMywgaGUgJiYgKG8gPSAhcyAmJiAibm9uZSIgIT09IHhlW2kgKyAxXSAmJiB4ZVtpICsgMV0gfHwgeGVbaV0sIGMgPSBUICYmICgiY29tcGxldGUiID09PSBvIHx8ICJyZXNldCIgPT09IG8gfHwgbyBpbiBUKSkpLCBwZSAmJiAocyB8fCBjKSAmJiAoYyB8fCByZSB8fCAhVCkgJiYgKElhKHBlKSA/IHBlKFNlKSA6IFNlLmdldFRyYWlsaW5nKHBlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuZW5kQW5pbWF0aW9uKCkgfSkpLCBoZSB8fCAoIVcgfHwgcnQgfHwgZnQgPyBUICYmIFQudG90YWxQcm9ncmVzcyhkLCAhIXJ0KSA6ICgoZmUgfHwgdXQgJiYgdXQgIT09IFNlKSAmJiBXLnJlbmRlcihXLl9kcC5fdGltZSAtIFcuX3N0YXJ0KSwgVy5yZXNldFRvID8gVy5yZXNldFRvKCJ0b3RhbFByb2dyZXNzIiwgZCwgVC5fdFRpbWUgLyBULl90RHVyKSA6IChXLnZhcnMudG90YWxQcm9ncmVzcyA9IGQsIFcuaW52YWxpZGF0ZSgpLnJlc3RhcnQoKSkpKSwgaWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgb2UgJiYgKEwuc3R5bGVbb2UgKyBnZS5vczJdID0gbSksIG1lKSB7IGlmIChhKSB7IGlmIChsID0gIWUgJiYgcCA8IGQgJiYgdSA8IE8gKyAxICYmIHUgKyAxID49IEZhKHZlLCBnZSksIHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIHx8ICFuICYmICFsKSBmYyhpZSwgTCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IHZhciBnID0gTXQoaWUsICEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSB1IC0gQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmMoaWUsIEdlLCBnLnRvcCArIChnZSA9PT0gTmUgPyBoIDogMCkgKyBrdCwgZy5sZWZ0ICsgKGdlID09PSBOZSA/IDAgOiBoKSArIGt0KSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdChuIHx8IGwgPyBYIDogRiksIE4gIT09IHogJiYgZCA8IDEgJiYgbiB8fCBiKFIgKyAoMSAhPT0gZCB8fCBsID8gMCA6IE4pKSB9IH0gZWxzZSBiKHlhKFIgKyBOICogZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjZSB8fCBrLnR3ZWVuIHx8IHJ0IHx8IGZ0IHx8IGoucmVzdGFydCghMCksICQgJiYgKHMgfHwgbGUgJiYgZCAmJiAoZCA8IDEgfHwgIXN0KSkgJiYgS2UoJC50YXJnZXRzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUuY2xhc3NMaXN0W24gfHwgbGUgPyAiYWRkIiA6ICJyZW1vdmUiXSgkLmNsYXNzTmFtZSkgfSksICFaIHx8IGhlIHx8IGUgfHwgWihTZSksIGEgJiYgIXJ0ID8gKGhlICYmIChjICYmICgiY29tcGxldGUiID09PSBvID8gVC5wYXVzZSgpLnRvdGFsUHJvZ3Jlc3MoMSkgOiAicmVzZXQiID09PSBvID8gVC5yZXN0YXJ0KCEwKS5wYXVzZSgpIDogInJlc3RhcnQiID09PSBvID8gVC5yZXN0YXJ0KCEwKSA6IFRbb10oKSksIFogJiYgWihTZSkpLCAhcyAmJiBzdCB8fCAoZWUgJiYgcyAmJiBPYShTZSwgZWUpLCB5ZVtpXSAmJiBPYShTZSwgeWVbaV0pLCBsZSAmJiAoMSA9PT0gZCA/IFNlLmtpbGwoITEsIDEpIDogeWVbaV0gPSAwKSwgcyB8fCB5ZVtpID0gMSA9PT0gZCA/IDEgOiAzXSAmJiBPYShTZSwgeWVbaV0pKSwgZGUgJiYgIW4gJiYgTWF0aC5hYnMoU2UuZ2V0VmVsb2NpdHkoKSkgPiAoSmEoZGUpID8gZGUgOiAyNTAwKSAmJiAoTmEoU2UuY2FsbGJhY2tBbmltYXRpb24pLCBXID8gVy5wcm9ncmVzcygxKSA6IE5hKFQsICFkLCAxKSkpIDogaGUgJiYgWiAmJiAhcnQgJiYgWihTZSkgfSBpZiAodykgeyB2YXIgdiA9IGZlID8gdSAvIGZlLmR1cmF0aW9uKCkgKiAoZmUuX2NhU2Nyb2xsRGlzdCB8fCAwKSA6IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4KHYgKyAoQi5faXNGbGlwcGVkID8gMSA6IDApKSwgdyh2KSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEsgJiYgSygtdSAvIGZlLmR1cmF0aW9uKCkgKiAoZmUuX2NhU2Nyb2xsRGlzdCB8fCAwKSkgfSB9LCBTZS5lbmFibGUgPSBmdW5jdGlvbihlLCB0KSB7IFNlLmVuYWJsZWQgfHwgKFNlLmVuYWJsZWQgPSAhMCwgbmIodmUsICJyZXNpemUiLCBDYiksIG5iKGJlID8gSmUgOiB2ZSwgInNjcm9sbCIsIEFiKSwgX2UgJiYgbmIoU2Nyb2xsVHJpZ2dlciwgInJlZnJlc2hJbml0IiwgX2UpLCAhMSAhPT0gZSAmJiAoU2UucHJvZ3Jlc3MgPSBRID0gMCwgTSA9IEEgPSBNZSA9IENlKCkpLCAhMSAhPT0gdCAmJiBTZS5yZWZyZXNoKCkpIH0sIFNlLmdldFR3ZWVuID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gZSAmJiBrID8gay50d2VlbiA6IFcgfSwgU2Uuc2V0UG9zaXRpb25zID0gZnVuY3Rpb24oZSwgdCkgeyBpZSAmJiAoUiArPSBlIC0gQywgTiArPSB0IC0gZSAtIHopLCBTZS5zdGFydCA9IEMgPSBlLCBTZS5lbmQgPSBPID0gdCwgeiA9IHQgLSBlLCBTZS51cGRhdGUoKSB9LCBTZS5kaXNhYmxlID0gZnVuY3Rpb24oZSwgdCkgeyBpZiAoU2UuZW5hYmxlZCAmJiAoITEgIT09IGUgJiYgU2UucmV2ZXJ0KCksIFNlLmVuYWJsZWQgPSBTZS5pc0FjdGl2ZSA9ICExLCB0IHx8IFcgJiYgVy5wYXVzZSgpLCBxID0gMCwgbiAmJiAobi51bmNhY2hlID0gMSksIF9lICYmIG9iKFNjcm9sbFRyaWdnZXIsICJyZWZyZXNoSW5pdCIsIF9lKSwgaiAmJiAoai5wYXVzZSgpLCBrLnR3ZWVuICYmIGsudHdlZW4ua2lsbCgpICYmIChrLnR3ZWVuID0gMCkpLCAhYmUpKSB7IGZvciAodmFyIHIgPSBPdC5sZW5ndGg7IHItLTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT3Rbcl0uc2Nyb2xsZXIgPT09IHZlICYmIE90W3JdICE9PSBTZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICBvYih2ZSwgInJlc2l6ZSIsIENiKSwgb2IodmUsICJzY3JvbGwiLCBBYikgfSB9LCBTZS5raWxsID0gZnVuY3Rpb24oZSwgdCkgeyBTZS5kaXNhYmxlKGUsIHQpLCBXICYmICF0ICYmIFcua2lsbCgpLCBhICYmIGRlbGV0ZSBQdFthXTsgdmFyIHIgPSBPdC5pbmRleE9mKFNlKTsKICAgICAgICAgICAgICAgICAgICAwIDw9IHIgJiYgT3Quc3BsaWNlKHIsIDEpLCByID09PSBpdCAmJiAwIDwgRXQgJiYgaXQtLSwgciA9IDAsIE90LmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5zY3JvbGxlciA9PT0gU2Uuc2Nyb2xsZXIgJiYgKHIgPSAxKSB9KSwgciB8fCAoU2Uuc2Nyb2xsLnJlYyA9IDApLCBUICYmIChULnNjcm9sbFRyaWdnZXIgPSBudWxsLCBlICYmIFQucmVuZGVyKC0xKSwgdCB8fCBULmtpbGwoKSksIFAgJiYgW1AsIEUsIEIsIERdLmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5wYXJlbnROb2RlICYmIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSB9KSwgdXQgPT09IFNlICYmICh1dCA9IDApLCBpZSAmJiAobiAmJiAobi51bmNhY2hlID0gMSksIHIgPSAwLCBPdC5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUucGluID09PSBpZSAmJiByKysgfSksIHIgfHwgKG4uc3BhY2VyID0gMCkpLCBfLm9uS2lsbCAmJiBfLm9uS2lsbChTZSkgfSwgU2UuZW5hYmxlKCExLCAhMSksIG8gJiYgbyhTZSksIFQgJiYgVC5hZGQgJiYgIXogPyBXZS5kZWxheWVkQ2FsbCguMDEsIGZ1bmN0aW9uKCkgeyByZXR1cm4gQyB8fCBPIHx8IFNlLnJlZnJlc2goKSB9KSAmJiAoeiA9IC4wMSkgJiYgKEMgPSBPID0gMCkgOiBTZS5yZWZyZXNoKCkgfSBlbHNlIHRoaXMudXBkYXRlID0gdGhpcy5yZWZyZXNoID0gdGhpcy5raWxsID0geGEgfSwgU2Nyb2xsVHJpZ2dlci5yZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGUpIHsgcmV0dXJuIGEgfHwgKFdlID0gZSB8fCBBYSgpLCB6YSgpICYmIHdpbmRvdy5kb2N1bWVudCAmJiBTY3JvbGxUcmlnZ2VyLmVuYWJsZSgpLCBhID0gZ3QpLCBhIH0sIFNjcm9sbFRyaWdnZXIuZGVmYXVsdHMgPSBmdW5jdGlvbiBkZWZhdWx0cyhlKSB7IGlmIChlKQogICAgICAgICAgICAgICAgZm9yICh2YXIgdCBpbiBlKSBDdFt0XSA9IGVbdF07IHJldHVybiBDdCB9LCBTY3JvbGxUcmlnZ2VyLmRpc2FibGUgPSBmdW5jdGlvbiBkaXNhYmxlKHQsIHIpIHsgZ3QgPSAwLCBPdC5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGVbciA/ICJraWxsIiA6ICJkaXNhYmxlIl0odCkgfSksIG9iKGplLCAid2hlZWwiLCBBYiksIG9iKEplLCAic2Nyb2xsIiwgQWIpLCBjbGVhckludGVydmFsKGMpLCBvYihKZSwgInRvdWNoY2FuY2VsIiwgeGEpLCBvYihHZSwgInRvdWNoc3RhcnQiLCB4YSksIG1iKG9iLCBKZSwgInBvaW50ZXJkb3duLHRvdWNoc3RhcnQsbW91c2Vkb3duIiwgdmEpLCBtYihvYiwgSmUsICJwb2ludGVydXAsdG91Y2hlbmQsbW91c2V1cCIsIHdhKSwgbC5raWxsKCksIEdhKG9iKTsgZm9yICh2YXIgZSA9IDA7IGUgPCBULmxlbmd0aDsgZSArPSAzKSBwYihvYiwgVFtlXSwgVFtlICsgMV0pLCBwYihvYiwgVFtlXSwgVFtlICsgMl0pIH0sIFNjcm9sbFRyaWdnZXIuZW5hYmxlID0gZnVuY3Rpb24gZW5hYmxlKCkgeyBpZiAoamUgPSB3aW5kb3csIEplID0gZG9jdW1lbnQsIHFlID0gSmUuZG9jdW1lbnRFbGVtZW50LCBHZSA9IEplLmJvZHksIFdlICYmIChLZSA9IFdlLnV0aWxzLnRvQXJyYXksIGV0ID0gV2UudXRpbHMuY2xhbXAsIGF0ID0gV2UuY29yZS5zdXBwcmVzc092ZXJ3cml0ZXMgfHwgeGEsIFdlLmNvcmUuZ2xvYmFscygiU2Nyb2xsVHJpZ2dlciIsIFNjcm9sbFRyaWdnZXIpLCBHZSkpIHsgZ3QgPSAxLCBrLnJlZ2lzdGVyKFdlKSwgU2Nyb2xsVHJpZ2dlci5pc1RvdWNoID0gay5pc1RvdWNoLCBDID0gay5pc1RvdWNoICYmIC8oaVBhZHxpUGhvbmV8aVBvZHxNYWMpL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSwgbmIoamUsICJ3aGVlbCIsIEFiKSwgcyA9IFtqZSwgSmUsIHFlLCBHZV0sIFNjcm9sbFRyaWdnZXIubWF0Y2hNZWRpYSh7ICIob3JpZW50YXRpb246IHBvcnRyYWl0KSI6IGZ1bmN0aW9uIG9yaWVudGF0aW9uUG9ydHJhaXQoKSB7IHJldHVybiBCYigpLCBCYiB9IH0pLCBuYihKZSwgInNjcm9sbCIsIEFiKTsgdmFyIGUsIHQsIHIgPSBHZS5zdHlsZSwKICAgICAgICAgICAgICAgICAgICBuID0gci5ib3JkZXJUb3BTdHlsZTsgZm9yIChyLmJvcmRlclRvcFN0eWxlID0gInNvbGlkIiwgZSA9IE10KEdlKSwgTmUubSA9IE1hdGgucm91bmQoZS50b3AgKyBOZS5zYygpKSB8fCAwLCBSZS5tID0gTWF0aC5yb3VuZChlLmxlZnQgKyBSZS5zYygpKSB8fCAwLCBuID8gci5ib3JkZXJUb3BTdHlsZSA9IG4gOiByLnJlbW92ZVByb3BlcnR5KCJib3JkZXItdG9wLXN0eWxlIiksIGMgPSBzZXRJbnRlcnZhbCh6YiwgMjUwKSwgV2UuZGVsYXllZENhbGwoLjUsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZnQgPSAwIH0pLCBuYihKZSwgInRvdWNoY2FuY2VsIiwgeGEpLCBuYihHZSwgInRvdWNoc3RhcnQiLCB4YSksIG1iKG5iLCBKZSwgInBvaW50ZXJkb3duLHRvdWNoc3RhcnQsbW91c2Vkb3duIiwgdmEpLCBtYihuYiwgSmUsICJwb2ludGVydXAsdG91Y2hlbmQsbW91c2V1cCIsIHdhKSwgdSA9IFdlLnV0aWxzLmNoZWNrUHJlZml4KCJ0cmFuc2Zvcm0iKSwgcmUucHVzaCh1KSwgYSA9IGR0KCksIGwgPSBXZS5kZWxheWVkQ2FsbCguMiwgWikucGF1c2UoKSwgcCA9IFtKZSwgInZpc2liaWxpdHljaGFuZ2UiLCBmdW5jdGlvbigpIHsgdmFyIGUgPSBqZS5pbm5lcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGplLmlubmVySGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICBKZS5oaWRkZW4gPyAoZiA9IGUsIGQgPSB0KSA6IGYgPT09IGUgJiYgZCA9PT0gdCB8fCBDYigpIH0sIEplLCAiRE9NQ29udGVudExvYWRlZCIsIFosIGplLCAibG9hZCIsIFosIGplLCAicmVzaXplIiwgQ2JdLCBHYShuYiksIE90LmZvckVhY2goZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5lbmFibGUoMCwgMSkgfSksIHQgPSAwOyB0IDwgVC5sZW5ndGg7IHQgKz0gMykgcGIob2IsIFRbdF0sIFRbdCArIDFdKSwgcGIob2IsIFRbdF0sIFRbdCArIDJdKSB9IH0sIFNjcm9sbFRyaWdnZXIuY29uZmlnID0gZnVuY3Rpb24gY29uZmlnKGUpIHsgImxpbWl0Q2FsbGJhY2tzIiBpbiBlICYmIChzdCA9ICEhZS5saW1pdENhbGxiYWNrcyk7IHZhciB0ID0gZS5zeW5jSW50ZXJ2YWw7CiAgICAgICAgICAgIHQgJiYgY2xlYXJJbnRlcnZhbChjKSB8fCAoYyA9IHQpICYmIHNldEludGVydmFsKHpiLCB0KSwgImlnbm9yZU1vYmlsZVJlc2l6ZSIgaW4gZSAmJiAodiA9IDEgPT09IFNjcm9sbFRyaWdnZXIuaXNUb3VjaCAmJiBlLmlnbm9yZU1vYmlsZVJlc2l6ZSksICJhdXRvUmVmcmVzaEV2ZW50cyIgaW4gZSAmJiAoR2Eob2IpIHx8IEdhKG5iLCBlLmF1dG9SZWZyZXNoRXZlbnRzIHx8ICJub25lIiksIGcgPSAtMSA9PT0gKGUuYXV0b1JlZnJlc2hFdmVudHMgKyAiIikuaW5kZXhPZigicmVzaXplIikpIH0sIFNjcm9sbFRyaWdnZXIuc2Nyb2xsZXJQcm94eSA9IGZ1bmN0aW9uIHNjcm9sbGVyUHJveHkoZSwgdCkgeyB2YXIgciA9IEkoZSksCiAgICAgICAgICAgICAgICBuID0gVC5pbmRleE9mKHIpLAogICAgICAgICAgICAgICAgaSA9IEJhKHIpO35uICYmIFQuc3BsaWNlKG4sIGkgPyA2IDogMiksIHQgJiYgKGkgPyBMZS51bnNoaWZ0KGplLCB0LCBHZSwgdCwgcWUsIHQpIDogTGUudW5zaGlmdChyLCB0KSkgfSwgU2Nyb2xsVHJpZ2dlci5tYXRjaE1lZGlhID0gZnVuY3Rpb24gbWF0Y2hNZWRpYShlKSB7IHZhciB0LCByLCBuLCBpLCBvOyBmb3IgKHIgaW4gZSkgbiA9IFUuaW5kZXhPZihyKSwgaSA9IGVbcl0sICJhbGwiID09PSAobHQgPSByKSA/IGkoKSA6ICh0ID0gamUubWF0Y2hNZWRpYShyKSkgJiYgKHQubWF0Y2hlcyAmJiAobyA9IGkoKSksIH5uID8gKFVbbiArIDFdID0gTWEoVVtuICsgMV0sIGkpLCBVW24gKyAyXSA9IE1hKFVbbiArIDJdLCBvKSkgOiAobiA9IFUubGVuZ3RoLCBVLnB1c2gociwgaSwgbyksIHQuYWRkTGlzdGVuZXIgPyB0LmFkZExpc3RlbmVyKEliKSA6IHQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgSWIpKSwgVVtuICsgM10gPSB0Lm1hdGNoZXMpLCBsdCA9IDA7IHJldHVybiBVIH0sIFNjcm9sbFRyaWdnZXIuY2xlYXJNYXRjaE1lZGlhID0gZnVuY3Rpb24gY2xlYXJNYXRjaE1lZGlhKGUpIHsgZSB8fCAoVS5sZW5ndGggPSAwKSwgMCA8PSAoZSA9IFUuaW5kZXhPZihlKSkgJiYgVS5zcGxpY2UoZSwgNCkgfSwgU2Nyb2xsVHJpZ2dlci5pc0luVmlld3BvcnQgPSBmdW5jdGlvbiBpc0luVmlld3BvcnQoZSwgdCwgcikgeyB2YXIgbiA9IChIYShlKSA/IEkoZSkgOiBlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgIGkgPSBuW3IgPyB2dCA6IGJ0XSAqIHQgfHwgMDsgcmV0dXJuIHIgPyAwIDwgbi5yaWdodCAtIGkgJiYgbi5sZWZ0ICsgaSA8IGplLmlubmVyV2lkdGggOiAwIDwgbi5ib3R0b20gLSBpICYmIG4udG9wICsgaSA8IGplLmlubmVySGVpZ2h0IH0sIFNjcm9sbFRyaWdnZXIucG9zaXRpb25JblZpZXdwb3J0ID0gZnVuY3Rpb24gcG9zaXRpb25JblZpZXdwb3J0KGUsIHQsIHIpIHsgSGEoZSkgJiYgKGUgPSBJKGUpKTsgdmFyIG4gPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgaSA9IG5bciA/IHZ0IDogYnRdLAogICAgICAgICAgICAgICAgbyA9IG51bGwgPT0gdCA/IGkgLyAyIDogdCBpbiBZID8gWVt0XSAqIGkgOiB+dC5pbmRleE9mKCIlIikgPyBwYXJzZUZsb2F0KHQpICogaSAvIDEwMCA6IHBhcnNlRmxvYXQodCkgfHwgMDsgcmV0dXJuIHIgPyAobi5sZWZ0ICsgbykgLyBqZS5pbm5lcldpZHRoIDogKG4udG9wICsgbykgLyBqZS5pbm5lckhlaWdodCB9LCBTY3JvbGxUcmlnZ2VyKTsKCiAgICBmdW5jdGlvbiBTY3JvbGxUcmlnZ2VyKGUsIHQpIHsgYSB8fCBTY3JvbGxUcmlnZ2VyLnJlZ2lzdGVyKFdlKSB8fCBjb25zb2xlLndhcm4oIlBsZWFzZSBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIpIiksIHRoaXMuaW5pdChlLCB0KSB9CiAgICBvZS52ZXJzaW9uID0gIjMuMTAuNCIsIG9lLnNhdmVTdHlsZXMgPSBmdW5jdGlvbihlKSB7IHJldHVybiBlID8gS2UoZSkuZm9yRWFjaChmdW5jdGlvbihlKSB7IGlmIChlICYmIGUuc3R5bGUpIHsgdmFyIHQgPSBXLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAwIDw9IHQgJiYgVy5zcGxpY2UodCwgNSksIFcucHVzaChlLCBlLnN0eWxlLmNzc1RleHQsIGUuZ2V0QkJveCAmJiBlLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiksIFdlLmNvcmUuZ2V0Q2FjaGUoZSksIGx0KSB9IH0pIDogVyB9LCBvZS5yZXZlcnQgPSBmdW5jdGlvbihlLCB0KSB7IHJldHVybiBRKCFlLCB0KSB9LCBvZS5jcmVhdGUgPSBmdW5jdGlvbihlLCB0KSB7IHJldHVybiBuZXcgb2UoZSwgdCkgfSwgb2UucmVmcmVzaCA9IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGUgPyBDYigpIDogKGEgfHwgb2UucmVnaXN0ZXIoKSkgJiYgWighMCkgfSwgb2UudXBkYXRlID0gZWUsIG9lLmNsZWFyU2Nyb2xsTWVtb3J5ID0gT2IsIG9lLm1heFNjcm9sbCA9IGZ1bmN0aW9uKGUsIHQpIHsgcmV0dXJuIEZhKGUsIHQgPyBSZSA6IE5lKSB9LCBvZS5nZXRTY3JvbGxGdW5jID0gZnVuY3Rpb24oZSwgdCkgeyByZXR1cm4gSihJKGUpLCB0ID8gUmUgOiBOZSkgfSwgb2UuZ2V0QnlJZCA9IGZ1bmN0aW9uKGUpIHsgcmV0dXJuIFB0W2VdIH0sIG9lLmdldEFsbCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gT3QuZmlsdGVyKGZ1bmN0aW9uKGUpIHsgcmV0dXJuICJTY3JvbGxTbW9vdGhlciIgIT09IGUudmFycy5pZCB9KSB9LCBvZS5pc1Njcm9sbGluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gISFwdCB9LCBvZS5zbmFwRGlyZWN0aW9uYWwgPSBrYiwgb2UuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGUsIHQpIHsgdmFyIHIgPSBIW2VdIHx8IChIW2VdID0gW10pO35yLmluZGV4T2YodCkgfHwgci5wdXNoKHQpIH0sIG9lLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihlLCB0KSB7IHZhciByID0gSFtlXSwKICAgICAgICAgICAgbiA9IHIgJiYgci5pbmRleE9mKHQpOwogICAgICAgIDAgPD0gbiAmJiByLnNwbGljZShuLCAxKSB9LCBvZS5iYXRjaCA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICBmdW5jdGlvbiB0byhlLCB0KSB7IHZhciByID0gW10sCiAgICAgICAgICAgICAgICBuID0gW10sCiAgICAgICAgICAgICAgICBpID0gV2UuZGVsYXllZENhbGwobywgZnVuY3Rpb24oKSB7IHQociwgbiksIHIgPSBbXSwgbiA9IFtdIH0pLnBhdXNlKCk7IHJldHVybiBmdW5jdGlvbihlKSB7IHIubGVuZ3RoIHx8IGkucmVzdGFydCghMCksIHIucHVzaChlLnRyaWdnZXIpLCBuLnB1c2goZSksIGEgPD0gci5sZW5ndGggJiYgaS5wcm9ncmVzcygxKSB9IH0gdmFyIHIsIG4gPSBbXSwKICAgICAgICAgICAgaSA9IHt9LAogICAgICAgICAgICBvID0gdC5pbnRlcnZhbCB8fCAuMDE2LAogICAgICAgICAgICBhID0gdC5iYXRjaE1heCB8fCAxZTk7IGZvciAociBpbiB0KSBpW3JdID0gIm9uIiA9PT0gci5zdWJzdHIoMCwgMikgJiYgSWEodFtyXSkgJiYgIm9uUmVmcmVzaEluaXQiICE9PSByID8gdG8oMCwgdFtyXSkgOiB0W3JdOyByZXR1cm4gSWEoYSkgJiYgKGEgPSBhKCksIG5iKG9lLCAicmVmcmVzaCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gYSA9IHQuYmF0Y2hNYXgoKSB9KSksIEtlKGUpLmZvckVhY2goZnVuY3Rpb24oZSkgeyB2YXIgdCA9IHt9OyBmb3IgKHIgaW4gaSkgdFtyXSA9IGlbcl07CiAgICAgICAgICAgIHQudHJpZ2dlciA9IGUsIG4ucHVzaChvZS5jcmVhdGUodCkpIH0pLCBuIH07CgogICAgZnVuY3Rpb24gaWMoZSwgdCwgciwgbikgeyByZXR1cm4gbiA8IHQgPyBlKG4pIDogdCA8IDAgJiYgZSgwKSwgbiA8IHIgPyAobiAtIHQpIC8gKHIgLSB0KSA6IHIgPCAwID8gdCAvICh0IC0gcikgOiAxIH0KCiAgICBmdW5jdGlvbiBqYyhlLCB0KSB7ITAgPT09IHQgPyBlLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0b3VjaC1hY3Rpb24iKSA6IGUuc3R5bGUudG91Y2hBY3Rpb24gPSAhMCA9PT0gdCA/ICJhdXRvIiA6IHQgPyAicGFuLSIgKyB0ICsgKGsuaXNUb3VjaCA/ICIgcGluY2gtem9vbSIgOiAiIikgOiAibm9uZSIsIGUgPT09IHFlICYmIGpjKEdlLCB0KSB9CgogICAgZnVuY3Rpb24gbGMoZSkgeyB2YXIgdCwgciA9IGUuZXZlbnQsCiAgICAgICAgICAgIG4gPSBlLnRhcmdldCwKICAgICAgICAgICAgaSA9IGUuYXhpcywKICAgICAgICAgICAgbyA9IChyLmNoYW5nZWRUb3VjaGVzID8gci5jaGFuZ2VkVG91Y2hlc1swXSA6IHIpLnRhcmdldCwKICAgICAgICAgICAgYSA9IG8uX2dzYXAgfHwgV2UuY29yZS5nZXRDYWNoZShvKSwKICAgICAgICAgICAgcyA9IGR0KCk7IGlmICghYS5faXNTY3JvbGxUIHx8IDJlMyA8IHMgLSBhLl9pc1Njcm9sbFQpIHsgZm9yICg7IG8gJiYgby5zY3JvbGxIZWlnaHQgPD0gby5jbGllbnRIZWlnaHQ7KSBvID0gby5wYXJlbnROb2RlOwogICAgICAgICAgICBhLl9pc1Njcm9sbCA9IG8gJiYgIUJhKG8pICYmIG8gIT09IG4gJiYgKHNlWyh0ID0gZGIobykpLm92ZXJmbG93WV0gfHwgc2VbdC5vdmVyZmxvd1hdKSwgYS5faXNTY3JvbGxUID0gcyB9IWEuX2lzU2Nyb2xsICYmICJ4IiAhPT0gaSB8fCAoci5fZ3NhcEFsbG93ID0gITApIH0KCiAgICBmdW5jdGlvbiBtYyhlLCB0LCByLCBuKSB7IHJldHVybiBrLmNyZWF0ZSh7IHRhcmdldDogZSwgY2FwdHVyZTogITAsIGRlYm91bmNlOiAhMSwgbG9ja0F4aXM6ICEwLCB0eXBlOiB0LCBvbldoZWVsOiBuID0gbiAmJiBsYywgb25QcmVzczogbiwgb25EcmFnOiBuLCBvblNjcm9sbDogbiwgb25FbmFibGU6IGZ1bmN0aW9uIG9uRW5hYmxlKCkgeyByZXR1cm4gciAmJiBuYihKZSwgay5ldmVudFR5cGVzWzBdLCBjZSwgITEsICEwKSB9LCBvbkRpc2FibGU6IGZ1bmN0aW9uIG9uRGlzYWJsZSgpIHsgcmV0dXJuIG9iKEplLCBrLmV2ZW50VHlwZXNbMF0sIGNlLCAhMCkgfSB9KSB9CgogICAgZnVuY3Rpb24gcWMoZSkgewogICAgICAgIGZ1bmN0aW9uIG9wKCkgeyByZXR1cm4gbiA9ICExIH0KCiAgICAgICAgZnVuY3Rpb24gcnAoKSB7IG8gPSBGYShkLCBOZSksIF8gPSBldChDID8gMSA6IDAsIG8pLCBmICYmIChTID0gZXQoMCwgRmEoZCwgUmUpKSksIGEgPSBHIH0KCiAgICAgICAgZnVuY3Rpb24geHAoKSB7IHJwKCksIHMuaXNBY3RpdmUoKSAmJiBzLnZhcnMuc2Nyb2xsWSA+IG8gJiYgKGgoKSA+IG8gPyBzLnByb2dyZXNzKDEpICYmIGgobykgOiBzLnJlc2V0VG8oInNjcm9sbFkiLCBvKSkgfQogICAgICAgIEthKGUpIHx8IChlID0ge30pLCBlLnByZXZlbnREZWZhdWx0ID0gZS5pc05vcm1hbGl6ZXIgPSBlLmFsbG93Q2xpY2tzID0gITAsIGUudHlwZSB8fCAoZS50eXBlID0gIndoZWVsLHRvdWNoIiksIGUuZGVib3VuY2UgPSAhIWUuZGVib3VuY2UsIGUuaWQgPSBlLmlkIHx8ICJub3JtYWxpemVyIjsgdmFyIHIsIG8sIG4sIGEsIHMsIGwsIGMsIHUsIGYgPSBlLm5vcm1hbGl6ZVNjcm9sbFgsCiAgICAgICAgICAgIHQgPSBlLm1vbWVudHVtLAogICAgICAgICAgICBpID0gZS5hbGxvd05lc3RlZFNjcm9sbCwKICAgICAgICAgICAgZCA9IEkoZS50YXJnZXQpIHx8IHFlLAogICAgICAgICAgICBwID0gV2UuY29yZS5nbG9iYWxzKCkuU2Nyb2xsU21vb3RoZXIsCiAgICAgICAgICAgIGcgPSBDICYmIChlLmNvbnRlbnQgJiYgSShlLmNvbnRlbnQpIHx8IHAgJiYgcC5nZXQoKSAmJiBwLmdldCgpLmNvbnRlbnQoKSksCiAgICAgICAgICAgIGggPSBKKGQsIE5lKSwKICAgICAgICAgICAgdiA9IEooZCwgUmUpLAogICAgICAgICAgICBiID0gMSwKICAgICAgICAgICAgbSA9IChrLmlzVG91Y2ggJiYgamUudmlzdWFsVmlld3BvcnQgPyBqZS52aXN1YWxWaWV3cG9ydC5zY2FsZSAqIGplLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogamUub3V0ZXJXaWR0aCkgLyBqZS5pbm5lcldpZHRoLAogICAgICAgICAgICB5ID0gMCwKICAgICAgICAgICAgeCA9IElhKHQpID8gZnVuY3Rpb24oKSB7IHJldHVybiB0KHIpIH0gOiBmdW5jdGlvbigpIHsgcmV0dXJuIHQgfHwgMi44IH0sCiAgICAgICAgICAgIHcgPSBtYyhkLCBlLnR5cGUsICEwLCBpKSwKICAgICAgICAgICAgUyA9IHhhLAogICAgICAgICAgICBfID0geGE7IHJldHVybiBlLmlnbm9yZUNoZWNrID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gQyAmJiAidG91Y2htb3ZlIiA9PT0gZS50eXBlICYmIGZ1bmN0aW9uIGlnbm9yZURyYWcoKSB7IGlmIChuKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShvcCk7IHZhciBlID0geWEoci5kZWx0YVkgLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgdCA9IF8oaC52IC0gZSk7IHJldHVybiBnICYmIHQgIT09IGgudiArIGgub2Zmc2V0ICYmIChoLm9mZnNldCA9IHQgLSBoLnYsIGcuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoIiArIC1oLm9mZnNldCArICJweCkiLCBnLl9nc2FwICYmIChnLl9nc2FwLnkgPSAtaC5vZmZzZXQgKyAicHgiKSwgaC5jYWNoZUlEID0gVC5jYWNoZSwgZWUoKSksICEwIH0KICAgICAgICAgICAgICAgIGcgJiYgKGcuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMHB4KSIsIGgub2Zmc2V0ID0gaC5jYWNoZUlEID0gMCwgZy5fZ3NhcCAmJiAoZy5fZ3NhcC55ID0gIjBweCIpKSwgbiA9ICEwIH0oKSB8fCAxLjA1IDwgYiAmJiAidG91Y2hzdGFydCIgIT09IGUudHlwZSB8fCByLmlzR2VzdHVyaW5nIHx8IGUudG91Y2hlcyAmJiAxIDwgZS50b3VjaGVzLmxlbmd0aCB9LCBlLm9uUHJlc3MgPSBmdW5jdGlvbigpIHsgdmFyIGUgPSBiOwogICAgICAgICAgICBiID0geWEoKGplLnZpc3VhbFZpZXdwb3J0ICYmIGplLnZpc3VhbFZpZXdwb3J0LnNjYWxlIHx8IDEpIC8gbSksIHMucGF1c2UoKSwgZSAhPT0gYiAmJiBqYyhkLCAxLjAxIDwgYiB8fCAhZiAmJiAieCIpLCBuID0gITEsIGwgPSB2KCksIGMgPSBoKCksIHJwKCksIGEgPSBHIH0sIGUub25SZWxlYXNlID0gZS5vbkdlc3R1cmVTdGFydCA9IGZ1bmN0aW9uKGUsIHQpIHsgaWYgKGcgJiYgKGcuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMHB4KSIsIGgub2Zmc2V0ID0gaC5jYWNoZUlEID0gMCwgZy5fZ3NhcCAmJiAoZy5fZ3NhcC55ID0gIjBweCIpKSwgdCkgeyBULmNhY2hlKys7IHZhciByLCBuLCBpID0geCgpOwogICAgICAgICAgICAgICAgZiAmJiAobiA9IChyID0gdigpKSArIC4wNSAqIGkgKiAtZS52ZWxvY2l0eVggLyAuMjI3LCBpICo9IGljKHYsIHIsIG4sIEZhKGQsIFJlKSksIHMudmFycy5zY3JvbGxYID0gUyhuKSksIG4gPSAociA9IGgoKSkgKyAuMDUgKiBpICogLWUudmVsb2NpdHlZIC8gLjIyNywgaSAqPSBpYyhoLCByLCBuLCBGYShkLCBOZSkpLCBzLnZhcnMuc2Nyb2xsWSA9IF8obiksIHMuaW52YWxpZGF0ZSgpLmR1cmF0aW9uKGkpLnBsYXkoLjAxKSwgKEMgJiYgcy52YXJzLnNjcm9sbFkgPj0gbyB8fCBvIC0gMSA8PSByKSAmJiBXZS50byh7fSwgeyBvblVwZGF0ZTogeHAsIGR1cmF0aW9uOiBpIH0pIH0gZWxzZSB1LnJlc3RhcnQoITApIH0sIGUub25XaGVlbCA9IGZ1bmN0aW9uKCkgeyBzLl90cyAmJiBzLnBhdXNlKCksIDFlMyA8IGR0KCkgLSB5ICYmIChhID0gMCwgeSA9IGR0KCkpIH0sIGUub25DaGFuZ2UgPSBmdW5jdGlvbihlLCB0LCByLCBuLCBpKSB7IEcgIT09IGEgJiYgcnAoKSwgdCAmJiBmICYmIHYoUyhuWzJdID09PSB0ID8gbCArIChlLnN0YXJ0WCAtIGUueCkgOiB2KCkgKyB0IC0gblsxXSkpLCByICYmIGgoXyhpWzJdID09PSByID8gYyArIChlLnN0YXJ0WSAtIGUueSkgOiBoKCkgKyByIC0gaVsxXSkpLCBlZSgpIH0sIGUub25FbmFibGUgPSBmdW5jdGlvbigpIHsgamMoZCwgIWYgJiYgIngiKSwgbmIoamUsICJyZXNpemUiLCB4cCksIHcuZW5hYmxlKCkgfSwgZS5vbkRpc2FibGUgPSBmdW5jdGlvbigpIHsgamMoZCwgITApLCBvYihqZSwgInJlc2l6ZSIsIHhwKSwgdy5raWxsKCkgfSwgKChyID0gbmV3IGsoZSkpLmlPUyA9IEMpICYmICFoKCkgJiYgaCgxKSwgdSA9IHIuX2RjLCBzID0gV2UudG8ociwgeyBlYXNlOiAicG93ZXI0IiwgcGF1c2VkOiAhMCwgc2Nyb2xsWDogZiA/ICIrPTAuMSIgOiAiKz0wIiwgc2Nyb2xsWTogIis9MC4xIiwgb25Db21wbGV0ZTogdS52YXJzLm9uQ29tcGxldGUgfSksIHIgfSB2YXIgYWUsIHNlID0geyBhdXRvOiAxLCBzY3JvbGw6IDEgfSwKICAgICAgICBsZSA9IC8oaW5wdXR8bGFiZWx8c2VsZWN0fHRleHRhcmVhKS9pLAogICAgICAgIGNlID0gZnVuY3Rpb24gX2NhcHR1cmVJbnB1dHMoZSkgeyB2YXIgdCA9IGxlLnRlc3QoZS50YXJnZXQudGFnTmFtZSk7CiAgICAgICAgICAgICh0IHx8IGFlKSAmJiAoZS5fZ3NhcEFsbG93ID0gITAsIGFlID0gdCkgfTsKICAgIG9lLnNvcnQgPSBmdW5jdGlvbihlKSB7IHJldHVybiBPdC5zb3J0KGUgfHwgZnVuY3Rpb24oZSwgdCkgeyByZXR1cm4gLTFlNiAqIChlLnZhcnMucmVmcmVzaFByaW9yaXR5IHx8IDApICsgZS5zdGFydCAtICh0LnN0YXJ0ICsgLTFlNiAqICh0LnZhcnMucmVmcmVzaFByaW9yaXR5IHx8IDApKSB9KSB9LCBvZS5vYnNlcnZlID0gZnVuY3Rpb24oZSkgeyByZXR1cm4gbmV3IGsoZSkgfSwgb2Uubm9ybWFsaXplU2Nyb2xsID0gZnVuY3Rpb24oZSkgeyBpZiAodm9pZCAwID09PSBlKSByZXR1cm4gaDsgaWYgKCEwID09PSBlICYmIGgpIHJldHVybiBoLmVuYWJsZSgpOyBpZiAoITEgPT09IGUpIHJldHVybiBoICYmIGgua2lsbCgpOyB2YXIgdCA9IGUgaW5zdGFuY2VvZiBrID8gZSA6IHFjKGUpOyByZXR1cm4gaCAmJiBoLnRhcmdldCA9PT0gdC50YXJnZXQgJiYgaC5raWxsKCksIEJhKHQudGFyZ2V0KSAmJiAoaCA9IHQpLCB0IH0sIG9lLmNvcmUgPSB7IF9nZXRWZWxvY2l0eVByb3A6IEssIF9pbnB1dE9ic2VydmVyOiBtYywgX3Njcm9sbGVyczogVCwgX3Byb3hpZXM6IExlLCBicmlkZ2U6IHsgc3M6IGZ1bmN0aW9uIHNzKCkgeyBwdCB8fCBWKCJzY3JvbGxTdGFydCIpLCBwdCA9IGR0KCkgfSwgcmVmOiBmdW5jdGlvbiByZWYoKSB7IHJldHVybiBydCB9IH0gfSwgQWEoKSAmJiBXZS5yZWdpc3RlclBsdWdpbihvZSksIGUuU2Nyb2xsVHJpZ2dlciA9IG9lLCBlLmRlZmF1bHQgPSBvZTsgaWYgKHR5cGVvZih3aW5kb3cpID09PSAidW5kZWZpbmVkIiB8fCB3aW5kb3cgIT09IGUpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogITAgfSkgfSBlbHNlIHsgZGVsZXRlIGUuZGVmYXVsdCB9IH0pOw=="}},"time_used":43,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":40,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/slider/slider_shape02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.041Z","timestamp":1785159465041,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/slider/slider_shape02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 30171\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":30171,"size_decoded":30437,"mime_type":"image/png","magic":"PNG image data, 1349 x 210, 8-bit/color RGBA, non-interlaced","md5":"dd9b1d0140ea3bd1526a18aca9973c45","sha1":"d0d7bba405f641aa25b2c29b7e911b594f6150ea","sha256":"a692dec81d764af86da2688aca24f835304bb66b09960393baa77986228381cc","sha512":"69e1f0df68010bf5cb5595cca7440929bcfe537a7c1405c76b08ab06c1e88beafc0da5aa3008cd51cbc2afff0bf19cd79dfc40cc390b6ea18dec14907cbb1042","ssdeep":"768:k3IDKNJFUj5heCENH5k44eCF/4c34proqGq:GIaFUj5heCeHSfeKgcIH","tlshash":"3dd2d18398265586d8c91374ac386887f16756ac3b06afd97be72c38cc1decdc16d8e4","first_seen":"2025-04-12T15:34:26.846782Z","last_seen":"2026-07-27T13:38:47.773423Z","times_seen":20,"resource_available":false,"data":"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"}},"time_used":54,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape04.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.082Z","timestamp":1785159465082,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape04.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3189\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3189,"size_decoded":3454,"mime_type":"image/png","magic":"PNG image data, 107 x 60, 8-bit/color RGBA, non-interlaced","md5":"78bcd88fc4e140c98d876aaeafcf1f63","sha1":"085e660d4825f77956581284a1ce6fb698266f80","sha256":"c4f71052af0dd6a4c1f2d8ad5829ccea03aa34d0e4f470321573c46466e6b4db","sha512":"2d4ff567a0f4b7a65d529905f1c3253762eb7cb8878a68850d484632c0eef9034aedfa06fa68d0ba0a74ca0fd03094afa0c9612e410b73eadc5dd2166b83ad15","ssdeep":"","tlshash":"f0616c9f1fec68fbcc7851d554fb4a25d07694828baa80ffe511e42094586f8e70e924","first_seen":"2025-10-13T02:30:07.566466Z","last_seen":"2026-07-27T13:38:47.773904Z","times_seen":12,"resource_available":false,"data":"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"}},"time_used":67,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":61,"receive":6,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape05.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.083Z","timestamp":1785159465083,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape05.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 2988\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2988,"size_decoded":3253,"mime_type":"image/png","magic":"PNG image data, 484 x 140, 8-bit/color RGBA, non-interlaced","md5":"308c676cbfeacbceb4a6f10837c89a63","sha1":"fd944d07e83bd1a8b502e4b56359bef6e93b04a5","sha256":"cf89cabc0feb4cd888ce13631a28f9d995b25fbcd045651d5723d1b70de725f1","sha512":"e63180f926eea961859d724b7d17111c4fc266223186eac6d6ee7bccc20d849a5babd55e758cf8f64e439242aeca44ca51aeef3f0a1af79a18d03ce23e78cf72","ssdeep":"","tlshash":"f6516ce86aab18b84b0bf0d7813b1c806d302f2d84bac64575f59a454048ee1bdea90d","first_seen":"2025-10-13T02:30:07.327497Z","last_seen":"2026-07-27T13:38:47.764229Z","times_seen":11,"resource_available":false,"data":"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"}},"time_used":66,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":58,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.567Z","timestamp":1785159465567,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 433651\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-08-04T06:29:09.415181Z","times_seen":252335,"resource_available":false,"data":"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"}},"time_used":92,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":30,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/swiper-bundle.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.778Z","timestamp":1785159464778,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/swiper-bundle.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 4115\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":15806,"size_decoded":4424,"mime_type":"text/css","magic":"ASCII text, with very long lines (2255)","md5":"e57e4009ac4cd9410670f198089fe081","sha1":"1881d44be8e93769fb2ec492f613882858218cf5","sha256":"df9a5b2c3fa75c0ba76bf161099a4467faac96a1fce4a6e4838ae1f9aa1b5b45","sha512":"e44a73907897ef78f606f166acd51af6ec3ecdf845bf05ab5d619337a6a07a2097eae9877c1f6075cf65d3b0bf2c6809025eb65d71c05c85893b42388c831ce8","ssdeep":"384:mKUbe8o0Vhy8jUHL1kzXE/o+L4xeFbwFFEuxuy:mTbto0Vhy8jUHL1kzXE/o+L4xeFbwFBZ","tlshash":"ae62129417b01c2373264fad1962d774af6898434a47dc6cb2c0dc48effd5f8621ea95","first_seen":"2023-04-18T10:08:08Z","last_seen":"2026-08-03T06:41:23.777899Z","times_seen":543,"resource_available":false,"data":"LyoqCiAqIFN3aXBlciA2LjUuMAogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwczovL3N3aXBlcmpzLmNvbQogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDIxIFZsYWRpbWlyIEtoYXJsYW1waWRpCiAqCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQogKgogKiBSZWxlYXNlZCBvbjogTWFyY2ggNSwgMjAyMQogKi8KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnc3dpcGVyLWljb25zJzsKICBzcmM6IHVybCgnZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsIGQwOUdSZ0FCQUFBQUFBWmdBQkFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFHUkFBQUFCb0FBQUFjaTZxSGtVZEVSVVlBQUFXZ0FBQUFJd0FBQUNRQVlBQlhSMUJQVXdBQUJoUUFBQUF1QUFBQU51QVk3K3hIVTFWQ0FBQUZ4QUFBQUZBQUFBQm0yZlBjelU5VEx6SUFBQUhjQUFBQVNnQUFBR0JQOVY1UlkyMWhjQUFBQWtRQUFBQ0lBQUFCWXQ2RjBjQmpkblFnQUFBQ3pBQUFBQVFBQUFBRUFCRUJSR2RoYzNBQUFBV1lBQUFBQ0FBQUFBai8vd0FEWjJ4NVpnQUFBeXdBQUFETUFBQUQyTUh0cnlWb1pXRmtBQUFCYkFBQUFEQUFBQUEyRTIrZW9XaG9aV0VBQUFHY0FBQUFId0FBQUNRQzlnRHphRzEwZUFBQUFpZ0FBQUFaQUFBQXJnSmtBQkZzYjJOaEFBQUMwQUFBQUZvQUFBQmFGUUFVR0cxaGVIQUFBQUc4QUFBQUh3QUFBQ0FBY0FCQWJtRnRaUUFBQS9nQUFBRTVBQUFDWHZGZEJ3bHdiM04wQUFBRk5BQUFBR0lBQUFDRTVzNzRoWGphWTJCa1lHQUFZcGY1SHUvaitXMitNbkF6TVlEQXphWDZRakQ2LzQvL0J4ajVHQThBdVJ3TVlHa0FQeXdMMTNqYVkyQmtZR0E4OFA4QWd4NGorLzhmUURZZkExQUVCV2dEQUlCMkJPb0FlTnBqWUdSZ1lOQmg0R2RnWWdBQkVNbklBQkp6WU5BRENRQUFDV2dBc1FCNDJtTmdZZnpDT0lHQmxZR0IwWWN4allHQndSMUtmMldRWkdoaFlHQmlZR1ZtZ0FGR0JpUVFrT2Fhd3REQW9NQlF4WGpnL3dFR1BjWUREQTR3TlVBMkNDZ3dzQUFBTzRFTDZnQUFlTnBqMk0wZ3lBQUNxeGdHTldCa1oyRDQvd01BK3hrRGRnQUFBSGphWTJCZ1lHYUFZQmtHUmdZUWlBSHlHTUY4RmdZSElNM0R3TUhBQkdRck1PZ3lXRExFTTFUOS93OFVCZkVNZ0x6RS8vLy9QLzUvL2YvVi94dityNGVhQUFlTWJBeHdJVVltSU1IRWdLWUFZalVjc0RBd3NMS3hjM0J5Y2ZQdzhqRVFBL2daQkFTRmhFVkV4Y1FsSktXa1pXVGw1QlVVbFpSVlZOWFVOVFFaQmdNQUFNUitFK2dBRVFGRUFBQUFLZ0FxQUNvQU5BQStBRWdBVWdCY0FHWUFjQUI2QUlRQWpnQ1lBS0lBckFDMkFNQUF5Z0RVQU40QTZBRHlBUHdCQmdFUUFSb0JKQUV1QVRnQlFnRk1BVllCWUFGcUFYUUJmZ0dJQVpJQm5BR21BYklCemdIc0FBQjQydTJOTVE2Q1VBeUdXNTY4eDlBbmVZWWdtNE1KYmhLRmFFeElPQVZYOEFwZXdTdDRCaWM0QWZlQWlkM1ZPQml4RHhmUFlFemE1TytYZmkwNFlBRGdnaVVJVUxDdUVKSzhWaE80YlN2cGRua3RISTVRQ1l0ZGkyc2w4Wm5YYUhscVVyTkt6ZEtjVDhjamxxK3J3WlN2SVZjek5pZXpzZm5QL3V6bm1mUEZCTk9ETTJLN01UUTQ1WUVBWnFHUDgxQW1HR2NGM2lQcU9vcDByMVNQVGFUYlZrZlVlNEhYajk3d1lFK3lOd1dZeHdXdTR2MXVnV0hnbzNTMVhkWkVWcVdNN0VUMGNmbkxHeFdma2dSNDJvMlB2V3JETUJTRmovSUhMYUYwektqUmdkaVZNd1NjTlJBb1dVb0g3OFkyaWNCL3lJWTA5QW42QUgyQmR1L1VCK3l4b3BZc2hRaUV2bnZ1MGRVUmdEdDhRZUM4UER3N0ZwamkzZkVBNHovUEVKNllPQjVoS2g0ZGozRXZYaHhQcUgvU0tVWTNySjdzclo0RlpuaDFQTUF0UGh3UDZmbDJQTUpNUERnZVE0clk4WVQ2R3phbzBlQUVBNDA5RHVnZ21UbkZuT2NTQ2lFaUxNZ3hDaVRJNkNxNURaVWQzUW1wMTB2TzBMYUxUZDJjak40Zk91bWxjN2xVWWJTUWNaRmt1dFJHN2c2SktaS3kwUm1kTFk2ODBDRG5FSitVTWtwRkZlMVJON254ZFZwWHJDNGFUdG5hdXJPblllcmNaZzJZVm1MTi9kL2djemZFaW1yRS9mcy9iT3VxMjlabW44dGxvT1JhWGdaZ0dhNzh5TzkvY25YbTJCcGFHdnEyNUR2OVM0RTkrNVNJYzlQcXVwSktoWUZTU2w0NytRY3IxbVlOQUFBQWVOcHR3MGNLd2tBQUFNRFpKQThRN09VSnZrTHNQZlo2ekZWRVJQeThxSGgyWUVSKzNpL0JQODN2SUJMTHlTc29LaW1ycUtxcGEyaHA2K2pxNlJzWUdobWJtSnFaU3kwc3JheHRiTzNzSFJ5ZG5FTVU0dVI2eXg3SkpYdmVQN1dyRHljQUFBQUFBQUgvL3dBQ2VOcGpZR1JnWU9BQlloa2daZ0pDWmdaTkJrWUdMUVp0SUpzRkxNWUFBQXczQUxnQWVOb2xpekVLZ0RBUUJDY2hSYkMyc0ZFUjBZRDZxVlFpQkN2L0g5ZXpHSTZaNVhCQXc4Q0JLL201aVFRVmF1VmJYTG5Pck1adjJvTGRLRmE4UGp1cnUyaEp6R2FibU9TTHpOTXp2dXRwQjNONDJtTmdaR0JnNEdLUVl6QmhZTXhKTE1sajRHQmdBWW93L1AvUEFKSmhMTTZzU29XS2ZXQ0FBd0RBamdiUkFBQjQybU5nWUdCa0FJSWJDWm81SVBybVVuMGhHQTBBTzhFRlRRQUEnKSBmb3JtYXQoJ3dvZmYnKTsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQo6cm9vdCB7CiAgLS1zd2lwZXItdGhlbWUtY29sb3I6ICMwMDdhZmY7Cn0KLnN3aXBlci1jb250YWluZXIgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDA7CiAgLyogRml4IG9mIFdlYmtpdCBmbGlja2VyaW5nICovCiAgei1pbmRleDogMTsKfQouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciB7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQouc3dpcGVyLXdyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgei1pbmRleDogMTsKICBkaXNwbGF5OiBmbGV4OwogIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQouc3dpcGVyLWNvbnRhaW5lci1hbmRyb2lkIC5zd2lwZXItc2xpZGUsCi5zd2lwZXItd3JhcHBlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDAsIDApOwp9Ci5zd2lwZXItY29udGFpbmVyLW11bHRpcm93ID4gLnN3aXBlci13cmFwcGVyIHsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnN3aXBlci1jb250YWluZXItbXVsdGlyb3ctY29sdW1uID4gLnN3aXBlci13cmFwcGVyIHsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQouc3dpcGVyLWNvbnRhaW5lci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgewogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICBtYXJnaW46IDAgYXV0bzsKfQouc3dpcGVyLWNvbnRhaW5lci1wb2ludGVyLWV2ZW50cyB7CiAgdG91Y2gtYWN0aW9uOiBwYW4teTsKfQouc3dpcGVyLWNvbnRhaW5lci1wb2ludGVyLWV2ZW50cy5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsIHsKICB0b3VjaC1hY3Rpb246IHBhbi14Owp9Ci5zd2lwZXItc2xpZGUgewogIGZsZXgtc2hyaW5rOiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwp9Ci5zd2lwZXItc2xpZGUtaW52aXNpYmxlLWJsYW5rIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLyogQXV0byBIZWlnaHQgKi8KLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCwKLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCAuc3dpcGVyLXNsaWRlIHsKICBoZWlnaHQ6IGF1dG87Cn0KLnN3aXBlci1jb250YWluZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXIgewogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0Owp9Ci8qIDNEIEVmZmVjdHMgKi8KLnN3aXBlci1jb250YWluZXItM2QgewogIHBlcnNwZWN0aXZlOiAxMjAwcHg7Cn0KLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci13cmFwcGVyLAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLWNvbnRhaW5lci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sCi5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItY3ViZS1zaGFkb3cgewogIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7Cn0KLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsCi5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwKLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHotaW5kZXg6IDEwOwp9Ci5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQgewogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpOwp9Ci5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7Cn0KLnN3aXBlci1jb250YWluZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpOwp9Ci5zd2lwZXItY29udGFpbmVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTsKfQovKiBDU1MgTW9kZSAqLwouc3dpcGVyLWNvbnRhaW5lci1jc3MtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOwogIC8qIEZvciBGaXJlZm94ICovCiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOwogIC8qIEZvciBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSAqLwp9Ci5zd2lwZXItY29udGFpbmVyLWNzcy1tb2RlID4gLnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgZGlzcGxheTogbm9uZTsKfQouc3dpcGVyLWNvbnRhaW5lci1jc3MtbW9kZSA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGUgewogIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydCBzdGFydDsKfQouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsLnN3aXBlci1jb250YWluZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgewogIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5Owp9Ci5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsLnN3aXBlci1jb250YWluZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgewogIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5Owp9Cjpyb290IHsKICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDQ0cHg7CiAgLyoKICAtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpOwogICovCn0KLnN3aXBlci1idXR0b24tcHJldiwKLnN3aXBlci1idXR0b24tbmV4dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIHotaW5kZXg6IDEwOwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLAouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuNzsKICBjdXJzb3I6IGF1dG87CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLnN3aXBlci1idXR0b24tcHJldjphZnRlciwKLnN3aXBlci1idXR0b24tbmV4dDphZnRlciB7CiAgZm9udC1mYW1pbHk6IHN3aXBlci1pY29uczsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogIGxldHRlci1zcGFjaW5nOiAwOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGZvbnQtdmFyaWFudDogaW5pdGlhbDsKICBsaW5lLWhlaWdodDogMTsKfQouc3dpcGVyLWJ1dHRvbi1wcmV2LAouc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dCB7CiAgbGVmdDogMTBweDsKICByaWdodDogYXV0bzsKfQouc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLAouc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1idXR0b24tbmV4dDphZnRlciB7CiAgY29udGVudDogJ3ByZXYnOwp9Ci5zd2lwZXItYnV0dG9uLW5leHQsCi5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHsKICByaWdodDogMTBweDsKICBsZWZ0OiBhdXRvOwp9Ci5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsCi5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHsKICBjb250ZW50OiAnbmV4dCc7Cn0KLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLXdoaXRlLAouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24td2hpdGUgewogIC0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3I6ICNmZmZmZmY7Cn0KLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWJsYWNrLAouc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tYmxhY2sgewogIC0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3I6ICMwMDAwMDA7Cn0KLnN3aXBlci1idXR0b24tbG9jayB7CiAgZGlzcGxheTogbm9uZTsKfQo6cm9vdCB7CiAgLyoKICAtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpOwogICovCn0KLnN3aXBlci1wYWdpbmF0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRyYW5zaXRpb246IDMwMG1zIG9wYWNpdHk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB6LWluZGV4OiAxMDsKfQouc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24taGlkZGVuIHsKICBvcGFjaXR5OiAwOwp9Ci8qIENvbW1vbiBTdHlsZXMgKi8KLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLAouc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLAouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgewogIGJvdHRvbTogMTBweDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwp9Ci8qIEJ1bGxldHMgKi8KLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBmb250LXNpemU6IDA7Cn0KLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICB0cmFuc2Zvcm06IHNjYWxlKDAuMzMpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEpOwp9Ci5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbWFpbiB7CiAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKfQouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYgewogIHRyYW5zZm9ybTogc2NhbGUoMC42Nik7Cn0KLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2LXByZXYgewogIHRyYW5zZm9ybTogc2NhbGUoMC4zMyk7Cn0KLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0IHsKICB0cmFuc2Zvcm06IHNjYWxlKDAuNjYpOwp9Ci5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbmV4dC1uZXh0IHsKICB0cmFuc2Zvcm06IHNjYWxlKDAuMzMpOwp9Ci5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogIHdpZHRoOiA4cHg7CiAgaGVpZ2h0OiA4cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kOiAjMDAwOwogIG9wYWNpdHk6IDAuMjsKfQpidXR0b24uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICBib3JkZXI6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgYm94LXNoYWRvdzogbm9uZTsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKfQouc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogIGN1cnNvcjogcG9pbnRlcjsKfQouc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7CiAgb3BhY2l0eTogMTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7Cn0KLnN3aXBlci1jb250YWluZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7CiAgcmlnaHQ6IDEwcHg7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIC01MCUsIDApOwp9Ci5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgbWFyZ2luOiA2cHggMDsKICBkaXNwbGF5OiBibG9jazsKfQouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiA4cHg7Cn0KLnN3aXBlci1jb250YWluZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSwgMjAwbXMgdG9wOwp9Ci5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICBtYXJnaW46IDAgNHB4Owp9Ci5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgewogIGxlZnQ6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSwgMjAwbXMgbGVmdDsKfQouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsLnN3aXBlci1jb250YWluZXItcnRsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHsKICB0cmFuc2l0aW9uOiAyMDBtcyB0cmFuc2Zvcm0sIDIwMG1zIHJpZ2h0Owp9Ci8qIFByb2dyZXNzICovCi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciB7CiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjI1KTsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICB0cmFuc2Zvcm06IHNjYWxlKDApOwogIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwp9Ci5zd2lwZXItY29udGFpbmVyLXJ0bCAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwgewogIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsKfQouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLAouc3dpcGVyLWNvbnRhaW5lci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA0cHg7CiAgbGVmdDogMDsKICB0b3A6IDA7Cn0KLnN3aXBlci1jb250YWluZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsCi5zd2lwZXItY29udGFpbmVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUgewogIHdpZHRoOiA0cHg7CiAgaGVpZ2h0OiAxMDAlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwp9Ci5zd2lwZXItcGFnaW5hdGlvbi13aGl0ZSB7CiAgLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvcjogI2ZmZmZmZjsKfQouc3dpcGVyLXBhZ2luYXRpb24tYmxhY2sgewogIC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3I6ICMwMDAwMDA7Cn0KLnN3aXBlci1wYWdpbmF0aW9uLWxvY2sgewogIGRpc3BsYXk6IG5vbmU7Cn0KLyogU2Nyb2xsYmFyICovCi5zd2lwZXItc2Nyb2xsYmFyIHsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtbXMtdG91Y2gtYWN0aW9uOiBub25lOwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQouc3dpcGVyLWNvbnRhaW5lci1ob3Jpem9udGFsID4gLnN3aXBlci1zY3JvbGxiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAxJTsKICBib3R0b206IDNweDsKICB6LWluZGV4OiA1MDsKICBoZWlnaHQ6IDVweDsKICB3aWR0aDogOTglOwp9Ci5zd2lwZXItY29udGFpbmVyLXZlcnRpY2FsID4gLnN3aXBlci1zY3JvbGxiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogM3B4OwogIHRvcDogMSU7CiAgei1pbmRleDogNTA7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDk4JTsKfQouc3dpcGVyLXNjcm9sbGJhci1kcmFnIHsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDEwMCU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGxlZnQ6IDA7CiAgdG9wOiAwOwp9Ci5zd2lwZXItc2Nyb2xsYmFyLWN1cnNvci1kcmFnIHsKICBjdXJzb3I6IG1vdmU7Cn0KLnN3aXBlci1zY3JvbGxiYXItbG9jayB7CiAgZGlzcGxheTogbm9uZTsKfQouc3dpcGVyLXpvb20tY29udGFpbmVyIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouc3dpcGVyLXpvb20tY29udGFpbmVyID4gaW1nLAouc3dpcGVyLXpvb20tY29udGFpbmVyID4gc3ZnLAouc3dpcGVyLXpvb20tY29udGFpbmVyID4gY2FudmFzIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgbWF4LWhlaWdodDogMTAwJTsKICBvYmplY3QtZml0OiBjb250YWluOwp9Ci5zd2lwZXItc2xpZGUtem9vbWVkIHsKICBjdXJzb3I6IG1vdmU7Cn0KLyogUHJlbG9hZGVyICovCjpyb290IHsKICAvKgogIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKTsKICAqLwp9Ci5zd2lwZXItbGF6eS1wcmVsb2FkZXIgewogIHdpZHRoOiA0MnB4OwogIGhlaWdodDogNDJweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIG1hcmdpbi1sZWZ0OiAtMjFweDsKICBtYXJnaW4tdG9wOiAtMjFweDsKICB6LWluZGV4OiAxMDsKICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCU7CiAgYW5pbWF0aW9uOiBzd2lwZXItcHJlbG9hZGVyLXNwaW4gMXMgaW5maW5pdGUgbGluZWFyOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tc3dpcGVyLXByZWxvYWRlci1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5zd2lwZXItbGF6eS1wcmVsb2FkZXItd2hpdGUgewogIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogI2ZmZjsKfQouc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrIHsKICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6ICMwMDA7Cn0KQGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW4gewogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KLyogYTExeSAqLwouc3dpcGVyLWNvbnRhaW5lciAuc3dpcGVyLW5vdGlmaWNhdGlvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIG9wYWNpdHk6IDA7CiAgei1pbmRleDogLTEwMDA7Cn0KLnN3aXBlci1jb250YWluZXItZmFkZS5zd2lwZXItY29udGFpbmVyLWZyZWUtbW9kZSAuc3dpcGVyLXNsaWRlIHsKICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7Cn0KLnN3aXBlci1jb250YWluZXItZmFkZSAuc3dpcGVyLXNsaWRlIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9Ci5zd2lwZXItY29udGFpbmVyLWZhZGUgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKfQouc3dpcGVyLWNvbnRhaW5lci1jdWJlIHsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogIHotaW5kZXg6IDE7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7Cn0KLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUuc3dpcGVyLWNvbnRhaW5lci1ydGwgLnN3aXBlci1zbGlkZSB7CiAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgewogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsCi5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0LAouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtcHJldiwKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQgKyAuc3dpcGVyLXNsaWRlIHsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLAouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwKLnN3aXBlci1jb250YWluZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LAouc3dpcGVyLWNvbnRhaW5lci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IHsKICB6LWluZGV4OiAwOwogIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1jdWJlLXNoYWRvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAwcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIG9wYWNpdHk6IDAuNjsKICB6LWluZGV4OiAwOwp9Ci5zd2lwZXItY29udGFpbmVyLWN1YmUgLnN3aXBlci1jdWJlLXNoYWRvdzpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGJhY2tncm91bmQ6ICMwMDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICByaWdodDogMDsKICAtd2Via2l0LWZpbHRlcjogYmx1cig1MHB4KTsKICBmaWx0ZXI6IGJsdXIoNTBweCk7Cn0KLnN3aXBlci1jb250YWluZXItZmxpcCB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KLnN3aXBlci1jb250YWluZXItZmxpcCAuc3dpcGVyLXNsaWRlIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICB6LWluZGV4OiAxOwp9Ci5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlLAouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHsKICBwb2ludGVyLWV2ZW50czogYXV0bzsKfQouc3dpcGVyLWNvbnRhaW5lci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwKLnN3aXBlci1jb250YWluZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sCi5zd2lwZXItY29udGFpbmVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCwKLnN3aXBlci1jb250YWluZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7CiAgei1pbmRleDogMDsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKfQo="}},"time_used":32,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":12,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/bg/about_bg.html","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.710Z","timestamp":1785159465710,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/bg/about_bg.html HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/html\r\nlast-modified: Thu, 16 Apr 2026 11:29:14 GMT\r\naccept-ranges: bytes\r\ncontent-length: 0\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":183,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-04T06:30:23.608803Z","times_seen":17703944,"resource_available":true,"data":""}},"time_used":44,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":44,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/style-CliJwUTR.css","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:52.721Z","timestamp":1785159472721,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1857279285.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 14:34:45 GMT","end":"Wed, 02 Sep 2026 14:34:44 GMT"},"fingerprint":{"sha1":"92:5D:A0:17:13:91:72:7B:B6:8C:6A:7D:A9:55:7F:C8:A9:47:11:99","sha256":"0E:FC:E3:4D:AD:32:B2:11:05:DC:E3:CD:CC:9E:10:DC:C5:2D:9E:1C:D7:C1:9C:00:92:15:43:C5:B7:0B:3A:D6"}}},"request":{"raw":"GET /assets/style-CliJwUTR.css HTTP/1.1\r\nHost: widget-v3.smartsuppcdn.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:52 GMT\r\ncontent-type: text/css\r\naccess-control-allow-origin: *\r\ncache-control: max-age=31536000, public, immutable\r\netag: W/\"6a4cb803-8d68\"\r\nexpires: Wed, 07 Jul 2027 08:30:01 GMT\r\nlast-modified: Tue, 07 Jul 2026 08:25:39 GMT\r\nx-77-nzt: k/X5BxTiLTp4QyPwQ/wLDqxtqsREpVD37xjHeVUvGLrA4KbuyE9dk9j+tnsmZ4bN+zisHic\r\nx-77-nzt-ray: fdb5412328488cc3305f676a063a3f2b\r\nx-77-cache: HIT\r\nx-77-age: 1746429\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":36200,"size_decoded":8208,"mime_type":"text/css","magic":"ASCII text, with very long lines (36187)","md5":"840dfdb09fc1a11a5c3a5b5f808e3160","sha1":"46140a50b100fa33b974027c13bb9f2de5c784b7","sha256":"b5b9a339413a55a0d828ab6be236e2a495594a19fb3283f846c607d7b6996ad7","sha512":"61e37700ee60ed584c8ae7b6313c5dddf6950c9664aa57f32bb4a70d775b1a1d5bfc249c6c1238495ef2cb7e12bae5f00c4ddb3df4dde44a01081117b74e2ba2","ssdeep":"384:F8fY2l091g7Tc6/WYtGLadKzSVX8Kj6+eZcrNSN56qB56YR9evZLLq51vZLLq5G:F8wM091gTcCWYtG4XqcrNSN56DwQ43","tlshash":"05f2966daad9093dac23c179e3f8e58c911af5d5df3226daf74239008ac17ff0986514","first_seen":"2026-07-07T11:50:17.712499Z","last_seen":"2026-08-04T06:18:03.820157Z","times_seen":3079,"resource_available":false,"data":"LmJ0bi5zdmVsdGUteXdvZm1se2JvcmRlci1yYWRpdXM6OTk5OXB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6LjI1cmVtO2ZvbnQtc2l6ZToxLjEyNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtkaXNwbGF5OmlubGluZS1mbGV4fS5idG4tcHJpbWFyeS5zdmVsdGUteXdvZm1se2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSB9LmJ0bi1wcmltYXJ5LnN2ZWx0ZS15d29mbWw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5idG4tZ2hvc3Quc3ZlbHRlLXl3b2ZtbDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMCAwIDAvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYnRuLXN1Y2Nlc3Muc3ZlbHRlLXl3b2ZtbHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxNiAxODUgMTI5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSA7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5idG4tc3VjY2Vzcy5zdmVsdGUteXdvZm1sOmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDUgMTUwIDEwNS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5idG4tc20uc3ZlbHRlLXl3b2ZtbHt3aWR0aDoxLjVyZW07aGVpZ2h0OjEuNXJlbX0uYnRuLW1kLnN2ZWx0ZS15d29mbWx7d2lkdGg6MnJlbTtoZWlnaHQ6MnJlbX0uYnRuLWxnLnN2ZWx0ZS15d29mbWx7d2lkdGg6Mi43NXJlbTtoZWlnaHQ6Mi43NXJlbX0uYnRuLXhsLnN2ZWx0ZS15d29mbWx7d2lkdGg6M3JlbTtoZWlnaHQ6M3JlbX0uYnRuLWRpc2FibGVkLnN2ZWx0ZS15d29mbWx7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjJ9LmJ0bi1kaXNhYmxlZC5zdmVsdGUteXdvZm1sOmhvdmVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzAwMDB9Kiw6YmVmb3JlLDphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowO2JvcmRlci1jb2xvcjp2YXIoLS11bi1kZWZhdWx0LWJvcmRlci1jb2xvciwjZTVlN2ViKX06YmVmb3JlLDphZnRlcnstLXVuLWNvbnRlbnQ6IiJ9aHRtbCw6aG9zdHstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0YWItc2l6ZTo0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2xpbmUtaGVpZ2h0OjEuNX1ib2R5e2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOjB9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcyxMaWJlcmF0aW9uIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O21hcmdpbjowO3BhZGRpbmc6MH1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JhY2tncm91bmQtaW1hZ2U6bm9uZX06LW1vei1mb2N1c3Jpbmd7b3V0bGluZTphdXRvfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b306Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRsLGRkLGgxLGgyLGgzLGg0LGg1LGg2LGhyLGZpZ3VyZSxwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MDtwYWRkaW5nOjB9bGVnZW5ke3BhZGRpbmc6MH1vbCx1bCxtZW51e21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9ZGlhbG9ne3BhZGRpbmc6MH10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9aW5wdXQ6OnBsYWNlaG9sZGVyLHRleHRhcmVhOjpwbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1idXR0b24sW3JvbGU9YnV0dG9uXXtjdXJzb3I6cG9pbnRlcn06ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9aW1nLHN2Zyx2aWRlbyxjYW52YXMsYXVkaW8saWZyYW1lLGVtYmVkLG9iamVjdHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTpibG9ja31pbWcsdmlkZW97bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZX0qLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS11bi1yb3RhdGU6MDstLXVuLXJvdGF0ZS14OjA7LS11bi1yb3RhdGUteTowOy0tdW4tcm90YXRlLXo6MDstLXVuLXNjYWxlLXg6MTstLXVuLXNjYWxlLXk6MTstLXVuLXNjYWxlLXo6MTstLXVuLXNrZXcteDowOy0tdW4tc2tldy15OjA7LS11bi10cmFuc2xhdGUteDowOy0tdW4tdHJhbnNsYXRlLXk6MDstLXVuLXRyYW5zbGF0ZS16OjA7LS11bi1wYW4teDogOy0tdW4tcGFuLXk6IDstLXVuLXBpbmNoLXpvb206IDstLXVuLXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdW4tb3JkaW5hbDogOy0tdW4tc2xhc2hlZC16ZXJvOiA7LS11bi1udW1lcmljLWZpZ3VyZTogOy0tdW4tbnVtZXJpYy1zcGFjaW5nOiA7LS11bi1udW1lcmljLWZyYWN0aW9uOiA7LS11bi1ib3JkZXItc3BhY2luZy14OjA7LS11bi1ib3JkZXItc3BhY2luZy15OjA7LS11bi1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdW4tcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdW4tc2hhZG93LWluc2V0OiA7LS11bi1zaGFkb3c6MCAwICMwMDAwOy0tdW4tcmluZy1pbnNldDogOy0tdW4tcmluZy1vZmZzZXQtd2lkdGg6MHB4Oy0tdW4tcmluZy1vZmZzZXQtY29sb3I6I2ZmZjstLXVuLXJpbmctd2lkdGg6MHB4Oy0tdW4tcmluZy1jb2xvcjojOTNjNWZkODA7LS11bi1ibHVyOiA7LS11bi1icmlnaHRuZXNzOiA7LS11bi1jb250cmFzdDogOy0tdW4tZHJvcC1zaGFkb3c6IDstLXVuLWdyYXlzY2FsZTogOy0tdW4taHVlLXJvdGF0ZTogOy0tdW4taW52ZXJ0OiA7LS11bi1zYXR1cmF0ZTogOy0tdW4tc2VwaWE6IDstLXVuLWJhY2tkcm9wLWJsdXI6IDstLXVuLWJhY2tkcm9wLWJyaWdodG5lc3M6IDstLXVuLWJhY2tkcm9wLWNvbnRyYXN0OiA7LS11bi1iYWNrZHJvcC1ncmF5c2NhbGU6IDstLXVuLWJhY2tkcm9wLWh1ZS1yb3RhdGU6IDstLXVuLWJhY2tkcm9wLWludmVydDogOy0tdW4tYmFja2Ryb3Atb3BhY2l0eTogOy0tdW4tYmFja2Ryb3Atc2F0dXJhdGU6IDstLXVuLWJhY2tkcm9wLXNlcGlhOiB9LmZsZXgtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uYnV0dG9uLWZvY3VzOmZvY3VzLXZpc2libGV7b3V0bGluZS13aWR0aDoycHg7b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6MXB4O291dGxpbmUtc3R5bGU6c29saWR9LmJ1dHRvbi1mb2N1cy1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLXdpZHRoOjJweDtvdXRsaW5lLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktZm9jdXMpIDtvdXRsaW5lLWNvbG9yOnZhcigtLWNvbG9yLXNlY29uZGFyeS1mb2N1cykgO291dGxpbmUtb2Zmc2V0OjFweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5jb250ZW50LWZvY3VzOmZvY3VzLXZpc2libGV7b3V0bGluZS13aWR0aDoycHg7b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6LTVweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5jb250ZW50LWZvY3VzLXNlY29uZGFyeTpmb2N1cy12aXNpYmxle291dGxpbmUtd2lkdGg6MnB4O291dGxpbmUtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1mb2N1cykgO291dGxpbmUtY29sb3I6dmFyKC0tY29sb3Itc2Vjb25kYXJ5LWZvY3VzKSA7b3V0bGluZS1vZmZzZXQ6LTVweDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5cW2NsaXBcOnJlY3RcKDBcLDBcLDBcLDBcKVxde2NsaXA6cmVjdCgwLDAsMCwwKX0uc3Itb25seXtjbGlwOnJlY3QoMCwwLDAsMCk7d2hpdGUtc3BhY2U6bm93cmFwO2JvcmRlci13aWR0aDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW59LnBvaW50ZXItZXZlbnRzLWF1dG97cG9pbnRlci1ldmVudHM6YXV0b30ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZml4ZWR7cG9zaXRpb246Zml4ZWR9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5zdGlja3l7cG9zaXRpb246c3RpY2t5fS4tYm90dG9tLTRcLjV7Ym90dG9tOi0xLjEyNXJlbX0uLXJpZ2h0LVxbNHB4XF17cmlnaHQ6LTRweH0uLXRvcC1cWzRweFxde3RvcDotNHB4fS5ib3R0b20tXFstOHB4XF17Ym90dG9tOi04cHh9LmJvdHRvbS0we2JvdHRvbTowfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5ib3R0b20tZnVsbHtib3R0b206MTAwJX0ubGVmdC1cWzJweFxde2xlZnQ6MnB4fS5sZWZ0LTB7bGVmdDowfS5sZWZ0LTFcLzJ7bGVmdDo1MCV9LmxlZnQtMntsZWZ0Oi41cmVtfS5sZWZ0LTNcLjd7bGVmdDouOTI1cmVtfS5yaWdodC1cWzE2cHhcXXtyaWdodDoxNnB4fS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTBcLjV7cmlnaHQ6LjEyNXJlbX0ucmlnaHQtMntyaWdodDouNXJlbX0ucmlnaHQtM3tyaWdodDouNzVyZW19LnRvcC1cWzJweFxde3RvcDoycHh9LnRvcC0we3RvcDowfS50b3AtMnt0b3A6LjVyZW19LnRvcC0ze3RvcDouNzVyZW19LnRvcC0zXC43e3RvcDouOTI1cmVtfS50b3AtMzB7dG9wOjcuNXJlbX0udG9wLTQwe3RvcDoxMHJlbX0ubGluZS1jbGFtcC0xey13ZWJraXQtbGluZS1jbGFtcDoxO2xpbmUtY2xhbXA6MTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59LmxpbmUtY2xhbXAtMnstd2Via2l0LWxpbmUtY2xhbXA6MjtsaW5lLWNsYW1wOjI7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVufS5saW5lLWNsYW1wLTN7LXdlYmtpdC1saW5lLWNsYW1wOjM7bGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbn0ubGluZS1jbGFtcC01ey13ZWJraXQtbGluZS1jbGFtcDo1O2xpbmUtY2xhbXA6NTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59LnotMXt6LWluZGV4OjF9LnotMTB7ei1pbmRleDoxMH0uei0xMDB7ei1pbmRleDoxMDB9LnotNTB7ei1pbmRleDo1MH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmZsb2F0LXJpZ2h0e2Zsb2F0OnJpZ2h0fS4tbS1weHttYXJnaW46LTFweH0ubS0ze21hcmdpbjouNzVyZW19Lm0tYXV0b3ttYXJnaW46YXV0b30ubTE1e21hcmdpbjozLjc1cmVtfS5tMTZ7bWFyZ2luOjRyZW19Lm0xOHttYXJnaW46NC41cmVtfS5tMjF7bWFyZ2luOjUuMjVyZW19Lm0yMnttYXJnaW46NS41cmVtfS5tNnttYXJnaW46MS41cmVtfS5tN3ttYXJnaW46MS43NXJlbX0ubTh7bWFyZ2luOjJyZW19Lm05e21hcmdpbjoyLjI1cmVtfS5teC0ye21hcmdpbi1sZWZ0Oi41cmVtO21hcmdpbi1yaWdodDouNXJlbX0ubXgtM3ttYXJnaW4tbGVmdDouNzVyZW07bWFyZ2luLXJpZ2h0Oi43NXJlbX0ubXgtNHttYXJnaW4tbGVmdDoxcmVtO21hcmdpbi1yaWdodDoxcmVtfS5teS0ze21hcmdpbi10b3A6Ljc1cmVtO21hcmdpbi1ib3R0b206Ljc1cmVtfS5teS00e21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjFyZW19Li1tdC0ze21hcmdpbi10b3A6LS43NXJlbX0ubWItXFsycHhcXXttYXJnaW4tYm90dG9tOjJweH0ubWItMHttYXJnaW4tYm90dG9tOjB9Lm1iLTEsLm5vdC1sYXN0LW9mLXR5cGVcOm1iLTE6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206LjI1cmVtfS5tYi0ye21hcmdpbi1ib3R0b206LjVyZW19Lm1iLTN7bWFyZ2luLWJvdHRvbTouNzVyZW19Lm1iLTR7bWFyZ2luLWJvdHRvbToxcmVtfS5tYi02e21hcmdpbi1ib3R0b206MS41cmVtfS5tbC0wXC41e21hcmdpbi1sZWZ0Oi4xMjVyZW19Lm1sLTF7bWFyZ2luLWxlZnQ6LjI1cmVtfS5tbC0ye21hcmdpbi1sZWZ0Oi41cmVtfS5tbC0ze21hcmdpbi1sZWZ0Oi43NXJlbX0ubWwtNHttYXJnaW4tbGVmdDoxcmVtfS5tbC04e21hcmdpbi1sZWZ0OjJyZW19Lm1yLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbX0ubXItMVwuNXttYXJnaW4tcmlnaHQ6LjM3NXJlbX0ubXItMTB7bWFyZ2luLXJpZ2h0OjIuNXJlbX0ubXItMnttYXJnaW4tcmlnaHQ6LjVyZW19Lm1yLTN7bWFyZ2luLXJpZ2h0Oi43NXJlbX0ubXItNHttYXJnaW4tcmlnaHQ6MXJlbX0ubXQtXFsxcHhcXXttYXJnaW4tdG9wOjFweH0ubXQtMFwuNXttYXJnaW4tdG9wOi4xMjVyZW19Lm10LTJ7bWFyZ2luLXRvcDouNXJlbX0ubXQtM3ttYXJnaW4tdG9wOi43NXJlbX0ubXQtNHttYXJnaW4tdG9wOjFyZW19Lm10LTZ7bWFyZ2luLXRvcDoxLjVyZW19Lm10LTh7bWFyZ2luLXRvcDoycmVtfS5maXJzdC1vZi10eXBlXDptdC0yOmZpcnN0LW9mLXR5cGV7bWFyZ2luLXRvcDouNXJlbX0uaW5saW5le2Rpc3BsYXk6aW5saW5lfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtXFsxXC4yZW1cXXtoZWlnaHQ6MS4yZW19LmgtXFsxZW1cXXtoZWlnaHQ6MWVtfS5oLVxbNTBweFxde2hlaWdodDo1MHB4fS5oLTF7aGVpZ2h0Oi4yNXJlbX0uaC0xMHtoZWlnaHQ6Mi41cmVtfS5oLTExe2hlaWdodDoyLjc1cmVtfS5oLTEye2hlaWdodDozcmVtfS5oLTJ7aGVpZ2h0Oi41cmVtfS5oLTJcLjV7aGVpZ2h0Oi42MjVyZW19LmgtMjB7aGVpZ2h0OjVyZW19LmgtMzB7aGVpZ2h0OjcuNXJlbX0uaC00e2hlaWdodDoxcmVtfS5oLTQwe2hlaWdodDoxMHJlbX0uaC00MDBweHtoZWlnaHQ6NDAwcHh9LmgtNXtoZWlnaHQ6MS4yNXJlbX0uaC01NHB4e2hlaWdodDo1NHB4fS5oLTZ7aGVpZ2h0OjEuNXJlbX0uaC02MHB4e2hlaWdodDo2MHB4fS5oLTY0cHh7aGVpZ2h0OjY0cHh9LmgtN3toZWlnaHQ6MS43NXJlbX0uaC04e2hlaWdodDoycmVtfS5oLWZ1bGx7aGVpZ2h0OjEwMCV9LmgtcHh7aGVpZ2h0OjFweH0ubWF4LWgtXFsxMjVweFxde21heC1oZWlnaHQ6MTI1cHh9Lm1heC1oLVxbMjQwcHhcXXttYXgtaGVpZ2h0OjI0MHB4fS5tYXgtaC1cWzMycHhcXXttYXgtaGVpZ2h0OjMycHh9Lm1heC1oLTEzMnB4e21heC1oZWlnaHQ6MTMycHh9Lm1heC1oLTY0e21heC1oZWlnaHQ6MTZyZW19Lm1heC1oLTgwdmh7bWF4LWhlaWdodDo4MHZofS5tYXgtaC04NnttYXgtaGVpZ2h0OjIxLjVyZW19Lm1heC1oLWZ1bGx7bWF4LWhlaWdodDoxMDAlfS5tYXgtdy1cWzgwXCVcXXttYXgtd2lkdGg6ODAlfS5tYXgtdy1cWzg1XCVcXXttYXgtd2lkdGg6ODUlfS5tYXgtdy1cW2NhbGNcKDEwMFwlLTE1MHB4XClcXXttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTUwcHgpfS5tYXgtdy1mdWxse21heC13aWR0aDoxMDAlfS5taW4taC1cWzE2cHhcXXttaW4taGVpZ2h0OjE2cHh9Lm1pbi13LVxbMTZweFxde21pbi13aWR0aDoxNnB4fS5taW4tdy0we21pbi13aWR0aDowfS5taW4tdy01e21pbi13aWR0aDoxLjI1cmVtfS5taW4tdy01XC41e21pbi13aWR0aDoxLjM3NXJlbX0ubWluLXctNnttaW4td2lkdGg6MS41cmVtfS53LVxbMVwuMmVtXF17d2lkdGg6MS4yZW19LnctXFsxZW1cXXt3aWR0aDoxZW19LnctXFs1MHB4XF17d2lkdGg6NTBweH0udy0we3dpZHRoOjB9LnctMXt3aWR0aDouMjVyZW19LnctMTF7d2lkdGg6Mi43NXJlbX0udy0xMTZ7d2lkdGg6MjlyZW19LnctMTJ7d2lkdGg6M3JlbX0udy0ye3dpZHRoOi41cmVtfS53LTJcLjV7d2lkdGg6LjYyNXJlbX0udy0yODBweHt3aWR0aDoyODBweH0udy0zNDhweHt3aWR0aDozNDhweH0udy00e3dpZHRoOjFyZW19LnctNXt3aWR0aDoxLjI1cmVtfS53LTUye3dpZHRoOjEzcmVtfS53LTU2e3dpZHRoOjE0cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LTYwcHh7d2lkdGg6NjBweH0udy03e3dpZHRoOjEuNzVyZW19LnctOHt3aWR0aDoycmVtfS53LWZ1bGx7d2lkdGg6MTAwJX0udy1tYXh7d2lkdGg6bWF4LWNvbnRlbnR9LnctcHh7d2lkdGg6MXB4fS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZmxleC0xe2ZsZXg6MX0uZmxleC1ub25le2ZsZXg6bm9uZX0uZmxleC1zaHJpbmt7ZmxleC1zaHJpbms6MX0uZmxleC1zaHJpbmstMCwuc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uZmxleC1ncm93LC5ncm93e2ZsZXgtZ3JvdzoxfS5mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS4tdHJhbnNsYXRlLXgtMVwvMnstLXVuLXRyYW5zbGF0ZS14Oi01MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0udHJhbnNsYXRlLXgtZnVsbHstLXVuLXRyYW5zbGF0ZS14OjEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0uZ3JvdXA6aG92ZXIgLmdyb3VwLWhvdmVyXDpzY2FsZS0xMTV7LS11bi1zY2FsZS14OjEuMTU7LS11bi1zY2FsZS15OjEuMTU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0uaG92ZXJcOnNjYWxlLTEyMDpob3ZlcnstLXVuLXNjYWxlLXg6MS4yOy0tdW4tc2NhbGUteToxLjI7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tdW4tdHJhbnNsYXRlLXgpKSB0cmFuc2xhdGVZKHZhcigtLXVuLXRyYW5zbGF0ZS15KSkgdHJhbnNsYXRlWih2YXIoLS11bi10cmFuc2xhdGUteikpIHJvdGF0ZSh2YXIoLS11bi1yb3RhdGUpKSByb3RhdGVYKHZhcigtLXVuLXJvdGF0ZS14KSkgcm90YXRlWSh2YXIoLS11bi1yb3RhdGUteSkpIHJvdGF0ZVoodmFyKC0tdW4tcm90YXRlLXopKSBza2V3WCh2YXIoLS11bi1za2V3LXgpKSBza2V3WSh2YXIoLS11bi1za2V3LXkpKSBzY2FsZVgodmFyKC0tdW4tc2NhbGUteCkpIHNjYWxlWSh2YXIoLS11bi1zY2FsZS15KSkgc2NhbGVaKHZhcigtLXVuLXNjYWxlLXopKX0udHJhbnNmb3Jte3RyYW5zZm9ybTp0cmFuc2xhdGVYKHZhcigtLXVuLXRyYW5zbGF0ZS14KSkgdHJhbnNsYXRlWSh2YXIoLS11bi10cmFuc2xhdGUteSkpIHRyYW5zbGF0ZVoodmFyKC0tdW4tdHJhbnNsYXRlLXopKSByb3RhdGUodmFyKC0tdW4tcm90YXRlKSkgcm90YXRlWCh2YXIoLS11bi1yb3RhdGUteCkpIHJvdGF0ZVkodmFyKC0tdW4tcm90YXRlLXkpKSByb3RhdGVaKHZhcigtLXVuLXJvdGF0ZS16KSkgc2tld1godmFyKC0tdW4tc2tldy14KSkgc2tld1kodmFyKC0tdW4tc2tldy15KSkgc2NhbGVYKHZhcigtLXVuLXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdW4tc2NhbGUteSkpIHNjYWxlWih2YXIoLS11bi1zY2FsZS16KSl9QGtleWZyYW1lcyBwdWxzZXswJSx0b3tvcGFjaXR5OjF9NTAle29wYWNpdHk6LjV9fUBrZXlmcmFtZXMgcHVzaC10by1sZWZ0ezAle21hcmdpbi1yaWdodDotNTAlO3RyYW5zZm9ybTpzY2FsZSgwKX10b3ttYXJnaW4tcmlnaHQ6aW5oZXJpdDt0cmFuc2Zvcm06c2NhbGUoMSl9fUBrZXlmcmFtZXMgc3BpbnswJXtyb3RhdGU6MGRlZ310b3tyb3RhdGU6MzYwZGVnfX1Aa2V5ZnJhbWVzIHR5cGluZ3swJSw1MCUsdG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9MjUle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC02cHgpfX0uYW5pbWF0ZS1wdWxzZXthbmltYXRpb246MnMgY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkgaW5maW5pdGUgcHVsc2V9LmFuaW1hdGUtcHVzaC10by1sZWZ0e2FuaW1hdGlvbjouMjVzIGVhc2UtaW4tb3V0IHB1c2gtdG8tbGVmdH0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjoxcyBsaW5lYXIgaW5maW5pdGUgc3Bpbn0uYW5pbWF0ZS10eXBpbmd7YW5pbWF0aW9uOi44cyBlYXNlLWluLW91dCB0eXBpbmd9LmN1cnNvci1hdXRve2N1cnNvcjphdXRvfS5jdXJzb3ItcG9pbnRlciwuaG92ZXJcOmN1cnNvci1wb2ludGVyOmhvdmVye2N1cnNvcjpwb2ludGVyfS5jdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ucmVzaXple3Jlc2l6ZTpib3RofS5yZXNpemUtbm9uZXtyZXNpemU6bm9uZX0uc2Nyb2xsLW10LTJ7c2Nyb2xsLW1hcmdpbi10b3A6LjVyZW19Lmxpc3QtZGVjaW1hbHtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbH0ubGlzdC1kaXNje2xpc3Qtc3R5bGUtdHlwZTpkaXNjfS5jb250ZW50LWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlcn0uaXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZX0uc2VsZi1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaH0uanVzdGlmeS1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmdhcC0ye2dhcDouNXJlbX0uZ2FwLTN7Z2FwOi43NXJlbX0uc3BhY2UteC0yPjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdW4tc3BhY2UteC1yZXZlcnNlOjA7bWFyZ2luLWxlZnQ6Y2FsYyguNXJlbSAqIGNhbGMoMSAtIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpKTttYXJnaW4tcmlnaHQ6Y2FsYyguNXJlbSAqIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpfS5zcGFjZS14LTU+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS11bi1zcGFjZS14LXJldmVyc2U6MDttYXJnaW4tbGVmdDpjYWxjKDEuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS11bi1zcGFjZS14LXJldmVyc2UpKSk7bWFyZ2luLXJpZ2h0OmNhbGMoMS4yNXJlbSAqIHZhcigtLXVuLXNwYWNlLXgtcmV2ZXJzZSkpfS5zcGFjZS15LTI+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS11bi1zcGFjZS15LXJldmVyc2U6MDttYXJnaW4tdG9wOmNhbGMoLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS11bi1zcGFjZS15LXJldmVyc2UpKSk7bWFyZ2luLWJvdHRvbTpjYWxjKC41cmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktND46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXVuLXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi10b3A6Y2FsYygxcmVtICogY2FsYygxIC0gdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxcmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9LnNwYWNlLXktNT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXstLXVuLXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi10b3A6Y2FsYygxLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSkpO21hcmdpbi1ib3R0b206Y2FsYygxLjI1cmVtICogdmFyKC0tdW4tc3BhY2UteS1yZXZlcnNlKSl9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctY2xpcHtvdmVyZmxvdzpjbGlwfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1zY3JvbGx7b3ZlcmZsb3cteTpzY3JvbGx9Lm92ZXJzY3JvbGwtY29udGFpbntvdmVyc2Nyb2xsLWJlaGF2aW9yOmNvbnRhaW59LnRydW5jYXRle3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0udGV4dC1lbGxpcHNpc3t0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS53aGl0ZXNwYWNlLW5vcm1hbHt3aGl0ZS1zcGFjZTpub3JtYWx9LndoaXRlc3BhY2Utbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0ud2hpdGVzcGFjZS1wcmV7d2hpdGUtc3BhY2U6cHJlfS53aGl0ZXNwYWNlLXByZS13cmFwe3doaXRlLXNwYWNlOnByZS13cmFwfS5icmVhay13b3Jkc3tvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmJyZWFrLWFsbHt3b3JkLWJyZWFrOmJyZWFrLWFsbH0uYm9yZGVyLC5ib3JkZXItMXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItd2lkdGg6MH0uYm9yZGVyLTJ7Ym9yZGVyLXdpZHRoOjJweH0uYm9yZGVyLXQtMntib3JkZXItdG9wLXdpZHRoOjJweH0uYm9yZGVyLWdyYXktMzAwey0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDIwOSAyMTMgMjE5L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9LmJvcmRlci1ncmVlbi00MDB7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzQgMjIyIDEyOC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItcHJpbWFyeXtib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSl9LmJvcmRlci1wcmltYXJ5LWJ1dHRvbntib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pfS5ib3JkZXItcmVkLTUwMHstLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMzkgNjggNjgvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKX0uYm9yZGVyLXNsYXRlLTIwMHstLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMjYgMjMyIDI0MC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItd2hpdGV7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKX0uZm9jdXNcOmJvcmRlci1ibHVlLTUwMDpmb2N1c3stLXVuLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig1OSAxMzAgMjQ2L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9LmJvcmRlci10LW5ldXRyYWwtMTAwey0tdW4tYm9yZGVyLW9wYWNpdHk6MTstLXVuLWJvcmRlci10b3Atb3BhY2l0eTp2YXIoLS11bi1ib3JkZXItb3BhY2l0eSk7Ym9yZGVyLXRvcC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYm9yZGVyLXRvcC1vcGFjaXR5KSl9LmJvcmRlci1yb3VuZGVkLWZ1bGwsLnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC0yLC5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6LjVyZW19LnJvdW5kZWQtMnhse2JvcmRlci1yYWRpdXM6MXJlbX0ucm91bmRlZC0zeGwsLnJvdW5kZWQtNntib3JkZXItcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1tZHtib3JkZXItcmFkaXVzOi4zNzVyZW19LnJvdW5kZWQteGx7Ym9yZGVyLXJhZGl1czouNzVyZW19LnJvdW5kZWQtbHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOi4yNXJlbX0ucm91bmRlZC1sLTN4bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjEuNXJlbTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1ye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOi4yNXJlbTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czouMjVyZW19LnJvdW5kZWQtci0zeGx7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC10LTZ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxLjVyZW07Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5yb3VuZGVkLWxiLTN4bHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1sdC0zeGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxLjVyZW19LnJvdW5kZWQtcmItM3hse2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjEuNXJlbX0ucm91bmRlZC1ydC0zeGx7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5ib3JkZXItZGFzaGVke2JvcmRlci1zdHlsZTpkYXNoZWR9LmJvcmRlci1ub25le2JvcmRlci1zdHlsZTpub25lfS5iZy1ibGFja3stLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ibGFja1wvODB7YmFja2dyb3VuZC1jb2xvcjojMDAwY30uYmctZW1lcmFsZC01MDB7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTYgMTg1IDEyOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTIwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjkgMjMxIDIzNS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTMwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1ncmF5LTQwMFwvXFtcLjk1XF17YmFja2dyb3VuZC1jb2xvcjojOWNhM2FmZjJ9LmJnLWdyYXktNjAwXC9cW1wuOTVcXXtiYWNrZ3JvdW5kLWNvbG9yOiM0YjU1NjNmMn0uYmctZ3JlZW4tNDAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDc0IDIyMiAxMjgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctZ3JlZW4tNTAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDM0IDE5NyA5NC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1uZXV0cmFsLTEwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDUgMjQ1IDI0NS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1uZXV0cmFsLTEwMFwvNTB7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1ODB9LmJnLW5ldXRyYWwtNjAwXC80MHtiYWNrZ3JvdW5kLWNvbG9yOiM1MjUyNTI2Nn0uYmctb3JhbmdlLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDkgMTE1IDIyL3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXByaW1hcnktYnV0dG9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIH0uYmctcmVkLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMzkgNjggNjgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctcmVkLTYwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjAgMzggMzgvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctc2xhdGUtMTAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXNsYXRlLTIwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjYgMjMyIDI0MC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy1zbGF0ZS0zMDB7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjAzIDIxMyAyMjUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uYmctc2xhdGUtNDAwey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDE0OCAxNjMgMTg0L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLXNsYXRlLTUwMHstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5iZy13aGl0ZXstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy1ibGFjazpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy1lbWVyYWxkLTYwMDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1IDE1MCAxMDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uaG92ZXItYmctcHJpbWFyeS1idXR0b24taG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5ob3Zlci1iZy1wcmltYXJ5LWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LmhvdmVyLWJnLXNsYXRlLTEwMDpob3ZlcnstLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDEgMjQ1IDI0OS92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS5ob3Zlci1iZy10cmFuc3BhcmVudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5ob3Zlclw6Ymctc2xhdGUtMTAwOmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJnLW9wYWNpdHktMTAsLmhvdmVyLWJnLW9wYWNpdHktMTA6aG92ZXJ7LS11bi1iZy1vcGFjaXR5Oi4xfS5mcm9tLXdoaXRlXC8xMDB7LS11bi1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOjAlOy0tdW4tZ3JhZGllbnQtZnJvbTojZmZmIHZhcigtLXVuLWdyYWRpZW50LWZyb20tcG9zaXRpb24pOy0tdW4tZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXVuLWdyYWRpZW50LXRvOiNmZmYwIHZhcigtLXVuLWdyYWRpZW50LXRvLXBvc2l0aW9uKTstLXVuLWdyYWRpZW50LXN0b3BzOnZhcigtLXVuLWdyYWRpZW50LWZyb20pLCB2YXIoLS11bi1ncmFkaWVudC10byl9LnZpYS13aGl0ZVwvNDB7LS11bi1ncmFkaWVudC12aWEtcG9zaXRpb246NTAlOy0tdW4tZ3JhZGllbnQtdG86I2ZmZjA7LS11bi1ncmFkaWVudC1zdG9wczp2YXIoLS11bi1ncmFkaWVudC1mcm9tKSwgI2ZmZjYgdmFyKC0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdW4tZ3JhZGllbnQtdG8pfS52aWEtd2hpdGVcLzUwey0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uOjUwJTstLXVuLWdyYWRpZW50LXRvOiNmZmYwOy0tdW4tZ3JhZGllbnQtc3RvcHM6dmFyKC0tdW4tZ3JhZGllbnQtZnJvbSksICNmZmZmZmY4MCB2YXIoLS11bi1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS11bi1ncmFkaWVudC10byl9LnRvLXRyYW5zcGFyZW50ey0tdW4tZ3JhZGllbnQtdG8tcG9zaXRpb246MTAwJTstLXVuLWdyYWRpZW50LXRvOnRyYW5zcGFyZW50IHZhcigtLXVuLWdyYWRpZW50LXRvLXBvc2l0aW9uKX0uZnJvbS0wXCV7LS11bi1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOjAlfS52aWEtNTBcJXstLXVuLWdyYWRpZW50LXZpYS1wb3NpdGlvbjo1MCV9LnZpYS03MFwley0tdW4tZ3JhZGllbnQtdmlhLXBvc2l0aW9uOjcwJX0uYmctZ3JhZGllbnQtdG8tdHstLXVuLWdyYWRpZW50LXNoYXBlOnRvIHRvcCBpbiBva2xjaDstLXVuLWdyYWRpZW50OnZhcigtLXVuLWdyYWRpZW50LXNoYXBlKSwgdmFyKC0tdW4tZ3JhZGllbnQtc3RvcHMpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHZhcigtLXVuLWdyYWRpZW50KSl9LmZpbGwtY3VycmVudHtmaWxsOmN1cnJlbnRDb2xvcn0uZmlsbC1wcmltYXJ5LWJ1dHRvbntmaWxsOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LmZpbGwtcHJpbWFyeS1idXR0b24tY29udGVudHtmaWxsOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0ub2JqZWN0LWNvbnRhaW57b2JqZWN0LWZpdDpjb250YWlufS5wLTB7cGFkZGluZzowfS5wLTBcLjh7cGFkZGluZzouMnJlbX0ucC0xe3BhZGRpbmc6LjI1cmVtfS5wLTFcLjV7cGFkZGluZzouMzc1cmVtfS5wLTJ7cGFkZGluZzouNXJlbX0ucC0ze3BhZGRpbmc6Ljc1cmVtfS5wLTR7cGFkZGluZzoxcmVtfS5wLTh7cGFkZGluZzoycmVtfS5weCwucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTF7cGFkZGluZy1sZWZ0Oi4yNXJlbTtwYWRkaW5nLXJpZ2h0Oi4yNXJlbX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtM3twYWRkaW5nLWxlZnQ6Ljc1cmVtO3BhZGRpbmctcmlnaHQ6Ljc1cmVtfS5weC04e3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctcmlnaHQ6MnJlbX0ucHktMXtwYWRkaW5nLXRvcDouMjVyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5weS0yXC41e3BhZGRpbmctdG9wOi42MjVyZW07cGFkZGluZy1ib3R0b206LjYyNXJlbX0ucHktM3twYWRkaW5nLXRvcDouNzVyZW07cGFkZGluZy1ib3R0b206Ljc1cmVtfS5wYi0we3BhZGRpbmctYm90dG9tOjB9LnBiLTF7cGFkZGluZy1ib3R0b206LjI1cmVtfS5wYi0ye3BhZGRpbmctYm90dG9tOi41cmVtfS5wYi0ze3BhZGRpbmctYm90dG9tOi43NXJlbX0ucGItNHtwYWRkaW5nLWJvdHRvbToxcmVtfS5wbC0ye3BhZGRpbmctbGVmdDouNXJlbX0ucGwtNCwuZ3JvdXA6aG92ZXIgLmdyb3VwLWhvdmVyXDpub3QtZmlyc3RcOnBsLTQ6bm90KDpmaXJzdC1jaGlsZCl7cGFkZGluZy1sZWZ0OjFyZW19LnByLTF7cGFkZGluZy1yaWdodDouMjVyZW19LnByLTR7cGFkZGluZy1yaWdodDoxcmVtfS5wdC0xe3BhZGRpbmctdG9wOi4yNXJlbX0ucHQtNntwYWRkaW5nLXRvcDoxLjVyZW19LnB0LTl7cGFkZGluZy10b3A6Mi4yNXJlbX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtMnhse2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6MnJlbX0udGV4dC1iYXNle2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuNXJlbX0udGV4dC1iYXNlLWlucHV0e2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW19LnRleHQtbGd7Zm9udC1zaXplOjEuMTI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0udGV4dC14c3tmb250LXNpemU6Ljc1cmVtO2xpbmUtaGVpZ2h0OjFyZW19LnRleHQtYmxhY2t7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMCAwIDAvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LWdyYXktMzAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIwOSAyMTMgMjE5L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1ncmF5LTUwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDcgMTE0IDEyOC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtbmV1dHJhbC00MDB7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMTYzIDE2MyAxNjMvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LW5ldXRyYWwtNTAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDExNSAxMTUgMTE1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1wcmltYXJ5e2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnkpIH0udGV4dC1wcmltYXJ5LWJ1dHRvbntjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbikgfS50ZXh0LXByaW1hcnktYnV0dG9uLWNvbnRlbnR7Y29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24tY29udGVudCkgfS50ZXh0LXByaW1hcnktY29udGVudHtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWNvbnRlbnQpIH0udGV4dC1yZWQtNTAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIzOSA2OCA2OC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtc2xhdGUtNDAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDE0OCAxNjMgMTg0L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uY29sb3Itc2xhdGUtNTAwLC50ZXh0LXNsYXRlLTUwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LnRleHQtc2xhdGUtNjAwey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDcxIDg1IDEwNS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LmNvbG9yLXNsYXRlLTgwMCwudGV4dC1zbGF0ZS04MDB7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMzAgNDEgNTkvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS50ZXh0LXdoaXRley0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uaG92ZXItdGV4dC1wcmltYXJ5LWJ1dHRvbi1jb250ZW50OmhvdmVye2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0uaG92ZXJcOnRleHQtZ3JheS00MDA6aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMTU2IDE2MyAxNzUvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5ob3Zlclw6dGV4dC1zbGF0ZS04MDA6aG92ZXJ7LS11bi10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2IoMzAgNDEgNTkvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5wbGFjZWhvbGRlclw6dGV4dC1zbGF0ZS0zMDA6OnBsYWNlaG9sZGVyey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDIwMyAyMTMgMjI1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0uY29sb3ItcmVkLTYwMHstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyMjAgMzggMzgvdmFyKC0tdW4tdGV4dC1vcGFjaXR5KSkgfS5ob3Zlclw6Y29sb3Itc2xhdGUtNzAwOmhvdmVyey0tdW4tdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiKDUxIDY1IDg1L3ZhcigtLXVuLXRleHQtb3BhY2l0eSkpIH0udGV4dC1vcGFjaXR5LTIwey0tdW4tdGV4dC1vcGFjaXR5Oi4yfS5mb250LTIwMHtmb250LXdlaWdodDoyMDB9LmZvbnQtNTAwLC5mb250LW1lZGl1bXtmb250LXdlaWdodDo1MDB9LmZvbnQtYm9sZHtmb250LXdlaWdodDo3MDB9LmZvbnQtbGlnaHR7Zm9udC13ZWlnaHQ6MzAwfS5mb250LXNlbWlib2xke2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1cWzIycHhcXXtsaW5lLWhlaWdodDoyMnB4fS5sZWFkaW5nLTRcLjV7bGluZS1oZWlnaHQ6MS4xMjVyZW19LmxlYWRpbmctNVwuNXtsaW5lLWhlaWdodDoxLjM3NXJlbX0ubGVhZGluZy02e2xpbmUtaGVpZ2h0OjEuNXJlbX0ubGVhZGluZy1ub3JtYWx7bGluZS1oZWlnaHQ6MS41fS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnVuZGVybGluZXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9Lm5vLXVuZGVybGluZSwuaG92ZXItbm8tdW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5vcGFjaXR5LTEwe29wYWNpdHk6LjF9Lm9wYWNpdHktMTAwe29wYWNpdHk6MX0ub3BhY2l0eS0yMHtvcGFjaXR5Oi4yfS5vcGFjaXR5LTMwe29wYWNpdHk6LjN9Lm9wYWNpdHktNjB7b3BhY2l0eTouNn0uc2hhZG93ey0tdW4tc2hhZG93OnZhcigtLXVuLXNoYWRvdy1pbnNldCkgMCAxcHggM3B4IDAgdmFyKC0tdW4tc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksdmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDFweCAycHggLTFweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uc2hhZG93LWxney0tdW4tc2hhZG93OnZhcigtLXVuLXNoYWRvdy1pbnNldCkgMCAxMHB4IDE1cHggLTNweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSx2YXIoLS11bi1zaGFkb3ctaW5zZXQpIDAgNHB4IDZweCAtNHB4IHZhcigtLXVuLXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdW4tcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdW4tcmluZy1zaGFkb3cpLCB2YXIoLS11bi1zaGFkb3cpfS5zaGFkb3ctbWR7LS11bi1zaGFkb3c6dmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDRweCA2cHggLTFweCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSx2YXIoLS11bi1zaGFkb3ctaW5zZXQpIDAgMnB4IDRweCAtMnB4IHZhcigtLXVuLXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdW4tcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdW4tcmluZy1zaGFkb3cpLCB2YXIoLS11bi1zaGFkb3cpfS5zaGFkb3ctc217LS11bi1zaGFkb3c6dmFyKC0tdW4tc2hhZG93LWluc2V0KSAwIDFweCAycHggMCB2YXIoLS11bi1zaGFkb3ctY29sb3IsIzAwMDAwMDBkKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uZm9jdXMtd2l0aGluXDpvdXRsaW5lLTI6Zm9jdXMtd2l0aGlue291dGxpbmUtd2lkdGg6MnB4fS5mb2N1cy13aXRoaW5cOm91dGxpbmUtcHJpbWFyeS1mb2N1czpmb2N1cy13aXRoaW57b3V0bGluZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWZvY3VzKSB9Lm91dGxpbmUsLmZvY3VzLXdpdGhpblw6b3V0bGluZS1zb2xpZDpmb2N1cy13aXRoaW57b3V0bGluZS1zdHlsZTpzb2xpZH0ub3V0bGluZS1ub25lLC5mb2N1c1w6b3V0bGluZS1ub25lOmZvY3VzLC5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLW9mZnNldDoycHg7b3V0bGluZToycHggc29saWQgIzAwMDB9LmZvY3VzLXdpdGhpblw6cmluZy0zOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctd2lkdGg6M3B4Oy0tdW4tcmluZy1vZmZzZXQtc2hhZG93OnZhcigtLXVuLXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXVuLXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS11bi1yaW5nLW9mZnNldC1jb2xvcik7LS11bi1yaW5nLXNoYWRvdzp2YXIoLS11bi1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKHZhcigtLXVuLXJpbmctd2lkdGgpICsgdmFyKC0tdW4tcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS11bi1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXVuLXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXVuLXJpbmctc2hhZG93KSwgdmFyKC0tdW4tc2hhZG93KX0uZm9jdXMtd2l0aGluXDpyaW5nLW9mZnNldC0xOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctb2Zmc2V0LXdpZHRoOjFweH0uZm9jdXMtd2l0aGluXDpyaW5nLWJsdWUtNDAwOmZvY3VzLXdpdGhpbnstLXVuLXJpbmctb3BhY2l0eToxOy0tdW4tcmluZy1jb2xvcjpyZ2IoOTYgMTY1IDI1MC92YXIoLS11bi1yaW5nLW9wYWNpdHkpKSB9LmZvY3VzXDpyaW5nLWJsdWUtNTAwOmZvY3Vzey0tdW4tcmluZy1vcGFjaXR5OjE7LS11bi1yaW5nLWNvbG9yOnJnYig1OSAxMzAgMjQ2L3ZhcigtLXVuLXJpbmctb3BhY2l0eSkpIH0udHJhbnNpdGlvbnt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlciwtd2Via2l0LWJhY2tkcm9wLWZpbHRlcixiYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0udHJhbnNpdGlvbi1vcGFjaXR5e3RyYW5zaXRpb24tcHJvcGVydHk6b3BhY2l0eTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24tcGFkZGluZy00MDB7dHJhbnNpdGlvbi1wcm9wZXJ0eTpwYWRkaW5nO3RyYW5zaXRpb24tZHVyYXRpb246LjRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS50cmFuc2l0aW9uLXRyYW5zZm9ybXt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSl9LnRyYW5zaXRpb24td2lkdGgtMjUwe3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGg7dHJhbnNpdGlvbi1kdXJhdGlvbjouMjVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5kdXJhdGlvbi0xNTB7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5kdXJhdGlvbi0zMDB7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmR1cmF0aW9uLTc1e3RyYW5zaXRpb24tZHVyYXRpb246NzVtc30uZGVsYXktMHt0cmFuc2l0aW9uLWRlbGF5OjBzfS5lYXNlLWluLW91dHt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uZWFzZS1vdXR7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAsMCwuMiwxKX0uY29udGVudC1cW1wiXCJcXXtjb250ZW50OiIifS5iZy1wcmltYXJ5LWdyYWRpZW50e2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDgwZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWZyb20pLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LXRvKSAxMzAlKX0uYmctcHJpbWFyeS1ncmFkaWVudC1idXR0b257YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoODBkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtYnV0dG9uLWZyb20pLCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWJ1dHRvbi10bykgMTMwJSl9LmJnLXByaW1hcnktZ3JhZGllbnQtaG92ZXI6aG92ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoODBkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtaG92ZXItZnJvbSksIHZhcigtLWNvbG9yLXByaW1hcnktZ3JhZGllbnQtaG92ZXItdG8pIDEzMCUpfS5saW5lLWNsYW1wLTV7LXdlYmtpdC1saW5lLWNsYW1wOjU7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVufS50eXBpbmctaW5kaWNhdG9yLnN2ZWx0ZS1zNDB4Z2t7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LnR5cGluZy1pbmRpY2F0b3Iuc20uc3ZlbHRlLXM0MHhna3t3aWR0aDouMjVyZW07aGVpZ2h0Oi4yNXJlbX0udHlwaW5nLWluZGljYXRvci5tZC5zdmVsdGUtczQweGdre3dpZHRoOi41cmVtO2hlaWdodDouNXJlbX0udHlwaW5nLWluZGljYXRvci5pbmRpY2F0b3ItY29sb3ItYmxhY2suc3ZlbHRlLXM0MHhna3stLXVuLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigwIDAgMC92YXIoLS11bi1iZy1vcGFjaXR5KSkgfS50eXBpbmctaW5kaWNhdG9yLmluZGljYXRvci1jb2xvci1ncmF5LnN2ZWx0ZS1zNDB4Z2t7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTAwIDExNiAxMzkvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0udHlwaW5nLWluZGljYXRvci5zdmVsdGUtczQweGdrOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0Oi4yNXJlbX0udHlwaW5nLWluZGljYXRvci1zZWNvbmQuc3ZlbHRlLXM0MHhna3thbmltYXRpb24tZGVsYXk6LjFzfS50eXBpbmctaW5kaWNhdG9yLXRoaXJkLnN2ZWx0ZS1zNDB4Z2t7YW5pbWF0aW9uLWRlbGF5Oi4yc30uYnRuLnN2ZWx0ZS0xZTg0bjd3e2JvcmRlci1yYWRpdXM6MS41cmVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbTt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7ZGlzcGxheTppbmxpbmUtZmxleH0uYnRuLXByaW1hcnkuc3ZlbHRlLTFlODRuN3d7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbikgO2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWNvbnRlbnQpIH0uYnRuLXByaW1hcnkuc3ZlbHRlLTFlODRuN3c6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3ZlcikgfS5idG4tb3V0bGluZS5zdmVsdGUtMWU4NG43d3tib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbik7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigwIDAgMC92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSB9LmJ0bi1vdXRsaW5lLnN2ZWx0ZS0xZTg0bjd3OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSB9LmJ0bi1yYWlzZWQuc3ZlbHRlLTFlODRuN3d7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDstLXVuLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigxMDAgMTE2IDEzOS92YXIoLS11bi10ZXh0LW9wYWNpdHkpKSA7Ym94LXNoYWRvdzowIDJweCA2cHggIzAwMDAwMDI5fS5idG4tcmFpc2VkLnN2ZWx0ZS0xZTg0bjd3OmhvdmVyey0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MSAyNDUgMjQ5L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmJ0bi1zbS5zdmVsdGUtMWU4NG43d3toZWlnaHQ6MnJlbX0uYnRuLW1kLnN2ZWx0ZS0xZTg0bjd3e2hlaWdodDoyLjVyZW19LmJ0bi1sZy5zdmVsdGUtMWU4NG43d3toZWlnaHQ6M3JlbX0uYnRuLWRpc2FibGVkLnN2ZWx0ZS0xZTg0bjd3e2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi4yfS5kYXJrLnN2ZWx0ZS1zajk5aDN7YmFja2dyb3VuZC1jb2xvcjojNGI1NTYzZjI7cGFkZGluZzouNXJlbSAuNzVyZW19LmxpZ2h0LnN2ZWx0ZS1zajk5aDN7YmFja2dyb3VuZC1jb2xvcjojOWNhM2FmZjI7cGFkZGluZzouMjVyZW0gLjVyZW19c3ZnLnN2ZWx0ZS15aXhoYXR7ZmlsbDpjdXJyZW50Q29sb3I7d2lkdGg6MWVtO2hlaWdodDoxZW19LmNhcm91c2VsLnN2ZWx0ZS0xMHFxanpke2p1c3RpZnktY29udGVudDpzdGFydDthbGlnbi1pdGVtczpzdGFydDt3aWR0aDoxMDAlfS5jYXJvdXNlbC5zdmVsdGUtMTBxcWp6ZDpob3ZlciAuYnV0dG9uOndoZXJlKC5zdmVsdGUtMTBxcWp6ZCksLmNhcm91c2VsLnN2ZWx0ZS0xMHFxanpkOmZvY3VzLXdpdGhpbiAuYnV0dG9uOndoZXJlKC5zdmVsdGUtMTBxcWp6ZCl7b3BhY2l0eToxfS5idXR0b24uc3ZlbHRlLTEwcXFqemR7b3BhY2l0eTowO3otaW5kZXg6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlcjpub25lO3RyYW5zaXRpb246b3BhY2l0eSAuNHM7cG9zaXRpb246YWJzb2x1dGV9LmxlZnQuc3ZlbHRlLTEwcXFqemR7bGVmdDotMWVtfS5yaWdodC5zdmVsdGUtMTBxcWp6ZHtyaWdodDotMWVtfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCB1bHttYXJnaW4tcmlnaHQ6LjI1cmVtO3BhZGRpbmctbGVmdDoxcmVtO2xpc3Qtc3R5bGUtdHlwZTpkaXNjfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCBsaTpub3QoOmZpcnN0LWNoaWxkKSwubWVzc2FnZS1jb250ZW50LWh0bWwgbGk+dWwsLm1lc3NhZ2UtY29udGVudC1odG1sIGxpPm9se21hcmdpbi10b3A6LjVyZW19Lm1lc3NhZ2UtY29udGVudC1odG1sIG9se21hcmdpbi1yaWdodDouMjVyZW07cGFkZGluZy1sZWZ0OjFyZW07bGlzdC1zdHlsZS10eXBlOmRlY2ltYWx9Lm1lc3NhZ2UtY29udGVudC1odG1sIGF7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5tZXNzYWdlLWNvbnRlbnQtaHRtbCAqe3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9Lm1lc3NhZ2UtY29udGVudC10ZXh0LnN2ZWx0ZS1uZmIweW17b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO3dvcmQtYnJlYWs6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0ubWVzc2FnZS1jb250ZW50LXRleHQgYXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9Lm1lc3NhZ2UtY29udGVudC10ZXh0IGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmF2YXRhci1ncm91cC1pdGVtLnN2ZWx0ZS15ZnhhN3Q6Zmlyc3Qtb2YtdHlwZXt6LWluZGV4OjN9LmF2YXRhci1ncm91cC1pdGVtLnN2ZWx0ZS15ZnhhN3Q6bnRoLW9mLXR5cGUoMil7ei1pbmRleDoyfS5hdmF0YXItZ3JvdXAtaXRlbS5zdmVsdGUteWZ4YTd0Om50aC1vZi10eXBlKDMpe3otaW5kZXg6MX0uYXZhdGFyLXNtLnN2ZWx0ZS15ZnhhN3Q6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LTEycHh9LmF2YXRhci1tZC5zdmVsdGUteWZ4YTd0Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0Oi0xNnB4fS5hdmF0YXItbGcuc3ZlbHRlLXlmeGE3dDpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDotMjJweH0ucmVtb3ZlSWNvbi5zdmVsdGUtMTFmM2Jkd3tvcGFjaXR5OjA7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uYXR0YWNobWVudFdyYXBwZXIuc3ZlbHRlLTExZjNiZHc6aG92ZXIgLnJlbW92ZUljb246d2hlcmUoLnN2ZWx0ZS0xMWYzYmR3KSwuYXR0YWNobWVudFdyYXBwZXIuc3ZlbHRlLTExZjNiZHc6Zm9jdXMtd2l0aGluIC5yZW1vdmVJY29uOndoZXJlKC5zdmVsdGUtMTFmM2Jkdyl7b3BhY2l0eToxfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2V7b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO3Njcm9sbGJhci13aWR0aDpub25lO2ZsZXg6MTttYXgtaGVpZ2h0OjMycHg7bWFyZ2luLXRvcDouNzVyZW07bWFyZ2luLWJvdHRvbTouNzVyZW07ZGlzcGxheTpncmlkO292ZXJmbG93OmhpZGRlbiBhdXRvfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0udGV4dGFyZWEtY29udGFpbmVyLXJlc2l6YWJsZS5zdmVsdGUtMXRsOWxjZXttYXgtaGVpZ2h0OjEyNXB4fS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6YWZ0ZXJ7Y29udGVudDphdHRyKGRhdGEtdGV4dGFyZWEtdmFsdWUpICIgIjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt2aXNpYmlsaXR5OmhpZGRlbjtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC1icmVhazpicmVhay13b3JkfS50ZXh0YXJlYS1jb250YWluZXIuc3ZlbHRlLTF0bDlsY2U6YWZ0ZXIsdGV4dGFyZWEuc3ZlbHRlLTF0bDlsY2V7Zm9udC1zaXplOmluaGVyaXQ7Z3JpZC1hcmVhOjEvMS8yLzI7bWFyZ2luLWxlZnQ6MXJlbTttYXJnaW4tcmlnaHQ6Ljc1cmVtfXRleHRhcmVhLnN2ZWx0ZS0xdGw5bGNlOjpwbGFjZWhvbGRlcnt3b3JkLWJyZWFrOmJyZWFrLWFsbDtvdmVyZmxvdzpoaWRkZW59ZW0tZW1vamktcGlja2Vyey0tYm9yZGVyLXJhZGl1czoxMnB4Oy0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1jb2xvcjpyZ2IoMjI2IDIzMiAyNDAvdmFyKC0tdW4tYm9yZGVyLW9wYWNpdHkpKTtib3JkZXItcmFkaXVzOi43NXJlbTt3aWR0aDoxMDAlO2hlaWdodDo0MDBweDttYXgtaGVpZ2h0Ojgwdmg7cGFkZGluZy10b3A6LjI1cmVtO2JveC1zaGFkb3c6MCAxcHggMTVweCAxcHggIzAwMDAwMDFmfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em97LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjI5IDIzMSAyMzUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIDtib3JkZXItcmFkaXVzOjk5OTlweDt3aWR0aDoyLjc1cmVtO2hlaWdodDoxLjVyZW07dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2U7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em86Zm9jdXN7b3V0bGluZS1vZmZzZXQ6MnB4O291dGxpbmU6MnB4IHNvbGlkICMwMDAwfS5zd2l0Y2guc3ZlbHRlLTF5emZ6em86YWZ0ZXJ7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpOy0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0NSAyNDUgMjQ1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSA7Y29udGVudDoiIjtib3JkZXItcmFkaXVzOjk5OTlweDt3aWR0aDoxLjI1cmVtO2hlaWdodDoxLjI1cmVtO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O2xlZnQ6MnB4fS5zd2l0Y2guY2hlY2tlZC5zdmVsdGUtMXl6Znp6b3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKSB9LnN3aXRjaC5jaGVja2VkLnN2ZWx0ZS0xeXpmenpvOmFmdGVyey0tdW4tdHJhbnNsYXRlLXg6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCh2YXIoLS11bi10cmFuc2xhdGUteCkpIHRyYW5zbGF0ZVkodmFyKC0tdW4tdHJhbnNsYXRlLXkpKSB0cmFuc2xhdGVaKHZhcigtLXVuLXRyYW5zbGF0ZS16KSkgcm90YXRlKHZhcigtLXVuLXJvdGF0ZSkpIHJvdGF0ZVgodmFyKC0tdW4tcm90YXRlLXgpKSByb3RhdGVZKHZhcigtLXVuLXJvdGF0ZS15KSkgcm90YXRlWih2YXIoLS11bi1yb3RhdGUteikpIHNrZXdYKHZhcigtLXVuLXNrZXcteCkpIHNrZXdZKHZhcigtLXVuLXNrZXcteSkpIHNjYWxlWCh2YXIoLS11bi1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXVuLXNjYWxlLXkpKSBzY2FsZVoodmFyKC0tdW4tc2NhbGUteikpOy0tdW4tYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0NSAyNDUgMjQ1L3ZhcigtLXVuLWJnLW9wYWNpdHkpKSB9LmludmFsaWQuc3ZlbHRlLTEyZjRjMWcsLmludmFsaWQuc3ZlbHRlLTE5bTN1Y3l7LS11bi1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMjM5IDY4IDY4L3ZhcigtLXVuLWJvcmRlci1vcGFjaXR5KSl9c2VsZWN0LnN2ZWx0ZS04aDVycTR7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMjAgMjAnJTNFJTNDcGF0aCBzdHJva2U9JyUyMzZCNzI4MCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzEuNScgZD0nbTYgOCA0IDQgNC00Jy8lM0UlM0Mvc3ZnJTNFIik7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAuNXJlbSBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxLjVlbSAxLjVlbX0uaW52YWxpZC5zdmVsdGUtOGg1cnE0ey0tdW4tYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDIzOSA2OCA2OC92YXIoLS11bi1ib3JkZXItb3BhY2l0eSkpfS5pY29uLnN2ZWx0ZS0xcnNhMnF2e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pIDtjb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1jb250ZW50KSA7Ym9yZGVyLXJhZGl1czoxLjVyZW07cGFkZGluZzouNXJlbTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uZHJhd2VyLWJ1dHRvbi5zdmVsdGUtajZleHEwe3RleHQtYWxpZ246bGVmdDtib3JkZXItcmFkaXVzOi41cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3BhZGRpbmc6LjVyZW07dHJhbnNpdGlvbjpjb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGJhY2tncm91bmQtY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxib3JkZXItY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSx0ZXh0LWRlY29yYXRpb24tY29sb3IgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxmaWxsIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSksc3Ryb2tlIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7ZGlzcGxheTpmbGV4fS5kcmF3ZXItYnV0dG9uLnN2ZWx0ZS1qNmV4cTA6aG92ZXJ7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0uZHJhd2VyLWJ1dHRvbi1kaXNhYmxlZC5zdmVsdGUtajZleHEwe3RleHQtYWxpZ246bGVmdDtvcGFjaXR5Oi4zO2JvcmRlci1yYWRpdXM6LjVyZW07YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzouNXJlbTtkaXNwbGF5OmZsZXh9LmRyYXdlci1idXR0b24tZGlzYWJsZWQuc3ZlbHRlLWo2ZXhxMDpob3ZlcntjdXJzb3I6bm90LWFsbG93ZWR9LmRyYXdlci1zd2l0Y2guc3ZlbHRlLTFqZXN4dGN7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1yYWRpdXM6LjVyZW07YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzouNXJlbTt0cmFuc2l0aW9uOmNvbG9yIDc1bXMgY3ViaWMtYmV6aWVyKC40LDAsLjIsMSksYmFja2dyb3VuZC1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGJvcmRlci1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLHRleHQtZGVjb3JhdGlvbi1jb2xvciA3NW1zIGN1YmljLWJlemllciguNCwwLC4yLDEpLGZpbGwgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxzdHJva2UgNzVtcyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtkaXNwbGF5OmZsZXh9LmRyYXdlci1zd2l0Y2guc3ZlbHRlLTFqZXN4dGM6aG92ZXJ7LS11bi1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdW4tYmctb3BhY2l0eSkpIH0ubWVzc2FnZS1jb250ZW50LnN2ZWx0ZS0xZ2Z2aGk2e292ZXJmbG93LXdyYXA6YnJlYWstd29yZDt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXB9Lm1lc3NhZ2UtY29udGVudC1sZWZ0LnN2ZWx0ZS0xZ2Z2aGk2e2JvcmRlci1yYWRpdXM6LjI1cmVtIDEuNXJlbSAxLjVyZW0gLjI1cmVtfS5tZXNzYWdlLWNvbnRlbnQtbGVmdC1maXJzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjEuNXJlbX0ubWVzc2FnZS1jb250ZW50LWxlZnQtbGFzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjEuNXJlbX0ubWVzc2FnZS1jb250ZW50LXJpZ2h0LnN2ZWx0ZS0xZ2Z2aGk2e2JvcmRlci1yYWRpdXM6MS41cmVtIC4yNXJlbSAuMjVyZW0gMS41cmVtfS5tZXNzYWdlLWNvbnRlbnQtcmlnaHQtZmlyc3Quc3ZlbHRlLTFnZnZoaTZ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MS41cmVtfS5tZXNzYWdlLWNvbnRlbnQtcmlnaHQtbGFzdC5zdmVsdGUtMWdmdmhpNntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoxLjVyZW19LmNvdW50LWFuaW1hdGUuc3ZlbHRlLTIyOGM3bnthbmltYXRpb246LjJzIGN1YmljLWJlemllciguNCwyLC42LDEpIHN2ZWx0ZS0yMjhjN24tcG9wLXNjYWxlfUBrZXlmcmFtZXMgc3ZlbHRlLTIyOGM3bi1wb3Atc2NhbGV7MCV7dHJhbnNmb3JtOnNjYWxlKDEpfTUwJXt0cmFuc2Zvcm06c2NhbGUoMS4xKX10b3t0cmFuc2Zvcm06c2NhbGUoMSl9fQovKiR2aXRlJDoxKi8="}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/fontawesome-all.min.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.773Z","timestamp":1785159464773,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/fontawesome-all.min.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 12347\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":59191,"size_decoded":12657,"mime_type":"text/css","magic":"ASCII text, with very long lines (59005)","md5":"0e3b42e625aa287d36bafdc07ff2c5bd","sha1":"fba031df58034b18b0bbdaea4eb56dd363d0f4ef","sha256":"9b1099a51b5b0b337641980e5d42c36764fb553eaf5630a14660d7498d39a40d","sha512":"0e706f3a328609b155f6dbcde639e1aa868c93f5edb9343a6f6191e9b0f342fcba99bded66a83419e75b522fe924d0ba353f131b24acf87a3a6364a582c35c09","ssdeep":"768:PEh31IPiyXNq4YxBowbgJlkwF//zMQyYJYX9Bf7VSzR:PE0PxXE4YXJgndFTfy9lQd","tlshash":"1643fbb8e54c01cab732c44bef42b2bc61b6f73de5914d95f00e591c2ad26a811c5fba","first_seen":"2026-02-14T04:59:18.797795Z","last_seen":"2026-07-27T13:38:47.768066Z","times_seen":5,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuNCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbQogKiBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKQogKi8KLmZhLC5mYWIsLmZhZCwuZmFsLC5mYXIsLmZhc3stbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO3RleHQtcmVuZGVyaW5nOmF1dG87bGluZS1oZWlnaHQ6MX0uZmEtbGd7Zm9udC1zaXplOjEuMzMzMzNlbTtsaW5lLWhlaWdodDouNzVlbTt2ZXJ0aWNhbC1hbGlnbjotLjA2NjdlbX0uZmEteHN7Zm9udC1zaXplOi43NWVtfS5mYS1zbXtmb250LXNpemU6Ljg3NWVtfS5mYS0xeHtmb250LXNpemU6MWVtfS5mYS0yeHtmb250LXNpemU6MmVtfS5mYS0zeHtmb250LXNpemU6M2VtfS5mYS00eHtmb250LXNpemU6NGVtfS5mYS01eHtmb250LXNpemU6NWVtfS5mYS02eHtmb250LXNpemU6NmVtfS5mYS03eHtmb250LXNpemU6N2VtfS5mYS04eHtmb250LXNpemU6OGVtfS5mYS05eHtmb250LXNpemU6OWVtfS5mYS0xMHh7Zm9udC1zaXplOjEwZW19LmZhLWZ3e3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEuMjVlbX0uZmEtdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luLWxlZnQ6Mi41ZW07cGFkZGluZy1sZWZ0OjB9LmZhLXVsPmxpe3Bvc2l0aW9uOnJlbGF0aXZlfS5mYS1saXtsZWZ0Oi0yZW07cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MmVtO2xpbmUtaGVpZ2h0OmluaGVyaXR9LmZhLWJvcmRlcntib3JkZXI6LjA4ZW0gc29saWQgI2VlZTtib3JkZXItcmFkaXVzOi4xZW07cGFkZGluZzouMmVtIC4yNWVtIC4xNWVtfS5mYS1wdWxsLWxlZnR7ZmxvYXQ6bGVmdH0uZmEtcHVsbC1yaWdodHtmbG9hdDpyaWdodH0uZmEuZmEtcHVsbC1sZWZ0LC5mYWIuZmEtcHVsbC1sZWZ0LC5mYWwuZmEtcHVsbC1sZWZ0LC5mYXIuZmEtcHVsbC1sZWZ0LC5mYXMuZmEtcHVsbC1sZWZ0e21hcmdpbi1yaWdodDouM2VtfS5mYS5mYS1wdWxsLXJpZ2h0LC5mYWIuZmEtcHVsbC1yaWdodCwuZmFsLmZhLXB1bGwtcmlnaHQsLmZhci5mYS1wdWxsLXJpZ2h0LC5mYXMuZmEtcHVsbC1yaWdodHttYXJnaW4tbGVmdDouM2VtfS5mYS1zcGluey13ZWJraXQtYW5pbWF0aW9uOmZhLXNwaW4gMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjpmYS1zcGluIDJzIGxpbmVhciBpbmZpbml0ZX0uZmEtcHVsc2V7LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZTthbmltYXRpb246ZmEtc3BpbiAxcyBzdGVwcyg4KSBpbmZpbml0ZX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LmZhLXJvdGF0ZS05MHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uZmEtcm90YXRlLTE4MHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yKSI7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5mYS1yb3RhdGUtMjcwey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpIjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LmZhLWZsaXAtaG9yaXpvbnRhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0wLCBtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWCgtMSk7dHJhbnNmb3JtOnNjYWxlWCgtMSl9LmZhLWZsaXAtdmVydGljYWx7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVZKC0xKTt0cmFuc2Zvcm06c2NhbGVZKC0xKX0uZmEtZmxpcC1ib3RoLC5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCwuZmEtZmxpcC12ZXJ0aWNhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLCBtaXJyb3I9MSkifS5mYS1mbGlwLWJvdGgsLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2Fsey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xKTt0cmFuc2Zvcm06c2NhbGUoLTEpfTpyb290IC5mYS1mbGlwLWJvdGgsOnJvb3QgLmZhLWZsaXAtaG9yaXpvbnRhbCw6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCw6cm9vdCAuZmEtcm90YXRlLTkwLDpyb290IC5mYS1yb3RhdGUtMTgwLDpyb290IC5mYS1yb3RhdGUtMjcwey13ZWJraXQtZmlsdGVyOm5vbmU7ZmlsdGVyOm5vbmV9LmZhLXN0YWNre2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyZW07bGluZS1oZWlnaHQ6MmVtO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyLjVlbX0uZmEtc3RhY2stMXgsLmZhLXN0YWNrLTJ4e2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlfS5mYS1zdGFjay0xeHtsaW5lLWhlaWdodDppbmhlcml0fS5mYS1zdGFjay0yeHtmb250LXNpemU6MmVtfS5mYS1pbnZlcnNle2NvbG9yOiNmZmZ9LmZhLTUwMHB4OmJlZm9yZXtjb250ZW50OiJcZjI2ZSJ9LmZhLWFjY2Vzc2libGUtaWNvbjpiZWZvcmV7Y29udGVudDoiXGYzNjgifS5mYS1hY2N1c29mdDpiZWZvcmV7Y29udGVudDoiXGYzNjkifS5mYS1hY3F1aXNpdGlvbnMtaW5jb3Jwb3JhdGVkOmJlZm9yZXtjb250ZW50OiJcZjZhZiJ9LmZhLWFkOmJlZm9yZXtjb250ZW50OiJcZjY0MSJ9LmZhLWFkZHJlc3MtYm9vazpiZWZvcmV7Y29udGVudDoiXGYyYjkifS5mYS1hZGRyZXNzLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmJiIn0uZmEtYWRqdXN0OmJlZm9yZXtjb250ZW50OiJcZjA0MiJ9LmZhLWFkbjpiZWZvcmV7Y29udGVudDoiXGYxNzAifS5mYS1hZHZlcnNhbDpiZWZvcmV7Y29udGVudDoiXGYzNmEifS5mYS1hZmZpbGlhdGV0aGVtZTpiZWZvcmV7Y29udGVudDoiXGYzNmIifS5mYS1haXItZnJlc2hlbmVyOmJlZm9yZXtjb250ZW50OiJcZjVkMCJ9LmZhLWFpcmJuYjpiZWZvcmV7Y29udGVudDoiXGY4MzQifS5mYS1hbGdvbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2YyJ9LmZhLWFsaWduLWNlbnRlcjpiZWZvcmV7Y29udGVudDoiXGYwMzcifS5mYS1hbGlnbi1qdXN0aWZ5OmJlZm9yZXtjb250ZW50OiJcZjAzOSJ9LmZhLWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM2In0uZmEtYWxpZ24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM4In0uZmEtYWxpcGF5OmJlZm9yZXtjb250ZW50OiJcZjY0MiJ9LmZhLWFsbGVyZ2llczpiZWZvcmV7Y29udGVudDoiXGY0NjEifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmMifS5mYS1hbWJ1bGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMmEzIn0uZmEtYW1pbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2ZCJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWFuZ2VsbGlzdDpiZWZvcmV7Y29udGVudDoiXGYyMDkifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAxIn0uZmEtYW5nbGUtZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwMiJ9LmZhLWFuZ2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTA3In0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hbmdyeTpiZWZvcmV7Y29udGVudDoiXGY1NTYifS5mYS1hbmdyeWNyZWF0aXZlOmJlZm9yZXtjb250ZW50OiJcZjM2ZSJ9LmZhLWFuZ3VsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIwIn0uZmEtYW5raDpiZWZvcmV7Y29udGVudDoiXGY2NDQifS5mYS1hcHAtc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzZmIn0uZmEtYXBwLXN0b3JlLWlvczpiZWZvcmV7Y29udGVudDoiXGYzNzAifS5mYS1hcHBlcjpiZWZvcmV7Y29udGVudDoiXGYzNzEifS5mYS1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxNzkifS5mYS1hcHBsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWQxIn0uZmEtYXBwbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZjQxNSJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYXJjaHdheTpiZWZvcmV7Y29udGVudDoiXGY1NTcifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU4In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1OSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVhIn0uZmEtYXJyb3ctYWx0LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNWIifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYWIifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYwNjIifS5mYS1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjBiMiJ9LmZhLWFycm93cy1hbHQtaDpiZWZvcmV7Y29udGVudDoiXGYzMzcifS5mYS1hcnJvd3MtYWx0LXY6YmVmb3Jle2NvbnRlbnQ6IlxmMzM4In0uZmEtYXJ0c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGY3N2EifS5mYS1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM6YmVmb3Jle2NvbnRlbnQ6IlxmMmEyIn0uZmEtYXN0ZXJpc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDY5In0uZmEtYXN5bW1ldHJpazpiZWZvcmV7Y29udGVudDoiXGYzNzIifS5mYS1hdDpiZWZvcmV7Y29udGVudDoiXGYxZmEifS5mYS1hdGxhczpiZWZvcmV7Y29udGVudDoiXGY1NTgifS5mYS1hdGxhc3NpYW46YmVmb3Jle2NvbnRlbnQ6IlxmNzdiIn0uZmEtYXRvbTpiZWZvcmV7Y29udGVudDoiXGY1ZDIifS5mYS1hdWRpYmxlOmJlZm9yZXtjb250ZW50OiJcZjM3MyJ9LmZhLWF1ZGlvLWRlc2NyaXB0aW9uOmJlZm9yZXtjb250ZW50OiJcZjI5ZSJ9LmZhLWF1dG9wcmVmaXhlcjpiZWZvcmV7Y29udGVudDoiXGY0MWMifS5mYS1hdmlhbmV4OmJlZm9yZXtjb250ZW50OiJcZjM3NCJ9LmZhLWF2aWF0bzpiZWZvcmV7Y29udGVudDoiXGY0MjEifS5mYS1hd2FyZDpiZWZvcmV7Y29udGVudDoiXGY1NTkifS5mYS1hd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzc1In0uZmEtYmFieTpiZWZvcmV7Y29udGVudDoiXGY3N2MifS5mYS1iYWJ5LWNhcnJpYWdlOmJlZm9yZXtjb250ZW50OiJcZjc3ZCJ9LmZhLWJhY2tzcGFjZTpiZWZvcmV7Y29udGVudDoiXGY1NWEifS5mYS1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGEifS5mYS1iYWNvbjpiZWZvcmV7Y29udGVudDoiXGY3ZTUifS5mYS1iYWN0ZXJpYTpiZWZvcmV7Y29udGVudDoiXGUwNTkifS5mYS1iYWN0ZXJpdW06YmVmb3Jle2NvbnRlbnQ6IlxlMDVhIn0uZmEtYmFoYWk6YmVmb3Jle2NvbnRlbnQ6IlxmNjY2In0uZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmV7Y29udGVudDoiXGYyNGUifS5mYS1iYWxhbmNlLXNjYWxlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTE1In0uZmEtYmFsYW5jZS1zY2FsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGY1MTYifS5mYS1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmMDVlIn0uZmEtYmFuZC1haWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDYyIn0uZmEtYmFuZGNhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ1In0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS1iYXJzOmJlZm9yZXtjb250ZW50OiJcZjBjOSJ9LmZhLWJhc2ViYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDMzIn0uZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNCJ9LmZhLWJhdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMmNkIn0uZmEtYmF0dGVyeS1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyNDQifS5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjQwIn0uZmEtYmF0dGVyeS1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI0MiJ9LmZhLWJhdHRlcnktcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDMifS5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZXtjb250ZW50OiJcZjI0MSJ9LmZhLWJhdHRsZS1uZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmODM1In0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWJlZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZjIn0uZmEtYmVoYW5jZTpiZWZvcmV7Y29udGVudDoiXGYxYjQifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjUifS5mYS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjBmMyJ9LmZhLWJlbGwtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY2In0uZmEtYmV6aWVyLWN1cnZlOmJlZm9yZXtjb250ZW50OiJcZjU1YiJ9LmZhLWJpYmxlOmJlZm9yZXtjb250ZW50OiJcZjY0NyJ9LmZhLWJpY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjA2In0uZmEtYmlraW5nOmJlZm9yZXtjb250ZW50OiJcZjg0YSJ9LmZhLWJpbW9iamVjdDpiZWZvcmV7Y29udGVudDoiXGYzNzgifS5mYS1iaW5vY3VsYXJzOmJlZm9yZXtjb250ZW50OiJcZjFlNSJ9LmZhLWJpb2hhemFyZDpiZWZvcmV7Y29udGVudDoiXGY3ODAifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWJpdGJ1Y2tldDpiZWZvcmV7Y29udGVudDoiXGYxNzEifS5mYS1iaXRjb2luOmJlZm9yZXtjb250ZW50OiJcZjM3OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtYmxhY2stdGllOmJlZm9yZXtjb250ZW50OiJcZjI3ZSJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtYmxlbmRlcjpiZWZvcmV7Y29udGVudDoiXGY1MTcifS5mYS1ibGVuZGVyLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjZiNiJ9LmZhLWJsaW5kOmJlZm9yZXtjb250ZW50OiJcZjI5ZCJ9LmZhLWJsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNzgxIn0uZmEtYmxvZ2dlcjpiZWZvcmV7Y29udGVudDoiXGYzN2MifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMyIn0uZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1ib21iOmJlZm9yZXtjb250ZW50OiJcZjFlMiJ9LmZhLWJvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNWQ3In0uZmEtYm9uZzpiZWZvcmV7Y29udGVudDoiXGY1NWMifS5mYS1ib29rOmJlZm9yZXtjb250ZW50OiJcZjAyZCJ9LmZhLWJvb2stZGVhZDpiZWZvcmV7Y29udGVudDoiXGY2YjcifS5mYS1ib29rLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmN2U2In0uZmEtYm9vay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjUxOCJ9LmZhLWJvb2stcmVhZGVyOmJlZm9yZXtjb250ZW50OiJcZjVkYSJ9LmZhLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjAyZSJ9LmZhLWJvb3RzdHJhcDpiZWZvcmV7Y29udGVudDoiXGY4MzYifS5mYS1ib3JkZXItYWxsOmJlZm9yZXtjb250ZW50OiJcZjg0YyJ9LmZhLWJvcmRlci1ub25lOmJlZm9yZXtjb250ZW50OiJcZjg1MCJ9LmZhLWJvcmRlci1zdHlsZTpiZWZvcmV7Y29udGVudDoiXGY4NTMifS5mYS1ib3dsaW5nLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM2In0uZmEtYm94OmJlZm9yZXtjb250ZW50OiJcZjQ2NiJ9LmZhLWJveC1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjQ5ZSJ9LmZhLWJveC10aXNzdWU6YmVmb3Jle2NvbnRlbnQ6IlxlMDViIn0uZmEtYm94ZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDY4In0uZmEtYnJhaWxsZTpiZWZvcmV7Y29udGVudDoiXGYyYTEifS5mYS1icmFpbjpiZWZvcmV7Y29udGVudDoiXGY1ZGMifS5mYS1icmVhZC1zbGljZTpiZWZvcmV7Y29udGVudDoiXGY3ZWMifS5mYS1icmllZmNhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGIxIn0uZmEtYnJpZWZjYXNlLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDY5In0uZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZXtjb250ZW50OiJcZjUxOSJ9LmZhLWJyb29tOmJlZm9yZXtjb250ZW50OiJcZjUxYSJ9LmZhLWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjU1ZCJ9LmZhLWJ0YzpiZWZvcmV7Y29udGVudDoiXGYxNWEifS5mYS1idWZmZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODM3In0uZmEtYnVnOmJlZm9yZXtjb250ZW50OiJcZjE4OCJ9LmZhLWJ1aWxkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9LmZhLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZjBhMSJ9LmZhLWJ1bGxzZXllOmJlZm9yZXtjb250ZW50OiJcZjE0MCJ9LmZhLWJ1cm46YmVmb3Jle2NvbnRlbnQ6IlxmNDZhIn0uZmEtYnVyb21vYmVsZXhwZXJ0ZTpiZWZvcmV7Y29udGVudDoiXGYzN2YifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnVzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NWUifS5mYS1idXNpbmVzcy10aW1lOmJlZm9yZXtjb250ZW50OiJcZjY0YSJ9LmZhLWJ1eS1uLWxhcmdlOmJlZm9yZXtjb250ZW50OiJcZjhhNiJ9LmZhLWJ1eXNlbGxhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMjBkIn0uZmEtY2FsY3VsYXRvcjpiZWZvcmV7Y29udGVudDoiXGYxZWMifS5mYS1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDoiXGYxMzMifS5mYS1jYWxlbmRhci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDczIn0uZmEtY2FsZW5kYXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjc0In0uZmEtY2FsZW5kYXItZGF5OmJlZm9yZXtjb250ZW50OiJcZjc4MyJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcxIn0uZmEtY2FsZW5kYXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjczIn0uZmEtY2FsZW5kYXItd2VlazpiZWZvcmV7Y29udGVudDoiXGY3ODQifS5mYS1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMDMwIn0uZmEtY2FtZXJhLXJldHJvOmJlZm9yZXtjb250ZW50OiJcZjA4MyJ9LmZhLWNhbXBncm91bmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmJiIn0uZmEtY2FuYWRpYW4tbWFwbGUtbGVhZjpiZWZvcmV7Y29udGVudDoiXGY3ODUifS5mYS1jYW5keS1jYW5lOmJlZm9yZXtjb250ZW50OiJcZjc4NiJ9LmZhLWNhbm5hYmlzOmJlZm9yZXtjb250ZW50OiJcZjU1ZiJ9LmZhLWNhcHN1bGVzOmJlZm9yZXtjb250ZW50OiJcZjQ2YiJ9LmZhLWNhcjpiZWZvcmV7Y29udGVudDoiXGYxYjkifS5mYS1jYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjVkZSJ9LmZhLWNhci1iYXR0ZXJ5OmJlZm9yZXtjb250ZW50OiJcZjVkZiJ9LmZhLWNhci1jcmFzaDpiZWZvcmV7Y29udGVudDoiXGY1ZTEifS5mYS1jYXItc2lkZTpiZWZvcmV7Y29udGVudDoiXGY1ZTQifS5mYS1jYXJhdmFuOmJlZm9yZXtjb250ZW50OiJcZjhmZiJ9LmZhLWNhcmV0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGQ3In0uZmEtY2FyZXQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwZDkifS5mYS1jYXJldC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwZGEifS5mYS1jYXJldC1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNTAifS5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxOTEifS5mYS1jYXJldC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0uZmEtY2FyZXQtc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1MSJ9LmZhLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkOCJ9LmZhLWNhcnJvdDpiZWZvcmV7Y29udGVudDoiXGY3ODcifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtY2FydC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjIxNyJ9LmZhLWNhc2gtcmVnaXN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzg4In0uZmEtY2F0OmJlZm9yZXtjb250ZW50OiJcZjZiZSJ9LmZhLWNjLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJkIn0uZmEtY2MtYW1leDpiZWZvcmV7Y29udGVudDoiXGYxZjMifS5mYS1jYy1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE2In0uZmEtY2MtZGluZXJzLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjRjIn0uZmEtY2MtZGlzY292ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWYyIn0uZmEtY2MtamNiOmJlZm9yZXtjb250ZW50OiJcZjI0YiJ9LmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1jYy12aXNhOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9LmZhLWNlbnRlcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzgwIn0uZmEtY2VudG9zOmJlZm9yZXtjb250ZW50OiJcZjc4OSJ9LmZhLWNlcnRpZmljYXRlOmJlZm9yZXtjb250ZW50OiJcZjBhMyJ9LmZhLWNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjZjMCJ9LmZhLWNoYWxrYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTFiIn0uZmEtY2hhbGtib2FyZC10ZWFjaGVyOmJlZm9yZXtjb250ZW50OiJcZjUxYyJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtY2hhcnQtYXJlYTpiZWZvcmV7Y29udGVudDoiXGYxZmUifS5mYS1jaGFydC1iYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDgwIn0uZmEtY2hhcnQtbGluZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifS5mYS1jaGFydC1waWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLWNoZWNrLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGY1NjAifS5mYS1jaGVjay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtY2hlZXNlOmJlZm9yZXtjb250ZW50OiJcZjdlZiJ9LmZhLWNoZXNzOmJlZm9yZXtjb250ZW50OiJcZjQzOSJ9LmZhLWNoZXNzLWJpc2hvcDpiZWZvcmV7Y29udGVudDoiXGY0M2EifS5mYS1jaGVzcy1ib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0M2MifS5mYS1jaGVzcy1raW5nOmJlZm9yZXtjb250ZW50OiJcZjQzZiJ9LmZhLWNoZXNzLWtuaWdodDpiZWZvcmV7Y29udGVudDoiXGY0NDEifS5mYS1jaGVzcy1wYXduOmJlZm9yZXtjb250ZW50OiJcZjQ0MyJ9LmZhLWNoZXNzLXF1ZWVuOmJlZm9yZXtjb250ZW50OiJcZjQ0NSJ9LmZhLWNoZXNzLXJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDQ3In0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNzgifS5mYS1jaGV2cm9uLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUzIn0uZmEtY2hldnJvbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNTQifS5mYS1jaGV2cm9uLXVwOmJlZm9yZXtjb250ZW50OiJcZjA3NyJ9LmZhLWNoaWxkOmJlZm9yZXtjb250ZW50OiJcZjFhZSJ9LmZhLWNocm9tZTpiZWZvcmV7Y29udGVudDoiXGYyNjgifS5mYS1jaHJvbWVjYXN0OmJlZm9yZXtjb250ZW50OiJcZjgzOCJ9LmZhLWNodXJjaDpiZWZvcmV7Y29udGVudDoiXGY1MWQifS5mYS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTExIn0uZmEtY2lyY2xlLW5vdGNoOmJlZm9yZXtjb250ZW50OiJcZjFjZSJ9LmZhLWNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmNjRmIn0uZmEtY2xpbmljLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmN2YyIn0uZmEtY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjMyOCJ9LmZhLWNsaXBib2FyZC1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0NmMifS5mYS1jbGlwYm9hcmQtbGlzdDpiZWZvcmV7Y29udGVudDoiXGY0NmQifS5mYS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgxIn0uZmEtY2xvdWQtbWVhdGJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNzNiIn0uZmEtY2xvdWQtbW9vbjpiZWZvcmV7Y29udGVudDoiXGY2YzMifS5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNzNjIn0uZmEtY2xvdWQtcmFpbjpiZWZvcmV7Y29udGVudDoiXGY3M2QifS5mYS1jbG91ZC1zaG93ZXJzLWhlYXZ5OmJlZm9yZXtjb250ZW50OiJcZjc0MCJ9LmZhLWNsb3VkLXN1bjpiZWZvcmV7Y29udGVudDoiXGY2YzQifS5mYS1jbG91ZC1zdW4tcmFpbjpiZWZvcmV7Y29udGVudDoiXGY3NDMifS5mYS1jbG91ZC11cGxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MiJ9LmZhLWNsb3VkZmxhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDdkIn0uZmEtY2xvdWRzY2FsZTpiZWZvcmV7Y29udGVudDoiXGYzODMifS5mYS1jbG91ZHNtaXRoOmJlZm9yZXtjb250ZW50OiJcZjM4NCJ9LmZhLWNsb3VkdmVyc2lmeTpiZWZvcmV7Y29udGVudDoiXGYzODUifS5mYS1jb2NrdGFpbDpiZWZvcmV7Y29udGVudDoiXGY1NjEifS5mYS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjEyMSJ9LmZhLWNvZGUtYnJhbmNoOmJlZm9yZXtjb250ZW50OiJcZjEyNiJ9LmZhLWNvZGVwZW46YmVmb3Jle2NvbnRlbnQ6IlxmMWNiIn0uZmEtY29kaWVwaWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg0In0uZmEtY29mZmVlOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWNvZzpiZWZvcmV7Y29udGVudDoiXGYwMTMifS5mYS1jb2dzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWNvaW5zOmJlZm9yZXtjb250ZW50OiJcZjUxZSJ9LmZhLWNvbHVtbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGRiIn0uZmEtY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYwNzUifS5mYS1jb21tZW50LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyN2EifS5mYS1jb21tZW50LWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTEifS5mYS1jb21tZW50LWRvdHM6YmVmb3Jle2NvbnRlbnQ6IlxmNGFkIn0uZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdmNSJ9LmZhLWNvbW1lbnQtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNGIzIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtY29tbWVudHMtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MyJ9LmZhLWNvbXBhY3QtZGlzYzpiZWZvcmV7Y29udGVudDoiXGY1MWYifS5mYS1jb21wYXNzOmJlZm9yZXtjb250ZW50OiJcZjE0ZSJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLWNvbXByZXNzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MjIifS5mYS1jb21wcmVzcy1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjc4YyJ9LmZhLWNvbmNpZXJnZS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjU2MiJ9LmZhLWNvbmZsdWVuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNzhkIn0uZmEtY29ubmVjdGRldmVsb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMjBlIn0uZmEtY29udGFvOmJlZm9yZXtjb250ZW50OiJcZjI2ZCJ9LmZhLWNvb2tpZTpiZWZvcmV7Y29udGVudDoiXGY1NjMifS5mYS1jb29raWUtYml0ZTpiZWZvcmV7Y29udGVudDoiXGY1NjQifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jb3R0b24tYnVyZWF1OmJlZm9yZXtjb250ZW50OiJcZjg5ZSJ9LmZhLWNvdWNoOmJlZm9yZXtjb250ZW50OiJcZjRiOCJ9LmZhLWNwYW5lbDpiZWZvcmV7Y29udGVudDoiXGYzODgifS5mYS1jcmVhdGl2ZS1jb21tb25zOmJlZm9yZXtjb250ZW50OiJcZjI1ZSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3Jle2NvbnRlbnQ6IlxmNGU3In0uZmEtY3JlYXRpdmUtY29tbW9ucy1uYzpiZWZvcmV7Y29udGVudDoiXGY0ZTgifS5mYS1jcmVhdGl2ZS1jb21tb25zLW5jLWV1OmJlZm9yZXtjb250ZW50OiJcZjRlOSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3Jle2NvbnRlbnQ6IlxmNGVhIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1uZDpiZWZvcmV7Y29udGVudDoiXGY0ZWIifS5mYS1jcmVhdGl2ZS1jb21tb25zLXBkOmJlZm9yZXtjb250ZW50OiJcZjRlYyJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjRlZCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtcmVtaXg6YmVmb3Jle2NvbnRlbnQ6IlxmNGVlIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1zYTpiZWZvcmV7Y29udGVudDoiXGY0ZWYifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZXtjb250ZW50OiJcZjRmMCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmctcGx1czpiZWZvcmV7Y29udGVudDoiXGY0ZjEifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjRmMiJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtemVybzpiZWZvcmV7Y29udGVudDoiXGY0ZjMifS5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jcml0aWNhbC1yb2xlOmJlZm9yZXtjb250ZW50OiJcZjZjOSJ9LmZhLWNyb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTI1In0uZmEtY3JvcC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTY1In0uZmEtY3Jvc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjU0In0uZmEtY3Jvc3NoYWlyczpiZWZvcmV7Y29udGVudDoiXGYwNWIifS5mYS1jcm93OmJlZm9yZXtjb250ZW50OiJcZjUyMCJ9LmZhLWNyb3duOmJlZm9yZXtjb250ZW50OiJcZjUyMSJ9LmZhLWNydXRjaDpiZWZvcmV7Y29udGVudDoiXGY3ZjcifS5mYS1jc3MzOmJlZm9yZXtjb250ZW50OiJcZjEzYyJ9LmZhLWNzczMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4YiJ9LmZhLWN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWIyIn0uZmEtY3ViZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWIzIn0uZmEtY3V0OmJlZm9yZXtjb250ZW50OiJcZjBjNCJ9LmZhLWN1dHRsZWZpc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMzhjIn0uZmEtZC1hbmQtZDpiZWZvcmV7Y29udGVudDoiXGYzOGQifS5mYS1kLWFuZC1kLWJleW9uZDpiZWZvcmV7Y29udGVudDoiXGY2Y2EifS5mYS1kYWlseW1vdGlvbjpiZWZvcmV7Y29udGVudDoiXGUwNTIifS5mYS1kYXNoY3ViZTpiZWZvcmV7Y29udGVudDoiXGYyMTAifS5mYS1kYXRhYmFzZTpiZWZvcmV7Y29udGVudDoiXGYxYzAifS5mYS1kZWFmOmJlZm9yZXtjb250ZW50OiJcZjJhNCJ9LmZhLWRlZXplcjpiZWZvcmV7Y29udGVudDoiXGUwNzcifS5mYS1kZWxpY2lvdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0uZmEtZGVtb2NyYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzQ3In0uZmEtZGVwbG95ZG9nOmJlZm9yZXtjb250ZW50OiJcZjM4ZSJ9LmZhLWRlc2twcm86YmVmb3Jle2NvbnRlbnQ6IlxmMzhmIn0uZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYxMDgifS5mYS1kZXY6YmVmb3Jle2NvbnRlbnQ6IlxmNmNjIn0uZmEtZGV2aWFudGFydDpiZWZvcmV7Y29udGVudDoiXGYxYmQifS5mYS1kaGFybWFjaGFrcmE6YmVmb3Jle2NvbnRlbnQ6IlxmNjU1In0uZmEtZGhsOmJlZm9yZXtjb250ZW50OiJcZjc5MCJ9LmZhLWRpYWdub3NlczpiZWZvcmV7Y29udGVudDoiXGY0NzAifS5mYS1kaWFzcG9yYTpiZWZvcmV7Y29udGVudDoiXGY3OTEifS5mYS1kaWNlOmJlZm9yZXtjb250ZW50OiJcZjUyMiJ9LmZhLWRpY2UtZDIwOmJlZm9yZXtjb250ZW50OiJcZjZjZiJ9LmZhLWRpY2UtZDY6YmVmb3Jle2NvbnRlbnQ6IlxmNmQxIn0uZmEtZGljZS1maXZlOmJlZm9yZXtjb250ZW50OiJcZjUyMyJ9LmZhLWRpY2UtZm91cjpiZWZvcmV7Y29udGVudDoiXGY1MjQifS5mYS1kaWNlLW9uZTpiZWZvcmV7Y29udGVudDoiXGY1MjUifS5mYS1kaWNlLXNpeDpiZWZvcmV7Y29udGVudDoiXGY1MjYifS5mYS1kaWNlLXRocmVlOmJlZm9yZXtjb250ZW50OiJcZjUyNyJ9LmZhLWRpY2UtdHdvOmJlZm9yZXtjb250ZW50OiJcZjUyOCJ9LmZhLWRpZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMWE2In0uZmEtZGlnaXRhbC1vY2VhbjpiZWZvcmV7Y29udGVudDoiXGYzOTEifS5mYS1kaWdpdGFsLXRhY2hvZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmNTY2In0uZmEtZGlyZWN0aW9uczpiZWZvcmV7Y29udGVudDoiXGY1ZWIifS5mYS1kaXNjb3JkOmJlZm9yZXtjb250ZW50OiJcZjM5MiJ9LmZhLWRpc2NvdXJzZTpiZWZvcmV7Y29udGVudDoiXGYzOTMifS5mYS1kaXNlYXNlOmJlZm9yZXtjb250ZW50OiJcZjdmYSJ9LmZhLWRpdmlkZTpiZWZvcmV7Y29udGVudDoiXGY1MjkifS5mYS1kaXp6eTpiZWZvcmV7Y29udGVudDoiXGY1NjcifS5mYS1kbmE6YmVmb3Jle2NvbnRlbnQ6IlxmNDcxIn0uZmEtZG9jaHViOmJlZm9yZXtjb250ZW50OiJcZjM5NCJ9LmZhLWRvY2tlcjpiZWZvcmV7Y29udGVudDoiXGYzOTUifS5mYS1kb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNmQzIn0uZmEtZG9sbGFyLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU1In0uZmEtZG9sbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDcyIn0uZmEtZG9sbHktZmxhdGJlZDpiZWZvcmV7Y29udGVudDoiXGY0NzQifS5mYS1kb25hdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNGI5In0uZmEtZG9vci1jbG9zZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTJhIn0uZmEtZG9vci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjUyYiJ9LmZhLWRvdC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTkyIn0uZmEtZG92ZTpiZWZvcmV7Y29udGVudDoiXGY0YmEifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1kcmFmdDJkaWdpdGFsOmJlZm9yZXtjb250ZW50OiJcZjM5NiJ9LmZhLWRyYWZ0aW5nLWNvbXBhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNTY4In0uZmEtZHJhZ29uOmJlZm9yZXtjb250ZW50OiJcZjZkNSJ9LmZhLWRyYXctcG9seWdvbjpiZWZvcmV7Y29udGVudDoiXGY1ZWUifS5mYS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYxN2QifS5mYS1kcmliYmJsZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzk3In0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1kcnVtOmJlZm9yZXtjb250ZW50OiJcZjU2OSJ9LmZhLWRydW0tc3RlZWxwYW46YmVmb3Jle2NvbnRlbnQ6IlxmNTZhIn0uZmEtZHJ1bXN0aWNrLWJpdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmQ3In0uZmEtZHJ1cGFsOmJlZm9yZXtjb250ZW50OiJcZjFhOSJ9LmZhLWR1bWJiZWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0YiJ9LmZhLWR1bXBzdGVyOmJlZm9yZXtjb250ZW50OiJcZjc5MyJ9LmZhLWR1bXBzdGVyLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNzk0In0uZmEtZHVuZ2VvbjpiZWZvcmV7Y29udGVudDoiXGY2ZDkifS5mYS1keWFsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMzk5In0uZmEtZWFybHliaXJkczpiZWZvcmV7Y29udGVudDoiXGYzOWEifS5mYS1lYmF5OmJlZm9yZXtjb250ZW50OiJcZjRmNCJ9LmZhLWVkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjgyIn0uZmEtZWRnZS1sZWdhY3k6YmVmb3Jle2NvbnRlbnQ6IlxlMDc4In0uZmEtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYwNDQifS5mYS1lZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmN2ZiIn0uZmEtZWplY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDUyIn0uZmEtZWxlbWVudG9yOmJlZm9yZXtjb250ZW50OiJcZjQzMCJ9LmZhLWVsbGlwc2lzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmV7Y29udGVudDoiXGYxNDIifS5mYS1lbGxvOmJlZm9yZXtjb250ZW50OiJcZjVmMSJ9LmZhLWVtYmVyOmJlZm9yZXtjb250ZW50OiJcZjQyMyJ9LmZhLWVtcGlyZTpiZWZvcmV7Y29udGVudDoiXGYxZDEifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWVudmVsb3BlLW9wZW4tdGV4dDpiZWZvcmV7Y29udGVudDoiXGY2NTgifS5mYS1lbnZlbG9wZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk5In0uZmEtZW52aXJhOmJlZm9yZXtjb250ZW50OiJcZjI5OSJ9LmZhLWVxdWFsczpiZWZvcmV7Y29udGVudDoiXGY1MmMifS5mYS1lcmFzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTJkIn0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWV0aGVyZXVtOmJlZm9yZXtjb250ZW50OiJcZjQyZSJ9LmZhLWV0aGVybmV0OmJlZm9yZXtjb250ZW50OiJcZjc5NiJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZXVyby1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1MyJ9LmZhLWV2ZXJub3RlOmJlZm9yZXtjb250ZW50OiJcZjgzOSJ9LmZhLWV4Y2hhbmdlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjIifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZhIn0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZXhwYW5kOmJlZm9yZXtjb250ZW50OiJcZjA2NSJ9LmZhLWV4cGFuZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDI0In0uZmEtZXhwYW5kLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzFlIn0uZmEtZXhwZWRpdGVkc3NsOmJlZm9yZXtjb250ZW50OiJcZjIzZSJ9LmZhLWV4dGVybmFsLWxpbmstYWx0OmJlZm9yZXtjb250ZW50OiJcZjM1ZCJ9LmZhLWV4dGVybmFsLWxpbmstc3F1YXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjAifS5mYS1leWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZlIn0uZmEtZXllLWRyb3BwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWZiIn0uZmEtZXllLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjA3MCJ9LmZhLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA5YSJ9LmZhLWZhY2Vib29rLWY6YmVmb3Jle2NvbnRlbnQ6IlxmMzllIn0uZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM5ZiJ9LmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODIifS5mYS1mYW46YmVmb3Jle2NvbnRlbnQ6IlxmODYzIn0uZmEtZmFudGFzeS1mbGlnaHQtZ2FtZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNmRjIn0uZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDkifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtZmF1Y2V0OmJlZm9yZXtjb250ZW50OiJcZTAwNSJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1mZWF0aGVyOmJlZm9yZXtjb250ZW50OiJcZjUyZCJ9LmZhLWZlYXRoZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjU2YiJ9LmZhLWZlZGV4OmJlZm9yZXtjb250ZW50OiJcZjc5NyJ9LmZhLWZlZG9yYTpiZWZvcmV7Y29udGVudDoiXGY3OTgifS5mYS1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTgyIn0uZmEtZmlnaHRlci1qZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGZiIn0uZmEtZmlnbWE6YmVmb3Jle2NvbnRlbnQ6IlxmNzk5In0uZmEtZmlsZTpiZWZvcmV7Y29udGVudDoiXGYxNWIifS5mYS1maWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxNWMifS5mYS1maWxlLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM2In0uZmEtZmlsZS1hdWRpbzpiZWZvcmV7Y29udGVudDoiXGYxYzcifS5mYS1maWxlLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM5In0uZmEtZmlsZS1jb250cmFjdDpiZWZvcmV7Y29udGVudDoiXGY1NmMifS5mYS1maWxlLWNzdjpiZWZvcmV7Y29udGVudDoiXGY2ZGQifS5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWZpbGUtZXhjZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWMzIn0uZmEtZmlsZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZlIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmYifS5mYS1maWxlLWludm9pY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNTcwIn0uZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY1NzEifS5mYS1maWxlLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDc3In0uZmEtZmlsZS1tZWRpY2FsLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0NzgifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBvd2VycG9pbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWM0In0uZmEtZmlsZS1wcmVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNTcyIn0uZmEtZmlsZS1zaWduYXR1cmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTczIn0uZmEtZmlsZS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc0In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsbDpiZWZvcmV7Y29udGVudDoiXGY1NzUifS5mYS1maWxsLWRyaXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTc2In0uZmEtZmlsbTpiZWZvcmV7Y29udGVudDoiXGYwMDgifS5mYS1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGIwIn0uZmEtZmluZ2VycHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc3In0uZmEtZmlyZTpiZWZvcmV7Y29udGVudDoiXGYwNmQifS5mYS1maXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY3ZTQifS5mYS1maXJlLWV4dGluZ3Vpc2hlcjpiZWZvcmV7Y29udGVudDoiXGYxMzQifS5mYS1maXJlZm94OmJlZm9yZXtjb250ZW50OiJcZjI2OSJ9LmZhLWZpcmVmb3gtYnJvd3NlcjpiZWZvcmV7Y29udGVudDoiXGUwMDcifS5mYS1maXJzdC1haWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDc5In0uZmEtZmlyc3Qtb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmIwIn0uZmEtZmlyc3Qtb3JkZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjUwYSJ9LmZhLWZpcnN0ZHJhZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ExIn0uZmEtZmlzaDpiZWZvcmV7Y29udGVudDoiXGY1NzgifS5mYS1maXN0LXJhaXNlZDpiZWZvcmV7Y29udGVudDoiXGY2ZGUifS5mYS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZjAyNCJ9LmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZXtjb250ZW50OiJcZjExZSJ9LmZhLWZsYWctdXNhOmJlZm9yZXtjb250ZW50OiJcZjc0ZCJ9LmZhLWZsYXNrOmJlZm9yZXtjb250ZW50OiJcZjBjMyJ9LmZhLWZsaWNrcjpiZWZvcmV7Y29udGVudDoiXGYxNmUifS5mYS1mbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDRkIn0uZmEtZmx1c2hlZDpiZWZvcmV7Y29udGVudDoiXGY1NzkifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1taW51czpiZWZvcmV7Y29udGVudDoiXGY2NWQifS5mYS1mb2xkZXItb3BlbjpiZWZvcmV7Y29udGVudDoiXGYwN2MifS5mYS1mb2xkZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGY2NWUifS5mYS1mb250OmJlZm9yZXtjb250ZW50OiJcZjAzMSJ9LmZhLWZvbnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyYjQifS5mYS1mb250LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM1YyJ9LmZhLWZvbnQtYXdlc29tZS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZjQyNSJ9LmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNGU2In0uZmEtZm9udGljb25zOmJlZm9yZXtjb250ZW50OiJcZjI4MCJ9LmZhLWZvbnRpY29ucy1maTpiZWZvcmV7Y29udGVudDoiXGYzYTIifS5mYS1mb290YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0ZSJ9LmZhLWZvcnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyODYifS5mYS1mb3J0LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNhMyJ9LmZhLWZvcnVtYmVlOmJlZm9yZXtjb250ZW50OiJcZjIxMSJ9LmZhLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRlIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS1mcmVlLWNvZGUtY2FtcDpiZWZvcmV7Y29udGVudDoiXGYyYzUifS5mYS1mcmVlYnNkOmJlZm9yZXtjb250ZW50OiJcZjNhNCJ9LmZhLWZyb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNTJlIn0uZmEtZnJvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0uZmEtZnJvd24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGY1N2EifS5mYS1mdWxjcnVtOmJlZm9yZXtjb250ZW50OiJcZjUwYiJ9LmZhLWZ1bm5lbC1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjYyIn0uZmEtZnV0Ym9sOmJlZm9yZXtjb250ZW50OiJcZjFlMyJ9LmZhLWdhbGFjdGljLXJlcHVibGljOmJlZm9yZXtjb250ZW50OiJcZjUwYyJ9LmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmV7Y29udGVudDoiXGY1MGQifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWdhcy1wdW1wOmJlZm9yZXtjb250ZW50OiJcZjUyZiJ9LmZhLWdhdmVsOmJlZm9yZXtjb250ZW50OiJcZjBlMyJ9LmZhLWdlbTpiZWZvcmV7Y29udGVudDoiXGYzYTUifS5mYS1nZW5kZXJsZXNzOmJlZm9yZXtjb250ZW50OiJcZjIyZCJ9LmZhLWdldC1wb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjY1In0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLWdob3N0OmJlZm9yZXtjb250ZW50OiJcZjZlMiJ9LmZhLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDZiIn0uZmEtZ2lmdHM6YmVmb3Jle2NvbnRlbnQ6IlxmNzljIn0uZmEtZ2l0OmJlZm9yZXtjb250ZW50OiJcZjFkMyJ9LmZhLWdpdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODQxIn0uZmEtZ2l0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZDIifS5mYS1naXRodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMDliIn0uZmEtZ2l0aHViLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxMTMifS5mYS1naXRodWItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5MiJ9LmZhLWdpdGtyYWtlbjpiZWZvcmV7Y29udGVudDoiXGYzYTYifS5mYS1naXRsYWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk2In0uZmEtZ2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjQyNiJ9LmZhLWdsYXNzLWNoZWVyczpiZWZvcmV7Y29udGVudDoiXGY3OWYifS5mYS1nbGFzcy1tYXJ0aW5pOmJlZm9yZXtjb250ZW50OiJcZjAwMCJ9LmZhLWdsYXNzLW1hcnRpbmktYWx0OmJlZm9yZXtjb250ZW50OiJcZjU3YiJ9LmZhLWdsYXNzLXdoaXNrZXk6YmVmb3Jle2NvbnRlbnQ6IlxmN2EwIn0uZmEtZ2xhc3NlczpiZWZvcmV7Y29udGVudDoiXGY1MzAifS5mYS1nbGlkZTpiZWZvcmV7Y29udGVudDoiXGYyYTUifS5mYS1nbGlkZS1nOmJlZm9yZXtjb250ZW50OiJcZjJhNiJ9LmZhLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZjBhYyJ9LmZhLWdsb2JlLWFmcmljYTpiZWZvcmV7Y29udGVudDoiXGY1N2MifS5mYS1nbG9iZS1hbWVyaWNhczpiZWZvcmV7Y29udGVudDoiXGY1N2QifS5mYS1nbG9iZS1hc2lhOmJlZm9yZXtjb250ZW50OiJcZjU3ZSJ9LmZhLWdsb2JlLWV1cm9wZTpiZWZvcmV7Y29udGVudDoiXGY3YTIifS5mYS1nb2ZvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2E3In0uZmEtZ29sZi1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1MCJ9LmZhLWdvb2RyZWFkczpiZWZvcmV7Y29udGVudDoiXGYzYTgifS5mYS1nb29kcmVhZHMtZzpiZWZvcmV7Y29udGVudDoiXGYzYTkifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtZ29vZ2xlLWRyaXZlOmJlZm9yZXtjb250ZW50OiJcZjNhYSJ9LmZhLWdvb2dsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxlMDc5In0uZmEtZ29vZ2xlLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmM2FiIn0uZmEtZ29vZ2xlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMmIzIn0uZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmV7Y29udGVudDoiXGYwZDUifS5mYS1nb29nbGUtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ0In0uZmEtZ29vZ2xlLXdhbGxldDpiZWZvcmV7Y29udGVudDoiXGYxZWUifS5mYS1nb3B1cmFtOmJlZm9yZXtjb250ZW50OiJcZjY2NCJ9LmZhLWdyYWR1YXRpb24tY2FwOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9LmZhLWdyYXRpcGF5OmJlZm9yZXtjb250ZW50OiJcZjE4NCJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtZ3JlYXRlci10aGFuOmJlZm9yZXtjb250ZW50OiJcZjUzMSJ9LmZhLWdyZWF0ZXItdGhhbi1lcXVhbDpiZWZvcmV7Y29udGVudDoiXGY1MzIifS5mYS1ncmltYWNlOmJlZm9yZXtjb250ZW50OiJcZjU3ZiJ9LmZhLWdyaW46YmVmb3Jle2NvbnRlbnQ6IlxmNTgwIn0uZmEtZ3Jpbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTgxIn0uZmEtZ3Jpbi1iZWFtOmJlZm9yZXtjb250ZW50OiJcZjU4MiJ9LmZhLWdyaW4tYmVhbS1zd2VhdDpiZWZvcmV7Y29udGVudDoiXGY1ODMifS5mYS1ncmluLWhlYXJ0czpiZWZvcmV7Y29udGVudDoiXGY1ODQifS5mYS1ncmluLXNxdWludDpiZWZvcmV7Y29udGVudDoiXGY1ODUifS5mYS1ncmluLXNxdWludC10ZWFyczpiZWZvcmV7Y29udGVudDoiXGY1ODYifS5mYS1ncmluLXN0YXJzOmJlZm9yZXtjb250ZW50OiJcZjU4NyJ9LmZhLWdyaW4tdGVhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmNTg4In0uZmEtZ3Jpbi10b25ndWU6YmVmb3Jle2NvbnRlbnQ6IlxmNTg5In0uZmEtZ3Jpbi10b25ndWUtc3F1aW50OmJlZm9yZXtjb250ZW50OiJcZjU4YSJ9LmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3Jle2NvbnRlbnQ6IlxmNThiIn0uZmEtZ3Jpbi13aW5rOmJlZm9yZXtjb250ZW50OiJcZjU4YyJ9LmZhLWdyaXAtaG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGY1OGQifS5mYS1ncmlwLWxpbmVzOmJlZm9yZXtjb250ZW50OiJcZjdhNCJ9LmZhLWdyaXAtbGluZXMtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmN2E1In0uZmEtZ3JpcC12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY1OGUifS5mYS1ncmlwZmlyZTpiZWZvcmV7Y29udGVudDoiXGYzYWMifS5mYS1ncnVudDpiZWZvcmV7Y29udGVudDoiXGYzYWQifS5mYS1ndWlsZGVkOmJlZm9yZXtjb250ZW50OiJcZTA3ZSJ9LmZhLWd1aXRhcjpiZWZvcmV7Y29udGVudDoiXGY3YTYifS5mYS1ndWxwOmJlZm9yZXtjb250ZW50OiJcZjNhZSJ9LmZhLWgtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZCJ9LmZhLWhhY2tlci1uZXdzOmJlZm9yZXtjb250ZW50OiJcZjFkNCJ9LmZhLWhhY2tlci1uZXdzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYWYifS5mYS1oYWNrZXJyYW5rOmJlZm9yZXtjb250ZW50OiJcZjVmNyJ9LmZhLWhhbWJ1cmdlcjpiZWZvcmV7Y29udGVudDoiXGY4MDUifS5mYS1oYW1tZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNmUzIn0uZmEtaGFtc2E6YmVmb3Jle2NvbnRlbnQ6IlxmNjY1In0uZmEtaGFuZC1ob2xkaW5nOmJlZm9yZXtjb250ZW50OiJcZjRiZCJ9LmZhLWhhbmQtaG9sZGluZy1oZWFydDpiZWZvcmV7Y29udGVudDoiXGY0YmUifS5mYS1oYW5kLWhvbGRpbmctbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGUwNWMifS5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZXtjb250ZW50OiJcZjRjMCJ9LmZhLWhhbmQtaG9sZGluZy13YXRlcjpiZWZvcmV7Y29udGVudDoiXGY0YzEifS5mYS1oYW5kLWxpemFyZDpiZWZvcmV7Y29udGVudDoiXGYyNTgifS5mYS1oYW5kLW1pZGRsZS1maW5nZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODA2In0uZmEtaGFuZC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGYyNTYifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNWEifS5mYS1oYW5kLXJvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU1In0uZmEtaGFuZC1zY2lzc29yczpiZWZvcmV7Y29udGVudDoiXGYyNTcifS5mYS1oYW5kLXNwYXJrbGVzOmJlZm9yZXtjb250ZW50OiJcZTA1ZCJ9LmZhLWhhbmQtc3BvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU5In0uZmEtaGFuZHM6YmVmb3Jle2NvbnRlbnQ6IlxmNGMyIn0uZmEtaGFuZHMtaGVscGluZzpiZWZvcmV7Y29udGVudDoiXGY0YzQifS5mYS1oYW5kcy13YXNoOmJlZm9yZXtjb250ZW50OiJcZTA1ZSJ9LmZhLWhhbmRzaGFrZTpiZWZvcmV7Y29udGVudDoiXGYyYjUifS5mYS1oYW5kc2hha2UtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA1ZiJ9LmZhLWhhbmRzaGFrZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNjAifS5mYS1oYW51a2lhaDpiZWZvcmV7Y29udGVudDoiXGY2ZTYifS5mYS1oYXJkLWhhdDpiZWZvcmV7Y29udGVudDoiXGY4MDcifS5mYS1oYXNodGFnOmJlZm9yZXtjb250ZW50OiJcZjI5MiJ9LmZhLWhhdC1jb3dib3k6YmVmb3Jle2NvbnRlbnQ6IlxmOGMwIn0uZmEtaGF0LWNvd2JveS1zaWRlOmJlZm9yZXtjb250ZW50OiJcZjhjMSJ9LmZhLWhhdC13aXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmU4In0uZmEtaGRkOmJlZm9yZXtjb250ZW50OiJcZjBhMCJ9LmZhLWhlYWQtc2lkZS1jb3VnaDpiZWZvcmV7Y29udGVudDoiXGUwNjEifS5mYS1oZWFkLXNpZGUtY291Z2gtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDYyIn0uZmEtaGVhZC1zaWRlLW1hc2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDYzIn0uZmEtaGVhZC1zaWRlLXZpcnVzOmJlZm9yZXtjb250ZW50OiJcZTA2NCJ9LmZhLWhlYWRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWRjIn0uZmEtaGVhZHBob25lczpiZWZvcmV7Y29udGVudDoiXGYwMjUifS5mYS1oZWFkcGhvbmVzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1OGYifS5mYS1oZWFkc2V0OmJlZm9yZXtjb250ZW50OiJcZjU5MCJ9LmZhLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjAwNCJ9LmZhLWhlYXJ0LWJyb2tlbjpiZWZvcmV7Y29udGVudDoiXGY3YTkifS5mYS1oZWFydGJlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFlIn0uZmEtaGVsaWNvcHRlcjpiZWZvcmV7Y29udGVudDoiXGY1MzMifS5mYS1oaWdobGlnaHRlcjpiZWZvcmV7Y29udGVudDoiXGY1OTEifS5mYS1oaWtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNmVjIn0uZmEtaGlwcG86YmVmb3Jle2NvbnRlbnQ6IlxmNmVkIn0uZmEtaGlwczpiZWZvcmV7Y29udGVudDoiXGY0NTIifS5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZXtjb250ZW50OiJcZjNiMCJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtaGl2ZTpiZWZvcmV7Y29udGVudDoiXGUwN2YifS5mYS1ob2NrZXktcHVjazpiZWZvcmV7Y29udGVudDoiXGY0NTMifS5mYS1ob2xseS1iZXJyeTpiZWZvcmV7Y29udGVudDoiXGY3YWEifS5mYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjAxNSJ9LmZhLWhvb2xpOmJlZm9yZXtjb250ZW50OiJcZjQyNyJ9LmZhLWhvcm5iaWxsOmJlZm9yZXtjb250ZW50OiJcZjU5MiJ9LmZhLWhvcnNlOmJlZm9yZXtjb250ZW50OiJcZjZmMCJ9LmZhLWhvcnNlLWhlYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2FiIn0uZmEtaG9zcGl0YWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGY4In0uZmEtaG9zcGl0YWwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjQ3ZCJ9LmZhLWhvc3BpdGFsLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGY0N2UifS5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZXtjb250ZW50OiJcZjgwZCJ9LmZhLWhvdC10dWI6YmVmb3Jle2NvbnRlbnQ6IlxmNTkzIn0uZmEtaG90ZG9nOmJlZm9yZXtjb250ZW50OiJcZjgwZiJ9LmZhLWhvdGVsOmJlZm9yZXtjb250ZW50OiJcZjU5NCJ9LmZhLWhvdGphcjpiZWZvcmV7Y29udGVudDoiXGYzYjEifS5mYS1ob3VyZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjU0In0uZmEtaG91cmdsYXNzLWVuZDpiZWZvcmV7Y29udGVudDoiXGYyNTMifS5mYS1ob3VyZ2xhc3MtaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyNTIifS5mYS1ob3VyZ2xhc3Mtc3RhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUxIn0uZmEtaG91c2UtZGFtYWdlOmJlZm9yZXtjb250ZW50OiJcZjZmMSJ9LmZhLWhvdXNlLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDY1In0uZmEtaG91eno6YmVmb3Jle2NvbnRlbnQ6IlxmMjdjIn0uZmEtaHJ5dm5pYTpiZWZvcmV7Y29udGVudDoiXGY2ZjIifS5mYS1odG1sNTpiZWZvcmV7Y29udGVudDoiXGYxM2IifS5mYS1odWJzcG90OmJlZm9yZXtjb250ZW50OiJcZjNiMiJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLWljZS1jcmVhbTpiZWZvcmV7Y29udGVudDoiXGY4MTAifS5mYS1pY2ljbGVzOmJlZm9yZXtjb250ZW50OiJcZjdhZCJ9LmZhLWljb25zOmJlZm9yZXtjb250ZW50OiJcZjg2ZCJ9LmZhLWlkLWJhZGdlOmJlZm9yZXtjb250ZW50OiJcZjJjMSJ9LmZhLWlkLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmMyIn0uZmEtaWQtY2FyZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDdmIn0uZmEtaWRlYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMDEzIn0uZmEtaWdsb286YmVmb3Jle2NvbnRlbnQ6IlxmN2FlIn0uZmEtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDNlIn0uZmEtaW1hZ2VzOmJlZm9yZXtjb250ZW50OiJcZjMwMiJ9LmZhLWltZGI6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ4In0uZmEtaW5ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMDFjIn0uZmEtaW5kZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYyJ9LmZhLWluZHVzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjI3NSJ9LmZhLWluZmluaXR5OmJlZm9yZXtjb250ZW50OiJcZjUzNCJ9LmZhLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxmMTI5In0uZmEtaW5mby1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDVhIn0uZmEtaW5ub3NvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDgwIn0uZmEtaW5zdGFncmFtOmJlZm9yZXtjb250ZW50OiJcZjE2ZCJ9LmZhLWluc3RhZ3JhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDU1In0uZmEtaW5zdGFsb2Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDgxIn0uZmEtaW50ZXJjb206YmVmb3Jle2NvbnRlbnQ6IlxmN2FmIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtaW52aXNpb246YmVmb3Jle2NvbnRlbnQ6IlxmN2IwIn0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1pdGFsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDMzIn0uZmEtaXRjaC1pbzpiZWZvcmV7Y29udGVudDoiXGY4M2EifS5mYS1pdHVuZXM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I0In0uZmEtaXR1bmVzLW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I1In0uZmEtamF2YTpiZWZvcmV7Y29udGVudDoiXGY0ZTQifS5mYS1qZWRpOmJlZm9yZXtjb250ZW50OiJcZjY2OSJ9LmZhLWplZGktb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTBlIn0uZmEtamVua2luczpiZWZvcmV7Y29udGVudDoiXGYzYjYifS5mYS1qaXJhOmJlZm9yZXtjb250ZW50OiJcZjdiMSJ9LmZhLWpvZ2V0OmJlZm9yZXtjb250ZW50OiJcZjNiNyJ9LmZhLWpvaW50OmJlZm9yZXtjb250ZW50OiJcZjU5NSJ9LmZhLWpvb21sYTpiZWZvcmV7Y29udGVudDoiXGYxYWEifS5mYS1qb3VybmFsLXdoaWxsczpiZWZvcmV7Y29udGVudDoiXGY2NmEifS5mYS1qczpiZWZvcmV7Y29udGVudDoiXGYzYjgifS5mYS1qcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I5In0uZmEtanNmaWRkbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNjIn0uZmEta2FhYmE6YmVmb3Jle2NvbnRlbnQ6IlxmNjZiIn0uZmEta2FnZ2xlOmJlZm9yZXtjb250ZW50OiJcZjVmYSJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1rZXliYXNlOmJlZm9yZXtjb250ZW50OiJcZjRmNSJ9LmZhLWtleWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjExYyJ9LmZhLWtleWNkbjpiZWZvcmV7Y29udGVudDoiXGYzYmEifS5mYS1raGFuZGE6YmVmb3Jle2NvbnRlbnQ6IlxmNjZkIn0uZmEta2lja3N0YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2JiIn0uZmEta2lja3N0YXJ0ZXItazpiZWZvcmV7Y29udGVudDoiXGYzYmMifS5mYS1raXNzOmJlZm9yZXtjb250ZW50OiJcZjU5NiJ9LmZhLWtpc3MtYmVhbTpiZWZvcmV7Y29udGVudDoiXGY1OTcifS5mYS1raXNzLXdpbmstaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTk4In0uZmEta2l3aS1iaXJkOmJlZm9yZXtjb250ZW50OiJcZjUzNSJ9LmZhLWtvcnZ1ZTpiZWZvcmV7Y29udGVudDoiXGY0MmYifS5mYS1sYW5kbWFyazpiZWZvcmV7Y29udGVudDoiXGY2NmYifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1sYXB0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA5In0uZmEtbGFwdG9wLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWZjIn0uZmEtbGFwdG9wLWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZTA2NiJ9LmZhLWxhcHRvcC1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjgxMiJ9LmZhLWxhcmF2ZWw6YmVmb3Jle2NvbnRlbnQ6IlxmM2JkIn0uZmEtbGFzdGZtOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9LmZhLWxhc3RmbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0uZmEtbGF1Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmNTk5In0uZmEtbGF1Z2gtYmVhbTpiZWZvcmV7Y29udGVudDoiXGY1OWEifS5mYS1sYXVnaC1zcXVpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTliIn0uZmEtbGF1Z2gtd2luazpiZWZvcmV7Y29udGVudDoiXGY1OWMifS5mYS1sYXllci1ncm91cDpiZWZvcmV7Y29udGVudDoiXGY1ZmQifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxlYW5wdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjEyIn0uZmEtbGVtb246YmVmb3Jle2NvbnRlbnQ6IlxmMDk0In0uZmEtbGVzczpiZWZvcmV7Y29udGVudDoiXGY0MWQifS5mYS1sZXNzLXRoYW46YmVmb3Jle2NvbnRlbnQ6IlxmNTM2In0uZmEtbGVzcy10aGFuLWVxdWFsOmJlZm9yZXtjb250ZW50OiJcZjUzNyJ9LmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZSJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmYifS5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1saW5rZWRpbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1saW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI4In0uZmEtbGludXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDIyIn0uZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1saXN0LXVsOmJlZm9yZXtjb250ZW50OiJcZjBjYSJ9LmZhLWxvY2F0aW9uLWFycm93OmJlZm9yZXtjb250ZW50OiJcZjEyNCJ9LmZhLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDIzIn0uZmEtbG9jay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjNjMSJ9LmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtbG9uZy1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMGEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMGIifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmV7Y29udGVudDoiXGYzMGMifS5mYS1sb3ctdmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjJhOCJ9LmZhLWx1Z2dhZ2UtY2FydDpiZWZvcmV7Y29udGVudDoiXGY1OWQifS5mYS1sdW5nczpiZWZvcmV7Y29udGVudDoiXGY2MDQifS5mYS1sdW5ncy12aXJ1czpiZWZvcmV7Y29udGVudDoiXGUwNjcifS5mYS1seWZ0OmJlZm9yZXtjb250ZW50OiJcZjNjMyJ9LmZhLW1hZ2VudG86YmVmb3Jle2NvbnRlbnQ6IlxmM2M0In0uZmEtbWFnaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMGQwIn0uZmEtbWFnbmV0OmJlZm9yZXtjb250ZW50OiJcZjA3NiJ9LmZhLW1haWwtYnVsazpiZWZvcmV7Y29udGVudDoiXGY2NzQifS5mYS1tYWlsY2hpbXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTllIn0uZmEtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxODMifS5mYS1tYW5kYWxvcmlhbjpiZWZvcmV7Y29udGVudDoiXGY1MGYifS5mYS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjc5In0uZmEtbWFwLW1hcmtlZDpiZWZvcmV7Y29udGVudDoiXGY1OWYifS5mYS1tYXAtbWFya2VkLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1YTAifS5mYS1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjA0MSJ9LmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjNSJ9LmZhLW1hcC1waW46YmVmb3Jle2NvbnRlbnQ6IlxmMjc2In0uZmEtbWFwLXNpZ25zOmJlZm9yZXtjb250ZW50OiJcZjI3NyJ9LmZhLW1hcmtkb3duOmJlZm9yZXtjb250ZW50OiJcZjYwZiJ9LmZhLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGY1YTEifS5mYS1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyMiJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLW1hcnMtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjIyOSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtbWFycy1zdHJva2UtdjpiZWZvcmV7Y29udGVudDoiXGYyMmEifS5mYS1tYXNrOmJlZm9yZXtjb250ZW50OiJcZjZmYSJ9LmZhLW1hc3RvZG9uOmJlZm9yZXtjb250ZW50OiJcZjRmNiJ9LmZhLW1heGNkbjpiZWZvcmV7Y29udGVudDoiXGYxMzYifS5mYS1tZGI6YmVmb3Jle2NvbnRlbnQ6IlxmOGNhIn0uZmEtbWVkYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWEyIn0uZmEtbWVkYXBwczpiZWZvcmV7Y29udGVudDoiXGYzYzYifS5mYS1tZWRpdW06YmVmb3Jle2NvbnRlbnQ6IlxmMjNhIn0uZmEtbWVkaXVtLW06YmVmb3Jle2NvbnRlbnQ6IlxmM2M3In0uZmEtbWVka2l0OmJlZm9yZXtjb250ZW50OiJcZjBmYSJ9LmZhLW1lZHJ0OmJlZm9yZXtjb250ZW50OiJcZjNjOCJ9LmZhLW1lZXR1cDpiZWZvcmV7Y29udGVudDoiXGYyZTAifS5mYS1tZWdhcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1YTMifS5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtbWVoLWJsYW5rOmJlZm9yZXtjb250ZW50OiJcZjVhNCJ9LmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNWE1In0uZmEtbWVtb3J5OmJlZm9yZXtjb250ZW50OiJcZjUzOCJ9LmZhLW1lbmRlbGV5OmJlZm9yZXtjb250ZW50OiJcZjdiMyJ9LmZhLW1lbm9yYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNjc2In0uZmEtbWVyY3VyeTpiZWZvcmV7Y29udGVudDoiXGYyMjMifS5mYS1tZXRlb3I6YmVmb3Jle2NvbnRlbnQ6IlxmNzUzIn0uZmEtbWljcm9ibG9nOmJlZm9yZXtjb250ZW50OiJcZTAxYSJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjOSJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjUzOSJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtbWljcm9zY29wZTpiZWZvcmV7Y29udGVudDoiXGY2MTAifS5mYS1taWNyb3NvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NhIn0uZmEtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY4In0uZmEtbWludXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NiJ9LmZhLW1pbnVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDYifS5mYS1taXR0ZW46YmVmb3Jle2NvbnRlbnQ6IlxmN2I1In0uZmEtbWl4OmJlZm9yZXtjb250ZW50OiJcZjNjYiJ9LmZhLW1peGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjI4OSJ9LmZhLW1peGVyOmJlZm9yZXtjb250ZW50OiJcZTA1NiJ9LmZhLW1penVuaTpiZWZvcmV7Y29udGVudDoiXGYzY2MifS5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtbW9iaWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb2R4OmJlZm9yZXtjb250ZW50OiJcZjI4NSJ9LmZhLW1vbmVybzpiZWZvcmV7Y29udGVudDoiXGYzZDAifS5mYS1tb25leS1iaWxsOmJlZm9yZXtjb250ZW50OiJcZjBkNiJ9LmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNkMSJ9LmZhLW1vbmV5LWJpbGwtd2F2ZTpiZWZvcmV7Y29udGVudDoiXGY1M2EifS5mYS1tb25leS1iaWxsLXdhdmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjUzYiJ9LmZhLW1vbmV5LWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjUzYyJ9LmZhLW1vbmV5LWNoZWNrLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1M2QifS5mYS1tb251bWVudDpiZWZvcmV7Y29udGVudDoiXGY1YTYifS5mYS1tb29uOmJlZm9yZXtjb250ZW50OiJcZjE4NiJ9LmZhLW1vcnRhci1wZXN0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWE3In0uZmEtbW9zcXVlOmJlZm9yZXtjb250ZW50OiJcZjY3OCJ9LmZhLW1vdG9yY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjFjIn0uZmEtbW91bnRhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNmZjIn0uZmEtbW91c2U6YmVmb3Jle2NvbnRlbnQ6IlxmOGNjIn0uZmEtbW91c2UtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDUifS5mYS1tdWctaG90OmJlZm9yZXtjb250ZW50OiJcZjdiNiJ9LmZhLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZjAwMSJ9LmZhLW5hcHN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2QyIn0uZmEtbmVvczpiZWZvcmV7Y29udGVudDoiXGY2MTIifS5mYS1uZXR3b3JrLXdpcmVkOmJlZm9yZXtjb250ZW50OiJcZjZmZiJ9LmZhLW5ldXRlcjpiZWZvcmV7Y29udGVudDoiXGYyMmMifS5mYS1uZXdzcGFwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0uZmEtbmltYmxyOmJlZm9yZXtjb250ZW50OiJcZjVhOCJ9LmZhLW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDE5In0uZmEtbm9kZS1qczpiZWZvcmV7Y29udGVudDoiXGYzZDMifS5mYS1ub3QtZXF1YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNTNlIn0uZmEtbm90ZXMtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0ODEifS5mYS1ucG06YmVmb3Jle2NvbnRlbnQ6IlxmM2Q0In0uZmEtbnM4OmJlZm9yZXtjb250ZW50OiJcZjNkNSJ9LmZhLW51dHJpdGlvbml4OmJlZm9yZXtjb250ZW50OiJcZjNkNiJ9LmZhLW9iamVjdC1ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDcifS5mYS1vYmplY3QtdW5ncm91cDpiZWZvcmV7Y29udGVudDoiXGYyNDgifS5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmV7Y29udGVudDoiXGUwODIifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjI2NCJ9LmZhLW9pbC1jYW46YmVmb3Jle2NvbnRlbnQ6IlxmNjEzIn0uZmEtb2xkLXJlcHVibGljOmJlZm9yZXtjb250ZW50OiJcZjUxMCJ9LmZhLW9tOmJlZm9yZXtjb250ZW50OiJcZjY3OSJ9LmZhLW9wZW5jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIzZCJ9LmZhLW9wZW5pZDpiZWZvcmV7Y29udGVudDoiXGYxOWIifS5mYS1vcGVyYTpiZWZvcmV7Y29udGVudDoiXGYyNmEifS5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjIzYyJ9LmZhLW9yY2lkOmJlZm9yZXtjb250ZW50OiJcZjhkMiJ9LmZhLW9zaTpiZWZvcmV7Y29udGVudDoiXGY0MWEifS5mYS1vdHRlcjpiZWZvcmV7Y29udGVudDoiXGY3MDAifS5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLXBhZ2U0OmJlZm9yZXtjb250ZW50OiJcZjNkNyJ9LmZhLXBhZ2VsaW5lczpiZWZvcmV7Y29udGVudDoiXGYxOGMifS5mYS1wYWdlcjpiZWZvcmV7Y29udGVudDoiXGY4MTUifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1wYWludC1yb2xsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFhIn0uZmEtcGFsZXR0ZTpiZWZvcmV7Y29udGVudDoiXGY1M2YifS5mYS1wYWxmZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q4In0uZmEtcGFsbGV0OmJlZm9yZXtjb250ZW50OiJcZjQ4MiJ9LmZhLXBhcGVyLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjFkOCJ9LmZhLXBhcGVyY2xpcDpiZWZvcmV7Y29udGVudDoiXGYwYzYifS5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZXtjb250ZW50OiJcZjRjZCJ9LmZhLXBhcmFncmFwaDpiZWZvcmV7Y29udGVudDoiXGYxZGQifS5mYS1wYXJraW5nOmJlZm9yZXtjb250ZW50OiJcZjU0MCJ9LmZhLXBhc3Nwb3J0OmJlZm9yZXtjb250ZW50OiJcZjVhYiJ9LmZhLXBhc3RhZmFyaWFuaXNtOmJlZm9yZXtjb250ZW50OiJcZjY3YiJ9LmZhLXBhc3RlOmJlZm9yZXtjb250ZW50OiJcZjBlYSJ9LmZhLXBhdHJlb246YmVmb3Jle2NvbnRlbnQ6IlxmM2Q5In0uZmEtcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDRjIn0uZmEtcGF1c2UtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI4YiJ9LmZhLXBhdzpiZWZvcmV7Y29udGVudDoiXGYxYjAifS5mYS1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWVkIn0uZmEtcGVhY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjdjIn0uZmEtcGVuOmJlZm9yZXtjb250ZW50OiJcZjMwNCJ9LmZhLXBlbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzA1In0uZmEtcGVuLWZhbmN5OmJlZm9yZXtjb250ZW50OiJcZjVhYyJ9LmZhLXBlbi1uaWI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFkIn0uZmEtcGVuLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1wZW5jaWwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwMyJ9LmZhLXBlbmNpbC1ydWxlcjpiZWZvcmV7Y29udGVudDoiXGY1YWUifS5mYS1wZW5ueS1hcmNhZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNzA0In0uZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1wZW9wbGUtY2Fycnk6YmVmb3Jle2NvbnRlbnQ6IlxmNGNlIn0uZmEtcGVwcGVyLWhvdDpiZWZvcmV7Y29udGVudDoiXGY4MTYifS5mYS1wZXJieXRlOmJlZm9yZXtjb250ZW50OiJcZTA4MyJ9LmZhLXBlcmNlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjk1In0uZmEtcGVyY2VudGFnZTpiZWZvcmV7Y29udGVudDoiXGY1NDEifS5mYS1wZXJpc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2RhIn0uZmEtcGVyc29uLWJvb3RoOmJlZm9yZXtjb250ZW50OiJcZjc1NiJ9LmZhLXBoYWJyaWNhdG9yOmJlZm9yZXtjb250ZW50OiJcZjNkYiJ9LmZhLXBob2VuaXgtZnJhbWV3b3JrOmJlZm9yZXtjb250ZW50OiJcZjNkYyJ9LmZhLXBob2VuaXgtc3F1YWRyb246YmVmb3Jle2NvbnRlbnQ6IlxmNTExIn0uZmEtcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk1In0uZmEtcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg3OSJ9LmZhLXBob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjNkZCJ9LmZhLXBob25lLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTgifS5mYS1waG9uZS1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg3YiJ9LmZhLXBob25lLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGYyYTAifS5mYS1waG90by12aWRlbzpiZWZvcmV7Y29udGVudDoiXGY4N2MifS5mYS1waHA6YmVmb3Jle2NvbnRlbnQ6IlxmNDU3In0uZmEtcGllZC1waXBlcjpiZWZvcmV7Y29udGVudDoiXGYyYWUifS5mYS1waWVkLXBpcGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxYTgifS5mYS1waWVkLXBpcGVyLWhhdDpiZWZvcmV7Y29udGVudDoiXGY0ZTUifS5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9LmZhLXBpZWQtcGlwZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZTAxZSJ9LmZhLXBpZ2d5LWJhbms6YmVmb3Jle2NvbnRlbnQ6IlxmNGQzIn0uZmEtcGlsbHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDg0In0uZmEtcGludGVyZXN0OmJlZm9yZXtjb250ZW50OiJcZjBkMiJ9LmZhLXBpbnRlcmVzdC1wOmJlZm9yZXtjb250ZW50OiJcZjIzMSJ9LmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQzIn0uZmEtcGl6emEtc2xpY2U6YmVmb3Jle2NvbnRlbnQ6IlxmODE4In0uZmEtcGxhY2Utb2Ytd29yc2hpcDpiZWZvcmV7Y29udGVudDoiXGY2N2YifS5mYS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYwNzIifS5mYS1wbGFuZS1hcnJpdmFsOmJlZm9yZXtjb250ZW50OiJcZjVhZiJ9LmZhLXBsYW5lLWRlcGFydHVyZTpiZWZvcmV7Y29udGVudDoiXGY1YjAifS5mYS1wbGFuZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNjkifS5mYS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjA0YiJ9LmZhLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9LmZhLXBsYXlzdGF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjNkZiJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwNjcifS5mYS1wbHVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTUifS5mYS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmUifS5mYS1wb2RjYXN0OmJlZm9yZXtjb250ZW50OiJcZjJjZSJ9LmZhLXBvbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNjgxIn0uZmEtcG9sbC1oOmJlZm9yZXtjb250ZW50OiJcZjY4MiJ9LmZhLXBvbzpiZWZvcmV7Y29udGVudDoiXGYyZmUifS5mYS1wb28tc3Rvcm06YmVmb3Jle2NvbnRlbnQ6IlxmNzVhIn0uZmEtcG9vcDpiZWZvcmV7Y29udGVudDoiXGY2MTkifS5mYS1wb3J0cmFpdDpiZWZvcmV7Y29udGVudDoiXGYzZTAifS5mYS1wb3VuZC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NCJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1wcmF5OmJlZm9yZXtjb250ZW50OiJcZjY4MyJ9LmZhLXByYXlpbmctaGFuZHM6YmVmb3Jle2NvbnRlbnQ6IlxmNjg0In0uZmEtcHJlc2NyaXB0aW9uOmJlZm9yZXtjb250ZW50OiJcZjViMSJ9LmZhLXByZXNjcmlwdGlvbi1ib3R0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDg1In0uZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDg2In0uZmEtcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDJmIn0uZmEtcHJvY2VkdXJlczpiZWZvcmV7Y29udGVudDoiXGY0ODcifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtcHJvamVjdC1kaWFncmFtOmJlZm9yZXtjb250ZW50OiJcZjU0MiJ9LmZhLXB1bXAtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGUwNmEifS5mYS1wdW1wLXNvYXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDZiIn0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1weXRob246YmVmb3Jle2NvbnRlbnQ6IlxmM2UyIn0uZmEtcXE6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ2In0uZmEtcXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyOSJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyOCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1xdWlkZGl0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNDU4In0uZmEtcXVpbnNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjQ1OSJ9LmZhLXF1b3JhOmJlZm9yZXtjb250ZW50OiJcZjJjNCJ9LmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtcXVvdGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBlIn0uZmEtcXVyYW46YmVmb3Jle2NvbnRlbnQ6IlxmNjg3In0uZmEtci1wcm9qZWN0OmJlZm9yZXtjb250ZW50OiJcZjRmNyJ9LmZhLXJhZGlhdGlvbjpiZWZvcmV7Y29udGVudDoiXGY3YjkifS5mYS1yYWRpYXRpb24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjdiYSJ9LmZhLXJhaW5ib3c6YmVmb3Jle2NvbnRlbnQ6IlxmNzViIn0uZmEtcmFuZG9tOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXJhc3BiZXJyeS1waTpiZWZvcmV7Y29udGVudDoiXGY3YmIifS5mYS1yYXZlbHJ5OmJlZm9yZXtjb250ZW50OiJcZjJkOSJ9LmZhLXJlYWN0OmJlZm9yZXtjb250ZW50OiJcZjQxYiJ9LmZhLXJlYWN0ZXVyb3BlOmJlZm9yZXtjb250ZW50OiJcZjc1ZCJ9LmZhLXJlYWRtZTpiZWZvcmV7Y29udGVudDoiXGY0ZDUifS5mYS1yZWJlbDpiZWZvcmV7Y29udGVudDoiXGYxZDAifS5mYS1yZWNlaXB0OmJlZm9yZXtjb250ZW50OiJcZjU0MyJ9LmZhLXJlY29yZC12aW55bDpiZWZvcmV7Y29udGVudDoiXGY4ZDkifS5mYS1yZWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjFiOCJ9LmZhLXJlZC1yaXZlcjpiZWZvcmV7Y29udGVudDoiXGYzZTMifS5mYS1yZWRkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWExIn0uZmEtcmVkZGl0LWFsaWVuOmJlZm9yZXtjb250ZW50OiJcZjI4MSJ9LmZhLXJlZGRpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEyIn0uZmEtcmVkaGF0OmJlZm9yZXtjb250ZW50OiJcZjdiYyJ9LmZhLXJlZG86YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVkby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY5In0uZmEtcmVnaXN0ZXJlZDpiZWZvcmV7Y29udGVudDoiXGYyNWQifS5mYS1yZW1vdmUtZm9ybWF0OmJlZm9yZXtjb250ZW50OiJcZjg3ZCJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtcmVwbHlkOmJlZm9yZXtjb250ZW50OiJcZjNlNiJ9LmZhLXJlcHVibGljYW46YmVmb3Jle2NvbnRlbnQ6IlxmNzVlIn0uZmEtcmVzZWFyY2hnYXRlOmJlZm9yZXtjb250ZW50OiJcZjRmOCJ9LmZhLXJlc29sdmluZzpiZWZvcmV7Y29udGVudDoiXGYzZTcifS5mYS1yZXN0cm9vbTpiZWZvcmV7Y29udGVudDoiXGY3YmQifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXJldjpiZWZvcmV7Y29udGVudDoiXGY1YjIifS5mYS1yaWJib246YmVmb3Jle2NvbnRlbnQ6IlxmNGQ2In0uZmEtcmluZzpiZWZvcmV7Y29udGVudDoiXGY3MGIifS5mYS1yb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOCJ9LmZhLXJvYm90OmJlZm9yZXtjb250ZW50OiJcZjU0NCJ9LmZhLXJvY2tldDpiZWZvcmV7Y29udGVudDoiXGYxMzUifS5mYS1yb2NrZXRjaGF0OmJlZm9yZXtjb250ZW50OiJcZjNlOCJ9LmZhLXJvY2tybXM6YmVmb3Jle2NvbnRlbnQ6IlxmM2U5In0uZmEtcm91dGU6YmVmb3Jle2NvbnRlbnQ6IlxmNGQ3In0uZmEtcnNzOmJlZm9yZXtjb250ZW50OiJcZjA5ZSJ9LmZhLXJzcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0uZmEtcnVibGUtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTgifS5mYS1ydWxlcjpiZWZvcmV7Y29udGVudDoiXGY1NDUifS5mYS1ydWxlci1jb21iaW5lZDpiZWZvcmV7Y29udGVudDoiXGY1NDYifS5mYS1ydWxlci1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZjU0NyJ9LmZhLXJ1bGVyLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU0OCJ9LmZhLXJ1bm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNzBjIn0uZmEtcnVwZWUtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTYifS5mYS1ydXN0OmJlZm9yZXtjb250ZW50OiJcZTA3YSJ9LmZhLXNhZC1jcnk6YmVmb3Jle2NvbnRlbnQ6IlxmNWIzIn0uZmEtc2FkLXRlYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWI0In0uZmEtc2FmYXJpOmJlZm9yZXtjb250ZW50OiJcZjI2NyJ9LmZhLXNhbGVzZm9yY2U6YmVmb3Jle2NvbnRlbnQ6IlxmODNiIn0uZmEtc2FzczpiZWZvcmV7Y29udGVudDoiXGY0MWUifS5mYS1zYXRlbGxpdGU6YmVmb3Jle2NvbnRlbnQ6IlxmN2JmIn0uZmEtc2F0ZWxsaXRlLWRpc2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2MwIn0uZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS1zY2hsaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VhIn0uZmEtc2Nob29sOmJlZm9yZXtjb250ZW50OiJcZjU0OSJ9LmZhLXNjcmV3ZHJpdmVyOmJlZm9yZXtjb250ZW50OiJcZjU0YSJ9LmZhLXNjcmliZDpiZWZvcmV7Y29udGVudDoiXGYyOGEifS5mYS1zY3JvbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNzBlIn0uZmEtc2QtY2FyZDpiZWZvcmV7Y29udGVudDoiXGY3YzIifS5mYS1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDAyIn0uZmEtc2VhcmNoLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2ODgifS5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNjg5In0uZmEtc2VhcmNoLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjAxMCJ9LmZhLXNlYXJjaC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjAwZSJ9LmZhLXNlYXJjaGVuZ2luOmJlZm9yZXtjb250ZW50OiJcZjNlYiJ9LmZhLXNlZWRsaW5nOmJlZm9yZXtjb250ZW50OiJcZjRkOCJ9LmZhLXNlbGxjYXN0OmJlZm9yZXtjb250ZW50OiJcZjJkYSJ9LmZhLXNlbGxzeTpiZWZvcmV7Y29udGVudDoiXGYyMTMifS5mYS1zZXJ2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjMzIn0uZmEtc2VydmljZXN0YWNrOmJlZm9yZXtjb250ZW50OiJcZjNlYyJ9LmZhLXNoYXBlczpiZWZvcmV7Y29udGVudDoiXGY2MWYifS5mYS1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGYwNjQifS5mYS1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTEifS5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hla2VsLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMjBiIn0uZmEtc2hpZWxkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZWQifS5mYS1zaGllbGQtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDZjIn0uZmEtc2hpcDpiZWZvcmV7Y29udGVudDoiXGYyMWEifS5mYS1zaGlwcGluZy1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjQ4YiJ9LmZhLXNoaXJ0c2luYnVsazpiZWZvcmV7Y29udGVudDoiXGYyMTQifS5mYS1zaG9lLXByaW50czpiZWZvcmV7Y29udGVudDoiXGY1NGIifS5mYS1zaG9waWZ5OmJlZm9yZXtjb250ZW50OiJcZTA1NyJ9LmZhLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYyOTAifS5mYS1zaG9wcGluZy1iYXNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjkxIn0uZmEtc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDoiXGYwN2EifS5mYS1zaG9wd2FyZTpiZWZvcmV7Y29udGVudDoiXGY1YjUifS5mYS1zaG93ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmNjIn0uZmEtc2h1dHRsZS12YW46YmVmb3Jle2NvbnRlbnQ6IlxmNWI2In0uZmEtc2lnbjpiZWZvcmV7Y29udGVudDoiXGY0ZDkifS5mYS1zaWduLWluLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjYifS5mYS1zaWduLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2lnbmF0dXJlOmJlZm9yZXtjb250ZW50OiJcZjViNyJ9LmZhLXNpbS1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjdjNCJ9LmZhLXNpbXBseWJ1aWx0OmJlZm9yZXtjb250ZW50OiJcZjIxNSJ9LmZhLXNpbms6YmVmb3Jle2NvbnRlbnQ6IlxlMDZkIn0uZmEtc2lzdHJpeDpiZWZvcmV7Y29udGVudDoiXGYzZWUifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNpdGg6YmVmb3Jle2NvbnRlbnQ6IlxmNTEyIn0uZmEtc2thdGluZzpiZWZvcmV7Y29udGVudDoiXGY3YzUifS5mYS1za2V0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2M2In0uZmEtc2tpaW5nOmJlZm9yZXtjb250ZW50OiJcZjdjOSJ9LmZhLXNraWluZy1ub3JkaWM6YmVmb3Jle2NvbnRlbnQ6IlxmN2NhIn0uZmEtc2t1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNTRjIn0uZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmV7Y29udGVudDoiXGY3MTQifS5mYS1za3lhdGxhczpiZWZvcmV7Y29udGVudDoiXGYyMTYifS5mYS1za3lwZTpiZWZvcmV7Y29udGVudDoiXGYxN2UifS5mYS1zbGFjazpiZWZvcmV7Y29udGVudDoiXGYxOTgifS5mYS1zbGFjay1oYXNoOmJlZm9yZXtjb250ZW50OiJcZjNlZiJ9LmZhLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjcxNSJ9LmZhLXNsZWlnaDpiZWZvcmV7Y29udGVudDoiXGY3Y2MifS5mYS1zbGlkZXJzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc2xpZGVzaGFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTcifS5mYS1zbWlsZTpiZWZvcmV7Y29udGVudDoiXGYxMTgifS5mYS1zbWlsZS1iZWFtOmJlZm9yZXtjb250ZW50OiJcZjViOCJ9LmZhLXNtaWxlLXdpbms6YmVmb3Jle2NvbnRlbnQ6IlxmNGRhIn0uZmEtc21vZzpiZWZvcmV7Y29udGVudDoiXGY3NWYifS5mYS1zbW9raW5nOmJlZm9yZXtjb250ZW50OiJcZjQ4ZCJ9LmZhLXNtb2tpbmctYmFuOmJlZm9yZXtjb250ZW50OiJcZjU0ZCJ9LmZhLXNtczpiZWZvcmV7Y29udGVudDoiXGY3Y2QifS5mYS1zbmFwY2hhdDpiZWZvcmV7Y29udGVudDoiXGYyYWIifS5mYS1zbmFwY2hhdC1naG9zdDpiZWZvcmV7Y29udGVudDoiXGYyYWMifS5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmFkIn0uZmEtc25vd2JvYXJkaW5nOmJlZm9yZXtjb250ZW50OiJcZjdjZSJ9LmZhLXNub3dmbGFrZTpiZWZvcmV7Y29udGVudDoiXGYyZGMifS5mYS1zbm93bWFuOmJlZm9yZXtjb250ZW50OiJcZjdkMCJ9LmZhLXNub3dwbG93OmJlZm9yZXtjb250ZW50OiJcZjdkMiJ9LmZhLXNvYXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDZlIn0uZmEtc29ja3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjk2In0uZmEtc29sYXItcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWJhIn0uZmEtc29ydDpiZWZvcmV7Y29udGVudDoiXGYwZGMifS5mYS1zb3J0LWFscGhhLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODEifS5mYS1zb3J0LWFscGhhLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1ZSJ9LmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4MiJ9LmZhLXNvcnQtYW1vdW50LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYwIn0uZmEtc29ydC1hbW91bnQtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg0In0uZmEtc29ydC1hbW91bnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYxIn0uZmEtc29ydC1hbW91bnQtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NSJ9LmZhLXNvcnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZGQifS5mYS1zb3J0LW51bWVyaWMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjIifS5mYS1zb3J0LW51bWVyaWMtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg2In0uZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLXNvcnQtbnVtZXJpYy11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg3In0uZmEtc29ydC11cDpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1zb3VuZGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjFiZSJ9LmZhLXNvdXJjZXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmN2QzIn0uZmEtc3BhOmJlZm9yZXtjb250ZW50OiJcZjViYiJ9LmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtc3BlYWthcDpiZWZvcmV7Y29udGVudDoiXGYzZjMifS5mYS1zcGVha2VyLWRlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmODNjIn0uZmEtc3BlbGwtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmODkxIn0uZmEtc3BpZGVyOmJlZm9yZXtjb250ZW50OiJcZjcxNyJ9LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTEwIn0uZmEtc3Bsb3RjaDpiZWZvcmV7Y29udGVudDoiXGY1YmMifS5mYS1zcG90aWZ5OmJlZm9yZXtjb250ZW50OiJcZjFiYyJ9LmZhLXNwcmF5LWNhbjpiZWZvcmV7Y29udGVudDoiXGY1YmQifS5mYS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGM4In0uZmEtc3F1YXJlLWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVjIn0uZmEtc3F1YXJlLXJvb3QtYWx0OmJlZm9yZXtjb250ZW50OiJcZjY5OCJ9LmZhLXNxdWFyZXNwYWNlOmJlZm9yZXtjb250ZW50OiJcZjViZSJ9LmZhLXN0YWNrLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLXN0YWNrcGF0aDpiZWZvcmV7Y29udGVudDoiXGY4NDIifS5mYS1zdGFtcDpiZWZvcmV7Y29udGVudDoiXGY1YmYifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXN0YXItYW5kLWNyZXNjZW50OmJlZm9yZXtjb250ZW50OiJcZjY5OSJ9LmZhLXN0YXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYwODkifS5mYS1zdGFyLWhhbGYtYWx0OmJlZm9yZXtjb250ZW50OiJcZjVjMCJ9LmZhLXN0YXItb2YtZGF2aWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjlhIn0uZmEtc3Rhci1vZi1saWZlOmJlZm9yZXtjb250ZW50OiJcZjYyMSJ9LmZhLXN0YXlsaW5rZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y1In0uZmEtc3RlYW06YmVmb3Jle2NvbnRlbnQ6IlxmMWI2In0uZmEtc3RlYW0tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFiNyJ9LmZhLXN0ZWFtLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGYzZjYifS5mYS1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OCJ9LmZhLXN0ZXAtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNTEifS5mYS1zdGV0aG9zY29wZTpiZWZvcmV7Y29udGVudDoiXGYwZjEifS5mYS1zdGlja2VyLW11bGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y3In0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RvcHdhdGNoLTIwOmJlZm9yZXtjb250ZW50OiJcZTA2ZiJ9LmZhLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjU0ZSJ9LmZhLXN0b3JlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NGYifS5mYS1zdG9yZS1hbHQtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDcwIn0uZmEtc3RvcmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDcxIn0uZmEtc3RyYXZhOmJlZm9yZXtjb250ZW50OiJcZjQyOCJ9LmZhLXN0cmVhbTpiZWZvcmV7Y29udGVudDoiXGY1NTAifS5mYS1zdHJlZXQtdmlldzpiZWZvcmV7Y29udGVudDoiXGYyMWQifS5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZXtjb250ZW50OiJcZjBjYyJ9LmZhLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGY0MjkifS5mYS1zdHJpcGUtczpiZWZvcmV7Y29udGVudDoiXGY0MmEifS5mYS1zdHJvb3B3YWZlbDpiZWZvcmV7Y29udGVudDoiXGY1NTEifS5mYS1zdHVkaW92aW5hcmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y4In0uZmEtc3R1bWJsZXVwb246YmVmb3Jle2NvbnRlbnQ6IlxmMWE0In0uZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9LmZhLXN1YnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmMifS5mYS1zdWJ3YXk6YmVmb3Jle2NvbnRlbnQ6IlxmMjM5In0uZmEtc3VpdGNhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGYyIn0uZmEtc3VpdGNhc2Utcm9sbGluZzpiZWZvcmV7Y29udGVudDoiXGY1YzEifS5mYS1zdW46YmVmb3Jle2NvbnRlbnQ6IlxmMTg1In0uZmEtc3VwZXJwb3dlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmRkIn0uZmEtc3VwZXJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJiIn0uZmEtc3VwcGxlOmJlZm9yZXtjb250ZW50OiJcZjNmOSJ9LmZhLXN1cnByaXNlOmJlZm9yZXtjb250ZW50OiJcZjVjMiJ9LmZhLXN1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmN2Q2In0uZmEtc3dhdGNoYm9vazpiZWZvcmV7Y29udGVudDoiXGY1YzMifS5mYS1zd2lmdDpiZWZvcmV7Y29udGVudDoiXGY4ZTEifS5mYS1zd2ltbWVyOmJlZm9yZXtjb250ZW50OiJcZjVjNCJ9LmZhLXN3aW1taW5nLXBvb2w6YmVmb3Jle2NvbnRlbnQ6IlxmNWM1In0uZmEtc3ltZm9ueTpiZWZvcmV7Y29udGVudDoiXGY4M2QifS5mYS1zeW5hZ29ndWU6YmVmb3Jle2NvbnRlbnQ6IlxmNjliIn0uZmEtc3luYzpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS1zeXJpbmdlOmJlZm9yZXtjb250ZW50OiJcZjQ4ZSJ9LmZhLXRhYmxlOmJlZm9yZXtjb250ZW50OiJcZjBjZSJ9LmZhLXRhYmxlLXRlbm5pczpiZWZvcmV7Y29udGVudDoiXGY0NWQifS5mYS10YWJsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBhIn0uZmEtdGFibGV0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmEifS5mYS10YWJsZXRzOmJlZm9yZXtjb250ZW50OiJcZjQ5MCJ9LmZhLXRhY2hvbWV0ZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZCJ9LmZhLXRhZzpiZWZvcmV7Y29udGVudDoiXGYwMmIifS5mYS10YWdzOmJlZm9yZXtjb250ZW50OiJcZjAyYyJ9LmZhLXRhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNGRiIn0uZmEtdGFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmMGFlIn0uZmEtdGF4aTpiZWZvcmV7Y29udGVudDoiXGYxYmEifS5mYS10ZWFtc3BlYWs6YmVmb3Jle2NvbnRlbnQ6IlxmNGY5In0uZmEtdGVldGg6YmVmb3Jle2NvbnRlbnQ6IlxmNjJlIn0uZmEtdGVldGgtb3BlbjpiZWZvcmV7Y29udGVudDoiXGY2MmYifS5mYS10ZWxlZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYyYzYifS5mYS10ZWxlZ3JhbS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYzZmUifS5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZXtjb250ZW50OiJcZjc2OSJ9LmZhLXRlbXBlcmF0dXJlLWxvdzpiZWZvcmV7Y29udGVudDoiXGY3NmIifS5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjFkNSJ9LmZhLXRlbmdlOmJlZm9yZXtjb250ZW50OiJcZjdkNyJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDBhIn0uZmEtdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDA5In0uZmEtdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMGIifS5mYS10aGUtcmVkLXlldGk6YmVmb3Jle2NvbnRlbnQ6IlxmNjlkIn0uZmEtdGhlYXRlci1tYXNrczpiZWZvcmV7Y29udGVudDoiXGY2MzAifS5mYS10aGVtZWNvOmJlZm9yZXtjb250ZW50OiJcZjVjNiJ9LmZhLXRoZW1laXNsZTpiZWZvcmV7Y29udGVudDoiXGYyYjIifS5mYS10aGVybW9tZXRlcjpiZWZvcmV7Y29udGVudDoiXGY0OTEifS5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyY2IifS5mYS10aGVybW9tZXRlci1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjJjNyJ9LmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyY2EifS5mYS10aGVybW9tZXRlci10aHJlZS1xdWFydGVyczpiZWZvcmV7Y29udGVudDoiXGYyYzgifS5mYS10aGluay1wZWFrczpiZWZvcmV7Y29udGVudDoiXGY3MzEifS5mYS10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjUifS5mYS10aHVtYnMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTY0In0uZmEtdGh1bWJ0YWNrOmJlZm9yZXtjb250ZW50OiJcZjA4ZCJ9LmZhLXRpY2tldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZmIn0uZmEtdGlrdG9rOmJlZm9yZXtjb250ZW50OiJcZTA3YiJ9LmZhLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjAwZCJ9LmZhLXRpbWVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLXRpbnQtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWM3In0uZmEtdGlyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWM4In0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtdG9pbGV0OmJlZm9yZXtjb250ZW50OiJcZjdkOCJ9LmZhLXRvaWxldC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGY3MWUifS5mYS10b2lsZXQtcGFwZXItc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDcyIn0uZmEtdG9vbGJveDpiZWZvcmV7Y29udGVudDoiXGY1NTIifS5mYS10b29sczpiZWZvcmV7Y29udGVudDoiXGY3ZDkifS5mYS10b290aDpiZWZvcmV7Y29udGVudDoiXGY1YzkifS5mYS10b3JhaDpiZWZvcmV7Y29udGVudDoiXGY2YTAifS5mYS10b3JpaS1nYXRlOmJlZm9yZXtjb250ZW50OiJcZjZhMSJ9LmZhLXRyYWN0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmNzIyIn0uZmEtdHJhZGUtZmVkZXJhdGlvbjpiZWZvcmV7Y29udGVudDoiXGY1MTMifS5mYS10cmFkZW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMjVjIn0uZmEtdHJhZmZpYy1saWdodDpiZWZvcmV7Y29udGVudDoiXGY2MzcifS5mYS10cmFpbGVyOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmZhLXRyYWluOmJlZm9yZXtjb250ZW50OiJcZjIzOCJ9LmZhLXRyYW06YmVmb3Jle2NvbnRlbnQ6IlxmN2RhIn0uZmEtdHJhbnNnZW5kZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjI0In0uZmEtdHJhbnNnZW5kZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjIyNSJ9LmZhLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmOCJ9LmZhLXRyYXNoLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWQifS5mYS10cmFzaC1yZXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjgyOSJ9LmZhLXRyYXNoLXJlc3RvcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjgyYSJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtdHJlbGxvOmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9LmZhLXRyb3BoeTpiZWZvcmV7Y29udGVudDoiXGYwOTEifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS10cnVjay1sb2FkaW5nOmJlZm9yZXtjb250ZW50OiJcZjRkZSJ9LmZhLXRydWNrLW1vbnN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjNiIn0uZmEtdHJ1Y2stbW92aW5nOmJlZm9yZXtjb250ZW50OiJcZjRkZiJ9LmZhLXRydWNrLXBpY2t1cDpiZWZvcmV7Y29udGVudDoiXGY2M2MifS5mYS10c2hpcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTUzIn0uZmEtdHR5OmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9LmZhLXR1bWJscjpiZWZvcmV7Y29udGVudDoiXGYxNzMifS5mYS10dW1ibHItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE3NCJ9LmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXR3aXRjaDpiZWZvcmV7Y29udGVudDoiXGYxZTgifS5mYS10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjA5OSJ9LmZhLXR3aXR0ZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MSJ9LmZhLXR5cG8zOmJlZm9yZXtjb250ZW50OiJcZjQyYiJ9LmZhLXViZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDAyIn0uZmEtdWJ1bnR1OmJlZm9yZXtjb250ZW50OiJcZjdkZiJ9LmZhLXVpa2l0OmJlZm9yZXtjb250ZW50OiJcZjQwMyJ9LmZhLXVtYnJhY286YmVmb3Jle2NvbnRlbnQ6IlxmOGU4In0uZmEtdW1icmVsbGE6YmVmb3Jle2NvbnRlbnQ6IlxmMGU5In0uZmEtdW1icmVsbGEtYmVhY2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWNhIn0uZmEtdW5jaGFydGVkOmJlZm9yZXtjb250ZW50OiJcZTA4NCJ9LmZhLXVuZGVybGluZTpiZWZvcmV7Y29udGVudDoiXGYwY2QifS5mYS11bmRvOmJlZm9yZXtjb250ZW50OiJcZjBlMiJ9LmZhLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYSJ9LmZhLXVuaXJlZ2lzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjQwNCJ9LmZhLXVuaXR5OmJlZm9yZXtjb250ZW50OiJcZTA0OSJ9LmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjlhIn0uZmEtdW5pdmVyc2l0eTpiZWZvcmV7Y29udGVudDoiXGYxOWMifS5mYS11bmxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0uZmEtdW5sb2NrOmJlZm9yZXtjb250ZW50OiJcZjA5YyJ9LmZhLXVubG9jay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTNlIn0uZmEtdW5zcGxhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDdjIn0uZmEtdW50YXBwZDpiZWZvcmV7Y29udGVudDoiXGY0MDUifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXBzOmJlZm9yZXtjb250ZW50OiJcZjdlMCJ9LmZhLXVzYjpiZWZvcmV7Y29udGVudDoiXGYyODcifS5mYS11c2VyOmJlZm9yZXtjb250ZW50OiJcZjAwNyJ9LmZhLXVzZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjQwNiJ9LmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjRmYSJ9LmZhLXVzZXItYXN0cm9uYXV0OmJlZm9yZXtjb250ZW50OiJcZjRmYiJ9LmZhLXVzZXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNGZjIn0uZmEtdXNlci1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmJkIn0uZmEtdXNlci1jbG9jazpiZWZvcmV7Y29udGVudDoiXGY0ZmQifS5mYS11c2VyLWNvZzpiZWZvcmV7Y29udGVudDoiXGY0ZmUifS5mYS11c2VyLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGZmIn0uZmEtdXNlci1mcmllbmRzOmJlZm9yZXtjb250ZW50OiJcZjUwMCJ9LmZhLXVzZXItZ3JhZHVhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTAxIn0uZmEtdXNlci1pbmp1cmVkOmJlZm9yZXtjb250ZW50OiJcZjcyOCJ9LmZhLXVzZXItbG9jazpiZWZvcmV7Y29udGVudDoiXGY1MDIifS5mYS11c2VyLW1kOmJlZm9yZXtjb250ZW50OiJcZjBmMCJ9LmZhLXVzZXItbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTAzIn0uZmEtdXNlci1uaW5qYTpiZWZvcmV7Y29udGVudDoiXGY1MDQifS5mYS11c2VyLW51cnNlOmJlZm9yZXtjb250ZW50OiJcZjgyZiJ9LmZhLXVzZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMzQifS5mYS11c2VyLXNlY3JldDpiZWZvcmV7Y29udGVudDoiXGYyMWIifS5mYS11c2VyLXNoaWVsZDpiZWZvcmV7Y29udGVudDoiXGY1MDUifS5mYS11c2VyLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjUwNiJ9LmZhLXVzZXItdGFnOmJlZm9yZXtjb250ZW50OiJcZjUwNyJ9LmZhLXVzZXItdGllOmJlZm9yZXtjb250ZW50OiJcZjUwOCJ9LmZhLXVzZXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjM1In0uZmEtdXNlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGMwIn0uZmEtdXNlcnMtY29nOmJlZm9yZXtjb250ZW50OiJcZjUwOSJ9LmZhLXVzZXJzLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3MyJ9LmZhLXVzcHM6YmVmb3Jle2NvbnRlbnQ6IlxmN2UxIn0uZmEtdXNzdW5uYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNDA3In0uZmEtdXRlbnNpbC1zcG9vbjpiZWZvcmV7Y29udGVudDoiXGYyZTUifS5mYS11dGVuc2lsczpiZWZvcmV7Y29udGVudDoiXGYyZTcifS5mYS12YWFkaW46YmVmb3Jle2NvbnRlbnQ6IlxmNDA4In0uZmEtdmVjdG9yLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY1Y2IifS5mYS12ZW51czpiZWZvcmV7Y29udGVudDoiXGYyMjEifS5mYS12ZW51cy1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjI2In0uZmEtdmVudXMtbWFyczpiZWZvcmV7Y29udGVudDoiXGYyMjgifS5mYS12ZXN0OmJlZm9yZXtjb250ZW50OiJcZTA4NSJ9LmZhLXZlc3QtcGF0Y2hlczpiZWZvcmV7Y29udGVudDoiXGUwODYifS5mYS12aWFjb2luOmJlZm9yZXtjb250ZW50OiJcZjIzNyJ9LmZhLXZpYWRlbzpiZWZvcmV7Y29udGVudDoiXGYyYTkifS5mYS12aWFkZW8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJhYSJ9LmZhLXZpYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDkyIn0uZmEtdmlhbHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDkzIn0uZmEtdmliZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDA5In0uZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdmlkZW8tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNGUyIn0uZmEtdmloYXJhOmJlZm9yZXtjb250ZW50OiJcZjZhNyJ9LmZhLXZpbWVvOmJlZm9yZXtjb250ZW50OiJcZjQwYSJ9LmZhLXZpbWVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTQifS5mYS12aW1lby12OmJlZm9yZXtjb250ZW50OiJcZjI3ZCJ9LmZhLXZpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNhIn0uZmEtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDc0In0uZmEtdmlydXMtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDc1In0uZmEtdmlydXNlczpiZWZvcmV7Y29udGVudDoiXGUwNzYifS5mYS12azpiZWZvcmV7Y29udGVudDoiXGYxODkifS5mYS12bnY6YmVmb3Jle2NvbnRlbnQ6IlxmNDBiIn0uZmEtdm9pY2VtYWlsOmJlZm9yZXtjb250ZW50OiJcZjg5NyJ9LmZhLXZvbGxleWJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NWYifS5mYS12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS12b2x1bWUtbXV0ZTpiZWZvcmV7Y29udGVudDoiXGY2YTkifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS11cDpiZWZvcmV7Y29udGVudDoiXGYwMjgifS5mYS12b3RlLXllYTpiZWZvcmV7Y29udGVudDoiXGY3NzIifS5mYS12ci1jYXJkYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzI5In0uZmEtdnVlanM6YmVmb3Jle2NvbnRlbnQ6IlxmNDFmIn0uZmEtd2Fsa2luZzpiZWZvcmV7Y29udGVudDoiXGY1NTQifS5mYS13YWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTU1In0uZmEtd2FyZWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZjQ5NCJ9LmZhLXdhdGNobWFuLW1vbml0b3Jpbmc6YmVmb3Jle2NvbnRlbnQ6IlxlMDg3In0uZmEtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzczIn0uZmEtd2F2ZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmODNlIn0uZmEtd2F6ZTpiZWZvcmV7Y29udGVudDoiXGY4M2YifS5mYS13ZWVibHk6YmVmb3Jle2NvbnRlbnQ6IlxmNWNjIn0uZmEtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMThhIn0uZmEtd2VpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjQ5NiJ9LmZhLXdlaWdodC1oYW5naW5nOmJlZm9yZXtjb250ZW50OiJcZjVjZCJ9LmZhLXdlaXhpbjpiZWZvcmV7Y29udGVudDoiXGYxZDcifS5mYS13aGF0c2FwcDpiZWZvcmV7Y29udGVudDoiXGYyMzIifS5mYS13aGF0c2FwcC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDBjIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS13aG1jczpiZWZvcmV7Y29udGVudDoiXGY0MGQifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLXdpa2lwZWRpYS13OmJlZm9yZXtjb250ZW50OiJcZjI2NiJ9LmZhLXdpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzJlIn0uZmEtd2luZG93LWNsb3NlOmJlZm9yZXtjb250ZW50OiJcZjQxMCJ9LmZhLXdpbmRvdy1tYXhpbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDAifS5mYS13aW5kb3ctbWluaW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQxIn0uZmEtd2luZG93LXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQyIn0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13aW5lLWJvdHRsZTpiZWZvcmV7Y29udGVudDoiXGY3MmYifS5mYS13aW5lLWdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjRlMyJ9LmZhLXdpbmUtZ2xhc3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjVjZSJ9LmZhLXdpeDpiZWZvcmV7Y29udGVudDoiXGY1Y2YifS5mYS13aXphcmRzLW9mLXRoZS1jb2FzdDpiZWZvcmV7Y29udGVudDoiXGY3MzAifS5mYS13b2R1OmJlZm9yZXtjb250ZW50OiJcZTA4OCJ9LmZhLXdvbGYtcGFjay1iYXR0YWxpb246YmVmb3Jle2NvbnRlbnQ6IlxmNTE0In0uZmEtd29uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU5In0uZmEtd29yZHByZXNzOmJlZm9yZXtjb250ZW50OiJcZjE5YSJ9LmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDExIn0uZmEtd3BiZWdpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYyOTcifS5mYS13cGV4cGxvcmVyOmJlZm9yZXtjb250ZW50OiJcZjJkZSJ9LmZhLXdwZm9ybXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjk4In0uZmEtd3ByZXNzcjpiZWZvcmV7Y29udGVudDoiXGYzZTQifS5mYS13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGFkIn0uZmEteC1yYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDk3In0uZmEteGJveDpiZWZvcmV7Y29udGVudDoiXGY0MTIifS5mYS14aW5nOmJlZm9yZXtjb250ZW50OiJcZjE2OCJ9LmZhLXhpbmctc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE2OSJ9LmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS15YW1tZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODQwIn0uZmEteWFuZGV4OmJlZm9yZXtjb250ZW50OiJcZjQxMyJ9LmZhLXlhbmRleC1pbnRlcm5hdGlvbmFsOmJlZm9yZXtjb250ZW50OiJcZjQxNCJ9LmZhLXlhcm46YmVmb3Jle2NvbnRlbnQ6IlxmN2UzIn0uZmEteWVscDpiZWZvcmV7Y29udGVudDoiXGYxZTkifS5mYS15ZW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS15aW4teWFuZzpiZWZvcmV7Y29udGVudDoiXGY2YWQifS5mYS15b2FzdDpiZWZvcmV7Y29udGVudDoiXGYyYjEifS5mYS15b3V0dWJlOmJlZm9yZXtjb250ZW50OiJcZjE2NyJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQzMSJ9LmZhLXpoaWh1OmJlZm9yZXtjb250ZW50OiJcZjYzZiJ9LnNyLW9ubHl7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAsMCwwLDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwuc3Itb25seS1mb2N1c2FibGU6Zm9jdXN7Y2xpcDphdXRvO2hlaWdodDphdXRvO21hcmdpbjowO292ZXJmbG93OnZpc2libGU7cG9zaXRpb246c3RhdGljO3dpZHRoOmF1dG99QGZvbnQtZmFjZXtmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpO3NyYzp1cmwoLi4vZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLi4vZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL2ZvbnRzL2ZhLWJyYW5kcy00MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC4uL2ZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC4uL2ZvbnRzL2ZhLWJyYW5kcy00MDAuc3ZnKSBmb3JtYXQoInN2ZyIpfS5mYWJ7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEJyYW5kcyJ9QGZvbnQtZmFjZXtmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgRnJlZSI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC4uL2ZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdCk7c3JjOnVybCguLi9mb250cy9mYS1yZWd1bGFyLTQwMC5lb3QpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLi4vZm9udHMvZmEtcmVndWxhci00MDAud29mZikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi9mb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLi4vZm9udHMvZmEtcmVndWxhci00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC4uL2ZvbnRzL2ZhLXJlZ3VsYXItNDAwLnN2ZykgZm9ybWF0KCJzdmciKX0uZmFiLC5mYXJ7Zm9udC13ZWlnaHQ6NDAwfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEZyZWUiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjkwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi9mb250cy9mYS1zb2xpZC05MDAuZW90KTtzcmM6dXJsKC4uL2ZvbnRzL2ZhLXNvbGlkLTkwMC5lb3QpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLi4vZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZjIiKSx1cmwoLi4vZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCguLi9mb250cy9mYS1zb2xpZC05MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC4uL2ZvbnRzL2ZhLXNvbGlkLTkwMC5zdmcpIGZvcm1hdCgic3ZnIil9LmZhLC5mYXIsLmZhc3tmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgRnJlZSJ9LmZhLC5mYXN7Zm9udC13ZWlnaHQ6OTAwfQ=="}},"time_used":40,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":16,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/main.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.784Z","timestamp":1785159464784,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/main.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 35212\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":318242,"size_decoded":35522,"mime_type":"text/css","magic":"ASCII text","md5":"3a228b8eb37c5620425b2b1b7b77264a","sha1":"e53585035b0bf42fd87a01d242312b97d3fe6685","sha256":"28b6447acf91f3383c59717e04a550e92c1cb97998b81d5f7a81f03976e6eba8","sha512":"0af30be80b5cc88464c1ae59c1689d65516360732e5f2d7e6256d4bd82e84739c3f7d04f8715f454ca5a39496ee149865c9a6bc868e98b805a65efd7a3158dd5","ssdeep":"6144:2vzVgHIDSEKfIDSEEk26k33WOlaIDSEUIDSEIG6fk/3IDSE7IDSEQIDSENHvIDS0:2vzVgHIDSEKfIDSEN26k33WOlaIDSEUx","tlshash":"cd6436fa25a41119741be4141fdb5f9633ac9003964eeef9bfc1245c8ec9be881a27cd","first_seen":"2026-07-27T07:42:30.758491Z","last_seen":"2026-07-27T13:38:47.783842Z","times_seen":3,"resource_available":false,"data":"Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgVGhlbWUgTmFtZTogQXBleGEgLSBNdWx0aXB1cnBvc2UgQnVzaW5lc3MgQ29uc3VsdGluZyBIVE1MIFRlbXBsYXRlCiAgIEF1dGhvciA6IGFsaXRoZW1lcwogICBTdXBwb3J0OiBodHRwczovL2FsaXRoZW1lcy50aWNrc3kuY29tCiAgIERlc2NyaXB0aW9uOiBBcGV4YSAtIE11bHRpcHVycG9zZSBCdXNpbmVzcyBDb25zdWx0aW5nIEhUTUwgVGVtcGxhdGUKICAgVmVyc2lvbjogMS4wCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLyogQ1NTIEluZGV4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAwMS4gVGhlbWUgRGVmYXVsdCBDU1MKICAgIDAyLiBIZWFkZXIKICAgIDAzLiBNb2JpbGUgTWVudQogICAgMDQuIEJhbm5lcgogICAgMDUuIFNsaWRlcgogICAgMDYuIEFib3V0CiAgICAwNy4gU2VydmljZXMKICAgIDA4LiBDaG9vc2UKICAgIDA5LiBQcm9qZWN0CiAgICAxMC4gUHJpY2luZwogICAgMTEuIFJlcXVlc3QKICAgIDEyLiBDb25zdWx0aW5nCiAgICAxMy4gVGVzdGltb25pYWwKICAgIDE0LiBGZWF0dXJlcwogICAgMTUuIE1hcnF1ZWUKICAgIDE2LiBGYWN0CiAgICAxNy4gVGVhbQogICAgMTguIENhbGwtYmFjawogICAgMTkuIEJsb2cKICAgIDIwLiBDb250YWN0CiAgICAyMS4gQnJhbmQKICAgIDIyLiA0MDQgRXJyb3IKICAgIDIzLiBGb290ZXIKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8qICAwMS4gVGhlbWUgRGVmYXVsdCBDU1MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkBpbXBvcnQgdXJsKCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMDs4MDAmYW1wO2ZhbWlseT1PdXRmaXQ6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwOzgwMDs5MDAmYW1wO2Rpc3BsYXk9c3dhcCIpOwo6cm9vdCB7CiAgLS10Zy1ib2R5LWZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOwogIC0tdGctaGVhZGluZy1mb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgLS10Zy1pY29uLWZvbnQtZmFtaWx5OiAiRm9udCBBd2Vzb21lIDUgRnJlZSI7CiAgLS10Zy1ib2R5LWZvbnQtc2l6ZTogMTZweDsKICAtLXRnLWJvZHktbGluZS1oZWlnaHQ6IDEuNTsKICAtLXRnLWhlYWRpbmctbGluZS1oZWlnaHQ6IDEuMjsKICAtLXRnLWJvZHktY29sb3I6ICMzRTQwNzM7CiAgLS10Zy1oZWFkaW5nLWNvbG9yOiAjMTQxNzZDOwogIC0tdGctdGhlbWUtcHJpbWFyeTogI0Y3QTQwMDsKICAtLXRnLXRoZW1lLXNlY29uZGFyeTogIzE5MUQ4ODsKICAtLXRnLWNvbG9yLWRhcmstYmx1ZTogIzBFMTA0QjsKICAtLXRnLWNvbG9yLXllbGxvdy1saWdodDogI0ZFRjZFNjsKICAtLXRnLWNvbG9yLXllbGxvdy1saWdodC0yOiAjRkZGQkYzOwogIC0tdGctY29sb3IteWVsbG93LWxpZ2h0LTM6ICNGNUVBQ0Q7CiAgLS10Zy1jb2xvci15ZWxsb3ctbGlnaHQtNDogI0ZERTNCMDsKICAtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQ6ICNmZmZmZmY7CiAgLS10Zy1jb2xvci1ncmF5LTE6ICNFNkVFRkY7CiAgLS10Zy1jb2xvci1ncmF5LTI6ICNCOEI5REE7CiAgLS10Zy1jb2xvci1ncmF5LTM6ICNFQ0Y2RkE7CiAgLS10Zy1jb2xvci1ncmF5LTQ6ICM4MTgyOTg7CiAgLS10Zy1jb2xvci1ncmF5LTU6ICNFMkUzRjE7CiAgLS10Zy1jb2xvci1ncmF5LTY6ICNGN0Y3Rjg7CiAgLS10Zy1jb2xvci1kYXJrOiAjMUMxQTRBOwogIC0tdGctY29sb3ItYmxhY2stMTogIzA2MDQyRTsKICAtLXRnLWNvbG9yLWJsYWNrLTI6ICMxNjE0Mzk7CiAgLS10Zy1ib3JkZXItMTogI0NGRERFMjsKICAtLXRnLWJvcmRlci0yOiAjRTZFN0YzOwogIC0tdGctYm9yZGVyLTM6ICNDNUM2RTQ7CiAgLS10Zy1ib3JkZXItNDogI0RCRTNFQjsKICAtLXRnLWJvcmRlci01OiAjOTU5N0M4OwogIC0tdGctYm9yZGVyLTY6ICNEQURCRUM7CiAgLS10Zy1ib3JkZXItNzogI0U5RTlGMDsKICAtLXRnLWJvcmRlci04OiAjRTA4QjAwOwogIC0tdGctYm9yZGVyLTk6ICNEMEQ2RTE7CiAgLS10Zy1mdy1leHRyYS1ib2xkOiA4MDA7CiAgLS10Zy1mdy1ib2xkOiA3MDA7CiAgLS10Zy1mdy1zZW1pLWJvbGQ6IDYwMDsKICAtLXRnLWZ3LW1lZGl1bTogNTAwOwogIC0tdGctZnctcmVndWxhcjogNDAwOwogIC0tdGctZnctbGlnaHQ6IDMwMDsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJVHlwb2dyYXBoeSBjc3Mgc3RhcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCmJvZHkgewogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1ib2R5LWZvbnQtZmFtaWx5KTsKICBmb250LXNpemU6IHZhcigtLXRnLWJvZHktZm9udC1zaXplKTsKICBmb250LXdlaWdodDogdmFyKC0tdGctZnctcmVndWxhcik7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS10Zy1ib2R5LWxpbmUtaGVpZ2h0KTsKfQoKaW1nLAouaW1nIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoKYSwKYnV0dG9uIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgb3V0bGluZTogbm9uZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoKYTpmb2N1cywKLmJ0bjpmb2N1cywKLmJ1dHRvbjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG91dGxpbmU6IG5vbmU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICAtbXMtYm94LXNoYWRvdzogbm9uZTsKICAtby1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KCmE6aG92ZXIsCmJ1dHRvbjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYnV0dG9uOmZvY3VzLAppbnB1dDpmb2N1cywKaW5wdXQ6Zm9jdXMsCnRleHRhcmVhLAp0ZXh0YXJlYTpmb2N1cyB7CiAgb3V0bGluZTogMDsKfQoKaDEsCmgyLApoMywKaDQsCmg1LApoNiB7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBtYXJnaW4tdG9wOiAwcHg7CiAgZm9udC13ZWlnaHQ6IHZhcigtLXRnLWZ3LWJvbGQpOwogIGxpbmUtaGVpZ2h0OiB2YXIoLS10Zy1oZWFkaW5nLWxpbmUtaGVpZ2h0KTsKICB0ZXh0LXRyYW5zZm9ybTogdW5zZXQ7Cn0KCmgxIGEsCmgyIGEsCmgzIGEsCmg0IGEsCmg1IGEsCmg2IGEgewogIGNvbG9yOiBpbmhlcml0Owp9CgpoMSB7CiAgZm9udC1zaXplOiAyLjVyZW07Cn0KCmgyIHsKICBmb250LXNpemU6IDJyZW07Cn0KCmgzIHsKICBmb250LXNpemU6IDEuNzVyZW07Cn0KCmg0IHsKICBmb250LXNpemU6IDEuNXJlbTsKfQoKaDUgewogIGZvbnQtc2l6ZTogMS4yNXJlbTsKfQoKaDYgewogIGZvbnQtc2l6ZTogMXJlbTsKfQoKLmxpc3Qtd3JhcCB7CiAgbWFyZ2luOiAwcHg7CiAgcGFkZGluZzogMHB4Owp9Ci5saXN0LXdyYXAgbGkgewogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCnAgewogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1ib2R5LWZvbnQtZmFtaWx5KTsKICBmb250LXNpemU6IHZhcigtLXRnLWJvZHktZm9udC1zaXplKTsKICBsaW5lLWhlaWdodDogdmFyKC0tdGctYm9keS1saW5lLWhlaWdodCk7CiAgZm9udC13ZWlnaHQ6IHZhcigtLXRnLWZ3LXJlZ3VsYXIpOwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgpociB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktMSk7CiAgYm9yZGVyLXRvcDogMCBub25lOwogIG1hcmdpbjogMzBweCAwOwogIHBhZGRpbmc6IDA7Cn0KCmxhYmVsIHsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtc2l6ZTogdmFyKC0tdGctYm9keS1mb250LXNpemUpOwogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1yZWd1bGFyKTsKfQoKaW5wdXRbdHlwZT1jb2xvcl0gewogIGFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kOiBub25lOwogIGJvcmRlcjogMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgaGVpZ2h0OiAxMDAlOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgYm9yZGVyLXJhZGl1czogNTAlOwp9CgoqOjotbW96LXNlbGVjdGlvbiB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHRleHQtc2hhZG93OiBub25lOwp9Cgo6Oi1tb3otc2VsZWN0aW9uIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KCjo6c2VsZWN0aW9uIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC0gSW5wdXQgUGxhY2Vob2xkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCmlucHV0LAp0ZXh0YXJlYSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9CgoqOjotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgZm9udC1zaXplOiB2YXIoLS10Zy1ib2R5LWZvbnQtc2l6ZSk7CiAgb3BhY2l0eTogMTsKfQoKKjo6cGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBmb250LXNpemU6IHZhcigtLXRnLWJvZHktZm9udC1zaXplKTsKICBvcGFjaXR5OiAxOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAtIENvbW1vbiBDbGFzc2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouZml4IHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgouY2xlYXIgewogIGNsZWFyOiBib3RoOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAtIEJvb3RzdHJhcCBDdXN0b20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouY29udGFpbmVyIHsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKfQoKLnJvdyB7CiAgLS1icy1ndXR0ZXIteDogMzBweDsKfQoKLmd1dHRlci15LTMwIHsKICAtLWJzLWd1dHRlci15OiAzMHB4Owp9CgouZ3gtMCB7CiAgLS1icy1ndXR0ZXIteDogMDsKfQoKLmd1dHRlci0yNCB7CiAgLS1icy1ndXR0ZXIteDogMjRweDsKfQoKLmNvbnRhaW5lciB7CiAgbWF4LXdpZHRoOiAxMjUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMjUwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogOTYwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA3MjBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA1NDBweDsKICB9Cn0KCi5jdXN0b20tY29udGFpbmVyIHsKICBtYXgtd2lkdGg6IDE3NjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTgwMHB4KSB7CiAgLmN1c3RvbS1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxNjgwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDk2MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5jdXN0b20tY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogNTQwcHg7CiAgfQp9CgouY3VzdG9tLWNvbnRhaW5lci10d28gewogIG1heC13aWR0aDogMTc0MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxODAwcHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lci10d28gewogICAgbWF4LXdpZHRoOiAxNTQwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lci10d28gewogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmN1c3RvbS1jb250YWluZXItdHdvIHsKICAgIG1heC13aWR0aDogOTYwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jdXN0b20tY29udGFpbmVyLXR3byB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lci10d28gewogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAuY3VzdG9tLWNvbnRhaW5lci10d28gewogICAgbWF4LXdpZHRoOiA1NDBweDsKICB9Cn0KCi5pbmNsdWRlLWJnIHsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkxLiBCdXR0b24gc3R5bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi50Zy1idXR0b24td3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7Cn0KCi5idG4gewogIHVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAgMDsKICBib3JkZXI6IG1lZGl1bSBub25lOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBsZXR0ZXItc3BhY2luZzogMDsKICBsaW5lLWhlaWdodDogMTsKICBtYXJnaW4tYm90dG9tOiAwOwogIHBhZGRpbmc6IDE4cHggMjRweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB6LWluZGV4OiAxOwp9Ci5idG46OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogODAwbXM7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogODAwbXM7CiAgd2lkdGg6IDIwMCU7CiAgaGVpZ2h0OiAyMDAlOwogIHRvcDogMTEwJTsKICBsZWZ0OiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHotaW5kZXg6IC0xOwp9Ci5idG46OmFmdGVyIHsKICBjb250ZW50OiAiXGYxMGEiOwogIGZvbnQtZmFtaWx5OiBmbGF0aWNvbjsKICBmb250LXdlaWdodDogdmFyKC0tdGctZnctYm9sZCk7CiAgbWFyZ2luLWxlZnQ6IDhweDsKICBmb250LXNpemU6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQouYnRuOmhvdmVyLCAuYnRuOmZvY3VzLXZpc2libGUgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouYnRuOmhvdmVyOmJlZm9yZSwgLmJ0bjpmb2N1cy12aXNpYmxlOmJlZm9yZSB7CiAgdG9wOiAtNDAlOwp9Ci5idG4tdHdvIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci5idG4tdHdvOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci5idG4tdHdvOjpiZWZvcmUgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5idG4uYnRuLWxvZ2luLXNvY2lhbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgd2lkdGg6IDEwMCU7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWJvZHktY29sb3IpOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjhweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQouYnRuLmJ0bi1sb2dpbi1zb2NpYWwgaW1nIHsKICBtYXJnaW4tcmlnaHQ6IDE1cHg7Cn0KLmJ0bi5idG4tbG9naW4tc29jaWFsOmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5idG4uYnRuLWxvZ2luLXNvY2lhbDpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5idG4uYnRuLWxvZ2luIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXItcmFkaXVzOiAxMXB4OwogIHBhZGRpbmc6IDIwcHggMjZweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KLmJ0bi5idG4tbG9naW46aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLmJ0bi5ib3JkZXIteWVsbG93LWJ0biB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIHBhZGRpbmc6IDE3cHggMjRweDsKfQouYnRuLmJvcmRlci15ZWxsb3ctYnRuOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5idG4uYm9yZGVyLXllbGxvdy1idG46aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoKLmJvcmRlci1idG4gewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgcGFkZGluZzogMTdweCAyNHB4Owp9Ci5ib3JkZXItYnRuOjpiZWZvcmUgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmJvcmRlci1idG46aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDAwLiBQcmVsb2FkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiNwcmVsb2FkZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMTAwJTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgbWFyZ2luLXRvcDogMHB4OwogIHRvcDogMHB4OwogIHotaW5kZXg6IDk5OTk7Cn0KI3ByZWxvYWRlciAubG9hZGVyIC5sb2FkZXItY29udGFpbmVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgbGVmdDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgd2lkdGg6IDEwMHB4OwogIGhlaWdodDogMTAwcHg7CiAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tdGctY29sb3ItZ3JheS0xKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7Cn0KI3ByZWxvYWRlciAubG9hZGVyIC5sb2FkZXItY29udGFpbmVyOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICB0b3A6IDUwJTsKICBsZWZ0OiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB3aWR0aDogMTAwcHg7CiAgaGVpZ2h0OiAxMDBweDsKICBib3JkZXItdG9wOiAzcHggc29saWQgdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGFuaW1hdGlvbjogbG9hZGVyc3BpbiAxLjhzIGluZmluaXRlIGVhc2UtaW4tb3V0OwogIC13ZWJraXQtYW5pbWF0aW9uOiBsb2FkZXJzcGluIDEuOHMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7Cn0KI3ByZWxvYWRlciAubG9hZGVyIC5sb2FkZXItaWNvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIGxlZnQ6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHdpZHRoOiA4MHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQojcHJlbG9hZGVyIC5sb2FkZXIgLmxvYWRlci1pY29uIGltZyB7CiAgYW5pbWF0aW9uOiBsb2FkZXJwdWxzZSBhbHRlcm5hdGUgOTAwbXMgaW5maW5pdGU7CiAgd2lkdGg6IDQwcHg7Cn0KCkBrZXlmcmFtZXMgbG9hZGVyc3BpbiB7CiAgMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgbG9hZGVyc3BpbiB7CiAgMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGxvYWRlcnB1bHNlIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICB9Cn0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLSBCYWNrZ3JvdW5kIGNvbG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouZ3JleS1iZyB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0xKTsKfQoKLndoaXRlLWJnIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoKLmJsYWNrLWJnIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ibGFjay0xKTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJMDQuIE9mZkNhbnZhcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLm9mZkNhbnZhc19faW5mbyB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCkgbm9uZSByZXBlYXQgc2Nyb2xsIDAgMDsKICBoZWlnaHQ6IDEwMCU7CiAgcGFkZGluZzogMzBweDsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgdG9wOiAwOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44Nik7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44Nik7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44Nik7CiAgd2lkdGg6IDM0MHB4OwogIHotaW5kZXg6IDk5OTsKICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9Ci5vZmZDYW52YXNfX2luZm8uYWN0aXZlIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KLm9mZkNhbnZhc19faW5mbzo6LXdlYmtpdC1zY3JvbGxiYXIgewogIHdpZHRoOiAwcHg7Cn0KLm9mZkNhbnZhc19fY2xvc2UtaWNvbiB7CiAgbWFyZ2luLXRvcDogLTE2cHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLm9mZkNhbnZhc19fY2xvc2UtaWNvbiBidXR0b24gewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMCBub25lOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC1zaXplOiAyMHB4OwogIHBhZGRpbmc6IDA7Cn0KLm9mZkNhbnZhc19fbG9nbyBpbWcgewogIG1heC1oZWlnaHQ6IDM0cHg7Cn0KLm9mZkNhbnZhc19fc2lkZS1pbmZvIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgcGFkZGluZy10b3A6IDI1cHg7Cn0KLm9mZkNhbnZhc19fc2lkZS1pbmZvIC5jb250YWN0LWxpc3QgaDQgewogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc2l6ZTogMThweDsKfQoub2ZmQ2FudmFzX19zaWRlLWluZm8gLmNvbnRhY3QtbGlzdCBwIHsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgbWFyZ2luOiAwOwogIG1hcmdpbi1ib3R0b206IDJweDsKICBsaW5lLWhlaWdodDogMjZweDsKfQoub2ZmQ2FudmFzX19zb2NpYWwtaWNvbiBhIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1yaWdodDogMjBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLm9mZkNhbnZhc19fc29jaWFsLWljb24gYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLm9mZkNhbnZhc19fb3Zlcmx5IHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgYmFja2dyb3VuZDogIzAwMDsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDEwMCU7CiAgei1pbmRleDogOTk7CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoub2ZmQ2FudmFzX19vdmVybHkuYWN0aXZlIHsKICBvcGFjaXR5OiAwLjc7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJMDQuIFNlYXJjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLnNlYXJjaF9fcG9wdXAgewogIHBhZGRpbmctdG9wOiA3MHB4OwogIHBhZGRpbmctYm90dG9tOiAxMDBweDsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogIHotaW5kZXg6IDk5OwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA4MHB4KSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDgwcHgpKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA4MHB4KSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA4MHB4KSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA4MHB4KSk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dCwgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0OwogIC1tb3otdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQsIG9wYWNpdHkgMC4zcyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dCwgb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0OwogIHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7Cn0KLnNlYXJjaF9fcG9wdXAuc2VhcmNoLW9wZW5lZCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7CiAgdHJhbnNpdGlvbi1kZWxheTogMHM7CiAgei1pbmRleDogOTk5OTk5OTk7Cn0KLnNlYXJjaF9fcG9wdXAuc2VhcmNoLW9wZW5lZCAuc2VhcmNoX19pbnB1dCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICBvcGFjaXR5OiAxOwogIHRyYW5zaXRpb24tZGVsYXk6IDAuM3M7Cn0KLnNlYXJjaF9fcG9wdXAuc2VhcmNoLW9wZW5lZCAuc2VhcmNoX19pbnB1dDo6YWZ0ZXIgewogIHdpZHRoOiAxMDAlOwogIHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7Cn0KLnNlYXJjaF9faW5wdXQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDgwcHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uLWRlbGF5OiAwLjVzOwogIG9wYWNpdHk6IDA7Cn0KLnNlYXJjaF9faW5wdXQ6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY29udGVudDogIiI7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IDAlOwogIGhlaWdodDogMXB4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIHRyYW5zaXRpb24tZGVsYXk6IDAuM3M7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQouc2VhcmNoX19pbnB1dCBpbnB1dCB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICBvdXRsaW5lOiAwOwogIGZvbnQtc2l6ZTogMjRweDsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHBhZGRpbmc6IDA7CiAgcGFkZGluZy1yaWdodDogMzBweDsKfQouc2VhcmNoX19pbnB1dCBpbnB1dDo6cGxhY2Vob2xkZXIgewogIGZvbnQtc2l6ZTogMjRweDsKfQouc2VhcmNoX19pbnB1dCBidXR0b24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICByaWdodDogMDsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgZm9udC1zaXplOiAxOHB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBib3JkZXI6IG5vbmU7CiAgcGFkZGluZzogMCAwOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9Ci5zZWFyY2hfX2Nsb3NlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMCU7CiAgcmlnaHQ6IDIlOwogIHotaW5kZXg6IDI7Cn0KLnNlYXJjaC1jbG9zZS1idG4gewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9Ci5zZWFyY2gtcG9wdXAtb3ZlcmxheSB7CiAgcG9zaXRpb246IGZpeGVkOwogIHJpZ2h0OiAwOwogIHRvcDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgei1pbmRleDogNDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgYmFja2dyb3VuZDogIzAwMGQyNTsKfQouc2VhcmNoLXBvcHVwLW92ZXJsYXkuc2VhcmNoLXBvcHVwLW92ZXJsYXktb3BlbiB7CiAgb3BhY2l0eTogMC41NTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHRyYW5zaXRpb24tZGVsYXk6IDBzOwp9Cgouc2VhcmNoLWlucHV0LWZpZWxkIH4gLnNlYXJjaC1mb2N1cy1ib3JkZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDA7CiAgbGVmdDogYXV0bzsKICByaWdodDogMDsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICB0cmFuc2l0aW9uOiBhbGwgMC41czsKfQouc2VhcmNoLWlucHV0LWZpZWxkOmZvY3VzIH4gLnNlYXJjaC1mb2N1cy1ib3JkZXIgewogIHdpZHRoOiAxMDAlOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IGF1dG87CiAgdHJhbnNpdGlvbjogYWxsIDAuNXM7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PQowNC4gQnJlYWRjcnVtYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouYnJlYWRjcnVtYl9fYmcgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDEwNXB4IDAgMTEwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJyZWFkY3J1bWJfX2JnIHsKICAgIHBhZGRpbmc6IDg1cHggMCA5MHB4OwogIH0KfQouYnJlYWRjcnVtYl9fY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgZm9udC1zaXplOiA0OHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5icmVhZGNydW1iX19jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDQycHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5icmVhZGNydW1iX19jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDQwcHg7CiAgfQp9Ci5icmVhZGNydW1iX19jb250ZW50IC5icmVhZGNydW1iIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5icmVhZGNydW1iX19jb250ZW50IC5icmVhZGNydW1iLWl0ZW0gewogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmJyZWFkY3J1bWJfX2NvbnRlbnQgLmJyZWFkY3J1bWItaXRlbSBhIHsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7Cn0KLmJyZWFkY3J1bWJfX2NvbnRlbnQgLmJyZWFkY3J1bWItaXRlbSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmJyZWFkY3J1bWJfX3NoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci5icmVhZGNydW1iX19zaGFwZSBpbWc6bnRoLWNoaWxkKDEpIHsKICBsZWZ0OiAyJTsKICB0b3A6IDE0JTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJlYWRjcnVtYl9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgICBsZWZ0OiAxMCU7CiAgfQp9Ci5icmVhZGNydW1iX19zaGFwZSBpbWc6bnRoLWNoaWxkKDIpIHsKICBsZWZ0OiA4JTsKICBib3R0b206IDIwJTsKICBhbmltYXRpb246IHJpZ2h0VG9MZWZ0IDRzIGluZmluaXRlIGxpbmVhcjsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJlYWRjcnVtYl9fc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICBsZWZ0OiA0MCU7CiAgfQp9Ci5icmVhZGNydW1iX19zaGFwZSBpbWc6bnRoLWNoaWxkKDMpIHsKICBsZWZ0OiAyMyU7CiAgYm90dG9tOiAwOwp9Ci5icmVhZGNydW1iX19zaGFwZSBpbWc6bnRoLWNoaWxkKDQpIHsKICByaWdodDogNDIlOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJlYWRjcnVtYl9fc2hhcGUgaW1nOm50aC1jaGlsZCg0KSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYnJlYWRjcnVtYl9fc2hhcGUgaW1nOm50aC1jaGlsZCg1KSB7CiAgcmlnaHQ6IDI1JTsKICB0b3A6IDE1JTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJlYWRjcnVtYl9fc2hhcGUgaW1nOm50aC1jaGlsZCg1KSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW0gewogIHBhZGRpbmctbGVmdDogMTBweDsKfQouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBjb250ZW50OiAiXGYwNTQiOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1pY29uLWZvbnQtZmFtaWx5KTsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMTsKICBtYXJnaW4tdG9wOiA2cHg7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDAwLiBTY3JvbGwgVG9wCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouc2Nyb2xsX190b3AgewogIHdpZHRoOiA0MHB4OwogIGhlaWdodDogNDBweDsKICBsaW5lLWhlaWdodDogNDBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcG9zaXRpb246IGZpeGVkOwogIGJvdHRvbTogLTEwJTsKICByaWdodDogNTBweDsKICBmb250LXNpemU6IDE2cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHotaW5kZXg6IDU7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgdHJhbnNpdGlvbjogMXMgZWFzZTsKICBib3JkZXI6IG5vbmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zY3JvbGxfX3RvcCB7CiAgICByaWdodDogMjVweDsKICAgIGJvdHRvbTogMjVweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNjcm9sbF9fdG9wIHsKICAgIHJpZ2h0OiAzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2Nyb2xsX190b3AgewogICAgcmlnaHQ6IDE1cHg7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQouc2Nyb2xsX190b3Aub3BlbiB7CiAgYm90dG9tOiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zY3JvbGxfX3RvcC5vcGVuIHsKICAgIGJvdHRvbTogMTVweDsKICB9Cn0KLnNjcm9sbF9fdG9wOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwogIGNvbnRlbnQ6ICIiOwogIHRvcDogMTAwJTsKICBsZWZ0OiA1JTsKICBoZWlnaHQ6IDEwcHg7CiAgd2lkdGg6IDkwJTsKICBvcGFjaXR5OiAxOwogIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGNlbnRlciwgcmdiYSgwLCAwLCAwLCAwLjI1KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA4MCUpOwp9Ci5zY3JvbGxfX3RvcDpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCTAwLiBTZWN0aW9uIFRpdGxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouc2VjdGlvbi10aXRsZSAuc3ViLXRpdGxlIHsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogNjAwOwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogNDBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzJweDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzRweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIGJyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5zZWN0aW9uLXRpdGxlIHAgewogIG1hcmdpbi1ib3R0b206IDA7CiAgbWFyZ2luLXRvcDogMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VjdGlvbi10aXRsZSBwIGJyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5zZWN0aW9uLXRpdGxlLndoaXRlLXRpdGxlIC50aXRsZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkwMi4gSGVhZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoudHJhbnNwYXJlbnQtaGVhZGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDBweDsKICB3aWR0aDogMTAwJTsKICB6LWluZGV4OiA5OwogIGhlaWdodDogYXV0bzsKfQoKLnRnLWhlYWRlcl9fdG9wIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1kYXJrLWJsdWUpOwogIHBhZGRpbmc6IDEycHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGctaGVhZGVyX190b3AgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLnRnLWhlYWRlcl9fdG9wLWluZm8gewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAyNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGctaGVhZGVyX190b3AtaW5mbyB7CiAgICBnYXA6IDE1cHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50Zy1oZWFkZXJfX3RvcC1pbmZvIHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICB9Cn0KLnRnLWhlYWRlcl9fdG9wLWluZm8gbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA4cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMSk7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLnRnLWhlYWRlcl9fdG9wLWluZm8gbGkgaSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAwOwp9Ci50Zy1oZWFkZXJfX3RvcC1pbmZvIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTEpOwp9Ci50Zy1oZWFkZXJfX3RvcC1pbmZvIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGctaGVhZGVyX190b3AtaW5mby10aHJlZSBsaSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Ci50Zy1oZWFkZXJfX3RvcC1pbmZvLXRocmVlIGxpIGkgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTQpOwp9Ci50Zy1oZWFkZXJfX3RvcC1pbmZvLXRocmVlIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQoudGctaGVhZGVyX190b3AtaW5mby10aHJlZSBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnLWhlYWRlcl9fdG9wLXJpZ2h0IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgZ2FwOiAyNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGctaGVhZGVyX190b3AtcmlnaHQgewogICAgZ2FwOiAxNXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGctaGVhZGVyX190b3AtcmlnaHQgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQp9Ci50Zy1oZWFkZXJfX3RvcC1yaWdodCBsaSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDhweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0xKTsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQoudGctaGVhZGVyX190b3AtcmlnaHQgbGkgaSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAwOwp9Ci50Zy1oZWFkZXJfX3RvcC1yaWdodCBsaSBhIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0xKTsKfQoudGctaGVhZGVyX190b3AtcmlnaHQgbGkgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50Zy1oZWFkZXJfX3RvcC1yaWdodC10aHJlZSBsaSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Ci50Zy1oZWFkZXJfX3RvcC1yaWdodC10aHJlZSBsaSBpIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS00KTsKfQoudGctaGVhZGVyX190b3AtcmlnaHQtdGhyZWUgbGkgYSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Ci50Zy1oZWFkZXJfX3RvcC1yaWdodC10aHJlZSBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnLWhlYWRlcl9fdG9wLXR3byB7CiAgcGFkZGluZzogMTVweCAzMHB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10Zy1jb2xvci1ncmF5LTUpOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGctaGVhZGVyX190b3AtdHdvIHsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICB9Cn0KLnRnLWhlYWRlcl9fdG9wLXR3byAubGlzdC13cmFwIGxpIHsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLnRnLWhlYWRlcl9fdG9wLXR3byAubGlzdC13cmFwIGxpIGkgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTQpOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fdG9wLXR3byAubGlzdC13cmFwIGxpIGkgewogICAgZm9udC1zaXplOiAxOHB4OwogIH0KfQoudGctaGVhZGVyX190b3AtdHdvIC5saXN0LXdyYXAgbGkgYSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Ci50Zy1oZWFkZXJfX3RvcC10d28gLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnLWhlYWRlcl9fdG9wLXRocmVlIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAyMHB4IDA7Cn0KLnRnLWhlYWRlcl9faW5uZXItd3JhcCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci50Zy1oZWFkZXJfX2xvZ28td3JhcCB7CiAgd2lkdGg6IDEyLjUlOwogIGZsZXg6IDAgMCBhdXRvOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fbG9nby13cmFwIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci50Zy1oZWFkZXJfX3JpZ2h0LXNpZGUgewogIGZsZXgtZ3JvdzogMTsKICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktNSk7Cn0KLnRnLWhlYWRlcl9fYXJlYSB7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xKSAwcHggMnB4IDVweCAwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fYXJlYSB7CiAgICBwYWRkaW5nOiAyNXB4IDA7CiAgfQp9Ci50Zy1oZWFkZXJfX2FyZWEtdHdvIHsKICBwYWRkaW5nOiAwIDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50Zy1oZWFkZXJfX2FyZWEtdHdvIHsKICAgIHBhZGRpbmc6IDAgMjBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fYXJlYS10d28gewogICAgcGFkZGluZzogMjBweCAyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGctaGVhZGVyX19hcmVhLXR3byB7CiAgICBwYWRkaW5nOiAyMHB4IDE1cHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGctaGVhZGVyX19hcmVhLXR3byAubG9nby5kLW5vbmUgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IC1tb3otYm94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogIH0KfQoudGctaGVhZGVyX19hcmVhLXR3byAudGdtZW51X19uYXYgewogIGFsaWduLWl0ZW1zOiBub3JtYWw7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fYXJlYS10d28gLnRnbWVudV9fbmF2IHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgfQp9Ci50Zy1oZWFkZXJfX2FyZWEtdHdvIC50Z21lbnVfX25hdmJhci13cmFwIHVsIHsKICBtYXJnaW46IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50Zy1oZWFkZXJfX2FyZWEtdHdvIC50Z21lbnVfX25hdmJhci13cmFwIHVsIHsKICAgIG1hcmdpbjogMCAwIDAgYXV0bzsKICB9Cn0KLnRnLWhlYWRlcl9fYXJlYS10d28gLnRnbWVudV9fbmF2YmFyLXdyYXAgdWwgbGkgYSB7CiAgcGFkZGluZzogMzdweCAwcHg7Cn0KLnRnLWhlYWRlcl9fYXJlYS10d28uc3RpY2t5LW1lbnUgLmxvZ28uZC1ub25lIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IC1tb3otYm94ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtYXJnaW4tcmlnaHQ6IDEwMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGctaGVhZGVyX19hcmVhLXR3by5zdGlja3ktbWVudSAubG9nby5kLW5vbmUgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogIH0KfQoudGctaGVhZGVyX19hcmVhLXRocmVlIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBub25lOwp9Ci50Zy1oZWFkZXJfX2FyZWEtdGhyZWUgLnRnbWVudV9fbmF2YmFyLXdyYXAgdWwgewogIG1hcmdpbjogMCBhdXRvOwp9Ci50Zy1oZWFkZXJfX2FyZWEtZm91ciB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICAtbXMtYm94LXNoYWRvdzogbm9uZTsKICAtby1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRnLWhlYWRlcl9fYXJlYS1mb3VyIHsKICAgIHBhZGRpbmc6IDAgMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRnLWhlYWRlcl9fYXJlYS1mb3VyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogICAgcGFkZGluZzogMjBweCAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggNXB4IDEwcHggMHB4ICNFRUY0RjY7CiAgICAtbW96LWJveC1zaGFkb3c6IDBweCA1cHggMTBweCAwcHggI0VFRjRGNjsKICAgIC1tcy1ib3gtc2hhZG93OiAwcHggNXB4IDEwcHggMHB4ICNFRUY0RjY7CiAgICAtby1ib3gtc2hhZG93OiAwcHggNXB4IDEwcHggMHB4ICNFRUY0RjY7CiAgICBib3gtc2hhZG93OiAwcHggNXB4IDEwcHggMHB4ICNFRUY0RjY7CiAgfQp9Ci50Zy1oZWFkZXJfX2FyZWEtZm91ci5zdGlja3ktbWVudSAudGdtZW51X193cmFwIHsKICBib3JkZXI6IG5vbmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAtby1ib3JkZXItcmFkaXVzOiAwOwogIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogIGJvcmRlci1yYWRpdXM6IDA7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICAtbXMtYm94LXNoYWRvdzogbm9uZTsKICAtby1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLnRnLWhlYWRlcl9fYXJlYS1mb3VyIC50Z21lbnVfX3dyYXAgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDVweCAxMHB4IDBweCAjRUVGNEY2OwogIC1tb3otYm94LXNoYWRvdzogMHB4IDVweCAxMHB4IDBweCAjRUVGNEY2OwogIC1tcy1ib3gtc2hhZG93OiAwcHggNXB4IDEwcHggMHB4ICNFRUY0RjY7CiAgLW8tYm94LXNoYWRvdzogMHB4IDVweCAxMHB4IDBweCAjRUVGNEY2OwogIGJveC1zaGFkb3c6IDBweCA1cHggMTBweCAwcHggI0VFRjRGNjsKICBib3JkZXI6IDFweCBzb2xpZCAjRDdFNEVBOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIHBhZGRpbmc6IDAgMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGctaGVhZGVyX19hcmVhLWZvdXIgLnRnbWVudV9fd3JhcCB7CiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50Zy1oZWFkZXJfX2FyZWEtZm91ciAudGdtZW51X193cmFwIHsKICAgIHBhZGRpbmc6IDA7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtby1ib3JkZXItcmFkaXVzOiAwOwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgICBib3JkZXItcmFkaXVzOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgLW1vei1ib3gtc2hhZG93OiBub25lOwogICAgLW1zLWJveC1zaGFkb3c6IG5vbmU7CiAgICAtby1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICB9Cn0KLnRnLWhlYWRlcl9fYXJlYS1mb3VyIC50Z21lbnVfX25hdmJhci13cmFwIHVsIHsKICBtYXJnaW46IDAgYXV0bzsKfQoudGctaGVhZGVyX19hcmVhLWZvdXIgLnRnbWVudV9fbmF2YmFyLXdyYXAgdWwgbGkgYSB7CiAgcGFkZGluZzogMjZweCAwcHg7Cn0KLnRnLWhlYWRlcl9fYXJlYS1maXZlIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIC1tcy1ib3gtc2hhZG93OiBub25lOwogIC1vLWJveC1zaGFkb3c6IG5vbmU7CiAgYm94LXNoYWRvdzogbm9uZTsKfQoudGctaGVhZGVyX19hcmVhLWZpdmUgLnRnbWVudV9fbmF2YmFyLXdyYXAgdWwgewogIG1hcmdpbjogMCBhdXRvOwp9Ci50Zy1oZWFkZXJfX2FyZWEgLm1vYmlsZS1uYXYtdG9nZ2xlciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsb2F0OiByaWdodDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgZGlzcGxheTogbm9uZTsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmb250LXNpemU6IDE4cHg7CiAgYm94LXNoYWRvdzogMHB4IDJweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGctaGVhZGVyX19hcmVhIC5tb2JpbGUtbmF2LXRvZ2dsZXIgewogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbW96LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgZGlzcGxheTogZmxleDsKICB9Cn0KLnRnLWhlYWRlcl9fYXJlYSAubW9iaWxlLW5hdi10b2dnbGVyIHN2ZyB7CiAgd2lkdGg6IDE4cHg7Cn0KCi50Z21lbnVfX25hdiB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmbGV4LXdyYXA6IHdyYXA7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50Z21lbnVfX25hdiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgfQp9Ci50Z21lbnVfX25hdiAubG9nbyBpbWcgewogIG1heC1oZWlnaHQ6IDUwcHg7Cn0KLnRnbWVudV9fbmF2YmFyLXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZ3JvdzogMTsKfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogcm93OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nOiAwIDA7CiAgbWFyZ2luOiAwIDAgMCAxMjVweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRnbWVudV9fbmF2YmFyLXdyYXAgPiB1bCB7CiAgICBtYXJnaW46IDAgMCAwIDEwMHB4OwogIH0KfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsID4gbGkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1hcmdpbi1yaWdodDogMzBweDsKfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsID4gbGk6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLXJpZ2h0OiAwOwp9Ci50Z21lbnVfX25hdmJhci13cmFwID4gdWwgPiBsaSBhIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZGFyay1ibHVlKTsKICBwYWRkaW5nOiA0MnB4IDBweDsKICBkaXNwbGF5OiBibG9jazsKICBsaW5lLWhlaWdodDogMTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsID4gbGkgLnN1Yi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDEwMCU7CiAgbWluLXdpZHRoOiAyMzBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZjVmNWY1OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIG1hcmdpbjogMDsKICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgMCk7CiAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEsIDApOwogIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEsIDApOwogIC1vLXRyYW5zZm9ybTogc2NhbGUoMSwgMCk7CiAgdHJhbnNmb3JtOiBzY2FsZSgxLCAwKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAzMHB4IDcwcHggMHB4IHJnYmEoMTM3LCAxMzksIDE0MiwgMC4xNSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggMzBweCA3MHB4IDBweCByZ2JhKDEzNywgMTM5LCAxNDIsIDAuMTUpOwogIGJveC1zaGFkb3c6IDBweCAzMHB4IDcwcHggMHB4IHJnYmEoMTM3LCAxMzksIDE0MiwgMC4xNSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIHBhZGRpbmc6IDE4cHggMDsKICBkaXNwbGF5OiBibG9jazsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgb3BhY2l0eTogMDsKICB6LWluZGV4OiA5Owp9Ci50Z21lbnVfX25hdmJhci13cmFwID4gdWwgPiBsaSAuc3ViLW1lbnUgLnN1Yi1tZW51IHsKICByaWdodDogYXV0bzsKICBsZWZ0OiAxMDAlOwogIHRvcDogMDsKfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsID4gbGkgLnN1Yi1tZW51ID4gbGkgewogIG1hcmdpbi1sZWZ0OiAwOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgZGlzcGxheTogYmxvY2s7Cn0KLnRnbWVudV9fbmF2YmFyLXdyYXAgPiB1bCA+IGxpIC5zdWItbWVudSA+IGxpIGEgewogIHBhZGRpbmc6IDhweCAxNXB4IDhweCAyNXB4OwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci50Z21lbnVfX25hdmJhci13cmFwID4gdWwgPiBsaSAuc3ViLW1lbnUgPiBsaTpob3ZlciA+IGEsIC50Z21lbnVfX25hdmJhci13cmFwID4gdWwgPiBsaSAuc3ViLW1lbnUgPiBsaS5hY3RpdmUgPiBhIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnbWVudV9fbmF2YmFyLXdyYXAgPiB1bCA+IGxpIC5zdWItbWVudSA+IGxpOmhvdmVyID4gYSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoOHB4KTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoOHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoOHB4KTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoOHB4KTsKfQoudGdtZW51X19uYXZiYXItd3JhcCA+IHVsID4gbGk6aG92ZXIgPiAuc3ViLW1lbnUgewogIG9wYWNpdHk6IDE7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICB0cmFuc2Zvcm06IHNjYWxlKDEpOwp9Ci50Z21lbnVfX25hdmJhci13cmFwID4gdWwgPiBsaS5hY3RpdmUgYSwgLnRnbWVudV9fbmF2YmFyLXdyYXAgPiB1bCA+IGxpOmhvdmVyIGEgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGdtZW51X19tYWluLW1lbnUgbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuZHJvcGRvd24tYnRuIHsKICBkaXNwbGF5OiBub25lOwp9Ci50Z21lbnVfX21haW4tbWVudSBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuID4gYTo6YWZ0ZXIgewogIGNvbnRlbnQ6ICJcZjEwNyI7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaWNvbi1mb250LWZhbWlseSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWRhcmstYmx1ZSk7CiAgbWFyZ2luLWxlZnQ6IDhweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9Ci50Z21lbnVfX21haW4tbWVudSBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuID4gYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50Z21lbnVfX21haW4tbWVudSBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyID4gYTo6YWZ0ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGdtZW51X19tYWluLW1lbnUgbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbi5hY3RpdmUgPiBhOjphZnRlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50Z21lbnVfX2FjdGlvbiB7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICB9Cn0KLnRnbWVudV9fYWN0aW9uIHVsIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci50Z21lbnVfX2FjdGlvbiB1bCBsaSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1hcmdpbi1sZWZ0OiAzMHB4Owp9Ci50Z21lbnVfX2FjdGlvbiB1bCBsaSBhIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBmb250LXNpemU6IDE0cHg7Cn0KLnRnbWVudV9fYWN0aW9uIHVsIGxpOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKfQoudGdtZW51X19hY3Rpb24gdWwgLmhlYWRlci1zZWFyY2ggYSB7CiAgZm9udC1zaXplOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci50Z21lbnVfX2FjdGlvbiB1bCAuaGVhZGVyLXNlYXJjaCBhIHN2ZyB7CiAgd2lkdGg6IDIwcHg7Cn0KLnRnbWVudV9fYWN0aW9uIHVsIC5oZWFkZXItc2VhcmNoIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGdtZW51X19hY3Rpb24gdWwgLm9mZkNhbnZhcy1tZW51IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci50Z21lbnVfX2FjdGlvbiB1bCAub2ZmQ2FudmFzLW1lbnUgLm1lbnUtdGlnZ2VyIHsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBmb250LXNpemU6IDE4cHg7CiAgYm94LXNoYWRvdzogMHB4IDJweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKfQoudGdtZW51X19hY3Rpb24gdWwgLm9mZkNhbnZhcy1tZW51IC5tZW51LXRpZ2dlciBzdmcgewogIHdpZHRoOiAxOHB4OwogIGhlaWdodDogMThweDsKfQoudGdtZW51X19hY3Rpb24gdWwgLm9mZkNhbnZhcy1tZW51IC5tZW51LXRpZ2dlcjpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGdtZW51X19hY3Rpb24gdWwgLmhlYWRlci1idG4gewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLnRnbWVudV9fYWN0aW9uIHVsIC5oZWFkZXItYnRuIC5idG4gewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDE0cHg7Cn0KLnRnbWVudV9fYWN0aW9uIHVsIC5oZWFkZXItYnRuIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci50Z21lbnVfX2FjdGlvbi10d28gPiAubGlzdC13cmFwIHsKICBoZWlnaHQ6IDEwMCU7CiAgYWxpZ24taXRlbXM6IG5vcm1hbDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRnbWVudV9fYWN0aW9uLXR3byA+IC5saXN0LXdyYXAgewogICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgfQp9Ci50Z21lbnVfX2FjdGlvbi10d28gPiAubGlzdC13cmFwIGxpIHsKICBtYXJnaW4tbGVmdDogMDsKfQoudGdtZW51X19hY3Rpb24tdHdvID4gLmxpc3Qtd3JhcCBsaS5oZWFkZXItc2VhcmNoIGEgewogIHdpZHRoOiA4NXB4OwogIGhlaWdodDogMTAwJTsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktNSk7CiAgYm9yZGVyLXRvcDogbm9uZTsKICBib3JkZXItYm90dG9tOiBub25lOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50Z21lbnVfX2FjdGlvbi10d28gPiAubGlzdC13cmFwIGxpLmhlYWRlci1zZWFyY2ggYSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlcjogbm9uZTsKICB9Cn0KLnRnbWVudV9fYWN0aW9uLXR3byA+IC5saXN0LXdyYXAgbGkub2ZmQ2FudmFzLW1lbnUgLm1lbnUtdGlnZ2VyIHsKICB3aWR0aDogODVweDsKICBoZWlnaHQ6IDEwMCU7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKICBib3gtc2hhZG93OiBub25lOwogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1jb2xvci1ncmF5LTUpOwogIGJvcmRlci10b3A6IG5vbmU7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoudGdtZW51X19hY3Rpb24tdHdvID4gLmxpc3Qtd3JhcCBsaS5vZmZDYW52YXMtbWVudSAubWVudS10aWdnZXI6aG92ZXIgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGdtZW51X19hY3Rpb24tdHdvID4gLmxpc3Qtd3JhcCBsaS5oZWFkZXItYnRuIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGdtZW51X19hY3Rpb24tdHdvID4gLmxpc3Qtd3JhcCBsaS5oZWFkZXItYnRuIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci50Z21lbnVfX2FjdGlvbi10d28gPiAubGlzdC13cmFwIGxpLmhlYWRlci1idG4gLmJ0biB7CiAgYm9yZGVyLXJhZGl1czogMzBweDsKICBnYXA6IDhweDsKfQoudGdtZW51X19hY3Rpb24tdHdvID4gLmxpc3Qtd3JhcCBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMjVweDsKfQoudGdtZW51X19hY3Rpb24tdGhyZWUgPiAubGlzdC13cmFwIGxpIHsKICBtYXJnaW4tbGVmdDogMjBweDsKfQoudGdtZW51X19hY3Rpb24tdGhyZWUgPiAubGlzdC13cmFwIGxpLm9mZkNhbnZhcy1tZW51IC5tZW51LXRpZ2dlciB7CiAgd2lkdGg6IGF1dG87CiAgaGVpZ2h0OiBhdXRvOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMDsKICAtby1ib3JkZXItcmFkaXVzOiAwOwogIC1tcy1ib3JkZXItcmFkaXVzOiAwOwogIGJvcmRlci1yYWRpdXM6IDA7CiAgbGluZS1oZWlnaHQ6IDA7CiAgZGlzcGxheTogYmxvY2s7Cn0KLnRnbWVudV9fYWN0aW9uLXRocmVlID4gLmxpc3Qtd3JhcCBsaS5vZmZDYW52YXMtbWVudSAubWVudS10aWdnZXIgc3ZnIHsKICB3aWR0aDogMjJweDsKICBoZWlnaHQ6IDIycHg7Cn0KLnRnbWVudV9fYWN0aW9uLXRocmVlID4gLmxpc3Qtd3JhcCBsaS5vZmZDYW52YXMtbWVudSAubWVudS10aWdnZXI6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGdtZW51X19hY3Rpb24tZm91ciAubGlzdC13cmFwIGxpIHsKICBtYXJnaW4tbGVmdDogMjBweDsKfQoudGdtZW51X19hY3Rpb24tZm91ciAubGlzdC13cmFwIGxpLmhlYWRlci1idG4gLmJ0biB7CiAgcGFkZGluZzogMTNweCAyMnB4Owp9Ci50Z21lbnVfX2FjdGlvbi1mb3VyIC5saXN0LXdyYXAgbGkub2ZmQ2FudmFzLW1lbnUgewogIG1hcmdpbi1sZWZ0OiA0MHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudGdtZW51X19hY3Rpb24tZm91ciAubGlzdC13cmFwIGxpLm9mZkNhbnZhcy1tZW51IC5tZW51LXRpZ2dlciB7CiAgd2lkdGg6IGF1dG87CiAgaGVpZ2h0OiBhdXRvOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAtbW96LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1zLWJveC1zaGFkb3c6IG5vbmU7CiAgLW8tYm94LXNoYWRvdzogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci50Z21lbnVfX2FjdGlvbi1mb3VyIC5saXN0LXdyYXAgbGkub2ZmQ2FudmFzLW1lbnUgLm1lbnUtdGlnZ2VyOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnbWVudV9fYWN0aW9uLWZvdXIgLmxpc3Qtd3JhcCBsaS5vZmZDYW52YXMtbWVudTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogLTIwcHg7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiA0MHB4OwogIGJhY2tncm91bmQ6ICNEN0U0RUE7Cn0KLnRnbWVudV9fYWN0aW9uLWZpdmUgLmxpc3Qtd3JhcCBsaSB7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLnRnbWVudV9fYWN0aW9uLWZpdmUgLmxpc3Qtd3JhcCBsaS5oZWFkZXItYnRuIC5idG4gewogIHBhZGRpbmc6IDEzcHggMjRweDsKfQoudGdtZW51X19hY3Rpb24tZml2ZSAubGlzdC13cmFwIGxpLmhlYWRlci1idG4tdHdvIC5idG4uYm9yZGVyLWJ0biB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBwYWRkaW5nOiAxMnB4IDIxcHg7Cn0KLnRnbWVudV9fYWN0aW9uLWZpdmUgLmxpc3Qtd3JhcCBsaS5oZWFkZXItYnRuLXR3byAuYnRuLmJvcmRlci1idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci50Z21lbnVfX2FjdGlvbi1maXZlIC5saXN0LXdyYXAgbGkuaGVhZGVyLWJ0bi10d28gLmJ0bi5ib3JkZXItYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Cgouc3RpY2t5LW1lbnUgewogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIG1hcmdpbjogYXV0bzsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgei1pbmRleDogOTk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1hbmltYXRpb246IDEwMDBtcyBlYXNlLWluLW91dCAwcyBub3JtYWwgbm9uZSAxIHJ1bm5pbmcgZmFkZUluRG93bjsKICBhbmltYXRpb246IDEwMDBtcyBlYXNlLWluLW91dCAwcyBub3JtYWwgbm9uZSAxIHJ1bm5pbmcgZmFkZUluRG93bjsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMTBweCAxNXB4IHJnYmEoMjUsIDI1LCAyNSwgMC4xKTsKICBib3gtc2hhZG93OiAwIDEwcHggMTVweCByZ2JhKDI1LCAyNSwgMjUsIDAuMSk7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouc3RpY2t5LW1lbnUgdWwgbGkgLnN1Yi1tZW51IHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogIGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4Owp9CgojaGVhZGVyLWZpeGVkLWhlaWdodC5hY3RpdmUtaGVpZ2h0IHsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDkwcHg7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCTAzLiBNb2JpbGUgTWVudQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLnRnbW9iaWxlX19zZWFyY2ggewogIHBhZGRpbmc6IDAgMjBweCAyNXB4IDI1cHg7Cn0KLnRnbW9iaWxlX19zZWFyY2ggZm9ybSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci50Z21vYmlsZV9fc2VhcmNoIGlucHV0IHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBib3JkZXI6IG5vbmU7CiAgcGFkZGluZzogMTBweCA0NXB4IDEwcHggMjBweDsKICBmb250LXNpemU6IDE1cHg7CiAgaGVpZ2h0OiA0NXB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci50Z21vYmlsZV9fc2VhcmNoIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQoudGdtb2JpbGVfX3NlYXJjaCBidXR0b24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgYm9yZGVyOiBub25lOwogIHBhZGRpbmc6IDA7CiAgcmlnaHQ6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDE7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwp9Ci50Z21vYmlsZV9fbWVudSB7CiAgcG9zaXRpb246IGZpeGVkOwogIHJpZ2h0OiAwOwogIHRvcDogMDsKICB3aWR0aDogMzAwcHg7CiAgcGFkZGluZy1yaWdodDogMzBweDsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIHotaW5kZXg6IDk5OwogIGJvcmRlci1yYWRpdXM6IDBweDsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44Nik7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMSUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMSUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAxJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMSUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDElKTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmJhci1jb2xsYXBzZSB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQoudGdtb2JpbGVfX21lbnUgLm5hdi1sb2dvIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMzBweCAyNXB4OwogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXYtbG9nbyBpbWcgewogIG1heC1oZWlnaHQ6IDM0cHg7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgZmxvYXQ6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIGxpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gbGkuYWN0aXZlID4gYSB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5kcm9wZG93bi1idG4gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMjBweDsKICB0b3A6IDZweDsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDMycHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMzJweDsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDUwMG1zIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDUwMG1zIGVhc2U7CiAgdHJhbnNpdGlvbjogYWxsIDUwMG1zIGVhc2U7CiAgei1pbmRleDogNTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gbGkubWVudS1pdGVtLWhhcy1jaGlsZHJlbiAuZHJvcGRvd24tYnRuIC5wbHVzLWxpbmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMCk7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ibGFjay0xKTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIHRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5kcm9wZG93bi1idG4gLnBsdXMtbGluZTo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoMCk7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICB3aWR0aDogMnB4OwogIGhlaWdodDogMTJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ibGFjay0xKTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIHRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5kcm9wZG93bi1idG4ub3BlbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIGxpLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gLmRyb3Bkb3duLWJ0bi5vcGVuIC5wbHVzLWxpbmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaS5tZW51LWl0ZW0taGFzLWNoaWxkcmVuIC5kcm9wZG93bi1idG4ub3BlbiAucGx1cy1saW5lOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gbGkgPiBhIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBwYWRkaW5nOiAxMHB4IDYwcHggMTBweCAyNXB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIHRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIGJvcmRlcjogbm9uZTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gbGkgPiBhOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBoZWlnaHQ6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTsKICB0cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTsKICB3aWR0aDogMnB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaSB1bCBsaSA+IGEgewogIG1hcmdpbi1sZWZ0OiAyMHB4Owp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiBsaSB1bCBsaSB1bCBsaSBhIHsKICBtYXJnaW4tbGVmdDogNDBweDsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gbGkgdWwgbGkgdWwgbGkgdWwgbGkgYSB7CiAgbWFyZ2luLWxlZnQ6IDYwcHg7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIGxpID4gdWwgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIGxpID4gdWwgPiBsaSA+IHVsIHsKICBkaXNwbGF5OiBub25lOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiB1bCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uIHVsIGxpIGEgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci50Z21vYmlsZV9fbWVudSAubmF2aWdhdGlvbiB1bCBsaSB1bCBsaSA+IGEgewogIGZvbnQtc2l6ZTogMTZweDsKICBtYXJnaW4tbGVmdDogMjBweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb246bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoudGdtb2JpbGVfX21lbnUgLm5hdmlnYXRpb24gPiBsaSA+IHVsID4gbGk6Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KLnRnbW9iaWxlX19tZW51IC5uYXZpZ2F0aW9uID4gbGkuYWN0aXZlID4gYTo6YmVmb3JlIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLnRnbW9iaWxlX19tZW51IC5jbG9zZS1idG4gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTVweDsKICB0b3A6IDI4cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgd2lkdGg6IDM1cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtc2l6ZTogMjBweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY3Vyc29yOiBwb2ludGVyOwogIHotaW5kZXg6IDEwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlOwogIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7Cn0KLnRnbW9iaWxlX19tZW51IC5jbG9zZS1idG4gaVtjbGFzc149ZmxhdGljb24tXTpiZWZvcmUgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1ib2xkKSAhaW1wb3J0YW50Owp9Ci50Z21vYmlsZV9fbWVudS1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHJpZ2h0OiAwOwogIHRvcDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgei1pbmRleDogMjsKICB0cmFuc2l0aW9uOiBhbGwgNzAwbXMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCA3MDBtcyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDcwMG1zIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCA3MDBtcyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCA3MDBtcyBlYXNlOwogIG9wYWNpdHk6IDA7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoudGdtb2JpbGVfX21lbnUgLnRnbWVudV9fYWN0aW9uIHsKICBwYWRkaW5nOiAwIDA7CiAgbWFyZ2luOiAwIDA7Cn0KLnRnbW9iaWxlX19tZW51IC50Z21lbnVfX2FjdGlvbiA+IHVsIHsKICBtYXJnaW46IDAgMDsKICBwYWRkaW5nOiAzMHB4IDIwcHggMDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBnYXA6IDAgMTVweDsKfQoudGdtb2JpbGVfX21lbnUgLnRnbWVudV9fYWN0aW9uID4gdWwgbGkgewogIG1hcmdpbjogMCAwOwp9Ci50Z21vYmlsZV9fbWVudSAudGdtZW51X19hY3Rpb24gPiB1bCAuaGVhZGVyLWJ0biB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLnRnbW9iaWxlX19tZW51LWJveCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDBweDsKICB0b3A6IDBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgbWF4LWhlaWdodDogMTAwJTsKICBvdmVyZmxvdy15OiBhdXRvOwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBwYWRkaW5nOiAwcHggMHB4OwogIHotaW5kZXg6IDU7CiAgYm94LXNoYWRvdzogLTlweCAwIDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoudGdtb2JpbGVfX21lbnUtYm90dG9tIHsKICBwYWRkaW5nOiAzMHB4IDI1cHggMjVweDsKICBtYXJnaW4tdG9wOiBhdXRvOwp9Ci50Z21vYmlsZV9fbWVudS1ib3R0b20gLmNvbnRhY3QtaW5mbyAubGlzdC13cmFwIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogNTAwOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoudGdtb2JpbGVfX21lbnUtYm90dG9tIC5jb250YWN0LWluZm8gLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnbW9iaWxlX19tZW51LWJvdHRvbSAuc29jaWFsLWxpbmtzIHVsIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC13cmFwOiB3cmFwOwogIHBhZGRpbmc6IDE1cHggMCAwOwogIGdhcDogMTVweDsKfQoudGdtb2JpbGVfX21lbnUtYm90dG9tIC5zb2NpYWwtbGlua3MgdWwgbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLnRnbW9iaWxlX19tZW51LWJvdHRvbSAuc29jaWFsLWxpbmtzIHVsIGxpIGEgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZvbnQtc2l6ZTogMThweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwogIHRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlOwp9Ci50Z21vYmlsZV9fbWVudS1ib3R0b20gLnNvY2lhbC1saW5rcyB1bCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRnbW9iaWxlX19tZW51LW91dGVyIC5tb2JpbGUtbmF2LXRvZ2dsZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogcmlnaHQ7CiAgZm9udC1zaXplOiA0MHB4OwogIGxpbmUtaGVpZ2h0OiA1MHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBub25lOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBtYXJnaW4tcmlnaHQ6IDMwcHg7CiAgdG9wOiAxNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50Z21vYmlsZV9fbWVudS1vdXRlciAubW9iaWxlLW5hdi10b2dnbGVyIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9CgoubW9iaWxlLW1lbnUtdmlzaWJsZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoubW9iaWxlLW1lbnUtdmlzaWJsZSAudGdtb2JpbGVfX21lbnUgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwp9Ci5tb2JpbGUtbWVudS12aXNpYmxlIC50Z21vYmlsZV9fbWVudS1iYWNrZHJvcCB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5tb2JpbGUtbWVudS12aXNpYmxlIC50Z21vYmlsZV9fbWVudSAuY2xvc2UtYnRuIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMDQuIEJhbm5lcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLmJhbm5lci1iZyB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgbWluLWhlaWdodDogODcwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAyMDBweCAwIDEwMHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5iYW5uZXItYmcgewogICAgbWluLWhlaWdodDogNjgwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5iYW5uZXItYmcgewogICAgbWluLWhlaWdodDogNjQwcHg7CiAgICBwYWRkaW5nOiAxNzBweCAwIDgwcHg7CiAgfQp9Ci5iYW5uZXJfX2JnLXR3byB7CiAgbWluLWhlaWdodDogODIwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwYWRkaW5nOiAyMDBweCAwIDEwMHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuYmFubmVyX19iZy10d28gewogICAgbWluLWhlaWdodDogNjYwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5iYW5uZXJfX2JnLXR3byB7CiAgICBtaW4taGVpZ2h0OiA2MDBweDsKICAgIHBhZGRpbmc6IDE1MHB4IDAgMTAwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5iYW5uZXJfX2JnLXR3byB7CiAgICBtaW4taGVpZ2h0OiA1ODBweDsKICAgIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKICB9Cn0KLmJhbm5lcl9fYmctdGhyZWUgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDE4NXB4IDAgMDsKICBtaW4taGVpZ2h0OiA3ODBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuYmFubmVyX19iZy10aHJlZSB7CiAgICBwYWRkaW5nOiAxNjBweCAwIDA7CiAgICBtaW4taGVpZ2h0OiA3MDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJhbm5lcl9fYmctdGhyZWUgewogICAgcGFkZGluZzogMjMwcHggMCAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19iZy10aHJlZSB7CiAgICBwYWRkaW5nOiAxNTBweCAwIDA7CiAgfQp9Ci5iYW5uZXJfX2JnLWZvdXIgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDE3MHB4IDAgMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lcl9fYmctZm91ciB7CiAgICBwYWRkaW5nOiAxMTBweCAwIDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5iYW5uZXJfX2JnLWZvdXIgewogICAgcGFkZGluZzogMTQwcHggMCAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19iZy1mb3VyIHsKICAgIHBhZGRpbmc6IDExMHB4IDAgMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJhbm5lci1jb250ZW50IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IC00NXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyLWNvbnRlbnQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KLmJhbm5lci1jb250ZW50IC5zdWItdGl0bGUgewogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogNjAwOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgbGV0dGVyLXNwYWNpbmc6IDAuNzVweDsKICBkaXNwbGF5OiBibG9jazsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQouYmFubmVyLWNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDYwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBsaW5lLWhlaWdodDogMS4xOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogNDhweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lci1jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDQycHg7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5iYW5uZXItY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiA0OHB4OwogIH0KfQouYmFubmVyLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBjb2xvcjogIzM4Mzk1MjsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICB3aWR0aDogOTAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyLWNvbnRlbnQgcCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC10d28gewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQouYmFubmVyX19jb250ZW50LXR3byAudGl0bGUgewogIGZvbnQtc2l6ZTogNjBweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICBsaW5lLWhlaWdodDogMS4xOwogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtdHdvIC50aXRsZSB7CiAgICBmb250LXNpemU6IDUycHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtdHdvIC50aXRsZSB7CiAgICBmb250LXNpemU6IDQycHg7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtdHdvIC50aXRsZSB7CiAgICBmb250LXNpemU6IDQ1cHg7CiAgfQp9Ci5iYW5uZXJfX2NvbnRlbnQtdHdvIC50aXRsZSBzcGFuIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmJhbm5lcl9fY29udGVudC10d28gcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB3aWR0aDogOTAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyX19jb250ZW50LXR3byBwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYmFubmVyX19jb250ZW50LXRocmVlIHsKICBtYXJnaW4tdG9wOiAxMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYmFubmVyX19jb250ZW50LXRocmVlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgICBtYXJnaW4tdG9wOiAwOwogIH0KfQouYmFubmVyX19jb250ZW50LXRocmVlIC5zdWItdGl0bGUgewogIGZvbnQtc2l6ZTogMTVweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouYmFubmVyX19jb250ZW50LXRocmVlIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBmb250LXNpemU6IDUwcHg7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtdGhyZWUgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogNDZweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC10aHJlZSAudGl0bGUgewogICAgZm9udC1zaXplOiA0MnB4OwogIH0KfQouYmFubmVyX19jb250ZW50LWZvdXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYmFubmVyX19jb250ZW50LWZvdXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KLmJhbm5lcl9fY29udGVudC1mb3VyIC50aXRsZSB7CiAgZm9udC1zaXplOiA2MHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC1mb3VyIC50aXRsZSB7CiAgICBmb250LXNpemU6IDU2cHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyX19jb250ZW50LWZvdXIgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogNDdweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC1mb3VyIC50aXRsZSB7CiAgICBmb250LXNpemU6IDQycHg7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtZm91ciAudGl0bGUgewogICAgZm9udC1zaXplOiA0NXB4OwogIH0KfQouYmFubmVyX19jb250ZW50LWZvdXIgLnRpdGxlIHNwYW4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC1mb3VyIC50aXRsZSBzcGFuIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICB9Cn0KLmJhbm5lcl9fY29udGVudC1mb3VyIC50aXRsZSBzcGFuOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIGJvdHRvbTogMTBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDhweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICB6LWluZGV4OiAtMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19jb250ZW50LWZvdXIgLnRpdGxlIHNwYW46OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYmFubmVyX19jb250ZW50LWZvdXIgcCB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQouYmFubmVyX19jb250ZW50LWZvdXIgLnNoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAtNiU7CiAgdG9wOiAtNiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtZm91ciAuc2hhcGUgaW1nIHsKICAgIHJpZ2h0OiAtOCU7CiAgICB0b3A6IC0xNSU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5iYW5uZXJfX2NvbnRlbnQtZm91ciAuc2hhcGUgaW1nIHsKICAgIHJpZ2h0OiAtMiU7CiAgICB0b3A6IC0xNCU7CiAgICB3aWR0aDogNjBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lcl9fY29udGVudC1mb3VyIC5zaGFwZSBpbWcgewogICAgcmlnaHQ6IDMlOwogICAgdG9wOiBhdXRvOwogICAgYm90dG9tOiAyJTsKICB9Cn0KLmJhbm5lcl9faW1nIGltZyB7CiAgbWF4LXdpZHRoOiB1bnNldDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYmFubmVyX19pbWcgaW1nIHsKICAgIG1heC13aWR0aDogMTAwJTsKICB9Cn0KLmJhbm5lcl9faW1nLXR3byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5iYW5uZXJfX2ltZy10d28gPiBpbWc6bnRoLWNoaWxkKDEpIHsKICBtYXgtd2lkdGg6IHVuc2V0OwogIG1hcmdpbi1sZWZ0OiA1MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyX19pbWctdHdvID4gaW1nOm50aC1jaGlsZCgxKSB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1heC13aWR0aDogMTAwJTsKICB9Cn0KLmJhbm5lcl9faW1nLXR3byA+IGltZzpudGgtY2hpbGQoMikgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjRDFEMUQxOwogIC13ZWJraXQtYm94LXNoYWRvdzogMTFweCAxMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogMTFweCAxMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tcy1ib3gtc2hhZG93OiAxMXB4IDEwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMTFweCAxMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IDExcHggMTBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBsZWZ0OiAxMCU7CiAgdG9wOiAyMCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5iYW5uZXJfX2ltZy10d28gPiBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHdpZHRoOiAyMDBweDsKICAgIGxlZnQ6IDIlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19pbWctdHdvID4gaW1nOm50aC1jaGlsZCgyKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYmFubmVyX19pbWctdHdvIC5pbWdfX3NoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci5iYW5uZXJfX2ltZy10d28gLmltZ19fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogMzclOwogIHRvcDogMTAlOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogNHM7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJhbm5lcl9faW1nLXR3byAuaW1nX19zaGFwZSBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIGxlZnQ6IDE4JTsKICAgIHRvcDogMjAlOwogIH0KfQouYmFubmVyX19pbWctdHdvIC5pbWdfX3NoYXBlIGltZzpudGgtY2hpbGQoMikgewogIGxlZnQ6IDYlOwogIGJvdHRvbTogMTMlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYmFubmVyX19pbWctdHdvIC5pbWdfX3NoYXBlIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogMiU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5iYW5uZXJfX2ltZy10d28gLmltZ19fc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICB3aWR0aDogMTAwcHg7CiAgfQp9Ci5iYW5uZXJfX2ltZy10d28gLmltZ19fc2hhcGUgaW1nOm50aC1jaGlsZCgzKSB7CiAgbGVmdDogMzQlOwogIHRvcDogLTEwJTsKICB6LWluZGV4OiAtMjsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19pbWctdHdvIC5pbWdfX3NoYXBlIGltZzpudGgtY2hpbGQoMykgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmJhbm5lcl9faW1nLXR3byAuaW1nX19zaGFwZSBpbWc6bnRoLWNoaWxkKDQpIHsKICByaWdodDogLTIyJTsKICB0b3A6IDI3JTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyX19pbWctdHdvIC5pbWdfX3NoYXBlIGltZzpudGgtY2hpbGQoNCkgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmJhbm5lci1zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQouYmFubmVyLXNoYXBlIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDM1JTsKICB0b3A6IDM2JTsKICBhbmltYXRpb246IHJpZ2h0VG9MZWZ0IDRzIGluZmluaXRlIGxpbmVhcjsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lci1zaGFwZSBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIGxlZnQ6IDMyJTsKICAgIHRvcDogMzElOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmFubmVyLXNoYXBlIGltZzpudGgtY2hpbGQoMSkgewogICAgbGVmdDogMzIlOwogICAgdG9wOiAyMCU7CiAgfQp9Ci5iYW5uZXItc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgbGVmdDogNiU7CiAgYm90dG9tOiAtOCU7Cn0KLmJhbm5lcl9fc2hhcGUtdHdvIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwogIGxlZnQ6IDUlOwogIHRvcDogMTIlOwogIGFuaW1hdGlvbjogaGVhcnRiZWF0IDRzIGluZmluaXRlIGFsdGVybmF0ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lcl9fc2hhcGUtdHdvIGltZyB7CiAgICBsZWZ0OiAxJTsKICAgIHRvcDogNCU7CiAgfQp9Ci5iYW5uZXItc29jaWFsIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7CiAgZ2FwOiA0NXB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAzJTsKICB0b3A6IDM5JTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lci1zb2NpYWwgewogICAgbGVmdDogMCU7CiAgICB0b3A6IDM1JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5iYW5uZXItc29jaWFsIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5iYW5uZXItc29jaWFsIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDE1cHg7CiAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouYmFubmVyLXNvY2lhbCAudGl0bGU6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgdG9wOiAtMzFweDsKICB3aWR0aDogMnB4OwogIGhlaWdodDogMjBweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQouYmFubmVyLXNvY2lhbCAubGlzdC13cmFwIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogIGdhcDogMTdweDsKfQouYmFubmVyLXNvY2lhbCAubGlzdC13cmFwIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogIGRpc3BsYXk6IGJsb2NrOwp9Ci5iYW5uZXItc29jaWFsIC5saXN0LXdyYXAgbGkgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5iYW5uZXItc29jaWFsLXR3byB7CiAgbGVmdDogYXV0bzsKICByaWdodDogMiU7CiAgdG9wOiAzNiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5iYW5uZXItc29jaWFsLXR3byB7CiAgICByaWdodDogMSU7CiAgfQp9Ci5iYW5uZXItc29jaWFsLXRocmVlIHsKICB0b3A6IDM3JTsKfQouYmFubmVyLXNjcm9sbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA0JTsKICBib3R0b206IDEwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmJhbm5lci1zY3JvbGwgewogICAgcmlnaHQ6IDMlOwogICAgYm90dG9tOiA3JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJhbm5lci1zY3JvbGwgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmJhbm5lci1zY3JvbGwgYSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICBmb250LXNpemU6IDE1cHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGdhcDogMTBweDsKfQouYmFubmVyLXNjcm9sbCBhIHNwYW4gewogIHdpZHRoOiAyOHB4OwogIGhlaWdodDogMjhweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBmb250LXNpemU6IDE0cHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQouYmFubmVyLXNjcm9sbCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmJhbm5lci1zY3JvbGwgYTpob3ZlciBzcGFuIHsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAwNS4gU2xpZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouc2xpZGVyX19hcmVhIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5zbGlkZXJfX3NpbmdsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDY3MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgcGFkZGluZzogMTAwcHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLnNsaWRlcl9fc2luZ2xlIHsKICAgIG1pbi1oZWlnaHQ6IDU3MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2xpZGVyX19zaW5nbGUgewogICAgbWluLWhlaWdodDogNTAwcHg7CiAgfQp9Ci5zbGlkZXJfX3NpbmdsZTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6ICMwNTA2Mjg7CiAgb3BhY2l0eTogMC43OwogIHotaW5kZXg6IC0xOwp9Ci5zbGlkZXJfX3NpbmdsZTo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMTAlOwogIHRvcDogMDsKICB3aWR0aDogNzAlOwogIGhlaWdodDogMTAwJTsKICBvcGFjaXR5OiAwLjk7CiAgYmFja2dyb3VuZDogIzFEMUUzNDsKICBmaWx0ZXI6IGJsdXIoMjAwcHgpOwogIHotaW5kZXg6IC0xOwp9Ci5zbGlkZXJfX2JnIHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIHotaW5kZXg6IC0xOwogIG1peC1ibGVuZC1tb2RlOiBsdW1pbm9zaXR5OwogIG9wYWNpdHk6IDAuNzsKfQouc2xpZGVyX19jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2xpZGVyX19jb250ZW50IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9Cn0KLnNsaWRlcl9fY29udGVudCAuc3ViLXRpdGxlIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogIGxpbmUtaGVpZ2h0OiAxOwogIHBhZGRpbmc6IDdweCAyNXB4OwogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNsaWRlcl9fY29udGVudCAuc3ViLXRpdGxlIHsKICAgIHBhZGRpbmc6IDdweCAxNXB4OwogIH0KfQouc2xpZGVyX19jb250ZW50IC50aXRsZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgZm9udC1zaXplOiA2MHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgbGV0dGVyLXNwYWNpbmc6IC0wLjNweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNsaWRlcl9fY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiA0NXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2xpZGVyX19jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDQycHg7CiAgICBsZXR0ZXItc3BhY2luZzogMDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLnNsaWRlcl9fY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiA0NXB4OwogIH0KfQouc2xpZGVyX19jb250ZW50IHAgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIHdpZHRoOiA5MCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zbGlkZXJfX2NvbnRlbnQgcCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnNsaWRlcl9fc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLnNsaWRlcl9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogMDsKICB0b3A6IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNsaWRlcl9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgICB3aWR0aDogMjAwcHg7CiAgfQp9Ci5zbGlkZXJfX3NoYXBlIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKfQoKLnNsaWRlcl9fc2luZ2xlLnN3aXBlci1zbGlkZS1hY3RpdmUgLnNsaWRlcl9fY29udGVudCAuc3ViLXRpdGxlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4zczsKICBhbmltYXRpb24tZGVsYXk6IDAuM3M7CiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuOHM7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjhzOwogIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwMjsKICBhbmltYXRpb24tbmFtZTogZmFkZUluVXAyOwp9Ci5zbGlkZXJfX3NpbmdsZS5zd2lwZXItc2xpZGUtYWN0aXZlIC5zbGlkZXJfX2NvbnRlbnQgLnRpdGxlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC42czsKICBhbmltYXRpb24tZGVsYXk6IDAuNnM7CiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuOHM7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjhzOwogIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwMjsKICBhbmltYXRpb24tbmFtZTogZmFkZUluVXAyOwp9Ci5zbGlkZXJfX3NpbmdsZS5zd2lwZXItc2xpZGUtYWN0aXZlIC5zbGlkZXJfX2NvbnRlbnQgcCB7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuOXM7CiAgYW5pbWF0aW9uLWRlbGF5OiAwLjlzOwogIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjhzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMC44czsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDI7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwMjsKfQouc2xpZGVyX19zaW5nbGUuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc2xpZGVyX19jb250ZW50IC5idG4gewogIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAxLjJzOwogIGFuaW1hdGlvbi1kZWxheTogMS4yczsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC44czsKICBhbmltYXRpb24tZHVyYXRpb246IDAuOHM7CiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluVXAyOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDI7Cn0KLnNsaWRlcl9fc2luZ2xlLnN3aXBlci1zbGlkZS1hY3RpdmUgLnNsaWRlcl9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDEuNHM7CiAgYW5pbWF0aW9uLWRlbGF5OiAxLjRzOwogIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjhzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMC44czsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0MjsKICBhbmltYXRpb24tbmFtZTogZmFkZUluTGVmdDI7Cn0KLnNsaWRlcl9fc2luZ2xlLnN3aXBlci1zbGlkZS1hY3RpdmUgLnNsaWRlcl9fc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDEuNHM7CiAgYW5pbWF0aW9uLWRlbGF5OiAxLjRzOwogIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjhzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMC44czsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDI7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwMjsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMjEuIEJyYW5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwouYnJhbmQtYXJlYSB7CiAgcGFkZGluZzogNTZweCAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRTZFN0YzOwp9Ci5icmFuZF9fYXJlYS10d28gewogIHBhZGRpbmc6IDkwcHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJhbmRfX2FyZWEtdHdvIHsKICAgIHBhZGRpbmc6IDcwcHggMDsKICB9Cn0KLmJyYW5kX19hcmVhLWZvdXIgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRTZFN0YzOwogIHBhZGRpbmc6IDc2cHggMDsKfQouYnJhbmRfX2FyZWEtZml2ZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBwYWRkaW5nOiA5MHB4IDA7Cn0KLmJyYW5kX19hcmVhLXNpeCB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS02KTsKICBwYWRkaW5nOiA3N3B4IDA7Cn0KLmJyYW5kX19hcmVhLXNldmVuIHsKICBwYWRkaW5nOiAwIDAgMTIwcHg7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJhbmRfX2FyZWEtc2V2ZW4gewogICAgcGFkZGluZzogMCAwIDEwMHB4OwogIH0KfQouYnJhbmRfX2FyZWEtZWlnaHQgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIHBhZGRpbmc6IDU1cHggMDsKfQouYnJhbmQtaXRlbSB7CiAgbWluLWhlaWdodDogNDZweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci5icmFuZC1pdGVtIGltZyB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5icmFuZF9fY29udGVudCB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IDUwcHg7Cn0KLmJyYW5kX19jb250ZW50IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDM2cHg7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYnJhbmRfX2NvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzJweDsKICB9Cn0KLmJyYW5kX19jb250ZW50IC50aXRsZSBzcGFuIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDMwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBtYXJnaW4tdG9wOiAxMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5icmFuZF9fY29udGVudCAudGl0bGUgc3BhbiB7CiAgICBmb250LXNpemU6IDI2cHg7CiAgfQp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAwNi4gQWJvdXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5hYm91dC1hcmVhIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0LWFyZWEgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLmFib3V0X19iZyB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcGFkZGluZzogMTIwcHggMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2JnIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5hYm91dF9fYmctdHdvIHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwYWRkaW5nOiAxMjBweCAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9fYmctdHdvIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5hYm91dF9fYXJlYS1mb3VyIHsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5hYm91dF9fYXJlYS1mb3VyIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5hYm91dF9fYXJlYS1maXZlIHsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9fYXJlYS1maXZlIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5hYm91dF9fYXJlYS1zaXggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9fYXJlYS1zaXggewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLmFib3V0X19hcmVhLXNldmVuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMTIwcHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2FyZWEtc2V2ZW4gewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLmFib3V0X19hcmVhLWVpZ2h0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMCAwIDEyMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9fYXJlYS1laWdodCB7CiAgICBwYWRkaW5nOiAwIDAgMTAwcHg7CiAgfQp9Ci5hYm91dC1pbWctd3JhcCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgcGFkZGluZy1ib3R0b206IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0LWltZy13cmFwIHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci5hYm91dC1pbWctd3JhcCAubWFzay1pbWctd3JhcCB7CiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoLi4vaW1nL2ltYWdlcy9tYXNrX2ltZy5wbmcpOwogIG1hc2staW1hZ2U6IHVybCguLi9pbWcvaW1hZ2VzL21hc2tfaW1nLnBuZyk7CiAgLXdlYmtpdC1tYXNrLXNpemU6IDEwMCU7CiAgbWFzay1zaXplOiAxMDAlOwogIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDsKICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0OwogIC13ZWJraXQtbWFzay1wb3NpdGlvbjogY2VudGVyOwogIG1hc2stcG9zaXRpb246IGNlbnRlcjsKICBoZWlnaHQ6IDQ3MnB4OwogIHdpZHRoOiA0MTdweDsKICBtYXJnaW46IDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0LWltZy13cmFwIC5tYXNrLWltZy13cmFwIHsKICAgIGhlaWdodDogNDE0cHg7CiAgICB3aWR0aDogMzYwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dC1pbWctd3JhcCAubWFzay1pbWctd3JhcCB7CiAgICBoZWlnaHQ6IDM3MHB4OwogICAgd2lkdGg6IDMyMHB4OwogIH0KfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAuYWJvdXQtaW1nLXdyYXAgLm1hc2staW1nLXdyYXAgewogICAgaGVpZ2h0OiA0NDJweDsKICAgIHdpZHRoOiAzODVweDsKICB9Cn0KLmFib3V0LWltZy13cmFwIC5tYXNrLWltZy13cmFwIGltZyB7CiAgbWF4LXdpZHRoOiB1bnNldDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KLmFib3V0LWltZy13cmFwIC5zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB6LWluZGV4OiAtMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXQtaW1nLXdyYXAgLnNoYXBlIGltZyB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYWJvdXRfX2ltZy13cmFwLXR3byB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAzMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC10d28gewogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC10d28gewogICAgcGFkZGluZzogMzBweCAxNXB4IDMwcHggMDsKICB9Cn0KLmFib3V0X19pbWctd3JhcC10d28gPiBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouYWJvdXRfX2ltZy13cmFwLXR3byAuc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7CiAgbGVmdDogOCU7CiAgYm90dG9tOiAtMyU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtdHdvIC5zaGFwZSBpbWcgewogICAgbGVmdDogLTIlOwogIH0KfQouYWJvdXRfX2ltZy13cmFwLXR3bzo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDQwcHg7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAxMzVweDsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgei1pbmRleDogLTE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtdHdvOjpiZWZvcmUgewogICAgcmlnaHQ6IDA7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtdGhyZWUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLXRocmVlIHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtdGhyZWUgPiBpbWc6bnRoLWNoaWxkKDEpIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHggMTg1cHggMTBweCAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweCAxODVweCAxMHB4IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweCAxODVweCAxMHB4IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHggMTg1cHggMTBweCAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHggMTg1cHggMTBweCAxMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtdGhyZWUgPiBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweCA4MHB4IDEwcHggMTBweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweCA4MHB4IDEwcHggMTBweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDEwcHggODBweCAxMHB4IDEwcHg7CiAgICAtbXMtYm9yZGVyLXJhZGl1czogMTBweCA4MHB4IDEwcHggMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHggODBweCAxMHB4IDEwcHg7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtdGhyZWUgPiBpbWc6bnRoLWNoaWxkKDIpIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBib3gtc2hhZG93OiAwcHggMHB4IDMwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogLTEwJTsKICBib3R0b206IDE4JTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLXRocmVlID4gaW1nOm50aC1jaGlsZCgyKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYWJvdXRfX2ltZy13cmFwLXRocmVlIC5zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMjAlOwogIGJvdHRvbTogMjAlOwogIHotaW5kZXg6IC0xOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtdGhyZWUgLnNoYXBlIGltZyB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYWJvdXRfX2ltZy13cmFwLWZvdXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLWJvdHRvbTogMTI1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC1mb3VyIHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtZm91ciA+IGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KLmFib3V0X19pbWctd3JhcC1mb3VyID4gaW1nOm50aC1jaGlsZCgyKSB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyOiAxMHB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMzVweDsKICBib3R0b206IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtZm91ciA+IGltZzpudGgtY2hpbGQoMikgewogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMTkwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtZm91ciA+IGltZzpudGgtY2hpbGQoMikgewogICAgd2lkdGg6IDIzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLWZvdXIgPiBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtZm91ciAuc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDEzJTsKICB6LWluZGV4OiAtMTsKICB0b3A6IDMxJTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLWZvdXIgLnNoYXBlIGltZyB7CiAgICByaWdodDogNiU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtZm91ciAuc2hhcGUgaW1nIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtZml2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmctYm90dG9tOiA3NXB4OwogIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KLmFib3V0X19pbWctd3JhcC1maXZlIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgbWluLWhlaWdodDogMjUwcHg7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KLmFib3V0X19pbWctd3JhcC1zaXggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLWxlZnQ6IDcwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtc2l4IHsKICAgIHBhZGRpbmctbGVmdDogNTBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtc2l4IHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtc2l4IHsKICAgIHBhZGRpbmc6IDA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtc2l4IGltZzpudGgtY2hpbGQoMSkgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9Ci5hYm91dF9faW1nLXdyYXAtc2l4IGltZzpudGgtY2hpbGQoMikgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbXMtYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA2JTsKICBib3R0b206IDIwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC1zaXggaW1nOm50aC1jaGlsZCgyKSB7CiAgICByaWdodDogMCU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9faW1nLXdyYXAtc2l4IGltZzpudGgtY2hpbGQoMikgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmFib3V0X19pbWctd3JhcC1zaXggLnNoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICB6LWluZGV4OiAtMTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwogIC1vLWJvcmRlci1yYWRpdXM6IDA7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKICByaWdodDogNyU7CiAgYm90dG9tOiAtMTAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLXNpeCAuc2hhcGUgaW1nIHsKICAgIHJpZ2h0OiAwJTsKICB9Cn0KLmFib3V0X19pbWctd3JhcC1zZXZlbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRleHQtYWxpZ246IHJpZ2h0Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLXNldmVuIHsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC1zZXZlbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci5hYm91dF9faW1nLXdyYXAtc2V2ZW4gPiBpbWcgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMjBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDIwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMjBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMjBweDsKICBib3JkZXItcmFkaXVzOiAyMHB4Owp9Ci5hYm91dF9faW1nLXdyYXAtc2V2ZW4gLnNoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAtNSU7CiAgdG9wOiAtOCU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2ltZy13cmFwLXNldmVuIC5zaGFwZSBpbWcgewogICAgcmlnaHQ6IDA7CiAgfQp9Ci5hYm91dC1saXN0IC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgbWFyZ2luOiAwIC0xNXB4OwogIGdhcDogMzBweCAwOwogIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dC1saXN0IC5saXN0LXdyYXAgewogICAgZ2FwOiAyMHB4IDA7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5hYm91dC1saXN0IC5saXN0LXdyYXAgbGkgewogIHBhZGRpbmc6IDAgMTVweDsKICB3aWR0aDogNTAlOwogIGZsZXg6IDAgMCBhdXRvOwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGdhcDogMTVweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0LWxpc3QgLmxpc3Qtd3JhcCBsaSB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0LWxpc3QgLmxpc3Qtd3JhcCBsaSB7CiAgICB3aWR0aDogNTAlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXQtbGlzdCAubGlzdC13cmFwIGxpIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYWJvdXQtbGlzdCAubGlzdC13cmFwIGxpIC5pY29uIHsKICB3aWR0aDogNzBweDsKICBoZWlnaHQ6IDcwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci15ZWxsb3ctbGlnaHQpOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDhweDsKICAtby1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDhweDsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgZmxleDogMCAwIGF1dG87CiAgZm9udC1zaXplOiA0MHB4OwogIGxpbmUtaGVpZ2h0OiAwOwp9Ci5hYm91dC1saXN0IC5saXN0LXdyYXAgbGkgLmljb24gaSB7CiAgdHJhbnNpdGlvbjogMC4zcyBsaW5lYXI7Cn0KLmFib3V0LWxpc3QgLmxpc3Qtd3JhcCBsaTpob3ZlciAuaWNvbiBpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwp9Ci5hYm91dC1saXN0IC5saXN0LXdyYXAgbGkgLmNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLmFib3V0LWxpc3QgLmxpc3Qtd3JhcCBsaSAuY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5hYm91dC1jb250ZW50ID4gcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB3aWR0aDogOTMlOwogIGxpbmUtaGVpZ2h0OiAxLjYyOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXQtY29udGVudCA+IHAgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hYm91dF9fY29udGVudC10d28gewogIHdpZHRoOiA5MCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fY29udGVudC10d28gewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hYm91dF9fY29udGVudC10d28gPiBwIHsKICBtYXJnaW4tYm90dG9tOiAzNXB4Owp9Ci5hYm91dF9fY29udGVudC10aHJlZSB7CiAgd2lkdGg6IDk1JTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fY29udGVudC10aHJlZSB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmFib3V0X19jb250ZW50LXRocmVlID4gcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB3aWR0aDogOTUlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2NvbnRlbnQtdGhyZWUgPiBwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYWJvdXRfX2NvbnRlbnQtZm91ciB7CiAgd2lkdGg6IDk0JTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0X19jb250ZW50LWZvdXIgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hYm91dF9fY29udGVudC1mb3VyIHAgewogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLmFib3V0X19jb250ZW50LWZpdmUgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHNwYW4gewogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLmFib3V0X19jb250ZW50LWZpdmUgPiBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGdhcDogMTBweDsKICBsaW5lLWhlaWdodDogMS43NTsKfQouYWJvdXRfX2NvbnRlbnQtZml2ZSA+IHAgc3BhbiB7CiAgZm9udC1zaXplOiA2MHB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKICBsaW5lLWhlaWdodDogMC44Owp9Ci5hYm91dF9fY29udGVudC1zaXggPiBwIHsKICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIHdpZHRoOiA4NSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fY29udGVudC1zaXggPiBwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYWJvdXRfX2NvbnRlbnQtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHNwYW4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouYWJvdXRfX2NvbnRlbnQtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHNwYW46OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgYm90dG9tOiA2cHg7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiA4cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgei1pbmRleDogLTE7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKfQouYWJvdXRfX2NvbnRlbnQtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgLnRpdGxlLmFuaW1hdGVkIHNwYW46OmJlZm9yZSB7CiAgd2lkdGg6IDEwMCU7Cn0KLmFib3V0X19jb250ZW50LXNldmVuID4gcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB3aWR0aDogOTAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2NvbnRlbnQtc2V2ZW4gPiBwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYWJvdXRfX2NvbnRlbnQtaW5uZXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGdhcDogMzBweDsKICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5hYm91dF9fY29udGVudC1pbm5lciB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5hYm91dF9fY29udGVudC1pbm5lci10d28gewogIG1hcmdpbi1ib3R0b206IDQwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fY29udGVudC1pbm5lci10d28gewogICAgZ2FwOiAyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYWJvdXRfX2NvbnRlbnQtaW5uZXItdHdvIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIGdhcDogMzBweDsKICB9Cn0KLmFib3V0X19jb250ZW50LWlubmVyLXRocmVlIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDM1cHg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIGZsZXgtd3JhcDogd3JhcDsKfQouYWJvdXRfX2NvbnRlbnQtaW5uZXItZm91ciB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDMwcHg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fY29udGVudC1pbm5lci1mb3VyIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9Cn0KLmFib3V0X19jb250ZW50LWlubmVyLWZpdmUgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAzMHB4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBtYXJnaW4tYm90dG9tOiA2MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2NvbnRlbnQtaW5uZXItZml2ZSB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5hYm91dF9fbGlzdC1ib3ggLmxpc3Qtd3JhcCBsaSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGdhcDogMTJweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5hYm91dF9fbGlzdC1ib3ggLmxpc3Qtd3JhcCBsaSBpIHsKICB3aWR0aDogMjZweDsKICBoZWlnaHQ6IDI2cHg7CiAgZmxleDogMCAwIGF1dG87CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGxpbmUtaGVpZ2h0OiAwOwogIGZvbnQtc2l6ZTogMThweDsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwp9Ci5hYm91dF9fbGlzdC1ib3ggLmxpc3Qtd3JhcCBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5hYm91dF9fbGlzdC1ib3gtdHdvIHsKICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNEQkUzRUI7CiAgcGFkZGluZy1sZWZ0OiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX2xpc3QtYm94LXR3byB7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogIH0KfQouYWJvdXRfX2xpc3QtaW1nIHsKICB3aWR0aDogMTg0cHg7CiAgZmxleDogMCAwIGF1dG87Cn0KLmFib3V0X19saXN0LWltZyBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4Owp9Ci5hYm91dF9fbGlzdC1pbWctdHdvIHsKICB3aWR0aDogMjQ4cHg7CiAgZmxleDogMCAwIGF1dG87Cn0KLmFib3V0X19saXN0LWltZy10d28gaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDhweDsKICAtby1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDhweDsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgYm9yZGVyOiAxcHggc29saWQgI0QxRDFEMTsKICBib3gtc2hhZG93OiA3cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci5hYm91dF9fbGlzdC1pbWctdGhyZWUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouYWJvdXRfX2xpc3QtaW1nLXRocmVlIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7Cn0KLmFib3V0X19saXN0LWltZy10aHJlZSAucGxheS1idG4gewogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ibGFjay0xKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9Ci5hYm91dF9fbGlzdC1pbWctdGhyZWUgLnBsYXktYnRuOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouYWJvdXRfX2xpc3QtaW1nLWZvdXIgaW1nIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogLTdweCA3cHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW1zLWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1vLWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJvcmRlcjogMC44cHggc29saWQgI0RBREFEQTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMnB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKfQouYWJvdXQtYm90dG9tIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogNDBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXQtYm90dG9tIHsKICAgIGdhcDogMzBweDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9Cn0KLmFib3V0LWJvdHRvbSAuYXV0aG9yLXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxNXB4Owp9Ci5hYm91dC1ib3R0b20gLmF1dGhvci13cmFwIC50aHVtYiB7CiAgd2lkdGg6IDYwcHg7CiAgZmxleDogMCAwIGF1dG87CiAgYm9yZGVyOiAxcHggc29saWQgI0I4QjlEQTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYWJvdXQtYm90dG9tIC5hdXRob3Itd3JhcCAuY29udGVudCBpbWcgewogIG1hcmdpbi1ib3R0b206IDVweDsKfQouYWJvdXQtYm90dG9tIC5hdXRob3Itd3JhcCAuY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLmFib3V0LWJvdHRvbSAuYXV0aG9yLXdyYXAgLmNvbnRlbnQgLnRpdGxlIHNwYW4gewogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjNjU2OEFGOwp9Ci5hYm91dC1ib3R0b20tdHdvIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTQpOwogIHBhZGRpbmctdG9wOiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXQtYm90dG9tLXR3byB7CiAgICBnYXA6IDIwcHg7CiAgfQp9Ci5hYm91dF9fcGhvbmUgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxNXB4Owp9Ci5hYm91dF9fcGhvbmUgLmljb24gewogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAwOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGZvbnQtc2l6ZTogMjVweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouYWJvdXRfX3Bob25lIC5jb250ZW50IHNwYW4gewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxOwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLmFib3V0X19waG9uZSAuY29udGVudCBhIHsKICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IHZhcigtLXRnLWZ3LXNlbWktYm9sZCk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGxpbmUtaGVpZ2h0OiAxOwp9Ci5hYm91dF9fcGhvbmUgLmNvbnRlbnQgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5hYm91dF9fYXdhcmQtYm94IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTVweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxNXB4OwogIGxlZnQ6IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0X19hd2FyZC1ib3ggewogICAgYm90dG9tOiAwOwogIH0KfQouYWJvdXRfX2F3YXJkLWJveCAuaWNvbiB7CiAgd2lkdGg6IDkwcHg7CiAgaGVpZ2h0OiA5MHB4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgYm9yZGVyLXJhZGl1czogMTVweDsKICBsaW5lLWhlaWdodDogMDsKICBmb250LXNpemU6IDQ1cHg7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5hYm91dF9fYXdhcmQtYm94IC5jb250ZW50IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMTJweDsKICBmb250LXNpemU6IDUwcHg7CiAgbGluZS1oZWlnaHQ6IDAuODsKICBmb250LXdlaWdodDogODAwOwp9Ci5hYm91dF9fYXdhcmQtYm94IC5jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMS40Owp9Ci5hYm91dF9fYXdhcmQtYm94LXR3byB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbW96LWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tcy1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtby1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXI6IDAuOHB4IHNvbGlkICNCNEI0QjQ7CiAgcGFkZGluZzogMTdweCAyNXB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTJweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTJweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTJweDsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMyU7CiAgYm90dG9tOiAzMyU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fYXdhcmQtYm94LXR3byB7CiAgICBsZWZ0OiAtMTclOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX2F3YXJkLWJveC10d28gewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmFib3V0X19zYXRpc2ZpZWQtYm94IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTVweDsKfQouYWJvdXRfX3NhdGlzZmllZC1ib3ggLmljb24gewogIHdpZHRoOiA5MHB4OwogIGhlaWdodDogOTBweDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodCk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGxpbmUtaGVpZ2h0OiAwOwogIGZvbnQtc2l6ZTogNDVweDsKfQouYWJvdXRfX3NhdGlzZmllZC1ib3ggLmNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDQwcHg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBsaW5lLWhlaWdodDogMTsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX3NhdGlzZmllZC1ib3ggLmNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0X19zYXRpc2ZpZWQtYm94IC5jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDMycHg7CiAgfQp9Ci5hYm91dF9fc2F0aXNmaWVkLWJveCAuY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKfQouYWJvdXQtc2hhcGUtd3JhcCBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQouYWJvdXQtc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICByaWdodDogMTAlOwogIHRvcDogMzAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuYWJvdXQtc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHJpZ2h0OiA2JTsKICAgIHRvcDogMjYlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0LXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgxKSB7CiAgICByaWdodDogMTAlOwogICAgdG9wOiA0JTsKICB9Cn0KLmFib3V0LXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDYlOwogIHRvcDogMzYlOwogIHotaW5kZXg6IC0yOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuYWJvdXQtc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHJpZ2h0OiAyJTsKICAgIHRvcDogMzQlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmFib3V0LXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgICByaWdodDogNCU7CiAgICB0b3A6IDExJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0LXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouYWJvdXQtbGVmdC1zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKfQouYWJvdXRfX3NoYXBlLXdyYXAtdHdvIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci5hYm91dF9fc2hhcGUtd3JhcC10d28gaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogOSU7CiAgdG9wOiAyMCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5hYm91dF9fc2hhcGUtd3JhcC10d28gaW1nOm50aC1jaGlsZCgxKSB7CiAgICBsZWZ0OiA4JTsKICAgIHRvcDogMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmFib3V0X19zaGFwZS13cmFwLXR3byBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIGxlZnQ6IDE1JTsKICB9Cn0KLmFib3V0X19zaGFwZS13cmFwLXR3byBpbWc6bnRoLWNoaWxkKDIpIHsKICBsZWZ0OiAxMiU7CiAgdG9wOiAyNiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5hYm91dF9fc2hhcGUtd3JhcC10d28gaW1nOm50aC1jaGlsZCgyKSB7CiAgICBsZWZ0OiAyJTsKICAgIHRvcDogMTAlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYWJvdXRfX3NoYXBlLXdyYXAtdHdvIGltZzpudGgtY2hpbGQoMikgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmFib3V0X19zaGFwZS13cmFwLXR3byBpbWc6bnRoLWNoaWxkKDMpIHsKICByaWdodDogMCU7CiAgYm90dG9tOiAwJTsKfQouYWJvdXRfX3NoYXBlLXdyYXAtdGhyZWUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7CiAgcmlnaHQ6IC0xMCU7CiAgdG9wOiAtNSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5hYm91dF9fc2hhcGUtd3JhcC10aHJlZSBpbWcgewogICAgcmlnaHQ6IC0zJTsKICAgIHRvcDogLTEwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0X19zaGFwZS13cmFwLXRocmVlIGltZyB7CiAgICB0b3A6IC02JTsKICB9Cn0KLmFib3V0X19zaGFwZS13cmFwLWZvdXIgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLmFib3V0X19zaGFwZS13cmFwLWZvdXIgaW1nOm50aC1jaGlsZCgxKSB7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwp9Ci5hYm91dF9fc2hhcGUtd3JhcC1mb3VyIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAxMCU7CiAgYm90dG9tOiA0MiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5hYm91dF9fc2hhcGUtd3JhcC1mb3VyIGltZzpudGgtY2hpbGQoMikgewogICAgcmlnaHQ6IDYlOwogICAgYm90dG9tOiA1MiU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuYWJvdXRfX3NoYXBlLXdyYXAtZm91ciBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHJpZ2h0OiAyJTsKICAgIGJvdHRvbTogMzIlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYWJvdXRfX3NoYXBlLXdyYXAtZm91ciBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHJpZ2h0OiA4JTsKICAgIGJvdHRvbTogNyU7CiAgfQp9CgouZXhwZXJpZW5jZS15ZWFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE1MHB4OwogIGhlaWdodDogMTUwcHg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIGJvdHRvbTogMDsKfQouZXhwZXJpZW5jZS15ZWFyIC5pY29uIHsKICB3aWR0aDogODBweDsKICBoZWlnaHQ6IDgwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbGluZS1oZWlnaHQ6IDA7CiAgZm9udC1zaXplOiAzNnB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQouZXhwZXJpZW5jZS15ZWFyIC5jb250ZW50IC5jaXJjbGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTVweDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouZXhwZXJpZW5jZS15ZWFyIC5jb250ZW50IC5jaXJjbGUgc3BhbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTY0cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgNjRweDsKfQoKLmV4cGVyaWVuY2VfX2JveC10d28gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICBsZWZ0OiAxMXB4OwogIGJvdHRvbTogOSU7CiAgcGFkZGluZzogNjBweCAyNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5leHBlcmllbmNlX19ib3gtdHdvIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5leHBlcmllbmNlX19ib3gtdGhyZWUgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQouZXhwZXJpZW5jZV9fYm94LXRocmVlIC50aXRsZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0KTsKICBib3JkZXI6IDFweCBzb2xpZCAjRjRFN0NDOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTZweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE2cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTZweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTZweDsKICBib3JkZXItcmFkaXVzOiAxNnB4OwogIG1hcmdpbi1ib3R0b206IDA7CiAgcGFkZGluZzogMzBweCAyOHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuZXhwZXJpZW5jZV9fYm94LXRocmVlIC50aXRsZSB7CiAgICBwYWRkaW5nOiAyNXB4IDI1cHg7CiAgfQp9Ci5leHBlcmllbmNlX19ib3gtdGhyZWUgLnRpdGxlIHNwYW4gewogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGRkNFNEYgMCUsICNGNzk0MDAgMTAwJSk7CiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IDkwcHg7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBsaW5lLWhlaWdodDogMC44OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5leHBlcmllbmNlX19ib3gtdGhyZWUgLnRpdGxlIHNwYW4gewogICAgZm9udC1zaXplOiA2MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZXhwZXJpZW5jZV9fYm94LXRocmVlIC50aXRsZSBzcGFuIHsKICAgIGZvbnQtc2l6ZTogODBweDsKICB9Cn0KLmV4cGVyaWVuY2VfX2JveC10aHJlZSBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuZXhwZXJpZW5jZV9fYm94LXRocmVlIHAgewogICAgZm9udC1zaXplOiAxNHB4OwogIH0KfQouZXhwZXJpZW5jZV9fYm94LXRocmVlIHAgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmV4cGVyaWVuY2VfX2JveC1mb3VyIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDQwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0MHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDQwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDQwcHg7CiAgYm9yZGVyLXJhZGl1czogNDBweDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogLTE1JTsKICBib3R0b206IDM2JTsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICBwYWRkaW5nOiAyMnB4IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5leHBlcmllbmNlX19ib3gtZm91ciB7CiAgICBsZWZ0OiAtMjIlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuZXhwZXJpZW5jZV9fYm94LWZvdXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmV4cGVyaWVuY2VfX2JveC1mb3VyIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjRkZDRTRGIDAlLCAjRjc5NDAwIDEwMCUpOwogIGJhY2tncm91bmQtY2xpcDogdGV4dDsKICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgZm9udC1zaXplOiA3MHB4OwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgbGluZS1oZWlnaHQ6IDAuODsKfQouZXhwZXJpZW5jZV9fYm94LWZvdXIgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci5leHBlcmllbmNlX19jb250ZW50IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMjBweDsKICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmV4cGVyaWVuY2VfX2NvbnRlbnQgewogICAgbGVmdDogNDIlOwogIH0KfQouZXhwZXJpZW5jZV9fY29udGVudCAudGl0bGUgewogIGZvbnQtc2l6ZTogNTBweDsKICBsaW5lLWhlaWdodDogMC44OwogIGZvbnQtd2VpZ2h0OiA4MDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5leHBlcmllbmNlX19jb250ZW50IC50aXRsZTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICBib3R0b206IC05cHg7CiAgd2lkdGg6IDM0cHg7CiAgaGVpZ2h0OiAycHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmV4cGVyaWVuY2VfX2NvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouZXhwZXJpZW5jZV9fc2hhcGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAzMCU7CiAgdG9wOiAwOwogIHdpZHRoOiAzNSU7CiAgaGVpZ2h0OiAxMDAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIHotaW5kZXg6IC0xOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuZXhwZXJpZW5jZV9fc2hhcGUgewogICAgbGVmdDogNjMlOwogIH0KfQouZXhwZXJpZW5jZV9fc2hhcGUgc3ZnIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCTA3LiBTZXJ2aWNlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLnNlcnZpY2VzLWJnIHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlcy1iZyB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQouc2VydmljZXNfX2JnLXRocmVlIHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwYWRkaW5nOiAxMjBweCAwIDkwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19iZy10aHJlZSB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDcwcHg7CiAgfQp9Ci5zZXJ2aWNlc19fYmctZm91ciB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fYmctZm91ciB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDcwcHg7CiAgfQp9Ci5zZXJ2aWNlc19fYmctZml2ZSB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fYmctZml2ZSB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDcwcHg7CiAgfQp9Ci5zZXJ2aWNlc19fYmctc2l4IHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fYmctc2l4IHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5zZXJ2aWNlc19fYmctc2V2ZW4gewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2JnLXNldmVuIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLnNlcnZpY2VzX19hcmVhLXR3byB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fYXJlYS10d28gewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouc2VydmljZXMtaXRlbS13cmFwIC5yb3cgewogIC0tYnMtZ3V0dGVyLXg6IDI0cHg7Cn0KLnNlcnZpY2VzLWl0ZW0gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouc2VydmljZXMtaXRlbTpob3ZlciB7CiAgYm94LXNoYWRvdzogMHB4IDRweCAzMHB4IDBweCAjQ0ZERUU0Owp9Ci5zZXJ2aWNlcy1pdGVtOmhvdmVyIC5zZXJ2aWNlcy1jb250ZW50IC5pY29uIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouc2VydmljZXNfX2l0ZW0tdHdvIHsKICBib3JkZXI6IDJweCBzb2xpZCAjMjgyQjdDOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIHBhZGRpbmc6IDM1cHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKfQouc2VydmljZXNfX2l0ZW0tdHdvOmhvdmVyIC5zZXJ2aWNlc19faWNvbi10d28gewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Cn0KLnNlcnZpY2VzX19pdGVtLXRocmVlIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBwYWRkaW5nOiA0MHB4IDQwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNlcnZpY2VzX19pdGVtLXRocmVlIHsKICAgIHBhZGRpbmc6IDM1cHggMzBweDsKICB9Cn0KLnNlcnZpY2VzX19pdGVtLXRocmVlOmhvdmVyIC5zZXJ2aWNlc19faWNvbi10aHJlZSBpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwp9Ci5zZXJ2aWNlc19faXRlbS1mb3VyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogNTBweDsKICBwYWRkaW5nOiAzMHB4IDgwcHggMzBweCAzMHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2l0ZW0tZm91ciB7CiAgICBwYWRkaW5nOiAzMHB4IDIwcHggMzBweCAyMHB4OwogICAgZ2FwOiAyNXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2VydmljZXNfX2l0ZW0tZm91ciB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBwYWRkaW5nOiAzMHB4IDMwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19faXRlbS1mb3VyIHsKICAgIHBhZGRpbmc6IDMwcHggMjVweDsKICB9Cn0KLnNlcnZpY2VzX19pdGVtLWZpdmUgewogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tcy1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3JkZXI6IDFweCBzb2xpZCAjRTlFOUYwOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIHBhZGRpbmc6IDYwcHggMzBweCA0NXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLnNlcnZpY2VzX19pdGVtLWZpdmU6aG92ZXIgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKfQouc2VydmljZXNfX2l0ZW0tdG9wIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMzBweDsKICBtYXJnaW4tYm90dG9tOiAyMnB4Owp9Ci5zZXJ2aWNlc19faXRlbS10b3AgLnRpdGxlIHsKICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBtYXJnaW4tYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2l0ZW0tdG9wIC50aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgfQp9Ci5zZXJ2aWNlc19faXRlbS13cmFwLXR3byAucm93IFtjbGFzcyo9Y29sLV06bnRoLWNoaWxkKG9kZCkgLnNlcnZpY2VzX19pdGVtLWZpdmUgewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNlcnZpY2VzX19pdGVtLXdyYXAtdHdvIC5yb3cgW2NsYXNzKj1jb2wtXTpudGgtY2hpbGQob2RkKSAuc2VydmljZXNfX2l0ZW0tZml2ZSB7CiAgICBtYXJnaW4tdG9wOiAwOwogIH0KfQouc2VydmljZXMtdGh1bWIgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4IDEwcHggMCAxMDBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4IDEwcHggMCAxMDBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTAwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnNlcnZpY2VzLXRodW1iIGltZyB7CiAgaGVpZ2h0OiAyMDBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB3aWR0aDogMTAwJTsKfQouc2VydmljZXNfX3RodW1iLWZvdXIgewogIHdpZHRoOiAzMzdweDsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNlcnZpY2VzX190aHVtYi1mb3VyIHsKICAgIHdpZHRoOiAzMDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNlcnZpY2VzX190aHVtYi1mb3VyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouc2VydmljZXNfX3RodW1iLWZvdXIgaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMnB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKICBoZWlnaHQ6IDM4MHB4OwogIG9iamVjdC1maXQ6IGNvdmVyOwogIHdpZHRoOiAxMDAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX3RodW1iLWZvdXIgaW1nIHsKICAgIGhlaWdodDogMzQwcHg7CiAgfQp9Ci5zZXJ2aWNlc19faWNvbi10d28gewogIGZvbnQtc2l6ZTogNjBweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQouc2VydmljZXNfX2ljb24tdGhyZWUgewogIHdpZHRoOiA3MHB4OwogIGhlaWdodDogNzBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktMik7CiAgZmxleDogMCAwIGF1dG87CiAgbGluZS1oZWlnaHQ6IDA7CiAgZm9udC1zaXplOiA0MnB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouc2VydmljZXNfX2ljb24tdGhyZWUgaSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZyk7Cn0KLnNlcnZpY2VzX19pY29uLXRocmVlOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogLTE4cHg7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAzcHg7CiAgaGVpZ2h0OiA0MHB4OwogIGJhY2tncm91bmQ6ICNEQ0U3RUM7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogM3B4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5zZXJ2aWNlc19faWNvbi1maXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgZm9udC1zaXplOiA0NXB4OwogIGxpbmUtaGVpZ2h0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9Ci5zZXJ2aWNlc19faWNvbi1zaGFwZSAuc2hhcGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQouc2VydmljZXNfX2ljb24tc2hhcGUgLnNoYXBlOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7Cn0KLnNlcnZpY2VzX19pY29uLXNoYXBlIC5zaGFwZTpudGgtY2hpbGQoMSkgc3ZnIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0KTsKfQouc2VydmljZXNfX2ljb24tc2hhcGUgLnNoYXBlOm50aC1jaGlsZCgyKSB7CiAgbGVmdDogLTJweDsKICBib3R0b206IC0xM3B4Owp9Ci5zZXJ2aWNlc19faWNvbi1zaGFwZSAuc2hhcGU6bnRoLWNoaWxkKDIpIHN2ZyB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5zZXJ2aWNlc19faWNvbi1zaGFwZSAuc2hhcGU6bnRoLWNoaWxkKDMpIHsKICBsZWZ0OiA1MHB4OwogIHRvcDogLTE4cHg7Cn0KLnNlcnZpY2VzX19pY29uLXNoYXBlIC5zaGFwZTpudGgtY2hpbGQoMykgc3ZnIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnNlcnZpY2VzLWNvbnRlbnQgewogIHBhZGRpbmc6IDMwcHggMzBweCAzMHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouc2VydmljZXMtY29udGVudCAuaWNvbiB7CiAgd2lkdGg6IDcwcHg7CiAgaGVpZ2h0OiA3MHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmb250LXNpemU6IDM2cHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAzMHB4OwogIHRvcDogLTU1cHg7CiAgei1pbmRleDogMjsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwp9Ci5zZXJ2aWNlcy1jb250ZW50IC50aXRsZSB7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouc2VydmljZXMtY29udGVudCAudGl0bGUgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5zZXJ2aWNlcy1jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDIycHg7Cn0KLnNlcnZpY2VzLWNvbnRlbnQgLmJ0biB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBwYWRkaW5nOiAxNnB4IDIwcHg7Cn0KLnNlcnZpY2VzLWNvbnRlbnQgLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zZXJ2aWNlc19fY29udGVudC10d28gLnRpdGxlIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQouc2VydmljZXNfX2NvbnRlbnQtdHdvIHAgewogIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KLnNlcnZpY2VzX19jb250ZW50LXR3byAuYnRuIHsKICBiYWNrZ3JvdW5kOiAjMkUzMjhCOwogIGNvbG9yOiAjOTU5N0M4OwogIHBhZGRpbmc6IDE2cHggMjBweDsKfQouc2VydmljZXNfX2NvbnRlbnQtdHdvIC5idG46OmJlZm9yZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnNlcnZpY2VzX19jb250ZW50LXR3byAuYnRuOjphZnRlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zZXJ2aWNlc19fY29udGVudC10d28gLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLnNlcnZpY2VzX19jb250ZW50LXR3byAuYnRuOmhvdmVyOjphZnRlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLnNlcnZpY2VzX19jb250ZW50LXRocmVlIHAgewogIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KLnNlcnZpY2VzX19jb250ZW50LXRocmVlIC5idG4gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodCk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5zZXJ2aWNlc19fY29udGVudC10aHJlZSAuYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZvdXIgLnRpdGxlIHsKICBmb250LXNpemU6IDMwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2NvbnRlbnQtZm91ciAudGl0bGUgewogICAgZm9udC1zaXplOiAyNnB4OwogIH0KfQouc2VydmljZXNfX2NvbnRlbnQtZm91ciBwIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5zZXJ2aWNlc19fY29udGVudC1mb3VyIC5hYm91dF9fbGlzdC1ib3ggewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZvdXIgLmFib3V0X19saXN0LWJveCBsaSBpIHsKICBmb250LXNpemU6IDE1cHg7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZvdXIgLmJ0biB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouc2VydmljZXNfX2NvbnRlbnQtZm91ciAuYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZpdmUgLnRpdGxlIHsKICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5zZXJ2aWNlc19fY29udGVudC1maXZlIHAgewogIG1hcmdpbi1ib3R0b206IDI1cHg7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZpdmUgLmJ0biB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBwYWRkaW5nOiAxNnB4IDI0cHg7Cn0KLnNlcnZpY2VzX19jb250ZW50LWZpdmUgLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zZXJ2aWNlcy1ib3R0b20tY29udGVudCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBnYXA6IDIwcHg7CiAgbWFyZ2luLXRvcDogMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXMtYm90dG9tLWNvbnRlbnQgewogICAgZmxleC13cmFwOiB3cmFwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQouc2VydmljZXMtYm90dG9tLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouc2VydmljZXNfX3RhYi13cmFwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX190YWItd3JhcCB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5zZXJ2aWNlc19fdGFiLXdyYXAgLm5hdi10YWJzIHsKICBib3JkZXItYm90dG9tOiBub25lOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICB3aWR0aDogMzMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fdGFiLXdyYXAgLm5hdi10YWJzIHsKICAgIHdpZHRoOiAyNzBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX190YWItd3JhcCAubmF2LXRhYnMgewogICAgd2lkdGg6IGF1dG87CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQp9Ci5zZXJ2aWNlc19fdGFiLXdyYXAgLm5hdi1pdGVtIHsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLnNlcnZpY2VzX190YWItd3JhcCAubmF2LWl0ZW06bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouc2VydmljZXNfX3RhYi13cmFwIC5uYXYtbGluayB7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzNCM0Q5QSAxMy4xOSUsIHJnYmEoNDQsIDQ2LCAxNDMsIDAuNTQpIDEwMCUpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgbWFyZ2luOiAwOwogIGdhcDogMTFweDsKICBmb250LXNpemU6IDIwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHBhZGRpbmc6IDE1cHggNTVweCAxNXB4IDI1cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAzMzBweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX3RhYi13cmFwIC5uYXYtbGluayB7CiAgICB3aWR0aDogMjcwcHg7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBwYWRkaW5nOiAxNXB4IDQ1cHggMTVweCAyMHB4OwogIH0KfQouc2VydmljZXNfX3RhYi13cmFwIC5uYXYtbGluayBpIHsKICBmb250LXNpemU6IDQwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fdGFiLXdyYXAgLm5hdi1saW5rIGkgewogICAgZm9udC1zaXplOiAzNXB4OwogIH0KfQouc2VydmljZXNfX3RhYi13cmFwIC5uYXYtbGluazo6YWZ0ZXIgewogIGNvbnRlbnQ6ICJcZjEwYSI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIHJpZ2h0OiAyMHB4OwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICBmb250LWZhbWlseTogZmxhdGljb247CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KLnNlcnZpY2VzX190YWItd3JhcCAubmF2LWxpbmsuYWN0aXZlIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnNlcnZpY2VzX190YWItd3JhcCAubmF2LWxpbmsuYWN0aXZlIGkgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouc2VydmljZXNfX3NoYXBlLXdyYXAgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLnNlcnZpY2VzX19zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5zZXJ2aWNlc19fc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHdpZHRoOiAyMDBweDsKICB9Cn0KLnNlcnZpY2VzX19zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2VydmljZXNfX3NoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgICB3aWR0aDogMjAwcHg7CiAgfQp9Ci5zZXJ2aWNlc19fc2hhcGUtd3JhcC10d28gaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLnNlcnZpY2VzX19zaGFwZS13cmFwLXR3byBpbWc6bnRoLWNoaWxkKDEpIHsKICBsZWZ0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX3NoYXBlLXdyYXAtdHdvIGltZzpudGgtY2hpbGQoMSkgewogICAgd2lkdGg6IDIwMHB4OwogIH0KfQouc2VydmljZXNfX3NoYXBlLXdyYXAtdHdvIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX3NoYXBlLXdyYXAtdHdvIGltZzpudGgtY2hpbGQoMikgewogICAgd2lkdGg6IDIwMHB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtYXJlYSB7CiAgcGFkZGluZzogMTIwcHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtYXJlYSB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtd3JhcCAucm93IC5jb2wtNzAgewogIHdpZHRoOiA3MC40JTsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtd3JhcCAucm93IC5jb2wtNzAgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy13cmFwIC5yb3cgLmNvbC0zMCB7CiAgd2lkdGg6IDI5LjYlOwogIGZsZXg6IDAgMCBhdXRvOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy13cmFwIC5yb3cgLmNvbC0zMCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLXRodW1iIHsKICBtYXJnaW4tYm90dG9tOiAzNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy10aHVtYiB7CiAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtdGh1bWIgaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICB3aWR0aDogMTAwJTsKICBtaW4taGVpZ2h0OiAyNTBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKfQouc2VydmljZXNfX2RldGFpbHMtdGh1bWItdHdvIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy10aHVtYi10d28gewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWNvbnRlbnQgPiAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDIycHg7CiAgZm9udC1zaXplOiA0MHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1jb250ZW50ID4gLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWNvbnRlbnQgPiAudGl0bGUgewogICAgZm9udC1zaXplOiAzMnB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtY29udGVudCA+IHAgewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWNvbnRlbnQgPiBwLmxhc3QtaW5mbyB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouc2VydmljZXNfX2RldGFpbHMtY29udGVudCAudGl0bGUtdHdvIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc2l6ZTogMzZweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtY29udGVudCAudGl0bGUtdHdvIHsKICAgIGZvbnQtc2l6ZTogMzJweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWNvbnRlbnQgLnRpdGxlLXR3byB7CiAgICBmb250LXNpemU6IDI4cHg7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1jb250ZW50LXR3byA+IC50aXRsZSB7CiAgZm9udC1zaXplOiAzNnB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtY29udGVudC10d28gPiAudGl0bGUgewogICAgZm9udC1zaXplOiAzMnB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtY29udGVudC10d28gPiAudGl0bGUgewogICAgZm9udC1zaXplOiAzMHB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtdG9wIHsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy10b3AgLnJvdyAuY29sLTQ5IHsKICB3aWR0aDogNDguOSU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLXRvcCAucm93IC5jb2wtNDkgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy10b3AgLnJvdyAuY29sLTUxIHsKICB3aWR0aDogNTEuMSU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLXRvcCAucm93IC5jb2wtNTEgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy10b3AtY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgZm9udC1zaXplOiA0MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtdG9wLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLXRvcC1jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDMycHg7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy10b3AtY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0IHsKICBtYXJnaW46IDM1cHggMCAxMHB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0LXR3byB7CiAgbWFyZ2luOiAyNXB4IDAgMTBweDsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3ggewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGdhcDogMjBweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbW96LWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbXMtYm94LXNoYWRvdzogMHB4IDdweCAxNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC1vLWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICBib3gtc2hhZG93OiAwcHggN3B4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm9yZGVyOiAxcHggc29saWQgI0U1RTdFODsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBwYWRkaW5nOiAzMHB4IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94IHsKICAgIGdhcDogMTVweDsKICAgIHBhZGRpbmc6IDMwcHggMjVweDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94IC5pY29uIHsKICB3aWR0aDogNzBweDsKICBoZWlnaHQ6IDcwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBmbGV4OiAwIDAgYXV0bzsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDhweDsKICAtby1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDhweDsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGZvbnQtc2l6ZTogNTBweDsKICBsaW5lLWhlaWdodDogMDsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3ggLmljb24gaSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDApOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94IC5jb250ZW50IC50aXRsZSB7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3ggLmNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3g6aG92ZXIgLmljb24gaSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdHdvIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbW96LWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbXMtYm94LXNoYWRvdzogMHB4IDdweCAxNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC1vLWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICBib3gtc2hhZG93OiAwcHggN3B4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYmFja2dyb3VuZDogI0ZGRkJGNDsKICBib3JkZXI6IDFweCBzb2xpZCAjRkJENThBOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIHBhZGRpbmc6IDMwcHggMzBweCAzMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdHdvIHsKICAgIHBhZGRpbmc6IDMwcHggMThweCAzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdHdvIHsKICAgIHBhZGRpbmc6IDMwcHggMzBweCAzMHB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdHdvIC5pY29uIHsKICB3aWR0aDogODBweDsKICBoZWlnaHQ6IDgwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbGluZS1oZWlnaHQ6IDA7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbjogMCBhdXRvIDMwcHg7CiAgZm9udC1zaXplOiA0MHB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10d28gLmljb24gaSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDApOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94LXR3byAuY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10d28gLmNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94LXR3byAuY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiAyMnB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdHdvIC5jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94LXR3bzpob3ZlciAuaWNvbiBpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10aHJlZSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgZ2FwOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10aHJlZSB7CiAgICBnYXA6IDE0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdGhyZWUgLmljb24gewogIGZvbnQtc2l6ZTogNjBweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgwKSB0cmFuc2xhdGVZKDNweCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMCkgdHJhbnNsYXRlWSgzcHgpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMCkgdHJhbnNsYXRlWSgzcHgpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgwKSB0cmFuc2xhdGVZKDNweCk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDApIHRyYW5zbGF0ZVkoM3B4KTsKfQouc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3gtdGhyZWUgLmNvbnRlbnQgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWxpc3QtYm94LXRocmVlIC5jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10aHJlZSAuY29udGVudCBwIGJyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10aHJlZTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveC10aHJlZTpob3ZlciAuaWNvbiB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSB0cmFuc2xhdGVZKDNweCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSB0cmFuc2xhdGVZKDNweCk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVkoM3B4KTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKSB0cmFuc2xhdGVZKDNweCk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRlWSgzcHgpOwp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lciB7CiAgbWFyZ2luOiAzNXB4IDAgMzBweDsKfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTQ0IHsKICB3aWR0aDogNDMuOSU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyIC5yb3cgLmNvbC00NCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyIC5yb3cgLmNvbC01NiB7CiAgd2lkdGg6IDU2LjElOwogIGZsZXg6IDAgMCBhdXRvOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lciAucm93IC5jb2wtNTYgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci10d28gewogIG1hcmdpbjogODBweCAwIDQ1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci10d28gewogICAgbWFyZ2luOiA1MHB4IDAgNDBweDsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLXR3byAucm93IC5jb2wtNDggewogIHdpZHRoOiA0OC41JTsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItdHdvIC5yb3cgLmNvbC00OCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLXR3byAucm93IC5jb2wtNTIgewogIHdpZHRoOiA1MS41JTsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItdHdvIC5yb3cgLmNvbC01MiB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLXRocmVlIHsKICBtYXJnaW4tYm90dG9tOiA0MHB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1mb3VyIHsKICBtYXJnaW46IDQwcHggMCAzNXB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1mb3VyIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXR3byBwIHsKICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1maXZlIHsKICBtYXJnaW46IDAgMCA1NXB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1maXZlIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIHsKICBtYXJnaW46IDAgMzBweCAwIDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1maXZlIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIHsKICAgIG1hcmdpbjogMCAwIDAgMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWZpdmUgLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWNvbnRlbnQtdGhyZWUgewogICAgbWFyZ2luOiAwIDAgMzBweCAwOwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItZml2ZSAuc2VydmljZXNfX2RldGFpbHMtbGlzdC1ib3ggewogIHBhZGRpbmc6IDI1cHggMjVweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1maXZlIC5zZXJ2aWNlc19fZGV0YWlscy1saXN0LWJveDpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1zaXggewogIG1hcmdpbjogMzBweCAwIDQwcHg7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLXNpeCAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10aHJlZSB7CiAgbWFyZ2luOiAwIDYwcHggMCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItc2l4IC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIHsKICAgIG1hcmdpbjogMCAwIDAgMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLXNpeCAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10aHJlZSB7CiAgICBtYXJnaW46IDAgMCAzMHB4IDA7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1pbWcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItaW1nIHsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1pbWcgaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBtaW4taGVpZ2h0OiAyMzBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB3aWR0aDogMTAwJTsKfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItaW1nIC5wbGF5LWJ0biB7CiAgd2lkdGg6IDYycHg7CiAgaGVpZ2h0OiA2MnB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBmb250LXNpemU6IDE4cHg7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWltZyAucGxheS1idG46aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItaW1nLXdyYXAgewogIG1hcmdpbjogMzBweCAwIDA7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWltZy13cmFwIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB3aWR0aDogMTAwJTsKfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgZm9udC1zaXplOiAyNHB4OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudCAudGl0bGUgYnIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10d28gLnRpdGxlIHsKICBmb250LXNpemU6IDM2cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10d28gLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzJweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWNvbnRlbnQtdHdvIC50aXRsZSB7CiAgICBmb250LXNpemU6IDI4cHg7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXR3byBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIHdpZHRoOiA5MCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXR3byBwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10aHJlZSB7CiAgbWFyZ2luLWxlZnQ6IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10aHJlZSB7CiAgICBtYXJnaW4tdG9wOiAzMHB4OwogIH0KfQouc2VydmljZXNfX2RldGFpbHMtaW5uZXItY29udGVudC10aHJlZSAudGl0bGUgewogIGZvbnQtc2l6ZTogMzBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIC50aXRsZSB7CiAgICBmb250LXNpemU6IDI4cHg7CiAgfQp9Ci5zZXJ2aWNlc19fZGV0YWlscy1pbm5lci1jb250ZW50LXRocmVlIHAgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnNlcnZpY2VzX19kZXRhaWxzLWlubmVyLWdyYXBoIGltZyB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbW96LWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tcy1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtby1ib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3gtc2hhZG93OiAtN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3JkZXI6IDAuOHB4IHNvbGlkICNEQURBREE7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTJweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMnB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDEycHg7Cn0KLnNlcnZpY2VzX19zaWRlYmFyIHsKICBtYXJnaW4tcmlnaHQ6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zZXJ2aWNlc19fc2lkZWJhciB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5zZXJ2aWNlc19fc2lkZWJhciB7CiAgICBtYXJnaW4tdG9wOiAxMDBweDsKICB9Cn0KCi5zaWRlYmFyX193aWRnZXQtdHdvIHsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgLW8tYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OwogIC1tcy1ib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9Ci5zaWRlYmFyX193aWRnZXQtdGhyZWUgewogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7Cn0KLnNpZGViYXJfX2NhdC1saXN0LXR3byAubGlzdC13cmFwIGxpIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5zaWRlYmFyX19jYXQtbGlzdC10d28gLmxpc3Qtd3JhcCBsaSBhIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIGJvcmRlcjogMXB4IHNvbGlkICNFMEVFRjM7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHBhZGRpbmc6IDE2cHggMjBweDsKICBmb250LXNpemU6IDE4cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7Cn0KLnNpZGViYXJfX2NhdC1saXN0LXR3byAubGlzdC13cmFwIGxpIGEgaSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLnNpZGViYXJfX2NhdC1saXN0LXR3byAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouc2lkZWJhcl9fY2F0LWxpc3QtdHdvIC5saXN0LXdyYXAgbGkgYTpob3ZlciBpIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnNpZGViYXJfX2NhdC1saXN0LXR3byAubGlzdC13cmFwIGxpOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnNpZGViYXJfX2NhdC1saXN0LXRocmVlIC5saXN0LXdyYXAgbGkgYSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnNpZGViYXJfX2Jyb2NodXJlIHAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLnNpZGViYXJfX2Jyb2NodXJlIGEgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKICAtby1ib3JkZXItcmFkaXVzOiA1cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgcGFkZGluZzogMTVweCAyMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBnYXA6IDEycHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouc2lkZWJhcl9fYnJvY2h1cmUgYSBpIHsKICBmb250LXNpemU6IDE4cHg7Cn0KLnNpZGViYXJfX2Jyb2NodXJlIGE6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zaWRlYmFyX19icm9jaHVyZSBhOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnNpZGViYXJfX2Jyb2NodXJlLXR3byBhIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouc2lkZWJhcl9fY29udGFjdCB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBwYWRkaW5nOiA1MHB4IDQwcHggNTVweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5zaWRlYmFyX19jb250YWN0IHsKICAgIHBhZGRpbmc6IDQwcHggMjBweCA0MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuc2lkZWJhcl9fY29udGFjdCB7CiAgICBwYWRkaW5nOiA0MHB4IDMwcHggNDBweDsKICB9Cn0KLnNpZGViYXJfX2NvbnRhY3QgLnRpdGxlIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBmb250LXNpemU6IDI0cHg7Cn0KLnNpZGViYXJfX2NvbnRhY3QgLmJ0biB7CiAgZ2FwOiA1cHg7CiAgcGFkZGluZzogMTNweCAyNHB4Owp9Ci5zaWRlYmFyX19jb250YWN0IC5idG4gaSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAwOwp9Ci5zaWRlYmFyX19jb250YWN0IC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5zaWRlYmFyX19jb250YWN0IC5idG46OmJlZm9yZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKfQouc2lkZWJhcl9fY29udGFjdCAuYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouc2lkZWJhcl9fY29udGFjdC10d28gewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDMwcHggNDBweCAxODBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnNpZGViYXJfX2NvbnRhY3QtdHdvIHsKICAgIHBhZGRpbmc6IDMwcHggMjBweCAxODBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnNpZGViYXJfX2NvbnRhY3QtdHdvIHsKICAgIHBhZGRpbmc6IDMwcHggMjBweCA3MHB4OwogIH0KfQouc2lkZWJhcl9fY29udGFjdC10d28gLnRpdGxlIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouc2lkZWJhcl9fY29udGFjdC10d28gLmJ0biB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7Cn0KLnNpZGViYXJfX2NvbnRhY3QtdHdvIC5idG46OmJlZm9yZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouc2lkZWJhcl9fY29udGFjdC10d28gLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zaWRlYmFyX19mb3JtIGZvcm0gLmZvcm0tZ3JwIHsKICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLnNpZGViYXJfX2Zvcm0gZm9ybSAuZm9ybS1ncnAgdGV4dGFyZWEsIC5zaWRlYmFyX19mb3JtIGZvcm0gLmZvcm0tZ3JwIGlucHV0IHsKICB3aWR0aDogMTAwJTsKICBib3JkZXI6IDFweCBzb2xpZCAjRTBFNkYyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBwYWRkaW5nOiAxNHB4IDE1cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBmb250LXdlaWdodDogNTAwOwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiBibG9jazsKfQouc2lkZWJhcl9fZm9ybSBmb3JtIC5mb3JtLWdycCB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIsIC5zaWRlYmFyX19mb3JtIGZvcm0gLmZvcm0tZ3JwIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjNjY3NTk0OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KLnNpZGViYXJfX2Zvcm0gZm9ybSAuZm9ybS1ncnAgdGV4dGFyZWEgewogIG1pbi1oZWlnaHQ6IDEyMHB4OwogIG1heC1oZWlnaHQ6IDEyMHB4Owp9Ci5zaWRlYmFyX19mb3JtIGZvcm0gLmJ0biB7CiAgd2lkdGg6IDEwMCU7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLnNpZGViYXJfX2Zvcm0gZm9ybSAuYnRuOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnNoaW5lLWFuaW1hdGUgewogIGRpc3BsYXk6IGJsb2NrOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KLnNoaW5lLWFuaW1hdGU6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAtMTAwJTsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKICB3aWR0aDogNTAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIDEwMCUpOwogIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgcmlnaHQgdG9wLCBmcm9tKHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpLCB0byhyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpKTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSAxMDAlKTsKICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goLTI1ZGVnKTsKICAtbXMtdHJhbnNmb3JtOiBza2V3WCgtMjVkZWcpOwogIHRyYW5zZm9ybTogc2tld1goLTI1ZGVnKTsKfQouc2hpbmUtYW5pbWF0ZS1pdGVtOmhvdmVyIC5zaGluZS1hbmltYXRlOjpiZWZvcmUgewogIC13ZWJraXQtYW5pbWF0aW9uOiBob3ZlclNoaW5lIDEuMnM7CiAgYW5pbWF0aW9uOiBob3ZlclNoaW5lIDEuMnM7Cn0KCi5zZWN0aW9uLW1vcmUtYnRuIHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2VjdGlvbi1tb3JlLWJ0biB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KLnNlY3Rpb24tbW9yZS1idG4gLmJvcmRlci1idG4gewogIGJvcmRlci1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zZWN0aW9uLW1vcmUtYnRuIC5ib3JkZXItYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgouYWJvdXRfX2xpc3QtYm94LXRocmVlIC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgbWFyZ2luOiAwIC01cHg7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogMTBweCAwOwp9Ci5hYm91dF9fbGlzdC1ib3gtdGhyZWUgLmxpc3Qtd3JhcCBsaSB7CiAgd2lkdGg6IDUwJTsKICBmbGV4OiAwIDAgYXV0bzsKICBwYWRkaW5nOiAwIDVweDsKICBtYXJnaW46IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmFib3V0X19saXN0LWJveC10aHJlZSAubGlzdC13cmFwIGxpIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAuYWJvdXRfX2xpc3QtYm94LXRocmVlIC5saXN0LXdyYXAgbGkgewogICAgd2lkdGg6IDUwJTsKICB9Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDA4LiBDaG9vc2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5jaG9vc2UtYXJlYSB7CiAgYmFja2dyb3VuZDogIzE3MUE3QzsKICBwYWRkaW5nOiAxMjBweCAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNob29zZS1hcmVhIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5jaG9vc2VfX2FyZWEtdHdvIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW46IDEyMHB4IDAgMDsKICBwYWRkaW5nOiA4NXB4IDAgMDsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX2FyZWEtdHdvIHsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDA7CiAgfQp9Ci5jaG9vc2VfX2FyZWEtdGhyZWUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBhZGRpbmc6IDEyMHB4IDA7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19hcmVhLXRocmVlIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5jaG9vc2VfX2FyZWEtZm91ciB7CiAgYmFja2dyb3VuZDogIzE3MUE3QzsKICBwYWRkaW5nOiAxMjBweCAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX2FyZWEtZm91ciB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQouY2hvb3NlX19hcmVhLWZpdmUgewogIHBhZGRpbmc6IDAgMCAxMjBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19hcmVhLWZpdmUgewogICAgcGFkZGluZzogMCAwIDEwMHB4OwogIH0KfQouY2hvb3NlX19iZyB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHdpZHRoOiA0NiU7CiAgaGVpZ2h0OiA5MCU7CiAgei1pbmRleDogLTI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2VfX2JnIHsKICAgIHdpZHRoOiA1NSU7CiAgfQp9Ci5jaG9vc2UtY29udGVudCA+IHAgewogIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgd2lkdGg6IDg1JTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZS1jb250ZW50ID4gcCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmNob29zZV9fY29udGVudC10d28gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAxMDBweCAxMDBweCAxMjBweCA4MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY2hvb3NlX19jb250ZW50LXR3byB7CiAgICBwYWRkaW5nOiA4MHB4IDAgMTIwcHggNDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNob29zZV9fY29udGVudC10d28gewogICAgcGFkZGluZzogMTAwcHggMCAxMDBweCAwOwogIH0KfQouY2hvb3NlX19jb250ZW50LXR3bzo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogLTI0cHg7CiAgdG9wOiAwOwogIHdpZHRoOiAyMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIHotaW5kZXg6IC0yOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY2hvb3NlX19jb250ZW50LXR3bzo6YmVmb3JlIHsKICAgIGxlZnQ6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX2NvbnRlbnQtdHdvOjpiZWZvcmUgewogICAgbGVmdDogLTUwJTsKICB9Cn0KLmNob29zZV9fY29udGVudC10d28gPiBwIHsKICBtYXJnaW4tYm90dG9tOiAzNXB4Owp9Ci5jaG9vc2VfX2NvbnRlbnQtdGhyZWUgPiBwIHsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5jaG9vc2VfX2NvbnRlbnQtZm91ciB7CiAgd2lkdGg6IDkwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZV9fY29udGVudC1mb3VyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuY2hvb3NlX19jb250ZW50LWZvdXIgewogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KLmNob29zZV9fY29udGVudC1mb3VyID4gcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKfQouY2hvb3NlX19jb250ZW50LWZpdmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLXJpZ2h0OiA1MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY2hvb3NlX19jb250ZW50LWZpdmUgewogICAgcGFkZGluZy1yaWdodDogMDsKICB9Cn0KLmNob29zZV9fY29udGVudC1maXZlID4gcCB7CiAgbWFyZ2luLWJvdHRvbTogMzVweDsKfQouY2hvb3NlX19jb250ZW50LWZpdmUgLnNoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwogIHJpZ2h0OiAtMjBweDsKICB0b3A6IDA7Cn0KLmNob29zZS1saXN0IC5saXN0LXdyYXAgbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxOHB4OwogIG1hcmdpbi1ib3R0b206IDM1cHg7Cn0KLmNob29zZS1saXN0IC5saXN0LXdyYXAgbGk6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2hvb3NlLWxpc3QgLmxpc3Qtd3JhcCBsaSAuaWNvbiB7CiAgZm9udC1zaXplOiA2MHB4OwogIGxpbmUtaGVpZ2h0OiAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9Ci5jaG9vc2UtbGlzdCAubGlzdC13cmFwIGxpIC5jb250ZW50IC50aXRsZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIG1hcmdpbi1ib3R0b206IDVweDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMjJweDsKfQouY2hvb3NlLWxpc3QgLmxpc3Qtd3JhcCBsaSAuY29udGVudCBwIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBtYXJnaW4tYm90dG9tOiAwOwogIHdpZHRoOiA2NSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNob29zZS1saXN0IC5saXN0LXdyYXAgbGkgLmNvbnRlbnQgcCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmNob29zZS1saXN0IC5saXN0LXdyYXAgbGk6aG92ZXIgLmljb24gewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Cn0KLmNob29zZV9fbGlzdCAubGlzdC13cmFwIGxpIHsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5jaG9vc2VfX2xpc3QgLmxpc3Qtd3JhcCBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jaG9vc2VfX2xpc3QtYm94IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICBnYXA6IDIwcHg7Cn0KLmNob29zZV9fbGlzdC1ib3g6aG92ZXIgLmNob29zZV9fbGlzdC1pY29uIGkgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Cn0KLmNob29zZV9fbGlzdC1ib3gtdHdvIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICBnYXA6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2VfX2xpc3QtYm94LXR3byB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jaG9vc2VfX2xpc3QtYm94LXR3byB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9Cn0KLmNob29zZV9fbGlzdC1ib3gtdHdvOmhvdmVyIC5jaG9vc2VfX2xpc3QtaWNvbi10d28gewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCkgcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCkgcm90YXRlWSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KSByb3RhdGVZKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCkgcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpIHJvdGF0ZVkoMTgwZGVnKTsKfQouY2hvb3NlX19saXN0LWljb24gewogIHdpZHRoOiA4MHB4OwogIGhlaWdodDogODBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgZm9udC1zaXplOiA1MHB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBmbGV4OiAwIDAgYXV0bzsKICBsaW5lLWhlaWdodDogMDsKfQouY2hvb3NlX19saXN0LWljb24tdHdvIHsKICBmb250LXNpemU6IDYwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCkgcm90YXRlWSgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpIHJvdGF0ZVkoMGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpIHJvdGF0ZVkoMGRlZyk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCkgcm90YXRlWSgwZGVnKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KSByb3RhdGVZKDBkZWcpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7Cn0KLmNob29zZV9fbGlzdC1pY29uIGkgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKDBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgwZGVnKTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwp9Ci5jaG9vc2VfX2xpc3QtY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDhweDsKICBmb250LXNpemU6IDI0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQouY2hvb3NlX19saXN0LWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19saXN0LWNvbnRlbnQgcCBiciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouY2hvb3NlX19saXN0LWNvbnRlbnQtdHdvIC50aXRsZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIG1hcmdpbi1ib3R0b206IDVweDsKICBmb250LXNpemU6IDIycHg7Cn0KLmNob29zZV9fbGlzdC1jb250ZW50LXR3byBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwp9Ci5jaG9vc2VfX2xpc3QtdHdvIC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC13cmFwOiB3cmFwOwogIG1hcmdpbjogMCAtMTBweDsKICBnYXA6IDQwcHggMDsKfQouY2hvb3NlX19saXN0LXR3byAubGlzdC13cmFwIGxpIHsKICB3aWR0aDogNTAlOwogIHBhZGRpbmc6IDAgMTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19saXN0LXR3byAubGlzdC13cmFwIGxpIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouY2hvb3NlLWltZy13cmFwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1ib3R0b206IDQ1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNob29zZS1pbWctd3JhcCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlLWltZy13cmFwIHsKICAgIG1hcmdpbjogMDsKICB9Cn0KLmNob29zZS1pbWctd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlLWltZy13cmFwIGltZzpudGgtY2hpbGQoMSkgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5jaG9vc2UtaW1nLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IC0xNiU7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY2hvb3NlLWltZy13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogLTklOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuY2hvb3NlLWltZy13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogLTIlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlLWltZy13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmNob29zZS1pbWctd3JhcCBpbWc6bnRoLWNoaWxkKDMpIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTAlOwogIGJvdHRvbTogLTQ1cHg7CiAgei1pbmRleDogLTE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2UtaW1nLXdyYXAgaW1nOm50aC1jaGlsZCgzKSB7CiAgICBsZWZ0OiAzMCU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2UtaW1nLXdyYXAgaW1nOm50aC1jaGlsZCgzKSB7CiAgICBsZWZ0OiA4JTsKICAgIGJvdHRvbTogLTI1cHg7CiAgfQp9Ci5jaG9vc2VfX2ltZy13cmFwLXRocmVlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtdGhyZWUgewogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJvcmRlcjogMThweCBzb2xpZCB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCA1NnB4IDgwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggNTZweCA4MHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIC1tcy1ib3gtc2hhZG93OiAwcHggNTZweCA4MHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIC1vLWJveC1zaGFkb3c6IDBweCA1NnB4IDgwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgYm94LXNoYWRvdzogMHB4IDU2cHggODBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIHsKICAgIHdpZHRoOiA0MDBweDsKICAgIGJvcmRlci13aWR0aDogMTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyLXdpZHRoOiA1cHg7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5jaG9vc2VfX2ltZy13cmFwLXRocmVlIC5tYWluLWltZyB7CiAgICB3aWR0aDogNTAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICB9Cn0KLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIGltZyB7CiAgd2lkdGg6IDEwMCU7Cn0KLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIC5wbGF5LWJ0biB7CiAgd2lkdGg6IDcwcHg7CiAgaGVpZ2h0OiA3MHB4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDI1cHg7Cn0KLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLm1haW4taW1nIC5wbGF5LWJ0bjpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmNob29zZV9faW1nLXdyYXAtdGhyZWUgPiBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDMwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbXMtYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgYm9yZGVyOiAxcHggc29saWQgI0RBREFEQTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogOSU7CiAgdG9wOiAzMCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2VfX2ltZy13cmFwLXRocmVlID4gaW1nIHsKICAgIGxlZnQ6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX2ltZy13cmFwLXRocmVlID4gaW1nIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5jaG9vc2VfX2ltZy13cmFwLXRocmVlIC5zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAzJTsKICBib3R0b206IDE4JTsKICB6LWluZGV4OiAtMTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtdGhyZWUgLnNoYXBlIGltZyB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouY2hvb3NlX19pbWctd3JhcC1maXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1ib3R0b206IDU1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtZml2ZSB7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19pbWctd3JhcC1maXZlIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9Cn0KLmNob29zZV9faW1nLXdyYXAtZml2ZSBpbWc6bnRoLWNoaWxkKDEpIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQouY2hvb3NlX19pbWctd3JhcC1maXZlIGltZzpudGgtY2hpbGQoMikgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMjBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDIwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMjBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMjBweDsKICBib3JkZXItcmFkaXVzOiAyMHB4OwogIGJvcmRlcjogNnB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTAlOwogIGJvdHRvbTogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtZml2ZSBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHJpZ2h0OiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19pbWctd3JhcC1maXZlIGltZzpudGgtY2hpbGQoMikgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmNob29zZV9faW1nLXdyYXAtZml2ZSBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQouY2hvb3NlX19pbWctd3JhcC1maXZlIGltZzpudGgtY2hpbGQoMykgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDMwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbXMtYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE3JTsKICBib3R0b206IDglOwp9Ci5jaG9vc2VfX2ltZy13cmFwLWZpdmUgaW1nOm50aC1jaGlsZCg0KSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDEzJTsKICBib3R0b206IC00JTsKICB6LWluZGV4OiAtMTsKfQouY2hvb3NlX190YWIgLm5hdi10YWJzIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0NFRTJFQTsKICBnYXA6IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouY2hvb3NlX190YWIgLm5hdi10YWJzIC5uYXYtaXRlbSAubmF2LWxpbmsgewogIHBhZGRpbmc6IDAgMCAxM3B4OwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiAjOTU5N0M4OwogIGJvcmRlcjogbm9uZTsKICBmb250LXNpemU6IDIycHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsaW5lLWhlaWdodDogMTsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX3RhYiAubmF2LXRhYnMgLm5hdi1pdGVtIC5uYXYtbGluayB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgfQp9Ci5jaG9vc2VfX3RhYiAubmF2LXRhYnMgLm5hdi1pdGVtIC5uYXYtbGluazo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICBib3R0b206IC0xcHg7CiAgd2lkdGg6IDUwJTsKICBoZWlnaHQ6IDNweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBvcGFjaXR5OiAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLmNob29zZV9fdGFiIC5uYXYtdGFicyAubmF2LWl0ZW0gLm5hdi1saW5rLmFjdGl2ZSB7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwp9Ci5jaG9vc2VfX3RhYiAubmF2LXRhYnMgLm5hdi1pdGVtIC5uYXYtbGluay5hY3RpdmU6OmJlZm9yZSB7CiAgb3BhY2l0eTogMTsKfQouY2hvb3NlX190YWItY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5jaG9vc2VfX3RhYi1jb250ZW50IC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogMjBweCAwOwp9Ci5jaG9vc2VfX3RhYi1jb250ZW50IC5saXN0LXdyYXAgbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgZ2FwOiAxMHB4OwogIHdpZHRoOiA1MCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNob29zZV9fdGFiLWNvbnRlbnQgLmxpc3Qtd3JhcCBsaSB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmNob29zZV9fdGFiLWNvbnRlbnQgLmxpc3Qtd3JhcCBsaSBpIHsKICB3aWR0aDogMjZweDsKICBoZWlnaHQ6IDI2cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGZsZXg6IDAgMCBhdXRvOwogIGZvbnQtc2l6ZTogMTRweDsKfQouY2hvb3NlX19ib3ggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY2hvb3NlX19ib3ggewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmNob29zZV9fYm94IHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9Ci5jaG9vc2VfX2JveCAuaWNvbiB7CiAgd2lkdGg6IDgwcHg7CiAgaGVpZ2h0OiA4MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBmb250LXNpemU6IDQwcHg7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGxpbmUtaGVpZ2h0OiAwOwogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLmNob29zZV9fYm94IC5pY29uIGkgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKfQouY2hvb3NlX19ib3ggLmNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDIycHg7CiAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQouY2hvb3NlX19ib3ggLmNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2hvb3NlX19ib3g6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAwOwogIHRvcDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1ib3JkZXItNCk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2VfX2JveDo6YmVmb3JlIHsKICAgIHJpZ2h0OiAtMTVweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNob29zZV9fYm94OjpiZWZvcmUgewogICAgcmlnaHQ6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX2JveDo6YmVmb3JlIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5jaG9vc2VfX2JveDpob3ZlciAuaWNvbiBpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwp9Ci5jaG9vc2VfX2JveC13cmFwIC5yb3cgW2NsYXNzKj1jb2wtXTpsYXN0LWNoaWxkIC5jaG9vc2VfX2JveCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2hvb3NlX19ib3gtd3JhcCAucm93IFtjbGFzcyo9Y29sLV06bGFzdC1jaGlsZCAuY2hvb3NlX19ib3g6OmJlZm9yZSB7CiAgZGlzcGxheTogbm9uZTsKfQouY2hvb3NlLXNoYXBlLXdyYXAgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLmNob29zZS1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY2hvb3NlLXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgxKSB7CiAgICB3aWR0aDogMzAwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2Utc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHdpZHRoOiAyMzBweDsKICB9Cn0KLmNob29zZS1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNob29zZS1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgd2lkdGg6IDQwMHB4OwogIH0KfQouY2hvb3NlX19zaGFwZS13cmFwLXR3byBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQouY2hvb3NlX19zaGFwZS13cmFwLXR3byBpbWc6bnRoLWNoaWxkKDEpIHsKICByaWdodDogMTMlOwogIGJvdHRvbTogMzAlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jaG9vc2VfX3NoYXBlLXdyYXAtdHdvIGltZzpudGgtY2hpbGQoMSkgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmNob29zZV9fc2hhcGUtd3JhcC10d28gaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHotaW5kZXg6IC0yOwp9Ci5jaG9vc2VfX3NoYXBlLXdyYXAtdGhyZWUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLmNob29zZV9fc2hhcGUtd3JhcC10aHJlZSBpbWc6bnRoLWNoaWxkKDEpIHsKICByaWdodDogMTQlOwogIHRvcDogMjUlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jaG9vc2VfX3NoYXBlLXdyYXAtdGhyZWUgaW1nOm50aC1jaGlsZCgxKSB7CiAgICByaWdodDogMjYlOwogICAgdG9wOiAxMyU7CiAgfQp9Ci5jaG9vc2VfX3NoYXBlLXdyYXAtdGhyZWUgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDA7CiAgdG9wOiAxNiU7CiAgei1pbmRleDogLTI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jaG9vc2VfX3NoYXBlLXdyYXAtdGhyZWUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouY2hvb3NlX19zaGFwZS13cmFwLWZvdXIgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLmNob29zZV9fc2hhcGUtd3JhcC1mb3VyIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwp9Ci5jaG9vc2VfX3NoYXBlLXdyYXAtZm91ciBpbWc6bnRoLWNoaWxkKDIpIHsKICByaWdodDogMDsKICB0b3A6IDA7Cn0KCi5vcGVyYXRpbmdfX2JveCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIHdpZHRoOiAzNzBweDsKICBwYWRkaW5nOiAzNXB4IDM1cHg7CiAgZ2FwOiAxNHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMzk0cHg7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAub3BlcmF0aW5nX19ib3ggewogICAgbGVmdDogLTMzMHB4OwogICAgd2lkdGg6IDMzMHB4OwogICAgcGFkZGluZzogMzVweCAxOHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAub3BlcmF0aW5nX19ib3ggewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLm9wZXJhdGluZ19fYm94IC5pY29uIHsKICBmb250LXNpemU6IDUzcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5vcGVyYXRpbmdfX2JveCAuY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDI0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmNob29zZV9fYm94OmhvdmVyIC5pY29uIHN2ZyB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkwOS4gUHJvamVjdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLnByb2plY3QtYXJlYSB7CiAgcGFkZGluZzogMTIwcHggMCAxMjBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3QtYXJlYSB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQoucHJvamVjdF9fYXJlYS10d28gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodC0yKTsKICBwYWRkaW5nOiAxMjBweCAwIDkwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX2FyZWEtdHdvIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLnByb2plY3RfX2FyZWEtdGhyZWUgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX2FyZWEtdGhyZWUgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLnByb2plY3QtaXRlbSB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTEpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnByb2plY3QtaXRlbS13cmFwIC5yb3cgewogIC0tYnMtZ3V0dGVyLXg6IDI0cHg7Cn0KLnByb2plY3QtaXRlbTpob3ZlciAucHJvamVjdC10aHVtYjo6YmVmb3JlIHsKICBoZWlnaHQ6IDEwMCU7Cn0KLnByb2plY3RfX2l0ZW0tdHdvIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wcm9qZWN0X19pdGVtLXR3bzpob3ZlciAucHJvamVjdF9fdGh1bWItdHdvOjpiZWZvcmUgewogIGhlaWdodDogMTAwJTsKfQoucHJvamVjdF9faXRlbS10d286aG92ZXIgLnByb2plY3RfX2NvbnRlbnQtdHdvIHsKICBvcGFjaXR5OiAxOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgbWFyZ2luLXRvcDogMDsKfQoucHJvamVjdF9faXRlbS10aHJlZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IDAgMTA1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0X19pdGVtLXRocmVlIHsKICAgIHBhZGRpbmc6IDAgODBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnByb2plY3RfX2l0ZW0tdGhyZWUgewogICAgcGFkZGluZzogMCA1MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucHJvamVjdF9faXRlbS10aHJlZSB7CiAgICBwYWRkaW5nOiAwOwogIH0KfQoucHJvamVjdF9faXRlbS1mb3VyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnByb2plY3RfX2l0ZW0tZm91cjpob3ZlciAucHJvamVjdF9fdGh1bWItZm91ciBpbWcgewogIGZpbHRlcjogZ3JheXNjYWxlKDApOwp9Ci5wcm9qZWN0X19pdGVtLWZvdXI6aG92ZXIgLnByb2plY3RfX2NvbnRlbnQtZm91ciAucmlnaHQtYXJyb3cgewogIG9wYWNpdHk6IDE7Cn0KLnByb2plY3QtdGh1bWIgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTIwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4IDEwcHggMCAxMjBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4IDEwcHggMCAxMjBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTIwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMTIwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luOiAtMXB4IC0xcHggMDsKfQoucHJvamVjdC10aHVtYiBpbWcgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogNDAwcHg7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5wcm9qZWN0LXRodW1iIGltZyB7CiAgICBoZWlnaHQ6IDMzMHB4OwogIH0KfQoucHJvamVjdC10aHVtYjo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwOwogIGJhY2tncm91bmQ6ICNBRjc0MDA7CiAgb3BhY2l0eTogMC42OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLnByb2plY3RfX3RodW1iLXR3byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnByb2plY3RfX3RodW1iLXR3byBpbWcgewogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgaGVpZ2h0OiAzMDBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB3aWR0aDogMTAwJTsKfQoucHJvamVjdF9fdGh1bWItdHdvOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAlOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWRhcmstYmx1ZSk7CiAgb3BhY2l0eTogMC45OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKfQoucHJvamVjdF9fdGh1bWItdGhyZWUgewogIHdpZHRoOiA3ODJweDsKICBtYXJnaW4tbGVmdDogYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnByb2plY3RfX3RodW1iLXRocmVlIHsKICAgIHdpZHRoOiA1ODBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnByb2plY3RfX3RodW1iLXRocmVlIHsKICAgIHdpZHRoOiA0NTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX3RodW1iLXRocmVlIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5wcm9qZWN0X190aHVtYi10aHJlZSBpbWcgewogIGhlaWdodDogNDc4cHg7CiAgd2lkdGg6IDEwMCU7CiAgb2JqZWN0LWZpdDogY292ZXI7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0X190aHVtYi10aHJlZSBpbWcgewogICAgaGVpZ2h0OiA0MzBweDsKICB9Cn0KLnByb2plY3RfX3RodW1iLWZvdXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wcm9qZWN0X190aHVtYi1mb3VyIGltZyB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA1NzBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKICBmaWx0ZXI6IGdyYXlzY2FsZSgxKTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnByb2plY3RfX3RodW1iLWZvdXIgaW1nIHsKICAgIGhlaWdodDogNDgwcHg7CiAgfQp9Ci5wcm9qZWN0X190aHVtYi1mb3VyOjphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDExLCAxMiwgNTcsIDApIDAlLCByZ2JhKDAsIDEsIDM4LCAwLjkpIDEwMCUpOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5wcm9qZWN0LWNvbnRlbnQgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IDMwcHggMzBweDsKICBnYXA6IDEwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5wcm9qZWN0LWNvbnRlbnQgewogICAgcGFkZGluZzogMzBweCAyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnByb2plY3QtY29udGVudCB7CiAgICBwYWRkaW5nOiAzMHB4IDMwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5wcm9qZWN0LWNvbnRlbnQgewogICAgcGFkZGluZzogMzBweCAyMHB4OwogIH0KfQoucHJvamVjdC1jb250ZW50IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIGZvbnQtc2l6ZTogMjRweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAucHJvamVjdC1jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDIycHg7CiAgfQp9Ci5wcm9qZWN0LWNvbnRlbnQgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5wcm9qZWN0LWNvbnRlbnQtYm90dG9tIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGdhcDogNDBweDsKICBtYXJnaW4tdG9wOiA0MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcm9qZWN0LWNvbnRlbnQtYm90dG9tIHsKICAgIGdhcDogMzBweDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9Cn0KLnByb2plY3QtY29udGVudC1ib3R0b20gcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKfQoucHJvamVjdF9fY29udGVudC10d28gewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMzBweDsKICByaWdodDogMzBweDsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgcGFkZGluZzogMzBweCAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQgMHM7CiAgbWFyZ2luLXRvcDogMTAwcHg7CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLnByb2plY3RfX2NvbnRlbnQtdHdvIC50aXRsZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1zZW1pLWJvbGQpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLnByb2plY3RfX2NvbnRlbnQtdHdvIHNwYW4gewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogdmFyKC0tdGctZnctbWVkaXVtKTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoucHJvamVjdF9fY29udGVudC10aHJlZSB7CiAgd2lkdGg6IDM5MnB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyLXJhZGl1czogMTVweDsKICBwYWRkaW5nOiA2MHB4IDYwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDEwNXB4OwogIHRvcDogNTAlOwogIHotaW5kZXg6IDI7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAucHJvamVjdF9fY29udGVudC10aHJlZSB7CiAgICB3aWR0aDogMzYwcHg7CiAgICBwYWRkaW5nOiA0MHB4IDQwcHg7CiAgICBsZWZ0OiA4MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucHJvamVjdF9fY29udGVudC10aHJlZSB7CiAgICBsZWZ0OiA1MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucHJvamVjdF9fY29udGVudC10aHJlZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBvc2l0aW9uOiB1bnNldDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoucHJvamVjdF9fY29udGVudC10aHJlZSBzcGFuIHsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLnByb2plY3RfX2NvbnRlbnQtdGhyZWUgLnRpdGxlIHsKICBmb250LXNpemU6IDI0cHg7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnByb2plY3RfX2NvbnRlbnQtdGhyZWUgcCB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKfQoucHJvamVjdF9fY29udGVudC10aHJlZSAuYnRuIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7Cn0KLnByb2plY3RfX2NvbnRlbnQtdGhyZWUgLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5wcm9qZWN0X19jb250ZW50LWZvdXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAyMHB4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTBweDsKICByaWdodDogNTBweDsKICBib3R0b206IDUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5wcm9qZWN0X19jb250ZW50LWZvdXIgewogICAgbGVmdDogMjVweDsKICAgIHJpZ2h0OiAyNXB4OwogICAgYm90dG9tOiAzMHB4OwogIH0KfQoucHJvamVjdF9fY29udGVudC1mb3VyIC5sZWZ0LWNvbnRlbnQgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGZvbnQtc2l6ZTogMzBweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5wcm9qZWN0X19jb250ZW50LWZvdXIgLmxlZnQtY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiAyNHB4OwogIH0KfQoucHJvamVjdF9fY29udGVudC1mb3VyIC5sZWZ0LWNvbnRlbnQgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGxpbmUtaGVpZ2h0OiAxOwp9Ci5wcm9qZWN0X19jb250ZW50LWZvdXIgLnJpZ2h0LWFycm93IHsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgZmxleDogMCAwIGF1dG87CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBsaW5lLWhlaWdodDogMDsKICBmb250LXNpemU6IDMycHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoucHJvamVjdF9fY29udGVudC1mb3VyIC5yaWdodC1hcnJvdzpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnByb2plY3Qtc2hhcGUtd3JhcCBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQoucHJvamVjdC1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgYm90dG9tOiAxMCU7Cn0KLnByb2plY3Qtc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDIpIHsKICByaWdodDogMiU7CiAgdG9wOiAyMiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0LXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgICB0b3A6IDE2JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3Qtc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHRvcDogMTAuNyU7CiAgICB3aWR0aDogODBweDsKICAgIHJpZ2h0OiAwOwogIH0KfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAucHJvamVjdC1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgdG9wOiA5LjclOwogICAgd2lkdGg6IDgwcHg7CiAgICByaWdodDogMiU7CiAgfQp9Ci5wcm9qZWN0X19zaGFwZS13cmFwLXR3byBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICByaWdodDogMDsKICB0b3A6IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX3NoYXBlLXdyYXAtdHdvIGltZyB7CiAgICB3aWR0aDogMjUwcHg7CiAgfQp9Ci5wcm9qZWN0X19zaGFwZS13cmFwLXRocmVlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci5wcm9qZWN0X19zaGFwZS13cmFwLXRocmVlIGltZzpudGgtY2hpbGQoMSkgewogIHJpZ2h0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucHJvamVjdF9fc2hhcGUtd3JhcC10aHJlZSBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHdpZHRoOiAyMDBweDsKICB9Cn0KLnByb2plY3RfX3NoYXBlLXdyYXAtdGhyZWUgaW1nOm50aC1jaGlsZCgyKSB7CiAgbGVmdDogMjAlOwogIGJvdHRvbTogMTMlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAucHJvamVjdF9fc2hhcGUtd3JhcC10aHJlZSBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIGxlZnQ6IDYlOwogICAgYm90dG9tOiAxMiU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcm9qZWN0X19uYXYtd3JhcCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAyMHB4OwogICAgbWFyZ2luLXRvcDogMzBweDsKICB9Cn0KLnByb2plY3RfX25hdi13cmFwIC5wcm9qZWN0LWJ1dHRvbi1wcmV2IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDE4MGRlZyk7CiAgd2lkdGg6IDYwcHg7CiAgaGVpZ2h0OiA2MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbGluZS1oZWlnaHQ6IDA7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHotaW5kZXg6IDM7CiAgZm9udC1zaXplOiAyOHB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnByb2plY3RfX25hdi13cmFwIC5wcm9qZWN0LWJ1dHRvbi1wcmV2IHsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgZm9udC1zaXplOiAyNXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucHJvamVjdF9fbmF2LXdyYXAgLnByb2plY3QtYnV0dG9uLXByZXYgewogICAgcG9zaXRpb246IHVuc2V0OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDE4MGRlZyk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoMTgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDE4MGRlZyk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDE4MGRlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlKDE4MGRlZyk7CiAgfQp9Ci5wcm9qZWN0X19uYXYtd3JhcCAucHJvamVjdC1idXR0b24tcHJldjpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnByb2plY3RfX25hdi13cmFwIC5wcm9qZWN0LWJ1dHRvbi1uZXh0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiA2MHB4OwogIGhlaWdodDogNjBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGxpbmUtaGVpZ2h0OiAwOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICB6LWluZGV4OiAzOwogIGZvbnQtc2l6ZTogMjhweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5wcm9qZWN0X19uYXYtd3JhcCAucHJvamVjdC1idXR0b24tbmV4dCB7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIGZvbnQtc2l6ZTogMjVweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX25hdi13cmFwIC5wcm9qZWN0LWJ1dHRvbi1uZXh0IHsKICAgIHBvc2l0aW9uOiB1bnNldDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoucHJvamVjdF9fbmF2LXdyYXAgLnByb2plY3QtYnV0dG9uLW5leHQ6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5wcm9qZWN0X19kZXRhaWxzLWFyZWEgewogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX2RldGFpbHMtYXJlYSB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQoucHJvamVjdF9fZGV0YWlscy10b3AgLnJvdyAuY29sLTcwIHsKICB3aWR0aDogNzAuNCU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLXRvcCAucm93IC5jb2wtNzAgewogICAgd2lkdGg6IDY0LjQlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucHJvamVjdF9fZGV0YWlscy10b3AgLnJvdyAuY29sLTcwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQoucHJvamVjdF9fZGV0YWlscy10b3AgLnJvdyAuY29sLTMwIHsKICB3aWR0aDogMjkuNiU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLXRvcCAucm93IC5jb2wtMzAgewogICAgd2lkdGg6IDM1LjYlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucHJvamVjdF9fZGV0YWlscy10b3AgLnJvdyAuY29sLTMwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQoucHJvamVjdF9fZGV0YWlscy10aHVtYiB7CiAgaGVpZ2h0OiAxMDAlOwogIHBhZGRpbmctYm90dG9tOiAzMHB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLXRodW1iIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIG1pbi1oZWlnaHQ6IDI1MHB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLWluZm8gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIHBhZGRpbmc6IDI1cHggMzBweCAzMHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgbWFyZ2luLWxlZnQ6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLWluZm8gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBwYWRkaW5nOiAyNXB4IDIwcHggMzBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnByb2plY3RfX2RldGFpbHMtaW5mbyB7CiAgICBwYWRkaW5nOiAyNXB4IDMwcHggMzBweDsKICB9Cn0KLnByb2plY3RfX2RldGFpbHMtaW5mbyAudGl0bGUgewogIGZvbnQtc2l6ZTogMjJweDsKICBmb250LXdlaWdodDogNjAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBtYXJnaW4tYm90dG9tOiAyMnB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLWJvdHRvbTogMTVweDsKfQoucHJvamVjdF9fZGV0YWlscy1pbmZvIC50aXRsZTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiA0cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLWluZm8gPiAubGlzdC13cmFwID4gbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzI5MkM3QzsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIHBhZGRpbmctYm90dG9tOiAxNXB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLWluZm8gPiAubGlzdC13cmFwID4gbGkgc3BhbiB7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBjb2xvcjogI0FBQUNERjsKICBtaW4td2lkdGg6IDgwcHg7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLWluZm8gPiAubGlzdC13cmFwID4gbGk6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQoucHJvamVjdF9fZGV0YWlscy1pbmZvID4gLmxpc3Qtd3JhcCA+IGxpIC5wcm9qZWN0LXNvY2lhbCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDE1cHg7Cn0KLnByb2plY3RfX2RldGFpbHMtaW5mbyA+IC5saXN0LXdyYXAgPiBsaSAucHJvamVjdC1zb2NpYWwgbGkgYSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoucHJvamVjdF9fZGV0YWlscy1pbmZvID4gLmxpc3Qtd3JhcCA+IGxpIC5wcm9qZWN0LXNvY2lhbCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnByb2plY3RfX2RldGFpbHMtY29udGVudCA+IC50aXRsZSB7CiAgZm9udC1zaXplOiAzNnB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByb2plY3RfX2RldGFpbHMtY29udGVudCA+IC50aXRsZSB7CiAgICBmb250LXNpemU6IDMycHg7CiAgfQp9Ci5wcm9qZWN0X19kZXRhaWxzLWNvbnRlbnQgPiBwIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5wcm9qZWN0X19kZXRhaWxzLWlubmVyIHsKICBtYXJnaW4tdG9wOiA3MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLWlubmVyIHsKICAgIG1hcmdpbi10b3A6IDQwcHg7CiAgfQp9Ci5wcm9qZWN0X19kZXRhaWxzLWlubmVyLWNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDM2cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLWlubmVyLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzBweDsKICB9Cn0KLnByb2plY3RfX2RldGFpbHMtaW5uZXItY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wcm9qZWN0X19kZXRhaWxzLWlubmVyLWNvbnRlbnQgcC5sYXN0LWluZm8gewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnByb2plY3RfX2RldGFpbHMtaW5uZXItY29udGVudCAuY29udGVudC1pbm5lciB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgZ2FwOiAzMHB4OwogIGZsZXgtd3JhcDogd3JhcDsKICBtYXJnaW46IDMwcHggMDsKfQoucHJvamVjdF9fZGV0YWlscy1pbm5lci1jb250ZW50IC5jb250ZW50LWlubmVyIC5ncmFwaC1pbWcgaW1nIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogLTdweCA3cHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW1zLWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1vLWJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IC03cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJvcmRlcjogMC44cHggc29saWQgI0RBREFEQTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMnB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEycHg7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKfQoucHJvamVjdF9fZGV0YWlscy1pbm5lci1pbWcgewogIHRleHQtYWxpZ246IHJpZ2h0Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5wcm9qZWN0X19kZXRhaWxzLWlubmVyLWltZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIH0KfQoucHJvamVjdF9fZGV0YWlscy1pbm5lci1pbWcgaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKLmxpbmstYXJyb3cgYSB7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMDsKICAtLWFycm93LWhvdmVyLW1vdmUteDogMTEwJTsKICAtLWFycm93LWhvdmVyLW1vdmUteTogMTAwJTsKfQoubGluay1hcnJvdyBhIHN2ZyB7CiAgd2lkdGg6IDIwcHg7Cn0KLmxpbmstYXJyb3cgYSBzdmcgcGF0aCB7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMzhzIGN1YmljLWJlemllcigwLjM3LCAwLjA4LCAwLjAyLCAwLjkzKSwgb3BhY2l0eSAwLjE4cyBlYXNlLW91dDsKfQoubGluay1hcnJvdyBhIHN2ZyBwYXRoOm50aC1vZi10eXBlKDEpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApOwogIG9wYWNpdHk6IDE7CiAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXMsIDAuMTVzOwp9Ci5saW5rLWFycm93IGEgc3ZnIHBhdGg6bnRoLW9mLXR5cGUoMikgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXgpKSkgdHJhbnNsYXRlWSh2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXkpKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKC0xICogdmFyKC0tYXJyb3ctaG92ZXItbW92ZS14KSkpIHRyYW5zbGF0ZVkodmFyKC0tYXJyb3ctaG92ZXItbW92ZS15KSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKC0xICogdmFyKC0tYXJyb3ctaG92ZXItbW92ZS14KSkpIHRyYW5zbGF0ZVkodmFyKC0tYXJyb3ctaG92ZXItbW92ZS15KSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXgpKSkgdHJhbnNsYXRlWSh2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXkpKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMSAqIHZhcigtLWFycm93LWhvdmVyLW1vdmUteCkpKSB0cmFuc2xhdGVZKHZhcigtLWFycm93LWhvdmVyLW1vdmUteSkpOwogIG9wYWNpdHk6IDAuNTsKICB0cmFuc2l0aW9uLWRlbGF5OiAwcywgMHM7Cn0KLmxpbmstYXJyb3cgYTpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5saW5rLWFycm93IGE6aG92ZXIgc3ZnIHBhdGg6bnRoLW9mLXR5cGUoMSkgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWFycm93LWhvdmVyLW1vdmUteCkpIHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWFycm93LWhvdmVyLW1vdmUteSkpKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXgpKSB0cmFuc2xhdGVZKGNhbGMoLTEgKiB2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXkpKSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXgpKSB0cmFuc2xhdGVZKGNhbGMoLTEgKiB2YXIoLS1hcnJvdy1ob3Zlci1tb3ZlLXkpKSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWFycm93LWhvdmVyLW1vdmUteCkpIHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWFycm93LWhvdmVyLW1vdmUteSkpKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tYXJyb3ctaG92ZXItbW92ZS14KSkgdHJhbnNsYXRlWShjYWxjKC0xICogdmFyKC0tYXJyb3ctaG92ZXItbW92ZS15KSkpOwogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbi1kZWxheTogMHMsIDBzOwp9Ci5saW5rLWFycm93IGE6aG92ZXIgc3ZnIHBhdGg6bnRoLW9mLXR5cGUoMikgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgwKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHRyYW5zbGF0ZVkoMCk7CiAgb3BhY2l0eTogMTsKICB0cmFuc2l0aW9uLWRlbGF5OiAwLjE1cywgMC4xNXM7Cn0KLmxpbmstYXJyb3ctdHdvIGEgewogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXI6IG5vbmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbjogMCBhdXRvOwp9Ci5saW5rLWFycm93LXR3byBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJMTAuIFByaWNpbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5wcmljaW5nX19iZyB7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcmljaW5nX19iZyB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDcwcHg7CiAgfQp9Ci5wcmljaW5nX19iZy10d28gewogIHBhZGRpbmc6IDI1NXB4IDAgOTBweDsKICBtYXJnaW4tdG9wOiAtMTM1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnByaWNpbmdfX2JnLXR3byB7CiAgICBwYWRkaW5nOiAyMzVweCAwIDcwcHg7CiAgfQp9Ci5wcmljaW5nX190YWIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1hcmdpbi1ib3R0b206IDQwcHg7Cn0KLnByaWNpbmdfX3RhYi1idG4gewogIGN1cnNvcjogcG9pbnRlcjsKICBjb2xvcjogdmFyKC0tdGctYm9yZGVyLTUpOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAxOHB4OwogIHVzZXItc2VsZWN0OiBub25lOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9Ci5wcmljaW5nX190YWItYnRuLm1vbnRobHlfdGFiX3RpdGxlIHsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7Cn0KLnByaWNpbmdfX3RhYi1idG4ubW9udGhseV90YWJfdGl0bGUuYWN0aXZlIHsKICBjb2xvcjogdmFyKC0tdGctYm9yZGVyLTUpOwp9Ci5wcmljaW5nX190YWItYnRuLmFubnVhbF90YWJfdGl0bGUuYWN0aXZlIHsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7Cn0KLnByaWNpbmdfX3RhYi1zd2l0Y2hlciB7CiAgaGVpZ2h0OiAzMHB4OwogIHdpZHRoOiA2MHB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYm9yZGVyLXJhZGl1czogMzBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luOiAwIDE1cHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5wcmljaW5nX190YWItc3dpdGNoZXI6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDJweDsKICB0b3A6IDJweDsKICBib3R0b206IDJweDsKICB3aWR0aDogMjZweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoucHJpY2luZ19fdGFiLXN3aXRjaGVyLmFjdGl2ZTpiZWZvcmUgewogIGxlZnQ6IGNhbGMoMTAwJSAtIDI4cHgpOwp9Ci5wcmljaW5nX19ib3ggewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGJvcmRlcjogMXB4IHNvbGlkICNDRkRERTI7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgcGFkZGluZzogNTBweCA2NXB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5wcmljaW5nX19ib3ggewogICAgcGFkZGluZzogNDBweCAyNXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucHJpY2luZ19fYm94IHsKICAgIHBhZGRpbmc6IDQwcHggMzBweDsKICB9Cn0KLnByaWNpbmdfX2JveC10d28gewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoucHJpY2luZ19fYm94LXR3byAucHJpY2luZ19fcHJpY2UgewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnByaWNpbmdfX2JveC10d28gLnByaWNpbmdfX3ByaWNlIC5wcmljZSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLnByaWNpbmdfX2JveC10d28gLnByaWNpbmdfX2xpc3QgLmxpc3Qtd3JhcCBsaSB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLnByaWNpbmdfX2hlYWQgewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnByaWNpbmdfX2hlYWQgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNTAwOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgcGFkZGluZzogMTJweCAyMnB4Owp9Ci5wcmljaW5nX19wcmljZSB7CiAgbWFyZ2luLWJvdHRvbTogNDBweDsKfQoucHJpY2luZ19fcHJpY2UgLnByaWNlIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogNDhweDsKICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgbGluZS1oZWlnaHQ6IDE7Cn0KLnByaWNpbmdfX3ByaWNlIC5wcmljZSBzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zaXplOiAxOHB4OwogIG1hcmdpbjogNHB4IDNweCBhdXRvIDA7CiAgY29sb3I6IHZhcigtLXRnLWJvcmRlci01KTsKfQoucHJpY2luZ19fcHJpY2UgLnByaWNlIHNwYW4gewogIGNvbG9yOiB2YXIoLS10Zy1ib3JkZXItNSk7CiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc2l6ZTogMThweDsKICBtYXJnaW4tbGVmdDogNXB4OwogIG1hcmdpbi1ib3R0b206IDdweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoucHJpY2luZ19fcHJpY2UgLnByaWNlLmFubnVhbF9wcmljZSB7CiAgZGlzcGxheTogbm9uZTsKfQoucHJpY2luZ19fcHJpY2UuY2hhbmdlLXN1YnMtZHVyYXRpb24gLm1vbnRobHlfcHJpY2UgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnByaWNpbmdfX3ByaWNlLmNoYW5nZS1zdWJzLWR1cmF0aW9uIC5hbm51YWxfcHJpY2UgewogIGRpc3BsYXk6IGZsZXg7Cn0KLnByaWNpbmdfX2NvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoucHJpY2luZ19fbGlzdCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoucHJpY2luZ19fbGlzdCAubGlzdC13cmFwIGxpIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNTAwOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogIGdhcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5wcmljaW5nX19saXN0IC5saXN0LXdyYXAgbGk6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoucHJpY2luZ19fc2hhcGUtd3JhcCBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQoucHJpY2luZ19fc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICBsZWZ0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucHJpY2luZ19fc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHdpZHRoOiAyMDBweDsKICB9Cn0KLnByaWNpbmdfX3NoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5wcmljaW5nX19zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogICAgd2lkdGg6IDIwMHB4OwogIH0KfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJMTEuIFJlcXVlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5yZXF1ZXN0LWJnIHsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMjgwcHggMCAyMjBweDsKICB6LWluZGV4OiAxOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5yZXF1ZXN0LWJnIHsKICAgIHBhZGRpbmc6IDIwMHB4IDAgMTgwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAucmVxdWVzdC1iZyB7CiAgICBwYWRkaW5nOiAxODBweCAwIDE2MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucmVxdWVzdC1iZyB7CiAgICBwYWRkaW5nOiAxMzBweCAwIDEzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdC1iZyB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQoucmVxdWVzdC1iZzo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6ICMwQjBDMzk7CiAgb3BhY2l0eTogMC41OwogIHotaW5kZXg6IC0xOwp9Ci5yZXF1ZXN0X19hcmVhLXR3byB7CiAgcGFkZGluZzogMTIwcHggMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdF9fYXJlYS10d28gewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLnJlcXVlc3RfX2FyZWEtdGhyZWUgewogIHBhZGRpbmc6IDEyMHB4IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnJlcXVlc3RfX2FyZWEtdGhyZWUgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLnJlcXVlc3RfX2JnLXR3byB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICB6LWluZGV4OiAtMTsKICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOwp9Ci5yZXF1ZXN0X19iZy10aHJlZSB7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICB6LWluZGV4OiAtMTsKICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOwp9Ci5yZXF1ZXN0LWNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDQ4cHg7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnJlcXVlc3QtY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiA0MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdC1jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDM2cHg7CiAgfQp9Ci5yZXF1ZXN0LWNvbnRlbnQgLmJ0biB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnJlcXVlc3QtY29udGVudCAuYnRuOjpiZWZvcmUgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5yZXF1ZXN0LWNvbnRlbnQgLmNvbnRlbnQtYm90dG9tIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGdhcDogMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdC1jb250ZW50IC5jb250ZW50LWJvdHRvbSB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5yZXF1ZXN0LWNvbnRlbnQgLmNvbnRlbnQtYm90dG9tIC5jb250ZW50LXJpZ2h0IHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTVweDsKfQoucmVxdWVzdC1jb250ZW50IC5jb250ZW50LWJvdHRvbSAuY29udGVudC1yaWdodCAuaWNvbiB7CiAgZm9udC1zaXplOiAzNnB4OwogIGxpbmUtaGVpZ2h0OiAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoucmVxdWVzdC1jb250ZW50IC5jb250ZW50LWJvdHRvbSAuY29udGVudC1yaWdodCAuY29udGVudCBzcGFuIHsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5yZXF1ZXN0LWNvbnRlbnQgLmNvbnRlbnQtYm90dG9tIC5jb250ZW50LXJpZ2h0IC5jb250ZW50IGEgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDI0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7Cn0KLnJlcXVlc3QtY29udGVudCAuY29udGVudC1ib3R0b20gLmNvbnRlbnQtcmlnaHQgLmNvbnRlbnQgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5yZXF1ZXN0X19jb250ZW50LXR3byB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcGFkZGluZzogNjBweCA2MHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5yZXF1ZXN0X19jb250ZW50LXR3byB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5yZXF1ZXN0X19jb250ZW50LXR3byB7CiAgICBwYWRkaW5nOiA0MHB4IDM1cHg7CiAgfQp9Ci5yZXF1ZXN0X19jb250ZW50LXR3byAudGl0bGUgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc2l6ZTogNDBweDsKICBmb250LXdlaWdodDogNDAwOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5yZXF1ZXN0X19jb250ZW50LXR3byAudGl0bGUgewogICAgZm9udC1zaXplOiAzMnB4OwogIH0KfQoucmVxdWVzdF9fY29udGVudC10d28gLnRpdGxlIHNwYW4gewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLnJlcXVlc3RfX3Bob25lIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTVweDsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5yZXF1ZXN0X19waG9uZSB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB9Cn0KLnJlcXVlc3RfX3Bob25lIC5pY29uIHsKICBmb250LXNpemU6IDM2cHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5yZXF1ZXN0X19waG9uZSAuY29udGVudCBzcGFuIHsKICBsaW5lLWhlaWdodDogMTsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnJlcXVlc3RfX3Bob25lIC5jb250ZW50IGEgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDI0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdF9fcGhvbmUgLmNvbnRlbnQgYSB7CiAgICBmb250LXNpemU6IDIycHg7CiAgfQp9Ci5yZXF1ZXN0X19waG9uZSAuY29udGVudCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnJlcXVlc3Qtc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLnJlcXVlc3Qtc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogMDsKICB0b3A6IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5yZXF1ZXN0LXNoYXBlIGltZzpudGgtY2hpbGQoMSkgewogICAgd2lkdGg6IDMwMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAucmVxdWVzdC1zaGFwZSBpbWc6bnRoLWNoaWxkKDEpIHsKICAgIHdpZHRoOiAyMTBweDsKICB9Cn0KLnJlcXVlc3Qtc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAucmVxdWVzdC1zaGFwZSBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHdpZHRoOiAzMDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnJlcXVlc3Qtc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICB3aWR0aDogMTkwcHg7CiAgfQp9Ci5yZXF1ZXN0X19zaGFwZS10d28gaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLnJlcXVlc3RfX3NoYXBlLXR3byBpbWc6bnRoLWNoaWxkKDEpIHsKICBsZWZ0OiAwOwogIHRvcDogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucmVxdWVzdF9fc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMSkgewogICAgd2lkdGg6IDIwMHB4OwogIH0KfQoucmVxdWVzdF9fc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAucmVxdWVzdF9fc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMikgewogICAgd2lkdGg6IDIwMHB4OwogIH0KfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMTIuIENvbnN1bHRpbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5jb25zdWx0aW5nLWFyZWEgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwp9Ci5jb25zdWx0aW5nLWlubmVyLXdyYXAgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouY29uc3VsdGluZy1jb250ZW50IHsKICBwYWRkaW5nOiA3MHB4IDY1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDI0cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jb25zdWx0aW5nLWNvbnRlbnQgewogICAgcGFkZGluZzogNTBweCAzMHB4OwogICAgZ2FwOiAyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY29uc3VsdGluZy1jb250ZW50IHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9Cn0KLmNvbnN1bHRpbmctY29udGVudCAuY29udGVudC1sZWZ0IHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcGFkZGluZzogMjBweCAyM3B4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jb25zdWx0aW5nLWNvbnRlbnQgLmNvbnRlbnQtbGVmdCB7CiAgICBtYXJnaW46IDAgYXV0bzsKICB9Cn0KLmNvbnN1bHRpbmctY29udGVudCAuY29udGVudC1sZWZ0IC50aXRsZSB7CiAgZm9udC1zaXplOiA0MHB4OwogIG1hcmdpbi1ib3R0b206IDVweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbGluZS1oZWlnaHQ6IDE7Cn0KLmNvbnN1bHRpbmctY29udGVudCAuY29udGVudC1sZWZ0IHNwYW4gewogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogNTAwOwogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKfQouY29uc3VsdGluZy1jb250ZW50IC5jb250ZW50LXJpZ2h0IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICBmb250LXNpemU6IDMwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5jb25zdWx0aW5nLWNvbnRlbnQgLmNvbnRlbnQtcmlnaHQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLmNvbnN1bHRpbmctaW1nIHsKICB3aWR0aDogMzkycHg7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNvbnN1bHRpbmctaW1nIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5jb25zdWx0aW5nLWltZyBpbWcgewogIG9iamVjdC1maXQ6IGNvdmVyOwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMTAwJTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgMTVweCAxNXB4IDA7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDE1cHggMTVweCAwOwogIC1vLWJvcmRlci1yYWRpdXM6IDAgMTVweCAxNXB4IDA7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDAgMTVweCAxNXB4IDA7CiAgYm9yZGVyLXJhZGl1czogMCAxNXB4IDE1cHggMDsKfQouY29uc3VsdGluZy1zaGFwZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKICB6LWluZGV4OiAtMTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMTMuIFRlc3RpbW9uaWFsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoudGVzdGltb25pYWwtYXJlYSB7CiAgYmFja2dyb3VuZDogI0ZGRkJGMzsKICBwYWRkaW5nOiAyNTBweCAwIDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgbWFyZ2luLXRvcDogLTEzMHB4OwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsLWFyZWEgewogICAgcGFkZGluZzogMjMwcHggMCAwOwogIH0KfQoudGVzdGltb25pYWxfX2FyZWEtdHdvIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBwYWRkaW5nOiAxMjBweCAwIDkwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVzdGltb25pYWxfX2FyZWEtdHdvIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLnRlc3RpbW9uaWFsX19hcmVhLXRocmVlIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBwYWRkaW5nOiAxMjBweCAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19hcmVhLXRocmVlIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci50ZXN0aW1vbmlhbF9fYmcgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDAgMCAxMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVzdGltb25pYWxfX2JnIHsKICAgIHBhZGRpbmc6IDAgMCAxMDBweDsKICB9Cn0KLnRlc3RpbW9uaWFsX19iZy10d28gewogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19iZy10d28gewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLnRlc3RpbW9uaWFsLWltZy13cmFwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRlc3RpbW9uaWFsLWltZy13cmFwIHsKICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgfQp9Ci50ZXN0aW1vbmlhbC1pbWctd3JhcCAuaW1nLXNoYXBlIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci50ZXN0aW1vbmlhbC1pbWctd3JhcCAuaW1nLXNoYXBlIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwp9Ci50ZXN0aW1vbmlhbC1pbWctd3JhcCAuaW1nLXNoYXBlIGltZzpudGgtY2hpbGQoMikgewogIGxlZnQ6IDEwJTsKICB0b3A6IDE4JTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRlc3RpbW9uaWFsLWltZy13cmFwIC5pbWctc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICBsZWZ0OiA1JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsLWltZy13cmFwIC5pbWctc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgICBsZWZ0OiAzJTsKICAgIHdpZHRoOiA3MHB4OwogICAgdG9wOiAxMCU7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC50ZXN0aW1vbmlhbC1pbWctd3JhcCAuaW1nLXNoYXBlIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogNSU7CiAgICB3aWR0aDogOTBweDsKICAgIHRvcDogMTMlOwogIH0KfQoudGVzdGltb25pYWwtaW1nLXdyYXAgLmltZy1zaGFwZSBpbWc6bnRoLWNoaWxkKDMpIHsKICBsZWZ0OiAxNCU7CiAgYm90dG9tOiAxOSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZXN0aW1vbmlhbC1pbWctd3JhcCAuaW1nLXNoYXBlIGltZzpudGgtY2hpbGQoMykgewogICAgbGVmdDogMyU7CiAgICBib3R0b206IDMwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsLWltZy13cmFwIC5pbWctc2hhcGUgaW1nOm50aC1jaGlsZCgzKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoudGVzdGltb25pYWwtaW1nLXdyYXAgLmltZy1zaGFwZSBpbWc6bnRoLWNoaWxkKDQpIHsKICByaWdodDogMCU7CiAgYm90dG9tOiAyMSU7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiA1czsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVzdGltb25pYWwtaW1nLXdyYXAgLmltZy1zaGFwZSBpbWc6bnRoLWNoaWxkKDQpIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci50ZXN0aW1vbmlhbF9faW1nLXdyYXAtdHdvIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50ZXN0aW1vbmlhbF9faW1nLXdyYXAtdHdvIHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci50ZXN0aW1vbmlhbF9faW1nLXNoYXBlLXR3byBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoudGVzdGltb25pYWxfX2ltZy1zaGFwZS10d28gaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogMDsKICB0b3A6IDQwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19pbWctc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMSkgewogICAgbGVmdDogLTIlOwogICAgd2lkdGg6IDEwMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVzdGltb25pYWxfX2ltZy1zaGFwZS10d28gaW1nOm50aC1jaGlsZCgxKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoudGVzdGltb25pYWxfX2ltZy1zaGFwZS10d28gaW1nOm50aC1jaGlsZCgyKSB7CiAgbGVmdDogMTYlOwogIGJvdHRvbTogMSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19pbWctc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogOSU7CiAgICBib3R0b206IC0zJTsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLnRlc3RpbW9uaWFsX19pbWctc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMikgewogICAgbGVmdDogMTYlOwogICAgYm90dG9tOiAxJTsKICB9Cn0KLnRlc3RpbW9uaWFsX19pbWctc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMykgewogIHJpZ2h0OiAxMyU7CiAgdG9wOiAzMiU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZXN0aW1vbmlhbF9faW1nLXNoYXBlLXR3byBpbWc6bnRoLWNoaWxkKDMpIHsKICAgIHJpZ2h0OiA5JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19pbWctc2hhcGUtdHdvIGltZzpudGgtY2hpbGQoMykgewogICAgdG9wOiAyOCU7CiAgICByaWdodDogMyU7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC50ZXN0aW1vbmlhbF9faW1nLXNoYXBlLXR3byBpbWc6bnRoLWNoaWxkKDMpIHsKICAgIHJpZ2h0OiAxMCU7CiAgfQp9Ci50ZXN0aW1vbmlhbC1pbmZvIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50ZXN0aW1vbmlhbC1pbmZvIC50aXRsZSB7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci50ZXN0aW1vbmlhbC1pbmZvIHNwYW4gewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKICBsaW5lLWhlaWdodDogMTsKfQoudGVzdGltb25pYWxfX2luZm8tdHdvIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDIwcHg7Cn0KLnRlc3RpbW9uaWFsX19pbmZvLXR3byBzcGFuIHsKICBmb250LXNpemU6IDE1cHg7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWhlYWRpbmctZm9udC1mYW1pbHkpOwogIGNvbG9yOiAjOTU5N0M4OwogIG1hcmdpbi1ib3R0b206IDEycHg7Cn0KLnRlc3RpbW9uaWFsX19pbmZvLXRocmVlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9Ci50ZXN0aW1vbmlhbF9faW5mby10aHJlZTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgd2lkdGg6IDRweDsKICBoZWlnaHQ6IDM2cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLnRlc3RpbW9uaWFsX19pbmZvLXRocmVlIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIGZvbnQtc2l6ZTogMjJweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQoudGVzdGltb25pYWxfX2luZm8tdGhyZWUgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDE7Cn0KLnRlc3RpbW9uaWFsX19pdGVtLXR3byB7CiAgYmFja2dyb3VuZDogIzFGMjI3QjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBwYWRkaW5nOiA0MHB4IDM1cHggNzBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB6LWluZGV4OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGVzdGltb25pYWxfX2l0ZW0tdHdvIHsKICAgIHBhZGRpbmc6IDQwcHggMjBweCA3MHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGVzdGltb25pYWxfX2l0ZW0tdHdvIHsKICAgIHBhZGRpbmc6IDQwcHggMjVweCA3MHB4OwogIH0KfQoudGVzdGltb25pYWxfX2l0ZW0tdHdvIC50ZXN0aW1vbmlhbF9fcmF0aW5nIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoudGVzdGltb25pYWxfX2l0ZW0tdHdvIHAgewogIG1hcmdpbi1ib3R0b206IDA7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KLnRlc3RpbW9uaWFsX19pdGVtLXR3byAuaWNvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAyNXB4OwogIGJvdHRvbTogLThweDsKICB6LWluZGV4OiAtMTsKfQoudGVzdGltb25pYWxfX2l0ZW0tdGhyZWUgcCB7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KLnRlc3RpbW9uaWFsX19pdGVtLWZvdXIgLnRlc3RpbW9uaWFsLWluZm8gLnRpdGxlIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnRlc3RpbW9uaWFsX19pdGVtLWZvdXIgLnRlc3RpbW9uaWFsLWluZm8gc3BhbiB7CiAgY29sb3I6IHZhcigtLXRnLWJvcmRlci01KTsKfQoudGVzdGltb25pYWxfX2l0ZW0tZm91ciAudGVzdGltb25pYWwtY29udGVudCBwIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0yKTsKfQoudGVzdGltb25pYWxfX2l0ZW0td3JhcCB7CiAgbWFyZ2luLWxlZnQ6IDUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZXN0aW1vbmlhbF9faXRlbS13cmFwIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQoudGVzdGltb25pYWxfX3JhdGluZyB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDNweDsKICBmb250LXNpemU6IDE4cHg7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnRlc3RpbW9uaWFsX19yYXRpbmcgaTpsYXN0LWNoaWxkIHsKICBjb2xvcjogI0RFRDlDRTsKfQoudGVzdGltb25pYWxfX3JhdGluZy10d28gewogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLnRlc3RpbW9uaWFsX19hdmF0YXIgewogIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIHdpZHRoOiA4MnB4OwogIG1hcmdpbjogMCBhdXRvIDE1cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnRlc3RpbW9uaWFsX19hdmF0YXIgaW1nIHsKICB3aWR0aDogMTAwJTsKICBvYmplY3QtZml0OiBjb3ZlcjsKfQoudGVzdGltb25pYWwtY29udGVudCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDQwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZXN0aW1vbmlhbC1jb250ZW50IHsKICAgIGdhcDogMjBweDsKICB9Cn0KLnRlc3RpbW9uaWFsLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDE3cHg7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGxpbmUtaGVpZ2h0OiAxLjU4OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci50ZXN0aW1vbmlhbC1jb250ZW50IC5pY29uIHsKICB3aWR0aDogODBweDsKICBoZWlnaHQ6IDgwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBmbGV4OiAwIDAgYXV0bzsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwOwogIC1vLWJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7CiAgYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDsKICBmb250LXNpemU6IDQwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZXN0aW1vbmlhbC1jb250ZW50IC5pY29uIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci50ZXN0aW1vbmlhbC1uYXYgLnN3aXBlci13cmFwcGVyIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTBweDsKICBtYXJnaW4tdG9wOiAzNXB4Owp9Ci50ZXN0aW1vbmlhbC1uYXYgLnN3aXBlci13cmFwcGVyIGJ1dHRvbiB7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIHBhZGRpbmc6IDA7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogNjVweDsKfQoudGVzdGltb25pYWwtbmF2IC5zd2lwZXItd3JhcHBlciBidXR0b24gaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgd2lkdGg6IDEwMCU7CiAgZmlsdGVyOiBncmF5c2NhbGUoMSk7Cn0KLnRlc3RpbW9uaWFsLW5hdiAuc3dpcGVyLXdyYXBwZXIgLnN3aXBlci1zbGlkZSB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoudGVzdGltb25pYWwtbmF2IC5zd2lwZXItc2xpZGUtdGh1bWItYWN0aXZlIGJ1dHRvbiBpbWcgewogIGZpbHRlcjogZ3JheXNjYWxlKDApOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LXR3byB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDEwcHg7CiAgbWFyZ2luLXRvcDogMzBweDsKfQoudGVzdGltb25pYWxfX25hdi10d28gLnRlc3RpbW9uaWFsLWJ1dHRvbi1wcmV2IHsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYm9yZGVyOiAxLjVweCBzb2xpZCAjOTU5N0M4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGxpbmUtaGVpZ2h0OiAwOwogIGZvbnQtc2l6ZTogMjRweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LXR3byAudGVzdGltb25pYWwtYnV0dG9uLXByZXY6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoudGVzdGltb25pYWxfX25hdi10d28gLnRlc3RpbW9uaWFsLWJ1dHRvbi1uZXh0IHsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYm9yZGVyOiAxLjVweCBzb2xpZCAjOTU5N0M4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGxpbmUtaGVpZ2h0OiAwOwogIGZvbnQtc2l6ZTogMjRweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LXR3byAudGVzdGltb25pYWwtYnV0dG9uLW5leHQ6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoudGVzdGltb25pYWxfX25hdi10aHJlZSAuc3dpcGVyLXdyYXBwZXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDM1cHg7Cn0KLnRlc3RpbW9uaWFsX19uYXYtdGhyZWUgLnN3aXBlci13cmFwcGVyIGJ1dHRvbiB7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIHBhZGRpbmc6IDA7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogNjVweDsKfQoudGVzdGltb25pYWxfX25hdi10aHJlZSAuc3dpcGVyLXdyYXBwZXIgYnV0dG9uIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHdpZHRoOiAxMDAlOwogIGZpbHRlcjogZ3JheXNjYWxlKDEpOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LXRocmVlIC5zd2lwZXItd3JhcHBlciAuc3dpcGVyLXNsaWRlIHsKICB3aWR0aDogYXV0byAhaW1wb3J0YW50Owp9Ci50ZXN0aW1vbmlhbF9fbmF2LXRocmVlIC5zd2lwZXItc2xpZGUtdGh1bWItYWN0aXZlIGJ1dHRvbiBpbWcgewogIGZpbHRlcjogZ3JheXNjYWxlKDApOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LWZvdXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxMHB4OwogIG1hcmdpbi10b3A6IDI1cHg7Cn0KLnRlc3RpbW9uaWFsX19uYXYtZm91ciAudGVzdGltb25pYWwtdHdvLWJ1dHRvbi1wcmV2IHsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXY6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLW5leHQgewogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwp9Ci50ZXN0aW1vbmlhbF9fbmF2LWZvdXIgLnRlc3RpbW9uaWFsLXR3by1idXR0b24tbmV4dDpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci50ZXN0aW1vbmlhbF9faW5uZXItdG9wIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBnYXA6IDMwcHg7Cn0KLnRlc3RpbW9uaWFsX19pbm5lci10b3AgLmljb24gewogIHdpZHRoOiA4MHB4OwogIGhlaWdodDogODBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGZsZXg6IDAgMCBhdXRvOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDQwcHggMCAwIDA7CiAgLW8tYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDsKICAtbXMtYm9yZGVyLXJhZGl1czogNDBweCAwIDAgMDsKICBib3JkZXItcmFkaXVzOiA0MHB4IDAgMCAwOwogIGZvbnQtc2l6ZTogNDBweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19pbm5lci10b3AgLmljb24gewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLnRlc3RpbW9uaWFsX19ib3R0b20gewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGdhcDogMzBweDsKfQoudGVzdGltb25pYWxfX2Zvcm0gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIHBhZGRpbmc6IDQwcHggNDVweCA0NXB4OwogIHdpZHRoOiA0MDBweDsKICBtYXJnaW46IDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19mb3JtIHsKICAgIHBhZGRpbmc6IDQwcHggNDBweCA0NXB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGVzdGltb25pYWxfX2Zvcm0gewogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlc3RpbW9uaWFsX19mb3JtIHsKICAgIHBhZGRpbmc6IDMwcHggMjVweCAzMHB4OwogICAgd2lkdGg6IDEwMCU7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC50ZXN0aW1vbmlhbF9fZm9ybSB7CiAgICBwYWRkaW5nOiA0MHB4OwogIH0KfQoudGVzdGltb25pYWxfX2Zvcm0gLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIGZvbnQtc2l6ZTogMzBweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQoudGVzdGltb25pYWxfX2Zvcm0gLmZvcm0tZ3JwIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci50ZXN0aW1vbmlhbF9fZm9ybSAuZm9ybS1ncnAgaW5wdXQgewogIHdpZHRoOiAxMDAlOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjRDBENkUxOwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBwYWRkaW5nOiAxNXB4IDIwcHg7CiAgaGVpZ2h0OiA1MHB4Owp9Ci50ZXN0aW1vbmlhbF9fZm9ybSAuZm9ybS1ncnAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogIzY2NzU5NDsKfQoudGVzdGltb25pYWxfX2Zvcm0gLmZvcm0tZ3JwLnNlbGVjdC1ncnAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudGVzdGltb25pYWxfX2Zvcm0gLmZvcm0tZ3JwLnNlbGVjdC1ncnAgc2VsZWN0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCAjRDBENkUxOwogIGNvbG9yOiAjNjY3NTk0OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zaXplOiAxNHB4OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBvdXRsaW5lOiBub25lOwogIHBhZGRpbmc6IDE1cHggNDBweCAxNXB4IDIwcHg7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIC1tb3otYXBwZWFyYW5jZTogbm9uZTsKICBhcHBlYXJhbmNlOiBub25lOwogIHdpZHRoOiAxMDAlOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgaGVpZ2h0OiA1MHB4OwogIGN1cnNvcjogcG9pbnRlcjsKfQoudGVzdGltb25pYWxfX2Zvcm0gLmZvcm0tZ3JwLnNlbGVjdC1ncnA6OmFmdGVyIHsKICBjb250ZW50OiAiXGYxMDYiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgZm9udC1mYW1pbHk6IGZsYXRpY29uOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgcmlnaHQ6IDEwcHg7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci50ZXN0aW1vbmlhbC1zaGFwZS13cmFwIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci50ZXN0aW1vbmlhbC1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMSkgewogIGJvdHRvbTogMDsKICByaWdodDogMTAlOwp9Ci50ZXN0aW1vbmlhbC1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIHRvcDogMDsKfQoudGVzdGltb25pYWxfX3NoYXBlLXR3byBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogLTE7Cn0KLnRlc3RpbW9uaWFsX19zaGFwZS10aHJlZSBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICByaWdodDogMTUlOwogIHRvcDogLTE1JTsKICBhbmltYXRpb24tZHVyYXRpb246IDMwczsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLnRlc3RpbW9uaWFsX19zaGFwZS10aHJlZSBpbWcgewogICAgcmlnaHQ6IDElOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGVzdGltb25pYWxfX3NoYXBlLXRocmVlIGltZyB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IC0xMCU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZXN0aW1vbmlhbF9fc2hhcGUtdGhyZWUgaW1nIHsKICAgIGJvdHRvbTogMCU7CiAgfQp9CgoucmFuZ2Utc2xpZGVyLXdyYXAgewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnJhbmdlLXNsaWRlci13cmFwIGlucHV0IHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDE1cHg7CiAgYXBwZWFyYW5jZTogbm9uZTsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgYmFja2dyb3VuZDogI0Q5RDlEOTsKICBvdXRsaW5lOiBub25lOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnJhbmdlLXNsaWRlci13cmFwIC5yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICB3aWR0aDogMTVweDsKICBoZWlnaHQ6IDE1cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXI6IG5vbmU7CiAgYm94LXNoYWRvdzogLTgwN3B4IDAgMCA4MDBweCB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKfQoucmFuZ2UtdG9wIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIG1hcmdpbi10b3A6IDIwcHg7Cn0KLnJhbmdlLXRvcCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7Cn0KLnJhbmdlLXRvcCBzcGFuIHsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBkaXNwbGF5OiBibG9jazsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwp9Ci5yYW5nZS10b3Agc3BhbiBzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCTE0LiBGZWF0dXJlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLmZlYXR1cmVzX19hcmVhLXR3byB7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mZWF0dXJlc19fYXJlYS10d28gewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouZmVhdHVyZXNfX2l0ZW0gewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiAyMHB4OwogIHBhZGRpbmc6IDgwcHggNTBweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMik7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE4MDBweCkgewogIC5mZWF0dXJlc19faXRlbSB7CiAgICBwYWRkaW5nOiA4MHB4IDMwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAuZmVhdHVyZXNfX2l0ZW0gewogICAgcGFkZGluZzogNjBweCAyMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmZlYXR1cmVzX19pdGVtIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZmVhdHVyZXNfX2l0ZW0gewogICAgcGFkZGluZzogNDBweCAzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuZmVhdHVyZXNfX2l0ZW0gewogICAgcGFkZGluZzogNDBweCAyNXB4OwogIH0KfQouZmVhdHVyZXNfX2l0ZW06aG92ZXIgLmZlYXR1cmVzX19pY29uIGkgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7Cn0KLmZlYXR1cmVzX19pdGVtLXdyYXAgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMik7Cn0KLmZlYXR1cmVzX19pdGVtLXdyYXAgLnJvdyB7CiAgLS1icy1ndXR0ZXIteDogMHB4Owp9Ci5mZWF0dXJlc19faXRlbS10d28gewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNFNEVDRUY7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggN3B4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggN3B4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgLW1zLWJveC1zaGFkb3c6IDBweCA3cHggMTVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtby1ib3gtc2hhZG93OiAwcHggN3B4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm94LXNoYWRvdzogMHB4IDdweCAxNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIHBhZGRpbmc6IDMwcHggMzBweDsKICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGdhcDogMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmZlYXR1cmVzX19pdGVtLXR3byB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9CkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgewogIC5mZWF0dXJlc19faXRlbS10d28gewogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQp9Ci5mZWF0dXJlc19faXRlbS10d286aG92ZXIgLmZlYXR1cmVzX19pY29uLXR3byBpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwp9Ci5mZWF0dXJlc19faWNvbiB7CiAgd2lkdGg6IDgwcHg7CiAgaGVpZ2h0OiA4MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBmbGV4OiAwIDAgYXV0bzsKICBmb250LXNpemU6IDUwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5mZWF0dXJlc19faWNvbiB7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIH0KfQouZmVhdHVyZXNfX2ljb24gaSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDApOwogIC1vLXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMCk7Cn0KLmZlYXR1cmVzX19pY29uLXR3byB7CiAgd2lkdGg6IDcwcHg7CiAgaGVpZ2h0OiA3MHB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZmxleDogMCAwIGF1dG87CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogOHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA4cHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodCk7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGZvbnQtc2l6ZTogNTBweDsKfQouZmVhdHVyZXNfX2ljb24tdHdvIGkgewogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1vdXQgMHM7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlWSgwKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMCk7CiAgdHJhbnNmb3JtOiByb3RhdGVZKDApOwp9Ci5mZWF0dXJlc19fY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDEycHg7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkgewogIC5mZWF0dXJlc19fY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiAyMnB4OwogIH0KfQouZmVhdHVyZXNfX2NvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTUwMHB4KSB7CiAgLmZlYXR1cmVzX19jb250ZW50IHAgYnIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLmZlYXR1cmVzX19jb250ZW50LXR3byAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgZm9udC1zaXplOiAyMHB4OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci5mZWF0dXJlc19fY29udGVudC10d28gcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJMTUuIE1hcnF1ZWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5tYXJxdWVlX19hcmVhIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci15ZWxsb3ctbGlnaHQtMik7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiAwIDAgMTIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLm1hcnF1ZWVfX2FyZWEgewogICAgcGFkZGluZzogMCAwIDEwMHB4OwogIH0KfQoubWFycXVlZV9fYXJlYS10d28gewogIHBhZGRpbmc6IDAgMCAxMjBweDsKICBvdmVyZmxvdzogaGlkZGVuOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5tYXJxdWVlX19hcmVhLXR3byB7CiAgICBwYWRkaW5nOiAwIDAgMTAwcHg7CiAgfQp9Ci5tYXJxdWVlX193cmFwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5tYXJxdWVlX193cmFwOmhvdmVyIC5tYXJxdWVlX19ib3ggewogIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7Cn0KLm1hcnF1ZWVfX2JveCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBmbGV4LXdyYXA6IG5vd3JhcDsKICB3aWR0aDogZml0LWNvbnRlbnQ7CiAgYW5pbWF0aW9uOiBtYXJxdWVlIDUwcyBsaW5lYXIgaW5maW5pdGU7Cn0KLm1hcnF1ZWVfX2JveCBhIHsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtc2l6ZTogNjBweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbGV0dGVyLXNwYWNpbmc6IDFweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm1hcnF1ZWVfX2JveCBhIHsKICAgIGZvbnQtc2l6ZTogNTVweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLm1hcnF1ZWVfX2JveCBhIHsKICAgIGZvbnQtc2l6ZTogNTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLm1hcnF1ZWVfX2JveCBhIHsKICAgIGZvbnQtc2l6ZTogNDBweDsKICB9Cn0KLm1hcnF1ZWVfX2JveCBhOjphZnRlciB7CiAgY29udGVudDogIlxmNjIxIjsKICBmb250LXNpemU6IDQ1cHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBsaW5lLWhlaWdodDogMTsKICBtYXJnaW4tbGVmdDogMjBweDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaWNvbi1mb250LWZhbWlseSk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAubWFycXVlZV9fYm94IGE6OmFmdGVyIHsKICAgIGZvbnQtc2l6ZTogNDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLm1hcnF1ZWVfX2JveCBhOjphZnRlciB7CiAgICBmb250LXNpemU6IDMwcHg7CiAgfQp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAxNi4gRmFjdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLmNvdW50ZXItYXJlYSB7CiAgYmFja2dyb3VuZDogI0ZGRkJGMzsKICBwYWRkaW5nOiAxMTBweCAwIDgwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuY291bnRlci1hcmVhIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLmNvdW50ZXItYXJlYS10d28gewogIHBhZGRpbmc6IDE0MHB4IDAgMTEwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvdW50ZXItYXJlYS10d28gewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouY291bnRlci1hcmVhLXRocmVlIHsKICBiYWNrZ3JvdW5kOiAjRjVGQUZDOwogIHBhZGRpbmc6IDAgMCA5MHB4Owp9Ci5jb3VudGVyLWl0ZW0gewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvdW50ZXItaXRlbSB7CiAgICBnYXA6IDEycHg7CiAgfQp9Ci5jb3VudGVyLWl0ZW0gLmljb24gewogIGZvbnQtc2l6ZTogNzJweDsKICBsaW5lLWhlaWdodDogMDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAuY291bnRlci1pdGVtIC5pY29uIHsKICAgIGZvbnQtc2l6ZTogNjBweDsKICB9Cn0KLmNvdW50ZXItaXRlbSAuY29udGVudCAuY291bnQgewogIGxpbmUtaGVpZ2h0OiAwLjg7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtc2l6ZTogNDBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZvbnQtd2VpZ2h0OiA4MDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jb3VudGVyLWl0ZW0gLmNvbnRlbnQgLmNvdW50IHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmNvdW50ZXItaXRlbSAuY29udGVudCAuY291bnQgewogICAgZm9udC1zaXplOiAzNHB4OwogIH0KfQouY291bnRlci1pdGVtIC5jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmNvdW50ZXItaXRlbSAuY29udGVudCBwIHsKICAgIGZvbnQtc2l6ZTogMTZweDsKICB9Cn0KLmNvdW50ZXItaXRlbTpob3ZlciAuaWNvbiB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKfQouY291bnRlci1zaGFwZS13cmFwIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwp9Ci5jb3VudGVyLXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgxKSB7CiAgbGVmdDogMDsKICB0b3A6IDA7Cn0KLmNvdW50ZXItc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDIpIHsKICByaWdodDogOCU7CiAgdG9wOiAzMCU7Cn0KLmNvdW50ZXItc2hhcGUtd3JhcCBpbWc6bnRoLWNoaWxkKDMpIHsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogLTI7Cn0KLmNvdW50ZXItc2hhcGUtdHdvIGltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA4JTsKICBib3R0b206IC0yMHB4Owp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAxNy4gVGVhbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlYW0tYXJlYSB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDcwcHg7CiAgfQp9Ci50ZWFtX19hcmVhLXR3byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVhbV9fYXJlYS10d28gewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQoudGVhbV9fYXJlYS10aHJlZSB7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtX19hcmVhLXRocmVlIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLnRlYW1fX2FyZWEtZm91ciB7CiAgcGFkZGluZzogMTIwcHggMCA5MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtX19hcmVhLWZvdXIgewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQoudGVhbS1pdGVtIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQoudGVhbS1pdGVtLXdyYXAgLnJvdyB7CiAgLS1icy1ndXR0ZXIteDogMjRweDsKfQoudGVhbV9faXRlbS10d28gewogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLnRlYW1fX2l0ZW0tdGhyZWUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci50ZWFtX19pdGVtLWZvdXIgewogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLnRlYW0tdGh1bWIgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTRweCAxNHB4IDAgMTA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxNHB4IDE0cHggMCAxMDRweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNHB4IDE0cHggMCAxMDRweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTRweCAxNHB4IDAgMTA0cHg7CiAgYm9yZGVyLXJhZGl1czogMTRweCAxNHB4IDAgMTA0cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnRlYW0tdGh1bWIgaW1nIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDI5MnB4OwogIG9iamVjdC1maXQ6IGNvdmVyOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtLXRodW1iIGltZyB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9Ci50ZWFtX190aHVtYi10d28gewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLnRlYW1fX3RodW1iLXR3byBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjk1cHg7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZWFtX190aHVtYi10d28gaW1nIHsKICAgIGhlaWdodDogMjMwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50ZWFtX190aHVtYi10d28gaW1nIHsKICAgIGhlaWdodDogMjk1cHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtX190aHVtYi10d28gaW1nIHsKICAgIGhlaWdodDogYXV0bzsKICB9Cn0KLnRlYW1fX3RodW1iLXRocmVlIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTRweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNHB4OwogIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgd2lkdGg6IDEwMCU7Cn0KLnRlYW1fX3RodW1iLWZvdXIgaW1nIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxNHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDE0cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDE0cHg7CiAgYm9yZGVyLXJhZGl1czogMTRweDsKICB3aWR0aDogMTAwJTsKfQoudGVhbS1zb2NpYWwgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMjJweDsKICB0b3A6IDIycHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7Cn0KLnRlYW0tc29jaWFsIC5zb2NpYWwtdG9nZ2xlLWljb24gewogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb2xvcjogIzQ3NEFBMDsKICBmb250LXNpemU6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY3Vyc29yOiBwb2ludGVyOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLnRlYW0tc29jaWFsIC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDVweDsKICBwYWRkaW5nOiAwIDAgMTVweDsKICBkaXNwbGF5OiBub25lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudGVhbS1zb2NpYWwgLmxpc3Qtd3JhcCBhIHsKICBmb250LXNpemU6IDE4cHg7CiAgY29sb3I6ICM0NzRBQTA7Cn0KLnRlYW0tc29jaWFsIC5saXN0LXdyYXAgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50ZWFtX19zb2NpYWwtdHdvIC5saXN0LXdyYXAgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiAxMHB4Owp9Ci50ZWFtX19zb2NpYWwtdHdvIC5saXN0LXdyYXAgbGkgYSB7CiAgd2lkdGg6IDQwcHg7CiAgaGVpZ2h0OiA0MHB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci0zKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgZm9udC1zaXplOiAxOHB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib3JkZXItMyk7Cn0KLnRlYW1fX3NvY2lhbC10d28gLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGVhbV9fc29jaWFsLXRocmVlIHsKICB0b3A6IGF1dG87CiAgYm90dG9tOiAzMHB4OwogIHJpZ2h0OiAzMHB4OwogIHotaW5kZXg6IDE7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnRlYW1fX3NvY2lhbC10aHJlZSAuc29jaWFsLXRvZ2dsZS1pY29uIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnRlYW1fX3NvY2lhbC10aHJlZSAubGlzdC13cmFwIHsKICBwYWRkaW5nOiAxNXB4IDAgMDsKfQoudGVhbV9fc29jaWFsLXRocmVlIC5saXN0LXdyYXAgbGkgYSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci50ZWFtX19zb2NpYWwtdGhyZWUgLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQoudGVhbV9fc29jaWFsLWZvdXIgLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiAxNXB4Owp9Ci50ZWFtX19zb2NpYWwtZm91ciAubGlzdC13cmFwIGxpIGEgewogIGNvbG9yOiAjOTU5N0M4Owp9Ci50ZWFtX19zb2NpYWwtZm91ciAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQoudGVhbS1jb250ZW50IHsKICBwYWRkaW5nOiAxNXB4IDI1cHggMjVweDsKfQoudGVhbS1jb250ZW50IC50aXRsZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci50ZWFtLWNvbnRlbnQgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50ZWFtX19jb250ZW50LXR3byB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci50ZWFtX19jb250ZW50LXR3byAudGl0bGUgewogIGZvbnQtc2l6ZTogMjRweDsKICBmb250LXdlaWdodDogdmFyKC0tdGctZnctc2VtaS1ib2xkKTsKICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLnRlYW1fX2NvbnRlbnQtdHdvIHNwYW4gewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50ZWFtX19jb250ZW50LXRocmVlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMzBweDsKICB0b3A6IDMwcHg7CiAgcmlnaHQ6IDMwcHg7CiAgei1pbmRleDogMTsKfQoudGVhbV9fY29udGVudC10aHJlZSAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDVweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLnRlYW1fX2NvbnRlbnQtdGhyZWUgc3BhbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7Cn0KLnRlYW1fX2NvbnRlbnQtZm91ciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTsKICAtbW96LWJveC1zaGFkb3c6IDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDQpOwogIC1tcy1ib3gtc2hhZG93OiAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTsKICAtby1ib3gtc2hhZG93OiAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTsKICBib3gtc2hhZG93OiAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luOiAwIDI0cHg7CiAgcGFkZGluZzogMjBweCAyMHB4OwogIG1hcmdpbi10b3A6IC02NXB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwp9Ci50ZWFtX19jb250ZW50LWZvdXIgLnRpdGxlIHsKICBmb250LXNpemU6IDI0cHg7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLnRlYW1fX2NvbnRlbnQtZm91ciBzcGFuIHsKICBkaXNwbGF5OiBibG9jazsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbGluZS1oZWlnaHQ6IDE7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoudGVhbV9fc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLnRlYW1fX3NoYXBlIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDUlOwogIGJvdHRvbTogMTUlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHsKICAudGVhbV9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgICBsZWZ0OiAtNSU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAudGVhbV9fc2hhcGUgaW1nOm50aC1jaGlsZCgxKSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoudGVhbV9fc2hhcGUgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDYlOwogIHRvcDogMTIlOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50ZWFtX19zaGFwZSBpbWc6bnRoLWNoaWxkKDIpIHsKICAgIHRvcDogNSU7CiAgICB3aWR0aDogOTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLnRlYW1fX3NoYXBlIGltZzpudGgtY2hpbGQoMikgewogICAgdG9wOiAyJTsKICAgIHdpZHRoOiA4MHB4OwogIH0KfQoudGVhbV9fZGV0YWlscy1hcmVhIHsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtX19kZXRhaWxzLWFyZWEgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLnRlYW1fX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTM2IHsKICB3aWR0aDogMzUuNiU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRlYW1fX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTM2IHsKICAgIHdpZHRoOiA2MCU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50ZWFtX19kZXRhaWxzLWlubmVyIC5yb3cgLmNvbC0zNiB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnRlYW1fX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTY0IHsKICB3aWR0aDogNjQuNCU7CiAgZmxleDogMCAwIGF1dG87Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRlYW1fX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTY0IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGVhbV9fZGV0YWlscy1pbWcgewogICAgbWFyZ2luLWJvdHRvbTogNTBweDsKICB9Cn0KLnRlYW1fX2RldGFpbHMtaW1nIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDsKICAtby1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxMHB4OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRlYW1fX2RldGFpbHMtaW1nIGltZyB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnRlYW1fX2RldGFpbHMtY29udGVudCB7CiAgbWFyZ2luLWxlZnQ6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZWFtX19kZXRhaWxzLWNvbnRlbnQgewogICAgbWFyZ2luOiAwOwogIH0KfQoudGVhbV9fZGV0YWlscy1jb250ZW50IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBmb250LXNpemU6IDQwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRlYW1fX2RldGFpbHMtY29udGVudCAudGl0bGUgewogICAgZm9udC1zaXplOiAzNnB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGVhbV9fZGV0YWlscy1jb250ZW50IC50aXRsZSB7CiAgICBmb250LXNpemU6IDMycHg7CiAgfQp9Ci50ZWFtX19kZXRhaWxzLWNvbnRlbnQgLnBvc2l0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE4cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoudGVhbV9fZGV0YWlscy1jb250ZW50IHAgewogIG1hcmdpbi1ib3R0b206IDUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50ZWFtX19kZXRhaWxzLWNvbnRlbnQgcCB7CiAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIH0KfQoudGVhbV9fZGV0YWlscy1pbmZvID4gLmxpc3Qtd3JhcCA+IGxpIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZvbnQtc2l6ZTogMThweDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgZ2FwOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLnRlYW1fX2RldGFpbHMtaW5mbyA+IC5saXN0LXdyYXAgPiBsaSA+IGEgewogIGZvbnQtZmFtaWx5OiB2YXIoLS10Zy1oZWFkaW5nLWZvbnQtZmFtaWx5KTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQoudGVhbV9fZGV0YWlscy1pbmZvID4gLmxpc3Qtd3JhcCA+IGxpID4gYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50ZWFtX19kZXRhaWxzLWluZm8gPiAubGlzdC13cmFwID4gbGkgPiBpIHsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBsaW5lLWhlaWdodDogMDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBmb250LXNpemU6IDE4cHg7CiAgZmxleDogMCAwIGF1dG87Cn0KLnRlYW1fX2RldGFpbHMtaW5mbyA+IC5saXN0LXdyYXAgPiBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci50ZWFtX19kZXRhaWxzLXNvY2lhbCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiAxNXB4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnRlYW1fX2RldGFpbHMtc29jaWFsIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGZvbnQtc2l6ZTogMTZweDsKfQoudGVhbV9fZGV0YWlscy1zb2NpYWwgbGkgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2VjdGlvbi1jb250ZW50IHsKICAgIG1hcmdpbi1ib3R0b206IDUwcHg7CiAgfQp9Ci5zZWN0aW9uLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXdlaWdodDogNTAwOwp9CgoudGVhbS1pdGVtLCAuY2FyZC10ZWFtLWFyZWEtc2l4IHsKICB0cmFuc2l0aW9uOiAwLjNzIGFsbDsKfQoKLnRlYW0taXRlbTpob3ZlciwgLmNhcmQtdGVhbS1hcmVhLXNpeDpob3ZlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogIHRyYW5zaXRpb246IDAuM3MgYWxsOwp9CgoubXQtMTAgewogIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDE4LiBDYWxsLWJhY2sKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5jYWxsLWJhY2stYXJlYSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcGFkZGluZzogMTAwcHggMCA4NXB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmNhbGwtYmFjay1hcmVhLXR3byB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgcGFkZGluZzogMDsKICB6LWluZGV4OiAyOwp9Ci5jYWxsLWJhY2std3JhcCB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcGFkZGluZzogOTBweCA4MHB4IDc1cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jYWxsLWJhY2std3JhcCB7CiAgICBwYWRkaW5nOiA1MHB4IDI1cHggNTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNhbGwtYmFjay1jb250ZW50IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgfQp9Ci5jYWxsLWJhY2stY29udGVudCAuc2hhcGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKICB6LWluZGV4OiAtMTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuY2FsbC1iYWNrLWNvbnRlbnQgLnNoYXBlIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5jYWxsLWJhY2stY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGNvbG9yOiAjRDBEMEREOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgd2lkdGg6IDkwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmNhbGwtYmFjay1jb250ZW50IHAgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5jYWxsLWJhY2stZm9ybSBmb3JtIC5yb3cgewogIC0tYnMtZ3V0dGVyLXg6IDE1cHg7Cn0KLmNhbGwtYmFjay1mb3JtIGZvcm0gLmZvcm0tZ3JwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5jYWxsLWJhY2stZm9ybSBmb3JtIC5mb3JtLWdycCBpbnB1dCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyOiBub25lOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgcGFkZGluZzogMTVweCAxOHB4OwogIGhlaWdodDogNTBweDsKfQouY2FsbC1iYWNrLWZvcm0gZm9ybSAuZm9ybS1ncnAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBmb250LXNpemU6IDE1cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogIzk1OTdDODsKfQouY2FsbC1iYWNrLWZvcm0gZm9ybSAuYnRuIHsKICB3aWR0aDogMTAwJTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIHBhZGRpbmc6IDE3cHggMjRweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLmNhbGwtYmFjay1mb3JtIGZvcm0gLmJ0bjo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwp9Ci5jYWxsLWJhY2stZm9ybSBmb3JtIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5jYWxsLWJhY2stZm9ybSBmb3JtIC5idG46aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMTkuIEJsb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5ibG9nX19hcmVhIHsKICBwYWRkaW5nOiAxMjBweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19hcmVhIHsKICAgIHBhZGRpbmc6IDEwMHB4IDA7CiAgfQp9Ci5ibG9nLXBvc3QtYmcgewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKICBvdmVyZmxvdzogaGlkZGVuOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nLXBvc3QtYmcgewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouYmxvZ19fcG9zdC1iZy10d28gewogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZ19fcG9zdC1iZy10d28gewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouYmxvZ19fcG9zdC1hcmVhLXRocmVlIHsKICBwYWRkaW5nOiAyNzBweCAwIDkwcHg7CiAgbWFyZ2luLXRvcDogLTE1MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19wb3N0LWFyZWEtdGhyZWUgewogICAgcGFkZGluZzogMjUwcHggMCA3MHB4OwogIH0KfQouYmxvZ19fcG9zdC1hcmVhLWZvdXIgewogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZ19fcG9zdC1hcmVhLWZvdXIgewogICAgcGFkZGluZzogMTAwcHggMCA3MHB4OwogIH0KfQouYmxvZ19fcG9zdC1hcmVhLWZpdmUgewogIHBhZGRpbmc6IDEyMHB4IDAgOTBweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci15ZWxsb3ctbGlnaHQtMik7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJsb2dfX3Bvc3QtYXJlYS1maXZlIHsKICAgIHBhZGRpbmc6IDEwMHB4IDAgNzBweDsKICB9Cn0KLmJsb2ctcG9zdC1pdGVtIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgcGFkZGluZzogMzBweDsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nLXBvc3QtaXRlbSB7CiAgICBwYWRkaW5nOiAyMHB4IDIwcHg7CiAgfQp9Ci5ibG9nLXBvc3QtdGh1bWIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLmJsb2ctcG9zdC10aHVtYiBpbWcgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjQ4cHg7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KLmJsb2ctcG9zdC10aHVtYiAucG9zdC10YWcgewogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBsaW5lLWhlaWdodDogMTsKICBkaXNwbGF5OiBibG9jazsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICAtby1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDRweDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE4cHg7CiAgdG9wOiAxNnB4OwogIHotaW5kZXg6IDI7CiAgcGFkZGluZzogOHB4IDEwcHg7Cn0KLmJsb2ctcG9zdC10aHVtYiAucG9zdC10YWc6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLmJsb2ctcG9zdC1jb250ZW50IC50aXRsZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZy1wb3N0LWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjJweDsKICB9Cn0KLmJsb2ctcG9zdC1jb250ZW50IC5ibG9nLXBvc3QtbWV0YSAubGlzdC13cmFwIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Cn0KLmJsb2dfX3Bvc3QtdHdvIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4OwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouYmxvZ19fcG9zdC1mb3VyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjRUFFNEQ4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDgpOwogIC1tb3otYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDgpOwogIC1tcy1ib3gtc2hhZG93OiAwcHggMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDgpOwogIGJveC1zaGFkb3c6IDBweCAwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjA4KTsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5ibG9nX19wb3N0LXRodW1iLXR3byB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweCAxNXB4IDAgMDsKICAtby1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwOwogIC1tcy1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwOwogIGJvcmRlci1yYWRpdXM6IDE1cHggMTVweCAwIDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW46IC0xcHg7Cn0KLmJsb2dfX3Bvc3QtdGh1bWItdHdvIGltZyB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAyNTBweDsKICBvYmplY3QtZml0OiBjb3ZlcjsKfQouYmxvZ19fcG9zdC10aHVtYi10aHJlZSB7CiAgbWFyZ2luLWJvdHRvbTogMzVweDsKfQouYmxvZ19fcG9zdC10aHVtYi1mb3VyIHsKICBtYXJnaW46IC0xcHggLTFweCAwIC0xcHg7Cn0KLmJsb2dfX3Bvc3QtdGh1bWItZm91ciBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweCAxNXB4IDAgMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHggMTVweCAwIDA7CiAgLW8tYm9yZGVyLXJhZGl1czogMTVweCAxNXB4IDAgMDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTVweCAxNXB4IDAgMDsKICBib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjcwcHg7CiAgb2JqZWN0LWZpdDogY292ZXI7Cn0KLmJsb2dfX3Bvc3QtY29udGVudC10d28gewogIHBhZGRpbmc6IDMwcHggMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmJsb2dfX3Bvc3QtY29udGVudC10d28gewogICAgcGFkZGluZzogMzBweCAyMnB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYmxvZ19fcG9zdC1jb250ZW50LXR3byB7CiAgICBwYWRkaW5nOiAzMHB4IDMwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19wb3N0LWNvbnRlbnQtdHdvIHsKICAgIHBhZGRpbmc6IDI1cHggMjBweDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmJsb2dfX3Bvc3QtY29udGVudC10d28gewogICAgcGFkZGluZzogMzBweCAzMHB4OwogIH0KfQouYmxvZ19fcG9zdC1jb250ZW50LXR3byAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1zZW1pLWJvbGQpOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19wb3N0LWNvbnRlbnQtdHdvIC50aXRsZSB7CiAgICBmb250LXNpemU6IDIycHg7CiAgfQp9Ci5ibG9nX19wb3N0LWNvbnRlbnQtdHdvIC5ibG9nLXBvc3QtbWV0YSB7CiAgbWFyZ2luLWJvdHRvbTogMjJweDsKfQouYmxvZ19fcG9zdC1jb250ZW50LXR3byAuYmxvZy1hdmF0YXIgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmJsb2dfX3Bvc3QtY29udGVudC10aHJlZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5ibG9nX19wb3N0LWNvbnRlbnQtdGhyZWUgLnBvc3QtdGFnIHsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZGlzcGxheTogYmxvY2s7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAxOHB4OwogIHRvcDogLTUxcHg7CiAgei1pbmRleDogMjsKICBwYWRkaW5nOiA4cHggMTBweDsKfQouYmxvZ19fcG9zdC1jb250ZW50LXRocmVlIC5wb3N0LXRhZzpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouYmxvZ19fcG9zdC1jb250ZW50LXRocmVlIC5idG4gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgcGFkZGluZzogMTZweCAyNHB4Owp9Ci5ibG9nX19wb3N0LWNvbnRlbnQtdGhyZWUgLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5ibG9nX19wb3N0LWNvbnRlbnQtZm91ciB7CiAgcGFkZGluZzogMjVweCAzMHB4IDQwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5ibG9nX19wb3N0LWNvbnRlbnQtZm91ciB7CiAgICBwYWRkaW5nOiAyNXB4IDI1cHggMzBweDsKICB9Cn0KLmJsb2dfX3Bvc3QtY29udGVudC1mb3VyIC50aXRsZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQouYmxvZ19fcG9zdC10YWctdHdvIHsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctY29sb3ItZ3JheS0yKTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDE7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHBhZGRpbmc6IDdweCAxMHB4Owp9Ci5ibG9nX19wb3N0LXRhZy10d286aG92ZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5ibG9nX19wb3N0LXRhZy10aHJlZSB7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgY29sb3I6ICM5Nzk4QUI7CiAgbGluZS1oZWlnaHQ6IDE7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQouYmxvZy1hdmF0YXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDI0cHg7Cn0KLmJsb2ctYXZhdGFyIC5hdmF0YXItdGh1bWIgewogIHdpZHRoOiAzNnB4OwogIGZsZXg6IDAgMCBhdXRvOwp9Ci5ibG9nLWF2YXRhciAuYXZhdGFyLXRodW1iIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHdpZHRoOiAxMDAlOwogIG9iamVjdC1maXQ6IGNvdmVyOwp9Ci5ibG9nLWF2YXRhciAuYXZhdGFyLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiAjOTU5N0M4Owp9Ci5ibG9nLWF2YXRhciAuYXZhdGFyLWNvbnRlbnQgcCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKfQouYmxvZy1wb3N0LW1ldGEgLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDE1cHggMjBweDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLmJsb2ctcG9zdC1tZXRhIC5saXN0LXdyYXAgbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA4cHg7Cn0KLmJsb2ctcG9zdC1tZXRhIC5saXN0LXdyYXAgbGkgaSB7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5ibG9nLXBvc3QtbWV0YSAuYnRuIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIHBhZGRpbmc6IDE2cHggMjBweDsKfQouYmxvZy1wb3N0LW1ldGEgLmJ0bjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5ibG9nLXBvc3QtbWV0YS10d28gLmxpc3Qtd3JhcCBsaSB7CiAgY29sb3I6ICM5Nzk4QUI7Cn0KLmJsb2ctcG9zdC1tZXRhLXR3byAubGlzdC13cmFwIGxpIGkgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouYmxvZy1wb3N0LW1ldGEtdHdvIC5saXN0LXdyYXAgbGkgYSB7CiAgY29sb3I6ICM5Nzk4QUI7Cn0KLmJsb2ctcG9zdC1tZXRhLXR3byAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouYmxvZ19faW5uZXItd3JhcCAucm93IC5jb2wtNzAgewogIHdpZHRoOiA3MC41JTsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmJsb2dfX2lubmVyLXdyYXAgLnJvdyAuY29sLTcwIHsKICAgIHdpZHRoOiA2Ny41JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJsb2dfX2lubmVyLXdyYXAgLnJvdyAuY29sLTcwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYmxvZ19faW5uZXItd3JhcCAucm93IC5jb2wtMzAgewogIHdpZHRoOiAyOS41JTsKICBmbGV4OiAwIDAgYXV0bzsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmJsb2dfX2lubmVyLXdyYXAgLnJvdyAuY29sLTMwIHsKICAgIHdpZHRoOiAzMi41JTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmJsb2dfX2lubmVyLXdyYXAgLnJvdyAuY29sLTMwIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYmxvZ19fc2lkZWJhciB7CiAgbWFyZ2luLWxlZnQ6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5ibG9nX19zaWRlYmFyIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuYmxvZ19fc2lkZWJhciB7CiAgICBtYXJnaW4tdG9wOiAxMDBweDsKICB9Cn0KLmJsb2ctc2hhcGUtd3JhcCBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKfQouYmxvZy1zaGFwZS13cmFwIGltZzpudGgtY2hpbGQoMSkgewogIGxlZnQ6IDA7CiAgdG9wOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nLXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgxKSB7CiAgICB3aWR0aDogMjAwcHg7CiAgfQp9Ci5ibG9nLXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nLXNoYXBlLXdyYXAgaW1nOm50aC1jaGlsZCgyKSB7CiAgICB3aWR0aDogMjAwcHg7CiAgfQp9Ci5ibG9nX19kZXRhaWxzLWFyZWEgewogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJsb2dfX2RldGFpbHMtYXJlYSB7CiAgICBwYWRkaW5nOiAxMDBweCAwOwogIH0KfQouYmxvZ19fZGV0YWlscy10aHVtYiB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouYmxvZ19fZGV0YWlscy10aHVtYiBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIG1pbi1oZWlnaHQ6IDI1MHB4OwogIG9iamVjdC1maXQ6IGNvdmVyOwp9Ci5ibG9nX19kZXRhaWxzLWNvbnRlbnQgPiAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAzNnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWNvbnRlbnQgPiAudGl0bGUgewogICAgZm9udC1zaXplOiAzMnB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZ19fZGV0YWlscy1jb250ZW50ID4gLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjhweDsKICB9Cn0KLmJsb2dfX2RldGFpbHMtY29udGVudCAuYmxvZy1wb3N0LW1ldGEgewogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLmJsb2dfX2RldGFpbHMtY29udGVudCAuYmxvZy1wb3N0LW1ldGEgLmJsb2ctYXZhdGFyIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5ibG9nX19kZXRhaWxzLWNvbnRlbnQgPiBwIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5ibG9nX19kZXRhaWxzLWNvbnRlbnQgLnRpdGxlLXR3byB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXNpemU6IDMwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZ19fZGV0YWlscy1jb250ZW50IC50aXRsZS10d28gewogICAgZm9udC1zaXplOiAyNnB4OwogIH0KfQouYmxvZ19fZGV0YWlscy1pbm5lciB7CiAgbWFyZ2luOiAzNXB4IDA7Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTQ2IHsKICB3aWR0aDogNDYlOwogIGZsZXg6IDAgMCBhdXRvOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWlubmVyIC5yb3cgLmNvbC00NiB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXIgLnJvdyAuY29sLTU0IHsKICB3aWR0aDogNTQlOwogIGZsZXg6IDAgMCBhdXRvOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWlubmVyIC5yb3cgLmNvbC01NCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXItdGh1bWIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuYmxvZ19fZGV0YWlscy1pbm5lci10aHVtYiB7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIH0KfQouYmxvZ19fZGV0YWlscy1pbm5lci10aHVtYiBpbWcgewogIHdpZHRoOiAxMDAlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDsKICBib3JkZXItcmFkaXVzOiAxMHB4Owp9Ci5ibG9nX19kZXRhaWxzLWlubmVyLXRodW1iIC5wbGF5LWJ0biB7CiAgd2lkdGg6IDYycHg7CiAgaGVpZ2h0OiA2MnB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGZvbnQtc2l6ZTogMThweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtby1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXItdGh1bWIgLnBsYXktYnRuOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXItY29udGVudCAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDEycHg7CiAgZm9udC1zaXplOiAzMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWlubmVyLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjZweDsKICB9Cn0KLmJsb2dfX2RldGFpbHMtaW5uZXItY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHdpZHRoOiA5NSU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWlubmVyLWNvbnRlbnQgcCB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmJsb2dfX2RldGFpbHMtYm90dG9tIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI0U3RTdFNzsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U3RTdFNzsKICBwYWRkaW5nOiAyMHB4IDA7CiAgbWFyZ2luLXRvcDogNDBweDsKICBtYXJnaW4tYm90dG9tOiA3MHB4Owp9Ci5ibG9nX19kZXRhaWxzLWJvdHRvbSAucG9zdC10YWdzIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDEwcHg7Cn0KLmJsb2dfX2RldGFpbHMtYm90dG9tIC5wb3N0LXRhZ3MgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTRweDsKfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3QtdGFncyAubGlzdC13cmFwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDZweDsKfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3QtdGFncyAubGlzdC13cmFwIGxpIGEgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgcGFkZGluZzogN3B4IDE3cHg7CiAgZGlzcGxheTogYmxvY2s7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBmb250LXNpemU6IDE1cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3QtdGFncyAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3Qtc2hhcmUgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogMTBweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5ibG9nX19kZXRhaWxzLWJvdHRvbSAucG9zdC1zaGFyZSB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICBtYXJnaW4tdG9wOiAyMHB4OwogIH0KfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3Qtc2hhcmUgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTRweDsKfQouYmxvZ19fZGV0YWlscy1ib3R0b20gLnBvc3Qtc2hhcmUgLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDE1cHg7Cn0KLmJsb2dfX2RldGFpbHMtYm90dG9tIC5wb3N0LXNoYXJlIC5saXN0LXdyYXAgbGkgYSB7CiAgZm9udC1zaXplOiAyMHB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci5ibG9nX19kZXRhaWxzLWJvdHRvbSAucG9zdC1zaGFyZSAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouYmxvZ19fYXZhdGFyLXdyYXAgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTJweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEycHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMTJweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMTJweDsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIHBhZGRpbmc6IDQycHggNDBweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIGdhcDogMzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmJsb2dfX2F2YXRhci13cmFwIHsKICAgIHBhZGRpbmc6IDM1cHggMjVweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmJsb2dfX2F2YXRhci13cmFwIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogMjBweDsKICAgIHBhZGRpbmc6IDMwcHggMjVweDsKICB9Cn0KLmJsb2dfX2F2YXRhci1pbWcgewogIHdpZHRoOiAxMTVweDsKICBmbGV4OiAwIDAgYXV0bzsKfQouYmxvZ19fYXZhdGFyLWltZyBpbWcgewogIHdpZHRoOiAxMDAlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQouYmxvZ19fYXZhdGFyLWluZm8gLmRlc2lnbmF0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE1cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgbGluZS1oZWlnaHQ6IDE7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5ibG9nX19hdmF0YXItaW5mbyAubmFtZSB7CiAgZm9udC1zaXplOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDE4cHg7Cn0KLmJsb2dfX2F2YXRhci1pbmZvIHAgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KCmJsb2NrcXVvdGUgewogIG1hcmdpbjogNTBweCA1MHB4IDYwcHg7CiAgYmFja2dyb3VuZDogI0Y4RkFGRjsKICBwYWRkaW5nOiA1MHB4IDEwMHB4IDUwcHggNTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgYmxvY2txdW90ZSB7CiAgICBwYWRkaW5nOiA1MHB4IDEwMHB4IDUwcHggNDBweDsKICAgIG1hcmdpbjogNDBweCAwIDUwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIGJsb2NrcXVvdGUgewogICAgcGFkZGluZzogNDBweCA0MHB4IDQwcHggMzBweDsKICB9Cn0KYmxvY2txdW90ZTo6YWZ0ZXIgewogIGNvbnRlbnQ6ICJcZjEwZSI7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LXNpemU6IDUycHg7CiAgY29sb3I6ICNFMkU1RjY7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZm9udC1mYW1pbHk6IHZhcigtLXRnLWljb24tZm9udC1mYW1pbHkpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMzNweDsKICB0b3A6IDI3cHg7CiAgei1pbmRleDogLTE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgYmxvY2txdW90ZTo6YWZ0ZXIgewogICAgZm9udC1zaXplOiA0MHB4OwogICAgcmlnaHQ6IDIwcHg7CiAgICB0b3A6IDE1cHg7CiAgfQp9CmJsb2NrcXVvdGU6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHdpZHRoOiA2cHg7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CmJsb2NrcXVvdGUgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDIwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWZhbWlseTogdmFyKC0tdGctaGVhZGluZy1mb250LWZhbWlseSk7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgYmxvY2txdW90ZSBwIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICB9Cn0KCi5wbGF5LWJ0bjo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVooMCkgc2NhbGUoMSk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVooMCkgc2NhbGUoMSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWigwKSBzY2FsZSgxKTsKICBhbmltYXRpb246IHB1bHNlLWJvcmRlciAxNTAwbXMgZWFzZS1vdXQgaW5maW5pdGU7Cn0KCi5zaWRlYmFyX193aWRnZXQgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci02KTsKICBwYWRkaW5nOiAyNnB4IDMwcHggMzBweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBtYXJnaW4tYm90dG9tOiA0MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuc2lkZWJhcl9fd2lkZ2V0IHsKICAgIHBhZGRpbmc6IDI2cHggMjBweCAzMHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuc2lkZWJhcl9fd2lkZ2V0IHsKICAgIHBhZGRpbmc6IDI2cHggMzBweCAzMHB4OwogIH0KfQouc2lkZWJhcl9fd2lkZ2V0Omxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnNpZGViYXJfX3dpZGdldC1zZWFyY2ggewogIGJvcmRlcjogbm9uZTsKICBwYWRkaW5nOiAwOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgLW8tYm9yZGVyLXJhZGl1czogMDsKICAtbXMtYm9yZGVyLXJhZGl1czogMDsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5zaWRlYmFyX19zZWFyY2ggZm9ybSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5zaWRlYmFyX19zZWFyY2ggZm9ybSBpbnB1dCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTYpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDZweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNnB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgcGFkZGluZzogMTRweCA2MHB4IDE0cHggMjBweDsKICBoZWlnaHQ6IDUwcHg7Cn0KLnNpZGViYXJfX3NlYXJjaCBmb3JtIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgY29sb3I6IHZhcigtLXRnLWJvcmRlci01KTsKICBmb250LXNpemU6IDE0cHg7Cn0KLnNpZGViYXJfX3NlYXJjaCBmb3JtIGJ1dHRvbiB7CiAgYm9yZGVyOiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogM3B4OwogIHRvcDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICB3aWR0aDogNDVweDsKICBoZWlnaHQ6IDQ1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQouc2lkZWJhcl9fc2VhcmNoIGZvcm0gYnV0dG9uIHN2ZyB7CiAgd2lkdGg6IDIwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zaWRlYmFyX19zZWFyY2ggZm9ybSBidXR0b246aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5zaWRlYmFyX193aWRnZXQtdGl0bGUgewogIGZvbnQtc2l6ZTogMjJweDsKICBmb250LXdlaWdodDogNjAwOwogIG1hcmdpbi1ib3R0b206IDIycHg7CiAgcGFkZGluZy1ib3R0b206IDEycHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5zaWRlYmFyX193aWRnZXQtdGl0bGU6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwogIHdpZHRoOiAzMHB4OwogIGhlaWdodDogNHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouc2lkZWJhcl9fY2F0LWxpc3QgLmxpc3Qtd3JhcCBsaSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci02KTsKICBwYWRkaW5nLWJvdHRvbTogMTdweDsKICBtYXJnaW4tYm90dG9tOiAxN3B4Owp9Ci5zaWRlYmFyX19jYXQtbGlzdCAubGlzdC13cmFwIGxpIGEgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIGdhcDogNXB4Owp9Ci5zaWRlYmFyX19jYXQtbGlzdCAubGlzdC13cmFwIGxpIGEgaSB7CiAgbGluZS1oZWlnaHQ6IDA7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib3JkZXItNSk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0IDBzOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQouc2lkZWJhcl9fY2F0LWxpc3QgLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnNpZGViYXJfX2NhdC1saXN0IC5saXN0LXdyYXAgbGkgYTpob3ZlciBpIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLnNpZGViYXJfX2NhdC1saXN0IC5saXN0LXdyYXAgbGk6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICBwYWRkaW5nLWJvdHRvbTogMDsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5zaWRlYmFyX19wb3N0LWl0ZW0gewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLnNpZGViYXJfX3Bvc3QtaXRlbTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5zaWRlYmFyX19wb3N0LXRodW1iIHsKICB3aWR0aDogODBweDsKICBmbGV4OiAwIDAgYXV0bzsKfQouc2lkZWJhcl9fcG9zdC10aHVtYiBpbWcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDRweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQouc2lkZWJhcl9fcG9zdC1jb250ZW50IC50aXRsZSB7CiAgZm9udC1zaXplOiAxN3B4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQouc2lkZWJhcl9fcG9zdC1jb250ZW50IC5kYXRlIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiAjODM4NDlFOwogIGZvbnQtc2l6ZTogMTVweDsKICBnYXA6IDVweDsKfQouc2lkZWJhcl9fcG9zdC1jb250ZW50IC5kYXRlIGkgewogIGxpbmUtaGVpZ2h0OiAwOwp9Ci5zaWRlYmFyX190YWctbGlzdCAubGlzdC13cmFwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDZweDsKfQouc2lkZWJhcl9fdGFnLWxpc3QgLmxpc3Qtd3JhcCBsaSBhIHsKICBmb250LXNpemU6IDE1cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIHBhZGRpbmc6IDdweCAxNnB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBkaXNwbGF5OiBibG9jazsKfQouc2lkZWJhcl9fdGFnLWxpc3QgLmxpc3Qtd3JhcCBsaSBhOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoKLmNvbW1lbnRzLXdyYXAtdGl0bGUgewogIGZvbnQtc2l6ZTogMjRweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5jb21tZW50cy13cmFwIC5sYXRlc3QtY29tbWVudHMgewogIG1hcmdpbi1ib3R0b206IDgwcHg7Cn0KLmNvbW1lbnRzLXdyYXAgLmxhdGVzdC1jb21tZW50cyAuY2hpbGRyZW4gewogIG1hcmdpbjogMCAwIDAgNDVweDsKICBwYWRkaW5nOiAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jb21tZW50cy13cmFwIC5sYXRlc3QtY29tbWVudHMgLmNoaWxkcmVuIHsKICAgIG1hcmdpbjogMDsKICB9Cn0KLmNvbW1lbnRzLWJveCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkRDRTk7CiAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMzVweDsKICBnYXA6IDI1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvbW1lbnRzLWJveCB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBnYXA6IDIwcHg7CiAgfQp9Ci5jb21tZW50cy1hdmF0YXIgewogIHdpZHRoOiAxMTVweDsKICBmbGV4OiAwIDAgYXV0bzsKfQouY29tbWVudHMtYXZhdGFyIGltZyB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwp9Ci5jb21tZW50cy10ZXh0IC5hdmF0YXItbmFtZSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouY29tbWVudHMtdGV4dCAuYXZhdGFyLW5hbWUgLm5hbWUgewogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLmNvbW1lbnRzLXRleHQgLmF2YXRhci1uYW1lIHNwYW4gewogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zaXplOiAxNXB4OwogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouY29tbWVudHMtdGV4dCBwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5jb21tZW50cy10ZXh0IC5yZXBseS1idG4gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LXNpemU6IDE0cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDZweCAxN3B4OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNXB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9Ci5jb21tZW50cy10ZXh0IC5yZXBseS1idG46aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgouY29tbWVudC1yZXNwb25kIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogOHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA4cHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIHBhZGRpbmc6IDM1cHggNDBweCA1MHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5jb21tZW50LXJlc3BvbmQgewogICAgcGFkZGluZzogMzVweCAyNXB4IDUwcHg7CiAgfQp9Ci5jb21tZW50LXJlcGx5LXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGZvbnQtc2l6ZTogMzBweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5jb21tZW50LXJlcGx5LXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjZweDsKICB9Cn0KLmNvbW1lbnQtZm9ybSAuY29tbWVudC1ub3RlcyB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQouY29tbWVudC1mb3JtIC5mb3JtLWdycCB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQouY29tbWVudC1mb3JtIC5mb3JtLWdycCB0ZXh0YXJlYSwgLmNvbW1lbnQtZm9ybSAuZm9ybS1ncnAgaW5wdXQgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktMSk7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIHBhZGRpbmc6IDEycHggMTVweDsKICBoZWlnaHQ6IDUwcHg7CiAgZGlzcGxheTogYmxvY2s7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNnB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5jb21tZW50LWZvcm0gLmZvcm0tZ3JwIHRleHRhcmVhOjpwbGFjZWhvbGRlciwgLmNvbW1lbnQtZm9ybSAuZm9ybS1ncnAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc2l6ZTogMTVweDsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS00KTsKfQouY29tbWVudC1mb3JtIC5mb3JtLWdycCB0ZXh0YXJlYSB7CiAgbWluLWhlaWdodDogMTMwcHg7CiAgbWF4LWhlaWdodDogMTMwcHg7Cn0KLmNvbW1lbnQtZm9ybSAuY2hlY2tib3gtZ3JwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1hcmdpbjogMjVweCAwOwp9Ci5jb21tZW50LWZvcm0gLmNoZWNrYm94LWdycCBpbnB1dCB7CiAgd2lkdGg6IDIycHg7CiAgbWFyZ2luLXJpZ2h0OiA5cHg7CiAgaGVpZ2h0OiAyMnB4OwogIGN1cnNvcjogcG9pbnRlcjsKfQouY29tbWVudC1mb3JtIC5jaGVja2JveC1ncnAgbGFiZWwgewogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQouY29tbWVudC1mb3JtIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9CgoucGFnaW5hdGlvbi13cmFwIC5wYWdpbmF0aW9uIHsKICBnYXA6IDZweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnBhZ2luYXRpb24td3JhcCAucGFnaW5hdGlvbiAucGFnZS1saW5rIHsKICBtYXJnaW4tbGVmdDogMDsKICBwYWRkaW5nOiAwIDA7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAxOwogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogNTBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci0xKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKICAtby1ib3JkZXItcmFkaXVzOiA1cHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KLnBhZ2luYXRpb24td3JhcCAucGFnaW5hdGlvbiAucGFnZS1saW5rOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KLnBhZ2luYXRpb24td3JhcCAucGFnaW5hdGlvbiAucGFnZS1saW5rOmZvY3VzIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiBub25lOwp9Ci5wYWdpbmF0aW9uLXdyYXAgLnBhZ2luYXRpb24gLnBhZ2UtaXRlbS5hY3RpdmUgLnBhZ2UtbGluayB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwp9CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAyMC4gQ29udGFjdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLmNvbnRhY3RfX2FyZWEgewogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvbnRhY3RfX2FyZWEgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLmNvbnRhY3QtbWFwIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDQ5MHB4OwogIG1hcmdpbi1ib3R0b206IDcwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmNvbnRhY3QtbWFwIHsKICAgIGhlaWdodDogNDAwcHg7CiAgfQp9Ci5jb250YWN0LW1hcCBpZnJhbWUgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuY29udGFjdF9fY29udGVudCB7CiAgICBtYXJnaW4tYm90dG9tOiA1MHB4OwogIH0KfQouY29udGFjdF9faW5mbyAubGlzdC13cmFwIGxpIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMThweDsKICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jb250YWN0X19pbmZvIC5saXN0LXdyYXAgbGkgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9Cn0KLmNvbnRhY3RfX2luZm8gLmxpc3Qtd3JhcCBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jb250YWN0X19pbmZvIC5saXN0LXdyYXAgbGkgLmljb24gewogIHdpZHRoOiA2MHB4OwogIGhlaWdodDogNjBweDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGxpbmUtaGVpZ2h0OiAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGZvbnQtc2l6ZTogMzBweDsKICBmbGV4OiAwIDAgYXV0bzsKfQouY29udGFjdF9faW5mbyAubGlzdC13cmFwIGxpIC5jb250ZW50IC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtc2l6ZTogMjBweDsKICBmb250LXdlaWdodDogNjAwOwp9Ci5jb250YWN0X19pbmZvIC5saXN0LXdyYXAgbGkgLmNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXdlaWdodDogNTAwOwp9Ci5jb250YWN0X19pbmZvIC5saXN0LXdyYXAgbGkgLmNvbnRlbnQgYSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLmNvbnRhY3RfX2luZm8gLmxpc3Qtd3JhcCBsaSAuY29udGVudCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmNvbnRhY3RfX2Zvcm0td3JhcCB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogOHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA4cHg7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIHBhZGRpbmc6IDM1cHggNDBweCA0MHB4OwogIG1hcmdpbi1sZWZ0OiAzMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuY29udGFjdF9fZm9ybS13cmFwIHsKICAgIHBhZGRpbmc6IDM1cHggMjBweCA0MHB4OwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQp9Ci5jb250YWN0X19mb3JtLXdyYXAgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC1zaXplOiAzMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmNvbnRhY3RfX2Zvcm0td3JhcCAudGl0bGUgewogICAgZm9udC1zaXplOiAyOHB4OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogIH0KfQouY29udGFjdF9fZm9ybS13cmFwIHAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLmNvbnRhY3RfX2Zvcm0td3JhcCBmb3JtIC5yb3cgewogIC0tYnMtZ3V0dGVyLXg6IDEwcHg7Cn0KLmNvbnRhY3RfX2Zvcm0td3JhcCBmb3JtIC5mb3JtLWdycCB7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouY29udGFjdF9fZm9ybS13cmFwIGZvcm0gLmZvcm0tZ3JwIGlucHV0IHsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1jb2xvci1ncmF5LTEpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogOHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDhweDsKICAtbXMtYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBwYWRkaW5nOiAxNHB4IDE1cHg7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGhlaWdodDogNTBweDsKfQouY29udGFjdF9fZm9ybS13cmFwIGZvcm0gLmZvcm0tZ3JwIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQouY29udGFjdF9fZm9ybS13cmFwIGZvcm0gLmZvcm0tZ3JwIHRleHRhcmVhIHsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1jb2xvci1ncmF5LTEpOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogOHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDhweDsKICAtbXMtYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBwYWRkaW5nOiAxNHB4IDE1cHg7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1zZWNvbmRhcnkpOwogIGRpc3BsYXk6IGJsb2NrOwogIG1pbi1oZWlnaHQ6IDEzMHB4OwogIG1heC1oZWlnaHQ6IDEzMHB4Owp9Ci5jb250YWN0X19mb3JtLXdyYXAgZm9ybSAuZm9ybS1ncnAgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Ci5jb250YWN0X19mb3JtLXdyYXAgZm9ybSAuY2hlY2tib3gtZ3JwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICBtYXJnaW46IDE1cHggMCAyNXB4Owp9Ci5jb250YWN0X19mb3JtLXdyYXAgZm9ybSAuY2hlY2tib3gtZ3JwIGlucHV0IHsKICB3aWR0aDogMjJweDsKICBtYXJnaW4tcmlnaHQ6IDlweDsKICBoZWlnaHQ6IDIycHg7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5jb250YWN0X19mb3JtLXdyYXAgZm9ybSAuY2hlY2tib3gtZ3JwIGxhYmVsIHsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmNvbnRhY3RfX2Zvcm0td3JhcCBmb3JtIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9CgouYWpheC1yZXNwb25zZS5lcnJvciwgLmFqYXgtcmVzcG9uc2Uuc3VjY2VzcyB7CiAgbWFyZ2luOiAyMHB4IDAgMCAhaW1wb3J0YW50Owp9Ci5hamF4LXJlc3BvbnNlLmVycm9yIHsKICBjb2xvcjogcmVkOwp9Ci5hamF4LXJlc3BvbnNlLnN1Y2Nlc3MgewogIGNvbG9yOiBncmVlbjsKfQoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgMjIuIDQwNCBFcnJvcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLmVycm9yLWFyZWEgewogIHBhZGRpbmc6IDEyMHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmVycm9yLWFyZWEgewogICAgcGFkZGluZzogMTAwcHggMDsKICB9Cn0KLmVycm9yLWNvbnRlbnQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZXJyb3ItY29udGVudCBzdmcgewogIHdpZHRoOiA2NDhweDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgbWFyZ2luLWJvdHRvbTogNDVweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgc3ZnIHsKICAgIHdpZHRoOiA2MDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgc3ZnIHsKICAgIHdpZHRoOiA1MDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgc3ZnIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9Cn0KLmVycm9yLWNvbnRlbnQgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGZvbnQtc2l6ZTogNDhweDsKfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogNDJweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogNDBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmVycm9yLWNvbnRlbnQgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzZweDsKICB9Cn0KLmVycm9yLWNvbnRlbnQgLnRpdGxlIHAgewogIG1hcmdpbi1ib3R0b206IDM1cHg7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDIzLiBGb290ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi5mb290ZXItYXJlYSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmZvb3Rlcl9fYXJlYS10d28gewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWRhcmstYmx1ZSk7Cn0KLmZvb3Rlcl9fYXJlYS10aHJlZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZGFyay1ibHVlKTsKfQouZm9vdGVyX19hcmVhLWZvdXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLWNvbG9yLWRhcmstYmx1ZSk7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7Cn0KLmZvb3Rlci10b3AgewogIHBhZGRpbmc6IDEyMHB4IDAgNzBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuZm9vdGVyLXRvcCB7CiAgICBwYWRkaW5nOiAxMDBweCAwIDUwcHg7CiAgfQp9Ci5mb290ZXItdG9wIC5yb3cgPiAqOm50aC1jaGlsZCgyKSAuZm9vdGVyLXdpZGdldCB7CiAgbWFyZ2luLWxlZnQ6IDUwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmZvb3Rlci10b3AgLnJvdyA+ICo6bnRoLWNoaWxkKDIpIC5mb290ZXItd2lkZ2V0IHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQouZm9vdGVyLXRvcCAucm93ID4gKjpudGgtY2hpbGQoMykgLmZvb3Rlci13aWRnZXQgewogIG1hcmdpbi1sZWZ0OiA3MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5mb290ZXItdG9wIC5yb3cgPiAqOm50aC1jaGlsZCgzKSAuZm9vdGVyLXdpZGdldCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KLmZvb3Rlcl9fdG9wLXR3byB7CiAgcGFkZGluZzogNjBweCAwIDMwcHg7Cn0KLmZvb3Rlcl9fdG9wLXR3byAuZnctdGl0bGUgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouZm9vdGVyX190b3AtdHdvIC5mb290ZXItbGluay1saXN0IC5saXN0LXdyYXAgbGkgYSB7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0yKTsKfQouZm9vdGVyX190b3AtdHdvIC5yb3cgPiAqOm50aC1jaGlsZCgzKSAuZm9vdGVyLXdpZGdldCB7CiAgbWFyZ2luLWxlZnQ6IDY1cHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLmZvb3Rlcl9fdG9wLXR3byAucm93ID4gKjpudGgtY2hpbGQoMykgLmZvb3Rlci13aWRnZXQgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQp9Ci5mb290ZXJfX3RvcC10aHJlZSB7CiAgcGFkZGluZzogMTEwcHggMCA3MHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mb290ZXJfX3RvcC10aHJlZSB7CiAgICBwYWRkaW5nOiA5MHB4IDAgNDBweDsKICB9Cn0KLmZvb3Rlcl9fdG9wLXRocmVlIC5mdy10aXRsZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5mb290ZXJfX3RvcC10aHJlZSAuZm9vdGVyLWxpbmstbGlzdCAubGlzdC13cmFwIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwp9Ci5mb290ZXJfX3RvcC10aHJlZSAuZm9vdGVyLWluZm8tbGlzdCAubGlzdC13cmFwIGxpIC5pY29uLCAuZm9vdGVyX190b3AtdGhyZWUgLmZvb3Rlci1pbmZvLWxpc3QgLmxpc3Qtd3JhcCBsaSBwLCAuZm9vdGVyX190b3AtdGhyZWUgLmZvb3Rlci1pbmZvLWxpc3QgLmxpc3Qtd3JhcCBsaSBhIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0yKTsKfQouZm9vdGVyLXdpZGdldCB7CiAgbWFyZ2luLWJvdHRvbTogNDBweDsKfQouZm9vdGVyLWNvbnRlbnQgcCB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQouZm9vdGVyX19jb250ZW50LXR3byB7CiAgd2lkdGg6IDgwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZm9vdGVyX19jb250ZW50LXR3byB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmZvb3Rlcl9fY29udGVudC10d28gPiBwIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0yKTsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLmZvb3Rlci1zb2NpYWwgLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDEwcHg7Cn0KLmZvb3Rlci1zb2NpYWwgLmxpc3Qtd3JhcCBsaSBhIHsKICB3aWR0aDogNDVweDsKICBoZWlnaHQ6IDQ1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiAjRUFGMUY0OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDVweDsKICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwp9Ci5mb290ZXItc29jaWFsIC5saXN0LXdyYXAgbGkgYTpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLmZvb3Rlcl9fc29jaWFsLXR3byB7CiAgZmxleC1ncm93OiAxOwp9Ci5mb290ZXJfX3NvY2lhbC10d28gLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogIGdhcDogMTBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZm9vdGVyX19zb2NpYWwtdHdvIC5saXN0LXdyYXAgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQp9Ci5mb290ZXJfX3NvY2lhbC10d28gLmxpc3Qtd3JhcCBsaSBhIHsKICB3aWR0aDogNDVweDsKICBoZWlnaHQ6IDQ1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiAjMjMyNTYzOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KLmZvb3Rlcl9fc29jaWFsLXR3byAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouZm9vdGVyX19zb2NpYWwtdGhyZWUgLnRpdGxlIHsKICBkaXNwbGF5OiBibG9jazsKICBjb2xvcjogIzczNzVBNTsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5mb290ZXJfX3NvY2lhbC10aHJlZSAubGlzdC13cmFwIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTBweDsKfQouZm9vdGVyX19zb2NpYWwtdGhyZWUgLmxpc3Qtd3JhcCBsaSBhIHsKICB3aWR0aDogNDVweDsKICBoZWlnaHQ6IDQ1cHg7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiAjMjMyNTYzOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KLmZvb3Rlcl9fc29jaWFsLXRocmVlIC5saXN0LXdyYXAgbGkgYTpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5mb290ZXItaW5mby1saXN0IC5saXN0LXdyYXAgbGkgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGdhcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5mb290ZXItaW5mby1saXN0IC5saXN0LXdyYXAgbGkgLmljb24gewogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMDsKfQouZm9vdGVyLWluZm8tbGlzdCAubGlzdC13cmFwIGxpIGEgewogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQouZm9vdGVyLWluZm8tbGlzdCAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouZm9vdGVyLWluZm8tbGlzdCAubGlzdC13cmFwIGxpOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmZvb3Rlci1pbmZvLWxpc3QgLmxpc3Qtd3JhcCBsaSAuY29udGVudCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5mb290ZXItbGluay1saXN0IC5saXN0LXdyYXAgbGkgewogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLmZvb3Rlci1saW5rLWxpc3QgLmxpc3Qtd3JhcCBsaTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5mb290ZXItbGluay1saXN0IC5saXN0LXdyYXAgbGkgYSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZm9vdGVyLWxpbmstbGlzdCAubGlzdC13cmFwIGxpIGE6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAtMXB4OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMXB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTsKICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTsKICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGN1YmljLWJlemllcigwLjc0LCAwLjcyLCAwLjI3LCAwLjI0KTsKfQouZm9vdGVyLWxpbmstbGlzdCAubGlzdC13cmFwIGxpIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouZm9vdGVyLWxpbmstbGlzdCAubGlzdC13cmFwIGxpIGE6aG92ZXI6OmJlZm9yZSB7CiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDsKICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7Cn0KLmZvb3Rlci1pbnN0YWdyYW0gLmxpc3Qtd3JhcCB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogMTNweDsKfQouZm9vdGVyLWluc3RhZ3JhbSAubGlzdC13cmFwIGxpIGEgaW1nIHsKICB3aWR0aDogODVweDsKICBoZWlnaHQ6IDg1cHg7CiAgb2JqZWN0LWZpdDogY292ZXI7CiAgbWl4LWJsZW5kLW1vZGU6IGx1bWlub3NpdHk7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQouZm9vdGVyLWJvdHRvbSB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTEpOwogIHBhZGRpbmc6IDM1cHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuZm9vdGVyLWJvdHRvbSB7CiAgICBwYWRkaW5nOiAyNXB4IDA7CiAgfQp9Ci5mb290ZXJfX2JvdHRvbS10d28gewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjMjcyQTY4OwogIHBhZGRpbmc6IDQwcHggMDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAuZm9vdGVyX19ib3R0b20tdHdvIHsKICAgIHBhZGRpbmc6IDMwcHggMDsKICB9Cn0KLmZvb3Rlcl9fYm90dG9tLXRocmVlIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgIzI3MkE2ODsKICBwYWRkaW5nOiA0MHB4IDA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmZvb3Rlcl9fYm90dG9tLXRocmVlIHsKICAgIHBhZGRpbmc6IDI1cHggMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmZvb3Rlcl9fYm90dG9tLXRocmVlIC5mdy1sb2dvIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgfQp9Ci5mb290ZXJfX2JvdHRvbS10aHJlZSAuY29weXJpZ2h0LXRleHQgewogIHRleHQtYWxpZ246IHJpZ2h0Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mb290ZXJfX2JvdHRvbS10aHJlZSAuY29weXJpZ2h0LXRleHQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQouZm9vdGVyX19ib3R0b20tdGhyZWUgLmNvcHlyaWdodC10ZXh0IHAgewogIGNvbG9yOiAjNUY2MTk2Owp9Ci5mb290ZXJfX2JvdHRvbS10aHJlZSAuY29weXJpZ2h0LXRleHQgcCBhIHsKICBjb2xvcjogIzVGNjE5NjsKfQouZm9vdGVyX19ib3R0b20tZm91ciB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMyNzJBNjg7CiAgcGFkZGluZzogNjVweCAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5mb290ZXJfX2JvdHRvbS1mb3VyIHsKICAgIHBhZGRpbmc6IDI1cHggMDsKICB9Cn0KLmZvb3Rlcl9fYm90dG9tLWZvdXIgLmNvcHlyaWdodC10ZXh0IHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZm9vdGVyX19ib3R0b20tZm91ciAuY29weXJpZ2h0LXRleHQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQouZm9vdGVyX19ib3R0b20tZm91ciAuY29weXJpZ2h0LXRleHQgcCB7CiAgY29sb3I6ICM1RjYxOTY7Cn0KLmZvb3Rlcl9fYm90dG9tLWZvdXIgLmNvcHlyaWdodC10ZXh0IHAgYSB7CiAgY29sb3I6ICM1RjYxOTY7Cn0KLmZvb3Rlci1uZXdzbGV0dGVyIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbW96LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTVweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZm9vdGVyLW5ld3NsZXR0ZXIgewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmZvb3Rlci1uZXdzbGV0dGVyIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIH0KfQouZm9vdGVyLW5ld3NsZXR0ZXIgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMjBweDsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsKICAuZm9vdGVyLW5ld3NsZXR0ZXIgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICB9Cn0KLmZvb3Rlci1uZXdzbGV0dGVyIGZvcm0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbGV4LWdyb3c6IDE7Cn0KLmZvb3Rlci1uZXdzbGV0dGVyIGZvcm0gaW5wdXQgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci0xKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYm9yZGVyLXJhZGl1czogMzBweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDA7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7CiAgcGFkZGluZzogMTZweCAxNDBweCAxNnB4IDIycHg7CiAgaGVpZ2h0OiA1MHB4Owp9Ci5mb290ZXItbmV3c2xldHRlciBmb3JtIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNHB4OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogIGNvbG9yOiAjNjY3NTk0Owp9Ci5mb290ZXItbmV3c2xldHRlciAuYnRuIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYm9yZGVyLXJhZGl1czogMzBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgdG9wOiAwOwp9Ci5mb290ZXItbmV3c2xldHRlciAuYnRuOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouZm9vdGVyX19uZXdzbGV0dGVyLXR3byB7CiAgcGFkZGluZzogODBweCAwIDYwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNzJBNjg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmZvb3Rlcl9fbmV3c2xldHRlci10d28gewogICAgcGFkZGluZzogNjBweCAwIDUwcHg7CiAgfQp9Ci5mb290ZXJfX25ld3NsZXR0ZXItdGhyZWUgewogIHdpZHRoOiA5MCU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLmZvb3Rlcl9fbmV3c2xldHRlci10aHJlZSB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci10aHJlZSAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGZvbnQtc2l6ZTogMjRweDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICBmb250LXdlaWdodDogNjAwOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItdGhyZWUgLnRpdGxlIGJyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5mb290ZXJfX25ld3NsZXR0ZXItdGhyZWUgZm9ybSB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQouZm9vdGVyX19uZXdzbGV0dGVyLXRocmVlIGZvcm0gaW5wdXQgewogIGJhY2tncm91bmQ6ICMyMTIzNTY7CiAgYm9yZGVyOiBub25lOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMzBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMzBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMzBweDsKICBib3JkZXItcmFkaXVzOiAzMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBwYWRkaW5nOiAxNXB4IDI1cHg7CiAgaGVpZ2h0OiA1MHB4OwogIHdpZHRoOiAxMDAlOwogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci10aHJlZSBmb3JtIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgY29sb3I6ICM1OTVCODE7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci10aHJlZSBmb3JtIC5idG4gewogIHdpZHRoOiAxMDAlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMzBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMzBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMzBweDsKICBib3JkZXItcmFkaXVzOiAzMHB4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci5mb290ZXJfX25ld3NsZXR0ZXItdGhyZWUgZm9ybSAuYnRuOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouZm9vdGVyX19uZXdzbGV0dGVyLWZvdXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiAyNXB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItZm91ciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItZm91ciB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQp9Ci5mb290ZXJfX25ld3NsZXR0ZXItZm91ciAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDA7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGZvbnQtc2l6ZTogMjRweDsKfQouZm9vdGVyX19uZXdzbGV0dGVyLWZvdXIgZm9ybSB7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1vei1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDEwcHg7CiAgZmxleC1ncm93OiAxOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItZm91ciBmb3JtIHsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIH0KfQouZm9vdGVyX19uZXdzbGV0dGVyLWZvdXIgZm9ybSBpbnB1dCB7CiAgZmxleC1ncm93OiAxOwogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1vLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1zLWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYm9yZGVyLXJhZGl1czogMzBweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBwYWRkaW5nOiAxNXB4IDI1cHg7CiAgaGVpZ2h0OiA1MHB4Owp9Ci5mb290ZXJfX25ld3NsZXR0ZXItZm91ciBmb3JtIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgY29sb3I6ICM2Njc1OTQ7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci1mb3VyIGZvcm0gLmJ0biB7CiAgd2lkdGg6IDEyN3B4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMzBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW8tYm9yZGVyLXJhZGl1czogMzBweDsKICAtbXMtYm9yZGVyLXJhZGl1czogMzBweDsKICBib3JkZXItcmFkaXVzOiAzMHB4Owp9Ci5mb290ZXJfX25ld3NsZXR0ZXItZm91ciBmb3JtIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5mb290ZXJfX25ld3NsZXR0ZXItaW5uZXIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tb3otYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItaW5uZXIgewogICAgZmxleC13cmFwOiB3cmFwOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDMwcHg7CiAgfQp9Ci5mb290ZXJfX25ld3NsZXR0ZXItaW5uZXIgLnRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDI0cHg7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgd2lkdGg6IDIwJTsKICBtYXJnaW4tcmlnaHQ6IDMwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC5mb290ZXJfX25ld3NsZXR0ZXItaW5uZXIgLnRpdGxlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogIH0KfQouZm9vdGVyX19uZXdzbGV0dGVyLWlubmVyIGZvcm0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogNjIwcHg7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci1pbm5lciBmb3JtIGlucHV0IHsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXI6IG5vbmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1ib2xkKTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtc2Vjb25kYXJ5KTsKICBwYWRkaW5nOiAyMHB4IDE0NXB4IDIwcHggMjhweDsKICBoZWlnaHQ6IDUwcHg7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci1pbm5lciBmb3JtIGlucHV0OjpwbGFjZWhvbGRlciB7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiB2YXIoLS10Zy1mdy1ib2xkKTsKICBjb2xvcjogIzY2NzU5NDsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKfQouZm9vdGVyX19uZXdzbGV0dGVyLWlubmVyIGZvcm0gLmJ0biB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAwOwogIHRvcDogMDsKICBoZWlnaHQ6IDUwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICAtby1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7Cn0KLmZvb3Rlcl9fbmV3c2xldHRlci1pbm5lciBmb3JtIC5idG46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5mb290ZXItc2hhcGUgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7Cn0KLmZvb3Rlci1zaGFwZSBpbWc6bnRoLWNoaWxkKDEpIHsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKfQouZm9vdGVyLXNoYXBlIGltZzpudGgtY2hpbGQoMikgewogIHJpZ2h0OiAwOwogIHRvcDogMDsKfQouZm9vdGVyLXNoYXBlIGltZzpudGgtY2hpbGQoMykgewogIHJpZ2h0OiA2JTsKICB0b3A6IDMwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAuZm9vdGVyLXNoYXBlIGltZzpudGgtY2hpbGQoMykgewogICAgcmlnaHQ6IDExJTsKICAgIHRvcDogMjQlOwogIH0KfQouZm9vdGVyLXNoYXBlLXR3byBpbWcgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBsZWZ0OiAwOwogIHRvcDogMDsKfQoKLmZ3LWxvZ28gaW1nIHsKICBtYXgtaGVpZ2h0OiAzNHB4Owp9CgouZnctdGl0bGUgewogIGZvbnQtc2l6ZTogMjJweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmctYm90dG9tOiAxOHB4Owp9Ci5mdy10aXRsZTo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiA0cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW8tYm9yZGVyLXJhZGl1czogNHB4OwogIC1tcy1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9CgouZm9vdGVyLWluZm8tdHdvIC5saXN0LXdyYXAgbGkgLmljb24gewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwp9Ci5mb290ZXItaW5mby10d28gLmxpc3Qtd3JhcCBsaSAuY29udGVudCBhIHsKICBmb250LXdlaWdodDogNzAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwp9Ci5mb290ZXItaW5mby10d28gLmxpc3Qtd3JhcCBsaSAuY29udGVudCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmZvb3Rlci1pbmZvLXR3byAubGlzdC13cmFwIGxpIC5jb250ZW50IHAgewogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5jb3B5cmlnaHQtdGV4dCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgfQp9Ci5jb3B5cmlnaHQtdGV4dCBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwp9Ci5jb3B5cmlnaHQtdGV4dCBwIGEgewogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKfQouY29weXJpZ2h0LXRleHQgcCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmNvcHlyaWdodC10ZXh0IGEgewogIGNvbG9yOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQouY29weXJpZ2h0LXRleHQgYTpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci5jb3B5cmlnaHQtdGV4dC10d28gcCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgY29sb3I6ICM1RjYxOTY7Cn0KLmNvcHlyaWdodC10ZXh0LXR3byBwIGEgewogIGNvbG9yOiAjNUY2MTk2Owp9Ci5jb3B5cmlnaHQtdGV4dC10d28gcCBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDAwLiBLZXlmcmFtZSBBbmltYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkAtd2Via2l0LWtleWZyYW1lcyBob3ZlclNoaW5lIHsKICAxMDAlIHsKICAgIGxlZnQ6IDEyNSU7CiAgfQp9CkBrZXlmcmFtZXMgaG92ZXJTaGluZSB7CiAgMTAwJSB7CiAgICBsZWZ0OiAxMjUlOwogIH0KfQouYWxsdHVjaHRvcGRvd24gewogIC13ZWJraXQtYW5pbWF0aW9uOiBhbGx0dWNodG9wZG93biAxLjVzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlIGFsdGVybmF0ZTsKICBhbmltYXRpb246IGFsbHR1Y2h0b3Bkb3duIDEuNXMgZWFzZS1pbi1vdXQgMHMgaW5maW5pdGUgYWx0ZXJuYXRlOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogM3M7Cn0KCkBrZXlmcmFtZXMgYWxsdHVjaHRvcGRvd24gewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykgdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgfQogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICB9CiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykgdHJhbnNsYXRlWSgwcHgpOwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgYWxsdHVjaHRvcGRvd24gewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykgdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgfQogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKC0yMHB4KTsKICB9CiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykgdHJhbnNsYXRlWSgwcHgpOwogIH0KfQoucmlnaHRUb0xlZnQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJpZ2h0VG9MZWZ0OwogIGFuaW1hdGlvbi1uYW1lOiByaWdodFRvTGVmdDsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9CgpAa2V5ZnJhbWVzIHJpZ2h0VG9MZWZ0IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogIH0KfQoucmliYm9uUm90YXRlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByaWJib25Sb3RhdGU7CiAgYW5pbWF0aW9uLW5hbWU6IHJpYmJvblJvdGF0ZTsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9CgpAa2V5ZnJhbWVzIHJpYmJvblJvdGF0ZSB7CiAgMCUsIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogIH0KICAyNSUsIDc1JSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTsKICB9CiAgNTAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpOwogIH0KfQoucm90YXRlbWUgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZW1lOwogIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVtZTsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMTBzOwogIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9CgpAa2V5ZnJhbWVzIHJvdGF0ZW1lIHsKICBmcm9tIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9CiAgdG8gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZW1lIHsKICBmcm9tIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQogIHRvIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYWRlSW5VcDIgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9Cn0KLmZhZGVJblVwMiB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluVXAyOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDI7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNXM7CiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzOwogIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogMC41czsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQoKQGtleWZyYW1lcyBmYWRlSW5MZWZ0MiB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQouZmFkZUluTGVmdDIgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQyOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0MjsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC41czsKICBhbmltYXRpb24tZGVsYXk6IDAuNXM7CiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNXM7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzOwogIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwp9CgpAa2V5ZnJhbWVzIG1hcnF1ZWUgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgfQogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICB9Cn0KQC13ZWJraXQta2V5ZnJhbWVzIGhlYXJ0YmVhdCB7CiAgZnJvbSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC44KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTsKICB9CiAgdG8gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICB9Cn0KQGtleWZyYW1lcyBoZWFydGJlYXQgewogIGZyb20gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7CiAgfQogIHRvIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgfQp9CkBrZXlmcmFtZXMgcHVsc2UtYm9yZGVyIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEuNSk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UtYm9yZGVyIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVaKDApIHNjYWxlKDEuNSk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoubG9naW5fX2FyZWEtb25lIHsKICBwYWRkaW5nOiAxMjBweCAwcHggMjUwcHggMHB4OwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9naW4vYmctbG9naW4ucG5nKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBjZW50ZXI7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKfQoKLmJveC1mb3JtLWxvZ2luIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIG1heC13aWR0aDogNTc5cHg7CiAgbWFyZ2luOiBhdXRvOwogIHBhZGRpbmc6IDYzcHggNjFweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgYm9yZGVyLXJhZGl1czogOHB4Owp9Ci5ib3gtZm9ybS1sb2dpbiAuZm9ybS1ncm91cCB7CiAgbWFyZ2luLWJvdHRvbTogMjRweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmJveC1mb3JtLWxvZ2luIC5mb3JtLWNvbnRyb2wgewogIHBhZGRpbmc6IDIycHggMjZweDsKfQouYm94LWZvcm0tbG9naW4gLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS10Zy1ib3JkZXItNSk7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLmJveC1mb3JtLWxvZ2luIC5mb3JtLWNvbnRyb2wuYWNjb3VudCB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9sb2dpbi9hY2NvdW50LnN2Zyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyNnB4IGNlbnRlcjsKfQouYm94LWZvcm0tbG9naW4gLmZvcm0tY29udHJvbC5lbWFpbC1hZGRyZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3JlZ2lzdGVyL2VtYWlsLnN2Zyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyNnB4IGNlbnRlcjsKfQouYm94LWZvcm0tbG9naW4gLnZpZXctcGFzc3dvcmQgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbG9naW4vdmlldy5zdmcpOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIGhlaWdodDogMTZweDsKICB3aWR0aDogMjBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHJpZ2h0OiAyNnB4OwogIHotaW5kZXg6IDEyOwp9CgouZm9ybS1sb2dpbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGV4dC1vciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW46IDM0cHggMHB4IDQ4cHggMHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10Zy1jb2xvci1ncmF5LTIpOwp9Ci50ZXh0LW9yIHNwYW4gewogIHBhZGRpbmc6IDVweCAxMXB4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWJvZHktY29sb3IpOwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogIG1hcmdpbjogYXV0bzsKICBtYXgtd2lkdGg6IDQxcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7Cn0KCi50ZXh0LTQ4LWJvbGQgewogIGZvbnQtc2l6ZTogNDhweDsKICBsaW5lLWhlaWdodDogNjVweDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLmJveC1sb2dpbi13aXRoIHsKICBtYXJnaW4tdG9wOiAzNXB4Owp9CgouYm94LWZvcmdvdC1wYXNzIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIG1hcmdpbi1ib3R0b206IDI0cHg7Cn0KLmJveC1mb3Jnb3QtcGFzcyAqIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3ItYm9keS1jb2xvcik7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLmJveC1mb3Jnb3QtcGFzcyBzcGFuIHsKICBwYWRkaW5nLWxlZnQ6IDBweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGRpc3BsYXk6IGJsb2NrOwp9CgouY2ItcmVtZW1iZXIgewogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbjogNHB4IDEwcHggMHB4IDBweDsKfQoKLmZvcm0tbG9naW4gLmxpbmstYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLmZvcm0tbG9naW4gLmxpbmstYm9sZDpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXNlY29uZGFyeSk7Cn0KCi5oZWFkZXItYm9yZGVyLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgewogIC5ib3gtZm9ybS1sb2dpbiB7CiAgICBwYWRkaW5nOiAyM3B4IDIxcHg7CiAgfQogIC5ib3gtZm9ybS1sb2dpbiAuZm9ybS1jb250cm9sLmFjY291bnQsIC5ib3gtZm9ybS1sb2dpbiAuZm9ybS1jb250cm9sLmVtYWlsLWFkZHJlc3MgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTJweCBjZW50ZXI7CiAgfQogIC5ib3gtZm9ybS1sb2dpbiAudmlldy1wYXNzd29yZCB7CiAgICByaWdodDogMTRweDsKICB9CiAgLmJveC1mb3JtLWxvZ2luIC5mb3JtLWNvbnRyb2wgewogICAgcGFkZGluZzogMjJweCA0MHB4IDIycHggMTZweDsKICB9CiAgLnRleHQtNDgtYm9sZCB7CiAgICBmb250LXNpemU6IDM1cHg7CiAgICBsaW5lLWhlaWdodDogNTBweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDM3NXB4KSB7CiAgLnRleHQtNDgtYm9sZCB7CiAgICBmb250LXNpemU6IDI1cHg7CiAgICBsaW5lLWhlaWdodDogNDBweDsKICB9Cn0KLnJlZ2lzdGVyX19hcmVhLW9uZSB7CiAgcGFkZGluZzogMTIwcHggMHB4IDI1MHB4IDBweDsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL3JlZ2lzdGVyL2JnLXJlZ2lzdGVyLnBuZyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7Cn0KCi5mb3Jnb3RfX2FyZWEtb25lIHsKICBwYWRkaW5nOiAxMjBweCAwcHggMjUwcHggMHB4OwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvZm9yZ290L2JnLWZvcmdvdC5wbmcpOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwp9CgoudGV4dC0xNi1zZW1pYm9sZCB7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCi5mb3JtLWZvcmdvdCAudGV4dC1pbmZvcyB7CiAgcGFkZGluZzogMHB4IDBweCAwcHggMjlweDsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2ZvcmdvdC9pbmZvLnN2Zyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9Ci5mb3JtLWZvcmdvdCAuYWxlcnQtd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0LTMpOwogIHBhZGRpbmc6IDE1cHggMjRweDsKICBtYXJnaW4tYm90dG9tOiAyNHB4OwogIGJvcmRlcjogMHB4Owp9CgouYm9yZGVyLWJ0bi5idG4tbG9naW4gewogIHBhZGRpbmc6IDE5cHggMjZweDsKfQouYm9yZGVyLWJ0bi5idG4tbG9naW4gc3ZnIHsKICBmaWxsOiB2YXIoLS10Zy1ib2R5LWNvbG9yKTsKICB3aWR0aDogMTZweDsKICBtYXJnaW4tcmlnaHQ6IDhweDsKfQouYm9yZGVyLWJ0bi5idG4tbG9naW46aG92ZXIgc3ZnIHsKICBmaWxsOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouYm9yZGVyLWJ0bi5idG4tbG9naW46OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Cgouc2xpZGVyX2JhbmVyX2hvbWU2IC5zbGlkZXJfX2JnIHsKICBvcGFjaXR5OiAxOwp9Ci5zbGlkZXJfYmFuZXJfaG9tZTYgLmJhbm5lcl9fY29udGVudC10aHJlZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIHBhZGRpbmc6IDYwcHggNjBweCA2MHB4IDgwcHg7CiAgbWFyZ2luOiA2MHB4IDBweCA2MHB4IDYwcHg7Cn0KLnNsaWRlcl9iYW5lcl9ob21lNiAuYmFubmVyX19jb250ZW50LXRocmVlIC50aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouc2xpZGVyX2JhbmVyX2hvbWU2IC5iYW5uZXJfX2NvbnRlbnQtdGhyZWUgcCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouc2xpZGVyX2JhbmVyX2hvbWU2IC5zbGlkZXJfX3NpbmdsZSB7CiAgbWF4LWhlaWdodDogNjkzcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnNsaWRlcl9iYW5lcl9ob21lNiAuc2xpZGVyX19zaW5nbGU6OmJlZm9yZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnRleHQtc3Ryb2tlLTIgewogIGNvbG9yOiAjRkRCRTM5OwogIHRleHQtc2hhZG93OiAtMXB4IC0xcHggMCAjRTA4QjAwLCAxcHggLTFweCAwICNFMDhCMDAsIC0xcHggMXB4IDAgI0UwOEIwMCwgMXB4IDFweCAwICNFMDhCMDA7CiAgZm9udC1zaXplOiA3MHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiA3MHB4Owp9CgoudGV4dC0yNS15ZWFycyB7CiAgcGFkZGluZzogMjBweCAzMHB4IDIwcHggNDBweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIHdpZHRoOiBmaXQtY29udGVudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwogIGJvcmRlci1yYWRpdXM6IDUwcHggMHB4IDUwcHggNTBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgbGVmdDogLTE3NXB4OwogIHotaW5kZXg6IDEyMzsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKC05MGRlZyk7Cn0KCi50ZXh0LWV4cGVyaWVuY2UgewogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMzBweDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbjogMHB4OwogIHBhZGRpbmctbGVmdDogMTBweDsKfQoKLnNsaWRlcl9fYXJlYSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYm94LWJ1dHRvbi1zbGlkZXItYm90dG9tIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAwcHg7CiAgbGVmdDogMHB4OwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDEyMzQ7CiAgcGFkZGluZy1ib3R0b206IDUwcHg7Cn0KLmJveC1idXR0b24tc2xpZGVyLWJvdHRvbSAudGVzdGltb25pYWxfX25hdi1mb3VyIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9Cgouc2VydmljZXNfX2l0ZW0tc2l4IHsKICBib3JkZXI6IDBweDsKICBib3gtc2hhZG93OiBub25lOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDU1cHg7Cn0KLnNlcnZpY2VzX19pdGVtLXNpeCAuc2VydmljZXNfX2ljb24tZml2ZSB7CiAgbWluLXdpZHRoOiA3OHB4OwogIG1hcmdpbi1yaWdodDogMTVweDsKICBtYXJnaW4tdG9wOiAxOHB4Owp9Ci5zZXJ2aWNlc19faXRlbS1zaXggLnNlcnZpY2VzX19jb250ZW50LWZpdmUgewogIHdpZHRoOiAxMDAlOwogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnNlcnZpY2VzX19pdGVtLXNpeCAuaWNvbiB7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQgMHM7Cn0KLnNlcnZpY2VzX19pdGVtLXNpeDpob3ZlciAuaWNvbiB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dCAwczsKfQoKLnNlcnZpY2VzX19pdGVtLXdyYXAtdHdvIC5yb3cgW2NsYXNzKj1jb2wtXTpudGgtY2hpbGQob2RkKSAuc2VydmljZXNfX2l0ZW0tc2l4IHsKICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIG1hcmdpbi10b3A6IDBweDsKfQoKLmFsbF9zZXJ2aWNlc19fYXJlYS1zaXggewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaG9tZTYvYmctb2ZmZXIucG5nKTsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogIHBhZGRpbmc6IDExMnB4IDBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5hbGxfc2VydmljZXNfX2FyZWEtc2l4IGgyIHsKICBmb250LXNpemU6IDQ4cHg7CiAgbGluZS1oZWlnaHQ6IDYzcHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogI2ZmZjsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5hbGxfc2VydmljZXNfX2FyZWEtc2l4IHAgewogIGNvbG9yOiAjZmZmOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXdlaWdodDogNDAwOwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5jYXJkLXRlYW0tYXJlYS1zaXggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTEpOwogIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9Ci5jYXJkLXRlYW0tYXJlYS1zaXggLmNhcmQtaW1hZ2UgewogIG1pbi13aWR0aDogMjY1cHg7CiAgbWF4LXdpZHRoOiAyNjVweDsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci15ZWxsb3ctbGlnaHQpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouY2FyZC10ZWFtLWFyZWEtc2l4IC5jYXJkLWltYWdlOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaG9tZTYvYmctY2FyZC10ZWFtLnBuZykgbm8tcmVwZWF0IHRvcCBsZWZ0OwogIHotaW5kZXg6IDE7Cn0KLmNhcmQtdGVhbS1hcmVhLXNpeCAuY2FyZC1pbWFnZSBpbWcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwogIG1heC1oZWlnaHQ6IDMwNXB4OwogIG1hcmdpbi10b3A6IDE1cHg7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLmNhcmQtdGVhbS1hcmVhLXNpeCAuY2FyZC1pbWFnZSAuYnRuLXNoYXJlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDE0cHg7CiAgcmlnaHQ6IDE3cHg7CiAgei1pbmRleDogNDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbGluZS1oZWlnaHQ6IDQ4cHg7Cn0KLmNhcmQtdGVhbS1hcmVhLXNpeCAuY2FyZC1pbWFnZSAuYnRuLXNoYXJlIGltZyB7CiAgbWFyZ2luOiAwcHg7Cn0KLmNhcmQtdGVhbS1hcmVhLXNpeCAuY2FyZC1pbmZvIHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAyMHB4IDIwcHggMjBweCAzMHB4Owp9Ci5jYXJkLXRlYW0tYXJlYS1zaXggLmNhcmQtaW5mbyAuY2FyZC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMjhweDsKfQouY2FyZC10ZWFtLWFyZWEtc2l4IC5jYXJkLWluZm8gLmNhcmQtdGl0bGUgYSB7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMzBweDsKICBmb250LXdlaWdodDogYm9sZDsKfQouY2FyZC10ZWFtLWFyZWEtc2l4IC5jYXJkLWluZm8gLmNhcmQtZGVwdCB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMTZweDsKICBtYXJnaW46IDEwcHggMHB4Owp9Ci5jYXJkLXRlYW0tYXJlYS1zaXggLmNhcmQtaW5mbyAuY2FyZC1kZXNjIHsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBjb2xvcjogdmFyKC0tdGctYm9keS1jb2xvcik7CiAgbWFyZ2luLWJvdHRvbTogMjhweDsKfQouY2FyZC10ZWFtLWFyZWEtc2l4IC5jYXJkLWluZm8gLmNhcmQtbGluayBhIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICBjb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5ib3gtbmVlZC1oZWxwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5ib3gtdGV4dC1uZWVkLWhlbHAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDBweDsKICByaWdodDogMHB4OwogIHBhZGRpbmc6IDMycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIG1heC13aWR0aDogMjk3cHg7Cn0KLmJveC10ZXh0LW5lZWQtaGVscCBoNiB7CiAgY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIG1hcmdpbi10b3A6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMTNweDsKfQouYm94LXRleHQtbmVlZC1oZWxwIHAgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDIzcHg7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9CgouYWNjb3JkaW9uLWJ1dHRvbiB7CiAgYm9yZGVyLWJvdHRvbTogMHB4OwogIHBhZGRpbmc6IDIzcHggNTRweCAyM3B4IDM0cHg7CiAgYm9yZGVyOiAwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXdlaWdodDogNjAwOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouYWNjb3JkaW9uLWJ1dHRvbjpob3ZlciB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgouYWNjb3JkaW9uLWJ1dHRvbi5jb2xsYXBzZWQgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10Zy1ib3JkZXItMSk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KCi5hY2NvcmRpb24tYnV0dG9uOmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLXRnLWJvcmRlci0xKTsKfQoKLmFjY29yZGlvbi1jb2xsYXBzZSB7CiAgYm9yZGVyOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KLmFjY29yZGlvbi1jb2xsYXBzZSAuYWNjb3JkaW9uLWJvZHkgewogIHBhZGRpbmc6IDBweDsKICBwYWRkaW5nLWxlZnQ6IDMycHg7CiAgcGFkZGluZy1yaWdodDogMzJweDsKICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgcGFkZGluZy1ib3R0b206IDI1cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgouYWNjb3JkaW9uLWJ1dHRvbjpub3QoLmNvbGxhcHNlZCkgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3gtc2hhZG93OiBub25lOwp9CgouYWNjb3JkaW9uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5hY2NvcmRpb24taXRlbSB7CiAgYm9yZGVyOiAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50Owp9CgouYWNjb3JkaW9uLWl0ZW06Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50Owp9CgouYWNjb3JkaW9uLWJ1dHRvbjo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaG9tZTYvcGx1cy5zdmcpOwogIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgd2lkdGg6IDI0cHg7CiAgaGVpZ2h0OiAyNHB4OwogIHRvcDogNTAlOwogIG1hcmdpbi10b3A6IC0xMnB4OwogIHJpZ2h0OiAyMHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMjsKfQoKLmFjY29yZGlvbi1idXR0b246bm90KC5jb2xsYXBzZWQpOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lNi9wbHVzLnN2Zyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7Cn0KCi5ib3gtZmFxLXJpZ2h0IHsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCi5tYXJrZXRpbmdfZXhwZXJ0X19hcmVhX3NpeCB7CiAgcGFkZGluZzogMTI1cHggMHB4IDBweCAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3ItZ3JheS0zKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2hvbWU2L2JnLW1hcmtldGluZy5wbmcpOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMTMwcHg7Cn0KCi5mb290ZXJfX2NvbnRlbnQtdHdvID4gLmNvbG9yLXdoaXRlIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KCi5mb290ZXJfX2NvbnRlbnQtdHdvIC5tYi00MCB7CiAgbWFyZ2luLWJvdHRvbTogNDBweDsKfQoKLmJveC12aWRlbyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYm94LXZpZGVvOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2hvbWU2L3RyYW5zLnBuZyk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDI7Cn0KLmJveC12aWRlbyAuYm50LXBsYXkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICB6LWluZGV4OiAxMjsKICBoZWlnaHQ6IDExNHB4OwogIHdpZHRoOiAxMTRweDsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICBtYXJnaW46IGF1dG87CiAgYm90dG9tOiAwcHg7Cn0KCi5ib3gtdmlkZW8tc21hbGwgewogIG1hcmdpbi10b3A6IDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgYm90dG9tOiAtMTMwcHg7Cn0KCi5pdGVtLXZpZGVvLXNtYWxsIHsKICBkaXNwbGF5OiBmbGV4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnZpZGVvLXNtYWxsLWxlZnQgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDQ2cHg7Cn0KCi52aWRlby1zbWFsbC1yaWdodCB7CiAgbWF4LXdpZHRoOiAzOTJweDsKICBtaW4td2lkdGg6IDM5MnB4Owp9Ci52aWRlby1zbWFsbC1yaWdodCAuYm94LXZpZGVvIHsKICBib3JkZXItcmFkaXVzOiAwcHg7Cn0KLnZpZGVvLXNtYWxsLXJpZ2h0IC5ib3gtdmlkZW86OmJlZm9yZSB7CiAgZGlzcGxheTogbm9uZTsKfQoudmlkZW8tc21hbGwtcmlnaHQgLmJudC1wbGF5IHsKICBoZWlnaHQ6IDcwcHg7CiAgd2lkdGg6IDcwcHg7Cn0KCi52aWRlby1zbWFsbC1sZWZ0LWlubmVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnZpZGVvLXNtYWxsLWxlZnQtaW5uZXIgLnZpZGVvLXNtYWxsLWxlZnQtMSB7CiAgYm9yZGVyLXJhZGl1czogMTdweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKICBwYWRkaW5nOiAyOXB4OwogIG1pbi13aWR0aDogMTM5cHg7CiAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudmlkZW8tc21hbGwtbGVmdC1pbm5lciAudmlkZW8tc21hbGwtbGVmdC0xICogewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoudmlkZW8tc21hbGwtbGVmdC1pbm5lciAudmlkZW8tc21hbGwtbGVmdC0xIGgzIHsKICBmb250LXNpemU6IDQ4cHg7CiAgbGluZS1oZWlnaHQ6IDQ4cHg7Cn0KLnZpZGVvLXNtYWxsLWxlZnQtaW5uZXIgLnZpZGVvLXNtYWxsLWxlZnQtMSBwIHsKICBtYXJnaW4tYm90dG9tOiAwcHg7Cn0KLnZpZGVvLXNtYWxsLWxlZnQtaW5uZXIgLnZpZGVvLXNtYWxsLWxlZnQtMiAqIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7Cn0KLnZpZGVvLXNtYWxsLWxlZnQtaW5uZXIgLnZpZGVvLXNtYWxsLWxlZnQtMiBoMyB7CiAgZm9udC1zaXplOiAzMHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIG1hcmdpbi1ib3R0b206IDEzcHg7Cn0KCi5mb290ZXJfX25ld3NsZXR0ZXItc2l4IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogMTBweDsKfQoKLmZvb3Rlcl9fdG9wLXR3byAuY29sb3Itd2hpdGUgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoKLnRleHQtc3Vic2NyaWJlIHsKICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgd2lkdGg6IDEwMCU7Cn0KCi5mb290ZXJfX2FyZWEtc2l4IC5mb290ZXJfX2NvbnRlbnQtdHdvIHsKICBtYXgtd2lkdGg6IDQ3NnB4Owp9CgouZm9vdGVyX19hcmVhLXNpeCAuY29weXJpZ2h0LXRleHQtdHdvIHAgewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi50ZXh0LXN0cm9rZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLWRhcmstYmx1ZSk7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMCB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KSwgLTFweCAtMXB4IDAgdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCksIDFweCAtMXB4IDAgdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCksIC0xcHggMXB4IDAgdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCksIDFweCAxcHggMCB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDYwcHg7CiAgbGV0dGVyLXNwYWNpbmc6IDRweDsKfQoKLnBhcnRuZXJzX19hcmVhLXNpeCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3ItZGFyay1ibHVlKTsKICBwYWRkaW5nOiA0OXB4IDBweDsKfQoKLnNsaWRlcl9fcGFydG5lciB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQouc2xpZGVyX19wYXJ0bmVyIGg0IHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQouc2xpZGVyX19wYXJ0bmVyIGg0IGltZyB7CiAgbWFyZ2luOiAwcHggMjVweDsKfQoKLmNob29zZV9fYXJlYS1zaXggewogIHBhZGRpbmc6IDEyNHB4IDBweDsKfQouY2hvb3NlX19hcmVhLXNpeCAuY2hvb3NlX19pbWctd3JhcC1maXZlIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jaG9vc2VfX2FyZWEtc2l4IC5jaG9vc2VfX2ltZy13cmFwLWZpdmUgLmFsbHR1Y2h0b3Bkb3duIHsKICB6LWluZGV4OiAxOwogIGxlZnQ6IGF1dG87CiAgcmlnaHQ6IDAlOwogIGJvdHRvbTogMTUlOwp9Ci5jaG9vc2VfX2FyZWEtc2l4IC5jaG9vc2VfX2ltZy13cmFwLWZpdmUgLnNoYXBlLWxlZnQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMTBweDsKICByaWdodDogYXV0bzsKICB0b3A6IDQlOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmNob29zZV9fYXJlYS1zaXggLmNob29zZV9faW1nLXdyYXAtZml2ZSAuc2hhcGUtYm90dG9tLWxlZnQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtMTBweDsKICByaWdodDogYXV0bzsKICBib3R0b206IC0xMHB4Owp9Ci5jaG9vc2VfX2FyZWEtc2l4IC5jaG9vc2VfX2ltZy13cmFwLWZpdmUgLnNoYXBlLXRvcC1yaWdodCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTQwcHg7CiAgcmlnaHQ6IDMwcHg7CiAgei1pbmRleDogLTE7Cn0KCi5vdXJfdGVhbV9fYXJlYS1zaXggewogIHBhZGRpbmc6IDEyNHB4IDBweCAwcHggMHB4Owp9CgouZmFxc19fYXJlYS1zaXggewogIHBhZGRpbmc6IDEyNHB4IDBweCAxMjRweCAwcHg7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lNi9iZy1mYXEuc3ZnKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgYm90dG9tIC0xMjBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmZhcXNfX2FyZWEtc2l4IC5jaXJjbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaG9tZTYvY2lyY2xlLWZhcS5zdmcpOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogIGhlaWdodDogNTJweDsKICB3aWR0aDogNTJweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNSU7CiAgdG9wOiAxODBweDsKfQoKLm1hcmtldGluZ19leHBlcnRfX2FyZWFfc2l4IC5zaGFwZS10b3AtcmlnaHQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0zMHB4OwogIHJpZ2h0OiAtMjBweDsKfQoKLnNlcnZpY2VzX19pdGVtLXN0eWxlLTIgLnNlcnZpY2VzX19pdGVtLWZpdmUgewogIHRleHQtYWxpZ246IGxlZnQ7CiAgcGFkZGluZzogNDVweCAzMHB4IDMwcHggMzBweDsKfQouc2VydmljZXNfX2l0ZW0tc3R5bGUtMiAuc2VydmljZXNfX2l0ZW0tZml2ZSAuc2VydmljZXNfX2ljb24tZml2ZSB7CiAgbWFyZ2luLWxlZnQ6IDE1cHg7Cn0KLnNlcnZpY2VzX19pdGVtLXN0eWxlLTIgLnNlcnZpY2VzX19pdGVtLWZpdmUgLnNlcnZpY2VzX19jb250ZW50LWZpdmUgcCB7CiAgbWluLWhlaWdodDogMTIwcHg7Cn0KCi5mb290ZXItcGF5bWVudHMgaW1nIHsKICBtYXJnaW46IDBweCA1cHggOXB4IDBweDsKfQoKLmxpbmstZ3JheSB7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwp9Cgouc2VydmljZXNfX2FyZWEtaG9tZTcgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lNy9iZy1zZXJ2aWNlLnBuZyk7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgYm90dG9tOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1zaXplOiBhdXRvOwp9CgoudGV4dC02MC1ib2xkLCAuYmFubmVyLXR3by1jb2wgLnNlY3Rpb24tdGl0bGUgLnRpdGxlIHsKICBmb250LXNpemU6IDYwcHg7CiAgbGluZS1oZWlnaHQ6IDcwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoudGV4dC02MC1ib2xkIHNwYW4sIC5iYW5uZXItdHdvLWNvbCAuc2VjdGlvbi10aXRsZSAudGl0bGUgc3BhbiB7CiAgZm9udC13ZWlnaHQ6IDMwMDsKfQoKLml0ZW0tYXV0aG9yLW1vcmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDY0cHg7CiAgd2lkdGg6IDY0cHg7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctdGhlbWUtcHJpbWFyeSk7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBsaW5lLWhlaWdodDogNjVweDsKICBtYXJnaW4tbGVmdDogLTVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKLmJveC1hdXRob3JzIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5ib3gtYXV0aG9ycyBpbWcgewogIGhlaWdodDogNjVweDsKICB3aWR0aDogNjVweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgbWFyZ2luLXJpZ2h0OiAtMzBweDsKfQoKLmJveC1pbWctYXV0aG9yIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi50ZXh0LXRydXN0ZWQtYXV0aG9yIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDMycHg7CiAgY29sb3I6IHZhcigtLXRnLWhlYWRpbmctY29sb3IpOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIG1heC13aWR0aDogMjY4cHg7Cn0KCi50ZXh0LTQyLWJvbGQgewogIGZvbnQtc2l6ZTogNDJweDsKICBsaW5lLWhlaWdodDogNDJweDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLnRleHQtbmVlZC1oZWxwIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9CgoudGV4dC1waG9uZSB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Cgouc2xpZGVfX2hvbWU3IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5ib3gtaW5mby1jb250YWN0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAwcHg7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcGFkZGluZzogNTJweDsKfQoKLmJyYW5kX19hcmVhLWhvbWU3IHsKICBwYWRkaW5nLXRvcDogMTE3cHg7Cn0KCi5tYWluLWltZy13aHkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoubWFpbi1pbWctd2h5IC5wbGF5LWJ0biB7CiAgYmFja2dyb3VuZDogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgd2lkdGg6IDExNHB4OwogIGhlaWdodDogMTE0cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAxMHB4OwogIHJpZ2h0OiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgei1pbmRleDogMTI7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbjogYXV0byBhdXRvIGF1dG8gMTUwcHg7Cn0KLm1haW4taW1nLXdoeSAucGxheS1idG4gaSB7CiAgZm9udC1zaXplOiA0M3B4OwogIGNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgbGVmdDogMHB4OwogIHJpZ2h0OiAwcHg7CiAgbWFyZ2luOiBhdXRvOwogIGhlaWdodDogNDNweDsKICB3aWR0aDogMzhweDsKfQoKLndoeWNob29zZV9fYXJlYS1ob21lNyB7CiAgcGFkZGluZy10b3A6IDBweDsKfQoKLmljb24tbGluZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMTUlOwogIGxlZnQ6IDMlOwogIHotaW5kZXg6IDE7Cn0KCi5pY29uLXN0YXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDMwJTsKICByaWdodDogMTAlOwogIHotaW5kZXg6IDE7Cn0KCi5pY29uLXNub3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDE1JTsKICBsZWZ0OiAxMCU7CiAgei1pbmRleDogMTsKfQoKLnN0ZXBzX19hcmVhLXNldmVuIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBwYWRkaW5nOiAxMThweCAwcHggNzhweCAwcHg7Cn0KLnN0ZXBzX19hcmVhLXNldmVuICogewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQoKLmpvdXJuZXlfYXJlYS1zZXZlbiB7CiAgcGFkZGluZzogODVweCAwcHggMHB4IDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2hvbWU3L2JnLWpvdXJuZXkucG5nKTsKICBtYXJnaW4tYm90dG9tOiAyMDBweDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgY2VudGVyOwp9Ci5qb3VybmV5X2FyZWEtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgaDIsIC5qb3VybmV5X2FyZWEtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgcCB7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5qb3VybmV5X2FyZWEtc2V2ZW4gLnNlY3Rpb24tdGl0bGUgcCB7CiAgbWFyZ2luLWJvdHRvbTogMjVweDsKfQoKLmJveC1jb3VudGVyLWhvbWU3IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKICBib3JkZXItcmFkaXVzOiAxNnB4OwogIC1tcy1ib3gtc2hhZG93OiAwcHggMTBweCAyMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLW8tYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IDBweCAxMHB4IDIwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBwYWRkaW5nOiA2MHB4IDIwcHggMzBweCAyMHB4OwogIGJvdHRvbTogLTEwNXB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmJveC1jb3VudGVyLWhvbWU3IC5jb3VudGVyLWl0ZW0gewogIGdhcDogMTNweDsKfQoKLmNhcmQtc3RlcCAuY2FyZC1pY29uIHsKICBoZWlnaHQ6IDc4cHg7CiAgd2lkdGg6IDY5cHg7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lNy9iZy1zdGVwLnN2Zyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbGluZS1oZWlnaHQ6IDc4cHg7CiAgbWFyZ2luLWJvdHRvbTogMjRweDsKfQouY2FyZC1zdGVwIC5jYXJkLWljb24gKiB7CiAgbWF4LXdpZHRoOiAxMDAlOwogIG1heC1oZWlnaHQ6IDEwMCU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQouY2FyZC1zdGVwIC5jYXJkLWluZm8gaDUsIC5jYXJkLXN0ZXAgLmNhcmQtaW5mbyBwIHsKICBjb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgbWFyZ2luLWJvdHRvbTogMjRweDsKfQouY2FyZC1zdGVwIC5jYXJkLWluZm8gcCB7CiAgbWFyZ2luLWJvdHRvbTogNDBweDsKfQouY2FyZC1zdGVwIC5jYXJkLWluZm8gLmxpbmstcmVhZG1vcmUgewogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouY2FyZC1zdGVwIC5jYXJkLWluZm8gLmxpbmstcmVhZG1vcmUgc3ZnIHsKICBtYXJnaW4tbGVmdDogNXB4Owp9CgoubXctNDYwIHsKICBtYXgtd2lkdGg6IDQ2MHB4Owp9Cgouc2xpZGVyX3Rlc3RpbW9uaWFsX2hvbWU3IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy10b3A6IDkwcHg7Cn0KLnNsaWRlcl90ZXN0aW1vbmlhbF9ob21lNyAucXVvdGUtcmV2aWV3IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgcmlnaHQ6IDIwcHg7CiAgei1pbmRleDogMTI7Cn0KCi5pdGVtLXRlc3RpbW9uaWFsIHsKICBtYXgtd2lkdGg6IDExMDBweDsKICBwYWRkaW5nLWxlZnQ6IDUwcHg7CiAgcGFkZGluZy1yaWdodDogNTBweDsKICBtYXJnaW46IGF1dG87CiAgZGlzcGxheTogZmxleDsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IHsKICBtaW4td2lkdGg6IDMwMHB4OwogIHBhZGRpbmc6IDBweCAxMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IC5hdXRob3ItdGVzdGltb25pYWwgaW1nIHsKICBoZWlnaHQ6IDg3cHg7CiAgd2lkdGg6IDg3cHg7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IC5hdXRob3ItdGVzdGltb25pYWwgLmluZm8tYXV0aG9yLXJldmlldyAubmFtZS1yZXZpZXcgewogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMzBweDsKICBmb250LXdlaWdodDogNjAwOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IC5hdXRob3ItdGVzdGltb25pYWwgLmluZm8tYXV0aG9yLXJldmlldyAucmV2aWV3LWRlcHQgewogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMTZweDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiB2YXIoLS10Zy10aGVtZS1wcmltYXJ5KTsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IC5hdXRob3ItdGVzdGltb25pYWwgLmluZm8tYXV0aG9yLXJldmlldyAuYnJhbmQtcmV2aWV3IHsKICBtYXJnaW4tdG9wOiAzMnB4OwogIG9wYWNpdHk6IDAuNTsKfQouaXRlbS10ZXN0aW1vbmlhbCAuaXRlbS10ZXN0aW1vbmlhbC1yaWdodCBwIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgY29sb3I6IHZhcigtLXRnLWJvZHktY29sb3IpOwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KCi50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiB7CiAgcGFkZGluZy1ib3R0b206IDEzMHB4Owp9Ci50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXYsIC50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLW5leHQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICB6LWluZGV4OiAxMjM7CiAgbWFyZ2luLXRvcDogLTI1cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGctYm9yZGVyLTEpOwp9Ci50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXY6aG92ZXIsIC50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLW5leHQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLXRoZW1lLXByaW1hcnkpOwp9Ci50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXYgewogIGxlZnQ6IDBweDsKfQoudGVzdGltb25pYWxzX2FyZWEtc2V2ZW4gLnRlc3RpbW9uaWFsX19uYXYtZm91ciAudGVzdGltb25pYWwtdHdvLWJ1dHRvbi1uZXh0IHsKICByaWdodDogMHB4Owp9Ci50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAuc3dpcGVyLXBhZ2luYXRpb24gewogIGJvdHRvbTogMHB4Owp9Ci50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAuc3dpcGVyLWNvbnRhaW5lciB7CiAgcGFkZGluZy1ib3R0b206IDQwcHg7Cn0KLnRlc3RpbW9uaWFsc19hcmVhLXNldmVuIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMik7Cn0KLnRlc3RpbW9uaWFsc19hcmVhLXNldmVuIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1oZWFkaW5nLWNvbG9yKTsKfQoKLmFib3V0X19hd2FyZC1ib3gtdHdvLXJlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYWJvdXRfX2F3YXJkLWJveC10d28yIHsKICBib3R0b206IDExNXB4Owp9CgouYm94LXllbGxvdy1hYm91dCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3IteWVsbG93LWxpZ2h0KTsKICBwYWRkaW5nOiA1MHB4OwogIGJvcmRlci1yYWRpdXM6IDMycHg7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAuYmFubmVyLXR3by1jb2wgLmJhbm5lci1jb2wtMSwgLmJhbm5lci10d28tY29sIC5iYW5uZXItY29sLTIgewogICAgd2lkdGg6IDUwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7CiAgLmJhbm5lci10d28tY29sLCAuaXRlbS12aWRlby1zbWFsbCB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQogIC52aWRlby1zbWFsbC1yaWdodCB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBtaW4td2lkdGg6IDEwMCU7CiAgfQogIC5iYW5uZXItdHdvLWNvbCAuYmFubmVyLWNvbC0xLCAuYmFubmVyLXR3by1jb2wgLmJhbm5lci1jb2wtMiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLml0ZW0tdGVzdGltb25pYWwgewogICAgcGFkZGluZy1sZWZ0OiAwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7CiAgfQogIC5pdGVtLXRlc3RpbW9uaWFsIC5pdGVtLXRlc3RpbW9uaWFsLWxlZnQgewogICAgbWluLXdpZHRoOiAxOTBweDsKICB9CiAgLnRlc3RpbW9uaWFsc19hcmVhLXNldmVuIC50ZXN0aW1vbmlhbF9fbmF2LWZvdXIgLnRlc3RpbW9uaWFsLXR3by1idXR0b24tbmV4dCB7CiAgICByaWdodDogLTcwcHg7CiAgfQogIC50ZXN0aW1vbmlhbHNfYXJlYS1zZXZlbiAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXYgewogICAgbGVmdDogLTcwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogIC52aWRlby1zbWFsbC1sZWZ0IHsKICAgIHBhZGRpbmc6IDI2cHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgewogIC50ZXh0LTI1LXllYXJzIHsKICAgIHBhZGRpbmc6IDVweCAxNXB4IDVweCAyNHB4OwogICAgYm9yZGVyLXJhZGl1czogNTBweCAwcHggNTBweCA1MHB4OwogICAgbGVmdDogLTEzNXB4OwogIH0KICAuc2xpZGVyX2JhbmVyX2hvbWU2IC5iYW5uZXJfX2NvbnRlbnQtdGhyZWUgewogICAgcGFkZGluZzogMzBweCAyMHB4IDMwcHggNTBweDsKICAgIG1hcmdpbjogMHB4IDBweCAxMDBweCAzMHB4OwogIH0KICAuc2xpZGVyX2JhbmVyX2hvbWU2IC5iYW5uZXJfX2NvbnRlbnQtdGhyZWUgLnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMzBweDsKICB9CiAgLmNhcmQtdGVhbS1hcmVhLXNpeCB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQogIC5jYXJkLXRlYW0tYXJlYS1zaXggLmNhcmQtaW1hZ2UgewogICAgbWluLXdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAudmlkZW8tc21hbGwtbGVmdC1pbm5lciB7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQogIC52aWRlby1zbWFsbC1sZWZ0LWlubmVyIC52aWRlby1zbWFsbC1sZWZ0LTEgewogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9CiAgLml0ZW0tdGVzdGltb25pYWwgLml0ZW0tdGVzdGltb25pYWwtcmlnaHQgcCB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDQ1MHB4KSB7CiAgLml0ZW0tdGVzdGltb25pYWwgewogICAgZmxleC13cmFwOiB3cmFwOwogIH0KICAuaXRlbS10ZXN0aW1vbmlhbC1sZWZ0IHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWluLXdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICB9Cn0KLmJhbm5lci10d28tY29sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Zy1jb2xvci1ncmF5LTMpOwp9Ci5iYW5uZXItdHdvLWNvbCAuYmFubmVyLWNvbC0xIHsKICBwYWRkaW5nOiA4MHB4IDA7CiAgbWluLWhlaWdodDogNjQ2cHg7Cn0KLmJhbm5lci10d28tY29sIC5iYW5uZXItY29sLTIgewogIHdpZHRoOiA0MCU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKfQouYmFubmVyLXR3by1jb2wgLmJhbm5lci1jb2wtMiAuYm94LWJ1dHRvbi1zbGlkZXItYm90dG9tIHsKICBib3R0b206IDkwcHg7CiAgbGVmdDogYXV0bzsKICBwYWRkaW5nLWJvdHRvbTogMHB4OwogIHJpZ2h0OiA4MHB4Owp9Cgouc2VydmljZXNfX2l0ZW0tZml2ZSAuaWNvbiB7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zczsKfQoKLnNlcnZpY2VzX19pdGVtLWZpdmU6aG92ZXIgLmljb24gewogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5jYXJkLXN0ZXAgLmNhcmQtaWNvbiBzdmcgewogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCi5jYXJkLXN0ZXA6aG92ZXIgLmNhcmQtaWNvbiBzdmcgewogIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTIwcHgpIHsKICAuYmFubmVyLXR3by1jb2wgLmJhbm5lci1jb2wtMiB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQouY2FyZC1zZXJ2aWNlcy10eXBlLTAxIHsKICBwYWRkaW5nOiAzMHB4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWNvbG9yLXllbGxvdy1saWdodC00KTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBib3JkZXItcmFkaXVzOiAxNXB4OwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7Cn0KLmNhcmQtc2VydmljZXMtdHlwZS0wMTpob3ZlciB7CiAgYm94LXNoYWRvdzogMHB4IDEwcHggMjBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEwMTk2MDc4NDMpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwp9Ci5jYXJkLXNlcnZpY2VzLXR5cGUtMDEgLmNhcmQtaWNvbiB7CiAgbWFyZ2luLWJvdHRvbTogMjRweDsKICBoZWlnaHQ6IDU4cHg7Cn0KLmNhcmQtc2VydmljZXMtdHlwZS0wMSAuY2FyZC1pY29uIGksIC5jYXJkLXNlcnZpY2VzLXR5cGUtMDEgLmNhcmQtaWNvbiBpbWcsIC5jYXJkLXNlcnZpY2VzLXR5cGUtMDEgLmNhcmQtaWNvbiBzdmcgewogIHRyYW5zaXRpb246IDAuM3MgbGluZWFyOwp9Ci5jYXJkLXNlcnZpY2VzLXR5cGUtMDEgLmNhcmQtaWNvbjpob3ZlciBpLCAuY2FyZC1zZXJ2aWNlcy10eXBlLTAxIC5jYXJkLWljb246aG92ZXIgaW1nLCAuY2FyZC1zZXJ2aWNlcy10eXBlLTAxIC5jYXJkLWljb246aG92ZXIgc3ZnIHsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTsKfQouY2FyZC1zZXJ2aWNlcy10eXBlLTAxIC5jYXJkLWluZm8gaDUgewogIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgZm9udC1zaXplOiAyMnB4OwogIGxpbmUtaGVpZ2h0OiAzNXB4Owp9Cgouc2xpZGVyX2JhbmVyX2hvbWU4IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnNsaWRlcl9iYW5lcl9ob21lOCAuc2xpZGVyX19iZyB7CiAgbWluLWhlaWdodDogNzc4cHg7CiAgei1pbmRleDogMTsKICBvcGFjaXR5OiAxOwogIG1peC1ibGVuZC1tb2RlOiBub3JtYWw7Cn0KLnNsaWRlcl9iYW5lcl9ob21lOCAuc2xpZGVyX19iZzo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctaGVhZGluZy1jb2xvcik7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICBvcGFjaXR5OiAwLjg7Cn0KLnNsaWRlcl9iYW5lcl9ob21lOCAuY29udGFpbmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMjsKfQouc2xpZGVyX2JhbmVyX2hvbWU4IC5zbGlkZXJfX3NpbmdsZSB7CiAgbWluLWhlaWdodDogNzc4cHg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KLnNsaWRlcl9iYW5lcl9ob21lOCAuYmFubmVyX19jb250ZW50LXRocmVlIHsKICBtYXJnaW4tdG9wOiAwcHg7Cn0KLnNsaWRlcl9iYW5lcl9ob21lOCAuYmFubmVyX19jb250ZW50LXRocmVlIHAgewogIG1hcmdpbi1ib3R0b206IDQ1cHg7CiAgY29sb3I6IHZhcigtLXRnLWNvbG9yLXdoaXRlLWRlZmF1bHQpOwp9Ci5zbGlkZXJfYmFuZXJfaG9tZTggLmJhbm5lcl9fY29udGVudC10aHJlZSAudGl0bGUgewogIGZvbnQtc2l6ZTogNjBweDsKICBsaW5lLWhlaWdodDogNzBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBtYXJnaW4tYm90dG9tOiA0NXB4OwogIGNvbG9yOiB2YXIoLS10Zy1jb2xvci13aGl0ZS1kZWZhdWx0KTsKfQouc2xpZGVyX2JhbmVyX2hvbWU4IC5iYW5uZXJfX2NvbnRlbnQtdGhyZWUgLnRpdGxlIHNwYW4gewogIGZvbnQtd2VpZ2h0OiAzMDA7Cn0KCi5zbGlkZXJfX2FyZWEtaG9tZTggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAwcHggMTcwcHg7Cn0KLnNsaWRlcl9fYXJlYS1ob21lOCAuYm94LWZvcm0tcXVvdGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMHB4OwogIHdpZHRoOiBhdXRvOwogIHJpZ2h0OiAwcHg7CiAgei1pbmRleDogMTI7Cn0KLnNsaWRlcl9fYXJlYS1ob21lOCAuYm94LWZvcm0tcXVvdGUgLnRlc3RpbW9uaWFsX19mb3JtIHsKICBtYXJnaW46IDBweCAwcHggMHB4IGF1dG87Cn0KLnNsaWRlcl9fYXJlYS1ob21lOCAudGVzdGltb25pYWxfX25hdi1mb3VyIC50ZXN0aW1vbmlhbC10d28tYnV0dG9uLXByZXYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICBsZWZ0OiA2MHB4OwogIG1hcmdpbi10b3A6IC0yNXB4Owp9Ci5zbGlkZXJfX2FyZWEtaG9tZTggLmJveC1idXR0b24tc2xpZGVyLWJvdHRvbSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBwYWRkaW5nOiAwcHg7CiAgbWFyZ2luOiAwcHg7Cn0KLnNsaWRlcl9fYXJlYS1ob21lOCAuYm94LWJ1dHRvbi1zbGlkZXItYm90dG9tIC50ZXN0aW1vbmlhbF9fbmF2LWZvdXIgewogIG1hcmdpbjogMHB4Owp9Ci5zbGlkZXJfX2FyZWEtaG9tZTggLnRlc3RpbW9uaWFsX19uYXYtZm91ciAudGVzdGltb25pYWwtdHdvLWJ1dHRvbi1uZXh0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgcmlnaHQ6IDYwcHg7CiAgbWFyZ2luLXRvcDogLTI1cHg7Cn0KCi5zZXJ2aWNlc19fYXJlYS1ob21lOCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDEyOwogIHRvcDogLTEzMHB4Owp9CgouY2FyZC1udW1iZXItc3RhciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGctY29sb3Itd2hpdGUtZGVmYXVsdCk7CiAgYm9yZGVyLXJhZGl1czogNTBweCAwcHggNTBweCAwcHg7CiAgYm94LXNoYWRvdzogMHB4IDBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xNzI1NDkwMTk2KTsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgcGFkZGluZzogMjVweDsKICBtYXgtd2lkdGg6IDM3NnB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IC03NXB4OwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4OwogIG1hcmdpbjogYXV0bzsKICB6LWluZGV4OiA0Owp9Ci5jYXJkLW51bWJlci1zdGFyIC5udW1iZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tcmlnaHQ6IDIwcHg7Cn0KLmNhcmQtbnVtYmVyLXN0YXIgLmNvbnRlbnQgLnRpdGxlIHsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI2cHg7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQouY2FyZC1udW1iZXItc3RhciAuY29udGVudCBwIHsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDE3cHg7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9CgouYWJvdXRfX2ltZy13cmFwLWhvbWU4IHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5hYm91dF9faW1nLXdyYXAtaG9tZTggLmltZy1tYWluIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMjsKfQouYWJvdXRfX2ltZy13cmFwLWhvbWU4LmFib3V0X19pbWctd3JhcC1zZXZlbiAuc2hhcGUgaW1nIHsKICByaWdodDogNyU7CiAgdG9wOiAtMTQlOwp9CgoudGVhbV9fYXJlYS1ob21lOCB7CiAgcGFkZGluZy10b3A6IDEwcHg7Cn0KCi5hYm91dF9faW1nLXdyYXAtaG9tZTguYWJvdXRfX2ltZy13cmFwLWZvdXIgPiBpbWcgewogIGJvcmRlci1yYWRpdXM6IDBweCA0MHB4IDBweCA0MHB4Owp9Ci5hYm91dF9faW1nLXdyYXAtaG9tZTguYWJvdXRfX2ltZy13cmFwLWZvdXIgPiBpbWc6bnRoLWNoaWxkKDIpIHsKICBib3JkZXI6IDBweDsKICBib3JkZXItcmFkaXVzOiA0MHB4IDBweCA0MHB4IDBweDsKfQouYWJvdXRfX2ltZy13cmFwLWhvbWU4LmFib3V0X19pbWctd3JhcC1mb3VyIC5zaGFwZSBpbWcgewogIHJpZ2h0OiBhdXRvOwogIHRvcDogYXV0bzsKICBsZWZ0OiAzMHB4OwogIGJvdHRvbTogLTcwcHg7Cn0KCi5tYXJrZXRpbmdfX2FyZWEtaG9tZTggewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRnLWNvbG9yLWdyYXktMyk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lOC93YXZlLnBuZyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKfQoKLmFib3V0X19pbWctd3JhcDItaG9tZTggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmFib3V0X19pbWctd3JhcDItaG9tZTggLnNoYXBlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAtNDBweDsKICByaWdodDogLTQwcHg7CiAgei1pbmRleDogLTE7Cn0KCi5hYm91dF9faW1nLXdyYXAyLWhvbWU4IC5zaGFwZS0yIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxNSU7CiAgcmlnaHQ6IC0zNXB4OwogIHotaW5kZXg6IDEyOwp9CgouYWJvdXRfX2ltZy13cmFwMy1ob21lOCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouYWJvdXRfX2ltZy13cmFwMy1ob21lOCAuYnRuLXBsYXkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBib3R0b206IDBweDsKICByaWdodDogMHB4OwogIGxlZnQ6IDBweDsKICB6LWluZGV4OiAxMjM7CiAgaGVpZ2h0OiAxMDJweDsKICB3aWR0aDogMTAycHg7CiAgbWFyZ2luOiBhdXRvOwp9Ci5hYm91dF9faW1nLXdyYXAzLWhvbWU4IGltZyB7CiAgYm9yZGVyLXJhZGl1czogMHB4IDQwcHggMHB4IDQwcHg7Cn0KCi5jYXJkLXRlc3RpbW9uaWFscyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jYXJkLXRlc3RpbW9uaWFscyAuY2FyZC1pbWFnZSB7CiAgbWFyZ2luLWJvdHRvbTogNDVweDsKICBoZWlnaHQ6IDY1cHg7CiAgd2lkdGg6IDY1cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBib3JkZXItcmFkaXVzOiA1MCU7Cn0KLmNhcmQtdGVzdGltb25pYWxzIC5jYXJkLWltYWdlIGltZyB7CiAgZGlzcGxheTogYmxvY2s7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGhlaWdodDogNjVweDsKICB3aWR0aDogNjVweDsKICB0cmFuc2l0aW9uOiAwLjNzIGxpbmVhcjsKfQouY2FyZC10ZXN0aW1vbmlhbHMgLmNhcmQtaW5mbyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9ob21lOC9xdW90ZS5zdmcpOwogIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCByaWdodDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIHBhZGRpbmc6IDEwcHggMHB4Owp9Ci5jYXJkLXRlc3RpbW9uaWFscyAuY2FyZC1pbmZvIC5jYXJkLXBvc2l0aW9uIHsKICBtYXJnaW4tYm90dG9tOiAxN3B4Owp9Ci5jYXJkLXRlc3RpbW9uaWFscyAuY2FyZC1pbmZvIC5yYXRlcy1yZXZpZXcgewogIG1hcmdpbi1ib3R0b206IDIzcHg7Cn0KLmNhcmQtdGVzdGltb25pYWxzIC5jYXJkLWluZm8gLmNhcmQtY29tbWVudCBwIHsKICBmb250LXNpemU6IDE3cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KCi50ZXN0aW1vbmlhbHNfX2FyZWEtaG9tZTggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLXRvcDogMTIwcHg7Cn0KCi5ib3gtYnV0dG9uLXNsaWRlci1yaWdodCAudGVzdGltb25pYWxfX25hdi1mb3VyIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9CgoubWFya2V0aW5nX19hcmVhLWhvbWU4IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLm1hcmtldGluZ19fYXJlYS1ob21lOCAuc2hhcGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDI0JTsKICByaWdodDogNSU7CiAgei1pbmRleDogMDsKfQoubWFya2V0aW5nX19hcmVhLWhvbWU4IC5zaGFwZS0yIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAyMCU7CiAgcmlnaHQ6IDIlOwogIHotaW5kZXg6IDA7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMzk5cHgpIHsKICAubWFya2V0aW5nX19hcmVhLWhvbWU4IC5zaGFwZSB7CiAgICBib3R0b206IDIlOwogIH0KICAubWFya2V0aW5nX19hcmVhLWhvbWU4IC5zaGFwZS0yIHsKICAgIGJvdHRvbTogNCU7CiAgfQogIC5zbGlkZXJfX2FyZWEtaG9tZTggewogICAgcGFkZGluZzogMHB4IDUwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAuc2xpZGVyX19hcmVhLWhvbWU4IHsKICAgIHBhZGRpbmc6IDBweCAwcHg7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkgewogIC5mb290ZXJfX2FyZWEtc2l4IC5jb3B5cmlnaHQtdGV4dC10d28gcCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogIH0KICAuc2xpZGVyX19hcmVhLWhvbWU4IC5ib3gtZm9ybS1xdW90ZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IGF1dG87CiAgICByaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogdGFibGU7CiAgICBtYXJnaW46IGF1dG87CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLnNsaWRlcl9iYW5lcl9ob21lOCAuc2xpZGVyX19zaW5nbGUgewogICAgbWluLWhlaWdodDogNTU4cHg7CiAgfQogIC5zbGlkZXJfYmFuZXJfaG9tZTggLnNsaWRlcl9fYmcgewogICAgbWluLWhlaWdodDogNTU4cHg7CiAgfQogIC5zbGlkZXJfYmFuZXJfaG9tZTggLmJhbm5lcl9fY29udGVudC10aHJlZSB7CiAgICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgfQogIC5zZXJ2aWNlc19fYXJlYS1ob21lOCB7CiAgICB0b3A6IGF1dG87CiAgICBwYWRkaW5nLXRvcDogNTBweDsKICAgIHBhZGRpbmctYm90dG9tOiAxMDBweDsKICB9CiAgLnNsaWRlcl9fYXJlYS1ob21lOCAuYm94LWZvcm0tcXVvdGUgLnRlc3RpbW9uaWFsX19mb3JtIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRnLWJvcmRlci05KTsKICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgLmFib3V0X19pbWctd3JhcC1ob21lOCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nLWJvdHRvbTogMHB4OwogIH0KICAuYWJvdXRfX2ltZy13cmFwMi1ob21lOCAudGV4dC0yNS15ZWFycyB7CiAgICBsZWZ0OiAtMTIwcHg7CiAgfQogIC5zbGlkZXJfYmFuZXJfaG9tZTggLmJhbm5lcl9fY29udGVudC10aHJlZSAudGl0bGUgewogICAgZm9udC1zaXplOiA0MHB4OwogICAgbGluZS1oZWlnaHQ6IDUwcHg7CiAgfQogIC5tYXJrZXRpbmdfX2FyZWEtaG9tZTggLnNoYXBlLCAubWFya2V0aW5nX19hcmVhLWhvbWU4IC5zaGFwZS0yIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgewogIC5hYm91dF9faW1nLXdyYXAyLWhvbWU4IC5zaGFwZS0yIHsKICAgIHJpZ2h0OiAtMTVweDsKICB9Cn0vKiMgc291cmNlTWFwcGluZ1VSTD1tYWluLmNzcy5tYXAgKi8="}},"time_used":58,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":30,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.appear.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.802Z","timestamp":1785159464802,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/jquery.appear.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1234\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":4273,"size_decoded":1471,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"638410d8bb7fb16e34e13965914f2e44","sha1":"9a6516d6ddd6e89ae3edefdce614b7bf2579ad08","sha256":"ca479c482d27d4c0165057d670cb19e8a60feba8c6e57385d4c3b3c78d6bcee7","sha512":"94efc827cf3a3338a9d55c4b661a6047243d393a9fe93ed918383d39866b9c2fc577fec5e7dcade67026789d9e5db2de9274313d8ba4bf9f08879bb5bcb6c3bc","ssdeep":"48:wo3dm92k3yVvegTkYzSdaMxlehOBOrwR6nZNBFxDNE9l9g9A4F+4vFC8:v3DsEfRebDOrxfFjg/gSmxvFC8","tlshash":"e691020a79eb1ab54877613e9f9fb2442220503b1202d8113ceddf6caf91d68b597fd8","first_seen":"2023-03-11T22:43:23Z","last_seen":"2026-08-02T09:41:51.835177Z","times_seen":408,"resource_available":true,"data":"Ci8qCiAqIGpRdWVyeS5hcHBlYXIKICogaHR0cHM6Ly9naXRodWIuY29tL2JhczJrL2pxdWVyeS5hcHBlYXIvCiAqIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9qcXVlcnktYXBwZWFyLwogKiBodHRwOi8vYmFzMmsucnUvCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBNaWNoYWVsIEhpeHNvbgogKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBBbGV4YW5kZXIgQnJvdmlrb3YKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCkKICovCihmdW5jdGlvbiAoJCkgewogICAgJC5mbi5hcHBlYXIgPSBmdW5jdGlvbiAoZm4sIG9wdGlvbnMpIHsKCiAgICAgICAgdmFyIHNldHRpbmdzID0gJC5leHRlbmQoewoKICAgICAgICAgICAgLy9hcmJpdHJhcnkgZGF0YSB0byBwYXNzIHRvIGZuCiAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCwKCiAgICAgICAgICAgIC8vY2FsbCBmbiBvbmx5IG9uIHRoZSBmaXJzdCBhcHBlYXI/CiAgICAgICAgICAgIG9uZTogdHJ1ZSwKCiAgICAgICAgICAgIC8vIFggJiBZIGFjY3VyYWN5CiAgICAgICAgICAgIGFjY1g6IDAsCiAgICAgICAgICAgIGFjY1k6IDAKCiAgICAgICAgfSwgb3B0aW9ucyk7CgogICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIHQgPSAkKHRoaXMpOwoKICAgICAgICAgICAgLy93aGV0aGVyIHRoZSBlbGVtZW50IGlzIGN1cnJlbnRseSB2aXNpYmxlCiAgICAgICAgICAgIHQuYXBwZWFyZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmICghZm4pIHsKCiAgICAgICAgICAgICAgICAvL3RyaWdnZXIgdGhlIGN1c3RvbSBldmVudAogICAgICAgICAgICAgICAgdC50cmlnZ2VyKCdhcHBlYXInLCBzZXR0aW5ncy5kYXRhKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHcgPSAkKHdpbmRvdyk7CgogICAgICAgICAgICAvL2ZpcmVzIHRoZSBhcHBlYXIgZXZlbnQgd2hlbiBhcHByb3ByaWF0ZQogICAgICAgICAgICB2YXIgY2hlY2sgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgLy9pcyB0aGUgZWxlbWVudCBoaWRkZW4/CiAgICAgICAgICAgICAgICBpZiAoIXQuaXMoJzp2aXNpYmxlJykpIHsKCiAgICAgICAgICAgICAgICAgICAgLy9pdCBiZWNhbWUgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgdC5hcHBlYXJlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL2lzIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgdmlzaWJsZSB3aW5kb3c/CiAgICAgICAgICAgICAgICB2YXIgYSA9IHcuc2Nyb2xsTGVmdCgpOwogICAgICAgICAgICAgICAgdmFyIGIgPSB3LnNjcm9sbFRvcCgpOwogICAgICAgICAgICAgICAgdmFyIG8gPSB0Lm9mZnNldCgpOwogICAgICAgICAgICAgICAgdmFyIHggPSBvLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IG8udG9wOwoKICAgICAgICAgICAgICAgIHZhciBheCA9IHNldHRpbmdzLmFjY1g7CiAgICAgICAgICAgICAgICB2YXIgYXkgPSBzZXR0aW5ncy5hY2NZOwogICAgICAgICAgICAgICAgdmFyIHRoID0gdC5oZWlnaHQoKTsKICAgICAgICAgICAgICAgIHZhciB3aCA9IHcuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICB2YXIgdHcgPSB0LndpZHRoKCk7CiAgICAgICAgICAgICAgICB2YXIgd3cgPSB3LndpZHRoKCk7CgogICAgICAgICAgICAgICAgaWYgKHkgKyB0aCArIGF5ID49IGIgJiYKICAgICAgICAgICAgICAgICAgICB5IDw9IGIgKyB3aCArIGF5ICYmCiAgICAgICAgICAgICAgICAgICAgeCArIHR3ICsgYXggPj0gYSAmJgogICAgICAgICAgICAgICAgICAgIHggPD0gYSArIHd3ICsgYXgpIHsKCiAgICAgICAgICAgICAgICAgICAgLy90cmlnZ2VyIHRoZSBjdXN0b20gZXZlbnQKICAgICAgICAgICAgICAgICAgICBpZiAoIXQuYXBwZWFyZWQpIHQudHJpZ2dlcignYXBwZWFyJywgc2V0dGluZ3MuZGF0YSk7CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgLy9pdCBzY3JvbGxlZCBvdXQgb2YgdmlldwogICAgICAgICAgICAgICAgICAgIHQuYXBwZWFyZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vY3JlYXRlIGEgbW9kaWZpZWQgZm4gd2l0aCBzb21lIGFkZGl0aW9uYWwgbG9naWMKICAgICAgICAgICAgdmFyIG1vZGlmaWVkRm4gPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgLy9tYXJrIHRoZSBlbGVtZW50IGFzIHZpc2libGUKICAgICAgICAgICAgICAgIHQuYXBwZWFyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIC8vaXMgdGhpcyBzdXBwb3NlZCB0byBoYXBwZW4gb25seSBvbmNlPwogICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLm9uZSkgewoKICAgICAgICAgICAgICAgICAgICAvL3JlbW92ZSB0aGUgY2hlY2sKICAgICAgICAgICAgICAgICAgICB3LnVuYmluZCgnc2Nyb2xsJywgY2hlY2spOwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gJC5pbkFycmF5KGNoZWNrLCAkLmZuLmFwcGVhci5jaGVja3MpOwogICAgICAgICAgICAgICAgICAgIGlmIChpID49IDApICQuZm4uYXBwZWFyLmNoZWNrcy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy90cmlnZ2VyIHRoZSBvcmlnaW5hbCBmbgogICAgICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vYmluZCB0aGUgbW9kaWZpZWQgZm4gdG8gdGhlIGVsZW1lbnQKICAgICAgICAgICAgaWYgKHNldHRpbmdzLm9uZSkgdC5vbmUoJ2FwcGVhcicsIHNldHRpbmdzLmRhdGEsIG1vZGlmaWVkRm4pOwogICAgICAgICAgICBlbHNlIHQuYmluZCgnYXBwZWFyJywgc2V0dGluZ3MuZGF0YSwgbW9kaWZpZWRGbik7CgogICAgICAgICAgICAvL2NoZWNrIHdoZW5ldmVyIHRoZSB3aW5kb3cgc2Nyb2xscwogICAgICAgICAgICB3LnNjcm9sbChjaGVjayk7CgogICAgICAgICAgICAvL2NoZWNrIHdoZW5ldmVyIHRoZSBkb20gY2hhbmdlcwogICAgICAgICAgICAkLmZuLmFwcGVhci5jaGVja3MucHVzaChjaGVjayk7CgogICAgICAgICAgICAvL2NoZWNrIG5vdwogICAgICAgICAgICAoY2hlY2spKCk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8va2VlcCBhIHF1ZXVlIG9mIGFwcGVhcmFuY2UgY2hlY2tzCiAgICAkLmV4dGVuZCgkLmZuLmFwcGVhciwgewoKICAgICAgICBjaGVja3M6IFtdLAogICAgICAgIHRpbWVvdXQ6IG51bGwsCgogICAgICAgIC8vcHJvY2VzcyB0aGUgcXVldWUKICAgICAgICBjaGVja0FsbDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgbGVuZ3RoID0gJC5mbi5hcHBlYXIuY2hlY2tzLmxlbmd0aDsKICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDApIHdoaWxlIChsZW5ndGgtLSkgKCQuZm4uYXBwZWFyLmNoZWNrc1tsZW5ndGhdKSgpOwogICAgICAgIH0sCgogICAgICAgIC8vY2hlY2sgdGhlIHF1ZXVlIGFzeW5jaHJvbm91c2x5CiAgICAgICAgcnVuOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICgkLmZuLmFwcGVhci50aW1lb3V0KSBjbGVhclRpbWVvdXQoJC5mbi5hcHBlYXIudGltZW91dCk7CiAgICAgICAgICAgICQuZm4uYXBwZWFyLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCQuZm4uYXBwZWFyLmNoZWNrQWxsLCAyMCk7CiAgICAgICAgfQogICAgfSk7CgogICAgLy9ydW4gY2hlY2tzIHdoZW4gdGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkCiAgICAkLmVhY2goWydhcHBlbmQnLCAncHJlcGVuZCcsICdhZnRlcicsICdiZWZvcmUnLCAnYXR0cicsCiAgICAgICAgJ3JlbW92ZUF0dHInLCAnYWRkQ2xhc3MnLCAncmVtb3ZlQ2xhc3MnLCAndG9nZ2xlQ2xhc3MnLAogICAgICAgICdyZW1vdmUnLCAnY3NzJywgJ3Nob3cnLCAnaGlkZSddLCBmdW5jdGlvbiAoaSwgbikgewogICAgICAgICAgICB2YXIgb2xkID0gJC5mbltuXTsKICAgICAgICAgICAgaWYgKG9sZCkgewogICAgICAgICAgICAgICAgJC5mbltuXSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IG9sZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICQuZm4uYXBwZWFyLnJ1bigpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7Cgp9KShqUXVlcnkpOw=="}},"time_used":40,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":33,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/global/js/iziToast.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.032Z","timestamp":1785159465032,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/global/js/iziToast.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 17 Mar 2022 02:44:40 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 4784\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":18481,"size_decoded":5021,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (18398)","md5":"a05a127c793145cec6b721f14fced3e5","sha1":"5d753b1c803de12f4d2217ab0d143d4dcf047010","sha256":"ac860be79a4cfe434ea68f002638f79371d9a85a3b045a1aaf10dc98df551497","sha512":"ee5a4c561a267f7a96635cb529a5e670aebe766289fe358e6b394585db4b76d5df215cad4b358a07425deaada36d4f4e42c06c2c44d9c192f03ac1afeb9bdc64","ssdeep":"384:ShKmhCPzlc5gVCPBpcG/0CEvXArKKpQi8VREgO3MrnHzxJBkHI4505P:+K5PzlcN8DXArhpQzRHO3M7TxfGIYUP","tlshash":"6a82c894722032374aa329a960ff534a3772156ca9c641a4243fcdad5b34f8939f77f8","first_seen":"2023-03-07T01:10:25Z","last_seen":"2026-08-04T06:10:25.776928Z","times_seen":3369,"resource_available":true,"data":"LyoKKiBpemlUb2FzdCB8IHYxLjQuMAoqIGh0dHA6Ly9peml0b2FzdC5tYXJjZWxvZG9sY2UuY29tCiogYnkgTWFyY2VsbyBEb2xjZS4KKi8KIWZ1bmN0aW9uKHQsZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSh0KSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUodCk6dC5pemlUb2FzdD1lKHQpfSgidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6d2luZG93fHx0aGlzLndpbmRvd3x8dGhpcy5nbG9iYWwsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXt9LG49Iml6aVRvYXN0IixvPShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5IiksISEvTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSksaT0vQ2hyb21lLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYvR29vZ2xlIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSxzPSJ1bmRlZmluZWQiIT10eXBlb2YgSW5zdGFsbFRyaWdnZXIsYT0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxyPVsiYm90dG9tUmlnaHQiLCJib3R0b21MZWZ0IiwiYm90dG9tQ2VudGVyIiwidG9wUmlnaHQiLCJ0b3BMZWZ0IiwidG9wQ2VudGVyIiwiY2VudGVyIl0sbD17aW5mbzp7Y29sb3I6ImJsdWUiLGljb246Imljby1pbmZvIn0sc3VjY2Vzczp7Y29sb3I6ImdyZWVuIixpY29uOiJpY28tc3VjY2VzcyJ9LHdhcm5pbmc6e2NvbG9yOiJvcmFuZ2UiLGljb246Imljby13YXJuaW5nIn0sZXJyb3I6e2NvbG9yOiJyZWQiLGljb246Imljby1lcnJvciJ9LHF1ZXN0aW9uOntjb2xvcjoieWVsbG93IixpY29uOiJpY28tcXVlc3Rpb24ifX0sZD01NjgsYz17fTtlLmNoaWxkcmVuPXt9O3ZhciB1PXtpZDpudWxsLCJjbGFzcyI6IiIsdGl0bGU6IiIsdGl0bGVDb2xvcjoiIix0aXRsZVNpemU6IiIsdGl0bGVMaW5lSGVpZ2h0OiIiLG1lc3NhZ2U6IiIsbWVzc2FnZUNvbG9yOiIiLG1lc3NhZ2VTaXplOiIiLG1lc3NhZ2VMaW5lSGVpZ2h0OiIiLGJhY2tncm91bmRDb2xvcjoiIix0aGVtZToibGlnaHQiLGNvbG9yOiIiLGljb246IiIsaWNvblRleHQ6IiIsaWNvbkNvbG9yOiIiLGljb25Vcmw6bnVsbCxpbWFnZToiIixpbWFnZVdpZHRoOjUwLG1heFdpZHRoOm51bGwsemluZGV4Om51bGwsbGF5b3V0OjEsYmFsbG9vbjohMSxjbG9zZTohMCxjbG9zZU9uRXNjYXBlOiExLGNsb3NlT25DbGljazohMSxkaXNwbGF5TW9kZTowLHBvc2l0aW9uOiJib3R0b21SaWdodCIsdGFyZ2V0OiIiLHRhcmdldEZpcnN0OiEwLHRpbWVvdXQ6NWUzLHJ0bDohMSxhbmltYXRlSW5zaWRlOiEwLGRyYWc6ITAscGF1c2VPbkhvdmVyOiEwLHJlc2V0T25Ib3ZlcjohMSxwcm9ncmVzc0JhcjohMCxwcm9ncmVzc0JhckNvbG9yOiIiLHByb2dyZXNzQmFyRWFzaW5nOiJsaW5lYXIiLG92ZXJsYXk6ITEsb3ZlcmxheUNsb3NlOiExLG92ZXJsYXlDb2xvcjoicmdiYSgwLCAwLCAwLCAwLjYpIix0cmFuc2l0aW9uSW46ImZhZGVJblVwIix0cmFuc2l0aW9uT3V0OiJmYWRlT3V0Iix0cmFuc2l0aW9uSW5Nb2JpbGU6ImZhZGVJblVwIix0cmFuc2l0aW9uT3V0TW9iaWxlOiJmYWRlT3V0RG93biIsYnV0dG9uczp7fSxpbnB1dHM6e30sb25PcGVuaW5nOmZ1bmN0aW9uKCl7fSxvbk9wZW5lZDpmdW5jdGlvbigpe30sb25DbG9zaW5nOmZ1bmN0aW9uKCl7fSxvbkNsb3NlZDpmdW5jdGlvbigpe319O2lmKCJyZW1vdmUiaW4gRWxlbWVudC5wcm90b3R5cGV8fChFbGVtZW50LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX0pLCJmdW5jdGlvbiIhPXR5cGVvZiB3aW5kb3cuQ3VzdG9tRXZlbnQpe3ZhciBwPWZ1bmN0aW9uKHQsZSl7ZT1lfHx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9O3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO3JldHVybiBuLmluaXRDdXN0b21FdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUsZS5kZXRhaWwpLG59O3AucHJvdG90eXBlPXdpbmRvdy5FdmVudC5wcm90b3R5cGUsd2luZG93LkN1c3RvbUV2ZW50PXB9dmFyIG09ZnVuY3Rpb24odCxlLG4pe2lmKCJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKWZvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiZlLmNhbGwobix0W29dLG8sdCk7ZWxzZSBpZih0KWZvcih2YXIgaT0wLHM9dC5sZW5ndGg7cz5pO2krKyllLmNhbGwobix0W2ldLGksdCl9LGc9ZnVuY3Rpb24odCxlKXt2YXIgbj17fTtyZXR1cm4gbSh0LGZ1bmN0aW9uKGUsbyl7bltvXT10W29dfSksbShlLGZ1bmN0aW9uKHQsbyl7bltvXT1lW29dfSksbn0sZj1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3Iobi5pbm5lckhUTUw9dDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKTtyZXR1cm4gZX0sdj1mdW5jdGlvbih0KXt2YXIgZT1idG9hKGVuY29kZVVSSUNvbXBvbmVudCh0KSk7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKX0seT1mdW5jdGlvbih0KXtyZXR1cm4iIyI9PXQuc3Vic3RyaW5nKDAsMSl8fCJyZ2IiPT10LnN1YnN0cmluZygwLDMpfHwiaHNsIj09dC5zdWJzdHJpbmcoMCwzKX0saD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGJ0b2EoYXRvYih0KSk9PXR9Y2F0Y2goZSl7cmV0dXJuITF9fSxiPWZ1bmN0aW9uKCl7cmV0dXJue21vdmU6ZnVuY3Rpb24odCxlLG8sYSl7dmFyIHIsbD0uMyxkPTE4MDswIT09YSYmKHQuY2xhc3NMaXN0LmFkZChuKyItZHJhZ2dlZCIpLHQuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVYKCIrYSsicHgpIixhPjA/KHI9KGQtYSkvZCxsPnImJmUuaGlkZShnKG8se3RyYW5zaXRpb25PdXQ6ImZhZGVPdXRSaWdodCIsdHJhbnNpdGlvbk91dE1vYmlsZToiZmFkZU91dFJpZ2h0In0pLHQsImRyYWciKSk6KHI9KGQrYSkvZCxsPnImJmUuaGlkZShnKG8se3RyYW5zaXRpb25PdXQ6ImZhZGVPdXRMZWZ0Iix0cmFuc2l0aW9uT3V0TW9iaWxlOiJmYWRlT3V0TGVmdCJ9KSx0LCJkcmFnIikpLHQuc3R5bGUub3BhY2l0eT1yLGw+ciYmKChpfHxzKSYmKHQuc3R5bGUubGVmdD1hKyJweCIpLHQucGFyZW50Tm9kZS5zdHlsZS5vcGFjaXR5PWwsdGhpcy5zdG9wTW92aW5nKHQsbnVsbCkpKX0sc3RhcnRNb3Zpbmc6ZnVuY3Rpb24odCxlLG4sbyl7bz1vfHx3aW5kb3cuZXZlbnQ7dmFyIGk9YT9vLnRvdWNoZXNbMF0uY2xpZW50WDpvLmNsaWVudFgscz10LnN0eWxlLnRyYW5zZm9ybS5yZXBsYWNlKCJweCkiLCIiKTtzPXMucmVwbGFjZSgidHJhbnNsYXRlWCgiLCIiKTt2YXIgcj1pLXM7bi50cmFuc2l0aW9uSW4mJnQuY2xhc3NMaXN0LnJlbW92ZShuLnRyYW5zaXRpb25Jbiksbi50cmFuc2l0aW9uSW5Nb2JpbGUmJnQuY2xhc3NMaXN0LnJlbW92ZShuLnRyYW5zaXRpb25Jbk1vYmlsZSksdC5zdHlsZS50cmFuc2l0aW9uPSIiLGE/ZG9jdW1lbnQub250b3VjaG1vdmU9ZnVuY3Rpb24obyl7by5wcmV2ZW50RGVmYXVsdCgpLG89b3x8d2luZG93LmV2ZW50O3ZhciBpPW8udG91Y2hlc1swXS5jbGllbnRYLHM9aS1yO2IubW92ZSh0LGUsbixzKX06ZG9jdW1lbnQub25tb3VzZW1vdmU9ZnVuY3Rpb24obyl7by5wcmV2ZW50RGVmYXVsdCgpLG89b3x8d2luZG93LmV2ZW50O3ZhciBpPW8uY2xpZW50WCxzPWktcjtiLm1vdmUodCxlLG4scyl9fSxzdG9wTW92aW5nOmZ1bmN0aW9uKHQsZSl7YT9kb2N1bWVudC5vbnRvdWNobW92ZT1mdW5jdGlvbigpe306ZG9jdW1lbnQub25tb3VzZW1vdmU9ZnVuY3Rpb24oKXt9LHQuc3R5bGUub3BhY2l0eT0iIix0LnN0eWxlLnRyYW5zZm9ybT0iIix0LmNsYXNzTGlzdC5jb250YWlucyhuKyItZHJhZ2dlZCIpJiYodC5jbGFzc0xpc3QucmVtb3ZlKG4rIi1kcmFnZ2VkIiksdC5zdHlsZS50cmFuc2l0aW9uPSJ0cmFuc2Zvcm0gMC40cyBlYXNlLCBvcGFjaXR5IDAuNHMgZWFzZSIsc2V0VGltZW91dChmdW5jdGlvbigpe3Quc3R5bGUudHJhbnNpdGlvbj0iIn0sNDAwKSl9fX0oKTtyZXR1cm4gZS5zZXRTZXR0aW5nPWZ1bmN0aW9uKHQsbixvKXtlLmNoaWxkcmVuW3RdW25dPW99LGUuZ2V0U2V0dGluZz1mdW5jdGlvbih0LG4pe3JldHVybiBlLmNoaWxkcmVuW3RdW25dfSxlLmRlc3Ryb3k9ZnVuY3Rpb24oKXttKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK24rIi1vdmVybGF5IiksZnVuY3Rpb24odCxlKXt0LnJlbW92ZSgpfSksbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIituKyItd3JhcHBlciIpLGZ1bmN0aW9uKHQsZSl7dC5yZW1vdmUoKX0pLG0oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLiIrbiksZnVuY3Rpb24odCxlKXt0LnJlbW92ZSgpfSksdGhpcy5jaGlsZHJlbj17fSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG4rIi1vcGVuZWQiLHt9LCExKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG4rIi1vcGVuaW5nIix7fSwhMSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuKyItY2xvc2luZyIse30sITEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobisiLWNsb3NlZCIse30sITEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIix7fSwhMSksYz17fX0sZS5zZXR0aW5ncz1mdW5jdGlvbih0KXtlLmRlc3Ryb3koKSxjPXQsdT1nKHUsdHx8e30pfSxtKGwsZnVuY3Rpb24odCxuKXtlW25dPWZ1bmN0aW9uKGUpe3ZhciBuPWcoYyxlfHx7fSk7bj1nKHQsbnx8e30pLHRoaXMuc2hvdyhuKX19KSxlLnByb2dyZXNzPWZ1bmN0aW9uKHQsZSxvKXt2YXIgaT10aGlzLHM9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtaXppVG9hc3QtcmVmIiksYT1nKHRoaXMuY2hpbGRyZW5bc10sdHx8e30pLHI9ZS5xdWVyeVNlbGVjdG9yKCIuIituKyItcHJvZ3Jlc3NiYXIgZGl2Iik7cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCI9PXR5cGVvZiBhLnRpbWUuUkVNQUlOSU5HJiYoZS5jbGFzc0xpc3QucmVtb3ZlKG4rIi1yZXNldGVkIiksbnVsbCE9PXImJihyLnN0eWxlLnRyYW5zaXRpb249IndpZHRoICIrYS50aW1lb3V0KyJtcyAiK2EucHJvZ3Jlc3NCYXJFYXNpbmcsci5zdHlsZS53aWR0aD0iMCUiKSxhLnRpbWUuU1RBUlQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksYS50aW1lLkVORD1hLnRpbWUuU1RBUlQrYS50aW1lb3V0LGEudGltZS5USU1FUj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEudGltZS5USU1FUiksZS5jbGFzc0xpc3QuY29udGFpbnMobisiLWNsb3NpbmciKXx8KGkuaGlkZShhLGUsInRpbWVvdXQiKSwiZnVuY3Rpb24iPT10eXBlb2YgbyYmby5hcHBseShpKSl9LGEudGltZW91dCksaS5zZXRTZXR0aW5nKHMsInRpbWUiLGEudGltZSkpfSxwYXVzZTpmdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS50aW1lLlNUQVJUJiYhZS5jbGFzc0xpc3QuY29udGFpbnMobisiLXBhdXNlZCIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMobisiLXJlc2V0ZWQiKSl7aWYoZS5jbGFzc0xpc3QuYWRkKG4rIi1wYXVzZWQiKSxhLnRpbWUuUkVNQUlOSU5HPWEudGltZS5FTkQtKG5ldyBEYXRlKS5nZXRUaW1lKCksY2xlYXJUaW1lb3V0KGEudGltZS5USU1FUiksaS5zZXRTZXR0aW5nKHMsInRpbWUiLGEudGltZSksbnVsbCE9PXIpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpLGw9dC5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIpO3Iuc3R5bGUudHJhbnNpdGlvbj0ibm9uZSIsci5zdHlsZS53aWR0aD1sfSJmdW5jdGlvbiI9PXR5cGVvZiBvJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5hcHBseShpKX0sMTApfX0scmVzdW1lOmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnRpbWUuUkVNQUlOSU5HPyhlLmNsYXNzTGlzdC5yZW1vdmUobisiLXBhdXNlZCIpLG51bGwhPT1yJiYoci5zdHlsZS50cmFuc2l0aW9uPSJ3aWR0aCAiK2EudGltZS5SRU1BSU5JTkcrIm1zICIrYS5wcm9ncmVzc0JhckVhc2luZyxyLnN0eWxlLndpZHRoPSIwJSIpLGEudGltZS5FTkQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkrYS50aW1lLlJFTUFJTklORyxhLnRpbWUuVElNRVI9c2V0VGltZW91dChmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLnRpbWUuVElNRVIpLGUuY2xhc3NMaXN0LmNvbnRhaW5zKG4rIi1jbG9zaW5nIil8fChpLmhpZGUoYSxlLCJ0aW1lb3V0IiksImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8uYXBwbHkoaSkpfSxhLnRpbWUuUkVNQUlOSU5HKSxpLnNldFNldHRpbmcocywidGltZSIsYS50aW1lKSk6dGhpcy5zdGFydCgpfSxyZXNldDpmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLnRpbWUuVElNRVIpLGRlbGV0ZSBhLnRpbWUuUkVNQUlOSU5HLGkuc2V0U2V0dGluZyhzLCJ0aW1lIixhLnRpbWUpLGUuY2xhc3NMaXN0LmFkZChuKyItcmVzZXRlZCIpLGUuY2xhc3NMaXN0LnJlbW92ZShuKyItcGF1c2VkIiksbnVsbCE9PXImJihyLnN0eWxlLnRyYW5zaXRpb249Im5vbmUiLHIuc3R5bGUud2lkdGg9IjEwMCUiKSwiZnVuY3Rpb24iPT10eXBlb2YgbyYmc2V0VGltZW91dChmdW5jdGlvbigpe28uYXBwbHkoaSl9LDEwKX19fSxlLmhpZGU9ZnVuY3Rpb24odCxlLGkpeyJvYmplY3QiIT10eXBlb2YgZSYmKGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSk7dmFyIHM9dGhpcyxhPWcodGhpcy5jaGlsZHJlbltlLmdldEF0dHJpYnV0ZSgiZGF0YS1pemlUb2FzdC1yZWYiKV0sdHx8e30pO2EuY2xvc2VkQnk9aXx8bnVsbCxkZWxldGUgYS50aW1lLlJFTUFJTklORyxlLmNsYXNzTGlzdC5hZGQobisiLWNsb3NpbmciKSxmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi4iK24rIi1vdmVybGF5Iik7aWYobnVsbCE9PXQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWl6aVRvYXN0LXJlZiIpO2U9ZS5zcGxpdCgiLCIpO3ZhciBvPWUuaW5kZXhPZihTdHJpbmcoYS5yZWYpKTstMSE9PW8mJmUuc3BsaWNlKG8sMSksdC5zZXRBdHRyaWJ1dGUoImRhdGEtaXppVG9hc3QtcmVmIixlLmpvaW4oKSksMD09PWUubGVuZ3RoJiYodC5jbGFzc0xpc3QucmVtb3ZlKCJmYWRlSW4iKSx0LmNsYXNzTGlzdC5hZGQoImZhZGVPdXQiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5yZW1vdmUoKX0sNzAwKSl9fSgpLGEudHJhbnNpdGlvbkluJiZlLmNsYXNzTGlzdC5yZW1vdmUoYS50cmFuc2l0aW9uSW4pLGEudHJhbnNpdGlvbkluTW9iaWxlJiZlLmNsYXNzTGlzdC5yZW1vdmUoYS50cmFuc2l0aW9uSW5Nb2JpbGUpLG98fHdpbmRvdy5pbm5lcldpZHRoPD1kP2EudHJhbnNpdGlvbk91dE1vYmlsZSYmZS5jbGFzc0xpc3QuYWRkKGEudHJhbnNpdGlvbk91dE1vYmlsZSk6YS50cmFuc2l0aW9uT3V0JiZlLmNsYXNzTGlzdC5hZGQoYS50cmFuc2l0aW9uT3V0KTt2YXIgcj1lLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0O2UucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQ9cisicHgiLGUuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsKCFvfHx3aW5kb3cuaW5uZXJXaWR0aD5kKSYmKGUucGFyZW50Tm9kZS5zdHlsZS50cmFuc2l0aW9uRGVsYXk9IjAuMnMiKTt0cnl7dmFyIGw9bmV3IEN1c3RvbUV2ZW50KG4rIi1jbG9zaW5nIix7ZGV0YWlsOmEsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChsKX1jYXRjaChjKXtjb25zb2xlLndhcm4oYyl9c2V0VGltZW91dChmdW5jdGlvbigpe2UucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQ9IjBweCIsZS5wYXJlbnROb2RlLnN0eWxlLm92ZXJmbG93PSIiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkZWxldGUgcy5jaGlsZHJlblthLnJlZl0sZS5wYXJlbnROb2RlLnJlbW92ZSgpO3RyeXt2YXIgdD1uZXcgQ3VzdG9tRXZlbnQobisiLWNsb3NlZCIse2RldGFpbDphLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQodCl9Y2F0Y2gobyl7Y29uc29sZS53YXJuKG8pfSJ1bmRlZmluZWQiIT10eXBlb2YgYS5vbkNsb3NlZCYmYS5vbkNsb3NlZC5hcHBseShudWxsLFthLGUsaV0pfSwxZTMpfSwyMDApLCJ1bmRlZmluZWQiIT10eXBlb2YgYS5vbkNsb3NpbmcmJmEub25DbG9zaW5nLmFwcGx5KG51bGwsW2EsZSxpXSl9LGUuc2hvdz1mdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ZyhjLHR8fHt9KTtpZihzPWcodSxzKSxzLnRpbWU9e30sbnVsbD09PXMuaWQmJihzLmlkPXYocy50aXRsZStzLm1lc3NhZ2Urcy5jb2xvcikpLDE9PT1zLmRpc3BsYXlNb2RlfHwib25jZSI9PXMuZGlzcGxheU1vZGUpdHJ5e2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK24rIiMiK3MuaWQpLmxlbmd0aD4wKXJldHVybiExfWNhdGNoKGwpe2NvbnNvbGUud2FybigiWyIrbisiXSBDb3VsZCBub3QgZmluZCBhbiBlbGVtZW50IHdpdGggdGhpcyBzZWxlY3RvcjogIyIrcy5pZCsiLiBUcnkgdG8gc2V0IGFuIHZhbGlkIGlkLiIpfWlmKDI9PT1zLmRpc3BsYXlNb2RlfHwicmVwbGFjZSI9PXMuZGlzcGxheU1vZGUpdHJ5e20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLiIrbisiIyIrcy5pZCksZnVuY3Rpb24odCxlKXtpLmhpZGUocyx0LCJyZXBsYWNlZCIpfSl9Y2F0Y2gobCl7Y29uc29sZS53YXJuKCJbIituKyJdIENvdWxkIG5vdCBmaW5kIGFuIGVsZW1lbnQgd2l0aCB0aGlzIHNlbGVjdG9yOiAjIitzLmlkKyIuIFRyeSB0byBzZXQgYW4gdmFsaWQgaWQuIil9cy5yZWY9KG5ldyBEYXRlKS5nZXRUaW1lKCkrTWF0aC5mbG9vcigxZTcqTWF0aC5yYW5kb20oKSsxKSxlLmNoaWxkcmVuW3MucmVmXT1zO3ZhciBwPXtib2R5OmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKSxvdmVybGF5OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRvYXN0OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRvYXN0Qm9keTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0b2FzdFRleHRzOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRvYXN0Q2Fwc3VsZTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxjb3Zlcjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxidXR0b25zOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGlucHV0czpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpY29uOnMuaWNvblVybD9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpIiksd3JhcHBlcjpudWxsfTtwLnRvYXN0LnNldEF0dHJpYnV0ZSgiZGF0YS1pemlUb2FzdC1yZWYiLHMucmVmKSxwLnRvYXN0LmFwcGVuZENoaWxkKHAudG9hc3RCb2R5KSxwLnRvYXN0Q2Fwc3VsZS5hcHBlbmRDaGlsZChwLnRvYXN0KSxmdW5jdGlvbigpe2lmKHAudG9hc3QuY2xhc3NMaXN0LmFkZChuKSxwLnRvYXN0LmNsYXNzTGlzdC5hZGQobisiLW9wZW5pbmciKSxwLnRvYXN0Q2Fwc3VsZS5jbGFzc0xpc3QuYWRkKG4rIi1jYXBzdWxlIikscC50b2FzdEJvZHkuY2xhc3NMaXN0LmFkZChuKyItYm9keSIpLHAudG9hc3RUZXh0cy5jbGFzc0xpc3QuYWRkKG4rIi10ZXh0cyIpLG98fHdpbmRvdy5pbm5lcldpZHRoPD1kP3MudHJhbnNpdGlvbkluTW9iaWxlJiZwLnRvYXN0LmNsYXNzTGlzdC5hZGQocy50cmFuc2l0aW9uSW5Nb2JpbGUpOnMudHJhbnNpdGlvbkluJiZwLnRvYXN0LmNsYXNzTGlzdC5hZGQocy50cmFuc2l0aW9uSW4pLHNbImNsYXNzIl0pe3ZhciB0PXNbImNsYXNzIl0uc3BsaXQoIiAiKTttKHQsZnVuY3Rpb24odCxlKXtwLnRvYXN0LmNsYXNzTGlzdC5hZGQodCl9KX1zLmlkJiYocC50b2FzdC5pZD1zLmlkKSxzLnJ0bCYmKHAudG9hc3QuY2xhc3NMaXN0LmFkZChuKyItcnRsIikscC50b2FzdC5zZXRBdHRyaWJ1dGUoImRpciIsInJ0bCIpKSxzLmxheW91dD4xJiZwLnRvYXN0LmNsYXNzTGlzdC5hZGQobisiLWxheW91dCIrcy5sYXlvdXQpLHMuYmFsbG9vbiYmcC50b2FzdC5jbGFzc0xpc3QuYWRkKG4rIi1iYWxsb29uIikscy5tYXhXaWR0aCYmKGlzTmFOKHMubWF4V2lkdGgpP3AudG9hc3Quc3R5bGUubWF4V2lkdGg9cy5tYXhXaWR0aDpwLnRvYXN0LnN0eWxlLm1heFdpZHRoPXMubWF4V2lkdGgrInB4IiksIiI9PT1zLnRoZW1lJiYibGlnaHQiPT09cy50aGVtZXx8cC50b2FzdC5jbGFzc0xpc3QuYWRkKG4rIi10aGVtZS0iK3MudGhlbWUpLHMuY29sb3ImJih5KHMuY29sb3IpP3AudG9hc3Quc3R5bGUuYmFja2dyb3VuZD1zLmNvbG9yOnAudG9hc3QuY2xhc3NMaXN0LmFkZChuKyItY29sb3ItIitzLmNvbG9yKSkscy5iYWNrZ3JvdW5kQ29sb3ImJihwLnRvYXN0LnN0eWxlLmJhY2tncm91bmQ9cy5iYWNrZ3JvdW5kQ29sb3Iscy5iYWxsb29uJiYocC50b2FzdC5zdHlsZS5ib3JkZXJDb2xvcj1zLmJhY2tncm91bmRDb2xvcikpfSgpLGZ1bmN0aW9uKCl7cy5pbWFnZSYmKHAuY292ZXIuY2xhc3NMaXN0LmFkZChuKyItY292ZXIiKSxwLmNvdmVyLnN0eWxlLndpZHRoPXMuaW1hZ2VXaWR0aCsicHgiLGgocy5pbWFnZS5yZXBsYWNlKC8gL2csIiIpKT9wLmNvdmVyLnN0eWxlLmJhY2tncm91bmRJbWFnZT0idXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiK3MuaW1hZ2UucmVwbGFjZSgvIC9nLCIiKSsiKSI6cC5jb3Zlci5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9InVybCgiK3MuaW1hZ2UrIikiLHMucnRsP3AudG9hc3RCb2R5LnN0eWxlLm1hcmdpblJpZ2h0PXMuaW1hZ2VXaWR0aCsxMCsicHgiOnAudG9hc3RCb2R5LnN0eWxlLm1hcmdpbkxlZnQ9cy5pbWFnZVdpZHRoKzEwKyJweCIscC50b2FzdC5hcHBlbmRDaGlsZChwLmNvdmVyKSl9KCksZnVuY3Rpb24oKXtzLmNsb3NlPyhwLmJ1dHRvbkNsb3NlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpLHAuYnV0dG9uQ2xvc2UudHlwZT0iYnV0dG9uIixwLmJ1dHRvbkNsb3NlLmNsYXNzTGlzdC5hZGQobisiLWNsb3NlIikscC5idXR0b25DbG9zZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24odCl7dC50YXJnZXQ7aS5oaWRlKHMscC50b2FzdCwiYnV0dG9uIil9KSxwLnRvYXN0LmFwcGVuZENoaWxkKHAuYnV0dG9uQ2xvc2UpKTpzLnJ0bD9wLnRvYXN0LnN0eWxlLnBhZGRpbmdMZWZ0PSIxOHB4IjpwLnRvYXN0LnN0eWxlLnBhZGRpbmdSaWdodD0iMThweCJ9KCksZnVuY3Rpb24oKXtzLnByb2dyZXNzQmFyJiYocC5wcm9ncmVzc0Jhcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxwLnByb2dyZXNzQmFyRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHAucHJvZ3Jlc3NCYXIuY2xhc3NMaXN0LmFkZChuKyItcHJvZ3Jlc3NiYXIiKSxwLnByb2dyZXNzQmFyRGl2LnN0eWxlLmJhY2tncm91bmQ9cy5wcm9ncmVzc0JhckNvbG9yLHAucHJvZ3Jlc3NCYXIuYXBwZW5kQ2hpbGQocC5wcm9ncmVzc0JhckRpdikscC50b2FzdC5hcHBlbmRDaGlsZChwLnByb2dyZXNzQmFyKSkscy50aW1lb3V0JiYocy5wYXVzZU9uSG92ZXImJiFzLnJlc2V0T25Ib3ZlciYmKHAudG9hc3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24odCl7aS5wcm9ncmVzcyhzLHAudG9hc3QpLnBhdXNlKCl9KSxwLnRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKHQpe2kucHJvZ3Jlc3MocyxwLnRvYXN0KS5yZXN1bWUoKX0pKSxzLnJlc2V0T25Ib3ZlciYmKHAudG9hc3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24odCl7aS5wcm9ncmVzcyhzLHAudG9hc3QpLnJlc2V0KCl9KSxwLnRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKHQpe2kucHJvZ3Jlc3MocyxwLnRvYXN0KS5zdGFydCgpfSkpKX0oKSxmdW5jdGlvbigpe3MuaWNvblVybD8ocC5pY29uLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4rIi1pY29uIikscC5pY29uLnNldEF0dHJpYnV0ZSgic3JjIixzLmljb25VcmwpKTpzLmljb24mJihwLmljb24uc2V0QXR0cmlidXRlKCJjbGFzcyIsbisiLWljb24gIitzLmljb24pLHMuaWNvblRleHQmJnAuaWNvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzLmljb25UZXh0KSkscy5pY29uQ29sb3ImJihwLmljb24uc3R5bGUuY29sb3I9cy5pY29uQ29sb3IpKSwocy5pY29ufHxzLmljb25VcmwpJiYocy5ydGw/cC50b2FzdEJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PSIzM3B4IjpwLnRvYXN0Qm9keS5zdHlsZS5wYWRkaW5nTGVmdD0iMzNweCIscC50b2FzdEJvZHkuYXBwZW5kQ2hpbGQocC5pY29uKSl9KCksZnVuY3Rpb24oKXtzLnRpdGxlLmxlbmd0aD4wJiYocC5zdHJvbmc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Ryb25nIikscC5zdHJvbmcuY2xhc3NMaXN0LmFkZChuKyItdGl0bGUiKSxwLnN0cm9uZy5hcHBlbmRDaGlsZChmKHMudGl0bGUpKSxwLnRvYXN0VGV4dHMuYXBwZW5kQ2hpbGQocC5zdHJvbmcpLHMudGl0bGVDb2xvciYmKHAuc3Ryb25nLnN0eWxlLmNvbG9yPXMudGl0bGVDb2xvcikscy50aXRsZVNpemUmJihpc05hTihzLnRpdGxlU2l6ZSk/cC5zdHJvbmcuc3R5bGUuZm9udFNpemU9cy50aXRsZVNpemU6cC5zdHJvbmcuc3R5bGUuZm9udFNpemU9cy50aXRsZVNpemUrInB4Iikscy50aXRsZUxpbmVIZWlnaHQmJihpc05hTihzLnRpdGxlU2l6ZSk/cC5zdHJvbmcuc3R5bGUubGluZUhlaWdodD1zLnRpdGxlTGluZUhlaWdodDpwLnN0cm9uZy5zdHlsZS5saW5lSGVpZ2h0PXMudGl0bGVMaW5lSGVpZ2h0KyJweCIpKSxzLm1lc3NhZ2UubGVuZ3RoPjAmJihwLnA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpLHAucC5jbGFzc0xpc3QuYWRkKG4rIi1tZXNzYWdlIikscC5wLmFwcGVuZENoaWxkKGYocy5tZXNzYWdlKSkscC50b2FzdFRleHRzLmFwcGVuZENoaWxkKHAucCkscy5tZXNzYWdlQ29sb3ImJihwLnAuc3R5bGUuY29sb3I9cy5tZXNzYWdlQ29sb3IpLHMubWVzc2FnZVNpemUmJihpc05hTihzLnRpdGxlU2l6ZSk/cC5wLnN0eWxlLmZvbnRTaXplPXMubWVzc2FnZVNpemU6cC5wLnN0eWxlLmZvbnRTaXplPXMubWVzc2FnZVNpemUrInB4Iikscy5tZXNzYWdlTGluZUhlaWdodCYmKGlzTmFOKHMudGl0bGVTaXplKT9wLnAuc3R5bGUubGluZUhlaWdodD1zLm1lc3NhZ2VMaW5lSGVpZ2h0OnAucC5zdHlsZS5saW5lSGVpZ2h0PXMubWVzc2FnZUxpbmVIZWlnaHQrInB4IikpLHMudGl0bGUubGVuZ3RoPjAmJnMubWVzc2FnZS5sZW5ndGg+MCYmKHMucnRsP3Auc3Ryb25nLnN0eWxlLm1hcmdpbkxlZnQ9IjEwcHgiOjI9PT1zLmxheW91dHx8cy5ydGx8fChwLnN0cm9uZy5zdHlsZS5tYXJnaW5SaWdodD0iMTBweCIpKX0oKSxwLnRvYXN0Qm9keS5hcHBlbmRDaGlsZChwLnRvYXN0VGV4dHMpO3ZhciBMOyFmdW5jdGlvbigpe3MuaW5wdXRzLmxlbmd0aD4wJiYocC5pbnB1dHMuY2xhc3NMaXN0LmFkZChuKyItaW5wdXRzIiksbShzLmlucHV0cyxmdW5jdGlvbih0LGUpe3AuaW5wdXRzLmFwcGVuZENoaWxkKGYodFswXSkpLEw9cC5pbnB1dHMuY2hpbGROb2RlcyxMW2VdLmNsYXNzTGlzdC5hZGQobisiLWlucHV0cy1jaGlsZCIpLHRbM10mJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtMW2VdLmZvY3VzKCl9LDMwMCksTFtlXS5hZGRFdmVudExpc3RlbmVyKHRbMV0sZnVuY3Rpb24oZSl7dmFyIG49dFsyXTtyZXR1cm4gbihpLHAudG9hc3QsdGhpcyxlKX0pfSkscC50b2FzdEJvZHkuYXBwZW5kQ2hpbGQocC5pbnB1dHMpKX0oKSxmdW5jdGlvbigpe3MuYnV0dG9ucy5sZW5ndGg+MCYmKHAuYnV0dG9ucy5jbGFzc0xpc3QuYWRkKG4rIi1idXR0b25zIiksbShzLmJ1dHRvbnMsZnVuY3Rpb24odCxlKXtwLmJ1dHRvbnMuYXBwZW5kQ2hpbGQoZih0WzBdKSk7dmFyIG89cC5idXR0b25zLmNoaWxkTm9kZXM7b1tlXS5jbGFzc0xpc3QuYWRkKG4rIi1idXR0b25zLWNoaWxkIiksdFsyXSYmc2V0VGltZW91dChmdW5jdGlvbigpe29bZV0uZm9jdXMoKX0sMzAwKSxvW2VdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49dFsxXTtyZXR1cm4gbihpLHAudG9hc3QsdGhpcyxlLEwpfSl9KSkscC50b2FzdEJvZHkuYXBwZW5kQ2hpbGQocC5idXR0b25zKX0oKSxzLm1lc3NhZ2UubGVuZ3RoPjAmJihzLmlucHV0cy5sZW5ndGg+MHx8cy5idXR0b25zLmxlbmd0aD4wKSYmKHAucC5zdHlsZS5tYXJnaW5Cb3R0b209IjAiKSwocy5pbnB1dHMubGVuZ3RoPjB8fHMuYnV0dG9ucy5sZW5ndGg+MCkmJihzLnJ0bD9wLnRvYXN0VGV4dHMuc3R5bGUubWFyZ2luTGVmdD0iMTBweCI6cC50b2FzdFRleHRzLnN0eWxlLm1hcmdpblJpZ2h0PSIxMHB4IixzLmlucHV0cy5sZW5ndGg+MCYmcy5idXR0b25zLmxlbmd0aD4wJiYocy5ydGw/cC5pbnB1dHMuc3R5bGUubWFyZ2luTGVmdD0iOHB4IjpwLmlucHV0cy5zdHlsZS5tYXJnaW5SaWdodD0iOHB4IikpLGZ1bmN0aW9uKCl7cC50b2FzdENhcHN1bGUuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQ9cC50b2FzdC5vZmZzZXRIZWlnaHQsZT1wLnRvYXN0LmN1cnJlbnRTdHlsZXx8d2luZG93LmdldENvbXB1dGVkU3R5bGUocC50b2FzdCksbj1lLm1hcmdpblRvcDtuPW4uc3BsaXQoInB4Iiksbj1wYXJzZUludChuWzBdKTt2YXIgbz1lLm1hcmdpbkJvdHRvbTtvPW8uc3BsaXQoInB4Iiksbz1wYXJzZUludChvWzBdKSxwLnRvYXN0Q2Fwc3VsZS5zdHlsZS52aXNpYmlsaXR5PSIiLHAudG9hc3RDYXBzdWxlLnN0eWxlLmhlaWdodD10K28rbisicHgiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtwLnRvYXN0Q2Fwc3VsZS5zdHlsZS5oZWlnaHQ9ImF1dG8iLHMudGFyZ2V0JiYocC50b2FzdENhcHN1bGUuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiKX0sNTAwKSxzLnRpbWVvdXQmJmkucHJvZ3Jlc3MocyxwLnRvYXN0KS5zdGFydCgpfSwxMDApfSgpLGZ1bmN0aW9uKCl7dmFyIHQ9cy5wb3NpdGlvbjtpZihzLnRhcmdldClwLndyYXBwZXI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzLnRhcmdldCkscC53cmFwcGVyLmNsYXNzTGlzdC5hZGQobisiLXRhcmdldCIpLHMudGFyZ2V0Rmlyc3Q/cC53cmFwcGVyLmluc2VydEJlZm9yZShwLnRvYXN0Q2Fwc3VsZSxwLndyYXBwZXIuZmlyc3RDaGlsZCk6cC53cmFwcGVyLmFwcGVuZENoaWxkKHAudG9hc3RDYXBzdWxlKTtlbHNle2lmKC0xPT1yLmluZGV4T2Yocy5wb3NpdGlvbikpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJbIituKyJdIEluY29ycmVjdCBwb3NpdGlvbi5cbkl0IGNhbiBiZSDigLogIityKTt0PW98fHdpbmRvdy5pbm5lcldpZHRoPD1kPyJib3R0b21MZWZ0Ij09cy5wb3NpdGlvbnx8ImJvdHRvbVJpZ2h0Ij09cy5wb3NpdGlvbnx8ImJvdHRvbUNlbnRlciI9PXMucG9zaXRpb24/bisiLXdyYXBwZXItYm90dG9tQ2VudGVyIjoidG9wTGVmdCI9PXMucG9zaXRpb258fCJ0b3BSaWdodCI9PXMucG9zaXRpb258fCJ0b3BDZW50ZXIiPT1zLnBvc2l0aW9uP24rIi13cmFwcGVyLXRvcENlbnRlciI6bisiLXdyYXBwZXItY2VudGVyIjpuKyItd3JhcHBlci0iK3QscC53cmFwcGVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi4iK24rIi13cmFwcGVyLiIrdCkscC53cmFwcGVyfHwocC53cmFwcGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHAud3JhcHBlci5jbGFzc0xpc3QuYWRkKG4rIi13cmFwcGVyIikscC53cmFwcGVyLmNsYXNzTGlzdC5hZGQodCksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwLndyYXBwZXIpKSwidG9wTGVmdCI9PXMucG9zaXRpb258fCJ0b3BDZW50ZXIiPT1zLnBvc2l0aW9ufHwidG9wUmlnaHQiPT1zLnBvc2l0aW9uP3Aud3JhcHBlci5pbnNlcnRCZWZvcmUocC50b2FzdENhcHN1bGUscC53cmFwcGVyLmZpcnN0Q2hpbGQpOnAud3JhcHBlci5hcHBlbmRDaGlsZChwLnRvYXN0Q2Fwc3VsZSl9aXNOYU4ocy56aW5kZXgpP2NvbnNvbGUud2FybigiWyIrbisiXSBJbnZhbGlkIHpJbmRleC4iKTpwLndyYXBwZXIuc3R5bGUuekluZGV4PXMuemluZGV4fSgpLGZ1bmN0aW9uKCl7cy5vdmVybGF5JiYobnVsbCE9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi4iK24rIi1vdmVybGF5LmZhZGVJbiIpPyhwLm92ZXJsYXk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLiIrbisiLW92ZXJsYXkiKSxwLm92ZXJsYXkuc2V0QXR0cmlidXRlKCJkYXRhLWl6aVRvYXN0LXJlZiIscC5vdmVybGF5LmdldEF0dHJpYnV0ZSgiZGF0YS1pemlUb2FzdC1yZWYiKSsiLCIrcy5yZWYpLGlzTmFOKHMuemluZGV4KXx8bnVsbD09PXMuemluZGV4fHwocC5vdmVybGF5LnN0eWxlLnpJbmRleD1zLnppbmRleC0xKSk6KHAub3ZlcmxheS5jbGFzc0xpc3QuYWRkKG4rIi1vdmVybGF5IikscC5vdmVybGF5LmNsYXNzTGlzdC5hZGQoImZhZGVJbiIpLHAub3ZlcmxheS5zdHlsZS5iYWNrZ3JvdW5kPXMub3ZlcmxheUNvbG9yLHAub3ZlcmxheS5zZXRBdHRyaWJ1dGUoImRhdGEtaXppVG9hc3QtcmVmIixzLnJlZiksaXNOYU4ocy56aW5kZXgpfHxudWxsPT09cy56aW5kZXh8fChwLm92ZXJsYXkuc3R5bGUuekluZGV4PXMuemluZGV4LTEpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKS5hcHBlbmRDaGlsZChwLm92ZXJsYXkpKSxzLm92ZXJsYXlDbG9zZT8ocC5vdmVybGF5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix7fSkscC5vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbih0KXtpLmhpZGUocyxwLnRvYXN0LCJvdmVybGF5Iil9KSk6cC5vdmVybGF5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix7fSkpfSgpLGZ1bmN0aW9uKCl7aWYocy5hbmltYXRlSW5zaWRlKXtwLnRvYXN0LmNsYXNzTGlzdC5hZGQobisiLWFuaW1hdGVJbnNpZGUiKTt2YXIgdD1bMjAwLDEwMCwzMDBdOyJib3VuY2VJbkxlZnQiIT1zLnRyYW5zaXRpb25JbiYmImJvdW5jZUluUmlnaHQiIT1zLnRyYW5zaXRpb25Jbnx8KHQ9WzQwMCwyMDAsNDAwXSkscy50aXRsZS5sZW5ndGg+MCYmc2V0VGltZW91dChmdW5jdGlvbigpe3Auc3Ryb25nLmNsYXNzTGlzdC5hZGQoInNsaWRlSW4iKX0sdFswXSkscy5tZXNzYWdlLmxlbmd0aD4wJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cC5wLmNsYXNzTGlzdC5hZGQoInNsaWRlSW4iKX0sdFsxXSksKHMuaWNvbnx8cy5pY29uVXJsKSYmc2V0VGltZW91dChmdW5jdGlvbigpe3AuaWNvbi5jbGFzc0xpc3QuYWRkKCJyZXZlYWxJbiIpfSx0WzJdKTt2YXIgZT0xNTA7cy5idXR0b25zLmxlbmd0aD4wJiZwLmJ1dHRvbnMmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXttKHAuYnV0dG9ucy5jaGlsZE5vZGVzLGZ1bmN0aW9uKHQsbil7c2V0VGltZW91dChmdW5jdGlvbigpe3QuY2xhc3NMaXN0LmFkZCgicmV2ZWFsSW4iKX0sZSksZSs9MTUwfSl9LHMuaW5wdXRzLmxlbmd0aD4wPzE1MDowKSxzLmlucHV0cy5sZW5ndGg+MCYmcC5pbnB1dHMmJihlPTE1MCxtKHAuaW5wdXRzLmNoaWxkTm9kZXMsZnVuY3Rpb24odCxuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5jbGFzc0xpc3QuYWRkKCJyZXZlYWxJbiIpfSxlKSxlKz0xNTB9KSl9fSgpLHMub25PcGVuaW5nLmFwcGx5KG51bGwsW3MscC50b2FzdF0pO3RyeXt2YXIgQz1uZXcgQ3VzdG9tRXZlbnQobisiLW9wZW5pbmciLHtkZXRhaWw6cyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KEMpfWNhdGNoKHcpe2NvbnNvbGUud2Fybih3KX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cC50b2FzdC5jbGFzc0xpc3QucmVtb3ZlKG4rIi1vcGVuaW5nIikscC50b2FzdC5jbGFzc0xpc3QuYWRkKG4rIi1vcGVuZWQiKTt0cnl7dmFyIHQ9bmV3IEN1c3RvbUV2ZW50KG4rIi1vcGVuZWQiLHtkZXRhaWw6cyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHQpfWNhdGNoKGUpe2NvbnNvbGUud2FybihlKX1zLm9uT3BlbmVkLmFwcGx5KG51bGwsW3MscC50b2FzdF0pfSwxZTMpLHMuZHJhZyYmKGE/KHAudG9hc3QuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsZnVuY3Rpb24odCl7Yi5zdGFydE1vdmluZyh0aGlzLGkscyx0KX0sITEpLHAudG9hc3QuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGZ1bmN0aW9uKHQpe2Iuc3RvcE1vdmluZyh0aGlzLHQpfSwhMSkpOihwLnRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGIuc3RhcnRNb3ZpbmcodGhpcyxpLHMsdCl9LCExKSxwLnRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxiLnN0b3BNb3ZpbmcodGhpcyx0KX0sITEpKSkscy5jbG9zZU9uRXNjYXBlJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsZnVuY3Rpb24odCl7dD10fHx3aW5kb3cuZXZlbnQsMjc9PXQua2V5Q29kZSYmaS5oaWRlKHMscC50b2FzdCwiZXNjIil9KSxzLmNsb3NlT25DbGljayYmcC50b2FzdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24odCl7aS5oaWRlKHMscC50b2FzdCwidG9hc3QiKX0pLGkudG9hc3Q9cC50b2FzdH0sZX0pOw=="}},"time_used":21,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testi_avatar01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.072Z","timestamp":1785159465072,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testi_avatar01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 11658\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":11658,"size_decoded":11924,"mime_type":"image/png","magic":"PNG image data, 135 x 135, 8-bit colormap, non-interlaced","md5":"fc8939e7177653e92838e40251fb6af4","sha1":"d2f1b2457509af903b48bd6ea595e7e09b5b7ac8","sha256":"89848d4022934099e016531336af8c8b621c9983cc6297cec433f89ae056c4c7","sha512":"f7429e0a1b4f647580617f15da68980dce9efeda6a778bf91f81bb4dc1e9cc7c9eb0892c0555c2304b66f29c2b5eb55832d5e23da962bda59b6ffd43d739bfb2","ssdeep":"192:ypsE1ejNNTgLM1iRih3h4vt8tbneMixzEVIH/LXnuMtEyp0vPh5Oq8g827CRLxuw:UsEUjNtAM1iRE3h4vt8qxzBHzXujyp0u","tlshash":"8932c0c90070d7508bd4b6b68069619eec3be234ee8ead30d9953ac05d7f817f698d53","first_seen":"2025-08-04T11:51:21.542046Z","last_seen":"2026-07-27T13:38:47.805956Z","times_seen":9,"resource_available":false,"data":"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"}},"time_used":77,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":65,"receive":12,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/manifest.json","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:49.324Z","timestamp":1785159469324,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1857279285.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 14:34:45 GMT","end":"Wed, 02 Sep 2026 14:34:44 GMT"},"fingerprint":{"sha1":"92:5D:A0:17:13:91:72:7B:B6:8C:6A:7D:A9:55:7F:C8:A9:47:11:99","sha256":"0E:FC:E3:4D:AD:32:B2:11:05:DC:E3:CD:CC:9E:10:DC:C5:2D:9E:1C:D7:C1:9C:00:92:15:43:C5:B7:0B:3A:D6"}}},"request":{"raw":"GET /manifest.json HTTP/1.1\r\nHost: widget-v3.smartsuppcdn.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nContent-Type: text/plain\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:52 GMT\r\ncontent-type: application/json\r\naccess-control-allow-origin: *\r\ncache-control: max-age=300, public, s-maxage=60\r\netag: W/\"6a670743-891\"\r\nexpires: Mon, 27 Jul 2026 07:32:27 GMT\r\nlast-modified: Mon, 27 Jul 2026 07:22:43 GMT\r\nx-77-nzt: k2KGXk+j72aW4n3MGED7SfbVPySnYdoqs3y1AwiHnCgPngjxY/26yJWELCas1/J+D4td1d4\r\nx-77-nzt-ray: fdb5412328488cc3305f676a42447c28\r\nx-77-cache: HIT\r\nx-77-age: 25\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":2193,"size_decoded":1029,"mime_type":"application/json","magic":"JSON text data","md5":"ac973fd16446a8bd414c2cfdbfbdd6ba","sha1":"6d802991373d8180ad7c4197d08c2e8d8e21d581","sha256":"8c973dd5712d4b0125d2be8cc65e3590298e054fb63560738ecf0f64b8e43277","sha512":"9748bc4696f6ec983d5dbd492e36472b1e083d2e61c3a60133b102a8370f7603b54bfe88360c24035fe882d5c30f0a52eb253ae2d0d460d384d72f9f3b188d79","ssdeep":"","tlshash":"c3417893c0f80d531b9c6627b8855a415d50c3c3a8993e0e72ad8a7f2f4ceb910e67bc","first_seen":"2026-07-27T07:28:16.144753Z","last_seen":"2026-07-29T06:17:50.081451Z","times_seen":1033,"resource_available":false,"data":"ewogICJfV2lkZ2V0TWVzc2VuZ2VySW5wdXQtREhyNXVId2QuanMiOiB7CiAgICAiZmlsZSI6ICJhc3NldHMvV2lkZ2V0TWVzc2VuZ2VySW5wdXQtREhyNXVId2QuanMiLAogICAgIm5hbWUiOiAiV2lkZ2V0TWVzc2VuZ2VySW5wdXQiLAogICAgImltcG9ydHMiOiBbCiAgICAgICJfc2hhcmVkLWtiMXlxSGFBLmpzIgogICAgXSwKICAgICJkeW5hbWljSW1wb3J0cyI6IFsKICAgICAgIm5vZGVfbW9kdWxlcy8ucG5wbS9lbW9qaS1tYXJ0QDUuNi4wL25vZGVfbW9kdWxlcy9lbW9qaS1tYXJ0L2Rpc3QvbW9kdWxlLmpzIgogICAgXQogIH0sCiAgIl9zaGFyZWQta2IxeXFIYUEuanMiOiB7CiAgICAiZmlsZSI6ICJhc3NldHMvc2hhcmVkLWtiMXlxSGFBLmpzIiwKICAgICJuYW1lIjogIkljb25CdXR0b24iLAogICAgImR5bmFtaWNJbXBvcnRzIjogWwogICAgICAibm9kZV9tb2R1bGVzLy5wbnBtL0B0aHVtYm1hcmtqcyt0aHVtYm1hcmtqc0AxLjkuMC9ub2RlX21vZHVsZXMvQHRodW1ibWFya2pzL3RodW1ibWFya2pzL2Rpc3QvdGh1bWJtYXJrLmVzbS5qcyIKICAgIF0KICB9LAogICJub2RlX21vZHVsZXMvLnBucG0vQHRodW1ibWFya2pzK3RodW1ibWFya2pzQDEuOS4wL25vZGVfbW9kdWxlcy9AdGh1bWJtYXJranMvdGh1bWJtYXJranMvZGlzdC90aHVtYm1hcmsuZXNtLmpzIjogewogICAgImZpbGUiOiAiYXNzZXRzL3RodW1ibWFyay5lc20tQ1A0Q1UweUwuanMiLAogICAgIm5hbWUiOiAidGh1bWJtYXJrLmVzbSIsCiAgICAic3JjIjogIm5vZGVfbW9kdWxlcy8ucG5wbS9AdGh1bWJtYXJranMrdGh1bWJtYXJranNAMS45LjAvbm9kZV9tb2R1bGVzL0B0aHVtYm1hcmtqcy90aHVtYm1hcmtqcy9kaXN0L3RodW1ibWFyay5lc20uanMiLAogICAgImlzRHluYW1pY0VudHJ5IjogdHJ1ZQogIH0sCiAgIm5vZGVfbW9kdWxlcy8ucG5wbS9lbW9qaS1tYXJ0QDUuNi4wL25vZGVfbW9kdWxlcy9lbW9qaS1tYXJ0L2Rpc3QvbW9kdWxlLmpzIjogewogICAgImZpbGUiOiAiYXNzZXRzL21vZHVsZS1ERDVudlZEMy5qcyIsCiAgICAibmFtZSI6ICJtb2R1bGUiLAogICAgInNyYyI6ICJub2RlX21vZHVsZXMvLnBucG0vZW1vamktbWFydEA1LjYuMC9ub2RlX21vZHVsZXMvZW1vamktbWFydC9kaXN0L21vZHVsZS5qcyIsCiAgICAiaXNEeW5hbWljRW50cnkiOiB0cnVlCiAgfSwKICAic3JjL2ZyYW1lcy9tZXNzZW5nZXIvV2lkZ2V0TWVzc2VuZ2VyLnN2ZWx0ZSI6IHsKICAgICJmaWxlIjogImFzc2V0cy9XaWRnZXRNZXNzZW5nZXItRDFpVlkzTGouanMiLAogICAgIm5hbWUiOiAiV2lkZ2V0TWVzc2VuZ2VyIiwKICAgICJzcmMiOiAic3JjL2ZyYW1lcy9tZXNzZW5nZXIvV2lkZ2V0TWVzc2VuZ2VyLnN2ZWx0ZSIsCiAgICAiaXNEeW5hbWljRW50cnkiOiB0cnVlLAogICAgImltcG9ydHMiOiBbCiAgICAgICJfc2hhcmVkLWtiMXlxSGFBLmpzIiwKICAgICAgIl9XaWRnZXRNZXNzZW5nZXJJbnB1dC1ESHI1dUh3ZC5qcyIsCiAgICAgICJzcmMvbWFpbi50cyIKICAgIF0KICB9LAogICJzcmMvZnJhbWVzL3BvcHVwL1dpZGdldFBvcHVwLnN2ZWx0ZSI6IHsKICAgICJmaWxlIjogImFzc2V0cy9XaWRnZXRQb3B1cC1CQTFqY0hudS5qcyIsCiAgICAibmFtZSI6ICJXaWRnZXRQb3B1cCIsCiAgICAic3JjIjogInNyYy9mcmFtZXMvcG9wdXAvV2lkZ2V0UG9wdXAuc3ZlbHRlIiwKICAgICJpc0R5bmFtaWNFbnRyeSI6IHRydWUsCiAgICAiaW1wb3J0cyI6IFsKICAgICAgIl9zaGFyZWQta2IxeXFIYUEuanMiLAogICAgICAiX1dpZGdldE1lc3NlbmdlcklucHV0LURIcjV1SHdkLmpzIgogICAgXQogIH0sCiAgInNyYy9tYWluLnRzIjogewogICAgImZpbGUiOiAiYXNzZXRzL21haW4tQi1WSGMxSzQuanMiLAogICAgIm5hbWUiOiAibWFpbiIsCiAgICAic3JjIjogInNyYy9tYWluLnRzIiwKICAgICJpc0VudHJ5IjogdHJ1ZSwKICAgICJpbXBvcnRzIjogWwogICAgICAiX3NoYXJlZC1rYjF5cUhhQS5qcyIKICAgIF0sCiAgICAiZHluYW1pY0ltcG9ydHMiOiBbCiAgICAgICJzcmMvZnJhbWVzL21lc3Nlbmdlci9XaWRnZXRNZXNzZW5nZXIuc3ZlbHRlIiwKICAgICAgInNyYy9mcmFtZXMvcG9wdXAvV2lkZ2V0UG9wdXAuc3ZlbHRlIgogICAgXQogIH0sCiAgInN0eWxlLmNzcyI6IHsKICAgICJmaWxlIjogImFzc2V0cy9zdHlsZS1DbGlKd1VUUi5jc3MiLAogICAgInNyYyI6ICJzdHlsZS5jc3MiCiAgfQp9"}},"time_used":3358,"timings":{"blocked":0,"dns":33,"connect":8,"send":0,"wait":8,"receive":0,"ssl":3309},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/wow.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.815Z","timestamp":1785159464815,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/wow.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 2572\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":8415,"size_decoded":2809,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (8385)","md5":"36050285bfeeb7395752f0f9bbc08273","sha1":"5924f7bbbf1dfa3f0926851d01f782f23a59e805","sha256":"0ec632e6ab02d4fdd514da7f5edc74aa28c9d4c71af76f1c8b93a1fba85bcc69","sha512":"bf887e087c52583114b77bfb417d7dffa0ee8634d39155af14591a24b2add9ef4c8a0c0555364122800d07a55f5f1fb0c723b39541b069a437ff558ddbf380a3","ssdeep":"96:UrZgL1xvPV6GqKgR6TYLWHFMLJA6pOROVEE1fosvGeaMozHImBaoqbl:Ury9PVfIFrlAJROVEEdos+eatzHILoA","tlshash":"750267c97a967031d75796f6833f0106b6361aeeb028047cb5b88dd57c78868523bf38","first_seen":"2023-03-07T01:02:45Z","last_seen":"2026-08-04T06:10:25.786122Z","times_seen":14223,"resource_available":true,"data":"LyohIFdPVyAtIHYxLjEuMyAtIDIwMTYtMDUtMDYKKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWF0dGhpZXUgQXVzc2FndWVsOyovKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX0sZz1bXS5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYoYiBpbiB0aGlzJiZ0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX07Yj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9cmV0dXJuIGEucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7Zm9yKGMgaW4gYilkPWJbY10sbnVsbD09YVtjXSYmKGFbY109ZCk7cmV0dXJuIGF9LGEucHJvdG90eXBlLmlzTW9iaWxlPWZ1bmN0aW9uKGEpe3JldHVybi9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChhKX0sYS5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU7cmV0dXJuIG51bGw9PWImJihiPSExKSxudWxsPT1jJiYoYz0hMSksbnVsbD09ZCYmKGQ9bnVsbCksbnVsbCE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQ/KGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50IiksZS5pbml0Q3VzdG9tRXZlbnQoYSxiLGMsZCkpOm51bGwhPWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0PyhlPWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCksZS5ldmVudFR5cGU9YSk6ZS5ldmVudE5hbWU9YSxlfSxhLnByb3RvdHlwZS5lbWl0RXZlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbCE9YS5kaXNwYXRjaEV2ZW50P2EuZGlzcGF0Y2hFdmVudChiKTpiIGluKG51bGwhPWEpP2FbYl0oKToib24iK2IgaW4obnVsbCE9YSk/YVsib24iK2JdKCk6dm9pZCAwfSxhLnByb3RvdHlwZS5hZGRFdmVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGwhPWEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKTpudWxsIT1hLmF0dGFjaEV2ZW50P2EuYXR0YWNoRXZlbnQoIm9uIitiLGMpOmFbYl09Y30sYS5wcm90b3R5cGUucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsIT1hLnJlbW92ZUV2ZW50TGlzdGVuZXI/YS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSk6bnVsbCE9YS5kZXRhY2hFdmVudD9hLmRldGFjaEV2ZW50KCJvbiIrYixjKTpkZWxldGUgYVtiXX0sYS5wcm90b3R5cGUuaW5uZXJIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4iaW5uZXJIZWlnaHQiaW4gd2luZG93P3dpbmRvdy5pbm5lckhlaWdodDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fSxhfSgpLGM9dGhpcy5XZWFrTWFwfHx0aGlzLk1veldlYWtNYXB8fChjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3RoaXMua2V5cz1bXSx0aGlzLnZhbHVlcz1bXX1yZXR1cm4gYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGY7Zm9yKGY9dGhpcy5rZXlzLGI9ZD0wLGU9Zi5sZW5ndGg7ZT5kO2I9KytkKWlmKGM9ZltiXSxjPT09YSlyZXR1cm4gdGhpcy52YWx1ZXNbYl19LGEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGc9dGhpcy5rZXlzLGM9ZT0wLGY9Zy5sZW5ndGg7Zj5lO2M9KytlKWlmKGQ9Z1tjXSxkPT09YSlyZXR1cm4gdm9pZCh0aGlzLnZhbHVlc1tjXT1iKTtyZXR1cm4gdGhpcy5rZXlzLnB1c2goYSksdGhpcy52YWx1ZXMucHVzaChiKX0sYX0oKSksYT10aGlzLk11dGF0aW9uT2JzZXJ2ZXJ8fHRoaXMuV2Via2l0TXV0YXRpb25PYnNlcnZlcnx8dGhpcy5Nb3pNdXRhdGlvbk9ic2VydmVyfHwoYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJm51bGwhPT1jb25zb2xlJiZjb25zb2xlLndhcm4oIk11dGF0aW9uT2JzZXJ2ZXIgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuIiksInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZudWxsIT09Y29uc29sZSYmY29uc29sZS53YXJuKCJXT1cuanMgY2Fubm90IGRldGVjdCBkb20gbXV0YXRpb25zLCBwbGVhc2UgY2FsbCAuc3luYygpIGFmdGVyIGxvYWRpbmcgbmV3IGNvbnRlbnQuIil9cmV0dXJuIGEubm90U3VwcG9ydGVkPSEwLGEucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt9LGF9KCkpLGQ9dGhpcy5nZXRDb21wdXRlZFN0eWxlfHxmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmdldFByb3BlcnR5VmFsdWU9ZnVuY3Rpb24oYil7dmFyIGM7cmV0dXJuImZsb2F0Ij09PWImJihiPSJzdHlsZUZsb2F0IiksZS50ZXN0KGIpJiZiLnJlcGxhY2UoZSxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KSwobnVsbCE9KGM9YS5jdXJyZW50U3R5bGUpP2NbYl06dm9pZCAwKXx8bnVsbH0sdGhpc30sZT0vKFwtKFthLXpdKXsxfSkvZyx0aGlzLldPVz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoYSl7bnVsbD09YSYmKGE9e30pLHRoaXMuc2Nyb2xsQ2FsbGJhY2s9Zih0aGlzLnNjcm9sbENhbGxiYWNrLHRoaXMpLHRoaXMuc2Nyb2xsSGFuZGxlcj1mKHRoaXMuc2Nyb2xsSGFuZGxlcix0aGlzKSx0aGlzLnJlc2V0QW5pbWF0aW9uPWYodGhpcy5yZXNldEFuaW1hdGlvbix0aGlzKSx0aGlzLnN0YXJ0PWYodGhpcy5zdGFydCx0aGlzKSx0aGlzLnNjcm9sbGVkPSEwLHRoaXMuY29uZmlnPXRoaXMudXRpbCgpLmV4dGVuZChhLHRoaXMuZGVmYXVsdHMpLG51bGwhPWEuc2Nyb2xsQ29udGFpbmVyJiYodGhpcy5jb25maWcuc2Nyb2xsQ29udGFpbmVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYS5zY3JvbGxDb250YWluZXIpKSx0aGlzLmFuaW1hdGlvbk5hbWVDYWNoZT1uZXcgYyx0aGlzLndvd0V2ZW50PXRoaXMudXRpbCgpLmNyZWF0ZUV2ZW50KHRoaXMuY29uZmlnLmJveENsYXNzKX1yZXR1cm4gZS5wcm90b3R5cGUuZGVmYXVsdHM9e2JveENsYXNzOiJ3b3ciLGFuaW1hdGVDbGFzczoiYW5pbWF0ZWQiLG9mZnNldDowLG1vYmlsZTohMCxsaXZlOiEwLGNhbGxiYWNrOm51bGwsc2Nyb2xsQ29udGFpbmVyOm51bGx9LGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gdGhpcy5lbGVtZW50PXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsImludGVyYWN0aXZlIj09PShhPWRvY3VtZW50LnJlYWR5U3RhdGUpfHwiY29tcGxldGUiPT09YT90aGlzLnN0YXJ0KCk6dGhpcy51dGlsKCkuYWRkRXZlbnQoZG9jdW1lbnQsIkRPTUNvbnRlbnRMb2FkZWQiLHRoaXMuc3RhcnQpLHRoaXMuZmluaXNoZWQ9W119LGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGU7aWYodGhpcy5zdG9wcGVkPSExLHRoaXMuYm94ZXM9ZnVuY3Rpb24oKXt2YXIgYSxjLGQsZTtmb3IoZD10aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLiIrdGhpcy5jb25maWcuYm94Q2xhc3MpLGU9W10sYT0wLGM9ZC5sZW5ndGg7Yz5hO2ErKyliPWRbYV0sZS5wdXNoKGIpO3JldHVybiBlfS5jYWxsKHRoaXMpLHRoaXMuYWxsPWZ1bmN0aW9uKCl7dmFyIGEsYyxkLGU7Zm9yKGQ9dGhpcy5ib3hlcyxlPVtdLGE9MCxjPWQubGVuZ3RoO2M+YTthKyspYj1kW2FdLGUucHVzaChiKTtyZXR1cm4gZX0uY2FsbCh0aGlzKSx0aGlzLmJveGVzLmxlbmd0aClpZih0aGlzLmRpc2FibGVkKCkpdGhpcy5yZXNldFN0eWxlKCk7ZWxzZSBmb3IoZT10aGlzLmJveGVzLGM9MCxkPWUubGVuZ3RoO2Q+YztjKyspYj1lW2NdLHRoaXMuYXBwbHlTdHlsZShiLCEwKTtyZXR1cm4gdGhpcy5kaXNhYmxlZCgpfHwodGhpcy51dGlsKCkuYWRkRXZlbnQodGhpcy5jb25maWcuc2Nyb2xsQ29udGFpbmVyfHx3aW5kb3csInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyKSx0aGlzLnV0aWwoKS5hZGRFdmVudCh3aW5kb3csInJlc2l6ZSIsdGhpcy5zY3JvbGxIYW5kbGVyKSx0aGlzLmludGVydmFsPXNldEludGVydmFsKHRoaXMuc2Nyb2xsQ2FsbGJhY2ssNTApKSx0aGlzLmNvbmZpZy5saXZlP25ldyBhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYyxkLGUsZixnO2ZvcihnPVtdLGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspZj1iW2NdLGcucHVzaChmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2ZvcihjPWYuYWRkZWROb2Rlc3x8W10sZD1bXSxhPTAsYj1jLmxlbmd0aDtiPmE7YSsrKWU9Y1thXSxkLnB1c2godGhpcy5kb1N5bmMoZSkpO3JldHVybiBkfS5jYWxsKGEpKTtyZXR1cm4gZ319KHRoaXMpKS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk6dm9pZCAwfSxlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcHBlZD0hMCx0aGlzLnV0aWwoKS5yZW1vdmVFdmVudCh0aGlzLmNvbmZpZy5zY3JvbGxDb250YWluZXJ8fHdpbmRvdywic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpLHRoaXMudXRpbCgpLnJlbW92ZUV2ZW50KHdpbmRvdywicmVzaXplIix0aGlzLnNjcm9sbEhhbmRsZXIpLG51bGwhPXRoaXMuaW50ZXJ2YWw/Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTp2b2lkIDB9LGUucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oYil7cmV0dXJuIGEubm90U3VwcG9ydGVkP3RoaXMuZG9TeW5jKHRoaXMuZWxlbWVudCk6dm9pZCAwfSxlLnByb3RvdHlwZS5kb1N5bmM9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZjtpZihudWxsPT1hJiYoYT10aGlzLmVsZW1lbnQpLDE9PT1hLm5vZGVUeXBlKXtmb3IoYT1hLnBhcmVudE5vZGV8fGEsZT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK3RoaXMuY29uZmlnLmJveENsYXNzKSxmPVtdLGM9MCxkPWUubGVuZ3RoO2Q+YztjKyspYj1lW2NdLGcuY2FsbCh0aGlzLmFsbCxiKTwwPyh0aGlzLmJveGVzLnB1c2goYiksdGhpcy5hbGwucHVzaChiKSx0aGlzLnN0b3BwZWR8fHRoaXMuZGlzYWJsZWQoKT90aGlzLnJlc2V0U3R5bGUoKTp0aGlzLmFwcGx5U3R5bGUoYiwhMCksZi5wdXNoKHRoaXMuc2Nyb2xsZWQ9ITApKTpmLnB1c2godm9pZCAwKTtyZXR1cm4gZn19LGUucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXBwbHlTdHlsZShhKSxhLmNsYXNzTmFtZT1hLmNsYXNzTmFtZSsiICIrdGhpcy5jb25maWcuYW5pbWF0ZUNsYXNzLG51bGwhPXRoaXMuY29uZmlnLmNhbGxiYWNrJiZ0aGlzLmNvbmZpZy5jYWxsYmFjayhhKSx0aGlzLnV0aWwoKS5lbWl0RXZlbnQoYSx0aGlzLndvd0V2ZW50KSx0aGlzLnV0aWwoKS5hZGRFdmVudChhLCJhbmltYXRpb25lbmQiLHRoaXMucmVzZXRBbmltYXRpb24pLHRoaXMudXRpbCgpLmFkZEV2ZW50KGEsIm9hbmltYXRpb25lbmQiLHRoaXMucmVzZXRBbmltYXRpb24pLHRoaXMudXRpbCgpLmFkZEV2ZW50KGEsIndlYmtpdEFuaW1hdGlvbkVuZCIsdGhpcy5yZXNldEFuaW1hdGlvbiksdGhpcy51dGlsKCkuYWRkRXZlbnQoYSwiTVNBbmltYXRpb25FbmQiLHRoaXMucmVzZXRBbmltYXRpb24pLGF9LGUucHJvdG90eXBlLmFwcGx5U3R5bGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU7cmV0dXJuIGQ9YS5nZXRBdHRyaWJ1dGUoImRhdGEtd293LWR1cmF0aW9uIiksYz1hLmdldEF0dHJpYnV0ZSgiZGF0YS13b3ctZGVsYXkiKSxlPWEuZ2V0QXR0cmlidXRlKCJkYXRhLXdvdy1pdGVyYXRpb24iKSx0aGlzLmFuaW1hdGUoZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGYuY3VzdG9tU3R5bGUoYSxiLGQsYyxlKX19KHRoaXMpKX0sZS5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbigpe3JldHVybiJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiaW4gd2luZG93P2Z1bmN0aW9uKGEpe3JldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYSgpfX0oKSxlLnByb3RvdHlwZS5yZXNldFN0eWxlPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtmb3IoZD10aGlzLmJveGVzLGU9W10sYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylhPWRbYl0sZS5wdXNoKGEuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIpO3JldHVybiBlfSxlLnByb3RvdHlwZS5yZXNldEFuaW1hdGlvbj1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gYS50eXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiYW5pbWF0aW9uZW5kIik+PTA/KGI9YS50YXJnZXR8fGEuc3JjRWxlbWVudCxiLmNsYXNzTmFtZT1iLmNsYXNzTmFtZS5yZXBsYWNlKHRoaXMuY29uZmlnLmFuaW1hdGVDbGFzcywiIikudHJpbSgpKTp2b2lkIDB9LGUucHJvdG90eXBlLmN1c3RvbVN0eWxlPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGImJnRoaXMuY2FjaGVBbmltYXRpb25OYW1lKGEpLGEuc3R5bGUudmlzaWJpbGl0eT1iPyJoaWRkZW4iOiJ2aXNpYmxlIixjJiZ0aGlzLnZlbmRvclNldChhLnN0eWxlLHthbmltYXRpb25EdXJhdGlvbjpjfSksZCYmdGhpcy52ZW5kb3JTZXQoYS5zdHlsZSx7YW5pbWF0aW9uRGVsYXk6ZH0pLGUmJnRoaXMudmVuZG9yU2V0KGEuc3R5bGUse2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OmV9KSx0aGlzLnZlbmRvclNldChhLnN0eWxlLHthbmltYXRpb25OYW1lOmI/Im5vbmUiOnRoaXMuY2FjaGVkQW5pbWF0aW9uTmFtZShhKX0pLGF9LGUucHJvdG90eXBlLnZlbmRvcnM9WyJtb3oiLCJ3ZWJraXQiXSxlLnByb3RvdHlwZS52ZW5kb3JTZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZjtkPVtdO2ZvcihjIGluIGIpZT1iW2NdLGFbIiIrY109ZSxkLnB1c2goZnVuY3Rpb24oKXt2YXIgYixkLGcsaDtmb3IoZz10aGlzLnZlbmRvcnMsaD1bXSxiPTAsZD1nLmxlbmd0aDtkPmI7YisrKWY9Z1tiXSxoLnB1c2goYVsiIitmK2MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYy5zdWJzdHIoMSldPWUpO3JldHVybiBofS5jYWxsKHRoaXMpKTtyZXR1cm4gZH0sZS5wcm90b3R5cGUudmVuZG9yQ1NTPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpO2ZvcihoPWQoYSksZz1oLmdldFByb3BlcnR5Q1NTVmFsdWUoYiksZj10aGlzLnZlbmRvcnMsYz0wLGU9Zi5sZW5ndGg7ZT5jO2MrKylpPWZbY10sZz1nfHxoLmdldFByb3BlcnR5Q1NTVmFsdWUoIi0iK2krIi0iK2IpO3JldHVybiBnfSxlLnByb3RvdHlwZS5hbmltYXRpb25OYW1lPWZ1bmN0aW9uKGEpe3ZhciBiO3RyeXtiPXRoaXMudmVuZG9yQ1NTKGEsImFuaW1hdGlvbi1uYW1lIikuY3NzVGV4dH1jYXRjaChjKXtiPWQoYSkuZ2V0UHJvcGVydHlWYWx1ZSgiYW5pbWF0aW9uLW5hbWUiKX1yZXR1cm4ibm9uZSI9PT1iPyIiOmJ9LGUucHJvdG90eXBlLmNhY2hlQW5pbWF0aW9uTmFtZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hbmltYXRpb25OYW1lQ2FjaGUuc2V0KGEsdGhpcy5hbmltYXRpb25OYW1lKGEpKX0sZS5wcm90b3R5cGUuY2FjaGVkQW5pbWF0aW9uTmFtZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hbmltYXRpb25OYW1lQ2FjaGUuZ2V0KGEpfSxlLnByb3RvdHlwZS5zY3JvbGxIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsZWQ9ITB9LGUucHJvdG90eXBlLnNjcm9sbENhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIXRoaXMuc2Nyb2xsZWR8fCh0aGlzLnNjcm9sbGVkPSExLHRoaXMuYm94ZXM9ZnVuY3Rpb24oKXt2YXIgYixjLGQsZTtmb3IoZD10aGlzLmJveGVzLGU9W10sYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylhPWRbYl0sYSYmKHRoaXMuaXNWaXNpYmxlKGEpP3RoaXMuc2hvdyhhKTplLnB1c2goYSkpO3JldHVybiBlfS5jYWxsKHRoaXMpLHRoaXMuYm94ZXMubGVuZ3RofHx0aGlzLmNvbmZpZy5saXZlKT92b2lkIDA6dGhpcy5zdG9wKCl9LGUucHJvdG90eXBlLm9mZnNldFRvcD1mdW5jdGlvbihhKXtmb3IodmFyIGI7dm9pZCAwPT09YS5vZmZzZXRUb3A7KWE9YS5wYXJlbnROb2RlO2ZvcihiPWEub2Zmc2V0VG9wO2E9YS5vZmZzZXRQYXJlbnQ7KWIrPWEub2Zmc2V0VG9wO3JldHVybiBifSxlLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZjtyZXR1cm4gYz1hLmdldEF0dHJpYnV0ZSgiZGF0YS13b3ctb2Zmc2V0Iil8fHRoaXMuY29uZmlnLm9mZnNldCxmPXRoaXMuY29uZmlnLnNjcm9sbENvbnRhaW5lciYmdGhpcy5jb25maWcuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcHx8d2luZG93LnBhZ2VZT2Zmc2V0LGU9ZitNYXRoLm1pbih0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0LHRoaXMudXRpbCgpLmlubmVySGVpZ2h0KCkpLWMsZD10aGlzLm9mZnNldFRvcChhKSxiPWQrYS5jbGllbnRIZWlnaHQsZT49ZCYmYj49Zn0sZS5wcm90b3R5cGUudXRpbD1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl91dGlsP3RoaXMuX3V0aWw6dGhpcy5fdXRpbD1uZXcgYn0sZS5wcm90b3R5cGUuZGlzYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5jb25maWcubW9iaWxlJiZ0aGlzLnV0aWwoKS5pc01vYmlsZShuYXZpZ2F0b3IudXNlckFnZW50KX0sZX0oKX0pLmNhbGwodGhpcyk7"}},"time_used":23,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":23,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/favicon.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.947Z","timestamp":1785159465947,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/favicon.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Fri, 24 Apr 2026 11:10:28 GMT\r\naccept-ranges: bytes\r\ncontent-length: 5868\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":5868,"size_decoded":6133,"mime_type":"image/png","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 186x188, components 3","md5":"85b9b7f9c822e518d90da66674f101cd","sha1":"e168538c90ef182741139affd8db3ac56aa4b243","sha256":"961b3e24eafb258b9c556d5c1d11caae1ea067e8d59756d34c096d4afecaadef","sha512":"e8e2c05f35f0b36d5da2af85480a451100ba114a5a2425ef0b505630622d65fac7efa4e314eab84f09745c9296fda8e2d07364d6e1855544e1592340342b32b8","ssdeep":"96:/8DoDo6ePkOeNcqHznzr4nodQH6e4J5/E+tMF/NklozA3uABGjPwBb/gpydstH:/8UDo6uX0j4nomf4z/E+ti/NkEA3gPMk","tlshash":"0ec16d167acd1f94c58abdf5881f44411e58cec4f5ccaad3b8e69c0029cba81ae2d26d","first_seen":"2026-07-27T07:42:30.773479Z","last_seen":"2026-07-27T13:38:47.780252Z","times_seen":3,"resource_available":false,"data":"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"}},"time_used":20,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"widget-v3.smartsuppcdn.com/assets/shared-kb1yqHaA.js","fqdn":"widget-v3.smartsuppcdn.com","domain":"smartsuppcdn.com","tld":"com"},"ip":{"addr":"185.76.9.27","port":443,"asn":60068,"as":"Datacamp Limited","country":"Sweden","country_code":"SE"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:52.719Z","timestamp":1785159472719,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"1857279285.rsc.cdn77.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 14:34:45 GMT","end":"Wed, 02 Sep 2026 14:34:44 GMT"},"fingerprint":{"sha1":"92:5D:A0:17:13:91:72:7B:B6:8C:6A:7D:A9:55:7F:C8:A9:47:11:99","sha256":"0E:FC:E3:4D:AD:32:B2:11:05:DC:E3:CD:CC:9E:10:DC:C5:2D:9E:1C:D7:C1:9C:00:92:15:43:C5:B7:0B:3A:D6"}}},"request":{"raw":"GET /assets/shared-kb1yqHaA.js HTTP/1.1\r\nHost: widget-v3.smartsuppcdn.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:52 GMT\r\ncontent-type: application/javascript\r\naccess-control-allow-origin: *\r\ncache-control: max-age=31536000, public, immutable\r\netag: W/\"6a670743-42705\"\r\nexpires: Tue, 27 Jul 2027 07:27:08 GMT\r\nlast-modified: Mon, 27 Jul 2026 07:22:43 GMT\r\nx-77-nzt: k+KWKUPyHXLBWsWw2nrIzqTVskXBl26N5gPzMaiQDhLHimp1OFcke/GqRuXdYbaArYYDqqo\r\nx-77-nzt-ray: fdb5412328488cc3305f676a2b752c2b\r\nage: 19\r\nx-77-cache: HIT\r\nx-77-age: 22212\r\nvary: Accept-Encoding\r\ncontent-encoding: gzip\r\nserver: CDN77-Turbo\r\nx-77-pop: stockholmSE\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"CDN77","description":"CDN77 is a content delivery network (CDN).","website":"https://www.cdn77.com","common_platform_enumeration":"","icon":"CDN77.png","categories":["CDN"]}],"data":{"size":272133,"size_decoded":92601,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (44710)","md5":"4a99d6fd0e84ed566d578d0ed5dea128","sha1":"c729468068793db7ca783d243b2ec065b6e2f202","sha256":"99501ff83cea2d37fb29f4ff7e0bfc1a93655e56db91bce74171fe29f0821884","sha512":"fcab2b13f37fe49c7a500be1285445ec1dfb120ed4f6d909925ea5616ee9f62d999fe83c1f8210dcc1742528ee3469e5671b34191317836ab4ed3b020ade8608","ssdeep":"6144:mLjnOEIL18ad2jJKaQF+tRkYcuBa+y+mFJW:iOEIZRd29Uqj4r+mF4","tlshash":"b3443ad53294b03543db51e6906f1106b33e5c58580d812cf269ede638baec8a2f7fb8","first_seen":"2026-07-27T07:28:16.16312Z","last_seen":"2026-07-29T06:17:50.104199Z","times_seen":1066,"resource_available":true,"data":"dmFyIGU9T2JqZWN0LmNyZWF0ZSx0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxpPU9iamVjdC5nZXRQcm90b3R5cGVPZixhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz0oZSx0KT0+KCk9PihlJiYodD1lKGU9MCkpLHQpLHM9KGUsdCk9PigpPT4odHx8KGUoKHQ9e2V4cG9ydHM6e319KS5leHBvcnRzLHQpLGU9bnVsbCksdC5leHBvcnRzKSxjPShlLG4pPT57bGV0IHI9e307Zm9yKHZhciBpIGluIGUpdChyLGkse2dldDplW2ldLGVudW1lcmFibGU6ITB9KTtyZXR1cm4gbnx8dChyLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6YE1vZHVsZWB9KSxyfSxsPShlLGksbyxzKT0+e2lmKGkmJnR5cGVvZiBpPT1gb2JqZWN0YHx8dHlwZW9mIGk9PWBmdW5jdGlvbmApZm9yKHZhciBjPXIoaSksbD0wLHU9Yy5sZW5ndGgsZDtsPHU7bCsrKWQ9Y1tsXSwhYS5jYWxsKGUsZCkmJmQhPT1vJiZ0KGUsZCx7Z2V0OihlPT5pW2VdKS5iaW5kKG51bGwsZCksZW51bWVyYWJsZTohKHM9bihpLGQpKXx8cy5lbnVtZXJhYmxlfSk7cmV0dXJuIGV9LHU9KG4scixhKT0+KGE9bj09bnVsbD97fTplKGkobikpLGwocnx8IW58fCFuLl9fZXNNb2R1bGU/dChhLGBkZWZhdWx0YCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwfSk6YSxuKSksZD1lPT5hLmNhbGwoZSxgbW9kdWxlLmV4cG9ydHNgKT9lW2Btb2R1bGUuZXhwb3J0c2BdOmwodCh7fSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZSksZj1BcnJheS5pc0FycmF5LHA9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsbT1BcnJheS5wcm90b3R5cGUuaW5jbHVkZXMsaD1BcnJheS5mcm9tLGc9T2JqZWN0LmRlZmluZVByb3BlcnR5LF89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcix2PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLHk9T2JqZWN0LnByb3RvdHlwZSxlZT1BcnJheS5wcm90b3R5cGUsYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdGU9T2JqZWN0LmlzRXh0ZW5zaWJsZTtmdW5jdGlvbiBuZShlKXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmB9dmFyIHg9KCk9Pnt9O2Z1bmN0aW9uIHJlKGUpe3JldHVybiBlKCl9ZnVuY3Rpb24gaWUoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfWZ1bmN0aW9uIGFlKCl7dmFyIGUsdDtyZXR1cm57cHJvbWlzZTpuZXcgUHJvbWlzZSgobixyKT0+e2U9bix0PXJ9KSxyZXNvbHZlOmUscmVqZWN0OnR9fXZhciBvZT0xPDwyNCxzZT0xMDI0LGNlPTIwNDgsbGU9NDA5Nix1ZT04MTkyLGRlPTE2Mzg0LGZlPTMyNzY4LHBlPTE8PDI1LG1lPTY1NTM2LGhlPTE8PDE5LGdlPTE8PDIwLF9lPTE8PDI1LHZlPTY1NTM2LHllPTE8PDIxLGJlPTE8PDIyLHhlPTE8PDIzLFNlPVN5bWJvbChgJHN0YXRlYCksQ2U9U3ltYm9sKGBsZWdhY3kgcHJvcHNgKSx3ZT1TeW1ib2woYGApLFRlPW5ldyBjbGFzcyBleHRlbmRzIEVycm9ye25hbWU9YFN0YWxlUmVhY3Rpb25FcnJvcmA7bWVzc2FnZT0iVGhlIHJlYWN0aW9uIHRoYXQgY2FsbGVkIGBnZXRBYm9ydFNpZ25hbCgpYCB3YXMgcmUtcnVuIG9yIGRlc3Ryb3llZCJ9LEVlPSEhZ2xvYmFsVGhpcy5kb2N1bWVudD8uY29udGVudFR5cGUmJmdsb2JhbFRoaXMuZG9jdW1lbnQuY29udGVudFR5cGUuaW5jbHVkZXMoYHhtbGApO2Z1bmN0aW9uIERlKGUpe3Rocm93IEVycm9yKGBodHRwczovL3N2ZWx0ZS5kZXYvZS9saWZlY3ljbGVfb3V0c2lkZV9jb21wb25lbnRgKX1mdW5jdGlvbiBPZSgpe3Rocm93IEVycm9yKGBodHRwczovL3N2ZWx0ZS5kZXYvZS9hc3luY19kZXJpdmVkX29ycGhhbmApfWZ1bmN0aW9uIGtlKGUsdCxuKXt0aHJvdyBFcnJvcihgaHR0cHM6Ly9zdmVsdGUuZGV2L2UvZWFjaF9rZXlfZHVwbGljYXRlYCl9ZnVuY3Rpb24gQWUoZSl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL2VmZmVjdF9pbl90ZWFyZG93bmApfWZ1bmN0aW9uIGplKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL2VmZmVjdF9pbl91bm93bmVkX2Rlcml2ZWRgKX1mdW5jdGlvbiBNZShlKXt0aHJvdyBFcnJvcihgaHR0cHM6Ly9zdmVsdGUuZGV2L2UvZWZmZWN0X29ycGhhbmApfWZ1bmN0aW9uIE5lKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL2VmZmVjdF91cGRhdGVfZGVwdGhfZXhjZWVkZWRgKX1mdW5jdGlvbiBQZShlKXt0aHJvdyBFcnJvcihgaHR0cHM6Ly9zdmVsdGUuZGV2L2UvcHJvcHNfaW52YWxpZF92YWx1ZWApfWZ1bmN0aW9uIEZlKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL3NldF9jb250ZXh0X2FmdGVyX2luaXRgKX1mdW5jdGlvbiBJZSgpe3Rocm93IEVycm9yKGBodHRwczovL3N2ZWx0ZS5kZXYvZS9zdGF0ZV9kZXNjcmlwdG9yc19maXhlZGApfWZ1bmN0aW9uIExlKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL3N0YXRlX3Byb3RvdHlwZV9maXhlZGApfWZ1bmN0aW9uIFJlKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL3N0YXRlX3Vuc2FmZV9tdXRhdGlvbmApfWZ1bmN0aW9uIHplKCl7dGhyb3cgRXJyb3IoYGh0dHBzOi8vc3ZlbHRlLmRldi9lL3N2ZWx0ZV9ib3VuZGFyeV9yZXNldF9vbmVycm9yYCl9dmFyIEJlPXt9LFM9U3ltYm9sKCksVmU9YGh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxgLEhlPWBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z2AsVWU9YGh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxgO2Z1bmN0aW9uIFdlKCl7Y29uc29sZS53YXJuKGBodHRwczovL3N2ZWx0ZS5kZXYvZS9kZXJpdmVkX2luZXJ0YCl9ZnVuY3Rpb24gR2UoZSl7Y29uc29sZS53YXJuKGBodHRwczovL3N2ZWx0ZS5kZXYvZS9oeWRyYXRpb25fbWlzbWF0Y2hgKX1mdW5jdGlvbiBLZSgpe2NvbnNvbGUud2FybihgaHR0cHM6Ly9zdmVsdGUuZGV2L2Uvc2VsZWN0X211bHRpcGxlX2ludmFsaWRfdmFsdWVgKX1mdW5jdGlvbiBxZSgpe2NvbnNvbGUud2FybihgaHR0cHM6Ly9zdmVsdGUuZGV2L2Uvc3ZlbHRlX2JvdW5kYXJ5X3Jlc2V0X25vb3BgKX12YXIgQz0hMTtmdW5jdGlvbiBKZShlKXtDPWV9dmFyIHc7ZnVuY3Rpb24gVChlKXtpZihlPT09bnVsbCl0aHJvdyBHZSgpLEJlO3JldHVybiB3PWV9ZnVuY3Rpb24gWWUoKXtyZXR1cm4gVChCbih3KSl9ZnVuY3Rpb24gWGUoZSl7aWYoQyl7aWYoQm4odykhPT1udWxsKXRocm93IEdlKCksQmU7dz1lfX1mdW5jdGlvbiBaZShlPTEpe2lmKEMpe2Zvcih2YXIgdD1lLG49dzt0LS07KW49Qm4obik7dz1ufX1mdW5jdGlvbiBRZShlPSEwKXtmb3IodmFyIHQ9MCxuPXc7Oyl7aWYobi5ub2RlVHlwZT09PTgpe3ZhciByPW4uZGF0YTtpZihyPT09YF1gKXtpZih0PT09MClyZXR1cm4gbjstLXR9ZWxzZSAocj09PWBbYHx8cj09PWBbIWB8fHJbMF09PT1gW2AmJiFpc05hTihOdW1iZXIoci5zbGljZSgxKSkpKSYmKHQrPTEpfXZhciBpPUJuKG4pO2UmJm4ucmVtb3ZlKCksbj1pfX1mdW5jdGlvbiAkZShlKXtpZighZXx8ZS5ub2RlVHlwZSE9PTgpdGhyb3cgR2UoKSxCZTtyZXR1cm4gZS5kYXRhfWZ1bmN0aW9uIGV0KGUpe3JldHVybiBlPT09dGhpcy52fWZ1bmN0aW9uIHR0KGUsdCl7cmV0dXJuIGU9PWU/ZSE9PXR8fHR5cGVvZiBlPT1gb2JqZWN0YCYmISFlfHx0eXBlb2YgZT09YGZ1bmN0aW9uYDp0PT10fWZ1bmN0aW9uIG50KGUpe3JldHVybiF0dChlLHRoaXMudil9dmFyIHJ0PSExLGl0PSExO2Z1bmN0aW9uIGF0KCl7aXQ9ITB9dmFyIEU9bnVsbDtmdW5jdGlvbiBvdChlKXtFPWV9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIGZ0KGBnZXRDb250ZXh0YCkuZ2V0KGUpfWZ1bmN0aW9uIGN0KGUsdCl7bGV0IG49ZnQoYHNldENvbnRleHRgKTtpZihydCl7dmFyIHI9SS5mOyFGJiZyJjMyJiYhRS5pfHxGZSgpfXJldHVybiBuLnNldChlLHQpLHR9ZnVuY3Rpb24gbHQoZSx0PSExLG4pe0U9e3A6RSxpOiExLGM6bnVsbCxlOm51bGwsczplLHg6bnVsbCxyOkksbDppdCYmIXQ/e3M6bnVsbCx1Om51bGwsJDpbXX06bnVsbH19ZnVuY3Rpb24gdXQoZSl7dmFyIHQ9RSxuPXQuZTtpZihuIT09bnVsbCl7dC5lPW51bGw7Zm9yKHZhciByIG9mIG4pc3Iocil9cmV0dXJuIGUhPT12b2lkIDAmJih0Lng9ZSksdC5pPSEwLEU9dC5wLGU/P3t9fWZ1bmN0aW9uIGR0KCl7cmV0dXJuIWl0fHxFIT09bnVsbCYmRS5sPT09bnVsbH1mdW5jdGlvbiBmdChlKXtyZXR1cm4gRT09PW51bGwmJkRlKGUpLEUuYz8/PW5ldyBNYXAocHQoRSl8fHZvaWQgMCl9ZnVuY3Rpb24gcHQoZSl7bGV0IHQ9ZS5wO2Zvcig7dCE9PW51bGw7KXtsZXQgZT10LmM7aWYoZSE9PW51bGwpcmV0dXJuIGU7dD10LnB9cmV0dXJuIG51bGx9dmFyIG10PVtdO2Z1bmN0aW9uIGh0KCl7dmFyIGU9bXQ7bXQ9W10saWUoZSl9ZnVuY3Rpb24gZ3QoZSl7aWYobXQubGVuZ3RoPT09MCYmIXp0KXt2YXIgdD1tdDtxdWV1ZU1pY3JvdGFzaygoKT0+e3Q9PT1tdCYmaHQoKX0pfW10LnB1c2goZSl9ZnVuY3Rpb24gX3QoKXtmb3IoO210Lmxlbmd0aD4wOylodCgpfWZ1bmN0aW9uIHZ0KGUpe3ZhciB0PUk7aWYodD09PW51bGwpcmV0dXJuIEYuZnw9eGUsZTtpZighKHQuZiYzMjc2OCkmJiEodC5mJjQpKXRocm93IGU7eXQoZSx0KX1mdW5jdGlvbiB5dChlLHQpe2Zvcig7dCE9PW51bGw7KXtpZih0LmYmMTI4KXtpZighKHQuZiYzMjc2OCkpdGhyb3cgZTt0cnl7dC5iLmVycm9yKGUpO3JldHVybn1jYXRjaCh0KXtlPXR9fXQ9dC5wYXJlbnR9dGhyb3cgZX12YXIgYnQ9fihjZXxsZXxzZSk7ZnVuY3Rpb24gRChlLHQpe2UuZj1lLmYmYnR8dH1mdW5jdGlvbiB4dChlKXtlLmYmNTEyfHxlLmRlcHM9PT1udWxsP0QoZSxzZSk6RChlLGxlKX1mdW5jdGlvbiBTdChlKXtpZihlIT09bnVsbClmb3IobGV0IHQgb2YgZSkhKHQuZiYyKXx8ISh0LmYmNjU1MzYpfHwodC5mXj12ZSxTdCh0LmRlcHMpKX1mdW5jdGlvbiBDdChlLHQsbil7ZS5mJjIwNDg/dC5hZGQoZSk6ZS5mJjQwOTYmJm4uYWRkKGUpLFN0KGUuZGVwcyksRChlLHNlKX1mdW5jdGlvbiB3dChlLHQsbil7aWYoZT09bnVsbClyZXR1cm4gdCh2b2lkIDApLG4mJm4odm9pZCAwKSx4O2xldCByPSRyKCgpPT5lLnN1YnNjcmliZSh0LG4pKTtyZXR1cm4gci51bnN1YnNjcmliZT8oKT0+ci51bnN1YnNjcmliZSgpOnJ9dmFyIFR0PVtdO2Z1bmN0aW9uIEV0KGUsdCl7cmV0dXJue3N1YnNjcmliZTpPKGUsdCkuc3Vic2NyaWJlfX1mdW5jdGlvbiBPKGUsdD14KXtsZXQgbj1udWxsLHI9bmV3IFNldDtmdW5jdGlvbiBpKHQpe2lmKHR0KGUsdCkmJihlPXQsbikpe2xldCB0PSFUdC5sZW5ndGg7Zm9yKGxldCB0IG9mIHIpdFsxXSgpLFR0LnB1c2godCxlKTtpZih0KXtmb3IobGV0IGU9MDtlPFR0Lmxlbmd0aDtlKz0yKVR0W2VdWzBdKFR0W2UrMV0pO1R0Lmxlbmd0aD0wfX19ZnVuY3Rpb24gYSh0KXtpKHQoZSkpfWZ1bmN0aW9uIG8obyxzPXgpe2xldCBjPVtvLHNdO3JldHVybiByLmFkZChjKSxyLnNpemU9PT0xJiYobj10KGksYSl8fHgpLG8oZSksKCk9PntyLmRlbGV0ZShjKSxyLnNpemU9PT0wJiZuJiYobigpLG49bnVsbCl9fXJldHVybntzZXQ6aSx1cGRhdGU6YSxzdWJzY3JpYmU6b319ZnVuY3Rpb24gayhlLHQsbil7bGV0IHI9IUFycmF5LmlzQXJyYXkoZSksaT1yP1tlXTplO2lmKCFpLmV2ZXJ5KEJvb2xlYW4pKXRocm93IEVycm9yKGBkZXJpdmVkKCkgZXhwZWN0cyBzdG9yZXMgYXMgaW5wdXQsIGdvdCBhIGZhbHN5IHZhbHVlYCk7bGV0IGE9dC5sZW5ndGg8MjtyZXR1cm4gRXQobiwoZSxuKT0+e2xldCBvPSExLHM9W10sYz0wLGw9eCx1PSgpPT57aWYoYylyZXR1cm47bCgpO2xldCBpPXQocj9zWzBdOnMsZSxuKTthP2UoaSk6bD10eXBlb2YgaT09YGZ1bmN0aW9uYD9pOnh9LGQ9aS5tYXAoKGUsdCk9Pnd0KGUsZT0+e3NbdF09ZSxjJj1+KDE8PHQpLG8mJnUoKX0sKCk9PntjfD0xPDx0fSkpO3JldHVybiBvPSEwLHUoKSxmdW5jdGlvbigpe2llKGQpLGwoKSxvPSExfX0pfWZ1bmN0aW9uIEEoZSl7bGV0IHQ7cmV0dXJuIHd0KGUsZT0+dD1lKSgpLHR9dmFyIER0PSExLE90PSExLGt0PVN5bWJvbCgpO2Z1bmN0aW9uIEF0KGUsdCxuKXtsZXQgcj1uW3RdPz89e3N0b3JlOm51bGwsc291cmNlOnduKHZvaWQgMCksdW5zdWJzY3JpYmU6eH07aWYoci5zdG9yZSE9PWUmJiEoa3QgaW4gbikpaWYoci51bnN1YnNjcmliZSgpLHIuc3RvcmU9ZT8/bnVsbCxlPT1udWxsKXIuc291cmNlLnY9dm9pZCAwLHIudW5zdWJzY3JpYmU9eDtlbHNle3ZhciBpPSEwO3IudW5zdWJzY3JpYmU9d3QoZSxlPT57aT9yLnNvdXJjZS52PWU6VG4oci5zb3VyY2UsZSl9KSxpPSExfXJldHVybiBlJiZrdCBpbiBuP0EoZSk6UihyLnNvdXJjZSl9ZnVuY3Rpb24ganQoZSx0KXtyZXR1cm4gTnQoZSx0KSx0fWZ1bmN0aW9uIE10KCl7bGV0IGU9e307ZnVuY3Rpb24gdCgpe2FyKCgpPT57Zm9yKHZhciB0IGluIGUpZVt0XS51bnN1YnNjcmliZSgpO2coZSxrdCx7ZW51bWVyYWJsZTohMSx2YWx1ZTohMH0pfSl9cmV0dXJuW2UsdF19ZnVuY3Rpb24gTnQoZSx0KXtEdD0hMDt0cnl7ZS5zZXQodCl9ZmluYWxseXtEdD0hMX19ZnVuY3Rpb24gUHQoZSx0LG4pe3JldHVybiBOdChlLG4pLHR9ZnVuY3Rpb24gRnQoZSl7dmFyIHQ9T3Q7dHJ5e3JldHVybiBPdD0hMSxbZSgpLE90XX1maW5hbGx5e090PXR9fXZhciBJdD1uZXcgU2V0LGo9bnVsbCxMdD1udWxsLE09bnVsbCxSdD1udWxsLHp0PSExLEJ0PSExLFZ0PW51bGwsSHQ9bnVsbCxVdD0wLFd0PTEsR3Q9Y2xhc3MgZXtpZD1XdCsrO2N1cnJlbnQ9bmV3IE1hcDtwcmV2aW91cz1uZXcgTWFwOyNlPW5ldyBTZXQ7I3Q9bmV3IFNldDsjbj1uZXcgU2V0OyNyPW5ldyBNYXA7I2k9bmV3IE1hcDsjYT1udWxsOyNvPVtdOyNzPVtdOyNjPW5ldyBTZXQ7I2w9bmV3IFNldDsjdT1uZXcgTWFwOyNkPW5ldyBTZXQ7aXNfZm9yaz0hMTsjZj0hMTsjcD1uZXcgU2V0OyNtKCl7cmV0dXJuIHRoaXMuaXNfZm9ya3x8dGhpcy4jaS5zaXplPjB9I2goKXtmb3IobGV0IG4gb2YgdGhpcy4jcClmb3IobGV0IHIgb2Ygbi4jaS5rZXlzKCkpe2Zvcih2YXIgZT0hMSx0PXI7dC5wYXJlbnQhPT1udWxsOyl7aWYodGhpcy4jdS5oYXModCkpe2U9ITA7YnJlYWt9dD10LnBhcmVudH1pZighZSlyZXR1cm4hMH1yZXR1cm4hMX1za2lwX2VmZmVjdChlKXt0aGlzLiN1LmhhcyhlKXx8dGhpcy4jdS5zZXQoZSx7ZDpbXSxtOltdfSksdGhpcy4jZC5kZWxldGUoZSl9dW5za2lwX2VmZmVjdChlLHQ9ZT0+dGhpcy5zY2hlZHVsZShlKSl7dmFyIG49dGhpcy4jdS5nZXQoZSk7aWYobil7dGhpcy4jdS5kZWxldGUoZSk7Zm9yKHZhciByIG9mIG4uZClEKHIsY2UpLHQocik7Zm9yKHIgb2Ygbi5tKUQocixsZSksdChyKX10aGlzLiNkLmFkZChlKX0jZygpe2lmKFV0Kys+MWUzJiYoSXQuZGVsZXRlKHRoaXMpLHF0KCkpLCF0aGlzLiNtKCkpe2ZvcihsZXQgZSBvZiB0aGlzLiNjKXRoaXMuI2wuZGVsZXRlKGUpLEQoZSxjZSksdGhpcy5zY2hlZHVsZShlKTtmb3IobGV0IGUgb2YgdGhpcy4jbClEKGUsbGUpLHRoaXMuc2NoZWR1bGUoZSl9bGV0IHQ9dGhpcy4jbzt0aGlzLiNvPVtdLHRoaXMuYXBwbHkoKTt2YXIgbj1WdD1bXSxyPVtdLGk9SHQ9W107Zm9yKGxldCBlIG9mIHQpdHJ5e3RoaXMuI18oZSxuLHIpfWNhdGNoKHQpe3Rocm93IGVuKGUpLHR9aWYoaj1udWxsLGkubGVuZ3RoPjApe3ZhciBhPWUuZW5zdXJlKCk7Zm9yKGxldCBlIG9mIGkpYS5zY2hlZHVsZShlKX1pZihWdD1udWxsLEh0PW51bGwsdGhpcy4jbSgpfHx0aGlzLiNoKCkpe3RoaXMuI3YociksdGhpcy4jdihuKTtmb3IobGV0W2UsdF1vZiB0aGlzLiN1KSR0KGUsdCl9ZWxzZXt0aGlzLiNyLnNpemU9PT0wJiZJdC5kZWxldGUodGhpcyksdGhpcy4jYy5jbGVhcigpLHRoaXMuI2wuY2xlYXIoKTtmb3IobGV0IGUgb2YgdGhpcy4jZSllKHRoaXMpO3RoaXMuI2UuY2xlYXIoKSxMdD10aGlzLFl0KHIpLFl0KG4pLEx0PW51bGwsdGhpcy4jYT8ucmVzb2x2ZSgpfXZhciBvPWo7aWYodGhpcy4jby5sZW5ndGg+MCl7bGV0IGU9bz8/PXRoaXM7ZS4jby5wdXNoKC4uLnRoaXMuI28uZmlsdGVyKHQ9PiFlLiNvLmluY2x1ZGVzKHQpKSl9byE9PW51bGwmJihJdC5hZGQobyksby4jZygpKSxydCYmIUl0Lmhhcyh0aGlzKSYmdGhpcy4jeSgpfSNfKGUsdCxuKXtlLmZePXNlO2Zvcih2YXIgcj1lLmZpcnN0O3IhPT1udWxsOyl7dmFyIGk9ci5mLGE9KGkmOTYpIT0wO2lmKCEoYSYmaSYxMDI0fHxpJjgxOTJ8fHRoaXMuI3UuaGFzKHIpKSYmci5mbiE9PW51bGwpe2E/ci5mXj1zZTppJjQ/dC5wdXNoKHIpOnJ0JiZpJjE2Nzc3MjI0P24ucHVzaChyKTpXcihyKSYmKGkmMTYmJnRoaXMuI2wuYWRkKHIpLFlyKHIpKTt2YXIgbz1yLmZpcnN0O2lmKG8hPT1udWxsKXtyPW87Y29udGludWV9fWZvcig7ciE9PW51bGw7KXt2YXIgcz1yLm5leHQ7aWYocyE9PW51bGwpe3I9czticmVha31yPXIucGFyZW50fX19I3YoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kz0xKUN0KGVbdF0sdGhpcy4jYyx0aGlzLiNsKX1jYXB0dXJlKGUsdCxuPSExKXtlLnYhPT1TJiYhdGhpcy5wcmV2aW91cy5oYXMoZSkmJnRoaXMucHJldmlvdXMuc2V0KGUsZS52KSxlLmYmODM4ODYwOHx8KHRoaXMuY3VycmVudC5zZXQoZSxbdCxuXSksTT8uc2V0KGUsdCkpLHRoaXMuaXNfZm9ya3x8KGUudj10KX1hY3RpdmF0ZSgpe2o9dGhpc31kZWFjdGl2YXRlKCl7aj1udWxsLE09bnVsbH1mbHVzaCgpe3RyeXtCdD0hMCxqPXRoaXMsdGhpcy4jZygpfWZpbmFsbHl7VXQ9MCxSdD1udWxsLFZ0PW51bGwsSHQ9bnVsbCxCdD0hMSxqPW51bGwsTT1udWxsLGJuLmNsZWFyKCl9fWRpc2NhcmQoKXtmb3IobGV0IGUgb2YgdGhpcy4jdCllKHRoaXMpO3RoaXMuI3QuY2xlYXIoKSx0aGlzLiNuLmNsZWFyKCksSXQuZGVsZXRlKHRoaXMpfXJlZ2lzdGVyX2NyZWF0ZWRfZWZmZWN0KGUpe3RoaXMuI3MucHVzaChlKX0jeSgpe2ZvcihsZXQgbCBvZiBJdCl7dmFyIGU9bC5pZDx0aGlzLmlkLHQ9W107Zm9yKGxldFtyLFtpLGFdXW9mIHRoaXMuY3VycmVudCl7aWYobC5jdXJyZW50LmhhcyhyKSl7dmFyIG49bC5jdXJyZW50LmdldChyKVswXTtpZihlJiZpIT09bilsLmN1cnJlbnQuc2V0KHIsW2ksYV0pO2Vsc2UgY29udGludWV9dC5wdXNoKHIpfXZhciByPVsuLi5sLmN1cnJlbnQua2V5cygpXS5maWx0ZXIoZT0+IXRoaXMuY3VycmVudC5oYXMoZSkpO2lmKHIubGVuZ3RoPT09MCllJiZsLmRpc2NhcmQoKTtlbHNlIGlmKHQubGVuZ3RoPjApe2lmKGUpZm9yKGxldCBlIG9mIHRoaXMuI2QpbC51bnNraXBfZWZmZWN0KGUsZT0+e2UuZiY0MTk0MzIwP2wuc2NoZWR1bGUoZSk6bC4jdihbZV0pfSk7bC5hY3RpdmF0ZSgpO3ZhciBpPW5ldyBTZXQsYT1uZXcgTWFwO2Zvcih2YXIgbyBvZiB0KVh0KG8scixpLGEpO2E9bmV3IE1hcDt2YXIgcz1bLi4ubC5jdXJyZW50LmtleXMoKV0uZmlsdGVyKGU9PnRoaXMuY3VycmVudC5oYXMoZSk/dGhpcy5jdXJyZW50LmdldChlKVswXSE9PWU6ITApO2ZvcihsZXQgZSBvZiB0aGlzLiNzKSEoZS5mJjE1NTY0OCkmJlp0KGUscyxhKSYmKGUuZiY0MTk0MzIwPyhEKGUsY2UpLGwuc2NoZWR1bGUoZSkpOmwuI2MuYWRkKGUpKTtpZihsLiNvLmxlbmd0aD4wKXtsLmFwcGx5KCk7Zm9yKHZhciBjIG9mIGwuI28pbC4jXyhjLFtdLFtdKTtsLiNvPVtdfWwuZGVhY3RpdmF0ZSgpfX1mb3IobGV0IGUgb2YgSXQpZS4jcC5oYXModGhpcykmJihlLiNwLmRlbGV0ZSh0aGlzKSxlLiNwLnNpemU9PT0wJiYhZS4jbSgpJiYoZS5hY3RpdmF0ZSgpLGUuI2coKSkpfWluY3JlbWVudChlLHQpe2xldCBuPXRoaXMuI3IuZ2V0KHQpPz8wO2lmKHRoaXMuI3Iuc2V0KHQsbisxKSxlKXtsZXQgZT10aGlzLiNpLmdldCh0KT8/MDt0aGlzLiNpLnNldCh0LGUrMSl9fWRlY3JlbWVudChlLHQsbil7bGV0IHI9dGhpcy4jci5nZXQodCk/PzA7aWYocj09PTE/dGhpcy4jci5kZWxldGUodCk6dGhpcy4jci5zZXQodCxyLTEpLGUpe2xldCBlPXRoaXMuI2kuZ2V0KHQpPz8wO2U9PT0xP3RoaXMuI2kuZGVsZXRlKHQpOnRoaXMuI2kuc2V0KHQsZS0xKX10aGlzLiNmfHxufHwodGhpcy4jZj0hMCxndCgoKT0+e3RoaXMuI2Y9ITEsdGhpcy5mbHVzaCgpfSkpfXRyYW5zZmVyX2VmZmVjdHMoZSx0KXtmb3IobGV0IHQgb2YgZSl0aGlzLiNjLmFkZCh0KTtmb3IobGV0IGUgb2YgdCl0aGlzLiNsLmFkZChlKTtlLmNsZWFyKCksdC5jbGVhcigpfW9uY29tbWl0KGUpe3RoaXMuI2UuYWRkKGUpfW9uZGlzY2FyZChlKXt0aGlzLiN0LmFkZChlKX1vbl9mb3JrX2NvbW1pdChlKXt0aGlzLiNuLmFkZChlKX1ydW5fZm9ya19jb21taXRfY2FsbGJhY2tzKCl7Zm9yKGxldCBlIG9mIHRoaXMuI24pZSh0aGlzKTt0aGlzLiNuLmNsZWFyKCl9c2V0dGxlZCgpe3JldHVybih0aGlzLiNhPz89YWUoKSkucHJvbWlzZX1zdGF0aWMgZW5zdXJlKCl7aWYoaj09PW51bGwpe2xldCB0PWo9bmV3IGU7QnR8fChJdC5hZGQoaiksenR8fGd0KCgpPT57aj09PXQmJnQuZmx1c2goKX0pKX1yZXR1cm4gan1hcHBseSgpe2lmKCFydHx8IXRoaXMuaXNfZm9yayYmSXQuc2l6ZT09PTEpe009bnVsbDtyZXR1cm59TT1uZXcgTWFwO2ZvcihsZXRbZSxbdF1db2YgdGhpcy5jdXJyZW50KU0uc2V0KGUsdCk7Zm9yKGxldCBuIG9mIEl0KWlmKCEobj09PXRoaXN8fG4uaXNfZm9yaykpe3ZhciBlPSExLHQ9ITE7aWYobi5pZDx0aGlzLmlkKWZvcihsZXRbcixbLGldXW9mIG4uY3VycmVudClpfHwoZXx8PXRoaXMuY3VycmVudC5oYXMociksdHx8PSF0aGlzLmN1cnJlbnQuaGFzKHIpKTtpZihlJiZ0KXRoaXMuI3AuYWRkKG4pO2Vsc2UgZm9yKGxldFtlLHRdb2Ygbi5wcmV2aW91cylNLmhhcyhlKXx8TS5zZXQoZSx0KX19c2NoZWR1bGUoZSl7aWYoUnQ9ZSxlLmI/LmlzX3BlbmRpbmcmJmUuZiYxNjc3NzIyOCYmIShlLmYmMzI3NjgpKXtlLmIuZGVmZXJfZWZmZWN0KGUpO3JldHVybn1mb3IodmFyIHQ9ZTt0LnBhcmVudCE9PW51bGw7KXt0PXQucGFyZW50O3ZhciBuPXQuZjtpZihWdCE9PW51bGwmJnQ9PT1JJiYocnR8fChGPT09bnVsbHx8IShGLmYmMikpJiYhRHQpKXJldHVybjtpZihuJjk2KXtpZighKG4mMTAyNCkpcmV0dXJuO3QuZl49c2V9fXRoaXMuI28ucHVzaCh0KX19O2Z1bmN0aW9uIEt0KGUpe3ZhciB0PXp0O3p0PSEwO3RyeXt2YXIgbjtmb3IoZSYmKGohPT1udWxsJiYhai5pc19mb3JrJiZqLmZsdXNoKCksbj1lKCkpOzspe2lmKF90KCksaj09PW51bGwpcmV0dXJuIG47ai5mbHVzaCgpfX1maW5hbGx5e3p0PXR9fWZ1bmN0aW9uIHF0KCl7dHJ5e05lKCl9Y2F0Y2goZSl7eXQoZSxSdCl9fXZhciBKdD1udWxsO2Z1bmN0aW9uIFl0KGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQhPT0wKXtmb3IodmFyIG49MDtuPHQ7KXt2YXIgcj1lW24rK107aWYoIShyLmYmMjQ1NzYpJiZXcihyKSYmKEp0PW5ldyBTZXQsWXIociksci5kZXBzPT09bnVsbCYmci5maXJzdD09PW51bGwmJnIubm9kZXM9PT1udWxsJiZyLnRlYXJkb3duPT09bnVsbCYmci5hYz09PW51bGwmJnhyKHIpLEp0Py5zaXplPjApKXtibi5jbGVhcigpO2ZvcihsZXQgZSBvZiBKdCl7aWYoZS5mJjI0NTc2KWNvbnRpbnVlO2xldCB0PVtlXSxuPWUucGFyZW50O2Zvcig7biE9PW51bGw7KUp0LmhhcyhuKSYmKEp0LmRlbGV0ZShuKSx0LnB1c2gobikpLG49bi5wYXJlbnQ7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49MDtlLS0pe2xldCBuPXRbZV07bi5mJjI0NTc2fHxZcihuKX19SnQuY2xlYXIoKX19SnQ9bnVsbH19ZnVuY3Rpb24gWHQoZSx0LG4scil7aWYoIW4uaGFzKGUpJiYobi5hZGQoZSksZS5yZWFjdGlvbnMhPT1udWxsKSlmb3IobGV0IGkgb2YgZS5yZWFjdGlvbnMpe2xldCBlPWkuZjtlJjI/WHQoaSx0LG4scik6ZSY0MTk0MzIwJiYhKGUmMjA0OCkmJlp0KGksdCxyKSYmKEQoaSxjZSksUXQoaSkpfX1mdW5jdGlvbiBadChlLHQsbil7bGV0IHI9bi5nZXQoZSk7aWYociE9PXZvaWQgMClyZXR1cm4gcjtpZihlLmRlcHMhPT1udWxsKWZvcihsZXQgciBvZiBlLmRlcHMpe2lmKG0uY2FsbCh0LHIpKXJldHVybiEwO2lmKHIuZiYyJiZadChyLHQsbikpcmV0dXJuIG4uc2V0KHIsITApLCEwfXJldHVybiBuLnNldChlLCExKSwhMX1mdW5jdGlvbiBRdChlKXtqLnNjaGVkdWxlKGUpfWZ1bmN0aW9uICR0KGUsdCl7aWYoIShlLmYmMzImJmUuZiYxMDI0KSl7ZS5mJjIwNDg/dC5kLnB1c2goZSk6ZS5mJjQwOTYmJnQubS5wdXNoKGUpLEQoZSxzZSk7Zm9yKHZhciBuPWUuZmlyc3Q7biE9PW51bGw7KSR0KG4sdCksbj1uLm5leHR9fWZ1bmN0aW9uIGVuKGUpe0QoZSxzZSk7Zm9yKHZhciB0PWUuZmlyc3Q7dCE9PW51bGw7KWVuKHQpLHQ9dC5uZXh0fWZ1bmN0aW9uIHRuKGUpe2xldCB0PTAsbj1TbigwKSxyO3JldHVybigpPT57aXIoKSYmKFIobiksZnIoKCk9Pih0PT09MCYmKHI9JHIoKCk9PmUoKCk9PmtuKG4pKSkpLHQrPTEsKCk9PntndCgoKT0+ey0tdCx0PT09MCYmKHI/LigpLHI9dm9pZCAwLGtuKG4pKX0pfSkpKX19dmFyIG5uPW1lfGhlO2Z1bmN0aW9uIHJuKGUsdCxuLHIpe25ldyBhbihlLHQsbixyKX12YXIgYW49Y2xhc3N7cGFyZW50O2lzX3BlbmRpbmc9ITE7dHJhbnNmb3JtX2Vycm9yOyNlOyN0PUM/dzpudWxsOyNuOyNyOyNpOyNhPW51bGw7I289bnVsbDsjcz1udWxsOyNjPW51bGw7I2w9MDsjdT0wOyNkPSExOyNmPW5ldyBTZXQ7I3A9bmV3IFNldDsjbT1udWxsOyNoPXRuKCgpPT4odGhpcy4jbT1Tbih0aGlzLiNsKSwoKT0+e3RoaXMuI209bnVsbH0pKTtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLiNlPWUsdGhpcy4jbj10LHRoaXMuI3I9ZT0+e3ZhciB0PUk7dC5iPXRoaXMsdC5mfD0xMjgsbihlKX0sdGhpcy5wYXJlbnQ9SS5iLHRoaXMudHJhbnNmb3JtX2Vycm9yPXI/P3RoaXMucGFyZW50Py50cmFuc2Zvcm1fZXJyb3I/PyhlPT5lKSx0aGlzLiNpPW1yKCgpPT57aWYoQyl7bGV0IGU9dGhpcy4jdDtZZSgpO2xldCB0PWUuZGF0YT09PWBbIWA7aWYoZS5kYXRhLnN0YXJ0c1dpdGgoYFs/YCkpe2xldCB0PUpTT04ucGFyc2UoZS5kYXRhLnNsaWNlKDIpKTt0aGlzLiNfKHQpfWVsc2UgdD90aGlzLiN2KCk6dGhpcy4jZygpfWVsc2UgdGhpcy4jeSgpfSxubiksQyYmKHRoaXMuI2U9dyl9I2coKXt0cnl7dGhpcy4jYT1ncigoKT0+dGhpcy4jcih0aGlzLiNlKSl9Y2F0Y2goZSl7dGhpcy5lcnJvcihlKX19I18oZSl7bGV0IHQ9dGhpcy4jbi5mYWlsZWQ7dCYmKHRoaXMuI3M9Z3IoKCk9Pnt0KHRoaXMuI2UsKCk9PmUsKCk9PigpPT57fSl9KSl9I3YoKXtsZXQgZT10aGlzLiNuLnBlbmRpbmc7ZSYmKHRoaXMuaXNfcGVuZGluZz0hMCx0aGlzLiNvPWdyKCgpPT5lKHRoaXMuI2UpKSxndCgoKT0+e3ZhciBlPXRoaXMuI2M9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9em4oKTtlLmFwcGVuZCh0KSx0aGlzLiNhPXRoaXMuI3goKCk9PmdyKCgpPT50aGlzLiNyKHQpKSksdGhpcy4jdT09PTAmJih0aGlzLiNlLmJlZm9yZShlKSx0aGlzLiNjPW51bGwsU3IodGhpcy4jbywoKT0+e3RoaXMuI289bnVsbH0pLHRoaXMuI2IoaikpfSkpfSN5KCl7dHJ5e2lmKHRoaXMuaXNfcGVuZGluZz10aGlzLmhhc19wZW5kaW5nX3NuaXBwZXQoKSx0aGlzLiN1PTAsdGhpcy4jbD0wLHRoaXMuI2E9Z3IoKCk9Pnt0aGlzLiNyKHRoaXMuI2UpfSksdGhpcy4jdT4wKXt2YXIgZT10aGlzLiNjPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtFcih0aGlzLiNhLGUpO2xldCB0PXRoaXMuI24ucGVuZGluZzt0aGlzLiNvPWdyKCgpPT50KHRoaXMuI2UpKX1lbHNlIHRoaXMuI2Ioail9Y2F0Y2goZSl7dGhpcy5lcnJvcihlKX19I2IoZSl7dGhpcy5pc19wZW5kaW5nPSExLGUudHJhbnNmZXJfZWZmZWN0cyh0aGlzLiNmLHRoaXMuI3ApfWRlZmVyX2VmZmVjdChlKXtDdChlLHRoaXMuI2YsdGhpcy4jcCl9aXNfcmVuZGVyZWQoKXtyZXR1cm4hdGhpcy5pc19wZW5kaW5nJiYoIXRoaXMucGFyZW50fHx0aGlzLnBhcmVudC5pc19yZW5kZXJlZCgpKX1oYXNfcGVuZGluZ19zbmlwcGV0KCl7cmV0dXJuISF0aGlzLiNuLnBlbmRpbmd9I3goZSl7dmFyIHQ9SSxuPUYscj1FO05yKHRoaXMuI2kpLE1yKHRoaXMuI2kpLG90KHRoaXMuI2kuY3R4KTt0cnl7cmV0dXJuIEd0LmVuc3VyZSgpLGUoKX1jYXRjaChlKXtyZXR1cm4gdnQoZSksbnVsbH1maW5hbGx5e05yKHQpLE1yKG4pLG90KHIpfX0jUyhlLHQpe2lmKCF0aGlzLmhhc19wZW5kaW5nX3NuaXBwZXQoKSl7dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LiNTKGUsdCk7cmV0dXJufXRoaXMuI3UrPWUsdGhpcy4jdT09PTAmJih0aGlzLiNiKHQpLHRoaXMuI28mJlNyKHRoaXMuI28sKCk9Pnt0aGlzLiNvPW51bGx9KSx0aGlzLiNjJiY9KHRoaXMuI2UuYmVmb3JlKHRoaXMuI2MpLG51bGwpKX11cGRhdGVfcGVuZGluZ19jb3VudChlLHQpe3RoaXMuI1MoZSx0KSx0aGlzLiNsKz1lLCEoIXRoaXMuI218fHRoaXMuI2QpJiYodGhpcy4jZD0hMCxndCgoKT0+e3RoaXMuI2Q9ITEsdGhpcy4jbSYmRW4odGhpcy4jbSx0aGlzLiNsKX0pKX1nZXRfZWZmZWN0X3BlbmRpbmcoKXtyZXR1cm4gdGhpcy4jaCgpLFIodGhpcy4jbSl9ZXJyb3IoZSl7aWYoIXRoaXMuI24ub25lcnJvciYmIXRoaXMuI24uZmFpbGVkKXRocm93IGU7aj8uaXNfZm9yaz8odGhpcy4jYSYmai5za2lwX2VmZmVjdCh0aGlzLiNhKSx0aGlzLiNvJiZqLnNraXBfZWZmZWN0KHRoaXMuI28pLHRoaXMuI3MmJmouc2tpcF9lZmZlY3QodGhpcy4jcyksai5vbl9mb3JrX2NvbW1pdCgoKT0+e3RoaXMuI0MoZSl9KSk6dGhpcy4jQyhlKX0jQyhlKXt0aGlzLiNhJiY9KFAodGhpcy4jYSksbnVsbCksdGhpcy4jbyYmPShQKHRoaXMuI28pLG51bGwpLHRoaXMuI3MmJj0oUCh0aGlzLiNzKSxudWxsKSxDJiYoVCh0aGlzLiN0KSxaZSgpLFQoUWUoKSkpO3ZhciB0PXRoaXMuI24ub25lcnJvcjtsZXQgbj10aGlzLiNuLmZhaWxlZDt2YXIgcj0hMSxpPSExO2xldCBhPSgpPT57aWYocil7cWUoKTtyZXR1cm59cj0hMCxpJiZ6ZSgpLHRoaXMuI3MhPT1udWxsJiZTcih0aGlzLiNzLCgpPT57dGhpcy4jcz1udWxsfSksdGhpcy4jeCgoKT0+e3RoaXMuI3koKX0pfSxvPWU9Pnt0cnl7aT0hMCx0Py4oZSxhKSxpPSExfWNhdGNoKGUpe3l0KGUsdGhpcy4jaSYmdGhpcy4jaS5wYXJlbnQpfW4mJih0aGlzLiNzPXRoaXMuI3goKCk9Pnt0cnl7cmV0dXJuIGdyKCgpPT57dmFyIHQ9STt0LmI9dGhpcyx0LmZ8PTEyOCxuKHRoaXMuI2UsKCk9PmUsKCk9PmEpfSl9Y2F0Y2goZSl7cmV0dXJuIHl0KGUsdGhpcy4jaS5wYXJlbnQpLG51bGx9fSkpfTtndCgoKT0+e3ZhciB0O3RyeXt0PXRoaXMudHJhbnNmb3JtX2Vycm9yKGUpfWNhdGNoKGUpe3l0KGUsdGhpcy4jaSYmdGhpcy4jaS5wYXJlbnQpO3JldHVybn10eXBlb2YgdD09YG9iamVjdGAmJnQmJnR5cGVvZiB0LnRoZW49PWBmdW5jdGlvbmA/dC50aGVuKG8sZT0+eXQoZSx0aGlzLiNpJiZ0aGlzLiNpLnBhcmVudCkpOm8odCl9KX19O2Z1bmN0aW9uIG9uKGUsdCxuLHIpe2xldCBpPWR0KCk/dW46cG47dmFyIGE9ZS5maWx0ZXIoZT0+IWUuc2V0dGxlZCk7aWYobi5sZW5ndGg9PT0wJiZhLmxlbmd0aD09PTApe3IodC5tYXAoaSkpO3JldHVybn12YXIgbz1JLHM9c24oKSxjPWEubGVuZ3RoPT09MT9hWzBdLnByb21pc2U6YS5sZW5ndGg+MT9Qcm9taXNlLmFsbChhLm1hcChlPT5lLnByb21pc2UpKTpudWxsO2Z1bmN0aW9uIGwoZSl7cygpO3RyeXtyKGUpfWNhdGNoKGUpe28uZiYxNjM4NHx8eXQoZSxvKX1jbigpfWlmKG4ubGVuZ3RoPT09MCl7Yy50aGVuKCgpPT5sKHQubWFwKGkpKSk7cmV0dXJufXZhciB1PWxuKCk7ZnVuY3Rpb24gZCgpe1Byb21pc2UuYWxsKG4ubWFwKGU9PmRuKGUpKSkudGhlbihlPT5sKFsuLi50Lm1hcChpKSwuLi5lXSkpLmNhdGNoKGU9Pnl0KGUsbykpLmZpbmFsbHkoKCk9PnUoKSl9Yz9jLnRoZW4oKCk9PntzKCksZCgpLGNuKCl9KTpkKCl9ZnVuY3Rpb24gc24oKXt2YXIgZT1JLHQ9RixuPUUscj1qO3JldHVybiBmdW5jdGlvbihpPSEwKXtOcihlKSxNcih0KSxvdChuKSxpJiYhKGUuZiYxNjM4NCkmJihyPy5hY3RpdmF0ZSgpLHI/LmFwcGx5KCkpfX1mdW5jdGlvbiBjbihlPSEwKXtOcihudWxsKSxNcihudWxsKSxvdChudWxsKSxlJiZqPy5kZWFjdGl2YXRlKCl9ZnVuY3Rpb24gbG4oKXt2YXIgZT1JLHQ9ZS5iLG49aixyPXQuaXNfcmVuZGVyZWQoKTtyZXR1cm4gdC51cGRhdGVfcGVuZGluZ19jb3VudCgxLG4pLG4uaW5jcmVtZW50KHIsZSksKGk9ITEpPT57dC51cGRhdGVfcGVuZGluZ19jb3VudCgtMSxuKSxuLmRlY3JlbWVudChyLGUsaSl9fWZ1bmN0aW9uIHVuKGUpe3ZhciB0PTJ8Y2U7cmV0dXJuIEkhPT1udWxsJiYoSS5mfD1oZSkse2N0eDpFLGRlcHM6bnVsbCxlZmZlY3RzOm51bGwsZXF1YWxzOmV0LGY6dCxmbjplLHJlYWN0aW9uczpudWxsLHJ2OjAsdjpTLHd2OjAscGFyZW50OkksYWM6bnVsbH19ZnVuY3Rpb24gZG4oZSx0LG4pe2xldCByPUk7cj09PW51bGwmJk9lKCk7dmFyIGk9dm9pZCAwLGE9U24oUyksbz0hRixzPW5ldyBNYXA7cmV0dXJuIGRyKCgpPT57dmFyIHQ9SSxuPWFlKCk7aT1uLnByb21pc2U7dHJ5e1Byb21pc2UucmVzb2x2ZShlKCkpLnRoZW4obi5yZXNvbHZlLG4ucmVqZWN0KS5maW5hbGx5KGNuKX1jYXRjaChlKXtuLnJlamVjdChlKSxjbigpfXZhciBjPWo7aWYobyl7aWYodC5mJjMyNzY4KXZhciBsPWxuKCk7aWYoci5iLmlzX3JlbmRlcmVkKCkpcy5nZXQoYyk/LnJlamVjdChUZSkscy5kZWxldGUoYyk7ZWxzZXtmb3IobGV0IGUgb2Ygcy52YWx1ZXMoKSllLnJlamVjdChUZSk7cy5jbGVhcigpfXMuc2V0KGMsbil9bGV0IHU9KGUsbj12b2lkIDApPT57aWYobCYmbChuPT09VGUpLCEobj09PVRlfHx0LmYmMTYzODQpKXtpZihjLmFjdGl2YXRlKCksbilhLmZ8PXhlLEVuKGEsbik7ZWxzZXthLmYmODM4ODYwOCYmKGEuZl49eGUpLEVuKGEsZSk7Zm9yKGxldFtlLHRdb2Ygcyl7aWYocy5kZWxldGUoZSksZT09PWMpYnJlYWs7dC5yZWplY3QoVGUpfX1jLmRlYWN0aXZhdGUoKX19O24ucHJvbWlzZS50aGVuKHUsZT0+dShudWxsLGV8fGB1bmtub3duYCkpfSksYXIoKCk9Pntmb3IobGV0IGUgb2Ygcy52YWx1ZXMoKSllLnJlamVjdChUZSl9KSxuZXcgUHJvbWlzZShlPT57ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiByKCl7bj09PWk/ZShhKTp0KGkpfW4udGhlbihyLHIpfXQoaSl9KX1mdW5jdGlvbiBmbihlKXtsZXQgdD11bihlKTtyZXR1cm4gcnR8fEZyKHQpLHR9ZnVuY3Rpb24gcG4oZSl7bGV0IHQ9dW4oZSk7cmV0dXJuIHQuZXF1YWxzPW50LHR9ZnVuY3Rpb24gbW4oZSl7dmFyIHQ9ZS5lZmZlY3RzO2lmKHQhPT1udWxsKXtlLmVmZmVjdHM9bnVsbDtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTEpUCh0W25dKX19ZnVuY3Rpb24gaG4oZSl7dmFyIHQsbj1JLHI9ZS5wYXJlbnQ7aWYoIWtyJiZyIT09bnVsbCYmci5mJjI0NTc2KXJldHVybiBXZSgpLGUudjtOcihyKTt0cnl7ZS5mJj1+dmUsbW4oZSksdD1LcihlKX1maW5hbGx5e05yKG4pfXJldHVybiB0fWZ1bmN0aW9uIGduKGUpe3ZhciB0PWhuKGUpO2lmKCFlLmVxdWFscyh0KSYmKGUud3Y9VXIoKSwoIWo/LmlzX2Zvcmt8fGUuZGVwcz09PW51bGwpJiYoaj09PW51bGw/ZS52PXQ6ai5jYXB0dXJlKGUsdCwhMCksZS5kZXBzPT09bnVsbCkpKXtEKGUsc2UpO3JldHVybn1rcnx8KE09PT1udWxsP3h0KGUpOihpcigpfHxqPy5pc19mb3JrKSYmTS5zZXQoZSx0KSl9ZnVuY3Rpb24gX24oZSl7aWYoZS5lZmZlY3RzIT09bnVsbClmb3IobGV0IHQgb2YgZS5lZmZlY3RzKSh0LnRlYXJkb3dufHx0LmFjKSYmKHQudGVhcmRvd24/LigpLHQuYWM/LmFib3J0KFRlKSx0LnRlYXJkb3duPXgsdC5hYz1udWxsLEpyKHQsMCksdnIodCkpfWZ1bmN0aW9uIHZuKGUpe2lmKGUuZWZmZWN0cyE9PW51bGwpZm9yKGxldCB0IG9mIGUuZWZmZWN0cyl0LnRlYXJkb3duJiZZcih0KX12YXIgeW49bmV3IFNldCxibj1uZXcgTWFwLHhuPSExO2Z1bmN0aW9uIFNuKGUsdCl7cmV0dXJue2Y6MCx2OmUscmVhY3Rpb25zOm51bGwsZXF1YWxzOmV0LHJ2OjAsd3Y6MH19ZnVuY3Rpb24gQ24oZSx0KXtsZXQgbj1TbihlLHQpO3JldHVybiBGcihuKSxufWZ1bmN0aW9uIHduKGUsdD0hMSxuPSEwKXtsZXQgcj1TbihlKTtyZXR1cm4gdHx8KHIuZXF1YWxzPW50KSxpdCYmbiYmRSE9PW51bGwmJkUubCE9PW51bGwmJihFLmwucz8/PVtdKS5wdXNoKHIpLHJ9ZnVuY3Rpb24gVG4oZSx0LG49ITEpe3JldHVybiBGIT09bnVsbCYmKCFqcnx8Ri5mJjEzMTA3MikmJmR0KCkmJkYuZiY0MzI1Mzk0JiYoUHI9PT1udWxsfHwhbS5jYWxsKFByLGUpKSYmUmUoKSxFbihlLG4/am4odCk6dCxIdCl9ZnVuY3Rpb24gRW4oZSx0LG49bnVsbCl7aWYoIWUuZXF1YWxzKHQpKXtibi5zZXQoZSxrcj90OmUudik7dmFyIHI9R3QuZW5zdXJlKCk7aWYoci5jYXB0dXJlKGUsdCksZS5mJjIpe2xldCB0PWU7ZS5mJjIwNDgmJmhuKHQpLE09PT1udWxsJiZ4dCh0KX1lLnd2PVVyKCksQW4oZSxjZSxuKSxkdCgpJiZJIT09bnVsbCYmSS5mJjEwMjQmJiEoSS5mJjk2KSYmKExyPT09bnVsbD9ScihbZV0pOkxyLnB1c2goZSkpLCFyLmlzX2ZvcmsmJnluLnNpemU+MCYmIXhuJiZEbigpfXJldHVybiB0fWZ1bmN0aW9uIERuKCl7eG49ITE7Zm9yKGxldCBlIG9mIHluKWUuZiYxMDI0JiZEKGUsbGUpLFdyKGUpJiZZcihlKTt5bi5jbGVhcigpfWZ1bmN0aW9uIE9uKGUsdD0xKXt2YXIgbj1SKGUpLHI9dD09PTE/bisrOm4tLTtyZXR1cm4gVG4oZSxuKSxyfWZ1bmN0aW9uIGtuKGUpe1RuKGUsZS52KzEpfWZ1bmN0aW9uIEFuKGUsdCxuKXt2YXIgcj1lLnJlYWN0aW9ucztpZihyIT09bnVsbClmb3IodmFyIGk9ZHQoKSxhPXIubGVuZ3RoLG89MDtvPGE7bysrKXt2YXIgcz1yW29dLGM9cy5mO2lmKCEoIWkmJnM9PT1JKSl7dmFyIGw9KGMmY2UpPT09MDtpZihsJiZEKHMsdCksYyYyKXt2YXIgdT1zO00/LmRlbGV0ZSh1KSxjJjY1NTM2fHwoYyY1MTImJihJPT09bnVsbHx8IShJLmYmMjA5NzE1MikpJiYocy5mfD12ZSksQW4odSxsZSxuKSl9ZWxzZSBpZihsKXt2YXIgZD1zO2MmMTYmJkp0IT09bnVsbCYmSnQuYWRkKGQpLG49PT1udWxsP1F0KGQpOm4ucHVzaChkKX19fX1mdW5jdGlvbiBqbihlKXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlfHxTZSBpbiBlKXJldHVybiBlO2xldCB0PWIoZSk7aWYodCE9PXkmJnQhPT1lZSlyZXR1cm4gZTt2YXIgbj1uZXcgTWFwLHI9ZihlKSxpPUNuKDApLGE9bnVsbCxvPVZyLHM9ZT0+e2lmKFZyPT09bylyZXR1cm4gZSgpO3ZhciB0PUYsbj1WcjtNcihudWxsKSxIcihvKTt2YXIgcj1lKCk7cmV0dXJuIE1yKHQpLEhyKG4pLHJ9O3JldHVybiByJiZuLnNldChgbGVuZ3RoYCxDbihlLmxlbmd0aCxhKSksbmV3IFByb3h5KGUse2RlZmluZVByb3BlcnR5KGUsdCxyKXsoIShgdmFsdWVgaW4gcil8fHIuY29uZmlndXJhYmxlPT09ITF8fHIuZW51bWVyYWJsZT09PSExfHxyLndyaXRhYmxlPT09ITEpJiZJZSgpO3ZhciBpPW4uZ2V0KHQpO3JldHVybiBpPT09dm9pZCAwP3MoKCk9Pnt2YXIgZT1DbihyLnZhbHVlLGEpO3JldHVybiBuLnNldCh0LGUpLGV9KTpUbihpLHIudmFsdWUsITApLCEwfSxkZWxldGVQcm9wZXJ0eShlLHQpe3ZhciByPW4uZ2V0KHQpO2lmKHI9PT12b2lkIDApe2lmKHQgaW4gZSl7bGV0IGU9cygoKT0+Q24oUyxhKSk7bi5zZXQodCxlKSxrbihpKX19ZWxzZSBUbihyLFMpLGtuKGkpO3JldHVybiEwfSxnZXQodCxyLGkpe2lmKHI9PT1TZSlyZXR1cm4gZTt2YXIgbz1uLmdldChyKSxjPXIgaW4gdDtpZihvPT09dm9pZCAwJiYoIWN8fF8odCxyKT8ud3JpdGFibGUpJiYobz1zKCgpPT5DbihqbihjP3Rbcl06UyksYSkpLG4uc2V0KHIsbykpLG8hPT12b2lkIDApe3ZhciBsPVIobyk7cmV0dXJuIGw9PT1TP3ZvaWQgMDpsfXJldHVybiBSZWZsZWN0LmdldCh0LHIsaSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpe3ZhciByPVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYociYmYHZhbHVlYGluIHIpe3ZhciBpPW4uZ2V0KHQpO2kmJihyLnZhbHVlPVIoaSkpfWVsc2UgaWYocj09PXZvaWQgMCl7dmFyIGE9bi5nZXQodCksbz1hPy52O2lmKGEhPT12b2lkIDAmJm8hPT1TKXJldHVybntlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpvLHdyaXRhYmxlOiEwfX1yZXR1cm4gcn0saGFzKGUsdCl7aWYodD09PVNlKXJldHVybiEwO3ZhciByPW4uZ2V0KHQpLGk9ciE9PXZvaWQgMCYmci52IT09U3x8UmVmbGVjdC5oYXMoZSx0KTtyZXR1cm4ociE9PXZvaWQgMHx8SSE9PW51bGwmJighaXx8XyhlLHQpPy53cml0YWJsZSkpJiYocj09PXZvaWQgMCYmKHI9cygoKT0+Q24oaT9qbihlW3RdKTpTLGEpKSxuLnNldCh0LHIpKSxSKHIpPT09Uyk/ITE6aX0sc2V0KGUsdCxvLGMpe3ZhciBsPW4uZ2V0KHQpLHU9dCBpbiBlO2lmKHImJnQ9PT1gbGVuZ3RoYClmb3IodmFyIGQ9bztkPGwudjtkKz0xKXt2YXIgZj1uLmdldChkK2BgKTtmPT09dm9pZCAwP2QgaW4gZSYmKGY9cygoKT0+Q24oUyxhKSksbi5zZXQoZCtgYCxmKSk6VG4oZixTKX1pZihsPT09dm9pZCAwKSghdXx8XyhlLHQpPy53cml0YWJsZSkmJihsPXMoKCk9PkNuKHZvaWQgMCxhKSksVG4obCxqbihvKSksbi5zZXQodCxsKSk7ZWxzZXt1PWwudiE9PVM7dmFyIHA9cygoKT0+am4obykpO1RuKGwscCl9dmFyIG09UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZihtPy5zZXQmJm0uc2V0LmNhbGwoYyxvKSwhdSl7aWYociYmdHlwZW9mIHQ9PWBzdHJpbmdgKXt2YXIgaD1uLmdldChgbGVuZ3RoYCksZz1OdW1iZXIodCk7TnVtYmVyLmlzSW50ZWdlcihnKSYmZz49aC52JiZUbihoLGcrMSl9a24oaSl9cmV0dXJuITB9LG93bktleXMoZSl7UihpKTt2YXIgdD1SZWZsZWN0Lm93bktleXMoZSkuZmlsdGVyKGU9Pnt2YXIgdD1uLmdldChlKTtyZXR1cm4gdD09PXZvaWQgMHx8dC52IT09U30pO2Zvcih2YXJbcixhXW9mIG4pYS52IT09UyYmIShyIGluIGUpJiZ0LnB1c2gocik7cmV0dXJuIHR9LHNldFByb3RvdHlwZU9mKCl7TGUoKX19KX1mdW5jdGlvbiBNbihlKXt0cnl7aWYodHlwZW9mIGU9PWBvYmplY3RgJiZlJiZTZSBpbiBlKXJldHVybiBlW1NlXX1jYXRjaHt9cmV0dXJuIGV9ZnVuY3Rpb24gTm4oZSx0KXtyZXR1cm4gT2JqZWN0LmlzKE1uKGUpLE1uKHQpKX12YXIgUG4sRm4sSW4sTG47ZnVuY3Rpb24gUm4oKXtpZihQbj09PXZvaWQgMCl7UG49d2luZG93LEZuPS9GaXJlZm94Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO3ZhciBlPUVsZW1lbnQucHJvdG90eXBlLHQ9Tm9kZS5wcm90b3R5cGUsbj1UZXh0LnByb3RvdHlwZTtJbj1fKHQsYGZpcnN0Q2hpbGRgKS5nZXQsTG49Xyh0LGBuZXh0U2libGluZ2ApLmdldCx0ZShlKSYmKGUuX19jbGljaz12b2lkIDAsZS5fX2NsYXNzTmFtZT12b2lkIDAsZS5fX2F0dHJpYnV0ZXM9bnVsbCxlLl9fc3R5bGU9dm9pZCAwLGUuX19lPXZvaWQgMCksdGUobikmJihuLl9fdD12b2lkIDApfX1mdW5jdGlvbiB6bihlPWBgKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9ZnVuY3Rpb24gTihlKXtyZXR1cm4gSW4uY2FsbChlKX1mdW5jdGlvbiBCbihlKXtyZXR1cm4gTG4uY2FsbChlKX1mdW5jdGlvbiBWbihlLHQpe2lmKCFDKXJldHVybiBOKGUpO3ZhciBuPU4odyk7aWYobj09PW51bGwpbj13LmFwcGVuZENoaWxkKHpuKCkpO2Vsc2UgaWYodCYmbi5ub2RlVHlwZSE9PTMpe3ZhciByPXpuKCk7cmV0dXJuIG4/LmJlZm9yZShyKSxUKHIpLHJ9cmV0dXJuIHQmJkpuKG4pLFQobiksbn1mdW5jdGlvbiBIbihlLHQ9ITEpe2lmKCFDKXt2YXIgbj1OKGUpO3JldHVybiBuIGluc3RhbmNlb2YgQ29tbWVudCYmbi5kYXRhPT09YGA/Qm4obik6bn1pZih0KXtpZih3Py5ub2RlVHlwZSE9PTMpe3ZhciByPXpuKCk7cmV0dXJuIHc/LmJlZm9yZShyKSxUKHIpLHJ9Sm4odyl9cmV0dXJuIHd9ZnVuY3Rpb24gVW4oZSx0PTEsbj0hMSl7bGV0IHI9Qz93OmU7Zm9yKHZhciBpO3QtLTspaT1yLHI9Qm4ocik7aWYoIUMpcmV0dXJuIHI7aWYobil7aWYocj8ubm9kZVR5cGUhPT0zKXt2YXIgYT16bigpO3JldHVybiByPT09bnVsbD9pPy5hZnRlcihhKTpyLmJlZm9yZShhKSxUKGEpLGF9Sm4ocil9cmV0dXJuIFQocikscn1mdW5jdGlvbiBXbihlKXtlLnRleHRDb250ZW50PWBgfWZ1bmN0aW9uIEduKCl7cmV0dXJuIXJ0fHxKdCE9PW51bGw/ITE6KEkuZiZmZSkhPT0wfWZ1bmN0aW9uIEtuKGUsdCxuKXtsZXQgcj1uP3tpczpufTp2b2lkIDA7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Pz9gaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbGAsZSxyKX1mdW5jdGlvbiBxbihlPWBgKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChlKX1mdW5jdGlvbiBKbihlKXtpZihlLm5vZGVWYWx1ZS5sZW5ndGg8NjU1MzYpcmV0dXJuO2xldCB0PWUubmV4dFNpYmxpbmc7Zm9yKDt0IT09bnVsbCYmdC5ub2RlVHlwZT09PTM7KXQucmVtb3ZlKCksZS5ub2RlVmFsdWUrPXQubm9kZVZhbHVlLHQ9ZS5uZXh0U2libGluZ31mdW5jdGlvbiBZbihlLHQpe2lmKHQpe2xldCB0PWRvY3VtZW50LmJvZHk7ZS5hdXRvZm9jdXM9ITAsZ3QoKCk9Pntkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dCYmZS5mb2N1cygpfSl9fWZ1bmN0aW9uIFhuKGUpe0MmJk4oZSkhPT1udWxsJiZXbihlKX12YXIgWm49ITE7ZnVuY3Rpb24gUW4oKXtabnx8KFpuPSEwLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYHJlc2V0YCxlPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKCFlLmRlZmF1bHRQcmV2ZW50ZWQpZm9yKGxldCB0IG9mIGUudGFyZ2V0LmVsZW1lbnRzKXQuX19vbl9yPy4oKX0pfSx7Y2FwdHVyZTohMH0pKX1mdW5jdGlvbiAkbihlKXt2YXIgdD1GLG49STtNcihudWxsKSxOcihudWxsKTt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e01yKHQpLE5yKG4pfX1mdW5jdGlvbiBlcihlLHQsbixyPW4pe2UuYWRkRXZlbnRMaXN0ZW5lcih0LCgpPT4kbihuKSk7bGV0IGk9ZS5fX29uX3I7aT9lLl9fb25fcj0oKT0+e2koKSxyKCEwKX06ZS5fX29uX3I9KCk9PnIoITApLFFuKCl9ZnVuY3Rpb24gdHIoZSl7ST09PW51bGwmJihGPT09bnVsbCYmTWUoZSksamUoKSksa3ImJkFlKGUpfWZ1bmN0aW9uIG5yKGUsdCl7dmFyIG49dC5sYXN0O249PT1udWxsP3QubGFzdD10LmZpcnN0PWU6KG4ubmV4dD1lLGUucHJldj1uLHQubGFzdD1lKX1mdW5jdGlvbiBycihlLHQpe3ZhciBuPUk7biE9PW51bGwmJm4uZiY4MTkyJiYoZXw9dWUpO3ZhciByPXtjdHg6RSxkZXBzOm51bGwsbm9kZXM6bnVsbCxmOmV8Y2V8NTEyLGZpcnN0Om51bGwsZm46dCxsYXN0Om51bGwsbmV4dDpudWxsLHBhcmVudDpuLGI6biYmbi5iLHByZXY6bnVsbCx0ZWFyZG93bjpudWxsLHd2OjAsYWM6bnVsbH07aj8ucmVnaXN0ZXJfY3JlYXRlZF9lZmZlY3Qocik7dmFyIGk9cjtpZihlJjQpVnQ9PT1udWxsP0d0LmVuc3VyZSgpLnNjaGVkdWxlKHIpOlZ0LnB1c2gocik7ZWxzZSBpZih0IT09bnVsbCl7dHJ5e1lyKHIpfWNhdGNoKGUpe3Rocm93IFAociksZX1pLmRlcHM9PT1udWxsJiZpLnRlYXJkb3duPT09bnVsbCYmaS5ub2Rlcz09PW51bGwmJmkuZmlyc3Q9PT1pLmxhc3QmJiEoaS5mJjUyNDI4OCkmJihpPWkuZmlyc3QsZSYxNiYmZSY2NTUzNiYmaSE9PW51bGwmJihpLmZ8PW1lKSl9aWYoaSE9PW51bGwmJihpLnBhcmVudD1uLG4hPT1udWxsJiZucihpLG4pLEYhPT1udWxsJiZGLmYmMiYmIShlJjY0KSkpe3ZhciBhPUY7KGEuZWZmZWN0cz8/PVtdKS5wdXNoKGkpfXJldHVybiByfWZ1bmN0aW9uIGlyKCl7cmV0dXJuIEYhPT1udWxsJiYhanJ9ZnVuY3Rpb24gYXIoZSl7bGV0IHQ9cnIoOCxudWxsKTtyZXR1cm4gRCh0LHNlKSx0LnRlYXJkb3duPWUsdH1mdW5jdGlvbiBvcihlKXt0cihgJGVmZmVjdGApO3ZhciB0PUkuZjtpZighRiYmdCYzMiYmISh0JjMyNzY4KSl7dmFyIG49RTsobi5lPz89W10pLnB1c2goZSl9ZWxzZSByZXR1cm4gc3IoZSl9ZnVuY3Rpb24gc3IoZSl7cmV0dXJuIHJyKDR8Z2UsZSl9ZnVuY3Rpb24gY3IoZSl7cmV0dXJuIHRyKGAkZWZmZWN0LnByZWApLHJyKDh8Z2UsZSl9ZnVuY3Rpb24gbHIoZSl7R3QuZW5zdXJlKCk7bGV0IHQ9cnIoNjR8aGUsZSk7cmV0dXJuKGU9e30pPT5uZXcgUHJvbWlzZShuPT57ZS5vdXRybz9Tcih0LCgpPT57UCh0KSxuKHZvaWQgMCl9KTooUCh0KSxuKHZvaWQgMCkpfSl9ZnVuY3Rpb24gdXIoZSl7cmV0dXJuIHJyKDQsZSl9ZnVuY3Rpb24gZHIoZSl7cmV0dXJuIHJyKGJlfGhlLGUpfWZ1bmN0aW9uIGZyKGUsdD0wKXtyZXR1cm4gcnIoOHx0LGUpfWZ1bmN0aW9uIHByKGUsdD1bXSxuPVtdLHI9W10pe29uKHIsdCxuLHQ9Pntycig4LCgpPT5lKC4uLnQubWFwKFIpKSl9KX1mdW5jdGlvbiBtcihlLHQ9MCl7cmV0dXJuIHJyKDE2fHQsZSl9ZnVuY3Rpb24gaHIoZSx0PTApe3JldHVybiBycihvZXx0LGUpfWZ1bmN0aW9uIGdyKGUpe3JldHVybiBycigzMnxoZSxlKX1mdW5jdGlvbiBfcihlKXt2YXIgdD1lLnRlYXJkb3duO2lmKHQhPT1udWxsKXtsZXQgZT1rcixuPUY7QXIoITApLE1yKG51bGwpO3RyeXt0LmNhbGwobnVsbCl9ZmluYWxseXtBcihlKSxNcihuKX19fWZ1bmN0aW9uIHZyKGUsdD0hMSl7dmFyIG49ZS5maXJzdDtmb3IoZS5maXJzdD1lLmxhc3Q9bnVsbDtuIT09bnVsbDspe2xldCBlPW4uYWM7ZSE9PW51bGwmJiRuKCgpPT57ZS5hYm9ydChUZSl9KTt2YXIgcj1uLm5leHQ7bi5mJjY0P24ucGFyZW50PW51bGw6UChuLHQpLG49cn19ZnVuY3Rpb24geXIoZSl7Zm9yKHZhciB0PWUuZmlyc3Q7dCE9PW51bGw7KXt2YXIgbj10Lm5leHQ7dC5mJjMyfHxQKHQpLHQ9bn19ZnVuY3Rpb24gUChlLHQ9ITApe3ZhciBuPSExOyh0fHxlLmYmMjYyMTQ0KSYmZS5ub2RlcyE9PW51bGwmJmUubm9kZXMuZW5kIT09bnVsbCYmKGJyKGUubm9kZXMuc3RhcnQsZS5ub2Rlcy5lbmQpLG49ITApLEQoZSxwZSksdnIoZSx0JiYhbiksSnIoZSwwKTt2YXIgcj1lLm5vZGVzJiZlLm5vZGVzLnQ7aWYociE9PW51bGwpZm9yKGxldCBlIG9mIHIpZS5zdG9wKCk7X3IoZSksZS5mXj1wZSxlLmZ8PWRlO3ZhciBpPWUucGFyZW50O2khPT1udWxsJiZpLmZpcnN0IT09bnVsbCYmeHIoZSksZS5uZXh0PWUucHJldj1lLnRlYXJkb3duPWUuY3R4PWUuZGVwcz1lLmZuPWUubm9kZXM9ZS5hYz1lLmI9bnVsbH1mdW5jdGlvbiBicihlLHQpe2Zvcig7ZSE9PW51bGw7KXt2YXIgbj1lPT09dD9udWxsOkJuKGUpO2UucmVtb3ZlKCksZT1ufX1mdW5jdGlvbiB4cihlKXt2YXIgdD1lLnBhcmVudCxuPWUucHJldixyPWUubmV4dDtuIT09bnVsbCYmKG4ubmV4dD1yKSxyIT09bnVsbCYmKHIucHJldj1uKSx0IT09bnVsbCYmKHQuZmlyc3Q9PT1lJiYodC5maXJzdD1yKSx0Lmxhc3Q9PT1lJiYodC5sYXN0PW4pKX1mdW5jdGlvbiBTcihlLHQsbj0hMCl7dmFyIHI9W107Q3IoZSxyLCEwKTt2YXIgaT0oKT0+e24mJlAoZSksdCYmdCgpfSxhPXIubGVuZ3RoO2lmKGE+MCl7dmFyIG89KCk9Pi0tYXx8aSgpO2Zvcih2YXIgcyBvZiByKXMub3V0KG8pfWVsc2UgaSgpfWZ1bmN0aW9uIENyKGUsdCxuKXtpZighKGUuZiY4MTkyKSl7ZS5mXj11ZTt2YXIgcj1lLm5vZGVzJiZlLm5vZGVzLnQ7aWYociE9PW51bGwpZm9yKGxldCBlIG9mIHIpKGUuaXNfZ2xvYmFsfHxuKSYmdC5wdXNoKGUpO2Zvcih2YXIgaT1lLmZpcnN0O2khPT1udWxsOyl7dmFyIGE9aS5uZXh0O2lmKCEoaS5mJjY0KSl7dmFyIG89KGkuZiY2NTUzNikhPTB8fChpLmYmMzIpIT0wJiYoZS5mJjE2KSE9MDtDcihpLHQsbz9uOiExKX1pPWF9fX1mdW5jdGlvbiB3cihlKXtUcihlLCEwKX1mdW5jdGlvbiBUcihlLHQpe2lmKGUuZiY4MTkyKXtlLmZePXVlLGUuZiYxMDI0fHwoRChlLGNlKSxHdC5lbnN1cmUoKS5zY2hlZHVsZShlKSk7Zm9yKHZhciBuPWUuZmlyc3Q7biE9PW51bGw7KXt2YXIgcj1uLm5leHQsaT0obi5mJjY1NTM2KSE9MHx8KG4uZiYzMikhPTA7VHIobixpP3Q6ITEpLG49cn12YXIgYT1lLm5vZGVzJiZlLm5vZGVzLnQ7aWYoYSE9PW51bGwpZm9yKGxldCBlIG9mIGEpKGUuaXNfZ2xvYmFsfHx0KSYmZS5pbigpfX1mdW5jdGlvbiBFcihlLHQpe2lmKGUubm9kZXMpZm9yKHZhciBuPWUubm9kZXMuc3RhcnQscj1lLm5vZGVzLmVuZDtuIT09bnVsbDspe3ZhciBpPW49PT1yP251bGw6Qm4obik7dC5hcHBlbmQobiksbj1pfX12YXIgRHI9bnVsbCxPcj0hMSxrcj0hMTtmdW5jdGlvbiBBcihlKXtrcj1lfXZhciBGPW51bGwsanI9ITE7ZnVuY3Rpb24gTXIoZSl7Rj1lfXZhciBJPW51bGw7ZnVuY3Rpb24gTnIoZSl7ST1lfXZhciBQcj1udWxsO2Z1bmN0aW9uIEZyKGUpe0YhPT1udWxsJiYoIXJ0fHxGLmYmMikmJihQcj09PW51bGw/UHI9W2VdOlByLnB1c2goZSkpfXZhciBMPW51bGwsSXI9MCxMcj1udWxsO2Z1bmN0aW9uIFJyKGUpe0xyPWV9dmFyIHpyPTEsQnI9MCxWcj1CcjtmdW5jdGlvbiBIcihlKXtWcj1lfWZ1bmN0aW9uIFVyKCl7cmV0dXJuKyt6cn1mdW5jdGlvbiBXcihlKXt2YXIgdD1lLmY7aWYodCYyMDQ4KXJldHVybiEwO2lmKHQmMiYmKGUuZiY9fnZlKSx0JjQwOTYpe2Zvcih2YXIgbj1lLmRlcHMscj1uLmxlbmd0aCxpPTA7aTxyO2krKyl7dmFyIGE9bltpXTtpZihXcihhKSYmZ24oYSksYS53dj5lLnd2KXJldHVybiEwfXQmNTEyJiZNPT09bnVsbCYmRChlLHNlKX1yZXR1cm4hMX1mdW5jdGlvbiBHcihlLHQsbj0hMCl7dmFyIHI9ZS5yZWFjdGlvbnM7aWYociE9PW51bGwmJiEoIXJ0JiZQciE9PW51bGwmJm0uY2FsbChQcixlKSkpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXJbaV07YS5mJjI/R3IoYSx0LCExKTp0PT09YSYmKG4/RChhLGNlKTphLmYmMTAyNCYmRChhLGxlKSxRdChhKSl9fWZ1bmN0aW9uIEtyKGUpe3ZhciB0PUwsbj1JcixyPUxyLGk9RixhPVByLG89RSxzPWpyLGM9VnIsbD1lLmY7TD1udWxsLElyPTAsTHI9bnVsbCxGPWwmOTY/bnVsbDplLFByPW51bGwsb3QoZS5jdHgpLGpyPSExLFZyPSsrQnIsZS5hYyE9PW51bGwmJigkbigoKT0+e2UuYWMuYWJvcnQoVGUpfSksZS5hYz1udWxsKTt0cnl7ZS5mfD15ZTt2YXIgdT1lLmZuLGQ9dSgpO2UuZnw9ZmU7dmFyIGY9ZS5kZXBzLHA9aj8uaXNfZm9yaztpZihMIT09bnVsbCl7dmFyIG07aWYocHx8SnIoZSxJciksZiE9PW51bGwmJklyPjApZm9yKGYubGVuZ3RoPUlyK0wubGVuZ3RoLG09MDttPEwubGVuZ3RoO20rKylmW0lyK21dPUxbbV07ZWxzZSBlLmRlcHM9Zj1MO2lmKGlyKCkmJmUuZiY1MTIpZm9yKG09SXI7bTxmLmxlbmd0aDttKyspKGZbbV0ucmVhY3Rpb25zPz89W10pLnB1c2goZSl9ZWxzZSAhcCYmZiE9PW51bGwmJklyPGYubGVuZ3RoJiYoSnIoZSxJciksZi5sZW5ndGg9SXIpO2lmKGR0KCkmJkxyIT09bnVsbCYmIWpyJiZmIT09bnVsbCYmIShlLmYmNjE0NikpZm9yKG09MDttPExyLmxlbmd0aDttKyspR3IoTHJbbV0sZSk7aWYoaSE9PW51bGwmJmkhPT1lKXtpZihCcisrLGkuZGVwcyE9PW51bGwpZm9yKGxldCBlPTA7ZTxuO2UrPTEpaS5kZXBzW2VdLnJ2PUJyO2lmKHQhPT1udWxsKWZvcihsZXQgZSBvZiB0KWUucnY9QnI7THIhPT1udWxsJiYocj09PW51bGw/cj1McjpyLnB1c2goLi4uTHIpKX1yZXR1cm4gZS5mJjgzODg2MDgmJihlLmZePXhlKSxkfWNhdGNoKGUpe3JldHVybiB2dChlKX1maW5hbGx5e2UuZl49eWUsTD10LElyPW4sTHI9cixGPWksUHI9YSxvdChvKSxqcj1zLFZyPWN9fWZ1bmN0aW9uIHFyKGUsdCl7bGV0IG49dC5yZWFjdGlvbnM7aWYobiE9PW51bGwpe3ZhciByPXAuY2FsbChuLGUpO2lmKHIhPT0tMSl7dmFyIGk9bi5sZW5ndGgtMTtpPT09MD9uPXQucmVhY3Rpb25zPW51bGw6KG5bcl09bltpXSxuLnBvcCgpKX19aWYobj09PW51bGwmJnQuZiYyJiYoTD09PW51bGx8fCFtLmNhbGwoTCx0KSkpe3ZhciBhPXQ7YS5mJjUxMiYmKGEuZl49NTEyLGEuZiY9fnZlKSxhLnYhPT1TJiZ4dChhKSxfbihhKSxKcihhLDApfX1mdW5jdGlvbiBKcihlLHQpe3ZhciBuPWUuZGVwcztpZihuIT09bnVsbClmb3IodmFyIHI9dDtyPG4ubGVuZ3RoO3IrKylxcihlLG5bcl0pfWZ1bmN0aW9uIFlyKGUpe3ZhciB0PWUuZjtpZighKHQmMTYzODQpKXtEKGUsc2UpO3ZhciBuPUkscj1PcjtJPWUsT3I9ITA7dHJ5e3QmMTY3NzcyMzI/eXIoZSk6dnIoZSksX3IoZSk7dmFyIGk9S3IoZSk7ZS50ZWFyZG93bj10eXBlb2YgaT09YGZ1bmN0aW9uYD9pOm51bGwsZS53dj16cn1maW5hbGx5e09yPXIsST1ufX19YXN5bmMgZnVuY3Rpb24gWHIoKXtpZihydClyZXR1cm4gbmV3IFByb21pc2UoZT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+ZSgpKSxzZXRUaW1lb3V0KCgpPT5lKCkpfSk7YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCksS3QoKX1mdW5jdGlvbiBSKGUpe3ZhciB0PShlLmYmMikhPTA7aWYoRHI/LmFkZChlKSxGIT09bnVsbCYmIWpyJiYhKEkhPT1udWxsJiZJLmYmMTYzODQpJiYoUHI9PT1udWxsfHwhbS5jYWxsKFByLGUpKSl7dmFyIG49Ri5kZXBzO2lmKEYuZiYyMDk3MTUyKWUucnY8QnImJihlLnJ2PUJyLEw9PT1udWxsJiZuIT09bnVsbCYmbltJcl09PT1lP0lyKys6TD09PW51bGw/TD1bZV06TC5wdXNoKGUpKTtlbHNleyhGLmRlcHM/Pz1bXSkucHVzaChlKTt2YXIgcj1lLnJlYWN0aW9ucztyPT09bnVsbD9lLnJlYWN0aW9ucz1bRl06bS5jYWxsKHIsRil8fHIucHVzaChGKX19aWYoa3ImJmJuLmhhcyhlKSlyZXR1cm4gYm4uZ2V0KGUpO2lmKHQpe3ZhciBpPWU7aWYoa3Ipe3ZhciBhPWkudjtyZXR1cm4oIShpLmYmMTAyNCkmJmkucmVhY3Rpb25zIT09bnVsbHx8UXIoaSkpJiYoYT1obihpKSksYm4uc2V0KGksYSksYX12YXIgbz0oaS5mJjUxMik9PTAmJiFqciYmRiE9PW51bGwmJihPcnx8KEYuZiY1MTIpIT0wKSxzPShpLmYmZmUpPT09MDtXcihpKSYmKG8mJihpLmZ8PTUxMiksZ24oaSkpLG8mJiFzJiYodm4oaSksWnIoaSkpfWlmKE0/LmhhcyhlKSlyZXR1cm4gTS5nZXQoZSk7aWYoZS5mJjgzODg2MDgpdGhyb3cgZS52O3JldHVybiBlLnZ9ZnVuY3Rpb24gWnIoZSl7aWYoZS5mfD01MTIsZS5kZXBzIT09bnVsbClmb3IobGV0IHQgb2YgZS5kZXBzKSh0LnJlYWN0aW9ucz8/PVtdKS5wdXNoKGUpLHQuZiYyJiYhKHQuZiY1MTIpJiYodm4odCksWnIodCkpfWZ1bmN0aW9uIFFyKGUpe2lmKGUudj09PVMpcmV0dXJuITA7aWYoZS5kZXBzPT09bnVsbClyZXR1cm4hMTtmb3IobGV0IHQgb2YgZS5kZXBzKWlmKGJuLmhhcyh0KXx8dC5mJjImJlFyKHQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uICRyKGUpe3ZhciB0PWpyO3RyeXtyZXR1cm4ganI9ITAsZSgpfWZpbmFsbHl7anI9dH19ZnVuY3Rpb24gZWkoZSl7aWYoISh0eXBlb2YgZSE9YG9iamVjdGB8fCFlfHxlIGluc3RhbmNlb2YgRXZlbnRUYXJnZXQpKXtpZihTZSBpbiBlKXRpKGUpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCB0IGluIGUpe2xldCBuPWVbdF07dHlwZW9mIG49PWBvYmplY3RgJiZuJiZTZSBpbiBuJiZ0aShuKX19fWZ1bmN0aW9uIHRpKGUsdD1uZXcgU2V0KXtpZih0eXBlb2YgZT09YG9iamVjdGAmJmUmJiEoZSBpbnN0YW5jZW9mIEV2ZW50VGFyZ2V0KSYmIXQuaGFzKGUpKXt0LmFkZChlKSxlIGluc3RhbmNlb2YgRGF0ZSYmZS5nZXRUaW1lKCk7Zm9yKGxldCBuIGluIGUpdHJ5e3RpKGVbbl0sdCl9Y2F0Y2h7fWxldCBuPWIoZSk7aWYobiE9PU9iamVjdC5wcm90b3R5cGUmJm4hPT1BcnJheS5wcm90b3R5cGUmJm4hPT1NYXAucHJvdG90eXBlJiZuIT09U2V0LnByb3RvdHlwZSYmbiE9PURhdGUucHJvdG90eXBlKXtsZXQgdD12KG4pO2ZvcihsZXQgbiBpbiB0KXtsZXQgcj10W25dLmdldDtpZihyKXRyeXtyLmNhbGwoZSl9Y2F0Y2h7fX19fX1mdW5jdGlvbiBuaShlKXtyZXR1cm4gZS5lbmRzV2l0aChgY2FwdHVyZWApJiZlIT09YGdvdHBvaW50ZXJjYXB0dXJlYCYmZSE9PWBsb3N0cG9pbnRlcmNhcHR1cmVgfXZhciByaT1bYGJlZm9yZWlucHV0YCxgY2xpY2tgLGBjaGFuZ2VgLGBkYmxjbGlja2AsYGNvbnRleHRtZW51YCxgZm9jdXNpbmAsYGZvY3Vzb3V0YCxgaW5wdXRgLGBrZXlkb3duYCxga2V5dXBgLGBtb3VzZWRvd25gLGBtb3VzZW1vdmVgLGBtb3VzZW91dGAsYG1vdXNlb3ZlcmAsYG1vdXNldXBgLGBwb2ludGVyZG93bmAsYHBvaW50ZXJtb3ZlYCxgcG9pbnRlcm91dGAsYHBvaW50ZXJvdmVyYCxgcG9pbnRlcnVwYCxgdG91Y2hlbmRgLGB0b3VjaG1vdmVgLGB0b3VjaHN0YXJ0YF07ZnVuY3Rpb24gaWkoZSl7cmV0dXJuIHJpLmluY2x1ZGVzKGUpfXZhciBhaT1gYWxsb3dmdWxsc2NyZWVuLmFzeW5jLmF1dG9mb2N1cy5hdXRvcGxheS5jaGVja2VkLmNvbnRyb2xzLmRlZmF1bHQuZGlzYWJsZWQuZm9ybW5vdmFsaWRhdGUuaW5kZXRlcm1pbmF0ZS5pbmVydC5pc21hcC5sb29wLm11bHRpcGxlLm11dGVkLm5vbW9kdWxlLm5vdmFsaWRhdGUub3Blbi5wbGF5c2lubGluZS5yZWFkb25seS5yZXF1aXJlZC5yZXZlcnNlZC5zZWFtbGVzcy5zZWxlY3RlZC53ZWJraXRkaXJlY3RvcnkuZGVmZXIuZGlzYWJsZXBpY3R1cmVpbnBpY3R1cmUuZGlzYWJsZXJlbW90ZXBsYXliYWNrYC5zcGxpdChgLmApLG9pPXtmb3Jtbm92YWxpZGF0ZTpgZm9ybU5vVmFsaWRhdGVgLGlzbWFwOmBpc01hcGAsbm9tb2R1bGU6YG5vTW9kdWxlYCxwbGF5c2lubGluZTpgcGxheXNJbmxpbmVgLHJlYWRvbmx5OmByZWFkT25seWAsZGVmYXVsdHZhbHVlOmBkZWZhdWx0VmFsdWVgLGRlZmF1bHRjaGVja2VkOmBkZWZhdWx0Q2hlY2tlZGAsc3Jjb2JqZWN0OmBzcmNPYmplY3RgLG5vdmFsaWRhdGU6YG5vVmFsaWRhdGVgLGFsbG93ZnVsbHNjcmVlbjpgYWxsb3dGdWxsc2NyZWVuYCxkaXNhYmxlcGljdHVyZWlucGljdHVyZTpgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmVgLGRpc2FibGVyZW1vdGVwbGF5YmFjazpgZGlzYWJsZVJlbW90ZVBsYXliYWNrYH07ZnVuY3Rpb24gc2koZSl7cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLG9pW2VdPz9lfVsuLi5haV07dmFyIGNpPVtgdG91Y2hzdGFydGAsYHRvdWNobW92ZWBdO2Z1bmN0aW9uIGxpKGUpe3JldHVybiBjaS5pbmNsdWRlcyhlKX12YXIgdWk9U3ltYm9sKGBldmVudHNgKSxkaT1uZXcgU2V0LGZpPW5ldyBTZXQ7ZnVuY3Rpb24gcGkoZSl7aWYoIUMpcmV0dXJuO2UucmVtb3ZlQXR0cmlidXRlKGBvbmxvYWRgKSxlLnJlbW92ZUF0dHJpYnV0ZShgb25lcnJvcmApO2xldCB0PWUuX19lO3QhPT12b2lkIDAmJihlLl9fZT12b2lkIDAscXVldWVNaWNyb3Rhc2soKCk9PntlLmlzQ29ubmVjdGVkJiZlLmRpc3BhdGNoRXZlbnQodCl9KSl9ZnVuY3Rpb24gbWkoZSx0LG4scj17fSl7ZnVuY3Rpb24gaShlKXtpZihyLmNhcHR1cmV8fHlpLmNhbGwodCxlKSwhZS5jYW5jZWxCdWJibGUpcmV0dXJuICRuKCgpPT5uPy5jYWxsKHRoaXMsZSkpfXJldHVybiBlLnN0YXJ0c1dpdGgoYHBvaW50ZXJgKXx8ZS5zdGFydHNXaXRoKGB0b3VjaGApfHxlPT09YHdoZWVsYD9ndCgoKT0+e3QuYWRkRXZlbnRMaXN0ZW5lcihlLGkscil9KTp0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLHIpLGl9ZnVuY3Rpb24gaGkoZSx0LG4scixpKXt2YXIgYT17Y2FwdHVyZTpyLHBhc3NpdmU6aX0sbz1taShlLHQsbixhKTsodD09PWRvY3VtZW50LmJvZHl8fHQ9PT13aW5kb3d8fHQ9PT1kb2N1bWVudHx8dCBpbnN0YW5jZW9mIEhUTUxNZWRpYUVsZW1lbnQpJiZhcigoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG8sYSl9KX1mdW5jdGlvbiBnaShlLHQsbil7KHRbdWldPz89e30pW2VdPW59ZnVuY3Rpb24gX2koZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZGkuYWRkKGVbdF0pO2Zvcih2YXIgbiBvZiBmaSluKGUpfXZhciB2aT1udWxsO2Z1bmN0aW9uIHlpKGUpe3ZhciB0PXRoaXMsbj10Lm93bmVyRG9jdW1lbnQscj1lLnR5cGUsaT1lLmNvbXBvc2VkUGF0aD8uKCl8fFtdLGE9aVswXXx8ZS50YXJnZXQ7dmk9ZTt2YXIgbz0wLHM9dmk9PT1lJiZlW3VpXTtpZihzKXt2YXIgYz1pLmluZGV4T2Yocyk7aWYoYyE9PS0xJiYodD09PWRvY3VtZW50fHx0PT09d2luZG93KSl7ZVt1aV09dDtyZXR1cm59dmFyIGw9aS5pbmRleE9mKHQpO2lmKGw9PT0tMSlyZXR1cm47Yzw9bCYmKG89Yyl9aWYoYT1pW29dfHxlLnRhcmdldCxhIT09dCl7ZyhlLGBjdXJyZW50VGFyZ2V0YCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe3JldHVybiBhfHxufX0pO3ZhciB1PUYsZD1JO01yKG51bGwpLE5yKG51bGwpO3RyeXtmb3IodmFyIGYscD1bXTthIT09bnVsbDspe3ZhciBtPWEuYXNzaWduZWRTbG90fHxhLnBhcmVudE5vZGV8fGEuaG9zdHx8bnVsbDt0cnl7dmFyIGg9YVt1aV0/LltyXTtoIT1udWxsJiYoIWEuZGlzYWJsZWR8fGUudGFyZ2V0PT09YSkmJmguY2FsbChhLGUpfWNhdGNoKGUpe2Y/cC5wdXNoKGUpOmY9ZX1pZihlLmNhbmNlbEJ1YmJsZXx8bT09PXR8fG09PT1udWxsKWJyZWFrO2E9bX1pZihmKXtmb3IobGV0IGUgb2YgcClxdWV1ZU1pY3JvdGFzaygoKT0+e3Rocm93IGV9KTt0aHJvdyBmfX1maW5hbGx5e2VbdWldPXQsZGVsZXRlIGUuY3VycmVudFRhcmdldCxNcih1KSxOcihkKX19fXZhciBiaT1nbG9iYWxUaGlzPy53aW5kb3c/LnRydXN0ZWRUeXBlcyYmZ2xvYmFsVGhpcy53aW5kb3cudHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeShgc3ZlbHRlLXRydXN0ZWQtaHRtbGAse2NyZWF0ZUhUTUw6ZT0+ZX0pO2Z1bmN0aW9uIHhpKGUpe3JldHVybiBiaT8uY3JlYXRlSFRNTChlKT8/ZX1mdW5jdGlvbiBTaShlKXt2YXIgdD1LbihgdGVtcGxhdGVgKTtyZXR1cm4gdC5pbm5lckhUTUw9eGkoZS5yZXBsYWNlQWxsKGA8IT5gLGA8IS0tLS0+YCkpLHQuY29udGVudH1mdW5jdGlvbiBDaShlLHQpe3ZhciBuPUk7bi5ub2Rlcz09PW51bGwmJihuLm5vZGVzPXtzdGFydDplLGVuZDp0LGE6bnVsbCx0Om51bGx9KX1mdW5jdGlvbiB3aShlLHQpe3ZhciBuPSh0JjEpIT0wLHI9KHQmMikhPTAsaSxhPSFlLnN0YXJ0c1dpdGgoYDwhPmApO3JldHVybigpPT57aWYoQylyZXR1cm4gQ2kodyxudWxsKSx3O2k9PT12b2lkIDAmJihpPVNpKGE/ZTpgPCE+YCtlKSxufHwoaT1OKGkpKSk7dmFyIHQ9cnx8Rm4/ZG9jdW1lbnQuaW1wb3J0Tm9kZShpLCEwKTppLmNsb25lTm9kZSghMCk7aWYobil7dmFyIG89Tih0KSxzPXQubGFzdENoaWxkO0NpKG8scyl9ZWxzZSBDaSh0LHQpO3JldHVybiB0fX1mdW5jdGlvbiBUaShlLHQsbj1gc3ZnYCl7dmFyIHI9IWUuc3RhcnRzV2l0aChgPCE+YCksaT0odCYxKSE9MCxhPWA8JHtufT4ke3I/ZTpgPCE+YCtlfTwvJHtufT5gLG87cmV0dXJuKCk9PntpZihDKXJldHVybiBDaSh3LG51bGwpLHc7aWYoIW8pe3ZhciBlPU4oU2koYSkpO2lmKGkpZm9yKG89ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO04oZSk7KW8uYXBwZW5kQ2hpbGQoTihlKSk7ZWxzZSBvPU4oZSl9dmFyIHQ9by5jbG9uZU5vZGUoITApO2lmKGkpe3ZhciBuPU4odCkscj10Lmxhc3RDaGlsZDtDaShuLHIpfWVsc2UgQ2kodCx0KTtyZXR1cm4gdH19ZnVuY3Rpb24gRWkoZSx0KXtyZXR1cm4gVGkoZSx0LGBzdmdgKX1mdW5jdGlvbiBEaShlPWBgKXtpZighQyl7dmFyIHQ9em4oZStgYCk7cmV0dXJuIENpKHQsdCksdH12YXIgbj13O3JldHVybiBuLm5vZGVUeXBlPT09Mz9KbihuKToobi5iZWZvcmUobj16bigpKSxUKG4pKSxDaShuLG4pLG59ZnVuY3Rpb24gT2koKXtpZihDKXJldHVybiBDaSh3LG51bGwpLHc7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9ZG9jdW1lbnQuY3JlYXRlQ29tbWVudChgYCksbj16bigpO3JldHVybiBlLmFwcGVuZCh0LG4pLENpKHQsbiksZX1mdW5jdGlvbiBraShlLHQpe2lmKEMpe3ZhciBuPUk7KCEobi5mJjMyNzY4KXx8bi5ub2Rlcy5lbmQ9PT1udWxsKSYmKG4ubm9kZXMuZW5kPXcpLFllKCk7cmV0dXJufWUhPT1udWxsJiZlLmJlZm9yZSh0KX12YXIgQWk9ITA7ZnVuY3Rpb24gamkoZSx0KXt2YXIgbj10PT1udWxsP2BgOnR5cGVvZiB0PT1gb2JqZWN0YD9gJHt0fWA6dDtuIT09KGUuX190Pz89ZS5ub2RlVmFsdWUpJiYoZS5fX3Q9bixlLm5vZGVWYWx1ZT1gJHtufWApfWZ1bmN0aW9uIE1pKGUsdCl7cmV0dXJuIFBpKGUsdCl9dmFyIE5pPW5ldyBNYXA7ZnVuY3Rpb24gUGkoZSx7dGFyZ2V0OnQsYW5jaG9yOm4scHJvcHM6cj17fSxldmVudHM6aSxjb250ZXh0OmEsaW50cm86bz0hMCx0cmFuc2Zvcm1FcnJvcjpzfSl7Um4oKTt2YXIgYz12b2lkIDAsbD1scigoKT0+e3ZhciBsPW4/P3QuYXBwZW5kQ2hpbGQoem4oKSk7cm4obCx7cGVuZGluZzooKT0+e319LHQ9PntsdCh7fSk7dmFyIG49RTtpZihhJiYobi5jPWEpLGkmJihyLiQkZXZlbnRzPWkpLEMmJkNpKHQsbnVsbCksQWk9byxjPWUodCxyKXx8e30sQWk9ITAsQyYmKEkubm9kZXMuZW5kPXcsdz09PW51bGx8fHcubm9kZVR5cGUhPT04fHx3LmRhdGEhPT1gXWApKXRocm93IEdlKCksQmU7dXQoKX0scyk7dmFyIHU9bmV3IFNldCxkPWU9Pntmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtpZighdS5oYXMocikpe3UuYWRkKHIpO3ZhciBpPWxpKHIpO2ZvcihsZXQgZSBvZlt0LGRvY3VtZW50XSl7dmFyIGE9TmkuZ2V0KGUpO2E9PT12b2lkIDAmJihhPW5ldyBNYXAsTmkuc2V0KGUsYSkpO3ZhciBvPWEuZ2V0KHIpO289PT12b2lkIDA/KGUuYWRkRXZlbnRMaXN0ZW5lcihyLHlpLHtwYXNzaXZlOml9KSxhLnNldChyLDEpKTphLnNldChyLG8rMSl9fX19O3JldHVybiBkKGgoZGkpKSxmaS5hZGQoZCksKCk9Pntmb3IodmFyIGUgb2YgdSlmb3IobGV0IG4gb2ZbdCxkb2N1bWVudF0pe3ZhciByPU5pLmdldChuKSxpPXIuZ2V0KGUpOy0taT09MD8obi5yZW1vdmVFdmVudExpc3RlbmVyKGUseWkpLHIuZGVsZXRlKGUpLHIuc2l6ZT09PTAmJk5pLmRlbGV0ZShuKSk6ci5zZXQoZSxpKX1maS5kZWxldGUoZCksbCE9PW4mJmwucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobCl9fSk7cmV0dXJuIEZpLnNldChjLGwpLGN9dmFyIEZpPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIElpKGUsdCl7bGV0IG49RmkuZ2V0KGUpO3JldHVybiBuPyhGaS5kZWxldGUoZSksbih0KSk6UHJvbWlzZS5yZXNvbHZlKCl9dmFyIExpPWNsYXNze2FuY2hvcjsjZT1uZXcgTWFwOyN0PW5ldyBNYXA7I249bmV3IE1hcDsjcj1uZXcgU2V0OyNpPSEwO2NvbnN0cnVjdG9yKGUsdD0hMCl7dGhpcy5hbmNob3I9ZSx0aGlzLiNpPXR9I2E9ZT0+e2lmKHRoaXMuI2UuaGFzKGUpKXt2YXIgdD10aGlzLiNlLmdldChlKSxuPXRoaXMuI3QuZ2V0KHQpO2lmKG4pd3IobiksdGhpcy4jci5kZWxldGUodCk7ZWxzZXt2YXIgcj10aGlzLiNuLmdldCh0KTtyJiYodGhpcy4jdC5zZXQodCxyLmVmZmVjdCksdGhpcy4jbi5kZWxldGUodCksci5mcmFnbWVudC5sYXN0Q2hpbGQucmVtb3ZlKCksdGhpcy5hbmNob3IuYmVmb3JlKHIuZnJhZ21lbnQpLG49ci5lZmZlY3QpfWZvcihsZXRbdCxuXW9mIHRoaXMuI2Upe2lmKHRoaXMuI2UuZGVsZXRlKHQpLHQ9PT1lKWJyZWFrO2xldCByPXRoaXMuI24uZ2V0KG4pO3ImJihQKHIuZWZmZWN0KSx0aGlzLiNuLmRlbGV0ZShuKSl9Zm9yKGxldFtlLHJdb2YgdGhpcy4jdCl7aWYoZT09PXR8fHRoaXMuI3IuaGFzKGUpKWNvbnRpbnVlO2xldCBpPSgpPT57aWYoQXJyYXkuZnJvbSh0aGlzLiNlLnZhbHVlcygpKS5pbmNsdWRlcyhlKSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO0VyKHIsdCksdC5hcHBlbmQoem4oKSksdGhpcy4jbi5zZXQoZSx7ZWZmZWN0OnIsZnJhZ21lbnQ6dH0pfWVsc2UgUChyKTt0aGlzLiNyLmRlbGV0ZShlKSx0aGlzLiN0LmRlbGV0ZShlKX07dGhpcy4jaXx8IW4/KHRoaXMuI3IuYWRkKGUpLFNyKHIsaSwhMSkpOmkoKX19fTsjbz1lPT57dGhpcy4jZS5kZWxldGUoZSk7bGV0IHQ9QXJyYXkuZnJvbSh0aGlzLiNlLnZhbHVlcygpKTtmb3IobGV0W2Usbl1vZiB0aGlzLiNuKXQuaW5jbHVkZXMoZSl8fChQKG4uZWZmZWN0KSx0aGlzLiNuLmRlbGV0ZShlKSl9O2Vuc3VyZShlLHQpe3ZhciBuPWoscj1HbigpO2lmKHQmJiF0aGlzLiN0LmhhcyhlKSYmIXRoaXMuI24uaGFzKGUpKWlmKHIpe3ZhciBpPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxhPXpuKCk7aS5hcHBlbmQoYSksdGhpcy4jbi5zZXQoZSx7ZWZmZWN0OmdyKCgpPT50KGEpKSxmcmFnbWVudDppfSl9ZWxzZSB0aGlzLiN0LnNldChlLGdyKCgpPT50KHRoaXMuYW5jaG9yKSkpO2lmKHRoaXMuI2Uuc2V0KG4sZSkscil7Zm9yKGxldFt0LHJdb2YgdGhpcy4jdCl0PT09ZT9uLnVuc2tpcF9lZmZlY3Qocik6bi5za2lwX2VmZmVjdChyKTtmb3IobGV0W3Qscl1vZiB0aGlzLiNuKXQ9PT1lP24udW5za2lwX2VmZmVjdChyLmVmZmVjdCk6bi5za2lwX2VmZmVjdChyLmVmZmVjdCk7bi5vbmNvbW1pdCh0aGlzLiNhKSxuLm9uZGlzY2FyZCh0aGlzLiNvKX1lbHNlIEMmJih0aGlzLmFuY2hvcj13KSx0aGlzLiNhKG4pfX07ZnVuY3Rpb24gUmkoZSx0LG49ITEpe3ZhciByO0MmJihyPXcsWWUoKSk7dmFyIGk9bmV3IExpKGUpLGE9bj9tZTowO2Z1bmN0aW9uIG8oZSx0KXtpZihDKXt2YXIgbj0kZShyKTtpZihlIT09cGFyc2VJbnQobi5zdWJzdHJpbmcoMSkpKXt2YXIgYT1RZSgpO1QoYSksaS5hbmNob3I9YSxKZSghMSksaS5lbnN1cmUoZSx0KSxKZSghMCk7cmV0dXJufX1pLmVuc3VyZShlLHQpfW1yKCgpPT57dmFyIGU9ITE7dCgodCxuPTApPT57ZT0hMCxvKG4sdCl9KSxlfHxvKC0xLG51bGwpfSxhKX12YXIgemk9U3ltYm9sKGBOYU5gKTtmdW5jdGlvbiBCaShlLHQsbil7QyYmWWUoKTt2YXIgcj1uZXcgTGkoZSksaT0hZHQoKTttcigoKT0+e3ZhciBlPXQoKTtlIT09ZSYmKGU9emkpLGkmJnR5cGVvZiBlPT1gb2JqZWN0YCYmZSYmKGU9e30pLHIuZW5zdXJlKGUsbil9KX1mdW5jdGlvbiBWaShlLHQpe3JldHVybiB0fWZ1bmN0aW9uIEhpKGUsdCxuKXtmb3IodmFyIHI9W10saT10Lmxlbmd0aCxhLG89dC5sZW5ndGgscz0wO3M8aTtzKyspe2xldCBuPXRbc107U3IobiwoKT0+e2lmKGEpe2lmKGEucGVuZGluZy5kZWxldGUobiksYS5kb25lLmFkZChuKSxhLnBlbmRpbmcuc2l6ZT09PTApe3ZhciB0PWUub3V0cm9ncm91cHM7VWkoZSxoKGEuZG9uZSkpLHQuZGVsZXRlKGEpLHQuc2l6ZT09PTAmJihlLm91dHJvZ3JvdXBzPW51bGwpfX1lbHNlIC0tb30sITEpfWlmKG89PT0wKXt2YXIgYz1yLmxlbmd0aD09PTAmJm4hPT1udWxsO2lmKGMpe3ZhciBsPW4sdT1sLnBhcmVudE5vZGU7V24odSksdS5hcHBlbmQobCksZS5pdGVtcy5jbGVhcigpfVVpKGUsdCwhYyl9ZWxzZSBhPXtwZW5kaW5nOm5ldyBTZXQodCksZG9uZTpuZXcgU2V0fSwoZS5vdXRyb2dyb3Vwcz8/PW5ldyBTZXQpLmFkZChhKX1mdW5jdGlvbiBVaShlLHQsbj0hMCl7dmFyIHI7aWYoZS5wZW5kaW5nLnNpemU+MCl7cj1uZXcgU2V0O2ZvcihsZXQgdCBvZiBlLnBlbmRpbmcudmFsdWVzKCkpZm9yKGxldCBuIG9mIHQpci5hZGQoZS5pdGVtcy5nZXQobikuZSl9Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV07cj8uaGFzKGEpPyhhLmZ8PV9lLEVyKGEsZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKSk6UCh0W2ldLG4pfX12YXIgV2k7ZnVuY3Rpb24gR2koZSx0LG4scixpLGE9bnVsbCl7dmFyIG89ZSxzPW5ldyBNYXA7aWYodCY0KXt2YXIgYz1lO289Qz9UKE4oYykpOmMuYXBwZW5kQ2hpbGQoem4oKSl9QyYmWWUoKTt2YXIgbD1udWxsLHU9cG4oKCk9Pnt2YXIgZT1uKCk7cmV0dXJuIGYoZSk/ZTplPT1udWxsP1tdOmgoZSl9KSxkLHA9bmV3IE1hcCxtPSEwO2Z1bmN0aW9uIGcoZSl7di5lZmZlY3QuZiYxNjM4NHx8KHYucGVuZGluZy5kZWxldGUoZSksdi5mYWxsYmFjaz1sLHFpKHYsZCxvLHQsciksbCE9PW51bGwmJihkLmxlbmd0aD09PTA/bC5mJjMzNTU0NDMyPyhsLmZePV9lLFlpKGwsbnVsbCxvKSk6d3IobCk6U3IobCwoKT0+e2w9bnVsbH0pKSl9ZnVuY3Rpb24gXyhlKXt2LnBlbmRpbmcuZGVsZXRlKGUpfXZhciB2PXtlZmZlY3Q6bXIoKCk9PntkPVIodSk7dmFyIGU9ZC5sZW5ndGg7bGV0IGM9ITE7QyYmJGUobyk9PT1gWyFgIT0oZT09PTApJiYobz1RZSgpLFQobyksSmUoITEpLGM9ITApO2Zvcih2YXIgZj1uZXcgU2V0LGg9aix2PUduKCkseT0wO3k8ZTt5Kz0xKXtDJiZ3Lm5vZGVUeXBlPT09OCYmdy5kYXRhPT09YF1gJiYobz13LGM9ITAsSmUoITEpKTt2YXIgZWU9ZFt5XSxiPXIoZWUseSksdGU9bT9udWxsOnMuZ2V0KGIpO3RlPyh0ZS52JiZFbih0ZS52LGVlKSx0ZS5pJiZFbih0ZS5pLHkpLHYmJmgudW5za2lwX2VmZmVjdCh0ZS5lKSk6KHRlPUppKHMsbT9vOldpPz89em4oKSxlZSxiLHksaSx0LG4pLG18fCh0ZS5lLmZ8PV9lKSxzLnNldChiLHRlKSksZi5hZGQoYil9aWYoZT09PTAmJmEmJiFsJiYobT9sPWdyKCgpPT5hKG8pKToobD1ncigoKT0+YShXaT8/PXpuKCkpKSxsLmZ8PV9lKSksZT5mLnNpemUmJmtlKGBgLGBgLGBgKSxDJiZlPjAmJlQoUWUoKSksIW0paWYocC5zZXQoaCxmKSx2KXtmb3IobGV0W2UsdF1vZiBzKWYuaGFzKGUpfHxoLnNraXBfZWZmZWN0KHQuZSk7aC5vbmNvbW1pdChnKSxoLm9uZGlzY2FyZChfKX1lbHNlIGcoaCk7YyYmSmUoITApLFIodSl9KSxmbGFnczp0LGl0ZW1zOnMscGVuZGluZzpwLG91dHJvZ3JvdXBzOm51bGwsZmFsbGJhY2s6bH07bT0hMSxDJiYobz13KX1mdW5jdGlvbiBLaShlKXtmb3IoO2UhPT1udWxsJiYhKGUuZiYzMik7KWU9ZS5uZXh0O3JldHVybiBlfWZ1bmN0aW9uIHFpKGUsdCxuLHIsaSl7dmFyIGE9KHImOCkhPTAsbz10Lmxlbmd0aCxzPWUuaXRlbXMsYz1LaShlLmVmZmVjdC5maXJzdCksbCx1PW51bGwsZCxmPVtdLHA9W10sbSxnLF8sdjtpZihhKWZvcih2PTA7djxvO3YrPTEpbT10W3ZdLGc9aShtLHYpLF89cy5nZXQoZykuZSxfLmYmMzM1NTQ0MzJ8fChfLm5vZGVzPy5hPy5tZWFzdXJlKCksKGQ/Pz1uZXcgU2V0KS5hZGQoXykpO2Zvcih2PTA7djxvO3YrPTEpe2lmKG09dFt2XSxnPWkobSx2KSxfPXMuZ2V0KGcpLmUsZS5vdXRyb2dyb3VwcyE9PW51bGwpZm9yKGxldCB0IG9mIGUub3V0cm9ncm91cHMpdC5wZW5kaW5nLmRlbGV0ZShfKSx0LmRvbmUuZGVsZXRlKF8pO2lmKF8uZiY4MTkyJiYod3IoXyksYSYmKF8ubm9kZXM/LmE/LnVuZml4KCksKGQ/Pz1uZXcgU2V0KS5kZWxldGUoXykpKSxfLmYmMzM1NTQ0MzIpaWYoXy5mXj1fZSxfPT09YylZaShfLG51bGwsbik7ZWxzZXt2YXIgeT11P3UubmV4dDpjO189PT1lLmVmZmVjdC5sYXN0JiYoZS5lZmZlY3QubGFzdD1fLnByZXYpLF8ucHJldiYmKF8ucHJldi5uZXh0PV8ubmV4dCksXy5uZXh0JiYoXy5uZXh0LnByZXY9Xy5wcmV2KSxYaShlLHUsXyksWGkoZSxfLHkpLFlpKF8seSxuKSx1PV8sZj1bXSxwPVtdLGM9S2kodS5uZXh0KTtjb250aW51ZX1pZihfIT09Yyl7aWYobCE9PXZvaWQgMCYmbC5oYXMoXykpe2lmKGYubGVuZ3RoPHAubGVuZ3RoKXt2YXIgZWU9cFswXSxiO3U9ZWUucHJldjt2YXIgdGU9ZlswXSxuZT1mW2YubGVuZ3RoLTFdO2ZvcihiPTA7YjxmLmxlbmd0aDtiKz0xKVlpKGZbYl0sZWUsbik7Zm9yKGI9MDtiPHAubGVuZ3RoO2IrPTEpbC5kZWxldGUocFtiXSk7WGkoZSx0ZS5wcmV2LG5lLm5leHQpLFhpKGUsdSx0ZSksWGkoZSxuZSxlZSksYz1lZSx1PW5lLC0tdixmPVtdLHA9W119ZWxzZSBsLmRlbGV0ZShfKSxZaShfLGMsbiksWGkoZSxfLnByZXYsXy5uZXh0KSxYaShlLF8sdT09PW51bGw/ZS5lZmZlY3QuZmlyc3Q6dS5uZXh0KSxYaShlLHUsXyksdT1fO2NvbnRpbnVlfWZvcihmPVtdLHA9W107YyE9PW51bGwmJmMhPT1fOykobD8/PW5ldyBTZXQpLmFkZChjKSxwLnB1c2goYyksYz1LaShjLm5leHQpO2lmKGM9PT1udWxsKWNvbnRpbnVlfV8uZiYzMzU1NDQzMnx8Zi5wdXNoKF8pLHU9XyxjPUtpKF8ubmV4dCl9aWYoZS5vdXRyb2dyb3VwcyE9PW51bGwpe2ZvcihsZXQgdCBvZiBlLm91dHJvZ3JvdXBzKXQucGVuZGluZy5zaXplPT09MCYmKFVpKGUsaCh0LmRvbmUpKSxlLm91dHJvZ3JvdXBzPy5kZWxldGUodCkpO2Uub3V0cm9ncm91cHMuc2l6ZT09PTAmJihlLm91dHJvZ3JvdXBzPW51bGwpfWlmKGMhPT1udWxsfHxsIT09dm9pZCAwKXt2YXIgeD1bXTtpZihsIT09dm9pZCAwKWZvcihfIG9mIGwpXy5mJjgxOTJ8fHgucHVzaChfKTtmb3IoO2MhPT1udWxsOykhKGMuZiY4MTkyKSYmYyE9PWUuZmFsbGJhY2smJngucHVzaChjKSxjPUtpKGMubmV4dCk7dmFyIHJlPXgubGVuZ3RoO2lmKHJlPjApe3ZhciBpZT1yJjQmJm89PT0wP246bnVsbDtpZihhKXtmb3Iodj0wO3Y8cmU7dis9MSl4W3ZdLm5vZGVzPy5hPy5tZWFzdXJlKCk7Zm9yKHY9MDt2PHJlO3YrPTEpeFt2XS5ub2Rlcz8uYT8uZml4KCl9SGkoZSx4LGllKX19YSYmZ3QoKCk9PntpZihkIT09dm9pZCAwKWZvcihfIG9mIGQpXy5ub2Rlcz8uYT8uYXBwbHkoKX0pfWZ1bmN0aW9uIEppKGUsdCxuLHIsaSxhLG8scyl7dmFyIGM9byYxP28mMTY/U24obik6d24obiwhMSwhMSk6bnVsbCxsPW8mMj9TbihpKTpudWxsO3JldHVybnt2OmMsaTpsLGU6Z3IoKCk9PihhKHQsYz8/bixsPz9pLHMpLCgpPT57ZS5kZWxldGUocil9KSl9fWZ1bmN0aW9uIFlpKGUsdCxuKXtpZihlLm5vZGVzKWZvcih2YXIgcj1lLm5vZGVzLnN0YXJ0LGk9ZS5ub2Rlcy5lbmQsYT10JiYhKHQuZiYzMzU1NDQzMik/dC5ub2Rlcy5zdGFydDpuO3IhPT1udWxsOyl7dmFyIG89Qm4ocik7aWYoYS5iZWZvcmUocikscj09PWkpcmV0dXJuO3I9b319ZnVuY3Rpb24gWGkoZSx0LG4pe3Q9PT1udWxsP2UuZWZmZWN0LmZpcnN0PW46dC5uZXh0PW4sbj09PW51bGw/ZS5lZmZlY3QubGFzdD10Om4ucHJldj10fWZ1bmN0aW9uIFppKGUsdCxuPSExLHI9ITEsaT0hMSxhPSExKXt2YXIgbz1lLHM9YGA7aWYobil7dmFyIGM9ZTtDJiYobz1UKE4oYykpKX1wcigoKT0+e3ZhciBlPUk7aWYocz09PShzPXQoKT8/YGApKXtDJiZZZSgpO3JldHVybn1pZihuJiYhQyl7ZS5ub2Rlcz1udWxsLGMuaW5uZXJIVE1MPXMscyE9PWBgJiZDaShOKGMpLGMubGFzdENoaWxkKTtyZXR1cm59aWYoZS5ub2RlcyE9PW51bGwmJihicihlLm5vZGVzLnN0YXJ0LGUubm9kZXMuZW5kKSxlLm5vZGVzPW51bGwpLHMhPT1gYCl7aWYoQyl7Zm9yKHZhciBhPXcuZGF0YSxsPVllKCksdT1sO2whPT1udWxsJiYobC5ub2RlVHlwZSE9PTh8fGwuZGF0YSE9PWBgKTspdT1sLGw9Qm4obCk7aWYobD09PW51bGwpdGhyb3cgR2UoKSxCZTtDaSh3LHUpLG89VChsKTtyZXR1cm59dmFyIGQ9S24ocj9gc3ZnYDppP2BtYXRoYDpgdGVtcGxhdGVgLHI/SGU6aT9VZTp2b2lkIDApO2QuaW5uZXJIVE1MPXM7dmFyIGY9cnx8aT9kOmQuY29udGVudDtpZihDaShOKGYpLGYubGFzdENoaWxkKSxyfHxpKWZvcig7TihmKTspby5iZWZvcmUoTihmKSk7ZWxzZSBvLmJlZm9yZShmKX19KX1mdW5jdGlvbiBRaShlLHQsLi4ubil7dmFyIHI9bmV3IExpKGUpO21yKCgpPT57bGV0IGU9dCgpPz9udWxsO3IuZW5zdXJlKGUsZSYmKHQ9PmUodCwuLi5uKSkpfSxtZSl9ZnVuY3Rpb24gJGkoZSx0LG4pe3ZhciByO0MmJihyPXcsWWUoKSk7dmFyIGk9bmV3IExpKGUpO21yKCgpPT57dmFyIGU9dCgpPz9udWxsO2lmKEMmJiRlKHIpPT09YFtgIT0oZSE9PW51bGwpKXt2YXIgYT1RZSgpO1QoYSksaS5hbmNob3I9YSxKZSghMSksaS5lbnN1cmUoZSxlJiYodD0+bih0LGUpKSksSmUoITApO3JldHVybn1pLmVuc3VyZShlLGUmJih0PT5uKHQsZSkpKX0sbWUpfXZhciBlYT0oKT0+cGVyZm9ybWFuY2Uubm93KCksdGE9e3RpY2s6ZT0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpLG5vdzooKT0+ZWEoKSx0YXNrczpuZXcgU2V0fTtmdW5jdGlvbiBuYSgpe2xldCBlPXRhLm5vdygpO3RhLnRhc2tzLmZvckVhY2godD0+e3QuYyhlKXx8KHRhLnRhc2tzLmRlbGV0ZSh0KSx0LmYoKSl9KSx0YS50YXNrcy5zaXplIT09MCYmdGEudGljayhuYSl9ZnVuY3Rpb24gcmEoZSl7bGV0IHQ7cmV0dXJuIHRhLnRhc2tzLnNpemU9PT0wJiZ0YS50aWNrKG5hKSx7cHJvbWlzZTpuZXcgUHJvbWlzZShuPT57dGEudGFza3MuYWRkKHQ9e2M6ZSxmOm59KX0pLGFib3J0KCl7dGEudGFza3MuZGVsZXRlKHQpfX19ZnVuY3Rpb24gaWEoZSx0KXskbigoKT0+e2UuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQodCkpfSl9ZnVuY3Rpb24gYWEoZSl7aWYoZT09PWBmbG9hdGApcmV0dXJuYGNzc0Zsb2F0YDtpZihlPT09YG9mZnNldGApcmV0dXJuYGNzc09mZnNldGA7aWYoZS5zdGFydHNXaXRoKGAtLWApKXJldHVybiBlO2xldCB0PWUuc3BsaXQoYC1gKTtyZXR1cm4gdC5sZW5ndGg9PT0xP3RbMF06dFswXSt0LnNsaWNlKDEpLm1hcChlPT5lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSkuam9pbihgYCl9ZnVuY3Rpb24gb2EoZSl7bGV0IHQ9e30sbj1lLnNwbGl0KGA7YCk7Zm9yKGxldCBlIG9mIG4pe2xldFtuLHJdPWUuc3BsaXQoYDpgKTtpZighbnx8cj09PXZvaWQgMClicmVhaztsZXQgaT1hYShuLnRyaW0oKSk7dFtpXT1yLnRyaW0oKX1yZXR1cm4gdH12YXIgc2E9ZT0+ZTtmdW5jdGlvbiBjYShlLHQsbixyKXt2YXIgaT0oZSYxKSE9MCxhPShlJjIpIT0wLG89aSYmYSxzPShlJjQpIT0wLGM9bz9gYm90aGA6aT9gaW5gOmBvdXRgLGwsdT10LmluZXJ0LGQ9dC5zdHlsZS5vdmVyZmxvdyxmLHA7ZnVuY3Rpb24gbSgpe3JldHVybiAkbigoKT0+bD8/PW4oKSh0LHI/LigpPz97fSx7ZGlyZWN0aW9uOmN9KSl9dmFyIGg9e2lzX2dsb2JhbDpzLGluKCl7aWYodC5pbmVydD11LCFpKXtwPy5hYm9ydCgpLHA/LnJlc2V0Py4oKTtyZXR1cm59YXx8Zj8uYWJvcnQoKSxmPWxhKHQsbSgpLHAsMSwoKT0+e2lhKHQsYGludHJvc3RhcnRgKX0sKCk9PntpYSh0LGBpbnRyb2VuZGApLGY/LmFib3J0KCksZj1sPXZvaWQgMCx0LnN0eWxlLm92ZXJmbG93PWR9KX0sb3V0KGUpe2lmKCFhKXtlPy4oKSxsPXZvaWQgMDtyZXR1cm59dC5pbmVydD0hMCxwPWxhKHQsbSgpLGYsMCwoKT0+e2lhKHQsYG91dHJvc3RhcnRgKX0sKCk9PntpYSh0LGBvdXRyb2VuZGApLGU/LigpfSl9LHN0b3A6KCk9PntmPy5hYm9ydCgpLHA/LmFib3J0KCl9fSxnPUk7aWYoKGcubm9kZXMudD8/PVtdKS5wdXNoKGgpLGkmJkFpKXt2YXIgXz1zO2lmKCFfKXtmb3IodmFyIHY9Zy5wYXJlbnQ7diYmdi5mJjY1NTM2Oylmb3IoOyh2PXYucGFyZW50KSYmISh2LmYmMTYpOyk7Xz0hdnx8KHYuZiYzMjc2OCkhPTB9XyYmdXIoKCk9PnskcigoKT0+aC5pbigpKX0pfX1mdW5jdGlvbiBsYShlLHQsbixyLGksYSl7dmFyIG89cj09PTE7aWYobmUodCkpe3ZhciBzLGM9ITE7cmV0dXJuIGd0KCgpPT57Y3x8KHM9bGEoZSx0KHtkaXJlY3Rpb246bz9gaW5gOmBvdXRgfSksbixyLGksYSkpfSkse2Fib3J0OigpPT57Yz0hMCxzPy5hYm9ydCgpfSxkZWFjdGl2YXRlOigpPT5zLmRlYWN0aXZhdGUoKSxyZXNldDooKT0+cy5yZXNldCgpLHQ6KCk9PnMudCgpfX1pZihuPy5kZWFjdGl2YXRlKCksIXQ/LmR1cmF0aW9uJiYhdD8uZGVsYXkpcmV0dXJuIGkoKSxhKCkse2Fib3J0OngsZGVhY3RpdmF0ZTp4LHJlc2V0OngsdDooKT0+cn07bGV0e2RlbGF5Omw9MCxjc3M6dSx0aWNrOmQsZWFzaW5nOmY9c2F9PXQ7dmFyIHA9W107aWYobyYmbj09PXZvaWQgMCYmKGQmJmQoMCwxKSx1KSl7dmFyIG09b2EodSgwLDEpKTtwLnB1c2gobSxtKX12YXIgaD0oKT0+MS1yLGc9ZS5hbmltYXRlKHAse2R1cmF0aW9uOmwsZmlsbDpgZm9yd2FyZHNgfSk7cmV0dXJuIGcub25maW5pc2g9KCk9PntnLmNhbmNlbCgpLGkoKTt2YXIgbz1uPy50KCk/PzEtcjtuPy5hYm9ydCgpO3ZhciBzPXItbyxjPXQuZHVyYXRpb24qTWF0aC5hYnMocyksbD1bXTtpZihjPjApe3ZhciBwPSExO2lmKHUpZm9yKHZhciBtPU1hdGguY2VpbChjLygxZTMvNjApKSxfPTA7Xzw9bTtfKz0xKXt2YXIgdj1vK3MqZihfL20pLHk9b2EodSh2LDEtdikpO2wucHVzaCh5KSxwfHw9eS5vdmVyZmxvdz09PWBoaWRkZW5gfXAmJihlLnN0eWxlLm92ZXJmbG93PWBoaWRkZW5gKSxoPSgpPT57dmFyIGU9Zy5jdXJyZW50VGltZTtyZXR1cm4gbytzKmYoZS9jKX0sZCYmcmEoKCk9PntpZihnLnBsYXlTdGF0ZSE9PWBydW5uaW5nYClyZXR1cm4hMTt2YXIgZT1oKCk7cmV0dXJuIGQoZSwxLWUpLCEwfSl9Zz1lLmFuaW1hdGUobCx7ZHVyYXRpb246YyxmaWxsOmBmb3J3YXJkc2B9KSxnLm9uZmluaXNoPSgpPT57aD0oKT0+cixkPy4ociwxLXIpLGEoKX19LHthYm9ydDooKT0+e2cmJihnLmNhbmNlbCgpLGcuZWZmZWN0PW51bGwsZy5vbmZpbmlzaD14KX0sZGVhY3RpdmF0ZTooKT0+e2E9eH0scmVzZXQ6KCk9PntyPT09MCYmZD8uKDEsMCl9LHQ6KCk9PmgoKX19ZnVuY3Rpb24gdWEoZSx0LG4pe3VyKCgpPT57dmFyIHI9JHIoKCk9PnQoZSxuPy4oKSl8fHt9KTtpZihuJiZyPy51cGRhdGUpe3ZhciBpPSExLGE9e307ZnIoKCk9Pnt2YXIgZT1uKCk7ZWkoZSksaSYmdHQoYSxlKSYmKGE9ZSxyLnVwZGF0ZShlKSl9KSxpPSEwfWlmKHI/LmRlc3Ryb3kpcmV0dXJuKCk9PnIuZGVzdHJveSgpfSl9ZnVuY3Rpb24gZGEoZSx0KXt2YXIgbj12b2lkIDAscjtocigoKT0+e24hPT0obj10KCkpJiYociYmPShQKHIpLG51bGwpLG4mJihyPWdyKCgpPT57dXIoKCk9Pm4oZSkpfSkpKX0pfWZ1bmN0aW9uIGZhKGUpe3ZhciB0LG4scj1gYDtpZih0eXBlb2YgZT09YHN0cmluZ2B8fHR5cGVvZiBlPT1gbnVtYmVyYClyKz1lO2Vsc2UgaWYodHlwZW9mIGU9PWBvYmplY3RgKWlmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciBpPWUubGVuZ3RoO2Zvcih0PTA7dDxpO3QrKyllW3RdJiYobj1mYShlW3RdKSkmJihyJiYocis9YCBgKSxyKz1uKX1lbHNlIGZvcihuIGluIGUpZVtuXSYmKHImJihyKz1gIGApLHIrPW4pO3JldHVybiByfWZ1bmN0aW9uIHBhKCl7Zm9yKHZhciBlLHQsbj0wLHI9YGAsaT1hcmd1bWVudHMubGVuZ3RoO248aTtuKyspKGU9YXJndW1lbnRzW25dKSYmKHQ9ZmEoZSkpJiYociYmKHIrPWAgYCkscis9dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gbWEoZSl7cmV0dXJuIHR5cGVvZiBlPT1gb2JqZWN0YD9wYShlKTplPz9gYH12YXIgaGE9Wy4uLmAgCQpcclxmXHhBMFx277u/YF07ZnVuY3Rpb24gZ2EoZSx0LG4pe3ZhciByPWU9PW51bGw/YGA6YGArZTtpZih0JiYocj1yP3IrYCBgK3Q6dCksbil7Zm9yKHZhciBpIG9mIE9iamVjdC5rZXlzKG4pKWlmKG5baV0pcj1yP3IrYCBgK2k6aTtlbHNlIGlmKHIubGVuZ3RoKWZvcih2YXIgYT1pLmxlbmd0aCxvPTA7KG89ci5pbmRleE9mKGksbykpPj0wOyl7dmFyIHM9bythOyhvPT09MHx8aGEuaW5jbHVkZXMocltvLTFdKSkmJihzPT09ci5sZW5ndGh8fGhhLmluY2x1ZGVzKHJbc10pKT9yPShvPT09MD9gYDpyLnN1YnN0cmluZygwLG8pKStyLnN1YnN0cmluZyhzKzEpOm89c319cmV0dXJuIHI9PT1gYD9udWxsOnJ9ZnVuY3Rpb24gX2EoZSx0PSExKXt2YXIgbj10P2AgIWltcG9ydGFudDtgOmA7YCxyPWBgO2Zvcih2YXIgaSBvZiBPYmplY3Qua2V5cyhlKSl7dmFyIGE9ZVtpXTthIT1udWxsJiZhIT09YGAmJihyKz1gIGAraStgOiBgK2Erbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdmEoZSl7cmV0dXJuIGVbMF0hPT1gLWB8fGVbMV0hPT1gLWA/ZS50b0xvd2VyQ2FzZSgpOmV9ZnVuY3Rpb24geWEoZSx0KXtpZih0KXt2YXIgbj1gYCxyLGk7aWYoQXJyYXkuaXNBcnJheSh0KT8ocj10WzBdLGk9dFsxXSk6cj10LGUpe2U9U3RyaW5nKGUpLnJlcGxhY2VBbGwoL1xzKlwvXCouKj9cKlwvXHMqL2csYGApLnRyaW0oKTt2YXIgYT0hMSxvPTAscz0hMSxjPVtdO3ImJmMucHVzaCguLi5PYmplY3Qua2V5cyhyKS5tYXAodmEpKSxpJiZjLnB1c2goLi4uT2JqZWN0LmtleXMoaSkubWFwKHZhKSk7dmFyIGw9MCx1PS0xO2xldCB0PWUubGVuZ3RoO2Zvcih2YXIgZD0wO2Q8dDtkKyspe3ZhciBmPWVbZF07aWYocz9mPT09YC9gJiZlW2QtMV09PT1gKmAmJihzPSExKTphP2E9PT1mJiYoYT0hMSk6Zj09PWAvYCYmZVtkKzFdPT09YCpgP3M9ITA6Zj09PWAiYHx8Zj09PWAnYD9hPWY6Zj09PWAoYD9vKys6Zj09PWApYCYmby0tLCFzJiZhPT09ITEmJm89PT0wKXtpZihmPT09YDpgJiZ1PT09LTEpdT1kO2Vsc2UgaWYoZj09PWA7YHx8ZD09PXQtMSl7aWYodSE9PS0xKXt2YXIgcD12YShlLnN1YnN0cmluZyhsLHUpLnRyaW0oKSk7aWYoIWMuaW5jbHVkZXMocCkpe2YhPT1gO2AmJmQrKzt2YXIgbT1lLnN1YnN0cmluZyhsLGQpLnRyaW0oKTtuKz1gIGArbStgO2B9fWw9ZCsxLHU9LTF9fX19cmV0dXJuIHImJihuKz1fYShyKSksaSYmKG4rPV9hKGksITApKSxuPW4udHJpbSgpLG49PT1gYD9udWxsOm59cmV0dXJuIGU9PW51bGw/bnVsbDpTdHJpbmcoZSl9ZnVuY3Rpb24gYmEoZSx0LG4scixpLGEpe3ZhciBvPWUuX19jbGFzc05hbWU7aWYoQ3x8byE9PW58fG89PT12b2lkIDApe3ZhciBzPWdhKG4scixhKTsoIUN8fHMhPT1lLmdldEF0dHJpYnV0ZShgY2xhc3NgKSkmJihzPT1udWxsP2UucmVtb3ZlQXR0cmlidXRlKGBjbGFzc2ApOnQ/ZS5jbGFzc05hbWU9czplLnNldEF0dHJpYnV0ZShgY2xhc3NgLHMpKSxlLl9fY2xhc3NOYW1lPW59ZWxzZSBpZihhJiZpIT09YSlmb3IodmFyIGMgaW4gYSl7dmFyIGw9ISFhW2NdOyhpPT1udWxsfHxsIT09ISFpW2NdKSYmZS5jbGFzc0xpc3QudG9nZ2xlKGMsbCl9cmV0dXJuIGF9ZnVuY3Rpb24geGEoZSx0PXt9LG4scil7Zm9yKHZhciBpIGluIG4pe3ZhciBhPW5baV07dFtpXSE9PWEmJihuW2ldPT1udWxsP2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkoaSk6ZS5zdHlsZS5zZXRQcm9wZXJ0eShpLGEscikpfX1mdW5jdGlvbiBTYShlLHQsbixyKXt2YXIgaT1lLl9fc3R5bGU7aWYoQ3x8aSE9PXQpe3ZhciBhPXlhKHQscik7KCFDfHxhIT09ZS5nZXRBdHRyaWJ1dGUoYHN0eWxlYCkpJiYoYT09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZShgc3R5bGVgKTplLnN0eWxlLmNzc1RleHQ9YSksZS5fX3N0eWxlPXR9ZWxzZSByJiYoQXJyYXkuaXNBcnJheShyKT8oeGEoZSxuPy5bMF0sclswXSkseGEoZSxuPy5bMV0sclsxXSxgaW1wb3J0YW50YCkpOnhhKGUsbixyKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gQ2EoZSx0LG49ITEpe2lmKGUubXVsdGlwbGUpe2lmKHQ9PW51bGwpcmV0dXJuO2lmKCFmKHQpKXJldHVybiBLZSgpO2Zvcih2YXIgciBvZiBlLm9wdGlvbnMpci5zZWxlY3RlZD10LmluY2x1ZGVzKEVhKHIpKTtyZXR1cm59Zm9yKHIgb2YgZS5vcHRpb25zKWlmKE5uKEVhKHIpLHQpKXtyLnNlbGVjdGVkPSEwO3JldHVybn0oIW58fHQhPT12b2lkIDApJiYoZS5zZWxlY3RlZEluZGV4PS0xKX1mdW5jdGlvbiB3YShlKXt2YXIgdD1uZXcgTXV0YXRpb25PYnNlcnZlcigoKT0+e0NhKGUsZS5fX3ZhbHVlKX0pO3Qub2JzZXJ2ZShlLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbYHZhbHVlYF19KSxhcigoKT0+e3QuZGlzY29ubmVjdCgpfSl9ZnVuY3Rpb24gVGEoZSx0LG49dCl7dmFyIHI9bmV3IFdlYWtTZXQsaT0hMDtlcihlLGBjaGFuZ2VgLHQ9Pnt2YXIgaT10P2Bbc2VsZWN0ZWRdYDpgOmNoZWNrZWRgLGE7aWYoZS5tdWx0aXBsZSlhPVtdLm1hcC5jYWxsKGUucXVlcnlTZWxlY3RvckFsbChpKSxFYSk7ZWxzZXt2YXIgbz1lLnF1ZXJ5U2VsZWN0b3IoaSk/P2UucXVlcnlTZWxlY3Rvcihgb3B0aW9uOm5vdChbZGlzYWJsZWRdKWApO2E9byYmRWEobyl9bihhKSxlLl9fdmFsdWU9YSxqIT09bnVsbCYmci5hZGQoail9KSx1cigoKT0+e3ZhciBhPXQoKTtpZihlPT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7dmFyIG89cnQ/THQ6ajtpZihyLmhhcyhvKSlyZXR1cm59aWYoQ2EoZSxhLGkpLGkmJmE9PT12b2lkIDApe3ZhciBzPWUucXVlcnlTZWxlY3RvcihgOmNoZWNrZWRgKTtzIT09bnVsbCYmKGE9RWEocyksbihhKSl9ZS5fX3ZhbHVlPWEsaT0hMX0pLHdhKGUpfWZ1bmN0aW9uIEVhKGUpe3JldHVybmBfX3ZhbHVlYGluIGU/ZS5fX3ZhbHVlOmUudmFsdWV9dmFyIERhPVN5bWJvbChgY2xhc3NgKSxPYT1TeW1ib2woYHN0eWxlYCksa2E9U3ltYm9sKGBpcyBjdXN0b20gZWxlbWVudGApLEFhPVN5bWJvbChgaXMgaHRtbGApLGphPUVlP2BsaW5rYDpgTElOS2AsTWE9RWU/YGlucHV0YDpgSU5QVVRgLE5hPUVlP2BvcHRpb25gOmBPUFRJT05gLFBhPUVlP2BzZWxlY3RgOmBTRUxFQ1RgLEZhPUVlP2Bwcm9ncmVzc2A6YFBST0dSRVNTYDtmdW5jdGlvbiBJYShlKXtpZihDKXt2YXIgdD0hMSxuPSgpPT57aWYoIXQpe2lmKHQ9ITAsZS5oYXNBdHRyaWJ1dGUoYHZhbHVlYCkpe3ZhciBuPWUudmFsdWU7emEoZSxgdmFsdWVgLG51bGwpLGUudmFsdWU9bn1pZihlLmhhc0F0dHJpYnV0ZShgY2hlY2tlZGApKXt2YXIgcj1lLmNoZWNrZWQ7emEoZSxgY2hlY2tlZGAsbnVsbCksZS5jaGVja2VkPXJ9fX07ZS5fX29uX3I9bixndChuKSxRbigpfX1mdW5jdGlvbiBMYShlLHQpe3ZhciBuPUhhKGUpO24udmFsdWU9PT0obi52YWx1ZT10Pz92b2lkIDApfHxlLnZhbHVlPT09dCYmKHQhPT0wfHxlLm5vZGVOYW1lIT09RmEpfHwoZS52YWx1ZT10Pz9gYCl9ZnVuY3Rpb24gUmEoZSx0KXt0P2UuaGFzQXR0cmlidXRlKGBzZWxlY3RlZGApfHxlLnNldEF0dHJpYnV0ZShgc2VsZWN0ZWRgLGBgKTplLnJlbW92ZUF0dHJpYnV0ZShgc2VsZWN0ZWRgKX1mdW5jdGlvbiB6YShlLHQsbixyKXt2YXIgaT1IYShlKTtDJiYoaVt0XT1lLmdldEF0dHJpYnV0ZSh0KSx0PT09YHNyY2B8fHQ9PT1gc3Jjc2V0YHx8dD09PWBocmVmYCYmZS5ub2RlTmFtZT09PWphKXx8aVt0XSE9PShpW3RdPW4pJiYodD09PWBsb2FkaW5nYCYmKGVbd2VdPW4pLG49PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6dHlwZW9mIG4hPWBzdHJpbmdgJiZXYShlKS5pbmNsdWRlcyh0KT9lW3RdPW46ZS5zZXRBdHRyaWJ1dGUodCxuKSl9ZnVuY3Rpb24gQmEoZSx0LG4scixpPSExLGE9ITEpe2lmKEMmJmkmJmUubm9kZU5hbWU9PT1NYSl7dmFyIG89ZTsoby50eXBlPT09YGNoZWNrYm94YD9gZGVmYXVsdENoZWNrZWRgOmBkZWZhdWx0VmFsdWVgKWluIG58fElhKG8pfXZhciBzPUhhKGUpLGM9c1trYV0sbD0hc1tBYV07bGV0IHU9QyYmYzt1JiZKZSghMSk7dmFyIGQ9dHx8e30sZj1lLm5vZGVOYW1lPT09TmE7Zm9yKHZhciBwIGluIHQpcCBpbiBufHwobltwXT1udWxsKTtuLmNsYXNzP24uY2xhc3M9bWEobi5jbGFzcyk6KHJ8fG5bRGFdKSYmKG4uY2xhc3M9bnVsbCksbltPYV0mJihuLnN0eWxlPz89bnVsbCk7dmFyIG09V2EoZSk7Zm9yKGxldCBpIGluIG4pe2xldCBvPW5baV07aWYoZiYmaT09PWB2YWx1ZWAmJm89PW51bGwpe2UudmFsdWU9ZS5fX3ZhbHVlPWBgLGRbaV09bztjb250aW51ZX1pZihpPT09YGNsYXNzYCl7YmEoZSxlLm5hbWVzcGFjZVVSST09PWBodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sYCxvLHIsdD8uW0RhXSxuW0RhXSksZFtpXT1vLGRbRGFdPW5bRGFdO2NvbnRpbnVlfWlmKGk9PT1gc3R5bGVgKXtTYShlLG8sdD8uW09hXSxuW09hXSksZFtpXT1vLGRbT2FdPW5bT2FdO2NvbnRpbnVlfXZhciBoPWRbaV07aWYoIShvPT09aCYmIShvPT09dm9pZCAwJiZlLmhhc0F0dHJpYnV0ZShpKSkpKXtkW2ldPW87dmFyIGc9aVswXStpWzFdO2lmKGchPT1gJCRgKWlmKGc9PT1gb25gKXtsZXQgdD17fSxuPWAkJGAraSxyPWkuc2xpY2UoMik7dmFyIF89aWkocik7aWYobmkocikmJihyPXIuc2xpY2UoMCwtNyksdC5jYXB0dXJlPSEwKSwhXyYmaCl7aWYobyE9bnVsbCljb250aW51ZTtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocixkW25dLHQpLGRbbl09bnVsbH1pZihfKWdpKHIsZSxvKSxfaShbcl0pO2Vsc2UgaWYobyE9bnVsbCl7ZnVuY3Rpb24gYShlKXtkW2ldLmNhbGwodGhpcyxlKX1kW25dPW1pKHIsZSxhLHQpfX1lbHNlIGlmKGk9PT1gc3R5bGVgKXphKGUsaSxvKTtlbHNlIGlmKGk9PT1gYXV0b2ZvY3VzYClZbihlLCEhbyk7ZWxzZSBpZighYyYmKGk9PT1gX192YWx1ZWB8fGk9PT1gdmFsdWVgJiZvIT1udWxsKSllLnZhbHVlPWUuX192YWx1ZT1vO2Vsc2UgaWYoaT09PWBzZWxlY3RlZGAmJmYpUmEoZSxvKTtlbHNle3ZhciB2PWk7bHx8KHY9c2kodikpO3ZhciB5PXY9PT1gZGVmYXVsdFZhbHVlYHx8dj09PWBkZWZhdWx0Q2hlY2tlZGA7aWYobz09bnVsbCYmIWMmJiF5KWlmKHNbaV09bnVsbCx2PT09YHZhbHVlYHx8dj09PWBjaGVja2VkYCl7bGV0IG49ZSxyPXQ9PT12b2lkIDA7aWYodj09PWB2YWx1ZWApe2xldCBlPW4uZGVmYXVsdFZhbHVlO24ucmVtb3ZlQXR0cmlidXRlKHYpLG4uZGVmYXVsdFZhbHVlPWUsbi52YWx1ZT1uLl9fdmFsdWU9cj9lOm51bGx9ZWxzZXtsZXQgZT1uLmRlZmF1bHRDaGVja2VkO24ucmVtb3ZlQXR0cmlidXRlKHYpLG4uZGVmYXVsdENoZWNrZWQ9ZSxuLmNoZWNrZWQ9cj9lOiExfX1lbHNlIGUucmVtb3ZlQXR0cmlidXRlKGkpO2Vsc2UgeXx8bS5pbmNsdWRlcyh2KSYmKGN8fHR5cGVvZiBvIT1gc3RyaW5nYCk/KGVbdl09byx2IGluIHMmJihzW3ZdPVMpKTp0eXBlb2YgbyE9YGZ1bmN0aW9uYCYmemEoZSx2LG8sYSl9fX1yZXR1cm4gdSYmSmUoITApLGR9ZnVuY3Rpb24gVmEoZSx0LG49W10scj1bXSxpPVtdLGEsbz0hMSxzPSExKXtvbihpLG4scixuPT57dmFyIHI9dm9pZCAwLGk9e30sYz1lLm5vZGVOYW1lPT09UGEsbD0hMTtpZihocigoKT0+e3ZhciB1PXQoLi4ubi5tYXAoUikpLGQ9QmEoZSxyLHUsYSxvLHMpO2wmJmMmJmB2YWx1ZWBpbiB1JiZDYShlLHUudmFsdWUpO2ZvcihsZXQgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGkpKXVbZV18fFAoaVtlXSk7Zm9yKGxldCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModSkpe3ZhciBmPXVbdF07dC5kZXNjcmlwdGlvbj09PWBAYXR0YWNoYCYmKCFyfHxmIT09clt0XSkmJihpW3RdJiZQKGlbdF0pLGlbdF09Z3IoKCk9PmRhKGUsKCk9PmYpKSksZFt0XT1mfXI9ZH0pLGMpe3ZhciB1PWU7dXIoKCk9PntDYSh1LHIudmFsdWUsITApLHdhKHUpfSl9bD0hMH0pfWZ1bmN0aW9uIEhhKGUpe3JldHVybiBlLl9fYXR0cmlidXRlcz8/PXtba2FdOmUubm9kZU5hbWUuaW5jbHVkZXMoYC1gKSxbQWFdOmUubmFtZXNwYWNlVVJJPT09VmV9fXZhciBVYT1uZXcgTWFwO2Z1bmN0aW9uIFdhKGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKGBpc2ApfHxlLm5vZGVOYW1lLG49VWEuZ2V0KHQpO2lmKG4pcmV0dXJuIG47VWEuc2V0KHQsbj1bXSk7Zm9yKHZhciByLGk9ZSxhPUVsZW1lbnQucHJvdG90eXBlO2EhPT1pOyl7Zm9yKHZhciBvIGluIHI9dihpKSxyKXJbb10uc2V0JiZuLnB1c2gobyk7aT1iKGkpfXJldHVybiBufXZhciBHYT1udWxsO2Z1bmN0aW9uIEthKCl7aWYoR2E9PT1udWxsKXt2YXIgZT1Lbihgc2VsZWN0YCk7ZS5pbm5lckhUTUw9eGkoYDxvcHRpb24+PHNwYW4+dDwvc3Bhbj48L29wdGlvbj5gKSxHYT1lLmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQ/Lm5vZGVUeXBlPT09MX1yZXR1cm4gR2F9ZnVuY3Rpb24gcWEoZSx0KXt2YXIgbj1DO0thKCl8fChKZSghMSksZS50ZXh0Q29udGVudD1gYCxlLmFwcGVuZChxbihgYCkpKTt0cnl7dCgpfWZpbmFsbHl7biYmKEM/WGUoZSk6KEplKCEwKSxUKGUpKSl9fWZ1bmN0aW9uIEphKGUsdCxuPXQpe3ZhciByPW5ldyBXZWFrU2V0O2VyKGUsYGlucHV0YCxhc3luYyBpPT57dmFyIGE9aT9lLmRlZmF1bHRWYWx1ZTplLnZhbHVlO2lmKGE9WGEoZSk/WmEoYSk6YSxuKGEpLGohPT1udWxsJiZyLmFkZChqKSxhd2FpdCBYcigpLGEhPT0oYT10KCkpKXt2YXIgbz1lLnNlbGVjdGlvblN0YXJ0LHM9ZS5zZWxlY3Rpb25FbmQsYz1lLnZhbHVlLmxlbmd0aDtpZihlLnZhbHVlPWE/P2BgLHMhPT1udWxsKXt2YXIgbD1lLnZhbHVlLmxlbmd0aDtvPT09cyYmcz09PWMmJmw+Yz8oZS5zZWxlY3Rpb25TdGFydD1sLGUuc2VsZWN0aW9uRW5kPWwpOihlLnNlbGVjdGlvblN0YXJ0PW8sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocyxsKSl9fX0pLChDJiZlLmRlZmF1bHRWYWx1ZSE9PWUudmFsdWV8fCRyKHQpPT1udWxsJiZlLnZhbHVlKSYmKG4oWGEoZSk/WmEoZS52YWx1ZSk6ZS52YWx1ZSksaiE9PW51bGwmJnIuYWRkKGopKSxmcigoKT0+e3ZhciBuPXQoKTtpZihlPT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7dmFyIGk9cnQ/THQ6ajtpZihyLmhhcyhpKSlyZXR1cm59WGEoZSkmJm49PT1aYShlLnZhbHVlKXx8ZS50eXBlPT09YGRhdGVgJiYhbiYmIWUudmFsdWV8fG4hPT1lLnZhbHVlJiYoZS52YWx1ZT1uPz9gYCl9KX1mdW5jdGlvbiBZYShlLHQsbj10KXtlcihlLGBjaGFuZ2VgLHQ9PntuKHQ/ZS5kZWZhdWx0Q2hlY2tlZDplLmNoZWNrZWQpfSksKEMmJmUuZGVmYXVsdENoZWNrZWQhPT1lLmNoZWNrZWR8fCRyKHQpPT1udWxsKSYmbihlLmNoZWNrZWQpLGZyKCgpPT57ZS5jaGVja2VkPSEhdCgpfSl9ZnVuY3Rpb24gWGEoZSl7dmFyIHQ9ZS50eXBlO3JldHVybiB0PT09YG51bWJlcmB8fHQ9PT1gcmFuZ2VgfWZ1bmN0aW9uIFphKGUpe3JldHVybiBlPT09YGA/bnVsbDorZX1mdW5jdGlvbiBRYShlLHQpe3JldHVybiBlPT09dHx8ZT8uW1NlXT09PXR9ZnVuY3Rpb24gJGEoZT17fSx0LG4scil7dmFyIGk9RS5yLGE9STtyZXR1cm4gdXIoKCk9Pnt2YXIgbyxzO3JldHVybiBmcigoKT0+e289cyxzPXI/LigpfHxbXSwkcigoKT0+e2UhPT1uKC4uLnMpJiYodChlLC4uLnMpLG8mJlFhKG4oLi4ubyksZSkmJnQobnVsbCwuLi5vKSl9KX0pLCgpPT57bGV0IHI9YTtmb3IoO3IhPT1pJiZyLnBhcmVudCE9PW51bGwmJnIucGFyZW50LmYmMzM1NTQ0MzI7KXI9ci5wYXJlbnQ7bGV0IG89KCk9PntzJiZRYShuKC4uLnMpLGUpJiZ0KG51bGwsLi4ucyl9LGM9ci50ZWFyZG93bjtyLnRlYXJkb3duPSgpPT57bygpLGM/LigpfX19KSxlfWZ1bmN0aW9uIGVvKGU9ITEpe2xldCB0PUUsbj10LmwudTtpZighbilyZXR1cm47bGV0IHI9KCk9PmVpKHQucyk7aWYoZSl7bGV0IGU9MCxuPXt9LGk9dW4oKCk9PntsZXQgcj0hMSxpPXQucztmb3IobGV0IGUgaW4gaSlpW2VdIT09bltlXSYmKG5bZV09aVtlXSxyPSEwKTtyZXR1cm4gciYmZSsrLGV9KTtyPSgpPT5SKGkpfW4uYi5sZW5ndGgmJmNyKCgpPT57dG8odCxyKSxpZShuLmIpfSksb3IoKCk9PntsZXQgZT0kcigoKT0+bi5tLm1hcChyZSkpO3JldHVybigpPT57Zm9yKGxldCB0IG9mIGUpdHlwZW9mIHQ9PWBmdW5jdGlvbmAmJnQoKX19KSxuLmEubGVuZ3RoJiZvcigoKT0+e3RvKHQsciksaWUobi5hKX0pfWZ1bmN0aW9uIHRvKGUsdCl7aWYoZS5sLnMpZm9yKGxldCB0IG9mIGUubC5zKVIodCk7dCgpfXZhciBubz17Z2V0KGUsdCl7aWYoIWUuZXhjbHVkZS5pbmNsdWRlcyh0KSlyZXR1cm4gZS5wcm9wc1t0XX0sc2V0KGUsdCl7cmV0dXJuITF9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpe2lmKCFlLmV4Y2x1ZGUuaW5jbHVkZXModCkmJnQgaW4gZS5wcm9wcylyZXR1cm57ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsdmFsdWU6ZS5wcm9wc1t0XX19LGhhcyhlLHQpe3JldHVybiBlLmV4Y2x1ZGUuaW5jbHVkZXModCk/ITE6dCBpbiBlLnByb3BzfSxvd25LZXlzKGUpe3JldHVybiBSZWZsZWN0Lm93bktleXMoZS5wcm9wcykuZmlsdGVyKHQ9PiFlLmV4Y2x1ZGUuaW5jbHVkZXModCkpfX07ZnVuY3Rpb24gcm8oZSx0LG4pe3JldHVybiBuZXcgUHJveHkoe3Byb3BzOmUsZXhjbHVkZTp0fSxubyl9dmFyIGlvPXtnZXQoZSx0KXtsZXQgbj1lLnByb3BzLmxlbmd0aDtmb3IoO24tLTspe2xldCByPWUucHJvcHNbbl07aWYobmUocikmJihyPXIoKSksdHlwZW9mIHI9PWBvYmplY3RgJiZyJiZ0IGluIHIpcmV0dXJuIHJbdF19fSxzZXQoZSx0LG4pe2xldCByPWUucHJvcHMubGVuZ3RoO2Zvcig7ci0tOyl7bGV0IGk9ZS5wcm9wc1tyXTtuZShpKSYmKGk9aSgpKTtsZXQgYT1fKGksdCk7aWYoYSYmYS5zZXQpcmV0dXJuIGEuc2V0KG4pLCEwfXJldHVybiExfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtsZXQgbj1lLnByb3BzLmxlbmd0aDtmb3IoO24tLTspe2xldCByPWUucHJvcHNbbl07aWYobmUocikmJihyPXIoKSksdHlwZW9mIHI9PWBvYmplY3RgJiZyJiZ0IGluIHIpe2xldCBlPV8ocix0KTtyZXR1cm4gZSYmIWUuY29uZmlndXJhYmxlJiYoZS5jb25maWd1cmFibGU9ITApLGV9fX0saGFzKGUsdCl7aWYodD09PVNlfHx0PT09Q2UpcmV0dXJuITE7Zm9yKGxldCBuIG9mIGUucHJvcHMpaWYobmUobikmJihuPW4oKSksbiE9bnVsbCYmdCBpbiBuKXJldHVybiEwO3JldHVybiExfSxvd25LZXlzKGUpe2xldCB0PVtdO2ZvcihsZXQgbiBvZiBlLnByb3BzKWlmKG5lKG4pJiYobj1uKCkpLG4pe2ZvcihsZXQgZSBpbiBuKXQuaW5jbHVkZXMoZSl8fHQucHVzaChlKTtmb3IobGV0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKSl0LmluY2x1ZGVzKGUpfHx0LnB1c2goZSl9cmV0dXJuIHR9fTtmdW5jdGlvbiBhbyguLi5lKXtyZXR1cm4gbmV3IFByb3h5KHtwcm9wczplfSxpbyl9ZnVuY3Rpb24gb28oZSx0LG4scil7dmFyIGk9IWl0fHwobiYyKSE9MCxhPShuJjgpIT0wLG89KG4mMTYpIT0wLHM9cixjPSEwLGw9KCk9PihjJiYoYz0hMSxzPW8/JHIocik6cikscyk7bGV0IHU7aWYoYSl7dmFyIGQ9U2UgaW4gZXx8Q2UgaW4gZTt1PV8oZSx0KT8uc2V0Pz8oZCYmdCBpbiBlP249PmVbdF09bjp2b2lkIDApfXZhciBmLHA9ITE7YT9bZixwXT1GdCgoKT0+ZVt0XSk6Zj1lW3RdLGY9PT12b2lkIDAmJnIhPT12b2lkIDAmJihmPWwoKSx1JiYoaSYmUGUodCksdShmKSkpO3ZhciBtPWk/KCk9Pnt2YXIgbj1lW3RdO3JldHVybiBuPT09dm9pZCAwP2woKTooYz0hMCxuKX06KCk9Pnt2YXIgbj1lW3RdO3JldHVybiBuIT09dm9pZCAwJiYocz12b2lkIDApLG49PT12b2lkIDA/czpufTtpZihpJiYhKG4mNCkpcmV0dXJuIG07aWYodSl7dmFyIGg9ZS4kJGxlZ2FjeTtyZXR1cm4oZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wPygoIWl8fCF0fHxofHxwKSYmdSh0P20oKTplKSxlKTptKCl9KX12YXIgZz0hMSx2PShuJjE/dW46cG4pKCgpPT4oZz0hMSxtKCkpKTthJiZSKHYpO3ZhciB5PUk7cmV0dXJuKGZ1bmN0aW9uKGUsdCl7aWYoYXJndW1lbnRzLmxlbmd0aD4wKXtsZXQgbj10P1Iodik6aSYmYT9qbihlKTplO3JldHVybiBUbih2LG4pLGc9ITAscyE9PXZvaWQgMCYmKHM9biksZX1yZXR1cm4ga3ImJmd8fHkuZiYxNjM4ND92LnY6Uih2KX0pfWZ1bmN0aW9uIHNvKGUpe0U9PT1udWxsJiZEZShgb25Nb3VudGApLGl0JiZFLmwhPT1udWxsP2xvKEUpLm0ucHVzaChlKTpvcigoKT0+e2xldCB0PSRyKGUpO2lmKHR5cGVvZiB0PT1gZnVuY3Rpb25gKXJldHVybiB0fSl9ZnVuY3Rpb24gY28oZSl7RT09PW51bGwmJkRlKGBvbkRlc3Ryb3lgKSxzbygoKT0+KCk9PiRyKGUpKX1mdW5jdGlvbiBsbyhlKXt2YXIgdD1lLmw7cmV0dXJuIHQudT8/PXthOltdLGI6W10sbTpbXX19dmFyIHo9KCgpPT57bGV0IGU9bmV3IE1hcDtyZXR1cm4gT2JqZWN0LmZyZWV6ZSh7b246KHQsbik9PntsZXQgcj1lLmdldCh0KTtyP3IucHVzaChuKTplLnNldCh0LFtuXSl9LG9mZjoodCxuKT0+e2xldCByPWUuZ2V0KHQpO3ImJmUuc2V0KHQsci5maWx0ZXIoZT0+ZSE9PW4pKX0sZW1pdDoodCxuKT0+e2xldCByPWUuZ2V0KHQpO3ImJnIuZm9yRWFjaChlPT5lKG4pKX19KX0pKCksdW89YGRhdGEtc21hcnRzdXBwLWlkYCxmbz0oKT0+d2luZG93LnRvcD8/d2luZG93LnBhcmVudCxCPSgpPT53aW5kb3cucGFyZW50LHBvPSgpPT5CKCkuZG9jdW1lbnQsbW89ZT0+ZSYmZS5vd25lckRvY3VtZW50fHxkb2N1bWVudCxobz0oe3ZpZDplfSk9PntsZXQgdD1CKCkuc21hcnRzdXBwfHx7fTt0LnZpZD1lLEIoKS5zbWFydHN1cHA9dH0sZ289YGRlYnVnYCxfbz1lPT57dHJ5e2xldCB0PUIoKS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShnbyk7aWYoIXQpcmV0dXJuITE7aWYodD09PWV8fHQ9PT1gKmApcmV0dXJuITA7bGV0IG49ZS5tYXRjaCgvXlx3KzovZyk7cmV0dXJuIG4/dD09PWAke25bMF19KmA6ITF9Y2F0Y2h7cmV0dXJuITF9fSx2bz0oKGUsdCk9PihuLC4uLnIpPT57X28oZSkmJmNvbnNvbGUuZGVidWcoYCVjJHtlfWAsYGNvbG9yOiAke3R9O2AsbiwuLi5yKX0pKGBzbWFydHN1cHA6d2lkZ2V0YCxgIzEyMzNkZmApLFY9KCgpPT57bGV0IGU9bnVsbCx0PVtdO3JldHVybiBPYmplY3QuZnJlZXplKHtpbml0Om49PntlPW4sdm8oYHdpZGdldCBvcHRpb25zYCxuKSx0LmZvckVhY2goZT0+ZShuKSl9LGdldE9wdGlvbnM6KCk9PntpZighZSl0aHJvdyBFcnJvcihgV2lkZ2V0IG9wdGlvbnMgbm90IGluaXRpYWxpemVkYCk7cmV0dXJuIGV9LGF3YWl0T3B0aW9uczphc3luYygpPT5lfHxuZXcgUHJvbWlzZShlPT57dC5wdXNoKGUpfSksdXBkYXRlT3B0aW9uczp0PT57ZT17Li4uZSwuLi50fX19KX0pKCkseW89ZT0+e2xldCB0PWUuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYGJvZHlgKVswXS5nZXRBdHRyaWJ1dGUodW8pO2lmKCF0KXRocm93IEVycm9yKGBNaXNzaW5nIGNoYXQgSUQgYXR0cmlidXRlIG9uIGJvZHkgZWxlbWVudC5gKTtpZighZS5wYXJlbnQuJHNtYXJ0c3VwcCl0aHJvdyBFcnJvcihgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFNlZW1zIGxpa2UgbG9hZGVyLmpzIGRpZCBub3QgaW5pdGlhbGl6ZSB3aWRnZXQuYCk7aWYoIWUucGFyZW50LiRzbWFydHN1cHAuZ2V0V2lkZ2V0KXRocm93IEVycm9yKGBHZXQgd2lkZ2V0IGZ1bmN0aW9uIHdhcyBub3Qgc3VwcGxpZWQgYnkgbG9hZGVyLmpzLmApO3JldHVybiBlLnBhcmVudC4kc21hcnRzdXBwLmdldFdpZGdldCh0KX07ZnVuY3Rpb24gYm8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKWVbcl09bltyXX1yZXR1cm4gZX12YXIgeG89e3JlYWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09PT1gImAmJihlPWUuc2xpY2UoMSwtMSkpLGUucmVwbGFjZSgvKCVbXGRBLUZdezJ9KSsvZ2ksZGVjb2RlVVJJQ29tcG9uZW50KX0sd3JpdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lKDJbMzQ2QkZdfDNbQUMtRl18NDB8NVtCREVdfDYwfDdbQkNEXSkvZyxkZWNvZGVVUklDb21wb25lbnQpfX07ZnVuY3Rpb24gU28oZSx0KXtmdW5jdGlvbiBuKG4scixpKXtpZighKHR5cGVvZiBkb2N1bWVudD5gdWApKXtpPWJvKHt9LHQsaSksdHlwZW9mIGkuZXhwaXJlcz09YG51bWJlcmAmJihpLmV4cGlyZXM9bmV3IERhdGUoRGF0ZS5ub3coKStpLmV4cGlyZXMqODY0ZTUpKSxpLmV4cGlyZXMmJj1pLmV4cGlyZXMudG9VVENTdHJpbmcoKSxuPWVuY29kZVVSSUNvbXBvbmVudChuKS5yZXBsYWNlKC8lKDJbMzQ2Ql18NUV8NjB8N0MpL2csZGVjb2RlVVJJQ29tcG9uZW50KS5yZXBsYWNlKC9bKCldL2csZXNjYXBlKTt2YXIgYT1gYDtmb3IodmFyIG8gaW4gaSlpW29dJiYoYSs9YDsgYCtvLGlbb10hPT0hMCYmKGErPWA9YCtpW29dLnNwbGl0KGA7YClbMF0pKTtyZXR1cm4gZG9jdW1lbnQuY29va2llPW4rYD1gK2Uud3JpdGUocixuKSthfX1mdW5jdGlvbiByKHQpe2lmKCEodHlwZW9mIGRvY3VtZW50PmB1YHx8YXJndW1lbnRzLmxlbmd0aCYmIXQpKXtmb3IodmFyIG49ZG9jdW1lbnQuY29va2llP2RvY3VtZW50LmNvb2tpZS5zcGxpdChgOyBgKTpbXSxyPXt9LGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIGE9bltpXS5zcGxpdChgPWApLG89YS5zbGljZSgxKS5qb2luKGA9YCk7dHJ5e3ZhciBzPWRlY29kZVVSSUNvbXBvbmVudChhWzBdKTtpZihyW3NdPWUucmVhZChvLHMpLHQ9PT1zKWJyZWFrfWNhdGNoe319cmV0dXJuIHQ/clt0XTpyfX1yZXR1cm4gT2JqZWN0LmNyZWF0ZSh7c2V0Om4sZ2V0OnIscmVtb3ZlOmZ1bmN0aW9uKGUsdCl7bihlLGBgLGJvKHt9LHQse2V4cGlyZXM6LTF9KSl9LHdpdGhBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUpe3JldHVybiBTbyh0aGlzLmNvbnZlcnRlcixibyh7fSx0aGlzLmF0dHJpYnV0ZXMsZSkpfSx3aXRoQ29udmVydGVyOmZ1bmN0aW9uKGUpe3JldHVybiBTbyhibyh7fSx0aGlzLmNvbnZlcnRlcixlKSx0aGlzLmF0dHJpYnV0ZXMpfX0se2F0dHJpYnV0ZXM6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9LGNvbnZlcnRlcjp7dmFsdWU6T2JqZWN0LmZyZWV6ZShlKX19KX12YXIgQ289U28oeG8se3BhdGg6YC9gfSksd289YHNzdXBwYCxUbz0oZT0xODIpPT4oe2V4cGlyZXM6ZSxkb21haW46Vi5nZXRPcHRpb25zKCkuY29va2llRG9tYWluLHBhdGg6Vi5nZXRPcHRpb25zKCkuY29va2llUGF0aHx8YC9gLHNhbWVTaXRlOmBzdHJpY3RgLHNlY3VyZTpCKCkubG9jYXRpb24ucHJvdG9jb2w9PT1gaHR0cHM6YH0pLEVvPWU9PmAke1YuZ2V0T3B0aW9ucygpLmNvb2tpZVByZWZpeHx8YGB9JHt3b30uJHtlfWAsRG89KHtuYW1lOmUsdmFsdWU6dCxleHBpcmF0aW9uSW5EYXlzOm49MTgyLG9wdGlvbnM6cn0pPT57Q28uc2V0KEVvKGUpLHQsey4uLlRvKG4pLC4uLnJ9KX0sT289ZT0+Q28uZ2V0KEVvKGUpKSxrbz1lPT57bGV0IHQ9RW8oZSk7aWYoQ28uZ2V0KHQpKXtsZXR7cGF0aDplLGRvbWFpbjpufT1UbygpO0NvLnJlbW92ZSh0LHtwYXRoOmUsZG9tYWluOm59KX19LEFvPWU9Pih0LC4uLm4pPT57ZShgW1NtYXJ0c3VwcF0gJHt0fWAsLi4ubil9LEg9QW8oY29uc29sZS53YXJuKSxqbz1Bbyhjb25zb2xlLmVycm9yKSxNbz0oKT0+e2xldHtrZXk6ZX09Vi5nZXRPcHRpb25zKCk7cmV0dXJuYCR7QigpLlNNQVJUU1VQUF9BVVRPQ1JFQVRFPT09ITE/YCR7eW8od2luZG93KS5pZH1fJHt3b31gOndvfV8ke2V9YH0sTm89ZT0+YCR7TW8oKX0ke2U/YF8ke2V9YDpgYH1gLFBvPWU9Pnt0cnl7bGV0IHQ9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKE5vKGUpKT8/YHt9YDtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaHtyZXR1cm57fX19LEZvPShlLHQpPT57dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShObyh0KSxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2goZSl7SChgU2V0IHRvIGxvY2FsIHN0b3JhZ2UgZmFpbGVkYCxlKX19LElvPShlLHQpPT57Rm8oey4uLlBvKCksW2VdOlN0cmluZyh0KX0pfSxMbz1lPT57bGV0IHQ9UG8oKTt0W2VdJiYoZGVsZXRlIHRbZV0sRm8odCkpfSxSbz0oKT0+e3dpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShObygpKSx3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTm8oYGNhcmRzYCkpfSxVPWZ1bmN0aW9uKGUpe3JldHVybiBlLkFuYWx5dGljc0NvbnNlbnQ9YGFuYWx5dGljc0NvbnNlbnRgLGUuQXV0aEZvcm09YGF1dGhGb3JtYCxlLklzTWVzc2VuZ2VyRnJhbWVFeHBhbmRlZD1gaXNNZXNzZW5nZXJGcmFtZUV4cGFuZGVkYCxlLklzTWVzc2VuZ2VyRnJhbWVPcGVuZWQ9YG9wZW5lZGAsZS5NYXJrZXRpbmdDb25zZW50PWBtYXJrZXRpbmdDb25zZW50YCxlLk1lc3NhZ2U9YG1lc3NhZ2VgLGUuUG9wdXBDbG9zZWRBdD1gcG9wdXBDbG9zZWRBdGAsZS5SYXRpbmdUZXh0PWByYXRpbmdUZXh0YCxlLlNvdW5kc0VuYWJsZWQ9YGVuYWJsZVNvdW5kc2AsZS5WaXNpdG9ySWQ9YHZpZGAsZS5WaXNpdHM9YHZpc2l0c2AsZS5UaWNrZXRGb3JtPWB0aWNrZXRGb3JtYCxlLlNlc3Npb25JZD1gc2Vzc2lvbklkYCxlfSh7fSksem89ZT0+e2xldCB0PWBgO3JldHVybiBlPT09VS5WaXNpdG9ySWQmJlYuZ2V0T3B0aW9ucygpLmNvb2tpZURvbWFpbiYmKHQ9T28oZSkpLHR8fFBvKClbZV19LEJvPSh7bmFtZTplLHZhbHVlOnR9KT0+e2U9PT1VLlZpc2l0b3JJZCYmVi5nZXRPcHRpb25zKCkuY29va2llRG9tYWluJiZEbyh7bmFtZTplLHZhbHVlOnR9KSxJbyhlLHQpfSxWbz1lPT57TG8oZSl9O3oub24oYGFuYWx5dGljc0NvbnNlbnRDaGFuZ2VkYCxlPT57Qm8oe25hbWU6VS5BbmFseXRpY3NDb25zZW50LHZhbHVlOlN0cmluZyhlKX0pfSksei5vbihgbWFya2V0aW5nQ29uc2VudENoYW5nZWRgLGU9PntCbyh7bmFtZTpVLk1hcmtldGluZ0NvbnNlbnQsdmFsdWU6U3RyaW5nKGUpfSl9KTt2YXIgSG89KCk9PiEhVi5nZXRPcHRpb25zKCkuY29uc2VudE1vZGVFbmFibGVkLFVvPSgpPT57bGV0IGU9em8oVS5BbmFseXRpY3NDb25zZW50KT09PWB0cnVlYDtyZXR1cm4hKEhvKCkmJiFlKX0sV289KCk9PntsZXQgZT16byhVLk1hcmtldGluZ0NvbnNlbnQpPT09YHRydWVgO3JldHVybiEoSG8oKSYmIWUpfSxHbz1gbW9kdWxlcHJlbG9hZGAsS289ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFVSTChlLHQpLmhyZWZ9LHFvPXt9LEpvPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1Qcm9taXNlLnJlc29sdmUoKTtpZih0JiZ0Lmxlbmd0aD4wKXtsZXQgZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShgbGlua2ApLGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdYCksYT1pPy5ub25jZXx8aT8uZ2V0QXR0cmlidXRlKGBub25jZWApO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUubWFwKGU9PlByb21pc2UucmVzb2x2ZShlKS50aGVuKGU9Pih7c3RhdHVzOmBmdWxmaWxsZWRgLHZhbHVlOmV9KSxlPT4oe3N0YXR1czpgcmVqZWN0ZWRgLHJlYXNvbjplfSkpKSl9cj1vKHQubWFwKHQ9PntpZih0PUtvKHQsbiksdCBpbiBxbylyZXR1cm47cW9bdF09ITA7bGV0IHI9dC5lbmRzV2l0aChgLmNzc2ApLGk9cj9gW3JlbD0ic3R5bGVzaGVldCJdYDpgYDtpZihuKWZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtsZXQgaT1lW25dO2lmKGkuaHJlZj09PXQmJighcnx8aS5yZWw9PT1gc3R5bGVzaGVldGApKXJldHVybn1lbHNlIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj0iJHt0fSJdJHtpfWApKXJldHVybjtsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBsaW5rYCk7aWYoby5yZWw9cj9gc3R5bGVzaGVldGA6R28scnx8KG8uYXM9YHNjcmlwdGApLG8uY3Jvc3NPcmlnaW49YGAsby5ocmVmPXQsYSYmby5zZXRBdHRyaWJ1dGUoYG5vbmNlYCxhKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG8pLHIpcmV0dXJuIG5ldyBQcm9taXNlKChlLG4pPT57by5hZGRFdmVudExpc3RlbmVyKGBsb2FkYCxlKSxvLmFkZEV2ZW50TGlzdGVuZXIoYGVycm9yYCwoKT0+bihFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke3R9YCkpKX0pfSkpfWZ1bmN0aW9uIGkoZSl7bGV0IHQ9bmV3IEV2ZW50KGB2aXRlOnByZWxvYWRFcnJvcmAse2NhbmNlbGFibGU6ITB9KTtpZih0LnBheWxvYWQ9ZSx3aW5kb3cuZGlzcGF0Y2hFdmVudCh0KSwhdC5kZWZhdWx0UHJldmVudGVkKXRocm93IGV9cmV0dXJuIHIudGhlbih0PT57Zm9yKGxldCBlIG9mIHR8fFtdKWUuc3RhdHVzPT09YHJlamVjdGVkYCYmaShlLnJlYXNvbik7cmV0dXJuIGUoKS5jYXRjaChpKX0pfSxZbz0oKT0+ISFWLmdldE9wdGlvbnMoKS5jcm9zc0RvbWFpbkVuYWJsZWQsWG89KCk9PlYuZ2V0T3B0aW9ucygpLmFsbG93ZWREb21haW5zLmxlbmd0aD4wLFpvPWFzeW5jKCk9Pnt0cnl7bGV0IGU9YXdhaXQgbmV3KGF3YWl0KEpvKCgpPT5pbXBvcnQoYC4vdGh1bWJtYXJrLmVzbS1DUDRDVTB5TC5qc2ApLFtdLGltcG9ydC5tZXRhLnVybCkpKS5UaHVtYm1hcmsoKS5nZXQoKTtyZXR1cm4gdm8oYFZpc2l0b3IgZmluZ2VycHJpbnQgY3JlYXRlZGAsZS50aHVtYm1hcmspLGUudGh1bWJtYXJrfWNhdGNoKGUpe0goYEZhaWxlZCB0byBnZW5lcmF0ZSBmaW5nZXJwcmludDpgLGUpfX0sUW89YXN5bmMoKT0+e2lmKCEoIVlvKCl8fCFYbygpKSlyZXR1cm4gWm8oKX0sJG89KCk9PnpvKFUuVmlzaXRvcklkKXx8bnVsbCxlcz1lPT5Cbyh7bmFtZTpVLlZpc2l0b3JJZCx2YWx1ZTpTdHJpbmcoZSl9KSx0cz0oKT0+e2lmKFdvKCkpcmV0dXJuIHpvKFUuVmlzaXRzKT9OdW1iZXIoem8oVS5WaXNpdHMpKTowfSxucz1lPT57V28oKSYmQm8oe25hbWU6VS5WaXNpdHMsdmFsdWU6U3RyaW5nKGUpfSl9O3oub24oYG1hcmtldGluZ0NvbnNlbnRDaGFuZ2VkYCxlPT57ZXx8Vm8oVS5WaXNpdHMpfSk7dmFyIHJzPShlLHQsbik9PntsZXR7c2V0OnIsc3Vic2NyaWJlOml9PU8odCx0PT57bGV0IHI9em8oZSk7ciYmdChuP24ocik6cil9KSxhPXQ9PntCbyh7bmFtZTplLHZhbHVlOlN0cmluZyh0KX0pfTtyZXR1cm57c2V0OmU9PnthKGUpLHIoZSl9LHN1YnNjcmliZTppfX0saXM9KCk9PmBvbnRvdWNoc3RhcnRgaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cz4wLGFzPSgpPT5bYGlQYWQgU2ltdWxhdG9yYCxgaVBob25lIFNpbXVsYXRvcmAsYGlQb2QgU2ltdWxhdG9yYCxgaVBhZGAsYGlQaG9uZWAsYGlQb2RgXS5pbmNsdWRlcyhuYXZpZ2F0b3IucGxhdGZvcm0pfHxuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKGBNYWNgKSYmYG9udG91Y2hlbmRgaW4gZG9jdW1lbnQsb3M9TyhudWxsKSxzcz1rKFtvcyxPKHt3aWR0aDpCKCkuaW5uZXJXaWR0aCxoZWlnaHQ6QigpLmlubmVySGVpZ2h0fSldLChbZSx0XSk9PntsZXR7d2lkZ2V0QmxvY2tpbmdPcHRpb25zOm59PVYuZ2V0T3B0aW9ucygpO2lmKG4/LmVuZm9yY2VEZXNrdG9wTW9kZSlyZXR1cm4hMTtpZihlKXtsZXR7aXNNb2JpbGU6dCxpc1RhYmxldDpufT1lO2lmKG4pcmV0dXJuITE7aWYodClyZXR1cm4hMH1yZXR1cm4gdC53aWR0aDw0NTB8fHQuaGVpZ2h0PDUwMH0pLGNzPWsoW3NzXSwoW2VdKT0+e2xldHtmdWxsU2NyZWVuRW5hYmxlZDp0fT1WLmdldE9wdGlvbnMoKTtyZXR1cm4hIShlfHx0KX0pLGxzPWsoW29zXSwoW2VdKT0+ZT8hIWU/LmlzRGVza3RvcCYmIWFzKCk6IWlzKCkpLHVzPWsoW2xzLGNzXSwoW2UsdF0pPT5lJiYhdCk7ayhbb3NdLChbZV0pPT4hIWU/LmlzVGFibGV0KTt2YXIgZHM9KCgpPT57bGV0IGU9Tyh7fSkse3N1YnNjcmliZTp0LHVwZGF0ZTpufT1lO3JldHVybntzdWJzY3JpYmU6dCxhZGQ6ZT0+e24odD0+KHsuLi50LFtlLmlkXTplfSkpfSxyZW1vdmU6ZT0+e24odD0+e2xldHtbZV06biwuLi5yfT10O3JldHVybiByfSl9LGZpbmQ6dD0+QShlKVt0XXx8bnVsbH19KSgpLGZzPWsoW2RzXSwoW2VdKT0+T2JqZWN0LnZhbHVlcyhlKSkscHM9ZT0+KHQsbj0zZTMpPT57bGV0IHI9YGZtLSR7ZX0tJHt0fWAsaT1kcy5maW5kKHIpLGE9MTtpJiYoY2xlYXJUaW1lb3V0KGkudGltZW91dCksYT1pLnJlY3VycmVuY2UrMSk7bGV0IG87cmV0dXJuIG4+MCYmKG89d2luZG93LnNldFRpbWVvdXQoKCk9PnttcyhyKX0sbikpLGRzLmFkZCh7aWQ6cix0eXBlOmUsdGV4dDp0LHRpbWVvdXQ6byxyZWN1cnJlbmNlOmF9KSwoKT0+bXMocil9LG1zPWU9Pntkcy5yZW1vdmUoZSl9LGhzPXBzKGBzdWNjZXNzYCksZ3M9cHMoYGVycm9yYCksX3M9cHMoYHdhcm5pbmdgKSx2cz1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLkdvb2Q9NV09YEdvb2RgLGVbZS5Ob3JtYWw9M109YE5vcm1hbGAsZVtlLkJhZD0xXT1gQmFkYCxlfSh7fSkseXM9e1t2cy5Hb29kXTp7dmFsdWU6dnMuR29vZCx0ZXh0OmBhZ2VudFJhdGluZy5nb29kLmZvcm1UZXh0YCxuYW1lOmBnb29kYH0sW3ZzLk5vcm1hbF06e3ZhbHVlOnZzLk5vcm1hbCx0ZXh0OmBhZ2VudFJhdGluZy5ub3JtYWwuZm9ybVRleHRgLG5hbWU6YG5ldXRyYWxgfSxbdnMuQmFkXTp7dmFsdWU6dnMuQmFkLHRleHQ6YGFnZW50UmF0aW5nLmJhZC5mb3JtVGV4dGAsbmFtZTpgYmFkYH19LGJzPU9iamVjdC52YWx1ZXMoeXMpLnNvcnQoKGUsdCk9PnQudmFsdWUtZS52YWx1ZSkseHM9YHJhdGVfZm9ybV9pZGAsU3M9e2lkOnhzLHR5cGU6YG1lc3NhZ2VgLHN1YlR5cGU6YHN5c3RlbWAsY2hhbm5lbDp7dHlwZTpgZGVmYXVsdGAsaWQ6bnVsbH0sY2hhdElkOmBgLHZpc2l0b3JJZDpgYCxncm91cElkOm51bGwsYWdlbnRJZDpudWxsLHRyaWdnZXI6bnVsbCxjcmVhdGVkQXQ6YGAsY29udGVudDp7dHlwZTpgcmF0ZV9mb3JtYCxkYXRhOnt9fSxhdHRhY2htZW50czpbXSxzdWJqZWN0Om51bGwsZm9yd2FyZGVkTWVzc2FnZUlkOm51bGwscGFydGljaXBhbnRzOltdLHJlcGx5VG9NZXNzYWdlSWQ6bnVsbCxkZWxldGVkQXQ6bnVsbCx3aWRnZXRPcHRpb25zOntkaXNhYmxlSW5wdXQ6ITEsZGlzYWJsZUF1dGhlbnRpY2F0aW9uOiExLGRpc2FibGVBdHRhY2htZW50czohMX19LENzPU8obnVsbCksd3M9cygoKGUsdCk9Pnt2YXIgbj0xZTMscj1uKjYwLGk9cio2MCxhPWkqMjQsbz1hKjcscz1hKjM2NS4yNTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0fHw9e307dmFyIG49dHlwZW9mIGU7aWYobj09PWBzdHJpbmdgJiZlLmxlbmd0aD4wKXJldHVybiBjKGUpO2lmKG49PT1gbnVtYmVyYCYmaXNGaW5pdGUoZSkpcmV0dXJuIHQubG9uZz91KGUpOmwoZSk7dGhyb3cgRXJyb3IoYHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9YCtKU09OLnN0cmluZ2lmeShlKSl9O2Z1bmN0aW9uIGMoZSl7aWYoZT1TdHJpbmcoZSksIShlLmxlbmd0aD4xMDApKXt2YXIgdD0vXigtPyg/OlxkKyk/XC4/XGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoZSk7aWYodCl7dmFyIGM9cGFyc2VGbG9hdCh0WzFdKTtzd2l0Y2goKHRbMl18fGBtc2ApLnRvTG93ZXJDYXNlKCkpe2Nhc2VgeWVhcnNgOmNhc2VgeWVhcmA6Y2FzZWB5cnNgOmNhc2VgeXJgOmNhc2VgeWA6cmV0dXJuIGMqcztjYXNlYHdlZWtzYDpjYXNlYHdlZWtgOmNhc2Vgd2A6cmV0dXJuIGMqbztjYXNlYGRheXNgOmNhc2VgZGF5YDpjYXNlYGRgOnJldHVybiBjKmE7Y2FzZWBob3Vyc2A6Y2FzZWBob3VyYDpjYXNlYGhyc2A6Y2FzZWBocmA6Y2FzZWBoYDpyZXR1cm4gYyppO2Nhc2VgbWludXRlc2A6Y2FzZWBtaW51dGVgOmNhc2VgbWluc2A6Y2FzZWBtaW5gOmNhc2VgbWA6cmV0dXJuIGMqcjtjYXNlYHNlY29uZHNgOmNhc2Vgc2Vjb25kYDpjYXNlYHNlY3NgOmNhc2Vgc2VjYDpjYXNlYHNgOnJldHVybiBjKm47Y2FzZWBtaWxsaXNlY29uZHNgOmNhc2VgbWlsbGlzZWNvbmRgOmNhc2VgbXNlY3NgOmNhc2VgbXNlY2A6Y2FzZWBtc2A6cmV0dXJuIGM7ZGVmYXVsdDpyZXR1cm59fX19ZnVuY3Rpb24gbChlKXt2YXIgdD1NYXRoLmFicyhlKTtyZXR1cm4gdD49YT9NYXRoLnJvdW5kKGUvYSkrYGRgOnQ+PWk/TWF0aC5yb3VuZChlL2kpK2BoYDp0Pj1yP01hdGgucm91bmQoZS9yKStgbWA6dD49bj9NYXRoLnJvdW5kKGUvbikrYHNgOmUrYG1zYH1mdW5jdGlvbiB1KGUpe3ZhciB0PU1hdGguYWJzKGUpO3JldHVybiB0Pj1hP2QoZSx0LGEsYGRheWApOnQ+PWk/ZChlLHQsaSxgaG91cmApOnQ+PXI/ZChlLHQscixgbWludXRlYCk6dD49bj9kKGUsdCxuLGBzZWNvbmRgKTplK2AgbXNgfWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIGk9dD49bioxLjU7cmV0dXJuIE1hdGgucm91bmQoZS9uKStgIGArcisoaT9gc2A6YGApfX0pKSxUcz1zKCgoZSx0KT0+e2Z1bmN0aW9uIG4oZSl7bi5kZWJ1Zz1uLG4uZGVmYXVsdD1uLG4uY29lcmNlPWMsbi5kaXNhYmxlPW8sbi5lbmFibGU9aSxuLmVuYWJsZWQ9cyxuLmh1bWFuaXplPXdzKCksbi5kZXN0cm95PWwsT2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT57blt0XT1lW3RdfSksbi5uYW1lcz1bXSxuLnNraXBzPVtdLG4uZm9ybWF0dGVycz17fTtmdW5jdGlvbiB0KGUpe2xldCB0PTA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdD0odDw8NSktdCtlLmNoYXJDb2RlQXQobiksdHw9MDtyZXR1cm4gbi5jb2xvcnNbTWF0aC5hYnModCklbi5jb2xvcnMubGVuZ3RoXX1uLnNlbGVjdENvbG9yPXQ7ZnVuY3Rpb24gbihlKXtsZXQgdCxpPW51bGwsYSxvO2Z1bmN0aW9uIHMoLi4uZSl7aWYoIXMuZW5hYmxlZClyZXR1cm47bGV0IHI9cyxpPU51bWJlcihuZXcgRGF0ZSk7ci5kaWZmPWktKHR8fGkpLHIucHJldj10LHIuY3Vycj1pLHQ9aSxlWzBdPW4uY29lcmNlKGVbMF0pLHR5cGVvZiBlWzBdIT1gc3RyaW5nYCYmZS51bnNoaWZ0KGAlT2ApO2xldCBhPTA7ZVswXT1lWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCh0LGkpPT57aWYodD09PWAlJWApcmV0dXJuYCVgO2ErKztsZXQgbz1uLmZvcm1hdHRlcnNbaV07aWYodHlwZW9mIG89PWBmdW5jdGlvbmApe2xldCBuPWVbYV07dD1vLmNhbGwocixuKSxlLnNwbGljZShhLDEpLGEtLX1yZXR1cm4gdH0pLG4uZm9ybWF0QXJncy5jYWxsKHIsZSksKHIubG9nfHxuLmxvZykuYXBwbHkocixlKX1yZXR1cm4gcy5uYW1lc3BhY2U9ZSxzLnVzZUNvbG9ycz1uLnVzZUNvbG9ycygpLHMuY29sb3I9bi5zZWxlY3RDb2xvcihlKSxzLmV4dGVuZD1yLHMuZGVzdHJveT1uLmRlc3Ryb3ksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsYGVuYWJsZWRgLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6KCk9Pmk9PT1udWxsPyhhIT09bi5uYW1lc3BhY2VzJiYoYT1uLm5hbWVzcGFjZXMsbz1uLmVuYWJsZWQoZSkpLG8pOmksc2V0OmU9PntpPWV9fSksdHlwZW9mIG4uaW5pdD09YGZ1bmN0aW9uYCYmbi5pbml0KHMpLHN9ZnVuY3Rpb24gcihlLHQpe2xldCByPW4odGhpcy5uYW1lc3BhY2UrKHQ9PT12b2lkIDA/YDpgOnQpK2UpO3JldHVybiByLmxvZz10aGlzLmxvZyxyfWZ1bmN0aW9uIGkoZSl7bi5zYXZlKGUpLG4ubmFtZXNwYWNlcz1lLG4ubmFtZXM9W10sbi5za2lwcz1bXTtsZXQgdD0odHlwZW9mIGU9PWBzdHJpbmdgP2U6YGApLnRyaW0oKS5yZXBsYWNlKC9ccysvZyxgLGApLnNwbGl0KGAsYCkuZmlsdGVyKEJvb2xlYW4pO2ZvcihsZXQgZSBvZiB0KWVbMF09PT1gLWA/bi5za2lwcy5wdXNoKGUuc2xpY2UoMSkpOm4ubmFtZXMucHVzaChlKX1mdW5jdGlvbiBhKGUsdCl7bGV0IG49MCxyPTAsaT0tMSxhPTA7Zm9yKDtuPGUubGVuZ3RoOylpZihyPHQubGVuZ3RoJiYodFtyXT09PWVbbl18fHRbcl09PT1gKmApKXRbcl09PT1gKmA/KGk9cixhPW4scisrKToobisrLHIrKyk7ZWxzZSBpZihpIT09LTEpcj1pKzEsYSsrLG49YTtlbHNlIHJldHVybiExO2Zvcig7cjx0Lmxlbmd0aCYmdFtyXT09PWAqYDspcisrO3JldHVybiByPT09dC5sZW5ndGh9ZnVuY3Rpb24gbygpe2xldCBlPVsuLi5uLm5hbWVzLC4uLm4uc2tpcHMubWFwKGU9PmAtYCtlKV0uam9pbihgLGApO3JldHVybiBuLmVuYWJsZShgYCksZX1mdW5jdGlvbiBzKGUpe2ZvcihsZXQgdCBvZiBuLnNraXBzKWlmKGEoZSx0KSlyZXR1cm4hMTtmb3IobGV0IHQgb2Ygbi5uYW1lcylpZihhKGUsdCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yP2Uuc3RhY2t8fGUubWVzc2FnZTplfWZ1bmN0aW9uIGwoKXtjb25zb2xlLndhcm4oIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4iKX1yZXR1cm4gbi5lbmFibGUobi5sb2FkKCkpLG59dC5leHBvcnRzPW59KSksRXM9cygoKGUsdCk9PntlLmZvcm1hdEFyZ3M9cixlLnNhdmU9aSxlLmxvYWQ9YSxlLnVzZUNvbG9ycz1uLGUuc3RvcmFnZT1vKCksZS5kZXN0cm95PSgoKT0+e2xldCBlPSExO3JldHVybigpPT57ZXx8KGU9ITAsY29uc29sZS53YXJuKCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuIikpfX0pKCksZS5jb2xvcnM9YCMwMDAwQ0MuIzAwMDBGRi4jMDAzM0NDLiMwMDMzRkYuIzAwNjZDQy4jMDA2NkZGLiMwMDk5Q0MuIzAwOTlGRi4jMDBDQzAwLiMwMENDMzMuIzAwQ0M2Ni4jMDBDQzk5LiMwMENDQ0MuIzAwQ0NGRi4jMzMwMENDLiMzMzAwRkYuIzMzMzNDQy4jMzMzM0ZGLiMzMzY2Q0MuIzMzNjZGRi4jMzM5OUNDLiMzMzk5RkYuIzMzQ0MwMC4jMzNDQzMzLiMzM0NDNjYuIzMzQ0M5OS4jMzNDQ0NDLiMzM0NDRkYuIzY2MDBDQy4jNjYwMEZGLiM2NjMzQ0MuIzY2MzNGRi4jNjZDQzAwLiM2NkNDMzMuIzk5MDBDQy4jOTkwMEZGLiM5OTMzQ0MuIzk5MzNGRi4jOTlDQzAwLiM5OUNDMzMuI0NDMDAwMC4jQ0MwMDMzLiNDQzAwNjYuI0NDMDA5OS4jQ0MwMENDLiNDQzAwRkYuI0NDMzMwMC4jQ0MzMzMzLiNDQzMzNjYuI0NDMzM5OS4jQ0MzM0NDLiNDQzMzRkYuI0NDNjYwMC4jQ0M2NjMzLiNDQzk5MDAuI0NDOTkzMy4jQ0NDQzAwLiNDQ0NDMzMuI0ZGMDAwMC4jRkYwMDMzLiNGRjAwNjYuI0ZGMDA5OS4jRkYwMENDLiNGRjAwRkYuI0ZGMzMwMC4jRkYzMzMzLiNGRjMzNjYuI0ZGMzM5OS4jRkYzM0NDLiNGRjMzRkYuI0ZGNjYwMC4jRkY2NjMzLiNGRjk5MDAuI0ZGOTkzMy4jRkZDQzAwLiNGRkNDMzNgLnNwbGl0KGAuYCk7ZnVuY3Rpb24gbigpe2lmKHR5cGVvZiB3aW5kb3c8YHVgJiZ3aW5kb3cucHJvY2VzcyYmKHdpbmRvdy5wcm9jZXNzLnR5cGU9PT1gcmVuZGVyZXJgfHx3aW5kb3cucHJvY2Vzcy5fX253anMpKXJldHVybiEwO2lmKHR5cGVvZiBuYXZpZ2F0b3I8YHVgJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXC8oXGQrKS8pKXJldHVybiExO2xldCBlO3JldHVybiB0eXBlb2YgZG9jdW1lbnQ8YHVgJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2V8fHR5cGVvZiB3aW5kb3c8YHVgJiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHx0eXBlb2YgbmF2aWdhdG9yPGB1YCYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmKGU9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XC8oXGQrKS8pKSYmcGFyc2VJbnQoZVsxXSwxMCk+PTMxfHx0eXBlb2YgbmF2aWdhdG9yPGB1YCYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFwvKFxkKykvKX1mdW5jdGlvbiByKGUpe2lmKGVbMF09KHRoaXMudXNlQ29sb3JzP2AlY2A6YGApK3RoaXMubmFtZXNwYWNlKyh0aGlzLnVzZUNvbG9ycz9gICVjYDpgIGApK2VbMF0rKHRoaXMudXNlQ29sb3JzP2AlYyBgOmAgYCkrYCtgK3QuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpLCF0aGlzLnVzZUNvbG9ycylyZXR1cm47bGV0IG49YGNvbG9yOiBgK3RoaXMuY29sb3I7ZS5zcGxpY2UoMSwwLG4sYGNvbG9yOiBpbmhlcml0YCk7bGV0IHI9MCxpPTA7ZVswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csZT0+e2UhPT1gJSVgJiYocisrLGU9PT1gJWNgJiYoaT1yKSl9KSxlLnNwbGljZShpLDAsbil9ZS5sb2c9Y29uc29sZS5kZWJ1Z3x8Y29uc29sZS5sb2d8fCgoKT0+e30pO2Z1bmN0aW9uIGkodCl7dHJ5e3Q/ZS5zdG9yYWdlLnNldEl0ZW0oYGRlYnVnYCx0KTplLnN0b3JhZ2UucmVtb3ZlSXRlbShgZGVidWdgKX1jYXRjaHt9fWZ1bmN0aW9uIGEoKXtsZXQgdDt0cnl7dD1lLnN0b3JhZ2UuZ2V0SXRlbShgZGVidWdgKXx8ZS5zdG9yYWdlLmdldEl0ZW0oYERFQlVHYCl9Y2F0Y2h7fXJldHVybiF0JiZ0eXBlb2YgcHJvY2VzczxgdWAmJmBlbnZgaW4gcHJvY2VzcyYmKHQ9e30uREVCVUcpLHR9ZnVuY3Rpb24gbygpe3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlfWNhdGNoe319dC5leHBvcnRzPVRzKCkoZSk7dmFye2Zvcm1hdHRlcnM6c309dC5leHBvcnRzO3Muaj1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWNhdGNoKGUpe3JldHVybmBbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogYCtlLm1lc3NhZ2V9fX0pKSxEcz1zKChlPT57dmFyIHQ9ZSYmZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxlKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKHR5cGVvZiBuIT1gZnVuY3Rpb25gJiZuIT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoYENsYXNzIGV4dGVuZHMgdmFsdWUgYCtTdHJpbmcobikrYCBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsYCk7ZSh0LG4pO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9dC5wcm90b3R5cGU9bj09PW51bGw/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pLGUuY3JlYXRlRW1pdHRlcj1lLmNyZWF0ZUNhbGxiYWNrPWUuYm91bmQ9ZS5jcmVhdGVTb2NrZXRFcnJvcj1lLlNvY2tldEVycm9yPWUuZGVidWc9dm9pZCAwLGUuZGVidWc9bigpO2Z1bmN0aW9uIG4oKXt0cnl7cmV0dXJuIEVzKCkoYHNtYXJ0c3VwcDpjbGllbnRgKX1jYXRjaHtyZXR1cm4gZnVuY3Rpb24oKXt9fX12YXIgcj1mdW5jdGlvbihlKXt0KG4sZSk7ZnVuY3Rpb24gbih0LHIpe3ZhciBpPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoaSxuLnByb3RvdHlwZSksaS5uYW1lPWkuY29uc3RydWN0b3IubmFtZSxpLmNvZGU9ci5jb2RlLGkudHlwZT1yLnR5cGUsaS5ldmVudD1yLmV2ZW50LHImJnIuc3RhY2smJihpLnN0YWNrPWAke2kuc3RhY2t9CkNhdXNlZCBCeTogJHtyLnN0YWNrfWApLGl9cmV0dXJuIG59KEVycm9yKTtlLlNvY2tldEVycm9yPXI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbmV3IHIoZS5tZXNzYWdlLGUpfWUuY3JlYXRlU29ja2V0RXJyb3I9aTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Wy4uLmFyZ3VtZW50c107ZVt0XS5hcHBseShlLG4pfX1lLmJvdW5kPWE7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe24/dChpKG4pKTplKHIpfX1lLmNyZWF0ZUNhbGxiYWNrPW87ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbihuKXtlLmVtaXQodCxuKX19ZS5jcmVhdGVFbWl0dGVyPXN9KSksT3M9cygoKGUsdCk9Pnt2YXIgbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9YH5gO2Z1bmN0aW9uIGkoKXt9T2JqZWN0LmNyZWF0ZSYmKGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobnVsbCksbmV3IGkoKS5fX3Byb3RvX198fChyPSExKSk7ZnVuY3Rpb24gYShlLHQsbil7dGhpcy5mbj1lLHRoaXMuY29udGV4dD10LHRoaXMub25jZT1ufHwhMX1mdW5jdGlvbiBvKGUsdCxuLGksbyl7aWYodHlwZW9mIG4hPWBmdW5jdGlvbmApdGhyb3cgVHlwZUVycm9yKGBUaGUgbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uYCk7dmFyIHM9bmV3IGEobixpfHxlLG8pLGM9cj9yK3Q6dDtyZXR1cm4gZS5fZXZlbnRzW2NdP2UuX2V2ZW50c1tjXS5mbj9lLl9ldmVudHNbY109W2UuX2V2ZW50c1tjXSxzXTplLl9ldmVudHNbY10ucHVzaChzKTooZS5fZXZlbnRzW2NdPXMsZS5fZXZlbnRzQ291bnQrKyksZX1mdW5jdGlvbiBzKGUsdCl7LS1lLl9ldmVudHNDb3VudD09PTA/ZS5fZXZlbnRzPW5ldyBpOmRlbGV0ZSBlLl9ldmVudHNbdF19ZnVuY3Rpb24gYygpe3RoaXMuX2V2ZW50cz1uZXcgaSx0aGlzLl9ldmVudHNDb3VudD0wfWMucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LGk7aWYodGhpcy5fZXZlbnRzQ291bnQ9PT0wKXJldHVybiBlO2ZvcihpIGluIHQ9dGhpcy5fZXZlbnRzKW4uY2FsbCh0LGkpJiZlLnB1c2gocj9pLnNsaWNlKDEpOmkpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2UuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpOmV9LGMucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihlKXt2YXIgdD1yP3IrZTplLG49dGhpcy5fZXZlbnRzW3RdO2lmKCFuKXJldHVybltdO2lmKG4uZm4pcmV0dXJuW24uZm5dO2Zvcih2YXIgaT0wLGE9bi5sZW5ndGgsbz1BcnJheShhKTtpPGE7aSsrKW9baV09bltpXS5mbjtyZXR1cm4gb30sYy5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlKXt2YXIgdD1yP3IrZTplLG49dGhpcy5fZXZlbnRzW3RdO3JldHVybiBuP24uZm4/MTpuLmxlbmd0aDowfSxjLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUsdCxuLGksYSxvKXt2YXIgcz1yP3IrZTplO2lmKCF0aGlzLl9ldmVudHNbc10pcmV0dXJuITE7dmFyIGM9dGhpcy5fZXZlbnRzW3NdLGw9YXJndW1lbnRzLmxlbmd0aCx1LGQ7aWYoYy5mbil7c3dpdGNoKGMub25jZSYmdGhpcy5yZW1vdmVMaXN0ZW5lcihlLGMuZm4sdm9pZCAwLCEwKSxsKXtjYXNlIDE6cmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQpLCEwO2Nhc2UgMjpyZXR1cm4gYy5mbi5jYWxsKGMuY29udGV4dCx0KSwhMDtjYXNlIDM6cmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsdCxuKSwhMDtjYXNlIDQ6cmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsdCxuLGkpLCEwO2Nhc2UgNTpyZXR1cm4gYy5mbi5jYWxsKGMuY29udGV4dCx0LG4saSxhKSwhMDtjYXNlIDY6cmV0dXJuIGMuZm4uY2FsbChjLmNvbnRleHQsdCxuLGksYSxvKSwhMH1mb3IoZD0xLHU9QXJyYXkobC0xKTtkPGw7ZCsrKXVbZC0xXT1hcmd1bWVudHNbZF07Yy5mbi5hcHBseShjLmNvbnRleHQsdSl9ZWxzZXt2YXIgZj1jLmxlbmd0aCxwO2ZvcihkPTA7ZDxmO2QrKylzd2l0Y2goY1tkXS5vbmNlJiZ0aGlzLnJlbW92ZUxpc3RlbmVyKGUsY1tkXS5mbix2b2lkIDAsITApLGwpe2Nhc2UgMTpjW2RdLmZuLmNhbGwoY1tkXS5jb250ZXh0KTticmVhaztjYXNlIDI6Y1tkXS5mbi5jYWxsKGNbZF0uY29udGV4dCx0KTticmVhaztjYXNlIDM6Y1tkXS5mbi5jYWxsKGNbZF0uY29udGV4dCx0LG4pO2JyZWFrO2Nhc2UgNDpjW2RdLmZuLmNhbGwoY1tkXS5jb250ZXh0LHQsbixpKTticmVhaztkZWZhdWx0OmlmKCF1KWZvcihwPTEsdT1BcnJheShsLTEpO3A8bDtwKyspdVtwLTFdPWFyZ3VtZW50c1twXTtjW2RdLmZuLmFwcGx5KGNbZF0uY29udGV4dCx1KX19cmV0dXJuITB9LGMucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbyh0aGlzLGUsdCxuLCExKX0sYy5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG8odGhpcyxlLHQsbiwhMCl9LGMucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPXI/citlOmU7aWYoIXRoaXMuX2V2ZW50c1thXSlyZXR1cm4gdGhpcztpZighdClyZXR1cm4gcyh0aGlzLGEpLHRoaXM7dmFyIG89dGhpcy5fZXZlbnRzW2FdO2lmKG8uZm4pby5mbj09PXQmJighaXx8by5vbmNlKSYmKCFufHxvLmNvbnRleHQ9PT1uKSYmcyh0aGlzLGEpO2Vsc2V7Zm9yKHZhciBjPTAsbD1bXSx1PW8ubGVuZ3RoO2M8dTtjKyspKG9bY10uZm4hPT10fHxpJiYhb1tjXS5vbmNlfHxuJiZvW2NdLmNvbnRleHQhPT1uKSYmbC5wdXNoKG9bY10pO2wubGVuZ3RoP3RoaXMuX2V2ZW50c1thXT1sLmxlbmd0aD09PTE/bFswXTpsOnModGhpcyxhKX1yZXR1cm4gdGhpc30sYy5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBlPyh0PXI/citlOmUsdGhpcy5fZXZlbnRzW3RdJiZzKHRoaXMsdCkpOih0aGlzLl9ldmVudHM9bmV3IGksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpc30sYy5wcm90b3R5cGUub2ZmPWMucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLGMucHJvdG90eXBlLmFkZExpc3RlbmVyPWMucHJvdG90eXBlLm9uLGMucHJlZml4ZWQ9cixjLkV2ZW50RW1pdHRlcj1jLHQhPT12b2lkIDAmJih0LmV4cG9ydHM9Yyl9KSksa3M9cygoKGUsdCk9Pnt2YXIgbj0vXig/Oig/IVteOkBdKzpbXjpAXC9dKkApKGh0dHB8aHR0cHN8d3N8d3NzKTpcL1wvKT8oKD86KChbXjpAXSopKD86OihbXjpAXSopKT8pP0ApPygoPzpbYS1mMC05XXswLDR9Oil7Miw3fVthLWYwLTldezAsNH18W146XC8/I10qKSg/OjooXGQqKSk/KSgoKFwvKD86W14/I10oPyFbXj8jXC9dKlwuW14/I1wvLl0rKD86Wz8jXXwkKSkpKlwvPyk/KFtePyNcL10qKSkoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8pLyxyPVtgc291cmNlYCxgcHJvdG9jb2xgLGBhdXRob3JpdHlgLGB1c2VySW5mb2AsYHVzZXJgLGBwYXNzd29yZGAsYGhvc3RgLGBwb3J0YCxgcmVsYXRpdmVgLGBwYXRoYCxgZGlyZWN0b3J5YCxgZmlsZWAsYHF1ZXJ5YCxgYW5jaG9yYF07dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUsaT1lLmluZGV4T2YoYFtgKSxhPWUuaW5kZXhPZihgXWApO2khPS0xJiZhIT0tMSYmKGU9ZS5zdWJzdHJpbmcoMCxpKStlLnN1YnN0cmluZyhpLGEpLnJlcGxhY2UoLzovZyxgO2ApK2Uuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtmb3IodmFyIG89bi5leGVjKGV8fGBgKSxzPXt9LGM9MTQ7Yy0tOylzW3JbY11dPW9bY118fGBgO3JldHVybiBpIT0tMSYmYSE9LTEmJihzLnNvdXJjZT10LHMuaG9zdD1zLmhvc3Quc3Vic3RyaW5nKDEscy5ob3N0Lmxlbmd0aC0xKS5yZXBsYWNlKC87L2csYDpgKSxzLmF1dGhvcml0eT1zLmF1dGhvcml0eS5yZXBsYWNlKGBbYCxgYCkucmVwbGFjZShgXWAsYGApLnJlcGxhY2UoLzsvZyxgOmApLHMuaXB2NnVyaT0hMCksc319KSksQXM9cygoKGUsdCk9PntmdW5jdGlvbiBuKGUpe24uZGVidWc9bixuLmRlZmF1bHQ9bixuLmNvZXJjZT1sLG4uZGlzYWJsZT1vLG4uZW5hYmxlPWEsbi5lbmFibGVkPXMsbi5odW1hbml6ZT13cygpLE9iamVjdC5rZXlzKGUpLmZvckVhY2godD0+e25bdF09ZVt0XX0pLG4uaW5zdGFuY2VzPVtdLG4ubmFtZXM9W10sbi5za2lwcz1bXSxuLmZvcm1hdHRlcnM9e307ZnVuY3Rpb24gdChlKXtsZXQgdD0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQ9KHQ8PDUpLXQrZS5jaGFyQ29kZUF0KG4pLHR8PTA7cmV0dXJuIG4uY29sb3JzW01hdGguYWJzKHQpJW4uY29sb3JzLmxlbmd0aF19bi5zZWxlY3RDb2xvcj10O2Z1bmN0aW9uIG4oZSl7bGV0IGE7ZnVuY3Rpb24gbyguLi5lKXtpZighby5lbmFibGVkKXJldHVybjtsZXQgdD1vLHI9TnVtYmVyKG5ldyBEYXRlKTt0LmRpZmY9ci0oYXx8ciksdC5wcmV2PWEsdC5jdXJyPXIsYT1yLGVbMF09bi5jb2VyY2UoZVswXSksdHlwZW9mIGVbMF0hPWBzdHJpbmdgJiZlLnVuc2hpZnQoYCVPYCk7bGV0IGk9MDtlWzBdPWVbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csKHIsYSk9PntpZihyPT09YCUlYClyZXR1cm4gcjtpKys7bGV0IG89bi5mb3JtYXR0ZXJzW2FdO2lmKHR5cGVvZiBvPT1gZnVuY3Rpb25gKXtsZXQgbj1lW2ldO3I9by5jYWxsKHQsbiksZS5zcGxpY2UoaSwxKSxpLS19cmV0dXJuIHJ9KSxuLmZvcm1hdEFyZ3MuY2FsbCh0LGUpLCh0LmxvZ3x8bi5sb2cpLmFwcGx5KHQsZSl9cmV0dXJuIG8ubmFtZXNwYWNlPWUsby5lbmFibGVkPW4uZW5hYmxlZChlKSxvLnVzZUNvbG9ycz1uLnVzZUNvbG9ycygpLG8uY29sb3I9dChlKSxvLmRlc3Ryb3k9cixvLmV4dGVuZD1pLHR5cGVvZiBuLmluaXQ9PWBmdW5jdGlvbmAmJm4uaW5pdChvKSxuLmluc3RhbmNlcy5wdXNoKG8pLG99ZnVuY3Rpb24gcigpe2xldCBlPW4uaW5zdGFuY2VzLmluZGV4T2YodGhpcyk7cmV0dXJuIGU9PT0tMT8hMToobi5pbnN0YW5jZXMuc3BsaWNlKGUsMSksITApfWZ1bmN0aW9uIGkoZSx0KXtsZXQgcj1uKHRoaXMubmFtZXNwYWNlKyh0PT09dm9pZCAwP2A6YDp0KStlKTtyZXR1cm4gci5sb2c9dGhpcy5sb2cscn1mdW5jdGlvbiBhKGUpe24uc2F2ZShlKSxuLm5hbWVzPVtdLG4uc2tpcHM9W107bGV0IHQscj0odHlwZW9mIGU9PWBzdHJpbmdgP2U6YGApLnNwbGl0KC9bXHMsXSsvKSxpPXIubGVuZ3RoO2Zvcih0PTA7dDxpO3QrKylyW3RdJiYoZT1yW3RdLnJlcGxhY2UoL1wqL2csYC4qP2ApLGVbMF09PT1gLWA/bi5za2lwcy5wdXNoKFJlZ0V4cChgXmArZS5zdWJzdHIoMSkrYCRgKSk6bi5uYW1lcy5wdXNoKFJlZ0V4cChgXmArZStgJGApKSk7Zm9yKHQ9MDt0PG4uaW5zdGFuY2VzLmxlbmd0aDt0Kyspe2xldCBlPW4uaW5zdGFuY2VzW3RdO2UuZW5hYmxlZD1uLmVuYWJsZWQoZS5uYW1lc3BhY2UpfX1mdW5jdGlvbiBvKCl7bGV0IGU9Wy4uLm4ubmFtZXMubWFwKGMpLC4uLm4uc2tpcHMubWFwKGMpLm1hcChlPT5gLWArZSldLmpvaW4oYCxgKTtyZXR1cm4gbi5lbmFibGUoYGApLGV9ZnVuY3Rpb24gcyhlKXtpZihlW2UubGVuZ3RoLTFdPT09YCpgKXJldHVybiEwO2xldCB0LHI7Zm9yKHQ9MCxyPW4uc2tpcHMubGVuZ3RoO3Q8cjt0KyspaWYobi5za2lwc1t0XS50ZXN0KGUpKXJldHVybiExO2Zvcih0PTAscj1uLm5hbWVzLmxlbmd0aDt0PHI7dCsrKWlmKG4ubmFtZXNbdF0udGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBjKGUpe3JldHVybiBlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIsZS50b1N0cmluZygpLmxlbmd0aC0yKS5yZXBsYWNlKC9cLlwqXD8kLyxgKmApfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrfHxlLm1lc3NhZ2U6ZX1yZXR1cm4gbi5lbmFibGUobi5sb2FkKCkpLG59dC5leHBvcnRzPW59KSksanM9cygoKGUsdCk9PntlLmxvZz1pLGUuZm9ybWF0QXJncz1yLGUuc2F2ZT1hLGUubG9hZD1vLGUudXNlQ29sb3JzPW4sZS5zdG9yYWdlPXMoKSxlLmNvbG9ycz1gIzAwMDBDQy4jMDAwMEZGLiMwMDMzQ0MuIzAwMzNGRi4jMDA2NkNDLiMwMDY2RkYuIzAwOTlDQy4jMDA5OUZGLiMwMENDMDAuIzAwQ0MzMy4jMDBDQzY2LiMwMENDOTkuIzAwQ0NDQy4jMDBDQ0ZGLiMzMzAwQ0MuIzMzMDBGRi4jMzMzM0NDLiMzMzMzRkYuIzMzNjZDQy4jMzM2NkZGLiMzMzk5Q0MuIzMzOTlGRi4jMzNDQzAwLiMzM0NDMzMuIzMzQ0M2Ni4jMzNDQzk5LiMzM0NDQ0MuIzMzQ0NGRi4jNjYwMENDLiM2NjAwRkYuIzY2MzNDQy4jNjYzM0ZGLiM2NkNDMDAuIzY2Q0MzMy4jOTkwMENDLiM5OTAwRkYuIzk5MzNDQy4jOTkzM0ZGLiM5OUNDMDAuIzk5Q0MzMy4jQ0MwMDAwLiNDQzAwMzMuI0NDMDA2Ni4jQ0MwMDk5LiNDQzAwQ0MuI0NDMDBGRi4jQ0MzMzAwLiNDQzMzMzMuI0NDMzM2Ni4jQ0MzMzk5LiNDQzMzQ0MuI0NDMzNGRi4jQ0M2NjAwLiNDQzY2MzMuI0NDOTkwMC4jQ0M5OTMzLiNDQ0NDMDAuI0NDQ0MzMy4jRkYwMDAwLiNGRjAwMzMuI0ZGMDA2Ni4jRkYwMDk5LiNGRjAwQ0MuI0ZGMDBGRi4jRkYzMzAwLiNGRjMzMzMuI0ZGMzM2Ni4jRkYzMzk5LiNGRjMzQ0MuI0ZGMzNGRi4jRkY2NjAwLiNGRjY2MzMuI0ZGOTkwMC4jRkY5OTMzLiNGRkNDMDAuI0ZGQ0MzM2Auc3BsaXQoYC5gKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8YHVgJiZ3aW5kb3cucHJvY2VzcyYmKHdpbmRvdy5wcm9jZXNzLnR5cGU9PT1gcmVuZGVyZXJgfHx3aW5kb3cucHJvY2Vzcy5fX253anMpPyEwOnR5cGVvZiBuYXZpZ2F0b3I8YHVgJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXC8oXGQrKS8pPyExOnR5cGVvZiBkb2N1bWVudDxgdWAmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZXx8dHlwZW9mIHdpbmRvdzxgdWAmJndpbmRvdy5jb25zb2xlJiYod2luZG93LmNvbnNvbGUuZmlyZWJ1Z3x8d2luZG93LmNvbnNvbGUuZXhjZXB0aW9uJiZ3aW5kb3cuY29uc29sZS50YWJsZSl8fHR5cGVvZiBuYXZpZ2F0b3I8YHVgJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcLyhcZCspLykmJnBhcnNlSW50KFJlZ0V4cC4kMSwxMCk+PTMxfHx0eXBlb2YgbmF2aWdhdG9yPGB1YCYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFwvKFxkKykvKX1mdW5jdGlvbiByKGUpe2lmKGVbMF09KHRoaXMudXNlQ29sb3JzP2AlY2A6YGApK3RoaXMubmFtZXNwYWNlKyh0aGlzLnVzZUNvbG9ycz9gICVjYDpgIGApK2VbMF0rKHRoaXMudXNlQ29sb3JzP2AlYyBgOmAgYCkrYCtgK3QuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpLCF0aGlzLnVzZUNvbG9ycylyZXR1cm47bGV0IG49YGNvbG9yOiBgK3RoaXMuY29sb3I7ZS5zcGxpY2UoMSwwLG4sYGNvbG9yOiBpbmhlcml0YCk7bGV0IHI9MCxpPTA7ZVswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csZT0+e2UhPT1gJSVgJiYocisrLGU9PT1gJWNgJiYoaT1yKSl9KSxlLnNwbGljZShpLDAsbil9ZnVuY3Rpb24gaSguLi5lKXtyZXR1cm4gdHlwZW9mIGNvbnNvbGU9PWBvYmplY3RgJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coLi4uZSl9ZnVuY3Rpb24gYSh0KXt0cnl7dD9lLnN0b3JhZ2Uuc2V0SXRlbShgZGVidWdgLHQpOmUuc3RvcmFnZS5yZW1vdmVJdGVtKGBkZWJ1Z2ApfWNhdGNoe319ZnVuY3Rpb24gbygpe2xldCB0O3RyeXt0PWUuc3RvcmFnZS5nZXRJdGVtKGBkZWJ1Z2ApfWNhdGNoe31yZXR1cm4hdCYmdHlwZW9mIHByb2Nlc3M8YHVgJiZgZW52YGluIHByb2Nlc3MmJih0PXt9LkRFQlVHKSx0fWZ1bmN0aW9uIHMoKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZX1jYXRjaHt9fXQuZXhwb3J0cz1BcygpKGUpO3Zhcntmb3JtYXR0ZXJzOmN9PXQuZXhwb3J0cztjLmo9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1jYXRjaChlKXtyZXR1cm5gW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06IGArZS5tZXNzYWdlfX19KSksTXM9cygoKGUsdCk9Pnt2YXIgbj1rcygpLHI9anMoKShgc29ja2V0LmlvLWNsaWVudDp1cmxgKTt0LmV4cG9ydHM9aTtmdW5jdGlvbiBpKGUsdCl7dmFyIGk9ZTt0fHw9dHlwZW9mIGxvY2F0aW9uPGB1YCYmbG9jYXRpb24sZT8/PXQucHJvdG9jb2wrYC8vYCt0Lmhvc3QsdHlwZW9mIGU9PWBzdHJpbmdgJiYoZS5jaGFyQXQoMCk9PT1gL2AmJihlPWUuY2hhckF0KDEpPT09YC9gP3QucHJvdG9jb2wrZTp0Lmhvc3QrZSksL14oaHR0cHM/fHdzcz8pOlwvXC8vLnRlc3QoZSl8fChyKGBwcm90b2NvbC1sZXNzIHVybCAlc2AsZSksZT10PT09dm9pZCAwP2BodHRwczovL2ArZTp0LnByb3RvY29sK2AvL2ArZSkscihgcGFyc2UgJXNgLGUpLGk9bihlKSksaS5wb3J0fHwoL14oaHR0cHx3cykkLy50ZXN0KGkucHJvdG9jb2wpP2kucG9ydD1gODBgOi9eKGh0dHB8d3MpcyQvLnRlc3QoaS5wcm90b2NvbCkmJihpLnBvcnQ9YDQ0M2ApKSxpLnBhdGg9aS5wYXRofHxgL2A7dmFyIGE9aS5ob3N0LmluZGV4T2YoYDpgKT09PS0xP2kuaG9zdDpgW2AraS5ob3N0K2BdYDtyZXR1cm4gaS5pZD1pLnByb3RvY29sK2A6Ly9gK2ErYDpgK2kucG9ydCxpLmhyZWY9aS5wcm90b2NvbCtgOi8vYCthKyh0JiZ0LnBvcnQ9PT1pLnBvcnQ/YGA6YDpgK2kucG9ydCksaX19KSksTnM9cygoKGUsdCk9Pnt2YXIgbj0xZTMscj1uKjYwLGk9cio2MCxhPWkqMjQsbz1hKjM2NS4yNTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0fHw9e307dmFyIG49dHlwZW9mIGU7aWYobj09PWBzdHJpbmdgJiZlLmxlbmd0aD4wKXJldHVybiBzKGUpO2lmKG49PT1gbnVtYmVyYCYmaXNOYU4oZSk9PT0hMSlyZXR1cm4gdC5sb25nP2woZSk6YyhlKTt0aHJvdyBFcnJvcihgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD1gK0pTT04uc3RyaW5naWZ5KGUpKX07ZnVuY3Rpb24gcyhlKXtpZihlPVN0cmluZyhlKSwhKGUubGVuZ3RoPjEwMCkpe3ZhciB0PS9eKCg/OlxkKyk/XC4/XGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoZSk7aWYodCl7dmFyIHM9cGFyc2VGbG9hdCh0WzFdKTtzd2l0Y2goKHRbMl18fGBtc2ApLnRvTG93ZXJDYXNlKCkpe2Nhc2VgeWVhcnNgOmNhc2VgeWVhcmA6Y2FzZWB5cnNgOmNhc2VgeXJgOmNhc2VgeWA6cmV0dXJuIHMqbztjYXNlYGRheXNgOmNhc2VgZGF5YDpjYXNlYGRgOnJldHVybiBzKmE7Y2FzZWBob3Vyc2A6Y2FzZWBob3VyYDpjYXNlYGhyc2A6Y2FzZWBocmA6Y2FzZWBoYDpyZXR1cm4gcyppO2Nhc2VgbWludXRlc2A6Y2FzZWBtaW51dGVgOmNhc2VgbWluc2A6Y2FzZWBtaW5gOmNhc2VgbWA6cmV0dXJuIHMqcjtjYXNlYHNlY29uZHNgOmNhc2Vgc2Vjb25kYDpjYXNlYHNlY3NgOmNhc2Vgc2VjYDpjYXNlYHNgOnJldHVybiBzKm47Y2FzZWBtaWxsaXNlY29uZHNgOmNhc2VgbWlsbGlzZWNvbmRgOmNhc2VgbXNlY3NgOmNhc2VgbXNlY2A6Y2FzZWBtc2A6cmV0dXJuIHM7ZGVmYXVsdDpyZXR1cm59fX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZT49YT9NYXRoLnJvdW5kKGUvYSkrYGRgOmU+PWk/TWF0aC5yb3VuZChlL2kpK2BoYDplPj1yP01hdGgucm91bmQoZS9yKStgbWA6ZT49bj9NYXRoLnJvdW5kKGUvbikrYHNgOmUrYG1zYH1mdW5jdGlvbiBsKGUpe3JldHVybiB1KGUsYSxgZGF5YCl8fHUoZSxpLGBob3VyYCl8fHUoZSxyLGBtaW51dGVgKXx8dShlLG4sYHNlY29uZGApfHxlK2AgbXNgfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKCEoZTx0KSlyZXR1cm4gZTx0KjEuNT9NYXRoLmZsb29yKGUvdCkrYCBgK246TWF0aC5jZWlsKGUvdCkrYCBgK24rYHNgfX0pKSxQcz1zKCgoZSx0KT0+e2U9dC5leHBvcnRzPXIuZGVidWc9ci5kZWZhdWx0PXIsZS5jb2VyY2U9YyxlLmRpc2FibGU9byxlLmVuYWJsZT1hLGUuZW5hYmxlZD1zLGUuaHVtYW5pemU9TnMoKSxlLmluc3RhbmNlcz1bXSxlLm5hbWVzPVtdLGUuc2tpcHM9W10sZS5mb3JtYXR0ZXJzPXt9O2Z1bmN0aW9uIG4odCl7dmFyIG49MCxyO2ZvcihyIGluIHQpbj0objw8NSktbit0LmNoYXJDb2RlQXQociksbnw9MDtyZXR1cm4gZS5jb2xvcnNbTWF0aC5hYnMobiklZS5jb2xvcnMubGVuZ3RoXX1mdW5jdGlvbiByKHQpe3ZhciByO2Z1bmN0aW9uIGEoKXtpZihhLmVuYWJsZWQpe3ZhciB0PWEsbj0rbmV3IERhdGU7dC5kaWZmPW4tKHJ8fG4pLHQucHJldj1yLHQuY3Vycj1uLHI9bjtmb3IodmFyIGk9QXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbz0wO288aS5sZW5ndGg7bysrKWlbb109YXJndW1lbnRzW29dO2lbMF09ZS5jb2VyY2UoaVswXSksdHlwZW9mIGlbMF0hPWBzdHJpbmdgJiZpLnVuc2hpZnQoYCVPYCk7dmFyIHM9MDtpWzBdPWlbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csZnVuY3Rpb24obixyKXtpZihuPT09YCUlYClyZXR1cm4gbjtzKys7dmFyIGE9ZS5mb3JtYXR0ZXJzW3JdO2lmKHR5cGVvZiBhPT1gZnVuY3Rpb25gKXt2YXIgbz1pW3NdO249YS5jYWxsKHQsbyksaS5zcGxpY2UocywxKSxzLS19cmV0dXJuIG59KSxlLmZvcm1hdEFyZ3MuY2FsbCh0LGkpLChhLmxvZ3x8ZS5sb2d8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSkpLmFwcGx5KHQsaSl9fXJldHVybiBhLm5hbWVzcGFjZT10LGEuZW5hYmxlZD1lLmVuYWJsZWQodCksYS51c2VDb2xvcnM9ZS51c2VDb2xvcnMoKSxhLmNvbG9yPW4odCksYS5kZXN0cm95PWksdHlwZW9mIGUuaW5pdD09YGZ1bmN0aW9uYCYmZS5pbml0KGEpLGUuaW5zdGFuY2VzLnB1c2goYSksYX1mdW5jdGlvbiBpKCl7dmFyIHQ9ZS5pbnN0YW5jZXMuaW5kZXhPZih0aGlzKTtyZXR1cm4gdD09PS0xPyExOihlLmluc3RhbmNlcy5zcGxpY2UodCwxKSwhMCl9ZnVuY3Rpb24gYSh0KXtlLnNhdmUodCksZS5uYW1lcz1bXSxlLnNraXBzPVtdO3ZhciBuLHI9KHR5cGVvZiB0PT1gc3RyaW5nYD90OmBgKS5zcGxpdCgvW1xzLF0rLyksaT1yLmxlbmd0aDtmb3Iobj0wO248aTtuKyspcltuXSYmKHQ9cltuXS5yZXBsYWNlKC9cKi9nLGAuKj9gKSx0WzBdPT09YC1gP2Uuc2tpcHMucHVzaChSZWdFeHAoYF5gK3Quc3Vic3RyKDEpK2AkYCkpOmUubmFtZXMucHVzaChSZWdFeHAoYF5gK3QrYCRgKSkpO2ZvcihuPTA7bjxlLmluc3RhbmNlcy5sZW5ndGg7bisrKXt2YXIgYT1lLmluc3RhbmNlc1tuXTthLmVuYWJsZWQ9ZS5lbmFibGVkKGEubmFtZXNwYWNlKX19ZnVuY3Rpb24gbygpe2UuZW5hYmxlKGBgKX1mdW5jdGlvbiBzKHQpe2lmKHRbdC5sZW5ndGgtMV09PT1gKmApcmV0dXJuITA7dmFyIG4scjtmb3Iobj0wLHI9ZS5za2lwcy5sZW5ndGg7bjxyO24rKylpZihlLnNraXBzW25dLnRlc3QodCkpcmV0dXJuITE7Zm9yKG49MCxyPWUubmFtZXMubGVuZ3RoO248cjtuKyspaWYoZS5uYW1lc1tuXS50ZXN0KHQpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrfHxlLm1lc3NhZ2U6ZX19KSksRnM9cygoKGUsdCk9PntlPXQuZXhwb3J0cz1QcygpLGUubG9nPWksZS5mb3JtYXRBcmdzPXIsZS5zYXZlPWEsZS5sb2FkPW8sZS51c2VDb2xvcnM9bixlLnN0b3JhZ2U9dHlwZW9mIGNocm9tZTxgdWAmJmNocm9tZS5zdG9yYWdlIT09dm9pZCAwP2Nocm9tZS5zdG9yYWdlLmxvY2FsOnMoKSxlLmNvbG9ycz1gIzAwMDBDQy4jMDAwMEZGLiMwMDMzQ0MuIzAwMzNGRi4jMDA2NkNDLiMwMDY2RkYuIzAwOTlDQy4jMDA5OUZGLiMwMENDMDAuIzAwQ0MzMy4jMDBDQzY2LiMwMENDOTkuIzAwQ0NDQy4jMDBDQ0ZGLiMzMzAwQ0MuIzMzMDBGRi4jMzMzM0NDLiMzMzMzRkYuIzMzNjZDQy4jMzM2NkZGLiMzMzk5Q0MuIzMzOTlGRi4jMzNDQzAwLiMzM0NDMzMuIzMzQ0M2Ni4jMzNDQzk5LiMzM0NDQ0MuIzMzQ0NGRi4jNjYwMENDLiM2NjAwRkYuIzY2MzNDQy4jNjYzM0ZGLiM2NkNDMDAuIzY2Q0MzMy4jOTkwMENDLiM5OTAwRkYuIzk5MzNDQy4jOTkzM0ZGLiM5OUNDMDAuIzk5Q0MzMy4jQ0MwMDAwLiNDQzAwMzMuI0NDMDA2Ni4jQ0MwMDk5LiNDQzAwQ0MuI0NDMDBGRi4jQ0MzMzAwLiNDQzMzMzMuI0NDMzM2Ni4jQ0MzMzk5LiNDQzMzQ0MuI0NDMzNGRi4jQ0M2NjAwLiNDQzY2MzMuI0NDOTkwMC4jQ0M5OTMzLiNDQ0NDMDAuI0NDQ0MzMy4jRkYwMDAwLiNGRjAwMzMuI0ZGMDA2Ni4jRkYwMDk5LiNGRjAwQ0MuI0ZGMDBGRi4jRkYzMzAwLiNGRjMzMzMuI0ZGMzM2Ni4jRkYzMzk5LiNGRjMzQ0MuI0ZGMzNGRi4jRkY2NjAwLiNGRjY2MzMuI0ZGOTkwMC4jRkY5OTMzLiNGRkNDMDAuI0ZGQ0MzM2Auc3BsaXQoYC5gKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8YHVgJiZ3aW5kb3cucHJvY2VzcyYmd2luZG93LnByb2Nlc3MudHlwZT09PWByZW5kZXJlcmA/ITA6dHlwZW9mIG5hdmlnYXRvcjxgdWAmJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcLyhcZCspLyk/ITE6dHlwZW9mIGRvY3VtZW50PGB1YCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlfHx0eXBlb2Ygd2luZG93PGB1YCYmd2luZG93LmNvbnNvbGUmJih3aW5kb3cuY29uc29sZS5maXJlYnVnfHx3aW5kb3cuY29uc29sZS5leGNlcHRpb24mJndpbmRvdy5jb25zb2xlLnRhYmxlKXx8dHlwZW9mIG5hdmlnYXRvcjxgdWAmJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFwvKFxkKykvKSYmcGFyc2VJbnQoUmVnRXhwLiQxLDEwKT49MzF8fHR5cGVvZiBuYXZpZ2F0b3I8YHVgJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XC8oXGQrKS8pfWUuZm9ybWF0dGVycy5qPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2goZSl7cmV0dXJuYFtVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiBgK2UubWVzc2FnZX19O2Z1bmN0aW9uIHIodCl7dmFyIG49dGhpcy51c2VDb2xvcnM7aWYodFswXT0obj9gJWNgOmBgKSt0aGlzLm5hbWVzcGFjZSsobj9gICVjYDpgIGApK3RbMF0rKG4/YCVjIGA6YCBgKStgK2ArZS5odW1hbml6ZSh0aGlzLmRpZmYpLG4pe3ZhciByPWBjb2xvcjogYCt0aGlzLmNvbG9yO3Quc3BsaWNlKDEsMCxyLGBjb2xvcjogaW5oZXJpdGApO3ZhciBpPTAsYT0wO3RbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLGZ1bmN0aW9uKGUpe2UhPT1gJSVgJiYoaSsrLGU9PT1gJWNgJiYoYT1pKSl9KSx0LnNwbGljZShhLDAscil9fWZ1bmN0aW9uIGkoKXtyZXR1cm4gdHlwZW9mIGNvbnNvbGU9PWBvYmplY3RgJiZjb25zb2xlLmxvZyYmRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZS5sb2csY29uc29sZSxhcmd1bWVudHMpfWZ1bmN0aW9uIGEodCl7dHJ5e3Q9PW51bGw/ZS5zdG9yYWdlLnJlbW92ZUl0ZW0oYGRlYnVnYCk6ZS5zdG9yYWdlLmRlYnVnPXR9Y2F0Y2h7fX1mdW5jdGlvbiBvKCl7dmFyIHQ7dHJ5e3Q9ZS5zdG9yYWdlLmRlYnVnfWNhdGNoe31yZXR1cm4hdCYmdHlwZW9mIHByb2Nlc3M8YHVgJiZgZW52YGluIHByb2Nlc3MmJih0PXt9LkRFQlVHKSx0fWUuZW5hYmxlKG8oKSk7ZnVuY3Rpb24gcygpe3RyeXtyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZX1jYXRjaHt9fX0pKSxJcz1zKCgoZSx0KT0+e3QhPT12b2lkIDAmJih0LmV4cG9ydHM9bik7ZnVuY3Rpb24gbihlKXtpZihlKXJldHVybiByKGUpfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0IGluIG4ucHJvdG90eXBlKWVbdF09bi5wcm90b3R5cGVbdF07cmV0dXJuIGV9bi5wcm90b3R5cGUub249bi5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSwodGhpcy5fY2FsbGJhY2tzW2AkYCtlXT10aGlzLl9jYWxsYmFja3NbYCRgK2VdfHxbXSkucHVzaCh0KSx0aGlzfSxuLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3RoaXMub2ZmKGUsbiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG4uZm49dCx0aGlzLm9uKGUsbiksdGhpc30sbi5wcm90b3R5cGUub2ZmPW4ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPW4ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1uLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sYXJndW1lbnRzLmxlbmd0aD09MClyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXt9LHRoaXM7dmFyIG49dGhpcy5fY2FsbGJhY2tzW2AkYCtlXTtpZighbilyZXR1cm4gdGhpcztpZihhcmd1bWVudHMubGVuZ3RoPT0xKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2AkYCtlXSx0aGlzO2Zvcih2YXIgcixpPTA7aTxuLmxlbmd0aDtpKyspaWYocj1uW2ldLHI9PT10fHxyLmZuPT09dCl7bi5zcGxpY2UoaSwxKTticmVha31yZXR1cm4gbi5sZW5ndGg9PT0wJiZkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2AkYCtlXSx0aGlzfSxuLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O2Zvcih2YXIgdD1BcnJheShhcmd1bWVudHMubGVuZ3RoLTEpLG49dGhpcy5fY2FsbGJhY2tzW2AkYCtlXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO2lmKG4pe249bi5zbGljZSgwKTtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTsrK3IpbltyXS5hcHBseSh0aGlzLHQpfXJldHVybiB0aGlzfSxuLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LHRoaXMuX2NhbGxiYWNrc1tgJGArZV18fFtdfSxuLnByb3RvdHlwZS5oYXNMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmxpc3RlbmVycyhlKS5sZW5ndGh9fSkpLExzPXMoKChlLHQpPT57dmFyIG49e30udG9TdHJpbmc7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBuLmNhbGwoZSk9PWBbb2JqZWN0IEFycmF5XWB9fSkpLFJzPXMoKChlLHQpPT57dC5leHBvcnRzPWE7dmFyIG49dHlwZW9mIEJ1ZmZlcj09YGZ1bmN0aW9uYCYmdHlwZW9mIEJ1ZmZlci5pc0J1ZmZlcj09YGZ1bmN0aW9uYCxyPXR5cGVvZiBBcnJheUJ1ZmZlcj09YGZ1bmN0aW9uYCxpPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3PT1gZnVuY3Rpb25gP0FycmF5QnVmZmVyLmlzVmlldyhlKTplLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfTtmdW5jdGlvbiBhKGUpe3JldHVybiBuJiZCdWZmZXIuaXNCdWZmZXIoZSl8fHImJihlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fGkoZSkpfX0pKSx6cz1zKChlPT57dmFyIHQ9THMoKSxuPVJzKCkscj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGk9dHlwZW9mIEJsb2I9PWBmdW5jdGlvbmB8fHR5cGVvZiBCbG9iPGB1YCYmci5jYWxsKEJsb2IpPT09YFtvYmplY3QgQmxvYkNvbnN0cnVjdG9yXWAsYT10eXBlb2YgRmlsZT09YGZ1bmN0aW9uYHx8dHlwZW9mIEZpbGU8YHVgJiZyLmNhbGwoRmlsZSk9PT1gW29iamVjdCBGaWxlQ29uc3RydWN0b3JdYDtlLmRlY29uc3RydWN0UGFja2V0PWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZS5kYXRhLHI9ZTtyZXR1cm4gci5kYXRhPW8obix0KSxyLmF0dGFjaG1lbnRzPXQubGVuZ3RoLHtwYWNrZXQ6cixidWZmZXJzOnR9fTtmdW5jdGlvbiBvKGUscil7aWYoIWUpcmV0dXJuIGU7aWYobihlKSl7dmFyIGk9e19wbGFjZWhvbGRlcjohMCxudW06ci5sZW5ndGh9O3JldHVybiByLnB1c2goZSksaX1lbHNlIGlmKHQoZSkpe2Zvcih2YXIgYT1BcnJheShlLmxlbmd0aCkscz0wO3M8ZS5sZW5ndGg7cysrKWFbc109byhlW3NdLHIpO3JldHVybiBhfWVsc2UgaWYodHlwZW9mIGU9PWBvYmplY3RgJiYhKGUgaW5zdGFuY2VvZiBEYXRlKSl7dmFyIGE9e307Zm9yKHZhciBjIGluIGUpYVtjXT1vKGVbY10scik7cmV0dXJuIGF9cmV0dXJuIGV9ZS5yZWNvbnN0cnVjdFBhY2tldD1mdW5jdGlvbihlLHQpe3JldHVybiBlLmRhdGE9cyhlLmRhdGEsdCksZS5hdHRhY2htZW50cz12b2lkIDAsZX07ZnVuY3Rpb24gcyhlLG4pe2lmKCFlKXJldHVybiBlO2lmKGUmJmUuX3BsYWNlaG9sZGVyPT09ITApe2lmKHR5cGVvZiBlLm51bT09YG51bWJlcmAmJmUubnVtPj0wJiZlLm51bTxuLmxlbmd0aClyZXR1cm4gbltlLm51bV07dGhyb3cgRXJyb3IoYGlsbGVnYWwgYXR0YWNobWVudHNgKX1lbHNlIGlmKHQoZSkpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXT1zKGVbcl0sbik7ZWxzZSBpZih0eXBlb2YgZT09YG9iamVjdGApZm9yKHZhciBpIGluIGUpZVtpXT1zKGVbaV0sbik7cmV0dXJuIGV9ZS5yZW1vdmVCbG9icz1mdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG8oZSxsLHUpe2lmKCFlKXJldHVybiBlO2lmKGkmJmUgaW5zdGFuY2VvZiBCbG9ifHxhJiZlIGluc3RhbmNlb2YgRmlsZSl7cysrO3ZhciBkPW5ldyBGaWxlUmVhZGVyO2Qub25sb2FkPWZ1bmN0aW9uKCl7dT91W2xdPXRoaXMucmVzdWx0OmM9dGhpcy5yZXN1bHQsLS1zfHxyKGMpfSxkLnJlYWRBc0FycmF5QnVmZmVyKGUpfWVsc2UgaWYodChlKSlmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKylvKGVbZl0sZixlKTtlbHNlIGlmKHR5cGVvZiBlPT1gb2JqZWN0YCYmIW4oZSkpZm9yKHZhciBwIGluIGUpbyhlW3BdLHAsZSl9dmFyIHM9MCxjPWU7byhjKSxzfHxyKGMpfX0pKSxCcz1zKChlPT57dmFyIHQ9RnMoKShgc29ja2V0LmlvLXBhcnNlcmApLG49SXMoKSxyPXpzKCksaT1McygpLGE9UnMoKTtlLnByb3RvY29sPTQsZS50eXBlcz1bYENPTk5FQ1RgLGBESVNDT05ORUNUYCxgRVZFTlRgLGBBQ0tgLGBFUlJPUmAsYEJJTkFSWV9FVkVOVGAsYEJJTkFSWV9BQ0tgXSxlLkNPTk5FQ1Q9MCxlLkRJU0NPTk5FQ1Q9MSxlLkVWRU5UPTIsZS5BQ0s9MyxlLkVSUk9SPTQsZS5CSU5BUllfRVZFTlQ9NSxlLkJJTkFSWV9BQ0s9NixlLkVuY29kZXI9byxlLkRlY29kZXI9ZDtmdW5jdGlvbiBvKCl7fXZhciBzPWUuRVJST1IrYCJlbmNvZGUgZXJyb3IiYDtvLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24obixyKXt0KGBlbmNvZGluZyBwYWNrZXQgJWpgLG4pLGUuQklOQVJZX0VWRU5UPT09bi50eXBlfHxlLkJJTkFSWV9BQ0s9PT1uLnR5cGU/dShuLHIpOnIoW2MobildKX07ZnVuY3Rpb24gYyhuKXt2YXIgcj1gYCtuLnR5cGU7aWYoKGUuQklOQVJZX0VWRU5UPT09bi50eXBlfHxlLkJJTkFSWV9BQ0s9PT1uLnR5cGUpJiYocis9bi5hdHRhY2htZW50cytgLWApLG4ubnNwJiZuLm5zcCE9PWAvYCYmKHIrPW4ubnNwK2AsYCksbi5pZCE9bnVsbCYmKHIrPW4uaWQpLG4uZGF0YSE9bnVsbCl7dmFyIGk9bChuLmRhdGEpO2lmKGkhPT0hMSlyKz1pO2Vsc2UgcmV0dXJuIHN9cmV0dXJuIHQoYGVuY29kZWQgJWogYXMgJXNgLG4scikscn1mdW5jdGlvbiBsKGUpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHUoZSx0KXtmdW5jdGlvbiBuKGUpe3ZhciBuPXIuZGVjb25zdHJ1Y3RQYWNrZXQoZSksaT1jKG4ucGFja2V0KSxhPW4uYnVmZmVyczthLnVuc2hpZnQoaSksdChhKX1yLnJlbW92ZUJsb2JzKGUsbil9ZnVuY3Rpb24gZCgpe3RoaXMucmVjb25zdHJ1Y3Rvcj1udWxsfW4oZC5wcm90b3R5cGUpLGQucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXt2YXIgbjtpZih0eXBlb2YgdD09YHN0cmluZ2Ape2lmKHRoaXMucmVjb25zdHJ1Y3Rvcil0aHJvdyBFcnJvcihgZ290IHBsYWludGV4dCBkYXRhIHdoZW4gcmVjb25zdHJ1Y3RpbmcgYSBwYWNrZXRgKTtuPWYodCksZS5CSU5BUllfRVZFTlQ9PT1uLnR5cGV8fGUuQklOQVJZX0FDSz09PW4udHlwZT8odGhpcy5yZWNvbnN0cnVjdG9yPW5ldyBtKG4pLHRoaXMucmVjb25zdHJ1Y3Rvci5yZWNvblBhY2suYXR0YWNobWVudHM9PT0wJiZ0aGlzLmVtaXQoYGRlY29kZWRgLG4pKTp0aGlzLmVtaXQoYGRlY29kZWRgLG4pfWVsc2UgaWYoYSh0KXx8dC5iYXNlNjQpaWYodGhpcy5yZWNvbnN0cnVjdG9yKW49dGhpcy5yZWNvbnN0cnVjdG9yLnRha2VCaW5hcnlEYXRhKHQpLG4mJih0aGlzLnJlY29uc3RydWN0b3I9bnVsbCx0aGlzLmVtaXQoYGRlY29kZWRgLG4pKTtlbHNlIHRocm93IEVycm9yKGBnb3QgYmluYXJ5IGRhdGEgd2hlbiBub3QgcmVjb25zdHJ1Y3RpbmcgYSBwYWNrZXRgKTtlbHNlIHRocm93IEVycm9yKGBVbmtub3duIHR5cGU6IGArdCl9O2Z1bmN0aW9uIGYobil7dmFyIHI9MCxhPXt0eXBlOk51bWJlcihuLmNoYXJBdCgwKSl9O2lmKGUudHlwZXNbYS50eXBlXT09bnVsbClyZXR1cm4gaChgdW5rbm93biBwYWNrZXQgdHlwZSBgK2EudHlwZSk7aWYoZS5CSU5BUllfRVZFTlQ9PT1hLnR5cGV8fGUuQklOQVJZX0FDSz09PWEudHlwZSl7Zm9yKHZhciBvPXIrMTtuLmNoYXJBdCgrK3IpIT09YC1gJiZyIT1uLmxlbmd0aDspO3ZhciBzPW4uc3Vic3RyaW5nKG8scik7aWYocyE9TnVtYmVyKHMpfHxuLmNoYXJBdChyKSE9PWAtYCl0aHJvdyBFcnJvcihgSWxsZWdhbCBhdHRhY2htZW50c2ApO2EuYXR0YWNobWVudHM9TnVtYmVyKHMpfWlmKG4uY2hhckF0KHIrMSk9PT1gL2Ape2Zvcih2YXIgbz1yKzE7KytyOyl7dmFyIGM9bi5jaGFyQXQocik7aWYoYz09PWAsYHx8cj09PW4ubGVuZ3RoKWJyZWFrfWEubnNwPW4uc3Vic3RyaW5nKG8scil9ZWxzZSBhLm5zcD1gL2A7dmFyIGw9bi5jaGFyQXQocisxKTtpZihsIT09YGAmJk51bWJlcihsKT09bCl7Zm9yKHZhciBvPXIrMTsrK3I7KXt2YXIgYz1uLmNoYXJBdChyKTtpZihjPT1udWxsfHxOdW1iZXIoYykhPWMpey0tcjticmVha31pZihyPT09bi5sZW5ndGgpYnJlYWt9YS5pZD1OdW1iZXIobi5zdWJzdHJpbmcobyxyKzEpKX1pZihuLmNoYXJBdCgrK3IpKXt2YXIgdT1wKG4uc3Vic3RyKHIpKTtpZih1IT09ITEmJihhLnR5cGU9PT1lLkVSUk9SfHxpKHUpKSlhLmRhdGE9dTtlbHNlIHJldHVybiBoKGBpbnZhbGlkIHBheWxvYWRgKX1yZXR1cm4gdChgZGVjb2RlZCAlcyBhcyAlamAsbixhKSxhfWZ1bmN0aW9uIHAoZSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoe3JldHVybiExfX1kLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5yZWNvbnN0cnVjdG9yJiZ0aGlzLnJlY29uc3RydWN0b3IuZmluaXNoZWRSZWNvbnN0cnVjdGlvbigpfTtmdW5jdGlvbiBtKGUpe3RoaXMucmVjb25QYWNrPWUsdGhpcy5idWZmZXJzPVtdfW0ucHJvdG90eXBlLnRha2VCaW5hcnlEYXRhPWZ1bmN0aW9uKGUpe2lmKHRoaXMuYnVmZmVycy5wdXNoKGUpLHRoaXMuYnVmZmVycy5sZW5ndGg9PT10aGlzLnJlY29uUGFjay5hdHRhY2htZW50cyl7dmFyIHQ9ci5yZWNvbnN0cnVjdFBhY2tldCh0aGlzLnJlY29uUGFjayx0aGlzLmJ1ZmZlcnMpO3JldHVybiB0aGlzLmZpbmlzaGVkUmVjb25zdHJ1Y3Rpb24oKSx0fXJldHVybiBudWxsfSxtLnByb3RvdHlwZS5maW5pc2hlZFJlY29uc3RydWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5yZWNvblBhY2s9bnVsbCx0aGlzLmJ1ZmZlcnM9W119O2Z1bmN0aW9uIGgodCl7cmV0dXJue3R5cGU6ZS5FUlJPUixkYXRhOmBwYXJzZXIgZXJyb3I6IGArdH19fSkpLFZzPXMoKChlLHQpPT57dHJ5e3QuZXhwb3J0cz10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8YHVgJiZgd2l0aENyZWRlbnRpYWxzYGluIG5ldyBYTUxIdHRwUmVxdWVzdH1jYXRjaHt0LmV4cG9ydHM9ITF9fSkpLEhzPXMoKChlLHQpPT57dC5leHBvcnRzPShmdW5jdGlvbigpe3JldHVybiB0eXBlb2Ygc2VsZjxgdWA/c2VsZjp0eXBlb2Ygd2luZG93PGB1YD93aW5kb3c6RnVuY3Rpb24oYHJldHVybiB0aGlzYCkoKX0pKCl9KSksVXM9cygoKGUsdCk9Pnt2YXIgbj1WcygpLHI9SHMoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54ZG9tYWluLGk9ZS54c2NoZW1lLGE9ZS5lbmFibGVzWERSO3RyeXtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3Q8YHVgJiYoIXR8fG4pKXJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9Y2F0Y2h7fXRyeXtpZih0eXBlb2YgWERvbWFpblJlcXVlc3Q8YHVgJiYhaSYmYSlyZXR1cm4gbmV3IFhEb21haW5SZXF1ZXN0fWNhdGNoe31pZighdCl0cnl7cmV0dXJuIG5ldyByW1tgQWN0aXZlYCxgT2JqZWN0YF0uam9pbihgWGApXShgTWljcm9zb2Z0LlhNTEhUVFBgKX1jYXRjaHt9fX0pKSxXcz1zKCgoZSx0KT0+e3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Zvcih2YXIgciBpbiBlKW4uY2FsbChlLHIpJiZ0LnB1c2gocik7cmV0dXJuIHR9fSkpLEdzPXMoKChlLHQpPT57dmFyIG49THMoKSxyPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT10eXBlb2YgQmxvYj09YGZ1bmN0aW9uYHx8dHlwZW9mIEJsb2I8YHVgJiZyLmNhbGwoQmxvYik9PT1gW29iamVjdCBCbG9iQ29uc3RydWN0b3JdYCxhPXR5cGVvZiBGaWxlPT1gZnVuY3Rpb25gfHx0eXBlb2YgRmlsZTxgdWAmJnIuY2FsbChGaWxlKT09PWBbb2JqZWN0IEZpbGVDb25zdHJ1Y3Rvcl1gO3QuZXhwb3J0cz1vO2Z1bmN0aW9uIG8oZSl7aWYoIWV8fHR5cGVvZiBlIT1gb2JqZWN0YClyZXR1cm4hMTtpZihuKGUpKXtmb3IodmFyIHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYobyhlW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX1pZih0eXBlb2YgQnVmZmVyPT1gZnVuY3Rpb25gJiZCdWZmZXIuaXNCdWZmZXImJkJ1ZmZlci5pc0J1ZmZlcihlKXx8dHlwZW9mIEFycmF5QnVmZmVyPT1gZnVuY3Rpb25gJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fGkmJmUgaW5zdGFuY2VvZiBCbG9ifHxhJiZlIGluc3RhbmNlb2YgRmlsZSlyZXR1cm4hMDtpZihlLnRvSlNPTiYmdHlwZW9mIGUudG9KU09OPT1gZnVuY3Rpb25gJiZhcmd1bWVudHMubGVuZ3RoPT09MSlyZXR1cm4gbyhlLnRvSlNPTigpLCEwKTtmb3IodmFyIHMgaW4gZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxzKSYmbyhlW3NdKSlyZXR1cm4hMDtyZXR1cm4hMX19KSksS3M9cygoKGUsdCk9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuYnl0ZUxlbmd0aDtpZih0fHw9MCxufHw9cixlLnNsaWNlKXJldHVybiBlLnNsaWNlKHQsbik7aWYodDwwJiYodCs9ciksbjwwJiYobis9ciksbj5yJiYobj1yKSx0Pj1yfHx0Pj1ufHxyPT09MClyZXR1cm4gbmV3IEFycmF5QnVmZmVyKDApO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShlKSxhPW5ldyBVaW50OEFycmF5KG4tdCksbz10LHM9MDtvPG47bysrLHMrKylhW3NdPWlbb107cmV0dXJuIGEuYnVmZmVyfX0pKSxxcz1zKCgoZSx0KT0+e3QuZXhwb3J0cz1uO2Z1bmN0aW9uIG4oZSx0LG4pe3ZhciBpPSExO3JldHVybiBufHw9cixhLmNvdW50PWUsZT09PTA/dCgpOmE7ZnVuY3Rpb24gYShlLHIpe2lmKGEuY291bnQ8PTApdGhyb3cgRXJyb3IoYGFmdGVyIGNhbGxlZCB0b28gbWFueSB0aW1lc2ApOy0tYS5jb3VudCxlPyhpPSEwLHQoZSksdD1uKTphLmNvdW50PT09MCYmIWkmJnQobnVsbCxyKX19ZnVuY3Rpb24gcigpe319KSksSnM9cygoKGUsdCk9Pnt2YXIgbj1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PVtdLG49MCxyPWUubGVuZ3RoLGksYTtuPHI7KWk9ZS5jaGFyQ29kZUF0KG4rKyksaT49NTUyOTYmJmk8PTU2MzE5JiZuPHI/KGE9ZS5jaGFyQ29kZUF0KG4rKyksKGEmNjQ1MTIpPT01NjMyMD90LnB1c2goKChpJjEwMjMpPDwxMCkrKGEmMTAyMykrNjU1MzYpOih0LnB1c2goaSksbi0tKSk6dC5wdXNoKGkpO3JldHVybiB0fWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PWUubGVuZ3RoLHI9LTEsaSxhPWBgOysrcjx0OylpPWVbcl0saT42NTUzNSYmKGktPTY1NTM2LGErPW4oaT4+PjEwJjEwMjN8NTUyOTYpLGk9NTYzMjB8aSYxMDIzKSxhKz1uKGkpO3JldHVybiBhfWZ1bmN0aW9uIGEoZSx0KXtpZihlPj01NTI5NiYmZTw9NTczNDMpe2lmKHQpdGhyb3cgRXJyb3IoYExvbmUgc3Vycm9nYXRlIFUrYCtlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpK2AgaXMgbm90IGEgc2NhbGFyIHZhbHVlYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBuKGU+PnQmNjN8MTI4KX1mdW5jdGlvbiBzKGUsdCl7aWYoIShlJjQyOTQ5NjcxNjgpKXJldHVybiBuKGUpO3ZhciByPWBgO3JldHVybiBlJjQyOTQ5NjUyNDg/ZSY0Mjk0OTAxNzYwP2UmNDI5Mjg3MDE0NHx8KHI9bihlPj4xOCY3fDI0MCkscis9byhlLDEyKSxyKz1vKGUsNikpOihhKGUsdCl8fChlPTY1NTMzKSxyPW4oZT4+MTImMTV8MjI0KSxyKz1vKGUsNikpOnI9bihlPj42JjMxfDE5Mikscis9bihlJjYzfDEyOCkscn1mdW5jdGlvbiBjKGUsdCl7dHx8PXt9O2Zvcih2YXIgbj0hMSE9PXQuc3RyaWN0LGk9cihlKSxhPWkubGVuZ3RoLG89LTEsYyxsPWBgOysrbzxhOyljPWlbb10sbCs9cyhjLG4pO3JldHVybiBsfWZ1bmN0aW9uIGwoKXtpZihwPj1mKXRocm93IEVycm9yKGBJbnZhbGlkIGJ5dGUgaW5kZXhgKTt2YXIgZT1kW3BdJjI1NTtpZihwKyssKGUmMTkyKT09MTI4KXJldHVybiBlJjYzO3Rocm93IEVycm9yKGBJbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlYCl9ZnVuY3Rpb24gdShlKXt2YXIgdCxuLHIsaSxvO2lmKHA+Zil0aHJvdyBFcnJvcihgSW52YWxpZCBieXRlIGluZGV4YCk7aWYocD09ZilyZXR1cm4hMTtpZih0PWRbcF0mMjU1LHArKywhKHQmMTI4KSlyZXR1cm4gdDtpZigodCYyMjQpPT0xOTIpe2lmKG49bCgpLG89KHQmMzEpPDw2fG4sbz49MTI4KXJldHVybiBvO3Rocm93IEVycm9yKGBJbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlYCl9aWYoKHQmMjQwKT09MjI0KXtpZihuPWwoKSxyPWwoKSxvPSh0JjE1KTw8MTJ8bjw8NnxyLG8+PTIwNDgpcmV0dXJuIGEobyxlKT9vOjY1NTMzO3Rocm93IEVycm9yKGBJbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlYCl9aWYoKHQmMjQ4KT09MjQwJiYobj1sKCkscj1sKCksaT1sKCksbz0odCY3KTw8MTh8bjw8MTJ8cjw8NnxpLG8+PTY1NTM2JiZvPD0xMTE0MTExKSlyZXR1cm4gbzt0aHJvdyBFcnJvcihgSW52YWxpZCBVVEYtOCBkZXRlY3RlZGApfXZhciBkLGYscDtmdW5jdGlvbiBtKGUsdCl7dHx8PXt9O3ZhciBuPSExIT09dC5zdHJpY3Q7ZD1yKGUpLGY9ZC5sZW5ndGgscD0wO2Zvcih2YXIgYT1bXSxvOyhvPXUobikpIT09ITE7KWEucHVzaChvKTtyZXR1cm4gaShhKX10LmV4cG9ydHM9e3ZlcnNpb246YDIuMS4yYCxlbmNvZGU6YyxkZWNvZGU6bX19KSksWXM9cygoZT0+eyhmdW5jdGlvbih0KXtlLmVuY29kZT1mdW5jdGlvbihlKXt2YXIgbj1uZXcgVWludDhBcnJheShlKSxyLGk9bi5sZW5ndGgsYT1gYDtmb3Iocj0wO3I8aTtyKz0zKWErPXRbbltyXT4+Ml0sYSs9dFsobltyXSYzKTw8NHxuW3IrMV0+PjRdLGErPXRbKG5bcisxXSYxNSk8PDJ8bltyKzJdPj42XSxhKz10W25bcisyXSY2M107cmV0dXJuIGklMz09Mj9hPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSkrYD1gOmklMz09MSYmKGE9YS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0yKStgPT1gKSxhfSxlLmRlY29kZT1mdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aCouNzUscj1lLmxlbmd0aCxpLGE9MCxvLHMsYyxsO2VbZS5sZW5ndGgtMV09PT1gPWAmJihuLS0sZVtlLmxlbmd0aC0yXT09PWA9YCYmbi0tKTt2YXIgdT1uZXcgQXJyYXlCdWZmZXIobiksZD1uZXcgVWludDhBcnJheSh1KTtmb3IoaT0wO2k8cjtpKz00KW89dC5pbmRleE9mKGVbaV0pLHM9dC5pbmRleE9mKGVbaSsxXSksYz10LmluZGV4T2YoZVtpKzJdKSxsPXQuaW5kZXhPZihlW2krM10pLGRbYSsrXT1vPDwyfHM+PjQsZFthKytdPShzJjE1KTw8NHxjPj4yLGRbYSsrXT0oYyYzKTw8NnxsJjYzO3JldHVybiB1fX0pKGBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvYCl9KSksWHM9cygoKGUsdCk9Pnt2YXIgbj1uPT09dm9pZCAwP3R5cGVvZiBXZWJLaXRCbG9iQnVpbGRlcjxgdWA/V2ViS2l0QmxvYkJ1aWxkZXI6dHlwZW9mIE1TQmxvYkJ1aWxkZXI8YHVgP01TQmxvYkJ1aWxkZXI6dHlwZW9mIE1vekJsb2JCdWlsZGVyPGB1YD9Nb3pCbG9iQnVpbGRlcjohMTpuLHI9KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQmxvYihbYGhpYF0pLnNpemU9PT0yfWNhdGNoe3JldHVybiExfX0pKCksaT1yJiYoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShbMSwyXSldKS5zaXplPT09Mn1jYXRjaHtyZXR1cm4hMX19KSgpLGE9biYmbi5wcm90b3R5cGUuYXBwZW5kJiZuLnByb3RvdHlwZS5nZXRCbG9iO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe2lmKGUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhciB0PWUuYnVmZmVyO2lmKGUuYnl0ZUxlbmd0aCE9PXQuYnl0ZUxlbmd0aCl7dmFyIG49bmV3IFVpbnQ4QXJyYXkoZS5ieXRlTGVuZ3RoKTtuLnNldChuZXcgVWludDhBcnJheSh0LGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpKSx0PW4uYnVmZmVyfXJldHVybiB0fXJldHVybiBlfSl9ZnVuY3Rpb24gcyhlLHQpe3R8fD17fTt2YXIgcj1uZXcgbjtyZXR1cm4gbyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3IuYXBwZW5kKGUpfSksdC50eXBlP3IuZ2V0QmxvYih0LnR5cGUpOnIuZ2V0QmxvYigpfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gbmV3IEJsb2IobyhlKSx0fHx7fSl9dHlwZW9mIEJsb2I8YHVgJiYocy5wcm90b3R5cGU9QmxvYi5wcm90b3R5cGUsYy5wcm90b3R5cGU9QmxvYi5wcm90b3R5cGUpLHQuZXhwb3J0cz0oZnVuY3Rpb24oKXtpZihyKXJldHVybiBpP0Jsb2I6YztpZihhKXJldHVybiBzfSkoKX0pKSxacz1zKChlPT57dmFyIHQ9V3MoKSxuPUdzKCkscj1LcygpLGk9cXMoKSxhPUpzKCksbzt0eXBlb2YgQXJyYXlCdWZmZXI8YHVgJiYobz1ZcygpKTt2YXIgcz10eXBlb2YgbmF2aWdhdG9yPGB1YCYmL0FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGM9dHlwZW9mIG5hdmlnYXRvcjxgdWAmJi9QaGFudG9tSlMvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGw9c3x8YztlLnByb3RvY29sPTM7dmFyIHU9ZS5wYWNrZXRzPXtvcGVuOjAsY2xvc2U6MSxwaW5nOjIscG9uZzozLG1lc3NhZ2U6NCx1cGdyYWRlOjUsbm9vcDo2fSxkPXQodSksZj17dHlwZTpgZXJyb3JgLGRhdGE6YHBhcnNlciBlcnJvcmB9LHA9WHMoKTtlLmVuY29kZVBhY2tldD1mdW5jdGlvbihlLHQsbixyKXt0eXBlb2YgdD09YGZ1bmN0aW9uYCYmKHI9dCx0PSExKSx0eXBlb2Ygbj09YGZ1bmN0aW9uYCYmKHI9bixuPW51bGwpO3ZhciBpPWUuZGF0YT09PXZvaWQgMD92b2lkIDA6ZS5kYXRhLmJ1ZmZlcnx8ZS5kYXRhO2lmKHR5cGVvZiBBcnJheUJ1ZmZlcjxgdWAmJmkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gaChlLHQscik7aWYocCE9PXZvaWQgMCYmaSBpbnN0YW5jZW9mIHApcmV0dXJuIF8oZSx0LHIpO2lmKGkmJmkuYmFzZTY0KXJldHVybiBtKGUscik7dmFyIG89dVtlLnR5cGVdO3JldHVybiBlLmRhdGEhPT12b2lkIDAmJihvKz1uP2EuZW5jb2RlKFN0cmluZyhlLmRhdGEpLHtzdHJpY3Q6ITF9KTpTdHJpbmcoZS5kYXRhKSkscihgYCtvKX07ZnVuY3Rpb24gbSh0LG4pe3JldHVybiBuKGBiYCtlLnBhY2tldHNbdC50eXBlXSt0LmRhdGEuZGF0YSl9ZnVuY3Rpb24gaCh0LG4scil7aWYoIW4pcmV0dXJuIGUuZW5jb2RlQmFzZTY0UGFja2V0KHQscik7dmFyIGk9dC5kYXRhLGE9bmV3IFVpbnQ4QXJyYXkoaSksbz1uZXcgVWludDhBcnJheSgxK2kuYnl0ZUxlbmd0aCk7b1swXT11W3QudHlwZV07Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKyspb1tzKzFdPWFbc107cmV0dXJuIHIoby5idWZmZXIpfWZ1bmN0aW9uIGcodCxuLHIpe2lmKCFuKXJldHVybiBlLmVuY29kZUJhc2U2NFBhY2tldCh0LHIpO3ZhciBpPW5ldyBGaWxlUmVhZGVyO3JldHVybiBpLm9ubG9hZD1mdW5jdGlvbigpe2UuZW5jb2RlUGFja2V0KHt0eXBlOnQudHlwZSxkYXRhOmkucmVzdWx0fSxuLCEwLHIpfSxpLnJlYWRBc0FycmF5QnVmZmVyKHQuZGF0YSl9ZnVuY3Rpb24gXyh0LG4scil7aWYoIW4pcmV0dXJuIGUuZW5jb2RlQmFzZTY0UGFja2V0KHQscik7aWYobClyZXR1cm4gZyh0LG4scik7dmFyIGk9bmV3IFVpbnQ4QXJyYXkoMSk7cmV0dXJuIGlbMF09dVt0LnR5cGVdLHIobmV3IHAoW2kuYnVmZmVyLHQuZGF0YV0pKX1lLmVuY29kZUJhc2U2NFBhY2tldD1mdW5jdGlvbih0LG4pe3ZhciByPWBiYCtlLnBhY2tldHNbdC50eXBlXTtpZihwIT09dm9pZCAwJiZ0LmRhdGEgaW5zdGFuY2VvZiBwKXt2YXIgaT1uZXcgRmlsZVJlYWRlcjtyZXR1cm4gaS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT1pLnJlc3VsdC5zcGxpdChgLGApWzFdO24ocitlKX0saS5yZWFkQXNEYXRhVVJMKHQuZGF0YSl9dmFyIGE7dHJ5e2E9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KHQuZGF0YSkpfWNhdGNoe2Zvcih2YXIgbz1uZXcgVWludDhBcnJheSh0LmRhdGEpLHM9QXJyYXkoby5sZW5ndGgpLGM9MDtjPG8ubGVuZ3RoO2MrKylzW2NdPW9bY107YT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscyl9cmV0dXJuIHIrPWJ0b2EoYSksbihyKX0sZS5kZWNvZGVQYWNrZXQ9ZnVuY3Rpb24odCxuLGkpe2lmKHQ9PT12b2lkIDApcmV0dXJuIGY7aWYodHlwZW9mIHQ9PWBzdHJpbmdgKXtpZih0LmNoYXJBdCgwKT09PWBiYClyZXR1cm4gZS5kZWNvZGVCYXNlNjRQYWNrZXQodC5zdWJzdHIoMSksbik7aWYoaSYmKHQ9dih0KSx0PT09ITEpKXJldHVybiBmO3ZhciBhPXQuY2hhckF0KDApO3JldHVybiBOdW1iZXIoYSkhPWF8fCFkW2FdP2Y6dC5sZW5ndGg+MT97dHlwZTpkW2FdLGRhdGE6dC5zdWJzdHJpbmcoMSl9Ont0eXBlOmRbYV19fXZhciBhPW5ldyBVaW50OEFycmF5KHQpWzBdLG89cih0LDEpO3JldHVybiBwJiZuPT09YGJsb2JgJiYobz1uZXcgcChbb10pKSx7dHlwZTpkW2FdLGRhdGE6b319O2Z1bmN0aW9uIHYoZSl7dHJ5e2U9YS5kZWNvZGUoZSx7c3RyaWN0OiExfSl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuIGV9ZS5kZWNvZGVCYXNlNjRQYWNrZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1kW2UuY2hhckF0KDApXTtpZighbylyZXR1cm57dHlwZTpuLGRhdGE6e2Jhc2U2NDohMCxkYXRhOmUuc3Vic3RyKDEpfX07dmFyIHI9by5kZWNvZGUoZS5zdWJzdHIoMSkpO3JldHVybiB0PT09YGJsb2JgJiZwJiYocj1uZXcgcChbcl0pKSx7dHlwZTpuLGRhdGE6cn19LGUuZW5jb2RlUGF5bG9hZD1mdW5jdGlvbih0LHIsaSl7dHlwZW9mIHI9PWBmdW5jdGlvbmAmJihpPXIscj1udWxsKTt2YXIgYT1uKHQpO2lmKHImJmEpcmV0dXJuIHAmJiFsP2UuZW5jb2RlUGF5bG9hZEFzQmxvYih0LGkpOmUuZW5jb2RlUGF5bG9hZEFzQXJyYXlCdWZmZXIodCxpKTtpZighdC5sZW5ndGgpcmV0dXJuIGkoYDA6YCk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5sZW5ndGgrYDpgK2V9ZnVuY3Rpb24gcyh0LG4pe2UuZW5jb2RlUGFja2V0KHQsYT9yOiExLCExLGZ1bmN0aW9uKGUpe24obnVsbCxvKGUpKX0pfXkodCxzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkodC5qb2luKGBgKSl9KX07ZnVuY3Rpb24geShlLHQsbil7Zm9yKHZhciByPUFycmF5KGUubGVuZ3RoKSxhPWkoZS5sZW5ndGgsbiksbz1mdW5jdGlvbihlLG4saSl7dChuLGZ1bmN0aW9uKHQsbil7cltlXT1uLGkodCxyKX0pfSxzPTA7czxlLmxlbmd0aDtzKyspbyhzLGVbc10sYSl9ZS5kZWNvZGVQYXlsb2FkPWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9YHN0cmluZ2ApcmV0dXJuIGUuZGVjb2RlUGF5bG9hZEFzQmluYXJ5KHQsbixyKTt0eXBlb2Ygbj09YGZ1bmN0aW9uYCYmKHI9bixuPW51bGwpO3ZhciBpO2lmKHQ9PT1gYClyZXR1cm4gcihmLDAsMSk7Zm9yKHZhciBhPWBgLG8scyxjPTAsbD10Lmxlbmd0aDtjPGw7YysrKXt2YXIgdT10LmNoYXJBdChjKTtpZih1IT09YDpgKXthKz11O2NvbnRpbnVlfWlmKGE9PT1gYHx8YSE9KG89TnVtYmVyKGEpKXx8KHM9dC5zdWJzdHIoYysxLG8pLGEhPXMubGVuZ3RoKSlyZXR1cm4gcihmLDAsMSk7aWYocy5sZW5ndGgpe2lmKGk9ZS5kZWNvZGVQYWNrZXQocyxuLCExKSxmLnR5cGU9PT1pLnR5cGUmJmYuZGF0YT09PWkuZGF0YSlyZXR1cm4gcihmLDAsMSk7aWYoITE9PT1yKGksYytvLGwpKXJldHVybn1jKz1vLGE9YGB9aWYoYSE9PWBgKXJldHVybiByKGYsMCwxKX0sZS5lbmNvZGVQYXlsb2FkQXNBcnJheUJ1ZmZlcj1mdW5jdGlvbih0LG4pe2lmKCF0Lmxlbmd0aClyZXR1cm4gbihuZXcgQXJyYXlCdWZmZXIoMCkpO2Z1bmN0aW9uIHIodCxuKXtlLmVuY29kZVBhY2tldCh0LCEwLCEwLGZ1bmN0aW9uKGUpe3JldHVybiBuKG51bGwsZSl9KX15KHQscixmdW5jdGlvbihlLHQpe3ZhciByPXQucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIHQ9PWBzdHJpbmdgP3QubGVuZ3RoOnQuYnl0ZUxlbmd0aDtyZXR1cm4gZStuLnRvU3RyaW5nKCkubGVuZ3RoK24rMn0sMCksaT1uZXcgVWludDhBcnJheShyKSxhPTA7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZT09YHN0cmluZ2Asbj1lO2lmKHQpe2Zvcih2YXIgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCksbz0wO288ZS5sZW5ndGg7bysrKXJbb109ZS5jaGFyQ29kZUF0KG8pO249ci5idWZmZXJ9dD9pW2ErK109MDppW2ErK109MTtmb3IodmFyIHM9bi5ieXRlTGVuZ3RoLnRvU3RyaW5nKCksbz0wO288cy5sZW5ndGg7bysrKWlbYSsrXT1wYXJzZUludChzW29dKTtpW2ErK109MjU1O2Zvcih2YXIgcj1uZXcgVWludDhBcnJheShuKSxvPTA7bzxyLmxlbmd0aDtvKyspaVthKytdPXJbb119KSxuKGkuYnVmZmVyKX0pfSxlLmVuY29kZVBheWxvYWRBc0Jsb2I9ZnVuY3Rpb24odCxuKXtmdW5jdGlvbiByKHQsbil7ZS5lbmNvZGVQYWNrZXQodCwhMCwhMCxmdW5jdGlvbihlKXt2YXIgdD1uZXcgVWludDhBcnJheSgxKTtpZih0WzBdPTEsdHlwZW9mIGU9PWBzdHJpbmdgKXtmb3IodmFyIHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpLGk9MDtpPGUubGVuZ3RoO2krKylyW2ldPWUuY2hhckNvZGVBdChpKTtlPXIuYnVmZmVyLHRbMF09MH1mb3IodmFyIGE9KGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9lLmJ5dGVMZW5ndGg6ZS5zaXplKS50b1N0cmluZygpLG89bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMSksaT0wO2k8YS5sZW5ndGg7aSsrKW9baV09cGFyc2VJbnQoYVtpXSk7b1thLmxlbmd0aF09MjU1LHAmJm4obnVsbCxuZXcgcChbdC5idWZmZXIsby5idWZmZXIsZV0pKX0pfXkodCxyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4obmV3IHAodCkpfSl9LGUuZGVjb2RlUGF5bG9hZEFzQmluYXJ5PWZ1bmN0aW9uKHQsbixpKXt0eXBlb2Ygbj09YGZ1bmN0aW9uYCYmKGk9bixuPW51bGwpO2Zvcih2YXIgYT10LG89W107YS5ieXRlTGVuZ3RoPjA7KXtmb3IodmFyIHM9bmV3IFVpbnQ4QXJyYXkoYSksYz1zWzBdPT09MCxsPWBgLHU9MTtzW3VdIT09MjU1O3UrKyl7aWYobC5sZW5ndGg+MzEwKXJldHVybiBpKGYsMCwxKTtsKz1zW3VdfWE9cihhLDIrbC5sZW5ndGgpLGw9cGFyc2VJbnQobCk7dmFyIGQ9cihhLDAsbCk7aWYoYyl0cnl7ZD1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoZCkpfWNhdGNoe3ZhciBwPW5ldyBVaW50OEFycmF5KGQpO2Q9YGA7Zm9yKHZhciB1PTA7dTxwLmxlbmd0aDt1KyspZCs9U3RyaW5nLmZyb21DaGFyQ29kZShwW3VdKX1vLnB1c2goZCksYT1yKGEsbCl9dmFyIG09by5sZW5ndGg7by5mb3JFYWNoKGZ1bmN0aW9uKHQscil7aShlLmRlY29kZVBhY2tldCh0LG4sITApLHIsbSl9KX19KSksUXM9cygoKGUsdCk9Pnt2YXIgbj1acygpLHI9SXMoKTt0LmV4cG9ydHM9aTtmdW5jdGlvbiBpKGUpe3RoaXMucGF0aD1lLnBhdGgsdGhpcy5ob3N0bmFtZT1lLmhvc3RuYW1lLHRoaXMucG9ydD1lLnBvcnQsdGhpcy5zZWN1cmU9ZS5zZWN1cmUsdGhpcy5xdWVyeT1lLnF1ZXJ5LHRoaXMudGltZXN0YW1wUGFyYW09ZS50aW1lc3RhbXBQYXJhbSx0aGlzLnRpbWVzdGFtcFJlcXVlc3RzPWUudGltZXN0YW1wUmVxdWVzdHMsdGhpcy5yZWFkeVN0YXRlPWBgLHRoaXMuYWdlbnQ9ZS5hZ2VudHx8ITEsdGhpcy5zb2NrZXQ9ZS5zb2NrZXQsdGhpcy5lbmFibGVzWERSPWUuZW5hYmxlc1hEUix0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFscyx0aGlzLnBmeD1lLnBmeCx0aGlzLmtleT1lLmtleSx0aGlzLnBhc3NwaHJhc2U9ZS5wYXNzcGhyYXNlLHRoaXMuY2VydD1lLmNlcnQsdGhpcy5jYT1lLmNhLHRoaXMuY2lwaGVycz1lLmNpcGhlcnMsdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQ9ZS5yZWplY3RVbmF1dGhvcml6ZWQsdGhpcy5mb3JjZU5vZGU9ZS5mb3JjZU5vZGUsdGhpcy5pc1JlYWN0TmF0aXZlPWUuaXNSZWFjdE5hdGl2ZSx0aGlzLmV4dHJhSGVhZGVycz1lLmV4dHJhSGVhZGVycyx0aGlzLmxvY2FsQWRkcmVzcz1lLmxvY2FsQWRkcmVzc31yKGkucHJvdG90eXBlKSxpLnByb3RvdHlwZS5vbkVycm9yPWZ1bmN0aW9uKGUsdCl7dmFyIG49RXJyb3IoZSk7cmV0dXJuIG4udHlwZT1gVHJhbnNwb3J0RXJyb3JgLG4uZGVzY3JpcHRpb249dCx0aGlzLmVtaXQoYGVycm9yYCxuKSx0aGlzfSxpLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVhZHlTdGF0ZT09PWBjbG9zZWRgfHx0aGlzLnJlYWR5U3RhdGU9PT1gYCkmJih0aGlzLnJlYWR5U3RhdGU9YG9wZW5pbmdgLHRoaXMuZG9PcGVuKCkpLHRoaXN9LGkucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVhZHlTdGF0ZT09PWBvcGVuaW5nYHx8dGhpcy5yZWFkeVN0YXRlPT09YG9wZW5gKSYmKHRoaXMuZG9DbG9zZSgpLHRoaXMub25DbG9zZSgpKSx0aGlzfSxpLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMucmVhZHlTdGF0ZT09PWBvcGVuYCl0aGlzLndyaXRlKGUpO2Vsc2UgdGhyb3cgRXJyb3IoYFRyYW5zcG9ydCBub3Qgb3BlbmApfSxpLnByb3RvdHlwZS5vbk9wZW49ZnVuY3Rpb24oKXt0aGlzLnJlYWR5U3RhdGU9YG9wZW5gLHRoaXMud3JpdGFibGU9ITAsdGhpcy5lbWl0KGBvcGVuYCl9LGkucHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihlKXt2YXIgdD1uLmRlY29kZVBhY2tldChlLHRoaXMuc29ja2V0LmJpbmFyeVR5cGUpO3RoaXMub25QYWNrZXQodCl9LGkucHJvdG90eXBlLm9uUGFja2V0PWZ1bmN0aW9uKGUpe3RoaXMuZW1pdChgcGFja2V0YCxlKX0saS5wcm90b3R5cGUub25DbG9zZT1mdW5jdGlvbigpe3RoaXMucmVhZHlTdGF0ZT1gY2xvc2VkYCx0aGlzLmVtaXQoYGNsb3NlYCl9fSkpLCRzPXMoKGU9PntlLmVuY29kZT1mdW5jdGlvbihlKXt2YXIgdD1gYDtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodC5sZW5ndGgmJih0Kz1gJmApLHQrPWVuY29kZVVSSUNvbXBvbmVudChuKStgPWArZW5jb2RlVVJJQ29tcG9uZW50KGVbbl0pKTtyZXR1cm4gdH0sZS5kZWNvZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXt9LG49ZS5zcGxpdChgJmApLHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBhPW5bcl0uc3BsaXQoYD1gKTt0W2RlY29kZVVSSUNvbXBvbmVudChhWzBdKV09ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0pfXJldHVybiB0fX0pKSxlYz1zKCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKCl7fTtuLnByb3RvdHlwZT10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgbixlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfX0pKSx0Yz1zKCgoZSx0KT0+e3ZhciBuPWAwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei1fYC5zcGxpdChgYCkscj02NCxpPXt9LGE9MCxvPTAscztmdW5jdGlvbiBjKGUpe3ZhciB0PWBgO2RvIHQ9bltlJXJdK3QsZT1NYXRoLmZsb29yKGUvcik7d2hpbGUoZT4wKTtyZXR1cm4gdH1mdW5jdGlvbiBsKGUpe3ZhciB0PTA7Zm9yKG89MDtvPGUubGVuZ3RoO28rKyl0PXQqcitpW2UuY2hhckF0KG8pXTtyZXR1cm4gdH1mdW5jdGlvbiB1KCl7dmFyIGU9YygrbmV3IERhdGUpO3JldHVybiBlPT09cz9lK2AuYCtjKGErKyk6KGE9MCxzPWUpfWZvcig7bzxyO28rKylpW25bb11dPW87dS5lbmNvZGU9Yyx1LmRlY29kZT1sLHQuZXhwb3J0cz11fSkpLG5jPXMoKChlLHQpPT57dmFyIG49UXMoKSxyPSRzKCksaT1acygpLGE9ZWMoKSxvPXRjKCkscz1GcygpKGBlbmdpbmUuaW8tY2xpZW50OnBvbGxpbmdgKTt0LmV4cG9ydHM9bDt2YXIgYz0oZnVuY3Rpb24oKXtyZXR1cm4gbmV3KFVzKCkpKHt4ZG9tYWluOiExfSkucmVzcG9uc2VUeXBlIT1udWxsfSkoKTtmdW5jdGlvbiBsKGUpe3ZhciB0PWUmJmUuZm9yY2VCYXNlNjQ7KCFjfHx0KSYmKHRoaXMuc3VwcG9ydHNCaW5hcnk9ITEpLG4uY2FsbCh0aGlzLGUpfWEobCxuKSxsLnByb3RvdHlwZS5uYW1lPWBwb2xsaW5nYCxsLnByb3RvdHlwZS5kb09wZW49ZnVuY3Rpb24oKXt0aGlzLnBvbGwoKX0sbC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnJlYWR5U3RhdGU9YHBhdXNpbmdgO2Z1bmN0aW9uIG4oKXtzKGBwYXVzZWRgKSx0LnJlYWR5U3RhdGU9YHBhdXNlZGAsZSgpfWlmKHRoaXMucG9sbGluZ3x8IXRoaXMud3JpdGFibGUpe3ZhciByPTA7dGhpcy5wb2xsaW5nJiYocyhgd2UgYXJlIGN1cnJlbnRseSBwb2xsaW5nIC0gd2FpdGluZyB0byBwYXVzZWApLHIrKyx0aGlzLm9uY2UoYHBvbGxDb21wbGV0ZWAsZnVuY3Rpb24oKXtzKGBwcmUtcGF1c2UgcG9sbGluZyBjb21wbGV0ZWApLC0tcnx8bigpfSkpLHRoaXMud3JpdGFibGV8fChzKGB3ZSBhcmUgY3VycmVudGx5IHdyaXRpbmcgLSB3YWl0aW5nIHRvIHBhdXNlYCkscisrLHRoaXMub25jZShgZHJhaW5gLGZ1bmN0aW9uKCl7cyhgcHJlLXBhdXNlIHdyaXRpbmcgY29tcGxldGVgKSwtLXJ8fG4oKX0pKX1lbHNlIG4oKX0sbC5wcm90b3R5cGUucG9sbD1mdW5jdGlvbigpe3MoYHBvbGxpbmdgKSx0aGlzLnBvbGxpbmc9ITAsdGhpcy5kb1BvbGwoKSx0aGlzLmVtaXQoYHBvbGxgKX0sbC5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cyhgcG9sbGluZyBnb3QgZGF0YSAlc2AsZSksaS5kZWNvZGVQYXlsb2FkKGUsdGhpcy5zb2NrZXQuYmluYXJ5VHlwZSxmdW5jdGlvbihlLG4scil7aWYodC5yZWFkeVN0YXRlPT09YG9wZW5pbmdgJiZ0Lm9uT3BlbigpLGUudHlwZT09PWBjbG9zZWApcmV0dXJuIHQub25DbG9zZSgpLCExO3Qub25QYWNrZXQoZSl9KSx0aGlzLnJlYWR5U3RhdGUhPT1gY2xvc2VkYCYmKHRoaXMucG9sbGluZz0hMSx0aGlzLmVtaXQoYHBvbGxDb21wbGV0ZWApLHRoaXMucmVhZHlTdGF0ZT09PWBvcGVuYD90aGlzLnBvbGwoKTpzKGBpZ25vcmluZyBwb2xsIC0gdHJhbnNwb3J0IHN0YXRlICIlcyJgLHRoaXMucmVhZHlTdGF0ZSkpfSxsLnByb3RvdHlwZS5kb0Nsb3NlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztmdW5jdGlvbiB0KCl7cyhgd3JpdGluZyBjbG9zZSBwYWNrZXRgKSxlLndyaXRlKFt7dHlwZTpgY2xvc2VgfV0pfXRoaXMucmVhZHlTdGF0ZT09PWBvcGVuYD8ocyhgdHJhbnNwb3J0IG9wZW4gLSBjbG9zaW5nYCksdCgpKToocyhgdHJhbnNwb3J0IG5vdCBvcGVuIC0gZGVmZXJyaW5nIGNsb3NlYCksdGhpcy5vbmNlKGBvcGVuYCx0KSl9LGwucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy53cml0YWJsZT0hMTt2YXIgbj1mdW5jdGlvbigpe3Qud3JpdGFibGU9ITAsdC5lbWl0KGBkcmFpbmApfTtpLmVuY29kZVBheWxvYWQoZSx0aGlzLnN1cHBvcnRzQmluYXJ5LGZ1bmN0aW9uKGUpe3QuZG9Xcml0ZShlLG4pfSl9LGwucHJvdG90eXBlLnVyaT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucXVlcnl8fHt9LHQ9dGhpcy5zZWN1cmU/YGh0dHBzYDpgaHR0cGAsbj1gYDshMSE9PXRoaXMudGltZXN0YW1wUmVxdWVzdHMmJihlW3RoaXMudGltZXN0YW1wUGFyYW1dPW8oKSksIXRoaXMuc3VwcG9ydHNCaW5hcnkmJiFlLnNpZCYmKGUuYjY0PTEpLGU9ci5lbmNvZGUoZSksdGhpcy5wb3J0JiYodD09PWBodHRwc2AmJk51bWJlcih0aGlzLnBvcnQpIT09NDQzfHx0PT09YGh0dHBgJiZOdW1iZXIodGhpcy5wb3J0KSE9PTgwKSYmKG49YDpgK3RoaXMucG9ydCksZS5sZW5ndGgmJihlPWA/YCtlKTt2YXIgaT10aGlzLmhvc3RuYW1lLmluZGV4T2YoYDpgKSE9PS0xO3JldHVybiB0K2A6Ly9gKyhpP2BbYCt0aGlzLmhvc3RuYW1lK2BdYDp0aGlzLmhvc3RuYW1lKStuK3RoaXMucGF0aCtlfX0pKSxyYz1zKCgoZSx0KT0+e3ZhciBuPVVzKCkscj1uYygpLGk9SXMoKSxhPWVjKCksbz1GcygpKGBlbmdpbmUuaW8tY2xpZW50OnBvbGxpbmcteGhyYCkscz1IcygpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5SZXF1ZXN0PXU7ZnVuY3Rpb24gYygpe31mdW5jdGlvbiBsKGUpe2lmKHIuY2FsbCh0aGlzLGUpLHRoaXMucmVxdWVzdFRpbWVvdXQ9ZS5yZXF1ZXN0VGltZW91dCx0aGlzLmV4dHJhSGVhZGVycz1lLmV4dHJhSGVhZGVycyx0eXBlb2YgbG9jYXRpb248YHVgKXt2YXIgdD1sb2NhdGlvbi5wcm90b2NvbD09PWBodHRwczpgLG49bG9jYXRpb24ucG9ydDtufHw9dD80NDM6ODAsdGhpcy54ZD10eXBlb2YgbG9jYXRpb248YHVgJiZlLmhvc3RuYW1lIT09bG9jYXRpb24uaG9zdG5hbWV8fG4hPT1lLnBvcnQsdGhpcy54cz1lLnNlY3VyZSE9PXR9fWEobCxyKSxsLnByb3RvdHlwZS5zdXBwb3J0c0JpbmFyeT0hMCxsLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUpe3JldHVybiBlfHw9e30sZS51cmk9dGhpcy51cmkoKSxlLnhkPXRoaXMueGQsZS54cz10aGlzLnhzLGUuYWdlbnQ9dGhpcy5hZ2VudHx8ITEsZS5zdXBwb3J0c0JpbmFyeT10aGlzLnN1cHBvcnRzQmluYXJ5LGUuZW5hYmxlc1hEUj10aGlzLmVuYWJsZXNYRFIsZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHMsZS5wZng9dGhpcy5wZngsZS5rZXk9dGhpcy5rZXksZS5wYXNzcGhyYXNlPXRoaXMucGFzc3BocmFzZSxlLmNlcnQ9dGhpcy5jZXJ0LGUuY2E9dGhpcy5jYSxlLmNpcGhlcnM9dGhpcy5jaXBoZXJzLGUucmVqZWN0VW5hdXRob3JpemVkPXRoaXMucmVqZWN0VW5hdXRob3JpemVkLGUucmVxdWVzdFRpbWVvdXQ9dGhpcy5yZXF1ZXN0VGltZW91dCxlLmV4dHJhSGVhZGVycz10aGlzLmV4dHJhSGVhZGVycyxuZXcgdShlKX0sbC5wcm90b3R5cGUuZG9Xcml0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXR5cGVvZiBlIT1gc3RyaW5nYCYmZSE9PXZvaWQgMCxyPXRoaXMucmVxdWVzdCh7bWV0aG9kOmBQT1NUYCxkYXRhOmUsaXNCaW5hcnk6bn0pLGk9dGhpcztyLm9uKGBzdWNjZXNzYCx0KSxyLm9uKGBlcnJvcmAsZnVuY3Rpb24oZSl7aS5vbkVycm9yKGB4aHIgcG9zdCBlcnJvcmAsZSl9KSx0aGlzLnNlbmRYaHI9cn0sbC5wcm90b3R5cGUuZG9Qb2xsPWZ1bmN0aW9uKCl7byhgeGhyIHBvbGxgKTt2YXIgZT10aGlzLnJlcXVlc3QoKSx0PXRoaXM7ZS5vbihgZGF0YWAsZnVuY3Rpb24oZSl7dC5vbkRhdGEoZSl9KSxlLm9uKGBlcnJvcmAsZnVuY3Rpb24oZSl7dC5vbkVycm9yKGB4aHIgcG9sbCBlcnJvcmAsZSl9KSx0aGlzLnBvbGxYaHI9ZX07ZnVuY3Rpb24gdShlKXt0aGlzLm1ldGhvZD1lLm1ldGhvZHx8YEdFVGAsdGhpcy51cmk9ZS51cmksdGhpcy54ZD0hIWUueGQsdGhpcy54cz0hIWUueHMsdGhpcy5hc3luYz0hMSE9PWUuYXN5bmMsdGhpcy5kYXRhPWUuZGF0YT09PXZvaWQgMD9udWxsOmUuZGF0YSx0aGlzLmFnZW50PWUuYWdlbnQsdGhpcy5pc0JpbmFyeT1lLmlzQmluYXJ5LHRoaXMuc3VwcG9ydHNCaW5hcnk9ZS5zdXBwb3J0c0JpbmFyeSx0aGlzLmVuYWJsZXNYRFI9ZS5lbmFibGVzWERSLHRoaXMud2l0aENyZWRlbnRpYWxzPWUud2l0aENyZWRlbnRpYWxzLHRoaXMucmVxdWVzdFRpbWVvdXQ9ZS5yZXF1ZXN0VGltZW91dCx0aGlzLnBmeD1lLnBmeCx0aGlzLmtleT1lLmtleSx0aGlzLnBhc3NwaHJhc2U9ZS5wYXNzcGhyYXNlLHRoaXMuY2VydD1lLmNlcnQsdGhpcy5jYT1lLmNhLHRoaXMuY2lwaGVycz1lLmNpcGhlcnMsdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQ9ZS5yZWplY3RVbmF1dGhvcml6ZWQsdGhpcy5leHRyYUhlYWRlcnM9ZS5leHRyYUhlYWRlcnMsdGhpcy5jcmVhdGUoKX1pZihpKHUucHJvdG90eXBlKSx1LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgZT17YWdlbnQ6dGhpcy5hZ2VudCx4ZG9tYWluOnRoaXMueGQseHNjaGVtZTp0aGlzLnhzLGVuYWJsZXNYRFI6dGhpcy5lbmFibGVzWERSfTtlLnBmeD10aGlzLnBmeCxlLmtleT10aGlzLmtleSxlLnBhc3NwaHJhc2U9dGhpcy5wYXNzcGhyYXNlLGUuY2VydD10aGlzLmNlcnQsZS5jYT10aGlzLmNhLGUuY2lwaGVycz10aGlzLmNpcGhlcnMsZS5yZWplY3RVbmF1dGhvcml6ZWQ9dGhpcy5yZWplY3RVbmF1dGhvcml6ZWQ7dmFyIHQ9dGhpcy54aHI9bmV3IG4oZSkscj10aGlzO3RyeXtvKGB4aHIgb3BlbiAlczogJXNgLHRoaXMubWV0aG9kLHRoaXMudXJpKSx0Lm9wZW4odGhpcy5tZXRob2QsdGhpcy51cmksdGhpcy5hc3luYyk7dHJ5e2lmKHRoaXMuZXh0cmFIZWFkZXJzKWZvcih2YXIgaSBpbiB0LnNldERpc2FibGVIZWFkZXJDaGVjayYmdC5zZXREaXNhYmxlSGVhZGVyQ2hlY2soITApLHRoaXMuZXh0cmFIZWFkZXJzKXRoaXMuZXh0cmFIZWFkZXJzLmhhc093blByb3BlcnR5KGkpJiZ0LnNldFJlcXVlc3RIZWFkZXIoaSx0aGlzLmV4dHJhSGVhZGVyc1tpXSl9Y2F0Y2h7fWlmKHRoaXMubWV0aG9kPT09YFBPU1RgKXRyeXt0aGlzLmlzQmluYXJ5P3Quc2V0UmVxdWVzdEhlYWRlcihgQ29udGVudC10eXBlYCxgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYCk6dC5zZXRSZXF1ZXN0SGVhZGVyKGBDb250ZW50LXR5cGVgLGB0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLThgKX1jYXRjaHt9dHJ5e3Quc2V0UmVxdWVzdEhlYWRlcihgQWNjZXB0YCxgKi8qYCl9Y2F0Y2h7fWB3aXRoQ3JlZGVudGlhbHNgaW4gdCYmKHQud2l0aENyZWRlbnRpYWxzPXRoaXMud2l0aENyZWRlbnRpYWxzKSx0aGlzLnJlcXVlc3RUaW1lb3V0JiYodC50aW1lb3V0PXRoaXMucmVxdWVzdFRpbWVvdXQpLHRoaXMuaGFzWERSKCk/KHQub25sb2FkPWZ1bmN0aW9uKCl7ci5vbkxvYWQoKX0sdC5vbmVycm9yPWZ1bmN0aW9uKCl7ci5vbkVycm9yKHQucmVzcG9uc2VUZXh0KX0pOnQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYodC5yZWFkeVN0YXRlPT09Mil0cnl7dmFyIGU9dC5nZXRSZXNwb25zZUhlYWRlcihgQ29udGVudC1UeXBlYCk7KHIuc3VwcG9ydHNCaW5hcnkmJmU9PT1gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYHx8ZT09PWBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IGNoYXJzZXQ9VVRGLThgKSYmKHQucmVzcG9uc2VUeXBlPWBhcnJheWJ1ZmZlcmApfWNhdGNoe310LnJlYWR5U3RhdGU9PT00JiYodC5zdGF0dXM9PT0yMDB8fHQuc3RhdHVzPT09MTIyMz9yLm9uTG9hZCgpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLm9uRXJyb3IodHlwZW9mIHQuc3RhdHVzPT1gbnVtYmVyYD90LnN0YXR1czowKX0sMCkpfSxvKGB4aHIgZGF0YSAlc2AsdGhpcy5kYXRhKSx0LnNlbmQodGhpcy5kYXRhKX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5vbkVycm9yKGUpfSwwKTtyZXR1cm59dHlwZW9mIGRvY3VtZW50PGB1YCYmKHRoaXMuaW5kZXg9dS5yZXF1ZXN0c0NvdW50KyssdS5yZXF1ZXN0c1t0aGlzLmluZGV4XT10aGlzKX0sdS5wcm90b3R5cGUub25TdWNjZXNzPWZ1bmN0aW9uKCl7dGhpcy5lbWl0KGBzdWNjZXNzYCksdGhpcy5jbGVhbnVwKCl9LHUucHJvdG90eXBlLm9uRGF0YT1mdW5jdGlvbihlKXt0aGlzLmVtaXQoYGRhdGFgLGUpLHRoaXMub25TdWNjZXNzKCl9LHUucHJvdG90eXBlLm9uRXJyb3I9ZnVuY3Rpb24oZSl7dGhpcy5lbWl0KGBlcnJvcmAsZSksdGhpcy5jbGVhbnVwKCEwKX0sdS5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbihlKXtpZighKHRoaXMueGhyPT09dm9pZCAwfHx0aGlzLnhocj09PW51bGwpKXtpZih0aGlzLmhhc1hEUigpP3RoaXMueGhyLm9ubG9hZD10aGlzLnhoci5vbmVycm9yPWM6dGhpcy54aHIub25yZWFkeXN0YXRlY2hhbmdlPWMsZSl0cnl7dGhpcy54aHIuYWJvcnQoKX1jYXRjaHt9dHlwZW9mIGRvY3VtZW50PGB1YCYmZGVsZXRlIHUucmVxdWVzdHNbdGhpcy5pbmRleF0sdGhpcy54aHI9bnVsbH19LHUucHJvdG90eXBlLm9uTG9hZD1mdW5jdGlvbigpe3ZhciBlO3RyeXt2YXIgdDt0cnl7dD10aGlzLnhoci5nZXRSZXNwb25zZUhlYWRlcihgQ29udGVudC1UeXBlYCl9Y2F0Y2h7fWU9KHQ9PT1gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYHx8dD09PWBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IGNoYXJzZXQ9VVRGLThgKSYmdGhpcy54aHIucmVzcG9uc2V8fHRoaXMueGhyLnJlc3BvbnNlVGV4dH1jYXRjaChlKXt0aGlzLm9uRXJyb3IoZSl9ZSE9bnVsbCYmdGhpcy5vbkRhdGEoZSl9LHUucHJvdG90eXBlLmhhc1hEUj1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgWERvbWFpblJlcXVlc3Q8YHVgJiYhdGhpcy54cyYmdGhpcy5lbmFibGVzWERSfSx1LnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuY2xlYW51cCgpfSx1LnJlcXVlc3RzQ291bnQ9MCx1LnJlcXVlc3RzPXt9LHR5cGVvZiBkb2N1bWVudDxgdWApe2lmKHR5cGVvZiBhdHRhY2hFdmVudD09YGZ1bmN0aW9uYClhdHRhY2hFdmVudChgb251bmxvYWRgLGYpO2Vsc2UgaWYodHlwZW9mIGFkZEV2ZW50TGlzdGVuZXI9PWBmdW5jdGlvbmApe3ZhciBkPWBvbnBhZ2VoaWRlYGluIHM/YHBhZ2VoaWRlYDpgdW5sb2FkYDthZGRFdmVudExpc3RlbmVyKGQsZiwhMSl9fWZ1bmN0aW9uIGYoKXtmb3IodmFyIGUgaW4gdS5yZXF1ZXN0cyl1LnJlcXVlc3RzLmhhc093blByb3BlcnR5KGUpJiZ1LnJlcXVlc3RzW2VdLmFib3J0KCl9fSkpLGljPXMoKChlLHQpPT57dmFyIG49bmMoKSxyPWVjKCksaT1IcygpO3QuZXhwb3J0cz1sO3ZhciBhPS9cbi9nLG89L1xcbi9nLHM7ZnVuY3Rpb24gYygpe31mdW5jdGlvbiBsKGUpe24uY2FsbCh0aGlzLGUpLHRoaXMucXVlcnk9dGhpcy5xdWVyeXx8e30sc3x8PWkuX19fZWlvPWkuX19fZWlvfHxbXSx0aGlzLmluZGV4PXMubGVuZ3RoO3ZhciB0PXRoaXM7cy5wdXNoKGZ1bmN0aW9uKGUpe3Qub25EYXRhKGUpfSksdGhpcy5xdWVyeS5qPXRoaXMuaW5kZXgsdHlwZW9mIGFkZEV2ZW50TGlzdGVuZXI9PWBmdW5jdGlvbmAmJmFkZEV2ZW50TGlzdGVuZXIoYGJlZm9yZXVubG9hZGAsZnVuY3Rpb24oKXt0LnNjcmlwdCYmKHQuc2NyaXB0Lm9uZXJyb3I9Yyl9LCExKX1yKGwsbiksbC5wcm90b3R5cGUuc3VwcG9ydHNCaW5hcnk9ITEsbC5wcm90b3R5cGUuZG9DbG9zZT1mdW5jdGlvbigpe3RoaXMuc2NyaXB0JiY9KHRoaXMuc2NyaXB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5zY3JpcHQpLG51bGwpLHRoaXMuZm9ybSYmKHRoaXMuZm9ybS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZm9ybSksdGhpcy5mb3JtPW51bGwsdGhpcy5pZnJhbWU9bnVsbCksbi5wcm90b3R5cGUuZG9DbG9zZS5jYWxsKHRoaXMpfSxsLnByb3RvdHlwZS5kb1BvbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgc2NyaXB0YCk7dGhpcy5zY3JpcHQmJj0odGhpcy5zY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnNjcmlwdCksbnVsbCksdC5hc3luYz0hMCx0LnNyYz10aGlzLnVyaSgpLHQub25lcnJvcj1mdW5jdGlvbih0KXtlLm9uRXJyb3IoYGpzb25wIHBvbGwgZXJyb3JgLHQpfTt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShgc2NyaXB0YClbMF07bj9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsbik6KGRvY3VtZW50LmhlYWR8fGRvY3VtZW50LmJvZHkpLmFwcGVuZENoaWxkKHQpLHRoaXMuc2NyaXB0PXQsdHlwZW9mIG5hdmlnYXRvcjxgdWAmJi9nZWNrby9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBpZnJhbWVgKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSl9LDEwMCl9LGwucHJvdG90eXBlLmRvV3JpdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCF0aGlzLmZvcm0pe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGZvcm1gKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYHRleHRhcmVhYCkscz10aGlzLmlmcmFtZUlkPWBlaW9faWZyYW1lX2ArdGhpcy5pbmRleCxjO3IuY2xhc3NOYW1lPWBzb2NrZXRpb2Asci5zdHlsZS5wb3NpdGlvbj1gYWJzb2x1dGVgLHIuc3R5bGUudG9wPWAtMTAwMHB4YCxyLnN0eWxlLmxlZnQ9YC0xMDAwcHhgLHIudGFyZ2V0PXMsci5tZXRob2Q9YFBPU1RgLHIuc2V0QXR0cmlidXRlKGBhY2NlcHQtY2hhcnNldGAsYHV0Zi04YCksaS5uYW1lPWBkYCxyLmFwcGVuZENoaWxkKGkpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQociksdGhpcy5mb3JtPXIsdGhpcy5hcmVhPWl9dGhpcy5mb3JtLmFjdGlvbj10aGlzLnVyaSgpO2Z1bmN0aW9uIGwoKXt1KCksdCgpfWZ1bmN0aW9uIHUoKXtpZihuLmlmcmFtZSl0cnl7bi5mb3JtLnJlbW92ZUNoaWxkKG4uaWZyYW1lKX1jYXRjaChlKXtuLm9uRXJyb3IoYGpzb25wIHBvbGxpbmcgaWZyYW1lIHJlbW92YWwgZXJyb3JgLGUpfXRyeXt2YXIgZT1gPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6MCIgbmFtZT0iYCtuLmlmcmFtZUlkK2AiPmA7Yz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpfWNhdGNoe2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgaWZyYW1lYCksYy5uYW1lPW4uaWZyYW1lSWQsYy5zcmM9YGphdmFzY3JpcHQ6MGB9Yy5pZD1uLmlmcmFtZUlkLG4uZm9ybS5hcHBlbmRDaGlsZChjKSxuLmlmcmFtZT1jfXUoKSxlPWUucmVwbGFjZShvLGBcXApgKSx0aGlzLmFyZWEudmFsdWU9ZS5yZXBsYWNlKGEsYFxcbmApO3RyeXt0aGlzLmZvcm0uc3VibWl0KCl9Y2F0Y2h7fXRoaXMuaWZyYW1lLmF0dGFjaEV2ZW50P3RoaXMuaWZyYW1lLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe24uaWZyYW1lLnJlYWR5U3RhdGU9PT1gY29tcGxldGVgJiZsKCl9OnRoaXMuaWZyYW1lLm9ubG9hZD1sfX0pKSxhYz1zKCgoZSx0KT0+e3QuZXhwb3J0cz17fX0pKSxvYz1zKCgoZSx0KT0+e3ZhciBuPVFzKCkscj1acygpLGk9JHMoKSxhPWVjKCksbz10YygpLHM9RnMoKShgZW5naW5lLmlvLWNsaWVudDp3ZWJzb2NrZXRgKSxjLGw7aWYodHlwZW9mIFdlYlNvY2tldDxgdWA/Yz1XZWJTb2NrZXQ6dHlwZW9mIHNlbGY8YHVgJiYoYz1zZWxmLldlYlNvY2tldHx8c2VsZi5Nb3pXZWJTb2NrZXQpLHR5cGVvZiB3aW5kb3c+YHVgKXRyeXtsPWFjKCl9Y2F0Y2h7fXZhciB1PWN8fGw7dC5leHBvcnRzPWQ7ZnVuY3Rpb24gZChlKXtlJiZlLmZvcmNlQmFzZTY0JiYodGhpcy5zdXBwb3J0c0JpbmFyeT0hMSksdGhpcy5wZXJNZXNzYWdlRGVmbGF0ZT1lLnBlck1lc3NhZ2VEZWZsYXRlLHRoaXMudXNpbmdCcm93c2VyV2ViU29ja2V0PWMmJiFlLmZvcmNlTm9kZSx0aGlzLnByb3RvY29scz1lLnByb3RvY29scyx0aGlzLnVzaW5nQnJvd3NlcldlYlNvY2tldHx8KHU9bCksbi5jYWxsKHRoaXMsZSl9YShkLG4pLGQucHJvdG90eXBlLm5hbWU9YHdlYnNvY2tldGAsZC5wcm90b3R5cGUuc3VwcG9ydHNCaW5hcnk9ITAsZC5wcm90b3R5cGUuZG9PcGVuPWZ1bmN0aW9uKCl7aWYodGhpcy5jaGVjaygpKXt2YXIgZT10aGlzLnVyaSgpLHQ9dGhpcy5wcm90b2NvbHMsbj17fTt0aGlzLmlzUmVhY3ROYXRpdmV8fChuLmFnZW50PXRoaXMuYWdlbnQsbi5wZXJNZXNzYWdlRGVmbGF0ZT10aGlzLnBlck1lc3NhZ2VEZWZsYXRlLG4ucGZ4PXRoaXMucGZ4LG4ua2V5PXRoaXMua2V5LG4ucGFzc3BocmFzZT10aGlzLnBhc3NwaHJhc2Usbi5jZXJ0PXRoaXMuY2VydCxuLmNhPXRoaXMuY2Esbi5jaXBoZXJzPXRoaXMuY2lwaGVycyxuLnJlamVjdFVuYXV0aG9yaXplZD10aGlzLnJlamVjdFVuYXV0aG9yaXplZCksdGhpcy5leHRyYUhlYWRlcnMmJihuLmhlYWRlcnM9dGhpcy5leHRyYUhlYWRlcnMpLHRoaXMubG9jYWxBZGRyZXNzJiYobi5sb2NhbEFkZHJlc3M9dGhpcy5sb2NhbEFkZHJlc3MpO3RyeXt0aGlzLndzPXRoaXMudXNpbmdCcm93c2VyV2ViU29ja2V0JiYhdGhpcy5pc1JlYWN0TmF0aXZlP3Q/bmV3IHUoZSx0KTpuZXcgdShlKTpuZXcgdShlLHQsbil9Y2F0Y2goZSl7cmV0dXJuIHRoaXMuZW1pdChgZXJyb3JgLGUpfXRoaXMud3MuYmluYXJ5VHlwZT09PXZvaWQgMCYmKHRoaXMuc3VwcG9ydHNCaW5hcnk9ITEpLHRoaXMud3Muc3VwcG9ydHMmJnRoaXMud3Muc3VwcG9ydHMuYmluYXJ5Pyh0aGlzLnN1cHBvcnRzQmluYXJ5PSEwLHRoaXMud3MuYmluYXJ5VHlwZT1gbm9kZWJ1ZmZlcmApOnRoaXMud3MuYmluYXJ5VHlwZT1gYXJyYXlidWZmZXJgLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKX19LGQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLndzLm9ub3Blbj1mdW5jdGlvbigpe2Uub25PcGVuKCl9LHRoaXMud3Mub25jbG9zZT1mdW5jdGlvbigpe2Uub25DbG9zZSgpfSx0aGlzLndzLm9ubWVzc2FnZT1mdW5jdGlvbih0KXtlLm9uRGF0YSh0LmRhdGEpfSx0aGlzLndzLm9uZXJyb3I9ZnVuY3Rpb24odCl7ZS5vbkVycm9yKGB3ZWJzb2NrZXQgZXJyb3JgLHQpfX0sZC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLndyaXRhYmxlPSExO2Zvcih2YXIgbj1lLmxlbmd0aCxpPTAsYT1uO2k8YTtpKyspKGZ1bmN0aW9uKGUpe3IuZW5jb2RlUGFja2V0KGUsdC5zdXBwb3J0c0JpbmFyeSxmdW5jdGlvbihyKXtpZighdC51c2luZ0Jyb3dzZXJXZWJTb2NrZXQpe3ZhciBpPXt9O2Uub3B0aW9ucyYmKGkuY29tcHJlc3M9ZS5vcHRpb25zLmNvbXByZXNzKSx0LnBlck1lc3NhZ2VEZWZsYXRlJiYodHlwZW9mIHI9PWBzdHJpbmdgP0J1ZmZlci5ieXRlTGVuZ3RoKHIpOnIubGVuZ3RoKTx0LnBlck1lc3NhZ2VEZWZsYXRlLnRocmVzaG9sZCYmKGkuY29tcHJlc3M9ITEpfXRyeXt0LnVzaW5nQnJvd3NlcldlYlNvY2tldD90LndzLnNlbmQocik6dC53cy5zZW5kKHIsaSl9Y2F0Y2h7cyhgd2Vic29ja2V0IGNsb3NlZCBiZWZvcmUgb25jbG9zZSBldmVudGApfS0tbnx8bygpfSl9KShlW2ldKTtmdW5jdGlvbiBvKCl7dC5lbWl0KGBmbHVzaGApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LndyaXRhYmxlPSEwLHQuZW1pdChgZHJhaW5gKX0sMCl9fSxkLnByb3RvdHlwZS5vbkNsb3NlPWZ1bmN0aW9uKCl7bi5wcm90b3R5cGUub25DbG9zZS5jYWxsKHRoaXMpfSxkLnByb3RvdHlwZS5kb0Nsb3NlPWZ1bmN0aW9uKCl7dGhpcy53cyE9PXZvaWQgMCYmdGhpcy53cy5jbG9zZSgpfSxkLnByb3RvdHlwZS51cmk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnF1ZXJ5fHx7fSx0PXRoaXMuc2VjdXJlP2B3c3NgOmB3c2Asbj1gYDt0aGlzLnBvcnQmJih0PT09YHdzc2AmJk51bWJlcih0aGlzLnBvcnQpIT09NDQzfHx0PT09YHdzYCYmTnVtYmVyKHRoaXMucG9ydCkhPT04MCkmJihuPWA6YCt0aGlzLnBvcnQpLHRoaXMudGltZXN0YW1wUmVxdWVzdHMmJihlW3RoaXMudGltZXN0YW1wUGFyYW1dPW8oKSksdGhpcy5zdXBwb3J0c0JpbmFyeXx8KGUuYjY0PTEpLGU9aS5lbmNvZGUoZSksZS5sZW5ndGgmJihlPWA/YCtlKTt2YXIgcj10aGlzLmhvc3RuYW1lLmluZGV4T2YoYDpgKSE9PS0xO3JldHVybiB0K2A6Ly9gKyhyP2BbYCt0aGlzLmhvc3RuYW1lK2BdYDp0aGlzLmhvc3RuYW1lKStuK3RoaXMucGF0aCtlfSxkLnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbigpe3JldHVybiEhdSYmIShgX19pbml0aWFsaXplYGluIHUmJnRoaXMubmFtZT09PWQucHJvdG90eXBlLm5hbWUpfX0pKSxzYz1zKChlPT57dmFyIHQ9VXMoKSxuPXJjKCkscj1pYygpLGk9b2MoKTtlLnBvbGxpbmc9YSxlLndlYnNvY2tldD1pO2Z1bmN0aW9uIGEoZSl7dmFyIGksYT0hMSxvPSExLHM9ITEhPT1lLmpzb25wO2lmKHR5cGVvZiBsb2NhdGlvbjxgdWApe3ZhciBjPWxvY2F0aW9uLnByb3RvY29sPT09YGh0dHBzOmAsbD1sb2NhdGlvbi5wb3J0O2x8fD1jPzQ0Mzo4MCxhPWUuaG9zdG5hbWUhPT1sb2NhdGlvbi5ob3N0bmFtZXx8bCE9PWUucG9ydCxvPWUuc2VjdXJlIT09Y31pZihlLnhkb21haW49YSxlLnhzY2hlbWU9byxpPW5ldyB0KGUpLGBvcGVuYGluIGkmJiFlLmZvcmNlSlNPTlApcmV0dXJuIG5ldyBuKGUpO2lmKCFzKXRocm93IEVycm9yKGBKU09OUCBkaXNhYmxlZGApO3JldHVybiBuZXcgcihlKX19KSksY2M9cygoKGUsdCk9Pnt2YXIgbj1bXS5pbmRleE9mO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG4pcmV0dXJuIGUuaW5kZXhPZih0KTtmb3IodmFyIHI9MDtyPGUubGVuZ3RoOysrcilpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX19KSksbGM9cygoKGUsdCk9Pnt2YXIgbj0vXig/Oig/IVteOkBdKzpbXjpAXC9dKkApKGh0dHB8aHR0cHN8d3N8d3NzKTpcL1wvKT8oKD86KChbXjpAXSopKD86OihbXjpAXSopKT8pP0ApPygoPzpbYS1mMC05XXswLDR9Oil7Miw3fVthLWYwLTldezAsNH18W146XC8/I10qKSg/OjooXGQqKSk/KSgoKFwvKD86W14/I10oPyFbXj8jXC9dKlwuW14/I1wvLl0rKD86Wz8jXXwkKSkpKlwvPyk/KFtePyNcL10qKSkoPzpcPyhbXiNdKikpPyg/OiMoLiopKT8pLyxyPVtgc291cmNlYCxgcHJvdG9jb2xgLGBhdXRob3JpdHlgLGB1c2VySW5mb2AsYHVzZXJgLGBwYXNzd29yZGAsYGhvc3RgLGBwb3J0YCxgcmVsYXRpdmVgLGBwYXRoYCxgZGlyZWN0b3J5YCxgZmlsZWAsYHF1ZXJ5YCxgYW5jaG9yYF07dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUsbz1lLmluZGV4T2YoYFtgKSxzPWUuaW5kZXhPZihgXWApO28hPS0xJiZzIT0tMSYmKGU9ZS5zdWJzdHJpbmcoMCxvKStlLnN1YnN0cmluZyhvLHMpLnJlcGxhY2UoLzovZyxgO2ApK2Uuc3Vic3RyaW5nKHMsZS5sZW5ndGgpKTtmb3IodmFyIGM9bi5leGVjKGV8fGBgKSxsPXt9LHU9MTQ7dS0tOylsW3JbdV1dPWNbdV18fGBgO3JldHVybiBvIT0tMSYmcyE9LTEmJihsLnNvdXJjZT10LGwuaG9zdD1sLmhvc3Quc3Vic3RyaW5nKDEsbC5ob3N0Lmxlbmd0aC0xKS5yZXBsYWNlKC87L2csYDpgKSxsLmF1dGhvcml0eT1sLmF1dGhvcml0eS5yZXBsYWNlKGBbYCxgYCkucmVwbGFjZShgXWAsYGApLnJlcGxhY2UoLzsvZyxgOmApLGwuaXB2NnVyaT0hMCksbC5wYXRoTmFtZXM9aShsLGwucGF0aCksbC5xdWVyeUtleT1hKGwsbC5xdWVyeSksbH07ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXQucmVwbGFjZSgvXC97Miw5fS9nLGAvYCkuc3BsaXQoYC9gKTtyZXR1cm4odC5zdWJzdHIoMCwxKT09YC9gfHx0Lmxlbmd0aD09PTApJiZuLnNwbGljZSgwLDEpLHQuc3Vic3RyKHQubGVuZ3RoLTEsMSk9PWAvYCYmbi5zcGxpY2Uobi5sZW5ndGgtMSwxKSxufWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj17fTtyZXR1cm4gdC5yZXBsYWNlKC8oPzpefCYpKFteJj1dKik9PyhbXiZdKikvZyxmdW5jdGlvbihlLHQscil7dCYmKG5bdF09cil9KSxufX0pKSx1Yz1zKCgoZSx0KT0+e3ZhciBuPXNjKCkscj1JcygpLGk9RnMoKShgZW5naW5lLmlvLWNsaWVudDpzb2NrZXRgKSxhPWNjKCksbz1acygpLHM9bGMoKSxjPSRzKCk7dC5leHBvcnRzPWw7ZnVuY3Rpb24gbChlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGwpKXJldHVybiBuZXcgbChlLHQpO3R8fD17fSxlJiZ0eXBlb2YgZT09YG9iamVjdGAmJih0PWUsZT1udWxsKSxlPyhlPXMoZSksdC5ob3N0bmFtZT1lLmhvc3QsdC5zZWN1cmU9ZS5wcm90b2NvbD09PWBodHRwc2B8fGUucHJvdG9jb2w9PT1gd3NzYCx0LnBvcnQ9ZS5wb3J0LGUucXVlcnkmJih0LnF1ZXJ5PWUucXVlcnkpKTp0Lmhvc3QmJih0Lmhvc3RuYW1lPXModC5ob3N0KS5ob3N0KSx0aGlzLnNlY3VyZT10LnNlY3VyZT09bnVsbD90eXBlb2YgbG9jYXRpb248YHVgJiZsb2NhdGlvbi5wcm90b2NvbD09PWBodHRwczpgOnQuc2VjdXJlLHQuaG9zdG5hbWUmJiF0LnBvcnQmJih0LnBvcnQ9dGhpcy5zZWN1cmU/YDQ0M2A6YDgwYCksdGhpcy5hZ2VudD10LmFnZW50fHwhMSx0aGlzLmhvc3RuYW1lPXQuaG9zdG5hbWV8fCh0eXBlb2YgbG9jYXRpb248YHVgP2xvY2F0aW9uLmhvc3RuYW1lOmBsb2NhbGhvc3RgKSx0aGlzLnBvcnQ9dC5wb3J0fHwodHlwZW9mIGxvY2F0aW9uPGB1YCYmbG9jYXRpb24ucG9ydD9sb2NhdGlvbi5wb3J0OnRoaXMuc2VjdXJlPzQ0Mzo4MCksdGhpcy5xdWVyeT10LnF1ZXJ5fHx7fSx0eXBlb2YgdGhpcy5xdWVyeT09YHN0cmluZ2AmJih0aGlzLnF1ZXJ5PWMuZGVjb2RlKHRoaXMucXVlcnkpKSx0aGlzLnVwZ3JhZGU9ITEhPT10LnVwZ3JhZGUsdGhpcy5wYXRoPSh0LnBhdGh8fGAvZW5naW5lLmlvYCkucmVwbGFjZSgvXC8kLyxgYCkrYC9gLHRoaXMuZm9yY2VKU09OUD0hIXQuZm9yY2VKU09OUCx0aGlzLmpzb25wPSExIT09dC5qc29ucCx0aGlzLmZvcmNlQmFzZTY0PSEhdC5mb3JjZUJhc2U2NCx0aGlzLmVuYWJsZXNYRFI9ISF0LmVuYWJsZXNYRFIsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEhPT10LndpdGhDcmVkZW50aWFscyx0aGlzLnRpbWVzdGFtcFBhcmFtPXQudGltZXN0YW1wUGFyYW18fGB0YCx0aGlzLnRpbWVzdGFtcFJlcXVlc3RzPXQudGltZXN0YW1wUmVxdWVzdHMsdGhpcy50cmFuc3BvcnRzPXQudHJhbnNwb3J0c3x8W2Bwb2xsaW5nYCxgd2Vic29ja2V0YF0sdGhpcy50cmFuc3BvcnRPcHRpb25zPXQudHJhbnNwb3J0T3B0aW9uc3x8e30sdGhpcy5yZWFkeVN0YXRlPWBgLHRoaXMud3JpdGVCdWZmZXI9W10sdGhpcy5wcmV2QnVmZmVyTGVuPTAsdGhpcy5wb2xpY3lQb3J0PXQucG9saWN5UG9ydHx8ODQzLHRoaXMucmVtZW1iZXJVcGdyYWRlPXQucmVtZW1iZXJVcGdyYWRlfHwhMSx0aGlzLmJpbmFyeVR5cGU9bnVsbCx0aGlzLm9ubHlCaW5hcnlVcGdyYWRlcz10Lm9ubHlCaW5hcnlVcGdyYWRlcyx0aGlzLnBlck1lc3NhZ2VEZWZsYXRlPSExPT09dC5wZXJNZXNzYWdlRGVmbGF0ZT8hMTp0LnBlck1lc3NhZ2VEZWZsYXRlfHx7fSwhMD09PXRoaXMucGVyTWVzc2FnZURlZmxhdGUmJih0aGlzLnBlck1lc3NhZ2VEZWZsYXRlPXt9KSx0aGlzLnBlck1lc3NhZ2VEZWZsYXRlJiZ0aGlzLnBlck1lc3NhZ2VEZWZsYXRlLnRocmVzaG9sZD09bnVsbCYmKHRoaXMucGVyTWVzc2FnZURlZmxhdGUudGhyZXNob2xkPTEwMjQpLHRoaXMucGZ4PXQucGZ4fHxudWxsLHRoaXMua2V5PXQua2V5fHxudWxsLHRoaXMucGFzc3BocmFzZT10LnBhc3NwaHJhc2V8fG51bGwsdGhpcy5jZXJ0PXQuY2VydHx8bnVsbCx0aGlzLmNhPXQuY2F8fG51bGwsdGhpcy5jaXBoZXJzPXQuY2lwaGVyc3x8bnVsbCx0aGlzLnJlamVjdFVuYXV0aG9yaXplZD10LnJlamVjdFVuYXV0aG9yaXplZD09PXZvaWQgMD8hMDp0LnJlamVjdFVuYXV0aG9yaXplZCx0aGlzLmZvcmNlTm9kZT0hIXQuZm9yY2VOb2RlLHRoaXMuaXNSZWFjdE5hdGl2ZT10eXBlb2YgbmF2aWdhdG9yPGB1YCYmdHlwZW9mIG5hdmlnYXRvci5wcm9kdWN0PT1gc3RyaW5nYCYmbmF2aWdhdG9yLnByb2R1Y3QudG9Mb3dlckNhc2UoKT09PWByZWFjdG5hdGl2ZWAsKHR5cGVvZiBzZWxmPmB1YHx8dGhpcy5pc1JlYWN0TmF0aXZlKSYmKHQuZXh0cmFIZWFkZXJzJiZPYmplY3Qua2V5cyh0LmV4dHJhSGVhZGVycykubGVuZ3RoPjAmJih0aGlzLmV4dHJhSGVhZGVycz10LmV4dHJhSGVhZGVycyksdC5sb2NhbEFkZHJlc3MmJih0aGlzLmxvY2FsQWRkcmVzcz10LmxvY2FsQWRkcmVzcykpLHRoaXMuaWQ9bnVsbCx0aGlzLnVwZ3JhZGVzPW51bGwsdGhpcy5waW5nSW50ZXJ2YWw9bnVsbCx0aGlzLnBpbmdUaW1lb3V0PW51bGwsdGhpcy5waW5nSW50ZXJ2YWxUaW1lcj1udWxsLHRoaXMucGluZ1RpbWVvdXRUaW1lcj1udWxsLHRoaXMub3BlbigpfWwucHJpb3JXZWJzb2NrZXRTdWNjZXNzPSExLHIobC5wcm90b3R5cGUpLGwucHJvdG9jb2w9by5wcm90b2NvbCxsLlNvY2tldD1sLGwuVHJhbnNwb3J0PVFzKCksbC50cmFuc3BvcnRzPXNjKCksbC5wYXJzZXI9WnMoKSxsLnByb3RvdHlwZS5jcmVhdGVUcmFuc3BvcnQ9ZnVuY3Rpb24oZSl7aShgY3JlYXRpbmcgdHJhbnNwb3J0ICIlcyJgLGUpO3ZhciB0PXUodGhpcy5xdWVyeSk7dC5FSU89by5wcm90b2NvbCx0LnRyYW5zcG9ydD1lO3ZhciByPXRoaXMudHJhbnNwb3J0T3B0aW9uc1tlXXx8e307cmV0dXJuIHRoaXMuaWQmJih0LnNpZD10aGlzLmlkKSxuZXcgbltlXSh7cXVlcnk6dCxzb2NrZXQ6dGhpcyxhZ2VudDpyLmFnZW50fHx0aGlzLmFnZW50LGhvc3RuYW1lOnIuaG9zdG5hbWV8fHRoaXMuaG9zdG5hbWUscG9ydDpyLnBvcnR8fHRoaXMucG9ydCxzZWN1cmU6ci5zZWN1cmV8fHRoaXMuc2VjdXJlLHBhdGg6ci5wYXRofHx0aGlzLnBhdGgsZm9yY2VKU09OUDpyLmZvcmNlSlNPTlB8fHRoaXMuZm9yY2VKU09OUCxqc29ucDpyLmpzb25wfHx0aGlzLmpzb25wLGZvcmNlQmFzZTY0OnIuZm9yY2VCYXNlNjR8fHRoaXMuZm9yY2VCYXNlNjQsZW5hYmxlc1hEUjpyLmVuYWJsZXNYRFJ8fHRoaXMuZW5hYmxlc1hEUix3aXRoQ3JlZGVudGlhbHM6ci53aXRoQ3JlZGVudGlhbHN8fHRoaXMud2l0aENyZWRlbnRpYWxzLHRpbWVzdGFtcFJlcXVlc3RzOnIudGltZXN0YW1wUmVxdWVzdHN8fHRoaXMudGltZXN0YW1wUmVxdWVzdHMsdGltZXN0YW1wUGFyYW06ci50aW1lc3RhbXBQYXJhbXx8dGhpcy50aW1lc3RhbXBQYXJhbSxwb2xpY3lQb3J0OnIucG9saWN5UG9ydHx8dGhpcy5wb2xpY3lQb3J0LHBmeDpyLnBmeHx8dGhpcy5wZngsa2V5OnIua2V5fHx0aGlzLmtleSxwYXNzcGhyYXNlOnIucGFzc3BocmFzZXx8dGhpcy5wYXNzcGhyYXNlLGNlcnQ6ci5jZXJ0fHx0aGlzLmNlcnQsY2E6ci5jYXx8dGhpcy5jYSxjaXBoZXJzOnIuY2lwaGVyc3x8dGhpcy5jaXBoZXJzLHJlamVjdFVuYXV0aG9yaXplZDpyLnJlamVjdFVuYXV0aG9yaXplZHx8dGhpcy5yZWplY3RVbmF1dGhvcml6ZWQscGVyTWVzc2FnZURlZmxhdGU6ci5wZXJNZXNzYWdlRGVmbGF0ZXx8dGhpcy5wZXJNZXNzYWdlRGVmbGF0ZSxleHRyYUhlYWRlcnM6ci5leHRyYUhlYWRlcnN8fHRoaXMuZXh0cmFIZWFkZXJzLGZvcmNlTm9kZTpyLmZvcmNlTm9kZXx8dGhpcy5mb3JjZU5vZGUsbG9jYWxBZGRyZXNzOnIubG9jYWxBZGRyZXNzfHx0aGlzLmxvY2FsQWRkcmVzcyxyZXF1ZXN0VGltZW91dDpyLnJlcXVlc3RUaW1lb3V0fHx0aGlzLnJlcXVlc3RUaW1lb3V0LHByb3RvY29sczpyLnByb3RvY29sc3x8dm9pZCAwLGlzUmVhY3ROYXRpdmU6dGhpcy5pc1JlYWN0TmF0aXZlfSl9O2Z1bmN0aW9uIHUoZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9bC5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMucmVtZW1iZXJVcGdyYWRlJiZsLnByaW9yV2Vic29ja2V0U3VjY2VzcyYmdGhpcy50cmFuc3BvcnRzLmluZGV4T2YoYHdlYnNvY2tldGApIT09LTEpZT1gd2Vic29ja2V0YDtlbHNlIGlmKHRoaXMudHJhbnNwb3J0cy5sZW5ndGg9PT0wKXt2YXIgdD10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmVtaXQoYGVycm9yYCxgTm8gdHJhbnNwb3J0cyBhdmFpbGFibGVgKX0sMCk7cmV0dXJufWVsc2UgZT10aGlzLnRyYW5zcG9ydHNbMF07dGhpcy5yZWFkeVN0YXRlPWBvcGVuaW5nYDt0cnl7ZT10aGlzLmNyZWF0ZVRyYW5zcG9ydChlKX1jYXRjaHt0aGlzLnRyYW5zcG9ydHMuc2hpZnQoKSx0aGlzLm9wZW4oKTtyZXR1cm59ZS5vcGVuKCksdGhpcy5zZXRUcmFuc3BvcnQoZSl9LGwucHJvdG90eXBlLnNldFRyYW5zcG9ydD1mdW5jdGlvbihlKXtpKGBzZXR0aW5nIHRyYW5zcG9ydCAlc2AsZS5uYW1lKTt2YXIgdD10aGlzO3RoaXMudHJhbnNwb3J0JiYoaShgY2xlYXJpbmcgZXhpc3RpbmcgdHJhbnNwb3J0ICVzYCx0aGlzLnRyYW5zcG9ydC5uYW1lKSx0aGlzLnRyYW5zcG9ydC5yZW1vdmVBbGxMaXN0ZW5lcnMoKSksdGhpcy50cmFuc3BvcnQ9ZSxlLm9uKGBkcmFpbmAsZnVuY3Rpb24oKXt0Lm9uRHJhaW4oKX0pLm9uKGBwYWNrZXRgLGZ1bmN0aW9uKGUpe3Qub25QYWNrZXQoZSl9KS5vbihgZXJyb3JgLGZ1bmN0aW9uKGUpe3Qub25FcnJvcihlKX0pLm9uKGBjbG9zZWAsZnVuY3Rpb24oKXt0Lm9uQ2xvc2UoYHRyYW5zcG9ydCBjbG9zZWApfSl9LGwucHJvdG90eXBlLnByb2JlPWZ1bmN0aW9uKGUpe2koYHByb2JpbmcgdHJhbnNwb3J0ICIlcyJgLGUpO3ZhciB0PXRoaXMuY3JlYXRlVHJhbnNwb3J0KGUse3Byb2JlOjF9KSxuPSExLHI9dGhpcztsLnByaW9yV2Vic29ja2V0U3VjY2Vzcz0hMTtmdW5jdGlvbiBhKCl7aWYoci5vbmx5QmluYXJ5VXBncmFkZXMpe3ZhciBhPSF0aGlzLnN1cHBvcnRzQmluYXJ5JiZyLnRyYW5zcG9ydC5zdXBwb3J0c0JpbmFyeTtufHw9YX1ufHwoaShgcHJvYmUgdHJhbnNwb3J0ICIlcyIgb3BlbmVkYCxlKSx0LnNlbmQoW3t0eXBlOmBwaW5nYCxkYXRhOmBwcm9iZWB9XSksdC5vbmNlKGBwYWNrZXRgLGZ1bmN0aW9uKGEpe2lmKCFuKWlmKGEudHlwZT09PWBwb25nYCYmYS5kYXRhPT09YHByb2JlYCl7aWYoaShgcHJvYmUgdHJhbnNwb3J0ICIlcyIgcG9uZ2AsZSksci51cGdyYWRpbmc9ITAsci5lbWl0KGB1cGdyYWRpbmdgLHQpLCF0KXJldHVybjtsLnByaW9yV2Vic29ja2V0U3VjY2Vzcz10Lm5hbWU9PT1gd2Vic29ja2V0YCxpKGBwYXVzaW5nIGN1cnJlbnQgdHJhbnNwb3J0ICIlcyJgLHIudHJhbnNwb3J0Lm5hbWUpLHIudHJhbnNwb3J0LnBhdXNlKGZ1bmN0aW9uKCl7bnx8ci5yZWFkeVN0YXRlIT09YGNsb3NlZGAmJihpKGBjaGFuZ2luZyB0cmFuc3BvcnQgYW5kIHNlbmRpbmcgdXBncmFkZSBwYWNrZXRgKSxmKCksci5zZXRUcmFuc3BvcnQodCksdC5zZW5kKFt7dHlwZTpgdXBncmFkZWB9XSksci5lbWl0KGB1cGdyYWRlYCx0KSx0PW51bGwsci51cGdyYWRpbmc9ITEsci5mbHVzaCgpKX0pfWVsc2V7aShgcHJvYmUgdHJhbnNwb3J0ICIlcyIgZmFpbGVkYCxlKTt2YXIgbz1FcnJvcihgcHJvYmUgZXJyb3JgKTtvLnRyYW5zcG9ydD10Lm5hbWUsci5lbWl0KGB1cGdyYWRlRXJyb3JgLG8pfX0pKX1mdW5jdGlvbiBvKCl7bnx8KG49ITAsZigpLHQuY2xvc2UoKSx0PW51bGwpfWZ1bmN0aW9uIHMobil7dmFyIGE9RXJyb3IoYHByb2JlIGVycm9yOiBgK24pO2EudHJhbnNwb3J0PXQubmFtZSxvKCksaShgcHJvYmUgdHJhbnNwb3J0ICIlcyIgZmFpbGVkIGJlY2F1c2Ugb2YgZXJyb3I6ICVzYCxlLG4pLHIuZW1pdChgdXBncmFkZUVycm9yYCxhKX1mdW5jdGlvbiBjKCl7cyhgdHJhbnNwb3J0IGNsb3NlZGApfWZ1bmN0aW9uIHUoKXtzKGBzb2NrZXQgY2xvc2VkYCl9ZnVuY3Rpb24gZChlKXt0JiZlLm5hbWUhPT10Lm5hbWUmJihpKGAiJXMiIHdvcmtzIC0gYWJvcnRpbmcgIiVzImAsZS5uYW1lLHQubmFtZSksbygpKX1mdW5jdGlvbiBmKCl7dC5yZW1vdmVMaXN0ZW5lcihgb3BlbmAsYSksdC5yZW1vdmVMaXN0ZW5lcihgZXJyb3JgLHMpLHQucmVtb3ZlTGlzdGVuZXIoYGNsb3NlYCxjKSxyLnJlbW92ZUxpc3RlbmVyKGBjbG9zZWAsdSksci5yZW1vdmVMaXN0ZW5lcihgdXBncmFkaW5nYCxkKX10Lm9uY2UoYG9wZW5gLGEpLHQub25jZShgZXJyb3JgLHMpLHQub25jZShgY2xvc2VgLGMpLHRoaXMub25jZShgY2xvc2VgLHUpLHRoaXMub25jZShgdXBncmFkaW5nYCxkKSx0Lm9wZW4oKX0sbC5wcm90b3R5cGUub25PcGVuPWZ1bmN0aW9uKCl7aWYoaShgc29ja2V0IG9wZW5gKSx0aGlzLnJlYWR5U3RhdGU9YG9wZW5gLGwucHJpb3JXZWJzb2NrZXRTdWNjZXNzPXRoaXMudHJhbnNwb3J0Lm5hbWU9PT1gd2Vic29ja2V0YCx0aGlzLmVtaXQoYG9wZW5gKSx0aGlzLmZsdXNoKCksdGhpcy5yZWFkeVN0YXRlPT09YG9wZW5gJiZ0aGlzLnVwZ3JhZGUmJnRoaXMudHJhbnNwb3J0LnBhdXNlKXtpKGBzdGFydGluZyB1cGdyYWRlIHByb2Jlc2ApO2Zvcih2YXIgZT0wLHQ9dGhpcy51cGdyYWRlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLnByb2JlKHRoaXMudXBncmFkZXNbZV0pfX0sbC5wcm90b3R5cGUub25QYWNrZXQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5yZWFkeVN0YXRlPT09YG9wZW5pbmdgfHx0aGlzLnJlYWR5U3RhdGU9PT1gb3BlbmB8fHRoaXMucmVhZHlTdGF0ZT09PWBjbG9zaW5nYClzd2l0Y2goaShgc29ja2V0IHJlY2VpdmU6IHR5cGUgIiVzIiwgZGF0YSAiJXMiYCxlLnR5cGUsZS5kYXRhKSx0aGlzLmVtaXQoYHBhY2tldGAsZSksdGhpcy5lbWl0KGBoZWFydGJlYXRgKSxlLnR5cGUpe2Nhc2Vgb3BlbmA6dGhpcy5vbkhhbmRzaGFrZShKU09OLnBhcnNlKGUuZGF0YSkpO2JyZWFrO2Nhc2VgcG9uZ2A6dGhpcy5zZXRQaW5nKCksdGhpcy5lbWl0KGBwb25nYCk7YnJlYWs7Y2FzZWBlcnJvcmA6dmFyIHQ9RXJyb3IoYHNlcnZlciBlcnJvcmApO3QuY29kZT1lLmRhdGEsdGhpcy5vbkVycm9yKHQpO2JyZWFrO2Nhc2VgbWVzc2FnZWA6dGhpcy5lbWl0KGBkYXRhYCxlLmRhdGEpLHRoaXMuZW1pdChgbWVzc2FnZWAsZS5kYXRhKTticmVha31lbHNlIGkoYHBhY2tldCByZWNlaXZlZCB3aXRoIHNvY2tldCByZWFkeVN0YXRlICIlcyJgLHRoaXMucmVhZHlTdGF0ZSl9LGwucHJvdG90eXBlLm9uSGFuZHNoYWtlPWZ1bmN0aW9uKGUpe3RoaXMuZW1pdChgaGFuZHNoYWtlYCxlKSx0aGlzLmlkPWUuc2lkLHRoaXMudHJhbnNwb3J0LnF1ZXJ5LnNpZD1lLnNpZCx0aGlzLnVwZ3JhZGVzPXRoaXMuZmlsdGVyVXBncmFkZXMoZS51cGdyYWRlcyksdGhpcy5waW5nSW50ZXJ2YWw9ZS5waW5nSW50ZXJ2YWwsdGhpcy5waW5nVGltZW91dD1lLnBpbmdUaW1lb3V0LHRoaXMub25PcGVuKCksdGhpcy5yZWFkeVN0YXRlIT09YGNsb3NlZGAmJih0aGlzLnNldFBpbmcoKSx0aGlzLnJlbW92ZUxpc3RlbmVyKGBoZWFydGJlYXRgLHRoaXMub25IZWFydGJlYXQpLHRoaXMub24oYGhlYXJ0YmVhdGAsdGhpcy5vbkhlYXJ0YmVhdCkpfSxsLnByb3RvdHlwZS5vbkhlYXJ0YmVhdD1mdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy5waW5nVGltZW91dFRpbWVyKTt2YXIgdD10aGlzO3QucGluZ1RpbWVvdXRUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5yZWFkeVN0YXRlIT09YGNsb3NlZGAmJnQub25DbG9zZShgcGluZyB0aW1lb3V0YCl9LGV8fHQucGluZ0ludGVydmFsK3QucGluZ1RpbWVvdXQpfSxsLnByb3RvdHlwZS5zZXRQaW5nPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztjbGVhclRpbWVvdXQoZS5waW5nSW50ZXJ2YWxUaW1lciksZS5waW5nSW50ZXJ2YWxUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aShgd3JpdGluZyBwaW5nIHBhY2tldCAtIGV4cGVjdGluZyBwb25nIHdpdGhpbiAlc21zYCxlLnBpbmdUaW1lb3V0KSxlLnBpbmcoKSxlLm9uSGVhcnRiZWF0KGUucGluZ1RpbWVvdXQpfSxlLnBpbmdJbnRlcnZhbCl9LGwucHJvdG90eXBlLnBpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuc2VuZFBhY2tldChgcGluZ2AsZnVuY3Rpb24oKXtlLmVtaXQoYHBpbmdgKX0pfSxsLnByb3RvdHlwZS5vbkRyYWluPWZ1bmN0aW9uKCl7dGhpcy53cml0ZUJ1ZmZlci5zcGxpY2UoMCx0aGlzLnByZXZCdWZmZXJMZW4pLHRoaXMucHJldkJ1ZmZlckxlbj0wLHRoaXMud3JpdGVCdWZmZXIubGVuZ3RoPT09MD90aGlzLmVtaXQoYGRyYWluYCk6dGhpcy5mbHVzaCgpfSxsLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3RoaXMucmVhZHlTdGF0ZSE9PWBjbG9zZWRgJiZ0aGlzLnRyYW5zcG9ydC53cml0YWJsZSYmIXRoaXMudXBncmFkaW5nJiZ0aGlzLndyaXRlQnVmZmVyLmxlbmd0aCYmKGkoYGZsdXNoaW5nICVkIHBhY2tldHMgaW4gc29ja2V0YCx0aGlzLndyaXRlQnVmZmVyLmxlbmd0aCksdGhpcy50cmFuc3BvcnQuc2VuZCh0aGlzLndyaXRlQnVmZmVyKSx0aGlzLnByZXZCdWZmZXJMZW49dGhpcy53cml0ZUJ1ZmZlci5sZW5ndGgsdGhpcy5lbWl0KGBmbHVzaGApKX0sbC5wcm90b3R5cGUud3JpdGU9bC5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuc2VuZFBhY2tldChgbWVzc2FnZWAsZSx0LG4pLHRoaXN9LGwucHJvdG90eXBlLnNlbmRQYWNrZXQ9ZnVuY3Rpb24oZSx0LG4scil7aWYodHlwZW9mIHQ9PWBmdW5jdGlvbmAmJihyPXQsdD12b2lkIDApLHR5cGVvZiBuPT1gZnVuY3Rpb25gJiYocj1uLG49bnVsbCksISh0aGlzLnJlYWR5U3RhdGU9PT1gY2xvc2luZ2B8fHRoaXMucmVhZHlTdGF0ZT09PWBjbG9zZWRgKSl7bnx8PXt9LG4uY29tcHJlc3M9ITEhPT1uLmNvbXByZXNzO3ZhciBpPXt0eXBlOmUsZGF0YTp0LG9wdGlvbnM6bn07dGhpcy5lbWl0KGBwYWNrZXRDcmVhdGVgLGkpLHRoaXMud3JpdGVCdWZmZXIucHVzaChpKSxyJiZ0aGlzLm9uY2UoYGZsdXNoYCxyKSx0aGlzLmZsdXNoKCl9fSxsLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe2lmKHRoaXMucmVhZHlTdGF0ZT09PWBvcGVuaW5nYHx8dGhpcy5yZWFkeVN0YXRlPT09YG9wZW5gKXt0aGlzLnJlYWR5U3RhdGU9YGNsb3NpbmdgO3ZhciBlPXRoaXM7dGhpcy53cml0ZUJ1ZmZlci5sZW5ndGg/dGhpcy5vbmNlKGBkcmFpbmAsZnVuY3Rpb24oKXt0aGlzLnVwZ3JhZGluZz9yKCk6dCgpfSk6dGhpcy51cGdyYWRpbmc/cigpOnQoKX1mdW5jdGlvbiB0KCl7ZS5vbkNsb3NlKGBmb3JjZWQgY2xvc2VgKSxpKGBzb2NrZXQgY2xvc2luZyAtIHRlbGxpbmcgdHJhbnNwb3J0IHRvIGNsb3NlYCksZS50cmFuc3BvcnQuY2xvc2UoKX1mdW5jdGlvbiBuKCl7ZS5yZW1vdmVMaXN0ZW5lcihgdXBncmFkZWAsbiksZS5yZW1vdmVMaXN0ZW5lcihgdXBncmFkZUVycm9yYCxuKSx0KCl9ZnVuY3Rpb24gcigpe2Uub25jZShgdXBncmFkZWAsbiksZS5vbmNlKGB1cGdyYWRlRXJyb3JgLG4pfXJldHVybiB0aGlzfSxsLnByb3RvdHlwZS5vbkVycm9yPWZ1bmN0aW9uKGUpe2koYHNvY2tldCBlcnJvciAlamAsZSksbC5wcmlvcldlYnNvY2tldFN1Y2Nlc3M9ITEsdGhpcy5lbWl0KGBlcnJvcmAsZSksdGhpcy5vbkNsb3NlKGB0cmFuc3BvcnQgZXJyb3JgLGUpfSxsLnByb3RvdHlwZS5vbkNsb3NlPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5yZWFkeVN0YXRlPT09YG9wZW5pbmdgfHx0aGlzLnJlYWR5U3RhdGU9PT1gb3BlbmB8fHRoaXMucmVhZHlTdGF0ZT09PWBjbG9zaW5nYCl7aShgc29ja2V0IGNsb3NlIHdpdGggcmVhc29uOiAiJXMiYCxlKTt2YXIgbj10aGlzO2NsZWFyVGltZW91dCh0aGlzLnBpbmdJbnRlcnZhbFRpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5waW5nVGltZW91dFRpbWVyKSx0aGlzLnRyYW5zcG9ydC5yZW1vdmVBbGxMaXN0ZW5lcnMoYGNsb3NlYCksdGhpcy50cmFuc3BvcnQuY2xvc2UoKSx0aGlzLnRyYW5zcG9ydC5yZW1vdmVBbGxMaXN0ZW5lcnMoKSx0aGlzLnJlYWR5U3RhdGU9YGNsb3NlZGAsdGhpcy5pZD1udWxsLHRoaXMuZW1pdChgY2xvc2VgLGUsdCksbi53cml0ZUJ1ZmZlcj1bXSxuLnByZXZCdWZmZXJMZW49MH19LGwucHJvdG90eXBlLmZpbHRlclVwZ3JhZGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTAscj1lLmxlbmd0aDtuPHI7bisrKX5hKHRoaXMudHJhbnNwb3J0cyxlW25dKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fX0pKSxkYz1zKCgoZSx0KT0+e3QuZXhwb3J0cz11YygpLHQuZXhwb3J0cy5wYXJzZXI9WnMoKX0pKSxmYz1zKCgoZSx0KT0+e3QhPT12b2lkIDAmJih0LmV4cG9ydHM9bik7ZnVuY3Rpb24gbihlKXtpZihlKXJldHVybiByKGUpfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0IGluIG4ucHJvdG90eXBlKWVbdF09bi5wcm90b3R5cGVbdF07cmV0dXJuIGV9bi5wcm90b3R5cGUub249bi5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSwodGhpcy5fY2FsbGJhY2tzW2AkYCtlXT10aGlzLl9jYWxsYmFja3NbYCRgK2VdfHxbXSkucHVzaCh0KSx0aGlzfSxuLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3RoaXMub2ZmKGUsbiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG4uZm49dCx0aGlzLm9uKGUsbiksdGhpc30sbi5wcm90b3R5cGUub2ZmPW4ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPW4ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1uLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sYXJndW1lbnRzLmxlbmd0aD09MClyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXt9LHRoaXM7dmFyIG49dGhpcy5fY2FsbGJhY2tzW2AkYCtlXTtpZighbilyZXR1cm4gdGhpcztpZihhcmd1bWVudHMubGVuZ3RoPT0xKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2AkYCtlXSx0aGlzO2Zvcih2YXIgcixpPTA7aTxuLmxlbmd0aDtpKyspaWYocj1uW2ldLHI9PT10fHxyLmZuPT09dCl7bi5zcGxpY2UoaSwxKTticmVha31yZXR1cm4gdGhpc30sbi5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fTt2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPXRoaXMuX2NhbGxiYWNrc1tgJGArZV07aWYobil7bj1uLnNsaWNlKDApO2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpOysrciluW3JdLmFwcGx5KHRoaXMsdCl9cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sdGhpcy5fY2FsbGJhY2tzW2AkYCtlXXx8W119LG4ucHJvdG90eXBlLmhhc0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMubGlzdGVuZXJzKGUpLmxlbmd0aH19KSkscGM9cygoKGUsdCk9Pnt0LmV4cG9ydHM9bjtmdW5jdGlvbiBuKGUsdCl7dmFyIG49W107dHx8PTA7Zm9yKHZhciByPXR8fDA7cjxlLmxlbmd0aDtyKyspbltyLXRdPWVbcl07cmV0dXJuIG59fSkpLG1jPXMoKChlLHQpPT57dC5leHBvcnRzPW47ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIGUub24odCxuKSx7ZGVzdHJveTpmdW5jdGlvbigpe2UucmVtb3ZlTGlzdGVuZXIodCxuKX19fX0pKSxoYz1zKCgoZSx0KT0+e3ZhciBuPVtdLnNsaWNlO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0PT1gc3RyaW5nYCYmKHQ9ZVt0XSksdHlwZW9mIHQhPWBmdW5jdGlvbmApdGhyb3cgRXJyb3IoYGJpbmQoKSByZXF1aXJlcyBhIGZ1bmN0aW9uYCk7dmFyIHI9bi5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLHIuY29uY2F0KG4uY2FsbChhcmd1bWVudHMpKSl9fX0pKSxnYz1zKChlPT57ZS5lbmNvZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9YGA7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHQubGVuZ3RoJiYodCs9YCZgKSx0Kz1lbmNvZGVVUklDb21wb25lbnQobikrYD1gK2VuY29kZVVSSUNvbXBvbmVudChlW25dKSk7cmV0dXJuIHR9LGUuZGVjb2RlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17fSxuPWUuc3BsaXQoYCZgKSxyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgYT1uW3JdLnNwbGl0KGA9YCk7dFtkZWNvZGVVUklDb21wb25lbnQoYVswXSldPWRlY29kZVVSSUNvbXBvbmVudChhWzFdKX1yZXR1cm4gdH19KSksX2M9cygoKGUsdCk9Pnt2YXIgbj1CcygpLHI9ZmMoKSxpPXBjKCksYT1tYygpLG89aGMoKSxzPWpzKCkoYHNvY2tldC5pby1jbGllbnQ6c29ja2V0YCksYz1nYygpLGw9R3MoKTt0LmV4cG9ydHM9ZT1mO3ZhciB1PXtjb25uZWN0OjEsY29ubmVjdF9lcnJvcjoxLGNvbm5lY3RfdGltZW91dDoxLGNvbm5lY3Rpbmc6MSxkaXNjb25uZWN0OjEsZXJyb3I6MSxyZWNvbm5lY3Q6MSxyZWNvbm5lY3RfYXR0ZW1wdDoxLHJlY29ubmVjdF9mYWlsZWQ6MSxyZWNvbm5lY3RfZXJyb3I6MSxyZWNvbm5lY3Rpbmc6MSxwaW5nOjEscG9uZzoxfSxkPXIucHJvdG90eXBlLmVtaXQ7ZnVuY3Rpb24gZihlLHQsbil7dGhpcy5pbz1lLHRoaXMubnNwPXQsdGhpcy5qc29uPXRoaXMsdGhpcy5pZHM9MCx0aGlzLmFja3M9e30sdGhpcy5yZWNlaXZlQnVmZmVyPVtdLHRoaXMuc2VuZEJ1ZmZlcj1bXSx0aGlzLmNvbm5lY3RlZD0hMSx0aGlzLmRpc2Nvbm5lY3RlZD0hMCx0aGlzLmZsYWdzPXt9LG4mJm4ucXVlcnkmJih0aGlzLnF1ZXJ5PW4ucXVlcnkpLHRoaXMuaW8uYXV0b0Nvbm5lY3QmJnRoaXMub3BlbigpfXIoZi5wcm90b3R5cGUpLGYucHJvdG90eXBlLnN1YkV2ZW50cz1mdW5jdGlvbigpe2lmKCF0aGlzLnN1YnMpe3ZhciBlPXRoaXMuaW87dGhpcy5zdWJzPVthKGUsYG9wZW5gLG8odGhpcyxgb25vcGVuYCkpLGEoZSxgcGFja2V0YCxvKHRoaXMsYG9ucGFja2V0YCkpLGEoZSxgY2xvc2VgLG8odGhpcyxgb25jbG9zZWApKV19fSxmLnByb3RvdHlwZS5vcGVuPWYucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25uZWN0ZWQ/dGhpczoodGhpcy5zdWJFdmVudHMoKSx0aGlzLmlvLm9wZW4oKSx0aGlzLmlvLnJlYWR5U3RhdGU9PT1gb3BlbmAmJnRoaXMub25vcGVuKCksdGhpcy5lbWl0KGBjb25uZWN0aW5nYCksdGhpcyl9LGYucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oKXt2YXIgZT1pKGFyZ3VtZW50cyk7cmV0dXJuIGUudW5zaGlmdChgbWVzc2FnZWApLHRoaXMuZW1pdC5hcHBseSh0aGlzLGUpLHRoaXN9LGYucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7aWYodS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpczt2YXIgdD1pKGFyZ3VtZW50cykscj17dHlwZToodGhpcy5mbGFncy5iaW5hcnk9PT12b2lkIDA/bCh0KTp0aGlzLmZsYWdzLmJpbmFyeSk/bi5CSU5BUllfRVZFTlQ6bi5FVkVOVCxkYXRhOnR9O3JldHVybiByLm9wdGlvbnM9e30sci5vcHRpb25zLmNvbXByZXNzPSF0aGlzLmZsYWdzfHwhMSE9PXRoaXMuZmxhZ3MuY29tcHJlc3MsdHlwZW9mIHRbdC5sZW5ndGgtMV09PWBmdW5jdGlvbmAmJihzKGBlbWl0dGluZyBwYWNrZXQgd2l0aCBhY2sgaWQgJWRgLHRoaXMuaWRzKSx0aGlzLmFja3NbdGhpcy5pZHNdPXQucG9wKCksci5pZD10aGlzLmlkcysrKSx0aGlzLmNvbm5lY3RlZD90aGlzLnBhY2tldChyKTp0aGlzLnNlbmRCdWZmZXIucHVzaChyKSx0aGlzLmZsYWdzPXt9LHRoaXN9LGYucHJvdG90eXBlLnBhY2tldD1mdW5jdGlvbihlKXtlLm5zcD10aGlzLm5zcCx0aGlzLmlvLnBhY2tldChlKX0sZi5wcm90b3R5cGUub25vcGVuPWZ1bmN0aW9uKCl7aWYocyhgdHJhbnNwb3J0IGlzIG9wZW4gLSBjb25uZWN0aW5nYCksdGhpcy5uc3AhPT1gL2ApaWYodGhpcy5xdWVyeSl7dmFyIGU9dHlwZW9mIHRoaXMucXVlcnk9PWBvYmplY3RgP2MuZW5jb2RlKHRoaXMucXVlcnkpOnRoaXMucXVlcnk7cyhgc2VuZGluZyBjb25uZWN0IHBhY2tldCB3aXRoIHF1ZXJ5ICVzYCxlKSx0aGlzLnBhY2tldCh7dHlwZTpuLkNPTk5FQ1QscXVlcnk6ZX0pfWVsc2UgdGhpcy5wYWNrZXQoe3R5cGU6bi5DT05ORUNUfSl9LGYucHJvdG90eXBlLm9uY2xvc2U9ZnVuY3Rpb24oZSl7cyhgY2xvc2UgKCVzKWAsZSksdGhpcy5jb25uZWN0ZWQ9ITEsdGhpcy5kaXNjb25uZWN0ZWQ9ITAsZGVsZXRlIHRoaXMuaWQsdGhpcy5lbWl0KGBkaXNjb25uZWN0YCxlKX0sZi5wcm90b3R5cGUub25wYWNrZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uc3A9PT10aGlzLm5zcCxyPWUudHlwZT09PW4uRVJST1ImJmUubnNwPT09YC9gO2lmKCEoIXQmJiFyKSlzd2l0Y2goZS50eXBlKXtjYXNlIG4uQ09OTkVDVDp0aGlzLm9uY29ubmVjdCgpO2JyZWFrO2Nhc2Ugbi5FVkVOVDp0aGlzLm9uZXZlbnQoZSk7YnJlYWs7Y2FzZSBuLkJJTkFSWV9FVkVOVDp0aGlzLm9uZXZlbnQoZSk7YnJlYWs7Y2FzZSBuLkFDSzp0aGlzLm9uYWNrKGUpO2JyZWFrO2Nhc2Ugbi5CSU5BUllfQUNLOnRoaXMub25hY2soZSk7YnJlYWs7Y2FzZSBuLkRJU0NPTk5FQ1Q6dGhpcy5vbmRpc2Nvbm5lY3QoKTticmVhaztjYXNlIG4uRVJST1I6dGhpcy5lbWl0KGBlcnJvcmAsZS5kYXRhKTticmVha319LGYucHJvdG90eXBlLm9uZXZlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhfHxbXTtzKGBlbWl0dGluZyBldmVudCAlamAsdCksZS5pZCE9bnVsbCYmKHMoYGF0dGFjaGluZyBhY2sgY2FsbGJhY2sgdG8gZXZlbnRgKSx0LnB1c2godGhpcy5hY2soZS5pZCkpKSx0aGlzLmNvbm5lY3RlZD9kLmFwcGx5KHRoaXMsdCk6dGhpcy5yZWNlaXZlQnVmZmVyLnB1c2godCl9LGYucHJvdG90eXBlLmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXIpe3I9ITA7dmFyIGE9aShhcmd1bWVudHMpO3MoYHNlbmRpbmcgYWNrICVqYCxhKSx0LnBhY2tldCh7dHlwZTpsKGEpP24uQklOQVJZX0FDSzpuLkFDSyxpZDplLGRhdGE6YX0pfX19LGYucHJvdG90eXBlLm9uYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWNrc1tlLmlkXTt0eXBlb2YgdD09YGZ1bmN0aW9uYD8ocyhgY2FsbGluZyBhY2sgJXMgd2l0aCAlamAsZS5pZCxlLmRhdGEpLHQuYXBwbHkodGhpcyxlLmRhdGEpLGRlbGV0ZSB0aGlzLmFja3NbZS5pZF0pOnMoYGJhZCBhY2sgJXNgLGUuaWQpfSxmLnByb3RvdHlwZS5vbmNvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLmNvbm5lY3RlZD0hMCx0aGlzLmRpc2Nvbm5lY3RlZD0hMSx0aGlzLmVtaXQoYGNvbm5lY3RgKSx0aGlzLmVtaXRCdWZmZXJlZCgpfSxmLnByb3RvdHlwZS5lbWl0QnVmZmVyZWQ9ZnVuY3Rpb24oKXt2YXIgZTtmb3IoZT0wO2U8dGhpcy5yZWNlaXZlQnVmZmVyLmxlbmd0aDtlKyspZC5hcHBseSh0aGlzLHRoaXMucmVjZWl2ZUJ1ZmZlcltlXSk7Zm9yKHRoaXMucmVjZWl2ZUJ1ZmZlcj1bXSxlPTA7ZTx0aGlzLnNlbmRCdWZmZXIubGVuZ3RoO2UrKyl0aGlzLnBhY2tldCh0aGlzLnNlbmRCdWZmZXJbZV0pO3RoaXMuc2VuZEJ1ZmZlcj1bXX0sZi5wcm90b3R5cGUub25kaXNjb25uZWN0PWZ1bmN0aW9uKCl7cyhgc2VydmVyIGRpc2Nvbm5lY3QgKCVzKWAsdGhpcy5uc3ApLHRoaXMuZGVzdHJveSgpLHRoaXMub25jbG9zZShgaW8gc2VydmVyIGRpc2Nvbm5lY3RgKX0sZi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuc3Vicyl7Zm9yKHZhciBlPTA7ZTx0aGlzLnN1YnMubGVuZ3RoO2UrKyl0aGlzLnN1YnNbZV0uZGVzdHJveSgpO3RoaXMuc3Vicz1udWxsfXRoaXMuaW8uZGVzdHJveSh0aGlzKX0sZi5wcm90b3R5cGUuY2xvc2U9Zi5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbm5lY3RlZCYmKHMoYHBlcmZvcm1pbmcgZGlzY29ubmVjdCAoJXMpYCx0aGlzLm5zcCksdGhpcy5wYWNrZXQoe3R5cGU6bi5ESVNDT05ORUNUfSkpLHRoaXMuZGVzdHJveSgpLHRoaXMuY29ubmVjdGVkJiZ0aGlzLm9uY2xvc2UoYGlvIGNsaWVudCBkaXNjb25uZWN0YCksdGhpc30sZi5wcm90b3R5cGUuY29tcHJlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmxhZ3MuY29tcHJlc3M9ZSx0aGlzfSxmLnByb3RvdHlwZS5iaW5hcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmxhZ3MuYmluYXJ5PWUsdGhpc319KSksdmM9cygoKGUsdCk9Pnt0LmV4cG9ydHM9bjtmdW5jdGlvbiBuKGUpe2V8fD17fSx0aGlzLm1zPWUubWlufHwxMDAsdGhpcy5tYXg9ZS5tYXh8fDFlNCx0aGlzLmZhY3Rvcj1lLmZhY3Rvcnx8Mix0aGlzLmppdHRlcj1lLmppdHRlcj4wJiZlLmppdHRlcjw9MT9lLmppdHRlcjowLHRoaXMuYXR0ZW1wdHM9MH1uLnByb3RvdHlwZS5kdXJhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubXMqdGhpcy5mYWN0b3IqKisgdGhpcy5hdHRlbXB0cysrO2lmKHRoaXMuaml0dGVyKXt2YXIgdD1NYXRoLnJhbmRvbSgpLG49TWF0aC5mbG9vcih0KnRoaXMuaml0dGVyKmUpO2U9TWF0aC5mbG9vcih0KjEwKSYxP2UrbjplLW59cmV0dXJuIE1hdGgubWluKGUsdGhpcy5tYXgpfDB9LG4ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5hdHRlbXB0cz0wfSxuLnByb3RvdHlwZS5zZXRNaW49ZnVuY3Rpb24oZSl7dGhpcy5tcz1lfSxuLnByb3RvdHlwZS5zZXRNYXg9ZnVuY3Rpb24oZSl7dGhpcy5tYXg9ZX0sbi5wcm90b3R5cGUuc2V0Sml0dGVyPWZ1bmN0aW9uKGUpe3RoaXMuaml0dGVyPWV9fSkpLHljPXMoKChlLHQpPT57dmFyIG49ZGMoKSxyPV9jKCksaT1mYygpLGE9QnMoKSxvPW1jKCkscz1oYygpLGM9anMoKShgc29ja2V0LmlvLWNsaWVudDptYW5hZ2VyYCksbD1jYygpLHU9dmMoKSxkPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWY7ZnVuY3Rpb24gZihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYpKXJldHVybiBuZXcgZihlLHQpO2UmJnR5cGVvZiBlPT1gb2JqZWN0YCYmKHQ9ZSxlPXZvaWQgMCksdHx8PXt9LHQucGF0aD10LnBhdGh8fGAvc29ja2V0LmlvYCx0aGlzLm5zcHM9e30sdGhpcy5zdWJzPVtdLHRoaXMub3B0cz10LHRoaXMucmVjb25uZWN0aW9uKHQucmVjb25uZWN0aW9uIT09ITEpLHRoaXMucmVjb25uZWN0aW9uQXR0ZW1wdHModC5yZWNvbm5lY3Rpb25BdHRlbXB0c3x8MS8wKSx0aGlzLnJlY29ubmVjdGlvbkRlbGF5KHQucmVjb25uZWN0aW9uRGVsYXl8fDFlMyksdGhpcy5yZWNvbm5lY3Rpb25EZWxheU1heCh0LnJlY29ubmVjdGlvbkRlbGF5TWF4fHw1ZTMpLHRoaXMucmFuZG9taXphdGlvbkZhY3Rvcih0LnJhbmRvbWl6YXRpb25GYWN0b3J8fC41KSx0aGlzLmJhY2tvZmY9bmV3IHUoe21pbjp0aGlzLnJlY29ubmVjdGlvbkRlbGF5KCksbWF4OnRoaXMucmVjb25uZWN0aW9uRGVsYXlNYXgoKSxqaXR0ZXI6dGhpcy5yYW5kb21pemF0aW9uRmFjdG9yKCl9KSx0aGlzLnRpbWVvdXQodC50aW1lb3V0PT1udWxsPzJlNDp0LnRpbWVvdXQpLHRoaXMucmVhZHlTdGF0ZT1gY2xvc2VkYCx0aGlzLnVyaT1lLHRoaXMuY29ubmVjdGluZz1bXSx0aGlzLmxhc3RQaW5nPW51bGwsdGhpcy5lbmNvZGluZz0hMSx0aGlzLnBhY2tldEJ1ZmZlcj1bXTt2YXIgbj10LnBhcnNlcnx8YTt0aGlzLmVuY29kZXI9bmV3IG4uRW5jb2Rlcix0aGlzLmRlY29kZXI9bmV3IG4uRGVjb2Rlcix0aGlzLmF1dG9Db25uZWN0PXQuYXV0b0Nvbm5lY3QhPT0hMSx0aGlzLmF1dG9Db25uZWN0JiZ0aGlzLm9wZW4oKX1mLnByb3RvdHlwZS5lbWl0QWxsPWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuZW1pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5uc3BzKWQuY2FsbCh0aGlzLm5zcHMsZSkmJnRoaXMubnNwc1tlXS5lbWl0LmFwcGx5KHRoaXMubnNwc1tlXSxhcmd1bWVudHMpfSxmLnByb3RvdHlwZS51cGRhdGVTb2NrZXRJZHM9ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5uc3BzKWQuY2FsbCh0aGlzLm5zcHMsZSkmJih0aGlzLm5zcHNbZV0uaWQ9dGhpcy5nZW5lcmF0ZUlkKGUpKX0sZi5wcm90b3R5cGUuZ2VuZXJhdGVJZD1mdW5jdGlvbihlKXtyZXR1cm4oZT09PWAvYD9gYDplK2AjYCkrdGhpcy5lbmdpbmUuaWR9LGkoZi5wcm90b3R5cGUpLGYucHJvdG90eXBlLnJlY29ubmVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5fcmVjb25uZWN0aW9uPSEhZSx0aGlzKTp0aGlzLl9yZWNvbm5lY3Rpb259LGYucHJvdG90eXBlLnJlY29ubmVjdGlvbkF0dGVtcHRzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9yZWNvbm5lY3Rpb25BdHRlbXB0cz1lLHRoaXMpOnRoaXMuX3JlY29ubmVjdGlvbkF0dGVtcHRzfSxmLnByb3RvdHlwZS5yZWNvbm5lY3Rpb25EZWxheT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5fcmVjb25uZWN0aW9uRGVsYXk9ZSx0aGlzLmJhY2tvZmYmJnRoaXMuYmFja29mZi5zZXRNaW4oZSksdGhpcyk6dGhpcy5fcmVjb25uZWN0aW9uRGVsYXl9LGYucHJvdG90eXBlLnJhbmRvbWl6YXRpb25GYWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3I9ZSx0aGlzLmJhY2tvZmYmJnRoaXMuYmFja29mZi5zZXRKaXR0ZXIoZSksdGhpcyk6dGhpcy5fcmFuZG9taXphdGlvbkZhY3Rvcn0sZi5wcm90b3R5cGUucmVjb25uZWN0aW9uRGVsYXlNYXg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3JlY29ubmVjdGlvbkRlbGF5TWF4PWUsdGhpcy5iYWNrb2ZmJiZ0aGlzLmJhY2tvZmYuc2V0TWF4KGUpLHRoaXMpOnRoaXMuX3JlY29ubmVjdGlvbkRlbGF5TWF4fSxmLnByb3RvdHlwZS50aW1lb3V0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl90aW1lb3V0PWUsdGhpcyk6dGhpcy5fdGltZW91dH0sZi5wcm90b3R5cGUubWF5YmVSZWNvbm5lY3RPbk9wZW49ZnVuY3Rpb24oKXshdGhpcy5yZWNvbm5lY3RpbmcmJnRoaXMuX3JlY29ubmVjdGlvbiYmdGhpcy5iYWNrb2ZmLmF0dGVtcHRzPT09MCYmdGhpcy5yZWNvbm5lY3QoKX0sZi5wcm90b3R5cGUub3Blbj1mLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKGUsdCl7aWYoYyhgcmVhZHlTdGF0ZSAlc2AsdGhpcy5yZWFkeVN0YXRlKSx+dGhpcy5yZWFkeVN0YXRlLmluZGV4T2YoYG9wZW5gKSlyZXR1cm4gdGhpcztjKGBvcGVuaW5nICVzYCx0aGlzLnVyaSksdGhpcy5lbmdpbmU9bih0aGlzLnVyaSx0aGlzLm9wdHMpO3ZhciByPXRoaXMuZW5naW5lLGk9dGhpczt0aGlzLnJlYWR5U3RhdGU9YG9wZW5pbmdgLHRoaXMuc2tpcFJlY29ubmVjdD0hMTt2YXIgYT1vKHIsYG9wZW5gLGZ1bmN0aW9uKCl7aS5vbm9wZW4oKSxlJiZlKCl9KSxzPW8ocixgZXJyb3JgLGZ1bmN0aW9uKHQpe2lmKGMoYGNvbm5lY3RfZXJyb3JgKSxpLmNsZWFudXAoKSxpLnJlYWR5U3RhdGU9YGNsb3NlZGAsaS5lbWl0QWxsKGBjb25uZWN0X2Vycm9yYCx0KSxlKXt2YXIgbj1FcnJvcihgQ29ubmVjdGlvbiBlcnJvcmApO24uZGF0YT10LGUobil9ZWxzZSBpLm1heWJlUmVjb25uZWN0T25PcGVuKCl9KTtpZighMSE9PXRoaXMuX3RpbWVvdXQpe3ZhciBsPXRoaXMuX3RpbWVvdXQ7YyhgY29ubmVjdCBhdHRlbXB0IHdpbGwgdGltZW91dCBhZnRlciAlZGAsbCk7dmFyIHU9c2V0VGltZW91dChmdW5jdGlvbigpe2MoYGNvbm5lY3QgYXR0ZW1wdCB0aW1lZCBvdXQgYWZ0ZXIgJWRgLGwpLGEuZGVzdHJveSgpLHIuY2xvc2UoKSxyLmVtaXQoYGVycm9yYCxgdGltZW91dGApLGkuZW1pdEFsbChgY29ubmVjdF90aW1lb3V0YCxsKX0sbCk7dGhpcy5zdWJzLnB1c2goe2Rlc3Ryb3k6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodSl9fSl9cmV0dXJuIHRoaXMuc3Vicy5wdXNoKGEpLHRoaXMuc3Vicy5wdXNoKHMpLHRoaXN9LGYucHJvdG90eXBlLm9ub3Blbj1mdW5jdGlvbigpe2MoYG9wZW5gKSx0aGlzLmNsZWFudXAoKSx0aGlzLnJlYWR5U3RhdGU9YG9wZW5gLHRoaXMuZW1pdChgb3BlbmApO3ZhciBlPXRoaXMuZW5naW5lO3RoaXMuc3Vicy5wdXNoKG8oZSxgZGF0YWAscyh0aGlzLGBvbmRhdGFgKSkpLHRoaXMuc3Vicy5wdXNoKG8oZSxgcGluZ2Ascyh0aGlzLGBvbnBpbmdgKSkpLHRoaXMuc3Vicy5wdXNoKG8oZSxgcG9uZ2Ascyh0aGlzLGBvbnBvbmdgKSkpLHRoaXMuc3Vicy5wdXNoKG8oZSxgZXJyb3JgLHModGhpcyxgb25lcnJvcmApKSksdGhpcy5zdWJzLnB1c2gobyhlLGBjbG9zZWAscyh0aGlzLGBvbmNsb3NlYCkpKSx0aGlzLnN1YnMucHVzaChvKHRoaXMuZGVjb2RlcixgZGVjb2RlZGAscyh0aGlzLGBvbmRlY29kZWRgKSkpfSxmLnByb3RvdHlwZS5vbnBpbmc9ZnVuY3Rpb24oKXt0aGlzLmxhc3RQaW5nPW5ldyBEYXRlLHRoaXMuZW1pdEFsbChgcGluZ2ApfSxmLnByb3RvdHlwZS5vbnBvbmc9ZnVuY3Rpb24oKXt0aGlzLmVtaXRBbGwoYHBvbmdgLG5ldyBEYXRlLXRoaXMubGFzdFBpbmcpfSxmLnByb3RvdHlwZS5vbmRhdGE9ZnVuY3Rpb24oZSl7dGhpcy5kZWNvZGVyLmFkZChlKX0sZi5wcm90b3R5cGUub25kZWNvZGVkPWZ1bmN0aW9uKGUpe3RoaXMuZW1pdChgcGFja2V0YCxlKX0sZi5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbihlKXtjKGBlcnJvcmAsZSksdGhpcy5lbWl0QWxsKGBlcnJvcmAsZSl9LGYucHJvdG90eXBlLnNvY2tldD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMubnNwc1tlXTtpZighbil7bj1uZXcgcih0aGlzLGUsdCksdGhpcy5uc3BzW2VdPW47dmFyIGk9dGhpcztuLm9uKGBjb25uZWN0aW5nYCxhKSxuLm9uKGBjb25uZWN0YCxmdW5jdGlvbigpe24uaWQ9aS5nZW5lcmF0ZUlkKGUpfSksdGhpcy5hdXRvQ29ubmVjdCYmYSgpfWZ1bmN0aW9uIGEoKXt+bChpLmNvbm5lY3Rpbmcsbil8fGkuY29ubmVjdGluZy5wdXNoKG4pfXJldHVybiBufSxmLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKGUpe3ZhciB0PWwodGhpcy5jb25uZWN0aW5nLGUpO350JiZ0aGlzLmNvbm5lY3Rpbmcuc3BsaWNlKHQsMSksIXRoaXMuY29ubmVjdGluZy5sZW5ndGgmJnRoaXMuY2xvc2UoKX0sZi5wcm90b3R5cGUucGFja2V0PWZ1bmN0aW9uKGUpe2MoYHdyaXRpbmcgcGFja2V0ICVqYCxlKTt2YXIgdD10aGlzO2UucXVlcnkmJmUudHlwZT09PTAmJihlLm5zcCs9YD9gK2UucXVlcnkpLHQuZW5jb2Rpbmc/dC5wYWNrZXRCdWZmZXIucHVzaChlKToodC5lbmNvZGluZz0hMCx0aGlzLmVuY29kZXIuZW5jb2RlKGUsZnVuY3Rpb24obil7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdC5lbmdpbmUud3JpdGUobltyXSxlLm9wdGlvbnMpO3QuZW5jb2Rpbmc9ITEsdC5wcm9jZXNzUGFja2V0UXVldWUoKX0pKX0sZi5wcm90b3R5cGUucHJvY2Vzc1BhY2tldFF1ZXVlPWZ1bmN0aW9uKCl7aWYodGhpcy5wYWNrZXRCdWZmZXIubGVuZ3RoPjAmJiF0aGlzLmVuY29kaW5nKXt2YXIgZT10aGlzLnBhY2tldEJ1ZmZlci5zaGlmdCgpO3RoaXMucGFja2V0KGUpfX0sZi5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpe2MoYGNsZWFudXBgKTtmb3IodmFyIGU9dGhpcy5zdWJzLmxlbmd0aCx0PTA7dDxlO3QrKyl0aGlzLnN1YnMuc2hpZnQoKS5kZXN0cm95KCk7dGhpcy5wYWNrZXRCdWZmZXI9W10sdGhpcy5lbmNvZGluZz0hMSx0aGlzLmxhc3RQaW5nPW51bGwsdGhpcy5kZWNvZGVyLmRlc3Ryb3koKX0sZi5wcm90b3R5cGUuY2xvc2U9Zi5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe2MoYGRpc2Nvbm5lY3RgKSx0aGlzLnNraXBSZWNvbm5lY3Q9ITAsdGhpcy5yZWNvbm5lY3Rpbmc9ITEsdGhpcy5yZWFkeVN0YXRlPT09YG9wZW5pbmdgJiZ0aGlzLmNsZWFudXAoKSx0aGlzLmJhY2tvZmYucmVzZXQoKSx0aGlzLnJlYWR5U3RhdGU9YGNsb3NlZGAsdGhpcy5lbmdpbmUmJnRoaXMuZW5naW5lLmNsb3NlKCl9LGYucHJvdG90eXBlLm9uY2xvc2U9ZnVuY3Rpb24oZSl7Yyhgb25jbG9zZWApLHRoaXMuY2xlYW51cCgpLHRoaXMuYmFja29mZi5yZXNldCgpLHRoaXMucmVhZHlTdGF0ZT1gY2xvc2VkYCx0aGlzLmVtaXQoYGNsb3NlYCxlKSx0aGlzLl9yZWNvbm5lY3Rpb24mJiF0aGlzLnNraXBSZWNvbm5lY3QmJnRoaXMucmVjb25uZWN0KCl9LGYucHJvdG90eXBlLnJlY29ubmVjdD1mdW5jdGlvbigpe2lmKHRoaXMucmVjb25uZWN0aW5nfHx0aGlzLnNraXBSZWNvbm5lY3QpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcztpZih0aGlzLmJhY2tvZmYuYXR0ZW1wdHM+PXRoaXMuX3JlY29ubmVjdGlvbkF0dGVtcHRzKWMoYHJlY29ubmVjdCBmYWlsZWRgKSx0aGlzLmJhY2tvZmYucmVzZXQoKSx0aGlzLmVtaXRBbGwoYHJlY29ubmVjdF9mYWlsZWRgKSx0aGlzLnJlY29ubmVjdGluZz0hMTtlbHNle3ZhciB0PXRoaXMuYmFja29mZi5kdXJhdGlvbigpO2MoYHdpbGwgd2FpdCAlZG1zIGJlZm9yZSByZWNvbm5lY3QgYXR0ZW1wdGAsdCksdGhpcy5yZWNvbm5lY3Rpbmc9ITA7dmFyIG49c2V0VGltZW91dChmdW5jdGlvbigpe2Uuc2tpcFJlY29ubmVjdHx8KGMoYGF0dGVtcHRpbmcgcmVjb25uZWN0YCksZS5lbWl0QWxsKGByZWNvbm5lY3RfYXR0ZW1wdGAsZS5iYWNrb2ZmLmF0dGVtcHRzKSxlLmVtaXRBbGwoYHJlY29ubmVjdGluZ2AsZS5iYWNrb2ZmLmF0dGVtcHRzKSwhZS5za2lwUmVjb25uZWN0JiZlLm9wZW4oZnVuY3Rpb24odCl7dD8oYyhgcmVjb25uZWN0IGF0dGVtcHQgZXJyb3JgKSxlLnJlY29ubmVjdGluZz0hMSxlLnJlY29ubmVjdCgpLGUuZW1pdEFsbChgcmVjb25uZWN0X2Vycm9yYCx0LmRhdGEpKTooYyhgcmVjb25uZWN0IHN1Y2Nlc3NgKSxlLm9ucmVjb25uZWN0KCkpfSkpfSx0KTt0aGlzLnN1YnMucHVzaCh7ZGVzdHJveTpmdW5jdGlvbigpe2NsZWFyVGltZW91dChuKX19KX19LGYucHJvdG90eXBlLm9ucmVjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5iYWNrb2ZmLmF0dGVtcHRzO3RoaXMucmVjb25uZWN0aW5nPSExLHRoaXMuYmFja29mZi5yZXNldCgpLHRoaXMudXBkYXRlU29ja2V0SWRzKCksdGhpcy5lbWl0QWxsKGByZWNvbm5lY3RgLGUpfX0pKSxiYz1zKCgoZSx0KT0+e3ZhciBuPU1zKCkscj1CcygpLGk9eWMoKSxhPWpzKCkoYHNvY2tldC5pby1jbGllbnRgKTt0LmV4cG9ydHM9ZT1zO3ZhciBvPWUubWFuYWdlcnM9e307ZnVuY3Rpb24gcyhlLHQpe3R5cGVvZiBlPT1gb2JqZWN0YCYmKHQ9ZSxlPXZvaWQgMCksdHx8PXt9O3ZhciByPW4oZSkscz1yLnNvdXJjZSxjPXIuaWQsbD1yLnBhdGgsdT1vW2NdJiZsIGluIG9bY10ubnNwcyxkPXQuZm9yY2VOZXd8fHRbYGZvcmNlIG5ldyBjb25uZWN0aW9uYF18fCExPT09dC5tdWx0aXBsZXh8fHUsZjtyZXR1cm4gZD8oYShgaWdub3Jpbmcgc29ja2V0IGNhY2hlIGZvciAlc2AscyksZj1pKHMsdCkpOihvW2NdfHwoYShgbmV3IGlvIGluc3RhbmNlIGZvciAlc2Ascyksb1tjXT1pKHMsdCkpLGY9b1tjXSksci5xdWVyeSYmIXQucXVlcnkmJih0LnF1ZXJ5PXIucXVlcnkpLGYuc29ja2V0KHIucGF0aCx0KX1lLnByb3RvY29sPXIucHJvdG9jb2wsZS5jb25uZWN0PXMsZS5NYW5hZ2VyPXljKCksZS5Tb2NrZXQ9X2MoKX0pKSx4Yz1jKHtkZWZhdWx0OigpPT5TY30pO2Z1bmN0aW9uIFNjKGUsdCl7cmV0dXJuIHR8fD17fSxuZXcgUHJvbWlzZShmdW5jdGlvbihuLHIpe3ZhciBpPW5ldyBYTUxIdHRwUmVxdWVzdCxhPVtdLG89W10scz17fSxjPWZ1bmN0aW9uKCl7cmV0dXJue29rOihpLnN0YXR1cy8xMDB8MCk9PTIsc3RhdHVzVGV4dDppLnN0YXR1c1RleHQsc3RhdHVzOmkuc3RhdHVzLHVybDppLnJlc3BvbnNlVVJMLHRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkucmVzcG9uc2VUZXh0KX0sanNvbjpmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoaS5yZXNwb25zZVRleHQpLnRoZW4oSlNPTi5wYXJzZSl9LGJsb2I6ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFtpLnJlc3BvbnNlXSkpfSxjbG9uZTpjLGhlYWRlcnM6e2tleXM6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZW50cmllczpmdW5jdGlvbigpe3JldHVybiBvfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHNbZS50b0xvd2VyQ2FzZSgpXX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiBzfX19fTtmb3IodmFyIGwgaW4gaS5vcGVuKHQubWV0aG9kfHxgZ2V0YCxlLCEwKSxpLm9ubG9hZD1mdW5jdGlvbigpe2kuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkucmVwbGFjZSgvXiguKj8pOlteXFNcbl0qKFtcc1xTXSo/KSQvZ20sZnVuY3Rpb24oZSx0LG4pe2EucHVzaCh0PXQudG9Mb3dlckNhc2UoKSksby5wdXNoKFt0LG5dKSxzW3RdPXNbdF0/c1t0XStgLGArbjpufSksbihjKCkpfSxpLm9uZXJyb3I9cixpLndpdGhDcmVkZW50aWFscz10LmNyZWRlbnRpYWxzPT1gaW5jbHVkZWAsdC5oZWFkZXJzKWkuc2V0UmVxdWVzdEhlYWRlcihsLHQuaGVhZGVyc1tsXSk7aS5zZW5kKHQuYm9keXx8bnVsbCl9KX12YXIgQ2M9bygoKCk9Pnt9KSksd2M9cygoKGUsdCk9Pnt0LmV4cG9ydHM9c2VsZi5mZXRjaHx8KHNlbGYuZmV0Y2g9KENjKCksZCh4YykpLmRlZmF1bHR8fChDYygpLGQoeGMpKSl9KSksVGM9cygoZT0+e3ZhciB0PWUmJmUuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGBfX2VzTW9kdWxlYCx7dmFsdWU6ITB9KSxlLmZldGNoQmFsYW5jZXJDb25maWc9dm9pZCAwO3ZhciBuPURzKCkscj10KHdjKCkpO2UuZmV0Y2hCYWxhbmNlckNvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4oMCxuLmRlYnVnKShgdXNpbmcgYmFsYW5jZXIgJHtlfSB0byBnZXQgd2Vic29ja2V0IHVybGApLCgwLHIuZGVmYXVsdCkoYCR7ZX1gKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpzb24oKX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGU/LnVybCYmZT8udG9rZW4/KCgwLG4uZGVidWcpKGBiYWxhbmNlciByZXR1cm5zIHVybCAke2U/LnVybH0gYW5kIHRva2VuICR7ZT8udG9rZW59YCksZSk6KCgwLG4uZGVidWcpKGBiYWxhbmNlciByZXR1cm5zIGludmFsaWQgcmVzcG9uc2VgKSxudWxsKX0pLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybigwLG4uZGVidWcpKGBmYWlsZWQgdG8gcmVzb2x2ZSB1cmw6ICR7ZS5tZXNzYWdlfWApLG51bGx9KX19KSksRWM9cygoZT0+e3ZhciB0PWUmJmUuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybiBlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0sZSh0LG4pfTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZih0eXBlb2YgbiE9YGZ1bmN0aW9uYCYmbiE9PW51bGwpdGhyb3cgVHlwZUVycm9yKGBDbGFzcyBleHRlbmRzIHZhbHVlIGArU3RyaW5nKG4pK2AgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbGApO2UodCxuKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXQucHJvdG90eXBlPW49PT1udWxsP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KSgpLG49ZSYmZS5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihlLHQsbil7aWYobnx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciByPTAsaT10Lmxlbmd0aCxhO3I8aTtyKyspKGF8fCEociBpbiB0KSkmJihhfHw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLHIpLGFbcl09dFtyXSk7cmV0dXJuIGUuY29uY2F0KGF8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0scj1lJiZlLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5Tb2NrZXRNb2NrPXZvaWQgMDt2YXIgaT1EcygpO2UuU29ja2V0TW9jaz1mdW5jdGlvbihlKXt0KHIsZSk7ZnVuY3Rpb24gcih0KXt2YXIgbj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ub3B0aW9ucz10LG4uaWQ9YG1vY2tgLG4uY29ubmVjdGVkPSExLG4uZGlzY29ubmVjdGVkPSEwLG4uYmluYXJ5VHlwZT1gYmxvYmAsbn1yZXR1cm4gci5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuKDAsaS5kZWJ1ZykoYFNvY2tldElPTW9jazogY29ubmVjdGApLHRoaXMub25jZShgdmlzaXRvci5jb25uZWN0YCxmdW5jdGlvbih0LG4pe24obnVsbCxlLm9wdGlvbnMuY29ubmVjdERhdGEpfSksdGhpcy5jb25uZWN0ZWQ9ITAsdGhpcy5kaXNjb25uZWN0ZWQ9ITEsdGhpcy5lbWl0KGBjb25uZWN0YCksdGhpc30sci5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4oMCxpLmRlYnVnKShgU29ja2V0SU9Nb2NrOiBkaXNjb25uZWN0YCksdGhpcy5jb25uZWN0ZWQ9ITEsdGhpcy5kaXNjb25uZWN0ZWQ9ITEsdGhpcy5lbWl0KGBkaXNjb25uZWN0YCxgaW8gY2xpZW50IGRpc2Nvbm5lY3RgKSx0aGlzfSxyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHQpe3ZhciByPVsuLi5hcmd1bWVudHNdLnNsaWNlKDEpO3JldHVybiBpLmRlYnVnLmFwcGx5KHZvaWQgMCxuKFtgU29ja2V0SU9Nb2NrOiBlbWl0YF0sciwhMSkpLCh0PT09YGNvbm5lY3RgfHx0PT09YGRpc2Nvbm5lY3RgfHx0PT09YHZpc2l0b3IuY29ubmVjdGApJiZlLnByb3RvdHlwZS5lbWl0LmFwcGx5KHRoaXMsbihbdF0sciwhMSkpLHRoaXN9LHIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oKXt2YXIgZT1bLi4uYXJndW1lbnRzXTtyZXR1cm4gdGhpcy5lbWl0LmFwcGx5KHRoaXMsbihbZVswXV0sZS5zbGljZSgxKSwhMSkpfSxyLnByb3RvdHlwZS5jb21wcmVzcz1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BlbigpfSxyLnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvc2UoKX0sci5wcm90b3R5cGUuaGFzTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxpc3RlbmVyQ291bnQoZSk9PT0wfSxyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuYWRkTGlzdGVuZXIoZSx0KSx0aGlzfSxyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0KSx0aGlzfSxyfShyKE9zKCkpLmRlZmF1bHQpfSkpLERjPXMoKGU9Pnt2YXIgdD1lJiZlLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiB0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW25dLHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiBlfSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj1lJiZlLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/KGZ1bmN0aW9uKGUsdCxuLHIpe3I9PT12b2lkIDAmJihyPW4pO3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTsoIWl8fChgZ2V0YGluIGk/IXQuX19lc01vZHVsZTppLndyaXRhYmxlfHxpLmNvbmZpZ3VyYWJsZSkpJiYoaT17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLGkpfSk6KGZ1bmN0aW9uKGUsdCxuLHIpe3I9PT12b2lkIDAmJihyPW4pLGVbcl09dFtuXX0pKSxyPWUmJmUuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiBlKXIhPT1gZGVmYXVsdGAmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmbih0LGUscil9LGk9ZSYmZS5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxuLHIpe2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4oZnVuY3Rpb24odCl7dChlKX0pfXJldHVybiBuZXcobnx8PVByb21pc2UpKGZ1bmN0aW9uKG4sYSl7ZnVuY3Rpb24gbyhlKXt0cnl7YyhyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2Moci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gYyhlKXtlLmRvbmU/bihlLnZhbHVlKTppKGUudmFsdWUpLnRoZW4obyxzKX1jKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX0sYT1lJiZlLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlLHQpe3ZhciBuPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihhWzBdJjEpdGhyb3cgYVsxXTtyZXR1cm4gYVsxXX0sdHJ5czpbXSxvcHM6W119LHIsaSxhLG89T2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yPT1gZnVuY3Rpb25gP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gby5uZXh0PXMoMCksby50aHJvdz1zKDEpLG8ucmV0dXJuPXMoMiksdHlwZW9mIFN5bWJvbD09YGZ1bmN0aW9uYCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gYyhbZSx0XSl9fWZ1bmN0aW9uIGMocyl7aWYocil0aHJvdyBUeXBlRXJyb3IoYEdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5gKTtmb3IoO28mJihvPTAsc1swXSYmKG49MCkpLG47KXRyeXtpZihyPTEsaSYmKGE9c1swXSYyP2kucmV0dXJuOnNbMF0/aS50aHJvd3x8KChhPWkucmV0dXJuKSYmYS5jYWxsKGkpLDApOmkubmV4dCkmJiEoYT1hLmNhbGwoaSxzWzFdKSkuZG9uZSlyZXR1cm4gYTtzd2l0Y2goaT0wLGEmJihzPVtzWzBdJjIsYS52YWx1ZV0pLHNbMF0pe2Nhc2UgMDpjYXNlIDE6YT1zO2JyZWFrO2Nhc2UgNDpyZXR1cm4gbi5sYWJlbCsrLHt2YWx1ZTpzWzFdLGRvbmU6ITF9O2Nhc2UgNTpuLmxhYmVsKyssaT1zWzFdLHM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpzPW4ub3BzLnBvcCgpLG4udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKChhPW4udHJ5cywhKGE9YS5sZW5ndGg+MCYmYVthLmxlbmd0aC0xXSkpJiYoc1swXT09PTZ8fHNbMF09PT0yKSl7bj0wO2NvbnRpbnVlfWlmKHNbMF09PT0zJiYoIWF8fHNbMV0+YVswXSYmc1sxXTxhWzNdKSl7bi5sYWJlbD1zWzFdO2JyZWFrfWlmKHNbMF09PT02JiZuLmxhYmVsPGFbMV0pe24ubGFiZWw9YVsxXSxhPXM7YnJlYWt9aWYoYSYmbi5sYWJlbDxhWzJdKXtuLmxhYmVsPWFbMl0sbi5vcHMucHVzaChzKTticmVha31hWzJdJiZuLm9wcy5wb3AoKSxuLnRyeXMucG9wKCk7Y29udGludWV9cz10LmNhbGwoZSxuKX1jYXRjaChlKXtzPVs2LGVdLGk9MH1maW5hbGx5e3I9YT0wfWlmKHNbMF0mNSl0aHJvdyBzWzFdO3JldHVybnt2YWx1ZTpzWzBdP3NbMV06dm9pZCAwLGRvbmU6ITB9fX0sbz1lJiZlLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5Tb2NrZXRFcnJvcj12b2lkIDA7dmFyIHM9RHMoKSxjPW8oT3MoKSksbD1vKGJjKCkpLHU9VGMoKSxkPXt0cmFuc3BvcnRzOltgd2Vic29ja2V0YF0scGF0aDpgL3NvY2tldGAscmVjb25uZWN0aW9uOiEwLHJlY29ubmVjdGlvbkRlbGF5OjFlMyxyZWNvbm5lY3Rpb25EZWxheU1heDo1ZTMscmVjb25uZWN0aW9uQXR0ZW1wdHM6MS8wfTtlLmRlZmF1bHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5mb3JjZVJlY29ubmVjdD0hMSx0aGlzLmlkZW50aXR5PW51bGwsdGhpcy5jb25uZWN0aW9uPW51bGwsdGhpcy5jb25uZWN0Q2FsbGJhY2s9bnVsbCx0aGlzLmRpc2Nvbm5lY3RDYWxsYmFjaz1udWxsLHRoaXMuaW5pdERhdGE9bnVsbCx0aGlzLmludGVybmFsUmVjb25uZWN0aW9uPSExLHRoaXMuaW50ZXJuYWxSZWNvbm5lY3Rpbmc9ITEsdGhpcy5pbnRlcm5hbFJlY29ubmVjdGluZ0F0dGVtcHQ9MCx0aGlzLmVtaXR0ZXI9bmV3IGMuZGVmYXVsdCx0aGlzLnNlbmRCdWZmZXI9W10sdGhpcy5vcHRpb25zLm9wdGlvbnM9dCh0KHQoe30sZCksdGhpcy5vcHRpb25zLm9wdGlvbnMpLHthdXRvQ29ubmVjdDohMX0pfXJldHVybiBlLnByb3RvdHlwZS5pbml0Q29ubmVjdGlvbj1mdW5jdGlvbigpe3JldHVybiBpKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBhKHRoaXMsZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDppZih0aGlzLmNvbm5lY3Rpb24pdGhyb3cgRXJyb3IoYENvbm5lY3Rpb24gYWxyZWFkeSBleGlzdHNgKTtyZXR1cm4gdGhpcy5vcHRpb25zLnNvY2tldD8oKDAscy5kZWJ1ZykoYHVzaW5nIHNvY2tldCAke3RoaXMub3B0aW9ucy5zb2NrZXQuaWR9YCksdGhpcy5pbnRlcm5hbFJlY29ubmVjdGlvbj0hMSx0aGlzLnNldENvbm5lY3Rpb24odGhpcy5vcHRpb25zLnNvY2tldCksWzMsNF0pOlszLDFdO2Nhc2UgMTpyZXR1cm4gdGhpcy5vcHRpb25zLmJhbGFuY2VyVXJsP1s0LCgwLHUuZmV0Y2hCYWxhbmNlckNvbmZpZykodGhpcy5vcHRpb25zLmJhbGFuY2VyVXJsKV06WzMsM107Y2FzZSAyOnJldHVybiBlPW4uc2VudCgpLCgwLHMuZGVidWcpKGBjcmVhdGluZyBzb2NrZXQgdG8gJHtlLnVybH0gd2l0aCB0b2tlbiAke2UudG9rZW59YCksdGhpcy5pbnRlcm5hbFJlY29ubmVjdGlvbj0hMCx0aGlzLnNldENvbm5lY3Rpb24oKDAsbC5kZWZhdWx0KShlLnVybCx0KHQoe30sdGhpcy5vcHRpb25zLm9wdGlvbnMpLHthdXRvQ29ubmVjdDohMSxyZWNvbm5lY3Rpb246ITEscXVlcnk6e3Rva2VuOmUudG9rZW59fSkpLCEwKSxbMyw0XTtjYXNlIDM6aWYodGhpcy5vcHRpb25zLnVybCkoMCxzLmRlYnVnKShgY3JlYXRpbmcgc29ja2V0IHRvICR7dGhpcy5vcHRpb25zLnVybH1gKSx0aGlzLmludGVybmFsUmVjb25uZWN0aW9uPSExLHRoaXMuc2V0Q29ubmVjdGlvbigoMCxsLmRlZmF1bHQpKHRoaXMub3B0aW9ucy51cmwsdCh0KHt9LHRoaXMub3B0aW9ucy5vcHRpb25zKSx7YXV0b0Nvbm5lY3Q6ITF9KSkpO2Vsc2UgdGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIHVybGApO24ubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LGUucHJvdG90eXBlLnNldENvbm5lY3Rpb249ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzO249PT12b2lkIDAmJihuPSExKSx0aGlzLmNvbm5lY3Rpb249ZSx0aGlzLmZvcmNlUmVjb25uZWN0PSExLHRoaXMuaW50ZXJuYWxSZWNvbm5lY3Rpb249bixlLm9uKGBjb25uZWN0X2Vycm9yYCxmdW5jdGlvbihlKXtyLmludGVybmFsUmVjb25uZWN0aW9uJiYoci5jb25uZWN0Q2FsbGJhY2s9bnVsbCwoMCxzLmRlYnVnKShgY29ubmVjdGlvbiB3YXMgbm90IHJlY29ubmVjdGVkYCksci5lbWl0dGVyLmVtaXQoYHJlY29ubmVjdF9lcnJvcmAsZSksci5vcHRpb25zLm9wdGlvbnMucmVjb25uZWN0aW9uQXR0ZW1wdHM+ci5pbnRlcm5hbFJlY29ubmVjdGluZ0F0dGVtcHQrMT9yLnJlY29ubmVjdChyLmludGVybmFsUmVjb25uZWN0aW5nQXR0ZW1wdCsxKTpyLmVtaXR0ZXIuZW1pdChgcmVjb25uZWN0X2ZhaWxlZGAsci5pbnRlcm5hbFJlY29ubmVjdGluZ0F0dGVtcHQpKX0pLGUub24oYGNvbm5lY3RgLGZ1bmN0aW9uKCl7KDAscy5kZWJ1ZykoYHNvY2tldCB3YXMgY29ubmVjdGVkYCksci5pbml0aWFsaXplZD0hMSxyLmludGVybmFsUmVjb25uZWN0aW5nPygoMCxzLmRlYnVnKShgY29ubmVjdGlvbiBpcyByZWNvbm5lY3RlZGApLHIuZW1pdHRlci5lbWl0KGByZWNvbm5lY3RgKSxyLmludGVybmFsUmVjb25uZWN0aW5nPSExLHIuaW50ZXJuYWxSZWNvbm5lY3RpbmdBdHRlbXB0PTApOnIuZW1pdHRlci5lbWl0KGBjb25uZWN0YCksci5pbml0aWFsaXplKCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4oMCxzLmRlYnVnKShgc29ja2V0IHdhcyBpbml0aWFsaXplZGApLHIub25Jbml0aWFsaXplZChlKSxyLmNvbm5lY3RDYWxsYmFjayYmPShyLmNvbm5lY3RDYWxsYmFjayhudWxsLGUpLG51bGwpLGV9KS5jYXRjaChmdW5jdGlvbihlKXsoMCxzLmRlYnVnKShgc29ja2V0IHdhcyBub3QgaW5pdGlhbGl6ZWQgYCx0KHt9LGUpKSxyLm9uSW5pdGlhbGl6ZUVycm9yKGUpLHIuY29ubmVjdENhbGxiYWNrJiY9KHIuY29ubmVjdENhbGxiYWNrKGUpLG51bGwpfSl9KSxlLm9uKGBkaXNjb25uZWN0YCxmdW5jdGlvbihlKXsoMCxzLmRlYnVnKShgc29ja2V0IHdhcyBkaXNjb25uZWN0ZWQgcmVhc29uPScke2V9J2ApLHIuaW5pdGlhbGl6ZWQ9ITEsKCFyLmludGVybmFsUmVjb25uZWN0aW5nfHxyLmludGVybmFsUmVjb25uZWN0aW5nQXR0ZW1wdD09PTEpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5lbWl0dGVyLmVtaXQoYGRpc2Nvbm5lY3RgLGUpLHIuZGlzY29ubmVjdENhbGxiYWNrJiY9KHIuZGlzY29ubmVjdENhbGxiYWNrKCksbnVsbCl9LDEwMCksci5vcHRpb25zLm9wdGlvbnMucmVjb25uZWN0aW9uJiZyLmludGVybmFsUmVjb25uZWN0aW9uJiYhci5pbnRlcm5hbFJlY29ubmVjdGluZyYmKHIuZm9yY2VSZWNvbm5lY3R8fGUhPT1gaW8gc2VydmVyIGRpc2Nvbm5lY3RgKSYmci5yZWNvbm5lY3QoKX0pLGUub24oYHJlY29ubmVjdGluZ2AsZnVuY3Rpb24oZSl7ci5lbWl0dGVyLmVtaXQoYHJlY29ubmVjdGluZ2AsZSl9KSxlLm9uKGByZWNvbm5lY3RgLGZ1bmN0aW9uKCl7ci5lbWl0dGVyLmVtaXQoYHJlY29ubmVjdGApfSksZS5vbihgcmVjb25uZWN0X2F0dGVtcHRgLGZ1bmN0aW9uKGUpe3IuZW1pdHRlci5lbWl0KGByZWNvbm5lY3RfYXR0ZW1wdGAsZSl9KSxlLm9uKGByZWNvbm5lY3RfZXJyb3JgLGZ1bmN0aW9uKGUpe3IuZW1pdHRlci5lbWl0KGByZWNvbm5lY3RfZXJyb3JgLGUpfSksZS5vbihgcmVjb25uZWN0X2ZhaWxlZGAsZnVuY3Rpb24oKXtyLmVtaXR0ZXIuZW1pdChgcmVjb25uZWN0X2ZhaWxlZGApfSksZS5vbihgZm9yY2VfcmVjb25uZWN0YCxmdW5jdGlvbigpeygwLHMuZGVidWcpKGByZWNlaXZlZCBldmVudCBmb3JjZV9yZWNvbm5lY3QsIHNldHRpbmcgZmxhZyBmb3JjZVJlY29ubmVjdCA9IHRydWVgKSxyLmZvcmNlUmVjb25uZWN0PSEwfSl9LGUucHJvdG90eXBlLmdldENvbm5lY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25uZWN0aW9ufSxlLnByb3RvdHlwZS5pc0Nvbm5lY3RlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbm5lY3Rpb24/LmNvbm5lY3RlZHx8ITF9LGUucHJvdG90eXBlLmlzSW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0aWFsaXplZH0sZS5wcm90b3R5cGUuZ2V0SW5pdERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RGF0YX0sZS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe3JldHVybiBpKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGEodGhpcyxmdW5jdGlvbih0KXtzd2l0Y2godC5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbm5lY3Rpb24/WzMsMl06WzQsdGhpcy5pbml0Q29ubmVjdGlvbigpXTtjYXNlIDE6dC5zZW50KCksdC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMixuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe2UuaW5pdGlhbGl6ZWQ/dChlLmluaXREYXRhKTooKDAscy5kZWJ1ZykoYHN0YXJ0aW5nIGNvbm5lY3RpbmdgKSxlLmNvbm5lY3RDYWxsYmFjaz0oMCxzLmNyZWF0ZUNhbGxiYWNrKSh0LG4pLGUuY29ubmVjdGlvbi5vcGVuKCkpfSldfX0pfSl9LGUucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4peyFlLmNvbm5lY3Rpb258fGUuY29ubmVjdGlvbi5kaXNjb25uZWN0ZWQ/KGUuY29ubmVjdGlvbj1udWxsLHQoKSk6KCgwLHMuZGVidWcpKGBzdGFydGluZyBkaXNjb25uZWN0aW5nYCksZS5kaXNjb25uZWN0Q2FsbGJhY2s9KDAscy5jcmVhdGVDYWxsYmFjaykodCxuKSxlLmNvbm5lY3Rpb24uY2xvc2UoKSxlLmNvbm5lY3Rpb249bnVsbCl9KX0sZS5wcm90b3R5cGUucmVjb25uZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGU9PT12b2lkIDAmJihlPTEpLHRoaXMuaW50ZXJuYWxSZWNvbm5lY3Rpbmc9ITAsdGhpcy5pbnRlcm5hbFJlY29ubmVjdGluZ0F0dGVtcHQ9ZSx0aGlzLmRpc2Nvbm5lY3QoKS50aGVuKGZ1bmN0aW9uKCl7dmFyIG49TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0Lm9wdGlvbnMub3B0aW9ucy5yZWNvbm5lY3Rpb25EZWxheU1heC10Lm9wdGlvbnMub3B0aW9ucy5yZWNvbm5lY3Rpb25EZWxheSkrdC5vcHRpb25zLm9wdGlvbnMucmVjb25uZWN0aW9uRGVsYXkpO3JldHVybigwLHMuZGVidWcpKGBjb25uZWN0aW9uIHdpbGwgcmVjb25uZWN0IGluICR7bn1tc2ApLHQuZW1pdHRlci5lbWl0KGByZWNvbm5lY3RpbmdgLGUpLG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSxuKX0pfSkudGhlbihmdW5jdGlvbigpe3JldHVybigwLHMuZGVidWcpKGBjb25uZWN0aW9uIGlzIHN0YXJ0aW5nIHJlY29ubmVjdGApLHQuZW1pdHRlci5lbWl0KGByZWNvbm5lY3RfYXR0ZW1wdGAsZSksdC5jb25uZWN0KCl9KX0sZS5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtlKHt9KX0pfSxlLnByb3RvdHlwZS5vbkluaXRpYWxpemVkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5pbml0aWFsaXplZHx8KHRoaXMuaW5pdGlhbGl6ZWQ9ITAsdGhpcy5pbml0RGF0YT1lLCgwLHMuZGVidWcpKGBlbWl0IGluaXRpYWxpemVkYCksdGhpcy5lbWl0dGVyLmVtaXQoYGluaXRpYWxpemVkYCxlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYodC5zZW5kQnVmZmVyLmxlbmd0aD4wKXsoMCxzLmRlYnVnKShgc2VuZGluZyBidWZmZXJlZCAke3Quc2VuZEJ1ZmZlci5sZW5ndGh9IGV2ZW50c2ApO2Zvcih2YXIgZT0wO2U8dC5zZW5kQnVmZmVyLmxlbmd0aDtlKyspe3ZhciBuPXQuc2VuZEJ1ZmZlcltlXTt0LmNvbm5lY3Rpb24uZW1pdChuLm5hbWUsbi5kYXRhLG4uY2FsbGJhY2spfXQuc2VuZEJ1ZmZlcj1bXX19LDEpKX0sZS5wcm90b3R5cGUub25Jbml0aWFsaXplRXJyb3I9ZnVuY3Rpb24oZSl7dGhpcy5kaXNjb25uZWN0KCksKDAscy5kZWJ1ZykoYGVtaXQgaW5pdGlhbGl6ZV9lcnJvcmAsdCh7fSxlKSksdGhpcy5lbWl0dGVyLmVtaXQoYGluaXRpYWxpemVfZXJyb3JgLGUpfSxlLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLmluaXRpYWxpemVkP3RoaXMuY29ubmVjdGlvbi5lbWl0KGUsdCxuKTp0aGlzLnNlbmRCdWZmZXIucHVzaCh7bmFtZTplLGRhdGE6dCxjYWxsYmFjazpufSl9LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW1pdHRlci5vbihlLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbWl0dGVyLm9uY2UoZSx0KSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4oZT10aGlzLmVtaXR0ZXIpLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseShlLHQpLHRoaXN9LGV9KCk7dmFyIGY9RHMoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgU29ja2V0RXJyb3JgLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmLlNvY2tldEVycm9yfX0pLHIoRWMoKSxlKX0pKSxPYz1zKChlPT57dmFyIHQ9ZSYmZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxlKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKHR5cGVvZiBuIT1gZnVuY3Rpb25gJiZuIT09bnVsbCl0aHJvdyBUeXBlRXJyb3IoYENsYXNzIGV4dGVuZHMgdmFsdWUgYCtTdHJpbmcobikrYCBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsYCk7ZSh0LG4pO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9dC5wcm90b3R5cGU9bj09PW51bGw/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0pKCksbj1lJiZlLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBuPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW25dLHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiBlfSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scj1lJiZlLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LG4scil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4/ZTpuZXcgbihmdW5jdGlvbih0KXt0KGUpfSl9cmV0dXJuIG5ldyhufHw9UHJvbWlzZSkoZnVuY3Rpb24obixhKXtmdW5jdGlvbiBvKGUpe3RyeXtjKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7YyhyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBjKGUpe2UuZG9uZT9uKGUudmFsdWUpOmkoZS52YWx1ZSkudGhlbihvLHMpfWMoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pfSxpPWUmJmUuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIG49e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKGFbMF0mMSl0aHJvdyBhWzFdO3JldHVybiBhWzFdfSx0cnlzOltdLG9wczpbXX0scixpLGEsbz1PYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3I9PWBmdW5jdGlvbmA/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBvLm5leHQ9cygwKSxvLnRocm93PXMoMSksby5yZXR1cm49cygyKSx0eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBjKFtlLHRdKX19ZnVuY3Rpb24gYyhzKXtpZihyKXRocm93IFR5cGVFcnJvcihgR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLmApO2Zvcig7byYmKG89MCxzWzBdJiYobj0wKSksbjspdHJ5e2lmKHI9MSxpJiYoYT1zWzBdJjI/aS5yZXR1cm46c1swXT9pLnRocm93fHwoKGE9aS5yZXR1cm4pJiZhLmNhbGwoaSksMCk6aS5uZXh0KSYmIShhPWEuY2FsbChpLHNbMV0pKS5kb25lKXJldHVybiBhO3N3aXRjaChpPTAsYSYmKHM9W3NbMF0mMixhLnZhbHVlXSksc1swXSl7Y2FzZSAwOmNhc2UgMTphPXM7YnJlYWs7Y2FzZSA0OnJldHVybiBuLmxhYmVsKysse3ZhbHVlOnNbMV0sZG9uZTohMX07Y2FzZSA1Om4ubGFiZWwrKyxpPXNbMV0scz1bMF07Y29udGludWU7Y2FzZSA3OnM9bi5vcHMucG9wKCksbi50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoKGE9bi50cnlzLCEoYT1hLmxlbmd0aD4wJiZhW2EubGVuZ3RoLTFdKSkmJihzWzBdPT09Nnx8c1swXT09PTIpKXtuPTA7Y29udGludWV9aWYoc1swXT09PTMmJighYXx8c1sxXT5hWzBdJiZzWzFdPGFbM10pKXtuLmxhYmVsPXNbMV07YnJlYWt9aWYoc1swXT09PTYmJm4ubGFiZWw8YVsxXSl7bi5sYWJlbD1hWzFdLGE9czticmVha31pZihhJiZuLmxhYmVsPGFbMl0pe24ubGFiZWw9YVsyXSxuLm9wcy5wdXNoKHMpO2JyZWFrfWFbMl0mJm4ub3BzLnBvcCgpLG4udHJ5cy5wb3AoKTtjb250aW51ZX1zPXQuY2FsbChlLG4pfWNhdGNoKGUpe3M9WzYsZV0saT0wfWZpbmFsbHl7cj1hPTB9aWYoc1swXSY1KXRocm93IHNbMV07cmV0dXJue3ZhbHVlOnNbMF0/c1sxXTp2b2lkIDAsZG9uZTohMH19fSxhPWUmJmUuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGBfX2VzTW9kdWxlYCx7dmFsdWU6ITB9KSxlLldlYnNvY2tldFZpc2l0b3JDbGllbnQ9dm9pZCAwO3ZhciBvPWEoRGMoKSkscz1EcygpLGM9ZnVuY3Rpb24oZSl7dChhLGUpO2Z1bmN0aW9uIGEodCl7dmFyIG49ZS5jYWxsKHRoaXMsdC5jb25uZWN0aW9uKXx8dGhpcztyZXR1cm4gbi5zZXJ2ZXJWZXJzaW9uPW51bGwsbi51cGRhdGVkVmFsdWVzPXt9LG4uY29ubmVjdERhdGE9dC5kYXRhLG4uaWRlbnRpdHk9bnVsbCxufXJldHVybiBhLnByb3RvdHlwZS5zZXRDb25uZWN0aW9uPWZ1bmN0aW9uKHQpe2UucHJvdG90eXBlLnNldENvbm5lY3Rpb24uY2FsbCh0aGlzLHQpLHQub24oYHNlcnZlci5lcnJvcmAsKDAscy5ib3VuZCkodGhpcyxgb25TZXJ2ZXJFcnJvcmApKSx0Lm9uKGBhY2NvdW50LnVwZGF0ZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBhY2NvdW50LnVwZGF0ZWRgKSksdC5vbihgYWdlbnQudXBkYXRlZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGFnZW50LnVwZGF0ZWRgKSksdC5vbihgYWdlbnQuc3RhdHVzX3VwZGF0ZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBhZ2VudC5zdGF0dXNfdXBkYXRlZGApKSx0Lm9uKGBhZ2VudC5yZW1vdmVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgYWdlbnQucmVtb3ZlZGApKSx0Lm9uKGB2aXNpdG9yLnVwZGF0ZWRgLCgwLHMuYm91bmQpKHRoaXMsYG9uVmlzaXRvclVwZGF0ZWRgKSksdC5vbihgY2hhdC51cGRhdGVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC51cGRhdGVkYCkpLHQub24oYGNoYXQuYWdlbnRfam9pbmVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC5hZ2VudF9qb2luZWRgKSksdC5vbihgY2hhdC5hZ2VudF9hc3NpZ25lZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQuYWdlbnRfYXNzaWduZWRgKSksdC5vbihgY2hhdC5hZ2VudF91bmFzc2lnbmVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC5hZ2VudF91bmFzc2lnbmVkYCkpLHQub24oYGNoYXQuYWdlbnRfbGVmdGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQuYWdlbnRfbGVmdGApKSx0Lm9uKGBjaGF0Lm9wZW5lZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQub3BlbmVkYCkpLHQub24oYGNoYXQuc2VydmVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC5zZXJ2ZWRgKSksdC5vbihgY2hhdC5jbG9zZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBjaGF0LmNsb3NlZGApKSx0Lm9uKGBjaGF0LnZpc2l0b3JfY2xvc2VkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC52aXNpdG9yX2Nsb3NlZGApKSx0Lm9uKGBjaGF0Lm1lc3NhZ2VfcmVjZWl2ZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBjaGF0Lm1lc3NhZ2VfcmVjZWl2ZWRgKSksdC5vbihgY2hhdC5tZXNzYWdlX3VwZGF0ZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBjaGF0Lm1lc3NhZ2VfdXBkYXRlZGApKSx0Lm9uKGBjaGF0Lm1lc3NhZ2VfZGVsZXRlZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQubWVzc2FnZV9kZWxldGVkYCkpLHQub24oYGNoYXQuYWdlbnRfdHlwaW5nYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC5hZ2VudF90eXBpbmdgKSksdC5vbihgY2hhdC5yYXRlZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQucmF0ZWRgKSksdC5vbihgY2hhdC5yYXRpbmdfY2FuY2VsbGVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgY2hhdC5yYXRpbmdfY2FuY2VsbGVkYCkpLHQub24oYGNoYXQucmF0aW5nX3N1Z2dlc3RlZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQucmF0aW5nX3N1Z2dlc3RlZGApKSx0Lm9uKGBjaGF0LmNvbnRhY3RfcmVhZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQuY29udGFjdF9yZWFkYCkpLHQub24oYGNoYXQuZGVsZXRlZGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQuZGVsZXRlZGApKSx0Lm9uKGBjaGF0LnRpY2tldF9mb3JtX2ZpbmlzaGAsKDAscy5jcmVhdGVFbWl0dGVyKSh0aGlzLmVtaXR0ZXIsYGNoYXQudGlja2V0X2Zvcm1fZmluaXNoYCkpLHQub24oYGNoYXQudHJhbnNjcmlwdF9wZGZgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBjaGF0LnRyYW5zY3JpcHRfcGRmYCkpLHQub24oYGNvbnRhY3QuYWNxdWlyZWRgLCgwLHMuY3JlYXRlRW1pdHRlcikodGhpcy5lbWl0dGVyLGBjb250YWN0LmFjcXVpcmVkYCkpLHQub24oYGlkZW50aXR5LnN0YXR1c191cGRhdGVkYCwoMCxzLmNyZWF0ZUVtaXR0ZXIpKHRoaXMuZW1pdHRlcixgaWRlbnRpdHkuc3RhdHVzX3VwZGF0ZWRgKSl9LGEucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW1pdHRlci5vbihlLHQpLHRoaXN9LGEucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbWl0dGVyLm9uY2UoZSx0KSx0aGlzfSxhLnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aXR5P3RoaXMuaWRlbnRpdHkuaWQ6bnVsbH0sYS5wcm90b3R5cGUuZ2V0SWRlbnRpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGl0eX0sYS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZS5jb25uZWN0LmNhbGwodGhpcyl9LGEucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cyx2b2lkIDAsZnVuY3Rpb24odCl7dmFyIG49dGhpcztyZXR1cm4gdD09PXZvaWQgMCYmKHQ9ITEpLGkodGhpcyxmdW5jdGlvbihyKXtzd2l0Y2goci5sYWJlbCl7Y2FzZSAwOnJldHVybiB0P1s0LG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7bi5zZW5kKGB2aXNpdG9yLmxvZ291dGAse30sKDAscy5jcmVhdGVDYWxsYmFjaykoZSx0KSl9KV06WzMsMl07Y2FzZSAxOnIuc2VudCgpLHIubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzIsZS5wcm90b3R5cGUuZGlzY29ubmVjdC5jYWxsKHRoaXMpXX19KX0pfSxhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGU9PT12b2lkIDAmJihlPXt9KSx0aGlzLmNoZWNrU2VydmVyVmVyc2lvbigpLGUpdGhpcy5pZGVudGl0eVt0XT1lW3RdLHRoaXMudXBkYXRlZFZhbHVlc1t0XT1lW3RdO3RoaXMuc2F2ZVZpc2l0b3JWYWx1ZXMoKX0sYS5wcm90b3R5cGUuYXV0aGVudGljYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0LnNlbmQoYHZpc2l0b3IuYXV0aGVudGljYXRlYCx7dmFsdWVzOmV9LCgwLHMuY3JlYXRlQ2FsbGJhY2spKG4scikpfSl9LGEucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIHQ9PT12b2lkIDAmJih0PW51bGwpLHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24ocixpKXtuLnNlbmQoYHZpc2l0b3Iubm90aWZ5YCx7bmFtZTplLHZhbHVlOnR9LCgwLHMuY3JlYXRlQ2FsbGJhY2spKHIsaSkpfSl9LGEucHJvdG90eXBlLmNoYXRSZWFkPWZ1bmN0aW9uKCl7dGhpcy5jaGVja1NlcnZlclZlcnNpb24oKSx0aGlzLnNlbmQoYGNoYXQucmVhZGAsbnVsbCl9LGEucHJvdG90eXBlLmNoYXRUeXBpbmc9ZnVuY3Rpb24oZSx0KXt0PT09dm9pZCAwJiYodD1udWxsKSx0aGlzLmNoZWNrU2VydmVyVmVyc2lvbigpLHRoaXMuc2VuZChgY2hhdC50eXBpbmdgLHt0eXBpbmc6e2lzOmUsdGV4dDp0fX0pfSxhLnByb3RvdHlwZS5jaGF0TWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmNoZWNrU2VydmVyVmVyc2lvbigpLG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7dC5zZW5kKGBjaGF0Lm1lc3NhZ2VgLGUsKDAscy5jcmVhdGVDYWxsYmFjaykobixyKSl9KX0sYS5wcm90b3R5cGUuY2hhdENsb3NlPWZ1bmN0aW9uKGUpe2U9PT12b2lkIDAmJihlPW51bGwpLHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksdGhpcy5zZW5kKGBjaGF0LmNsb3NlYCx7dHlwZTplfSl9LGEucHJvdG90eXBlLmNoYXRVcGxvYWRJbml0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5jaGVja1NlcnZlclZlcnNpb24oKSxuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe2Uuc2VuZChgY2hhdC51cGxvYWRfaW5pdGAsbnVsbCwoMCxzLmNyZWF0ZUNhbGxiYWNrKSh0LG4pKX0pfSxhLnByb3RvdHlwZS5jaGF0VXBsb2FkRmluaXNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0LnNlbmQoYGNoYXQudXBsb2FkX2ZpbmlzaGAse3VwbG9hZFRva2VuOmV9LCgwLHMuY3JlYXRlQ2FsbGJhY2spKG4scikpfSl9LGEucHJvdG90eXBlLmNoYXRUcmFuc2NyaXB0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5jaGVja1NlcnZlclZlcnNpb24oKSxuZXcgUHJvbWlzZShmdW5jdGlvbihyLGkpe24uc2VuZChgY2hhdC50cmFuc2NyaXB0YCx7ZW1haWw6ZSxsYW5nOnR9LCgwLHMuY3JlYXRlQ2FsbGJhY2spKHIsaSkpfSl9LGEucHJvdG90eXBlLmNoYXRUaWNrZXRGb3JtRmluaXNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0LnNlbmQoYGNoYXQudGlja2V0X2Zvcm1fZmluaXNoYCxlLCgwLHMuY3JlYXRlQ2FsbGJhY2spKG4scikpfSl9LGEucHJvdG90eXBlLmNoYXRSYXRlSW5pdD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLnNlbmQoYGNoYXQucmF0ZV9pbml0YCxudWxsLCgwLHMuY3JlYXRlQ2FsbGJhY2spKHQsbikpfSl9LGEucHJvdG90eXBlLmNoYXRSYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXt0LnNlbmQoYGNoYXQucmF0ZWAsZSwoMCxzLmNyZWF0ZUNhbGxiYWNrKShuLHIpKX0pfSxhLnByb3RvdHlwZS5jaGF0VHJhbnNjcmlwdFBkZj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuY2hlY2tTZXJ2ZXJWZXJzaW9uKCksbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLnNlbmQoYGNoYXQudHJhbnNjcmlwdF9wZGZgLG51bGwsKDAscy5jcmVhdGVDYWxsYmFjaykodCxuKSl9KX0sYS5wcm90b3R5cGUubGlua09wZW5lZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmNoZWNrU2VydmVyVmVyc2lvbigpLG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7dC5zZW5kKGBjaGF0Lmxpbmtfb3BlbmVkYCxlLCgwLHMuY3JlYXRlQ2FsbGJhY2spKG4scikpfSl9LGEucHJvdG90eXBlLnZpc2l0b3JDb25uZWN0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PW4oe3ZlcnNpb246YS5DTElFTlRfVkVSU0lPTn0sdGhpcy5jb25uZWN0RGF0YSk7Zm9yKHZhciByIGluIHRoaXMudXBkYXRlZFZhbHVlcyl0W3JdPXRoaXMudXBkYXRlZFZhbHVlc1tyXTtpZih0aGlzLnVwZGF0ZWRWYWx1ZXM9e30sdGhpcy5pZGVudGl0eSlmb3IodmFyIHIgaW4gdGhpcy5pZGVudGl0eSlbYGJhbm5lZEF0YCxgY2hhdElkYCxgc3RhdHVzYF0uaW5jbHVkZXMocil8fCh0W3JdPXRoaXMuaWRlbnRpdHlbcl0pO3JldHVybiB0aGlzLmVtaXR0ZXIuZW1pdChgaW5pdGlhbGl6ZWAsdCksbmV3IFByb21pc2UoZnVuY3Rpb24obixyKXtlLmNvbm5lY3Rpb24uZW1pdChgdmlzaXRvci5jb25uZWN0YCx0LCgwLHMuY3JlYXRlQ2FsbGJhY2spKG4scikpfSl9LGEucHJvdG90eXBlLnZpc2l0b3JEaXNjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLmNvbm5lY3Rpb24uZW1pdChgdmlzaXRvci5kaXNjb25uZWN0YCx7fSwoMCxzLmNyZWF0ZUNhbGxiYWNrKSh0LG4pKX0pfSxhLnByb3RvdHlwZS5vblZpc2l0b3JVcGRhdGVkPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlLmNoYW5nZXMpYS5pZGVudGl0eVByb3BlcnRpZXMuaW5jbHVkZXMobikmJih0aGlzLmlkZW50aXR5JiYodGhpcy5pZGVudGl0eVtuXT1lLmNoYW5nZXNbbl0pLHRbbl09ZS5jaGFuZ2VzW25dKTtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5sZW5ndGg+MCYmdGhpcy5lbWl0dGVyLmVtaXQoYHZpc2l0b3IudXBkYXRlZGAsdCl9LGEucHJvdG90eXBlLm9uU2VydmVyRXJyb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAscy5jcmVhdGVTb2NrZXRFcnJvcikoZSk7dGhpcy5lbWl0dGVyLmVtaXQoYGVycm9yYCx0KX0sYS5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMudmlzaXRvckNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLnNlcnZlclZlcnNpb249dC5zZXJ2ZXJWZXJzaW9uLGUuaWRlbnRpdHk9bihuKHt9LHQudmlzaXRvcikse3ZhcmlhYmxlczpuKHt9LHQudmlzaXRvci52YXJpYWJsZXMpfSksdH0pfSxhLnByb3RvdHlwZS5zYXZlVmlzaXRvclZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5pbml0aWFsaXplZCYmc2V0VGltZW91dChmdW5jdGlvbigpe2lmKCEoIWUuaW5pdGlhbGl6ZWR8fE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUudXBkYXRlZFZhbHVlcykubGVuZ3RoPT09MCkpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlLnVwZGF0ZWRWYWx1ZXMpdFtuXT1lLnVwZGF0ZWRWYWx1ZXNbbl07ZS5zZW5kKGB2aXNpdG9yLnVwZGF0ZWAse3ZhbHVlczp0fSksZS51cGRhdGVkVmFsdWVzPXt9fX0sMSl9LGEucHJvdG90eXBlLmNoZWNrU2VydmVyVmVyc2lvbj1mdW5jdGlvbigpe2lmKHRoaXMuc2VydmVyVmVyc2lvbj09PW51bGwpdGhyb3cgRXJyb3IoYENsaWVudCBub3QgeWV0IGNvbm5lY3RlZCB0byBzZXJ2ZXJgKX0sYS5DTElFTlRfVkVSU0lPTj02LGEuaWRlbnRpdHlQcm9wZXJ0aWVzPVtgaWRgLGBuYW1lYCxgZW1haWxgLGBwaG9uZWAsYGNoYXRJZGAsYHZhcmlhYmxlc2AsYGxhbmdgLGBncm91cGAsYGJhbm5lZEF0YCxgdHJpZ2dlcmFibGVgLGB2aXNpdHNgLGBnZHByQXBwcm92ZWRgXSxhfShvLmRlZmF1bHQpO2UuV2Vic29ja2V0VmlzaXRvckNsaWVudD1jLChmdW5jdGlvbihlKXsoZnVuY3Rpb24oZSl7ZS5XaWRnZXRPcGVuPWB3aWRnZXRfb3BlbmAsZS5XaWRnZXRTaG93PWB3aWRnZXRfc2hvd2AsZS5WaXNpdG9yQWN0aXZlPWB2aXNpdG9yX2FjdGl2ZWAsZS5WaXNpdG9ySW5hY3RpdmU9YHZpc2l0b3JfaW5hY3RpdmVgfSkoZS5FdmVudE5hbWV8fD17fSl9KShjfHwoZS5XZWJzb2NrZXRWaXNpdG9yQ2xpZW50PWM9e30pKX0pKSxrYz1zKChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pfSkpLEFjPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5SYXRpbmdUYXJnZXQ9dm9pZCAwO3ZhciB0OyhmdW5jdGlvbihlKXtlLkFnZW50PWBhZ2VudGAsZS5BaT1gYWlgfSkodHx8KGUuUmF0aW5nVGFyZ2V0PXQ9e30pKX0pKSxqYz1zKChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pLGUuTWVzc2FnZURlbGl2ZXJ5RmFpbFJlYXNvbj1lLk1lc3NhZ2VEZWxpdmVyeVN0YXR1cz1lLkFnZW50RGV2aWNlUGxhdGZvcm09ZS5BZ2VudERldmljZVR5cGU9ZS5WaXNpdG9yU3RhdHVzPWUuQ2hhdFJlYWRJbmZvVHlwZT1lLkNoYXRTdGF0dXM9ZS5BZ2VudFN0YXR1cz1lLkFjY291bnRTdGF0dXM9dm9pZCAwLGUuQWNjb3VudFN0YXR1cz17T25saW5lOmBvbmxpbmVgLE9mZmxpbmU6YG9mZmxpbmVgLE9mZmxpbmVXaXRoQUk6YG9mZmxpbmVXaXRoQWlgfSxlLkFnZW50U3RhdHVzPXtPbmxpbmU6YG9ubGluZWAsT2ZmbGluZTpgb2ZmbGluZWB9LGUuQ2hhdFN0YXR1cz17UGVuZGluZzpgcGVuZGluZ2AsT3Blbjpgb3BlbmAsQ2xvc2VkOmBjbG9zZWRgLFNlcnZlZDpgc2VydmVkYH0sZS5DaGF0UmVhZEluZm9UeXBlPXtBZ2VudDpgYWdlbnRgLENvbnRhY3Q6YGNvbnRhY3RgfSxlLlZpc2l0b3JTdGF0dXM9e0FjdGl2ZTpgYWN0aXZlYCxDbGlja2VkOmBjbGlja2VkYCxJZGxlOmBpZGxlYCxTZXJ2ZWQ6YHNlcnZlZGAsVW5zZXJ2ZWQ6YHVuc2VydmVkYCxUcmlnZ2VyZWQ6YHRyaWdnZXJlZGB9LGUuQWdlbnREZXZpY2VUeXBlPXtCcm93c2VyOmBicm93c2VyYCxNb2JpbGU6YG1vYmlsZWAsWG1wcDpgeG1wcGAsT3RoZXI6YG90aGVyYH0sZS5BZ2VudERldmljZVBsYXRmb3JtPXtJT1M6YGlvc2AsQU5EUk9JRDpgYW5kcm9pZGB9LGUuTWVzc2FnZURlbGl2ZXJ5U3RhdHVzPXtPazpgb2tgLFBlcm1hbmVudEZhaWw6YHBlcm1hbmVudF9mYWlsYCxUZW1wb3JhcnlGYWlsOmB0ZW1wb3JhcnlfZmFpbGAsQ29tcGxhaW5lZDpgY29tcGxhaW5lZGAsU2Vlbjpgc2VlbmB9LGUuTWVzc2FnZURlbGl2ZXJ5RmFpbFJlYXNvbj17RmFjZWJvb2syNGhXaW5kb3c6YGZhY2Vib29rLm91dHNpZGVfYWxsb3dlZF93aW5kb3dgLEluc3RhZ3JhbUV4Y2VlZGVkRmlsZVNpemU6YGluc3RhZ3JhbS5leGNlZWRlZF9maWxlX3NpemVgLEluc3RhZ3JhbVVua25vd246YGluc3RhZ3JhbS51bmtub3duYCxJbnN0YWdyYW1VbnN1cHBvcnRlZEZpbGVUeXBlOmBpbnN0YWdyYW0udW5zdXBwb3J0ZWRfZmlsZV90eXBlYCxXaGF0c2FwcFVuc3VwcG9ydGVkRmlsZTpgd2hhdHNhcHAudW5zdXBwb3J0ZWRfZmlsZV90eXBlYCxXaGF0c2FwcFVua25vd246YHdoYXRzYXBwLnVua25vd25gfX0pKSxNYz1zKChlPT57dmFyIHQ9ZSYmZS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlPyhmdW5jdGlvbihlLHQsbixyKXtyPT09dm9pZCAwJiYocj1uKTt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7KCFpfHwoYGdldGBpbiBpPyF0Ll9fZXNNb2R1bGU6aS53cml0YWJsZXx8aS5jb25maWd1cmFibGUpKSYmKGk9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixpKX0pOihmdW5jdGlvbihlLHQsbixyKXtyPT09dm9pZCAwJiYocj1uKSxlW3JdPXRbbl19KSksbj1lJiZlLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHIgaW4gZSlyIT09YGRlZmF1bHRgJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJnQobixlLHIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5Tb2NrZXRFcnJvcj1lLmRlZmF1bHQ9dm9pZCAwO3ZhciByPU9jKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYGRlZmF1bHRgLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLldlYnNvY2tldFZpc2l0b3JDbGllbnR9fSksbihPYygpLGUpLG4oa2MoKSxlKSxuKEFjKCksZSk7dmFyIGk9RHMoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgU29ja2V0RXJyb3JgLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlNvY2tldEVycm9yfX0pLG4oamMoKSxlKX0pKSxOYz1PKG51bGwpLFBjPU8oITEpLEZjPU8oW10pLEljPWU9PntGYy51cGRhdGUodD0+Wy4uLnQsZV0pfSxMYz0oKT0+e2xldCBlO3JldHVybiBGYy51cGRhdGUodD0+KGU9dC5wb3AoKSx0KSksZT8/bnVsbH0sUmM9KCk9PkEoRmMpLmxlbmd0aD09PTAsemM9ayhOYyxlPT5lIT09bnVsbCksQmM9KGUse3VzZVN0YWNrOnQ9ITF9PXt9KT0+e05jLnVwZGF0ZShuPT4odCYmbiYmSWMobiksUGMuc2V0KG4hPT1udWxsKSxlKSl9LFZjPSgpPT57bGV0IGU9bnVsbDtSYygpfHwoZT1MYygpKSxOYy5zZXQoZSl9LEhjPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuT3B0aW9ucz0wXT1gT3B0aW9uc2AsZVtlLkdkcHJBbmRQcml2YWN5PTFdPWBHZHByQW5kUHJpdmFjeWAsZVtlLkF1dGhGb3JtPTJdPWBBdXRoRm9ybWAsZVtlLkNsb3NlQ2hhdD0zXT1gQ2xvc2VDaGF0YCxlW2UuQ2hhdFJhdGluZz00XT1gQ2hhdFJhdGluZ2AsZVtlLlRpY2tldEZvcm09NV09YFRpY2tldEZvcm1gLGV9KHt9KSxVYz0xZTMsV2M9U3ltYm9sKGBjb250ZW50TGlzdEl0ZW1gKSxHYz1TeW1ib2woYGNvbnRlbnRNZXNzYWdlQXR0YWNobWVudGApLEtjPWAtcmVwbGllc2AscWM9LjM1LEpjPTVlMyxZYz1zKChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pfSkpLFhjPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5DYXJkQWN0aW9uVHlwZT1lLkNhcmRzTGF5b3V0PXZvaWQgMCxlLkNhcmRzTGF5b3V0PXtDYXJvdXNlbDpgY2Fyb3VzZWxgfSxlLkNhcmRBY3Rpb25UeXBlPXtPcGVuVXJsOmBvcGVuX3VybGB9fSkpLFpjPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSl9KSksUWM9cygoZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGBfX2VzTW9kdWxlYCx7dmFsdWU6ITB9KSxlLlJhdGluZ1RhcmdldD1lLkdyb3VwVHlwZT1lLkNoYW5uZWxUeXBlPWUuTWVzc2FnZVN1YlR5cGU9ZS5NZXNzYWdlVHlwZT1lLkF0dGFjaG1lbnRJbnZhbGlkUmVhc29uPWUuQXR0YWNobWVudFR5cGU9ZS5NZXNzYWdlQWN0aW9uVHlwZT12b2lkIDAsZS5NZXNzYWdlQWN0aW9uVHlwZT17VGV4dDpgdGV4dGAsT3BlblVybDpgb3Blbl91cmxgfSxlLkF0dGFjaG1lbnRUeXBlPXtDYXJkczpgY2FyZHNgLEZpbGU6YGZpbGVgLEltYWdlOmBpbWFnZWAsTWVkaWE6YG1lZGlhYCxJbnZhbGlkOmBpbnZhbGlkYH0sZS5BdHRhY2htZW50SW52YWxpZFJlYXNvbj17SW52YWxpZFNpemU6YGludmFsaWRfc2l6ZWAsSW52YWxpZFR5cGU6YGludmFsaWRfdHlwZWB9LGUuTWVzc2FnZVR5cGU9e01lc3NhZ2U6YG1lc3NhZ2VgLE5vdGU6YG5vdGVgLEV2ZW50OmBldmVudGAsSGVscDpgaGVscGB9LGUuTWVzc2FnZVN1YlR5cGU9e0FnZW50OmBhZ2VudGAsQ29udGFjdDpgY29udGFjdGAsVHJpZ2dlcjpgdHJpZ2dlcmAsQm90OmBib3RgLFN5c3RlbTpgc3lzdGVtYCxBZ2VudEV4dGVybmFsOmBhZ2VudF9leHRlcm5hbGAsRm91bmRFbWFpbDpgZm91bmRfZW1haWxgLENoYXRSZXNvbHZlOmBjaGF0X3Jlc29sdmVgLEVtYWlsOmBlbWFpbGB9LGUuQ2hhbm5lbFR5cGU9e0RlZmF1bHQ6YGRlZmF1bHRgLEVtYWlsOmBlbWFpbGAsRW1haWxJbnRlZ3JhdGlvbjpgZW1haWxfaW50ZWdyYXRpb25gLEZhY2Vib29rTWVzc2VuZ2VyOmBmYWNlYm9va19tZXNzZW5nZXJgLEdtYWlsOmBnbWFpbGAsU21hcnRzdXBwOmBzbWFydHN1cHBgLEluc3RhZ3JhbTpgaW5zdGFncmFtYCxXaGF0c2FwcDpgd2hhdHNhcHBgfTt2YXIgdDsoZnVuY3Rpb24oZSl7ZS5haT1gYWlgLGUuY2hhdGJvdD1gY2hhdGJvdGAsZS5tZXNzYWdlPWBtZXNzYWdlYH0pKHR8fChlLkdyb3VwVHlwZT10PXt9KSk7dmFyIG47KGZ1bmN0aW9uKGUpe2UuQWdlbnQ9YGFnZW50YCxlLkFpPWBhaWB9KShufHwoZS5SYXRpbmdUYXJnZXQ9bj17fSkpfSkpLCRjPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5QYXJ0aWNpcGFudFR5cGU9dm9pZCAwO3ZhciB0OyhmdW5jdGlvbihlKXtlLmZyb209YGZyb21gLGUudG89YHRvYCxlLmNjPWBjY2AsZS5iY2M9YGJjY2B9KSh0fHwoZS5QYXJ0aWNpcGFudFR5cGU9dD17fSkpfSkpLGVsPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5NZXNzYWdlQ29udGVudFR5cGU9ZS5NZXNzYWdlQ29udGVudD12b2lkIDA7dmFyIHQ7KGZ1bmN0aW9uKGUpeyhmdW5jdGlvbihlKXtlLlR5cGU9e1RleHQ6YHRleHRgLFVwbG9hZDpgdXBsb2FkYCxSYXRlRm9ybTpgcmF0ZV9mb3JtYCxUaWNrZXRGb3JtOmB0aWNrZXRfZm9ybWAsRW1haWw6YGVtYWlsYH19KShlLk1lc3NhZ2V8fD17fSksKGZ1bmN0aW9uKGUpe2UuVHlwZT17QWdlbnRKb2luOmBhZ2VudF9qb2luYCxBZ2VudEFzc2lnbjpgYWdlbnRfYXNzaWduYCxBZ2VudFVuYXNzaWduOmBhZ2VudF91bmFzc2lnbmAsQWdlbnRMZWF2ZTpgYWdlbnRfbGVhdmVgLENoYXRDbG9zZTpgY2hhdF9jbG9zZWAsQ2hhdFZpc2l0b3JDbG9zZTpgY2hhdF92aXNpdG9yX2Nsb3NlYH19KShlLkV2ZW50fHw9e30pLChmdW5jdGlvbihlKXtlLlR5cGU9e1RleHQ6YHRleHRgLEZvdW5kRW1haWw6YGZvdW5kX2VtYWlsYH19KShlLkhlbHB8fD17fSl9KSh0fHwoZS5NZXNzYWdlQ29udGVudD10PXt9KSksZS5NZXNzYWdlQ29udGVudFR5cGU9ey4uLnQuTWVzc2FnZS5UeXBlLC4uLnQuRXZlbnQuVHlwZSwuLi50LkhlbHAuVHlwZX19KSksdGw9cygoZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGBfX2VzTW9kdWxlYCx7dmFsdWU6ITB9KX0pKSxubD1zKChlPT57dmFyIHQ9ZSYmZS5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlPyhmdW5jdGlvbihlLHQsbixyKXtyPT09dm9pZCAwJiYocj1uKTt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7KCFpfHwoYGdldGBpbiBpPyF0Ll9fZXNNb2R1bGU6aS53cml0YWJsZXx8aS5jb25maWd1cmFibGUpKSYmKGk9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixpKX0pOihmdW5jdGlvbihlLHQsbixyKXtyPT09dm9pZCAwJiYocj1uKSxlW3JdPXRbbl19KSksbj1lJiZlLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHIgaW4gZSlyIT09YGRlZmF1bHRgJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJnQobixlLHIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksbihZYygpLGUpLG4oWGMoKSxlKSxuKFpjKCksZSksbihRYygpLGUpLG4oJGMoKSxlKSxuKGVsKCksZSksbih0bCgpLGUpfSkpLHJsPShlLHQpPT57bGV0IG49e307Zm9yKGxldCByIG9mIHQpe2xldCB0PVN0cmluZyhyW2VdKTtuW3RdPXJ9cmV0dXJuIG59LGlsPSgoKT0+e2xldHtzdWJzY3JpYmU6ZSxzZXQ6dH09Tyh7fSk7cmV0dXJue3N1YnNjcmliZTplLHNldEdyb3VwczplPT57dChybChga2V5YCxlKSl9fX0pKCksYWw9ayhbaWxdLChbZV0pPT5PYmplY3QudmFsdWVzKGUpKSxvbD17YXV0aEZvcm1EcmF3ZXI6YGF1dGhGb3JtRHJhd2VyYCxhdXRoRm9ybVByaXZhY3lOb3RpY2U6YGF1dGhGb3JtUHJpdmFjeU5vdGljZWAsYXV0aEZvcm1Qcml2YWN5Tm90aWNlU3dpdGNoOmBhdXRoRm9ybVByaXZhY3lOb3RpY2VTd2l0Y2hgLGF1dGhGb3JtU3VibWl0QnV0dG9uOmBhdXRoRm9ybVN1Ym1pdEJ1dHRvbmAsYXZhdGFyQWdlbnQ6YGF2YXRhckFnZW50YCxhdmF0YXJCb3Q6YGF2YXRhckJvdGAsYXZhdGFyR3JvdXA6YGF2YXRhckdyb3VwYCxhdmF0YXJJbmZvOmBhdmF0YXJJbmZvYCxidXR0b25BdHRhY2htZW50OmBidXR0b25BdHRhY2htZW50YCxidXR0b25DbG9zZUNoYXQ6YGJ1dHRvbkNsb3NlQ2hhdGAsYnV0dG9uQ2xvc2VEcmF3ZXI6YGJ1dHRvbkNsb3NlRHJhd2VyYCxidXR0b25Db2xsYXBzZUNoYXQ6YGJ1dHRvbkNvbGxhcHNlQ2hhdGAsYnV0dG9uRW1vamk6YGJ1dHRvbkVtb2ppYCxidXR0b25FeHBhbmRDaGF0OmBidXR0b25FeHBhbmRDaGF0YCxidXR0b25NaW5pbWl6ZUNoYXQ6YGJ1dHRvbk1pbmltaXplQ2hhdGAsYnV0dG9uT3B0aW9uczpgYnV0dG9uT3B0aW9uc2AsYnV0dG9uU2VuZDpgYnV0dG9uU2VuZGAsY2hhdFJhdGluZ0RyYXdlcjpgY2hhdFJhdGluZ0RyYXdlcmAsY2hhdFJhdGluZ0Vtb2ppQnV0dG9uOmBjaGF0UmF0aW5nRW1vamlgLGNoYXRSYXRpbmdTZW5kQnV0dG9uOmBjaGF0UmF0aW5nU2VuZEJ1dHRvbmAsY2hhdFJhdGluZ1RleHRhcmVhOmBjaGF0UmF0aW5nVGV4dGFyZWFgLGNoYXRSYXRpbmdGZWVkYmFja0J1dHRvbjpgY2hhdFJhdGluZ0ZlZWRiYWNrQnV0dG9uYCxjaGF0UmF0aW5nQnV0dG9uQWk6YGNoYXRSYXRpbmdCdXR0b25BaWAsY2hhdFJhdGluZ0J1dHRvbkFnZW50OmBjaGF0UmF0aW5nQnV0dG9uQWdlbnRgLGNsb3NlQ2hhdENvbmZpcm1CdXR0b246YGNsb3NlQ2hhdENvbmZpcm1CdXR0b25gLGNsb3NlQ2hhdERlY2xpbmVCdXR0b246YGNsb3NlQ2hhdERlY2xpbmVCdXR0b25gLGNsb3NlQ2hhdERyYXdlcjpgY2xvc2VDaGF0RHJhd2VyYCxmbGFzaE1lc3NhZ2U6YGZsYXNoTWVzc2FnZWAsZ2RwckRyYXdlcjpgZ2RwckRyYXdlcmAsaGVhZGVyVGl0bGU6YGhlYWRlclRpdGxlYCxoZWFkZXJTdGF0dXM6YGhlYWRlclN0YXR1c2AsaGVhZGVyQmFkZ2U6YGhlYWRlckJhZGdlYCxpbmxpbmVFbW9qaVBpY2tlcjpgaW5saW5lRW1vamlQaWNrZXJgLG1lc3NhZ2VBdHRhY2htZW50OmBtZXNzYWdlQXR0YWNobWVudGAsbWVzc2FnZUFnZW50OmBtZXNzYWdlQWdlbnRgLG1lc3NhZ2VCb3Q6YG1lc3NhZ2VCb3RgLG1lc3NhZ2VCb3RSZXBseTpgbWVzc2FnZUJvdFJlcGx5YCxtZXNzYWdlQm90QmFjazpgbWVzc2FnZUJvdEJhY2tgLG1lc3NhZ2VDb250YWN0OmBtZXNzYWdlQ29udGFjdGAsbWVzc2FnZUZpbGU6YG1lc3NhZ2VGaWxlYCxtZXNzYWdlR3JvdXA6YG1lc3NhZ2VHcm91cGAsbWVzc2FnZUltYWdlOmBtZXNzYWdlSW1hZ2VgLG9wdGlvbnNBY2Nlc3NpYmlsaXR5OmBvcHRpb25zQWNjZXNzaWJpbGl0eWAsb3B0aW9uc0RyYXdlcjpgb3B0aW9uc0RyYXdlcmAsb3B0aW9uc0V4cGFuZENoYXQ6YG9wdGlvbnNFeHBhbmRDaGF0YCxvcHRpb25zUHJpdmFjeU5vdGljZTpgb3B0aW9uc1ByaXZhY3lOb3RpY2VgLG9wdGlvbnNTb3VuZHM6YG9wdGlvbnNTb3VuZHNgLG9wdGlvbnNUcmFuc2NyaXB0OmBvcHRpb25zVHJhbnNjcmlwdGAscG9wdXA6YHBvcHVwYCxwb3B1cE1lc3NhZ2U6YHBvcHVwTWVzc2FnZWAscG9wdXBCdXR0b246YHBvcHVwQnV0dG9uYCxwb3B1cEJ1dHRvbkNsb3NlOmBwb3B1cEJ1dHRvbkNsb3NlYCxwcm9kdWN0Q2FyZDpgcHJvZHVjdENhcmRgLHByb2R1Y3RDYXJkQXJyb3dMZWZ0OmBwcm9kdWN0Q2FyZEFycm93TGVmdGAscHJvZHVjdENhcmRBcnJvd1JpZ2h0OmBwcm9kdWN0Q2FyZEFycm93UmlnaHRgLHByb2R1Y3RDYXJkQnV0dG9uOmBwcm9kdWN0Q2FyZEJ1dHRvbmAscHJvZHVjdENhcmRDYXJvdXNlbDpgcHJvZHVjdENhcmRDYXJvdXNlbGAscHJvZHVjdENhcmREZXNjcmlwdGlvbjpgcHJvZHVjdENhcmREZXNjcmlwdGlvbmAscHJvZHVjdENhcmRJbWFnZTpgcHJvZHVjdENhcmRJbWFnZWAscHJvZHVjdENhcmRJbmZvOmBwcm9kdWN0Q2FyZEluZm9gLHByb2R1Y3RDYXJkVGl0bGU6YHByb2R1Y3RDYXJkVGl0bGVgLHN5c3RlbU1lc3NhZ2U6YHN5c3RlbU1lc3NhZ2VgLHRleHRhcmVhOmB0ZXh0YXJlYWAsdGV4dGFyZWFQcmV2aWV3RmlsZTpgdGV4dGFyZWFQcmV2aWV3RmlsZWAsdGV4dGFyZWFQcmV2aWV3SW1hZ2U6YHRleHRhcmVhUHJldmlld0ltYWdlYCx0cmFuc2NyaXB0SW5wdXQ6YHRyYW5zY3JpcHRJbnB1dGAsdHJhbnNjcmlwdFNlbmRCdXR0b246YHRyYW5zY3JpcHRTZW5kYCx0aWNrZXRGb3JtRHJhd2VyOmB0aWNrZXRGb3JtRHJhd2VyYCx0aWNrZXRGb3JtU3VibWl0QnV0dG9uOmB0aWNrZXRGb3JtU3VibWl0QnV0dG9uYCx3aWRnZXRCdXR0b246YHdpZGdldEJ1dHRvbmAsd2lkZ2V0QnV0dG9uRnJhbWU6YHdpZGdldEJ1dHRvbkZyYW1lYCx3aWRnZXRCdXR0b25UZXh0OmB3aWRnZXRCdXR0b250ZXh0YCx3aWRnZXRJbWFnZVByZXZpZXc6YHdpZGdldEltYWdlUHJldmlld2Asd2lkZ2V0TWVzc2VuZ2VyOmB3aWRnZXRNZXNzZW5nZXJgLHdpZGdldE1lc3NlbmdlckZyYW1lOmB3aWRnZXRNZXNzZW5nZXJGcmFtZWAsd2lkZ2V0T25saW5lQmFkZ2U6YHdpZGdldE9ubGluZUJhZGdlYCx3aWRnZXRQb3B1cEZyYW1lOmB3aWRnZXRQb3B1cEZyYW1lYCx3aWRnZXRUeXBpbmdGcmFtZTpgd2lkZ2V0VHlwaW5nRnJhbWVgLHdpZGdldFVucmVhZE1lc3NhZ2VzQmFkZ2U6YHdpZGdldFVucmVhZE1lc3NhZ2VzQmFkZ2VgLHdpZGdldEhlYWRlcjpgd2lkZ2V0SGVhZGVyYH0sc2w9YGh0dHBzOi8vd3d3LnNtYXJ0c3VwcC5jb21gLGNsPWAvcG93ZXJlZC1ieS1zbWFydHN1cHBgLGxsPVtgY3NgLGBlc2AsYGZyYCxgaHVgLGBpdGAsYGRlYCxgbmxgLGBwbGBdLHVsPWBodHRwczovL3d3dy5zbWFydHN1cHAuY29tL215LWRhdGEtYW5kLWdkcHJgLGRsPU8oITEpLGZsPXJzKFUuU2Vzc2lvbklkLGBgKSxwbD0oKT0+e2xldHtwcm90b2NvbDplLGhvc3Q6dH09Vi5nZXRPcHRpb25zKCk7cmV0dXJuYCR7ZT09PWBodHRwYD9gaHR0cGA6YGh0dHBzYH06Ly8ke3R9YH0sbWw9KCk9PntsZXR7bW9iaWxlU2RrOmUsdmlzaXRvcklkOnR9PVYuZ2V0T3B0aW9ucygpO2lmKGUmJnQpcmV0dXJuIHQ7dHJ5e3JldHVybiAkbygpfWNhdGNoKGUpe3JldHVybiBIKFN0cmluZyhlKSksbnVsbH19LGhsPShlLHQpPT57bGV0IG49Zm8oKS5sb2NhdGlvbi5ocmVmO3JldHVybiBlJiZ0JiYobj1gJHtufSR7bi5pbmNsdWRlcyhgP2ApP2AmYDpgP2B9c3MtYm90LXJ1bj0ke3R9YCksbn0sZ2w9KCk9PntKLmNsZWFyTWVzc2FnZXMoKSxtZCgpLEd1LmNsZWFyQXNzaWduZWRBZ2VudElkcygpLFJvKCksa28oVS5WaXNpdG9ySWQpfSxfbD1lPT57dHJ5e2VzKGUpfWNhdGNoKGUpe0goU3RyaW5nKGUpKX19LHZsPWFzeW5jKGU9ITEpPT57bGV0e2tleTp0LGxhbmc6bixpc1ByZXZpZXdNb2RlOnIscHJldmlld1dpdGhvdXRSZXNldDppLHNpdGVQbGF0Zm9ybTphLHRyaWdnZXJhYmxlOm8sX2NoYXRNYXhSZW9wZW5UaW1lOnMsYm90SWQ6Y309Vi5nZXRPcHRpb25zKCk7KHImJiFpfHxlKSYmZ2woKTtsZXQgbD1tbCgpLHU9QShsYik7cmV0dXJue2tleTp0LGlkOmwsY2xpZW50RmluZ2VycHJpbnQ6YXdhaXQgUW8oKSxpc1ByZXZpZXdNb2RlOnIsc2l0ZVBsYXRmb3JtOmEsdHJpZ2dlcmFibGU6byxfY2hhdE1heFJlb3BlblRpbWU6cyxuYW1lOnUubmFtZSxlbWFpbDp1LmVtYWlsLHBob25lOnUucGhvbmUsZ3JvdXA6dS5ncm91cCxsYW5nOnUubGFuZz8/bix2YXJpYWJsZXM6dS52YXJpYWJsZXMsd2lkZ2V0VmVyc2lvbjpgMy4wYCx2aXNpdHM6dHMoKSxpc1dpZGdldFZpc2libGU6QShSXyksaXNXaWRnZXRPcGVuOkEoWCkscGFnZVVybDpobChyLGMpLHBhZ2VUaXRsZTpmbygpLmRvY3VtZW50LnRpdGxlLGRvbWFpbjpmbygpLmxvY2F0aW9uLmhvc3RuYW1lfHxgdW5rbm93bmAscmVmZXJlcjpmbygpLmRvY3VtZW50LnJlZmVycmVyLGJ1bmRsZVZlcnNpb246YGUwN2MyMDhhMzhlNmY1MDg0YzhlYjQ2MGI5NThhNDJmNzc4YTU5NjVgfX0seWw9KGUsdCk9PntsZXR7aXNQcmV2aWV3TW9kZTpufT1WLmdldE9wdGlvbnMoKTshZSYmdCE9PUEoZmwpJiYhbiYmKGdsKCksQShYKSYmWC5zZXQoITEpKSxmbC5zZXQodCl9LGJsPSgoKT0+e2xldHtzdWJzY3JpYmU6ZSxzZXQ6dH09TygpO3JldHVybntzdWJzY3JpYmU6ZSxpbml0aWFsaXplOmU9PnQoZSl9fSkoKSx4bD1gRklMRWAsU2w9MmUzLENsPWU9PmUuc3BsaXQoYC9gKVswXT09PWBpbWFnZWAsd2w9ZT0+ISFlLm1hdGNoKC9edmlkZW9cLyg/Om1wNHx3ZWJtfG9nZyl7MX0kLyk7YXN5bmMgZnVuY3Rpb24gVGwoZSl7aWYoIUZpbGVSZWFkZXIpcmV0dXJuIGpvKGBGaWxlUmVhZGVyIG5vdCBzdXBwb3J0ZWRgKSxudWxsO2xldCB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiBuZXcgUHJvbWlzZShuPT57dC5vbmxvYWQ9KCk9PntpZighdC5yZXN1bHQpe24obnVsbCk7cmV0dXJufW4odHlwZW9mIHQucmVzdWx0PT1gc3RyaW5nYCYmdC5yZXN1bHQuc3RhcnRzV2l0aChgZGF0YTppbWFnZWApP3QucmVzdWx0Om51bGwpfSx0Lm9uZXJyb3I9KCk9PntqbyhgRmFpbGVkIHRvIGxvYWQgaW1hZ2UgZGF0YWApLG4obnVsbCl9LHQucmVhZEFzRGF0YVVSTChlKX0pfWFzeW5jIGZ1bmN0aW9uIEVsKGUpe3JldHVybiBuZXcgUHJvbWlzZSh0PT57bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgaW1nYCk7bi5vbmxvYWQ9KCk9Pnt0KHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodH0pfSxuLm9uZXJyb3I9KCk9PntqbyhgRmFpbGVkIHRvIG9idGFpbiBpbWFnZSBkaW1lbnNpb25zYCksdChudWxsKX0sbi5zcmM9ZX0pfWZ1bmN0aW9uIERsKGUpe3JldHVybntob3Jpem9udGFsOmUud2lkdGg+ZS5oZWlnaHQsdmVydGljYWw6ZS5oZWlnaHQ+ZS53aWR0aH19dmFyIE9sPWBhci5hei5iZy5ici5icy5jYS5jbi5jcy5kYS5kZS5lbC5lbi5lcy5ldC5mYS5maS5maWwuZnIuaGUuaGkuaHIuaHUuaXMuaXQuamEua2EubHQubHYubWsubmwubm8ucGwucHQucm8ucnUuc2suc2wuc3Iuc3YudGgudHIudHcudWtgLnNwbGl0KGAuYCksa2w9cygoZT0+e3ZhciB0PWUmJmUuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGBfX2VzTW9kdWxlYCx7dmFsdWU6ITB9KSxlLkZldGNoQWRhcHRlcj12b2lkIDA7dmFyIG49dChhYygpKTtlLkZldGNoQWRhcHRlcj1jbGFzcyBle2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz17fSx0aGlzLm9wdGlvbnM9ZX1hc3luYyByZXF1ZXN0KGUsdCxyLGksYSl7bGV0IG89ey4uLnRoaXMub3B0aW9ucywuLi5hfSxzPWk/YD9gK24uZGVmYXVsdC5zdHJpbmdpZnkoaSk6YGA7dHJ5e2xldCBuPWF3YWl0IGZldGNoKGAke28uYmFzZVVSTHx8YGB9JHt0fSR7c31gLHttZXRob2Q6ZSxib2R5OnI/SlNPTi5zdHJpbmdpZnkocik6bnVsbCwuLi5vfSk7cmV0dXJue3N0YXR1czpuLnN0YXR1cyxzdGF0dXNUZXh0Om4uc3RhdHVzVGV4dCxkYXRhOmF3YWl0IG4uanNvbigpLGhlYWRlcnM6Wy4uLm4uaGVhZGVycy5lbnRyaWVzKCldLnJlZHVjZSgoZSxbdCxuXSk9PihlW3RdPW4sZSkse30pfX1jYXRjaChlKXt0aHJvdyBlLmlzT3BlbkFwaUVycm9yPSEwLGV9fXdpdGhPcHRpb25zKHQpe3JldHVybiBuZXcgZSh0KX19fSkpLEFsPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5Qcm9qZWN0TmFtZT1lLkVycm9yQ29kZT12b2lkIDAsZS5FcnJvckNvZGU9e0JhZFJlcXVlc3Q6YGJhZF9yZXF1ZXN0YCxOb3RBbGxvd2VkOmBub3RfYWxsb3dlZGAsTm90Rm91bmQ6YG5vdF9mb3VuZGAsRm9yYmlkZGVuOmBmb3JiaWRkZW5gLFRvb01hbnlSZXF1ZXN0czpgdG9vX21hbnlfcmVxdWVzdHNgLFVuYXV0aG9yaXplZDpgdW5hdXRob3JpemVkYCxVbnByb2Nlc3NhYmxlOmB1bnByb2Nlc3NhYmxlYH0sZS5Qcm9qZWN0TmFtZT17V2lkZ2V0OmB3aWRnZXRgLENoYXRib3Q6YGNoYXRib3RgfX0pKSxqbD1zKChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pLGUuVHJhbnNsYXRpb25zQ2xpZW50UmF3PWUuVHJhbnNsYXRpb25zQ2xpZW50PXZvaWQgMCxlLlRyYW5zbGF0aW9uc0NsaWVudD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFkYXB0ZXI9ZSx0aGlzLnJhdz1uZXcgdCh0aGlzLmFkYXB0ZXIpfWdldERlZmF1bHRzKGUsdCxyKXtyZXR1cm4gdGhpcy5hZGFwdGVyLnJlcXVlc3QoYGdldGAsYC8ke2V9L3RyYW5zbGF0aW9ucy9sYW5nLyR7dH0vZGVmYXVsdHNgLG51bGwsbnVsbCxyKS50aGVuKG4pfX07dmFyIHQ9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5hZGFwdGVyPWV9Z2V0RGVmYXVsdHMoZSx0LG4pe3JldHVybiB0aGlzLmFkYXB0ZXIucmVxdWVzdChgZ2V0YCxgLyR7ZX0vdHJhbnNsYXRpb25zL2xhbmcvJHt0fS9kZWZhdWx0c2AsbnVsbCxudWxsLG4pfX07ZS5UcmFuc2xhdGlvbnNDbGllbnRSYXc9dDtmdW5jdGlvbiBuKGUpe3JldHVybiBlLmRhdGF9fSkpLE1sPXMoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxgX19lc01vZHVsZWAse3ZhbHVlOiEwfSksZS5TbWFydHN1cHBUcmFuc2xhdGlvbnNDbGllbnRBcGk9dm9pZCAwO3ZhciB0PWpsKCksbj1jbGFzcyBle2NvbnN0cnVjdG9yKGUpe3RoaXMuYWRhcHRlcj1lLHRoaXMudHJhbnNsYXRpb25zPW5ldyB0LlRyYW5zbGF0aW9uc0NsaWVudChlKX13aXRoT3B0aW9ucyh0KXtyZXR1cm4gbmV3IGUodGhpcy5hZGFwdGVyLndpdGhPcHRpb25zKHQpKX19O2UuU21hcnRzdXBwVHJhbnNsYXRpb25zQ2xpZW50QXBpPW4sZS5kZWZhdWx0PW59KSksTmw9cygoZT0+e3ZhciB0PWUmJmUuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT8oZnVuY3Rpb24oZSx0LG4scil7cj09PXZvaWQgMCYmKHI9bik7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOyghaXx8KGBnZXRgaW4gaT8hdC5fX2VzTW9kdWxlOmkud3JpdGFibGV8fGkuY29uZmlndXJhYmxlKSkmJihpPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsaSl9KTooZnVuY3Rpb24oZSx0LG4scil7cj09PXZvaWQgMCYmKHI9biksZVtyXT10W25dfSkpLG49ZSYmZS5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsbil7Zm9yKHZhciByIGluIGUpciE9PWBkZWZhdWx0YCYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiZ0KG4sZSxyKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYF9fZXNNb2R1bGVgLHt2YWx1ZTohMH0pLG4oQWwoKSxlKSxuKE1sKCksZSksbihqbCgpLGUpLGUuZGVmYXVsdD1NbCgpLlNtYXJ0c3VwcFRyYW5zbGF0aW9uc0NsaWVudEFwaX0pKSxQbD1rbCgpLEZsPU5sKCksSWw9ZT0+T2wuaW5jbHVkZXMoZSksTGw9ZT0+SWwoZSk/ZTpgZW5gLFJsPSgpPT57bGV0e2xhbmc6ZX09Vi5nZXRPcHRpb25zKCkse2xhbmc6dH09QShsYik7cmV0dXJuIExsKHQ/P2UpfTtmdW5jdGlvbiB6bCgpe3JldHVybiBuZXcgRmwuVHJhbnNsYXRpb25zQ2xpZW50KG5ldyBQbC5GZXRjaEFkYXB0ZXIoe2Jhc2VVUkw6YCR7Vi5nZXRPcHRpb25zKCkudHJhbnNsYXRpb25zQmFzZVVybH0vYXBpL3YxYH0pKX12YXIgQmw9YXN5bmMgZT0+emwoKS5nZXREZWZhdWx0cyhGbC5Qcm9qZWN0TmFtZS5XaWRnZXQsZSksVmw9KGUsdCk9PntsZXR7dHJhbnNsYXRlczpufT1WLmdldE9wdGlvbnMoKTtyZXR1cm57Li4uZSwuLi5uW3RdJiZuW3RdfX0sSGw9TyhgZW5gKSxVbD1PKHt9KSxXbD1hc3luYyBlPT57dHJ5e2xldCB0PVZsKGF3YWl0IEJsKGUpLGUpO1VsLnVwZGF0ZShuPT4oey4uLm4sW2VdOnR9KSl9Y2F0Y2h7am8oYEZldGNoIHRyYW5zbGF0aW9ucyBvZiAnJHtlfScgbGFuZ3VhZ2UgZmFpbGVkLmApfX0sR2w9YXN5bmMgZT0+e0EoVWwpW2VdfHxhd2FpdCBXbChlKSxIbC5zZXQoZSl9LEtsPWFzeW5jKCk9PntsZXQgZT1SbCgpO0hsLnNldChlKSxhd2FpdCBXbChlKX0scWw9ZT0+e2xldCB0PUEoSGwpLG49ey4uLkEoVWwpW3RdLC4uLmV9O1VsLnVwZGF0ZShlPT4oey4uLmUsW3RdOm59KSl9LEpsPShlLHQsbik9PntsZXQgcj1BKFVsKSxpPWB8JHt0fXxgO2lmKE9iamVjdC5rZXlzKHIpLmxlbmd0aD09PTApcmV0dXJuIGk7bGV0IGE9cltlXT8uW3RdfHxpO3JldHVybiBPYmplY3Qua2V5cyhuKS5tYXAoZT0+e2xldCB0PVJlZ0V4cChgeyR7ZX19YCxgZ2ApO2E9YS5yZXBsYWNlKHQsbltlXSl9KSxhfSxXPWsoW0hsLFVsXSwoW2VdKT0+KHQsbj17fSk9PkpsKGUsdCxuKSksWWw9KCgpPT57bGV0IGU9TyhbXSkse3N1YnNjcmliZTp0LHVwZGF0ZTpufT1lLHI9KCk9PkEoZSkubWFwKGU9PmUuZmlsZSksaT0odCxuKT0+KG58fEEoZSkpLmZpbmQoZT0+ZS5maWxlLm5hbWU9PT10KXx8bnVsbCxhPWU9Pih7ZmlsZTplLHByZXZpZXc6e30scHJldmlld1N0YXRlOmBub25lYCx1cGxvYWRTdGF0dXM6YG5vbmVgfSksbz1lPT57bGV0IHQ9QXJyYXkuaXNBcnJheShlKT9lOltlXTtuKGU9PmUubGVuZ3RoK3QubGVuZ3RoPjU/KGdzKGAke0EoVykoYGZpbGVVcGxvYWQudG9vTWFueUZpbGVzYCl9IDVgKSxlKTpbLi4uZSwuLi50Lm1hcChhKV0pLG0odCl9LHM9ZT0+e24odD0+dC5maWx0ZXIodD0+dC5maWxlIT09ZSkpfSxjPSgpPT5BKGUpLmxlbmd0aCxsPSgpPT5jKCk+PTUsdT0oKT0+ZS5zZXQoW10pLGQ9KCk9PntlLnVwZGF0ZShlPT4oZS5mb3JFYWNoKGU9PmUudXBsb2FkU3RhdHVzPWBpbi1wcm9ncmVzc2ApLGUpKX0sZj10PT57ZS51cGRhdGUoZT0+e2xldCBuPWkodCxlKTtyZXR1cm4gbiYmKG4udXBsb2FkU3RhdHVzPWBkb25lYCksZX0pfSxwPWU9PmkoZS5uYW1lKT8ucHJldmlld1N0YXRlIT09YG5vbmVgLG09ZT0+e2UuZm9yRWFjaChlPT52b2lkIGgoZSkpfSxoPWFzeW5jIHQ9PntpZihwKHQpKXJldHVybjtsZXQgbj1hd2FpdCBUbCh0KSxyPW4/YXdhaXQgRWwobik6bnVsbCxhPXI/RGwocik6bnVsbDtlLnVwZGF0ZShlPT57bGV0IG89aSh0Lm5hbWUsZSk7cmV0dXJuIG8/KG8ucHJldmlld1N0YXRlPWByZWFkeWAsby5wcmV2aWV3PXtkYXRhOm4sZGltZW5zaW9uczpyLG9yaWVudGF0aW9uOmF9LFsuLi5lXSk6ZX0pfTtyZXR1cm57c3Vic2NyaWJlOnQsZ2V0RmlsZXM6cixmaW5kOmksYWRkOm8scmVtb3ZlOnMsY291bnQ6Yyxpc0xpbWl0UmVhY2hlZDpsLGNsZWFyOnUsc2V0VXBsb2FkaW5nU3RhdHVzOmQsc2V0RmlsZVVwbG9hZGVkOmZ9fSkoKSxYbD0oKCk9PntsZXQgZT1bXTtyZXR1cm4gT2JqZWN0LmZyZWV6ZSh7cHVzaDp0PT57ZS5wdXNoKHQpfSxleGVjdXRlQWxsOigpPT57Zm9yKDtlLmxlbmd0aD4wOyl7bGV0IHQ9ZS5zaGlmdCgpO3QmJnQoKX19fSl9KSgpLFpsPSgpPT57bGV0e3dpZGdldFYzVXJsOmV9PVYuZ2V0T3B0aW9ucygpO3JldHVybmAke2V9L2Fzc2V0cy9pbWFnZXMvZGVmYXVsdC1haS1pZGVudGl0eS5wbmdgfSxRbD1lPT4oey4uLmUsYXZhdGFyVXJsOmUuYXZhdGFyVXJsfHxabCgpfSksJGw9KCgpPT57bGV0e3VwZGF0ZTplLHN1YnNjcmliZTp0LHNldDpufT1PKHt9KTtyZXR1cm57c3Vic2NyaWJlOnQsc2V0SWRlbnRpdGllczplPT57bihybChgaWRgLGUubWFwKFFsKSkpfSxhZGRJZGVudGl0eTp0PT57ZShlPT4oey4uLmUsW3QuaWRdOnR9KSl9LHVwZGF0ZUlkZW50aXR5Oih0LG4pPT57ZShlPT5lW3RdP3suLi5lLFt0XTp7Li4uZVt0XSwuLi5ufX06ZSl9fX0pKCksRz1ubCgpLEs9dShNYygpLDEpLGV1PWU9Pnt2byhgaW5pdCBkYXRhYCxlKSxkbC5zZXQoITApLHlsKGUuY2hhdCxlLnNlc3Npb25JZCk7bGV0IHQ9ZS52aXNpdG9yLmlkO19sKHQpLG5zKGUudmlzaXRvci52aXNpdHMpLE11LnNldFZpc2l0b3JEYXRhKGUudmlzaXRvciksaG8oe3ZpZDp0fSksYmwuaW5pdGlhbGl6ZShlLmZpbGVVcGxvYWQpLG9zLnNldChlLmJyb3dzZXIpLEJ1LnNldEFnZW50cyhlLmFjY291bnQuYWdlbnRzKSwkbC5zZXRJZGVudGl0aWVzKGUuYWNjb3VudC5ib3RJZGVudGl0aWVzKSxlLmNoYXQ/LnZpcnR1YWxBZ2VudCE9PXZvaWQgMCYmQnUuc2V0VmlydHVhbEFnZW50KGUuY2hhdD8udmlydHVhbEFnZW50KSxpbC5zZXRHcm91cHMoZS5hY2NvdW50Lmdyb3VwcyksaGQoZS5hY2NvdW50LnN0YXR1cyksZS5jaGF0JiYocXAoKSYmaWQuc2V0KGUuY2hhdC5yYXRpbmdTdWdnZXN0ZWRUYXJnZXR8fG51bGwpLGVkLnNldChlLmNoYXQuc3RhdHVzKSxkZChlLmNoYXQuaXNDbG9zZWQpLHJkLnNldChlLmNoYXQudW5yZWFkSW5mby5sYXN0UmVhZEF0KSxKLnNldE1lc3NhZ2VzKGUuY2hhdC5tZXNzYWdlcy5maWx0ZXIoZT0+IVpmKGUpKSksR3Uuc2V0QXNzaWduZWRBZ2VudElkcyhlLmNoYXQuYXNzaWduZWRJZHM/P1tdKSxlLmNoYXQud2lkZ2V0T3B0aW9ucyYmWHUudXBkYXRlR2VuZXJhbE9wdGlvbnMoZS5jaGF0LndpZGdldE9wdGlvbnMpKSxDXy5zZXQoITApLHouZW1pdChgd2lkZ2V0SW5pdGAsITApLFhsLmV4ZWN1dGVBbGwoKX0sdHU9ZT0+e2NvbnNvbGUuZXJyb3IoZSl9LG51PSgpPT57ZGwuc2V0KCExKX0scnU9KHtjaGF0SWQ6ZX0pPT57TXAuc2V0KCExKSxhZC5zZXQoZSksZWQuc2V0KEsuQ2hhdFN0YXR1cy5PcGVuKSxYdS5zZXRNZXNzYWdlT3B0aW9ucyh7ZGlzYWJsZUF0dGFjaG1lbnRzOiExfSl9LGl1PSgpPT57ZWQuc2V0KEsuQ2hhdFN0YXR1cy5TZXJ2ZWQpLGRkKCExKX0sYXU9KHttZXNzYWdlOmV9KT0+e2xldHtjbG9zZVR5cGU6dCxhZ2VudElkOm59PWUuY29udGVudC5kYXRhOyh0PT09YGFnZW50X2Nsb3NlYHx8dD09PWBib3RfY2xvc2VgKSYmKEd1LnNldEFzc2lnbmVkQWdlbnRJZHMoW10pLGVkLnNldChLLkNoYXRTdGF0dXMuQ2xvc2VkKSxKLmFkZE1lc3NhZ2UoZSksei5lbWl0KGBjaGF0Q2xvc2VkYCxlKSx0PT09YGFnZW50X2Nsb3NlYCYmUW0obj9BKFZ1KG4pKT8uZnVsbG5hbWU6dm9pZCAwKSl9LG91PSh7bWVzc2FnZTplfSk9PntxcCgpJiZZcCh4cyksZGQoITAse2J5VmlzaXRvcjohMH0pLEouYWRkTWVzc2FnZShlKSx6LmVtaXQoYGNoYXRWaXNpdG9yQ2xvc2VkYCxlKSxabSgpfSxzdT0oe2NoYW5nZXM6ZX0pPT57ZS53aWRnZXRPcHRpb25zJiZYdS51cGRhdGVHZW5lcmFsT3B0aW9ucyhlLndpZGdldE9wdGlvbnMpLGUuaXNDbG9zZWQhPT12b2lkIDAmJmRkKGUuaXNDbG9zZWQpLGUudmlydHVhbEFnZW50IT09dm9pZCAwJiZCdS5zZXRWaXJ0dWFsQWdlbnQoZS52aXJ0dWFsQWdlbnQpfSxjdT1hc3luYyh7bWVzc2FnZTplfSk9PntpZihaZihlKSlyZXR1cm47bGV0IHQ9QSh6XykmJllmKGUpOyFBKFgpJiZRZihlKSYmIXQ/QXAoZSk6YXdhaXQgSi5hZGRNZXNzYWdlKGUpLF9kKCksZS53aWRnZXRPcHRpb25zJiZYdS5zZXRNZXNzYWdlT3B0aW9ucyhlLndpZGdldE9wdGlvbnMpLHQmJlVfKCksei5lbWl0KGBtZXNzYWdlUmVjZWl2ZWRgLGUpfSxsdT1lPT57Y3UoZSl9LHV1PSh7bWVzc2FnZUlkOmUsZGVsZXRlZEF0OnR9KT0+e0EoSilbZV0/LnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLkNoYXRSZXNvbHZlP0ouZGVsZXRlTWVzc2FnZShlKTpKLm1hcmtNZXNzYWdlQXNEZWxldGVkKGUsdCl9LGR1PSh7bWVzc2FnZTplfSk9PntKLnJlcGxhY2VNZXNzYWdlKGUpLGUud2lkZ2V0T3B0aW9ucyYmZS5pZD09PUEoQnApJiZYdS5zZXRNZXNzYWdlT3B0aW9ucyhlLndpZGdldE9wdGlvbnMpfSxmdT0oe21lc3NhZ2U6ZSxhZ2VudDp0fSk9PntHdS5hZGRBc3NpZ25lZEFnZW50SWQoZS5jb250ZW50LmRhdGEuYWdlbnRJZCksSi5hZGRNZXNzYWdlKGUpLHouZW1pdChgYWdlbnRKb2luZWRgLHQpfSxwdT0oe21lc3NhZ2U6ZX0pPT57R3UucmVtb3ZlQXNzaWduZWRBZ2VudElkKGUuY29udGVudC5kYXRhLmFnZW50SWQpLEouYWRkTWVzc2FnZShlKX0sbXU9KHttZXNzYWdlOmV9KT0+e0d1LmFkZEFzc2lnbmVkQWdlbnRJZChlLmNvbnRlbnQuZGF0YS5hc3NpZ25lZCksSi5hZGRNZXNzYWdlKGUpfSxodT0oe21lc3NhZ2U6ZX0pPT57R3UucmVtb3ZlQXNzaWduZWRBZ2VudElkKGUuY29udGVudC5kYXRhLnVuYXNzaWduZWQpLEouYWRkTWVzc2FnZShlKX0sZ3U9ZT0+eyFlLnR5cGluZy5pcyYmQShNcCl8fG5kLnNldChlLnR5cGluZy5pcyl9LF91PWU9PntyZC5zZXQoZS5sYXN0UmVhZEF0KX0sdnU9KHttZXNzYWdlOmUscmF0aW5nOnR9KT0+e0oudXBkYXRlTWVzc2FnZVJhdGluZyhlKSx6LmVtaXQoYGNoYXRSYXRlZGAsdCl9LHl1PWU9Pnt6LmVtaXQoYHRyYW5zY3JpcHRQZGZgLGUpfSxidT0oe2lkOmUsY2hhbmdlczp0fSk9PntCdS51cGRhdGVBZ2VudChlLHQpfSx4dT0oe2lkOmUsc3RhdHVzOnR9KT0+e0J1LnVwZGF0ZUFnZW50KGUse3N0YXR1czp0fSl9LFN1PSh7c3RhdHVzOmV9KT0+e2hkKGUpfSxDdT1lPT57TXUudXBkYXRlVmlzaXRvckRhdGEoZSl9LHd1PWU9Pnt6LmVtaXQoYGNvbnRhY3RBY3F1aXJlZGAsZSl9LFR1PWU9PnsocXAoKXx8SnAoKSkmJmlkLnNldChlLnJhdGluZ1N1Z2dlc3RlZFRhcmdldCl9LEV1PSgpPT57QShpZCkmJmlkLnNldChudWxsKX0sRHU9KHtpZDplLGlzQWN0aXZlOnR9KT0+eyRsLnVwZGF0ZUlkZW50aXR5KGUse2lzQWN0aXZlOnR9KX0sT3U9RGMoKSxrdT1hc3luYyBlPT57bGV0IHQ9YXdhaXQgVi5hd2FpdE9wdGlvbnMoKTtyZXR1cm4gbmV3IEsuV2Vic29ja2V0VmlzaXRvckNsaWVudCh7ZGF0YTplLGNvbm5lY3Rpb246e3VybDpwbCgpLHNvY2tldDp0Lm1vY2s/bmV3IE91LlNvY2tldE1vY2sodC5tb2NrKTp2b2lkIDAsYmFsYW5jZXJVcmw6dC5iYWxhbmNlclVybCxvcHRpb25zOntwYXRoOmAvc29ja2V0YCxhdXRvQ29ubmVjdDohMSxyZWNvbm5lY3Rpb246ITB9fX0pfSxBdT0oKT0+e2xldCBlPW51bGwsdD0oKT0+ISFlLG49KCk9PntpZighZSl0aHJvdyBFcnJvcihgVmlzaXRvciBjbGllbnQgaXMgbm90IGluaXRpYWxpemVkYCk7cmV0dXJuIGV9LHI9YXN5bmMgdD0+e2U9YXdhaXQga3UoYXdhaXQgdmwodCkpLGUmJihqdShlKSxhd2FpdCBlLmNvbm5lY3QoKS5jYXRjaChlPT57am8oYEZhaWxlZCBjb25uZWN0IHRvIHNlcnZlci5gLGUpfSkpfTtyZXR1cm4gT2JqZWN0LmZyZWV6ZSh7Z2V0Q2xpZW50Om4saW5pdENsaWVudDpyLHJlbG9hZENsaWVudDphc3luYyh0LG4pPT57YXdhaXQgZT8uZGlzY29ubmVjdCgpLHQmJlYudXBkYXRlT3B0aW9ucyh7bW9jazp0fSksYXdhaXQgcihuKX0saXNJbml0aWFsaXplZDp0fSl9LGp1PWU9PntlLm9uKGBpbml0aWFsaXplZGAsZXUpLGUub24oYGVycm9yYCx0dSksZS5vbihgZGlzY29ubmVjdGAsbnUpLGUub24oYGNoYXQub3BlbmVkYCxydSksZS5vbihgY2hhdC5zZXJ2ZWRgLGl1KSxlLm9uKGBjaGF0LmNsb3NlZGAsYXUpLGUub24oYGNoYXQudmlzaXRvcl9jbG9zZWRgLG91KSxlLm9uKGBjaGF0LnVwZGF0ZWRgLHN1KSxlLm9uKGBjaGF0Lm1lc3NhZ2VfcmVjZWl2ZWRgLGx1KSxlLm9uKGBjaGF0Lm1lc3NhZ2VfdXBkYXRlZGAsZHUpLGUub24oYGNoYXQubWVzc2FnZV9kZWxldGVkYCx1dSksZS5vbihgY2hhdC5hZ2VudF9qb2luZWRgLGZ1KSxlLm9uKGBjaGF0LmFnZW50X2xlZnRgLHB1KSxlLm9uKGBjaGF0LmFnZW50X2Fzc2lnbmVkYCxtdSksZS5vbihgY2hhdC5hZ2VudF91bmFzc2lnbmVkYCxodSksZS5vbihgY2hhdC5hZ2VudF90eXBpbmdgLGd1KSxlLm9uKGBjaGF0LmNvbnRhY3RfcmVhZGAsX3UpLGUub24oYGNoYXQucmF0ZWRgLHZ1KSxlLm9uKGBjaGF0LnJhdGluZ19zdWdnZXN0ZWRgLFR1KSxlLm9uKGBjaGF0LnJhdGluZ19jYW5jZWxsZWRgLEV1KSxlLm9uKGBjaGF0LnRyYW5zY3JpcHRfcGRmYCx5dSksZS5vbihgYWdlbnQudXBkYXRlZGAsYnUpLGUub24oYGFnZW50LnN0YXR1c191cGRhdGVkYCx4dSksZS5vbihgYWNjb3VudC51cGRhdGVkYCxTdSksZS5vbihgdmlzaXRvci51cGRhdGVkYCxDdSksZS5vbihgY29udGFjdC5hY3F1aXJlZGAsd3UpLGUub24oYGlkZW50aXR5LnN0YXR1c191cGRhdGVkYCxEdSl9LHE9QXUoKSxNdT0oKCk9PntsZXQgZT1PKG51bGwpLHtzdWJzY3JpYmU6dCxzZXQ6bix1cGRhdGU6cn09ZSxpPWU9PntuKGUpfSxhPWU9PntyKHQ9PnQ/ey4uLnQsLi4uZX06bnVsbCl9LG89KGUsdCk9Pnt0cnl7cS5nZXRDbGllbnQoKS51cGRhdGUoe1tlXTp0fSl9Y2F0Y2godCl7am8oYFVwZGF0ZSBvZiB2aXNpdG9yIHByb3BlcnR5ICcke2V9JyBmYWlsZWQuYCxTdHJpbmcodCkpfX07cmV0dXJue3N1YnNjcmliZTp0LHNldFZpc2l0b3JEYXRhOmksdXBkYXRlVmlzaXRvckRhdGE6YSx1cGRhdGVWaXNpdG9yUHJvcGVydHk6KGUsdCk9PntpZighQShDXykpe3ViKGUsdCk7cmV0dXJufWEoe1tlXTp0fSksbyhlLHQpfSx1cGRhdGVWaXNpdG9yVmFyaWFibGVzOnQ9PntpZighQShDXykpe3ViKGB2YXJpYWJsZXNgLHQpO3JldHVybn1sZXQgbj1BKGUpO2lmKCFuKXJldHVybjtsZXQgcj1uLnZhcmlhYmxlczthKHt2YXJpYWJsZXM6ey4uLnIsLi4udH19KTtsZXQgaT17fTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGU9Pnt0W2VdIT09cltlXSYmKGk9ey4uLmksW2VdOnRbZV19KX0pLE9iamVjdC5rZXlzKGkpLmxlbmd0aCE9PTAmJm8oYHZhcmlhYmxlc2AsaSl9LHVwZGF0ZVZpc2l0b3JDb250YWN0RGF0YTp0PT57aWYoIUEoQ18pKXt1YihgY29udGFjdERhdGFgLHtwcm9wZXJ0aWVzOnR9KTtyZXR1cm59bGV0IG49QShlKTtpZighbilyZXR1cm47bGV0IHI9bj8uY29udGFjdERhdGE/LnByb3BlcnRpZXM7YSh7dmFyaWFibGVzOnsuLi5yLC4uLnR9fSk7bGV0IGk9e307T2JqZWN0LmtleXModCkuZm9yRWFjaChlPT57KCFyfHx0W2VdIT09cltlXSkmJihpPXsuLi5pLFtlXTp0W2VdfSl9KSxPYmplY3Qua2V5cyhpKS5sZW5ndGghPT0wJiZvKGBjb250YWN0RGF0YWAse3Byb3BlcnRpZXM6dH0pfX19KSgpLE51PShlLHQpPT5lLmhhc093blByb3BlcnR5KHQpLFB1PWU9PnR5cGVvZiBlPT1gYm9vbGVhbmAsRnU9ZT0+dHlwZW9mIGU9PWBudW1iZXJgLEl1PWU9PnR5cGVvZiBlPT1gb2JqZWN0YCYmISFlJiYhQXJyYXkuaXNBcnJheShlKSxMdT1lPT50eXBlb2YgZT09YHN0cmluZ2B8fGUgaW5zdGFuY2VvZiBTdHJpbmcsUnU9ZT0+THUoZSl8fEZ1KGUpfHxQdShlKSx6dT1lPT57bGV0IHQ9e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2gobj0+e2xldCByPWVbbl07UnUocik/dFtuXT1yOkl1KHIpJiZOdShyLGB2YWx1ZWApJiZSdShyLnZhbHVlKSYmKHRbbl09ci52YWx1ZSl9KSx0fSxCdT0oKCk9PntsZXR7dXBkYXRlOmUsc3Vic2NyaWJlOnQsc2V0Om59PU8oe30pO3JldHVybntzdWJzY3JpYmU6dCxzZXRBZ2VudHM6ZT0+e24ocmwoYGlkYCxlKSl9LGFkZEFnZW50OnQ9PntlKGU9Pih7Li4uZSxbdC5pZF06dH0pKX0sdXBkYXRlQWdlbnQ6KHQsbik9PntlKGU9PmVbdF0/ey4uLmUsW3RdOnsuLi5lW3RdLC4uLm59fTplKX0sc2V0VmlydHVhbEFnZW50OnQ9PntsZXR7ZGVzY3JpcHRpb246bixhdmF0YXI6cixuYW1lOml9PXQsYT17fTtuJiYoYS5kZXNjcmlwdGlvbj1uKSxyJiYoYS5hdmF0YXI9ciksaSYmKGEuZnVsbG5hbWU9aSksZShlPT4oT2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT57ZVt0XT17Li4uZVt0XSwuLi5hfX0pLGUpKX19fSkoKSxWdT1lPT5rKFtCdV0sKFt0XSk9PnRbZV0/P251bGwpLEh1PWsoW2soW0J1XSwoW2VdKT0+T2JqZWN0LnZhbHVlcyhlKS5maWx0ZXIoZT0+IWUuZGlzYWJsZWQpKSxNdV0sKFtlLHRdKT0+e2xldCBuPXQ/Lmdyb3VwO3JldHVybiFufHxuPT09YGRlZmF1bHRgP2U6ZS5maWx0ZXIoZT0+ZS5ncm91cHMubGVuZ3RoPT09MHx8ZS5ncm91cHMuaW5jbHVkZXMobikpfSksVXU9ayhbSHVdLChbZV0pPT5lLmZpbHRlcihlPT5lLnN0YXR1cz09PUsuQWdlbnRTdGF0dXMuT25saW5lKSksV3U9ZT0+e2lmKGUpcmV0dXJuYCR7ZX0/c2l6ZT04MGA7bGV0e3dpZGdldFYzVXJsOnR9PVYuZ2V0T3B0aW9ucygpO3JldHVybmAke3R9L2Fzc2V0cy9pbWFnZXMvZGVmYXVsdC1hdmF0YXIucG5nYH0sR3U9KCgpPT57bGV0e3N1YnNjcmliZTplLHNldDp0LHVwZGF0ZTpufT1PKFtdKTtyZXR1cm57c3Vic2NyaWJlOmUsc2V0QXNzaWduZWRBZ2VudElkczplPT57dChlKX0sYWRkQXNzaWduZWRBZ2VudElkOmU9PntuKHQ9PlsuLi5uZXcgU2V0KFsuLi50LGVdKV0pfSxyZW1vdmVBc3NpZ25lZEFnZW50SWQ6ZT0+e24odD0+dC5maWx0ZXIodD0+dCE9PWUpKX0sY2xlYXJBc3NpZ25lZEFnZW50SWRzOigpPT57dChbXSl9fX0pKCksS3U9ayhbR3UsQnVdLChbZSx0XSk9PmUubWFwKGU9PnRbZV0pLmZpbHRlcihCb29sZWFuKSkscXU9ayhbS3VdLChbZV0pPT5lLmxlbmd0aD4wKSxKdT1rKFtLdV0sKFtlXSk9PmUuZmlsdGVyKGU9PiFlLmRpc2FibGVkKSksWXU9ayhbS3VdLChbZV0pPT5lLnNvbWUoZT0+ZS5zdGF0dXM9PT1LLkFnZW50U3RhdHVzLk9ubGluZSkpLFh1PSgoKT0+e2xldCBlPU8oe2Rpc2FibGVBdHRhY2htZW50czohMSxkaXNhYmxlQXV0aGVudGljYXRpb246ITEsZGlzYWJsZUlucHV0OiExfSksdD1PKHt9KTtyZXR1cm57c3Vic2NyaWJlOmsoW2UsdF0sKFtlLHRdKT0+KHsuLi5lLC4uLnR9KSkuc3Vic2NyaWJlLHVwZGF0ZUdlbmVyYWxPcHRpb25zOnQ9PntlLnVwZGF0ZShlPT4oey4uLmUsLi4udH0pKX0sc2V0TWVzc2FnZU9wdGlvbnM6ZT0+e3Quc2V0KGUpfX19KSgpLFp1PWsoW1h1XSwoW2VdKT0+ZS5kaXNhYmxlQXR0YWNobWVudHMpLFF1PWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuT3Blbj0wXT1gT3BlbmAsZVtlLkNsb3NlZD0xXT1gQ2xvc2VkYCxlW2UuQ2xvc2VkQnlWaXNpdG9yPTJdPWBDbG9zZWRCeVZpc2l0b3JgLGV9KHt9KSwkdT1PKEsuQWNjb3VudFN0YXR1cy5PZmZsaW5lKSxlZD1PKG51bGwpLHRkPU8oUXUuT3BlbiksbmQ9TyghMSkscmQ9TyhudWxsKSxpZD1PKG51bGwpLGFkPU8oYGApLG9kPWsoW2VkXSwoW2VdKT0+ZT09PUsuQ2hhdFN0YXR1cy5QZW5kaW5nKTtrKFtlZF0sKFtlXSk9PmUhPT1udWxsKTt2YXIgc2Q9ayhbZWRdLChbZV0pPT5lPT09Sy5DaGF0U3RhdHVzLlNlcnZlZCksY2Q9ayhbZWRdLChbZV0pPT5lPT09Sy5DaGF0U3RhdHVzLk9wZW4pLGxkPWsoW2VkXSwoW2VdKT0+ZT09PUsuQ2hhdFN0YXR1cy5DbG9zZWQpLHVkPWsoW3NkLHRkXSwoW2UsdF0pPT5lJiZ0PT09UXUuT3BlbiksZGQ9KGUse2J5VmlzaXRvcjp0PSExfT17fSk9PntlP3RkLnNldCh0P1F1LkNsb3NlZEJ5VmlzaXRvcjpRdS5DbG9zZWQpOnRkLnNldChRdS5PcGVuKX0sZmQ9ayhbJHUsSnVdLChbZSx0XSk9PnQubGVuZ3RoPT09MD9lPT09Sy5BY2NvdW50U3RhdHVzLk9ubGluZTp0LnNvbWUoZT0+ZS5zdGF0dXM9PT1LLkFnZW50U3RhdHVzLk9ubGluZSkpLHBkPWsoW1h1XSwoW2VdKT0+ZS5kaXNhYmxlQXV0aGVudGljYXRpb24pLG1kPSgpPT57bmQuc2V0KCExKSxlZC5zZXQobnVsbCksZGQoITEpLHJkLnNldChudWxsKX0saGQ9ZT0+e2U9PT1LLkFjY291bnRTdGF0dXMuT2ZmbGluZVdpdGhBST8kdS5zZXQoSy5BY2NvdW50U3RhdHVzLk9ubGluZSk6JHUuc2V0KGUpfSxnZD0oKT0+e3JkLnNldChuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpLHEuZ2V0Q2xpZW50KCkuY2hhdFJlYWQoKX0sX2Q9KCk9PntsZXQgZT1wbygpLnZpc2liaWxpdHlTdGF0ZT09PWB2aXNpYmxlYDshQShMcCl8fCFBKFgpfHwhZXx8IUEoTl8pfHxnZCgpfSx2ZD1lPT4oey4uLlNzLGNoYXRJZDpBKGFkKSxjcmVhdGVkQXQ6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLGNvbnRlbnQ6ey4uLlNzLmNvbnRlbnQsZGF0YTp7dGFyZ2V0OmV9fX0pLHlkPSgpPT57ZGQoITAse2J5VmlzaXRvcjohMH0pLHEuZ2V0Q2xpZW50KCkuY2hhdENsb3NlKCksVmMoKSxxcCgpfHxXXygpfSxiZD1hc3luYyBlPT57YXdhaXQgSi5hZGRNZXNzYWdlKHZkKGUpKX0seGQ9KCk9PntKLmRlbGV0ZU1lc3NhZ2UoeHMpfTtmdW5jdGlvbiBTZChlKXtyZXR1cm4gZS5sZW5ndGg9PT0wP251bGw6ZVtlLmxlbmd0aC0xXX12YXIgQ2Q9ZT0+ZS5zbGljZSgoZS5sYXN0SW5kZXhPZihgLmApLTE+Pj4wKSsyKS50b0xvd2VyQ2FzZSgpLHdkPWU9PntsZXQgdD1lLG49MCxyPVtgQmAsYEtCYCxgTUJgLGBHQmBdO2Zvcig7dD49MTAyNCYmbjxyLmxlbmd0aC0xOyl0Lz0xMDI0LG4rKztyZXR1cm57c2l6ZTpNYXRoLmZsb29yKHQpLHVuaXQ6cltuXX19LFRkPWU9PntsZXQgdD1TZChlLnNwbGl0KGAuYCkpO3JldHVybiB0P3QudG9VcHBlckNhc2UoKTp4bH0sRWQ9KGUsdCk9PmAke2V9P25hbWU9JHt0fWAsRGQ9YXN5bmMoZSx0KT0+e2xldCBuPXEuZ2V0Q2xpZW50KCkscj1bXTtmb3IobGV0e2ZpbGU6aX1vZiBlKXtsZXQgZT1hd2FpdCBuLmNoYXRVcGxvYWRJbml0KCksYT1uZXcgRm9ybURhdGE7YS5hcHBlbmQoYGZpbGVgLGksaS5uYW1lKTt0cnl7aWYoIShhd2FpdCBmZXRjaChlLnVybCx7bWV0aG9kOmBwb3N0YCxib2R5OmF9KSkub2spdGhyb3cgRXJyb3IoYFVwbG9hZCBmYWlsZWRgKTtyLnB1c2goZS50b2tlbil9Y2F0Y2h7am8oYEZpbGUgWyR7aS5uYW1lfV0gdXBsb2FkIGZhaWxlZGApLGdzKEEoVykoYGZpbGVVcGxvYWQuZmlsZXNXZXJlbnRQcm9jZXNzZWRgKSl9ZmluYWxseXt0KGkpfX1yZXR1cm4gcn0sT2Q9YXN5bmMgZT0+e2xldCB0PXEuZ2V0Q2xpZW50KCk7dHJ5e2F3YWl0IHQuY2hhdFVwbG9hZEZpbmlzaChlKX1jYXRjaHtqbyhgRmFpbGVkIHRvIGZpbmlzaCBmaWxlIHVwbG9hZCBmb3IgJHtlfWApfX0sa2Q9MWUzLEFkPTZlNCxqZD0zNmU1LE1kPTg2NGU1LE5kPTI2MjhlNixQZD0zMTUzNmU2LEZkPWU9Pk1hdGguZmxvb3IoZS9BZCkqQWQsSWQ9KGUsdCk9PkZkKG5ldyBEYXRlKGUpLmdldFRpbWUoKSk9PT1GZChuZXcgRGF0ZSh0KS5nZXRUaW1lKCkpLExkPShlLHQpPT57bGV0IG49bmV3IERhdGUoZSkscj1uZXcgRGF0ZSh0KTtyZXR1cm4gbi5nZXREYXRlKCk9PT1yLmdldERhdGUoKSYmbi5nZXRNb250aCgpPT09ci5nZXRNb250aCgpJiZuLmdldEZ1bGxZZWFyKCk9PT1yLmdldEZ1bGxZZWFyKCl9LFJkPShlLHQpPT5lLmdldFRpbWUoKS10LmdldFRpbWUoKSx6ZD1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh2b2lkIDAse2hvdXI6YG51bWVyaWNgLG1pbnV0ZTpgbnVtZXJpY2B9KSxCZD1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh2b2lkIDAse3llYXI6YG51bWVyaWNgLG1vbnRoOmBudW1lcmljYCxkYXk6YG51bWVyaWNgLGhvdXI6YG51bWVyaWNgLG1pbnV0ZTpgbnVtZXJpY2B9KSxWZD1lPT5MZChuZXcgRGF0ZSxlKT96ZDpCZCxIZD0oKT0+dHlwZW9mIEludGw8YHVgJiZgUmVsYXRpdmVUaW1lRm9ybWF0YGluIEludGwsVWQ9ZT0+SGQoKT9uZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoZSx7bnVtZXJpYzpgYXV0b2B9KTpudWxsLFdkPVt7dW5pdDpgeWVhcmAsYW1vdW50OlBkfSx7dW5pdDpgbW9udGhgLGFtb3VudDpOZH0se3VuaXQ6YGRheWAsYW1vdW50Ok1kfSx7dW5pdDpgaG91cmAsYW1vdW50OmpkfSx7dW5pdDpgbWludXRlYCxhbW91bnQ6QWR9LHt1bml0OmBzZWNvbmRgLGFtb3VudDprZH1dLEdkPShlLHQpPT57bGV0IG49VWQodCk7aWYoIW4pcmV0dXJuIEgoYFJlbGF0aXZlIHRpbWUgZm9ybWF0IG5vdCBzdXBwb3J0ZWRgKSxgYDtmb3IobGV0e3VuaXQ6dCxhbW91bnQ6cn1vZiBXZCl7aWYodD09PWBzZWNvbmRgKXJldHVybiBuLmZvcm1hdCgwLGBzZWNvbmRgKTtpZihNYXRoLmFicyhlKT5yKXJldHVybiBuLmZvcm1hdChNYXRoLnJvdW5kKGUvciksdCl9cmV0dXJuYGB9LEtkPShlLHQ9MzAwKT0+e2xldCBuO3JldHVybiguLi5yKT0+e258fD0oZSguLi5yKSxzZXRUaW1lb3V0KCgpPT5uPW51bGwsdCkpfX0scWQ9L1tcMC1cdUQ3RkZcdUUwMDAtXHVGRkZGXXxbXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl18W1x1RDgwMC1cdURCRkZdKD8hW1x1REMwMC1cdURGRkZdKXwoPzpbXlx1RDgwMC1cdURCRkZdfF4pW1x1REMwMC1cdURGRkZdLyxKZD0vW1wwLVx4MUZceDdGLVx4OUZdLyxZZD0vWyEtIyUtXCosLVwvOjtcP0BcWy1cXV9ce1x9XHhBMVx4QTdceEFCXHhCNlx4QjdceEJCXHhCRlx1MDM3RVx1MDM4N1x1MDU1QS1cdTA1NUZcdTA1ODlcdTA1OEFcdTA1QkVcdTA1QzBcdTA1QzNcdTA1QzZcdTA1RjNcdTA1RjRcdTA2MDlcdTA2MEFcdTA2MENcdTA2MERcdTA2MUJcdTA2MUQtXHUwNjFGXHUwNjZBLVx1MDY2RFx1MDZENFx1MDcwMC1cdTA3MERcdTA3RjctXHUwN0Y5XHUwODMwLVx1MDgzRVx1MDg1RVx1MDk2NFx1MDk2NVx1MDk3MFx1MDlGRFx1MEE3Nlx1MEFGMFx1MEM3N1x1MEM4NFx1MERGNFx1MEU0Rlx1MEU1QVx1MEU1Qlx1MEYwNC1cdTBGMTJcdTBGMTRcdTBGM0EtXHUwRjNEXHUwRjg1XHUwRkQwLVx1MEZENFx1MEZEOVx1MEZEQVx1MTA0QS1cdTEwNEZcdTEwRkJcdTEzNjAtXHUxMzY4XHUxNDAwXHUxNjZFXHUxNjlCXHUxNjlDXHUxNkVCLVx1MTZFRFx1MTczNVx1MTczNlx1MTdENC1cdTE3RDZcdTE3RDgtXHUxN0RBXHUxODAwLVx1MTgwQVx1MTk0NFx1MTk0NVx1MUExRVx1MUExRlx1MUFBMC1cdTFBQTZcdTFBQTgtXHUxQUFEXHUxQjVBLVx1MUI2MFx1MUI3RFx1MUI3RVx1MUJGQy1cdTFCRkZcdTFDM0ItXHUxQzNGXHUxQzdFXHUxQzdGXHUxQ0MwLVx1MUNDN1x1MUNEM1x1MjAxMC1cdTIwMjdcdTIwMzAtXHUyMDQzXHUyMDQ1LVx1MjA1MVx1MjA1My1cdTIwNUVcdTIwN0RcdTIwN0VcdTIwOERcdTIwOEVcdTIzMDgtXHUyMzBCXHUyMzI5XHUyMzJBXHUyNzY4LVx1Mjc3NVx1MjdDNVx1MjdDNlx1MjdFNi1cdTI3RUZcdTI5ODMtXHUyOTk4XHUyOUQ4LVx1MjlEQlx1MjlGQ1x1MjlGRFx1MkNGOS1cdTJDRkNcdTJDRkVcdTJDRkZcdTJENzBcdTJFMDAtXHUyRTJFXHUyRTMwLVx1MkU0Rlx1MkU1Mi1cdTJFNURcdTMwMDEtXHUzMDAzXHUzMDA4LVx1MzAxMVx1MzAxNC1cdTMwMUZcdTMwMzBcdTMwM0RcdTMwQTBcdTMwRkJcdUE0RkVcdUE0RkZcdUE2MEQtXHVBNjBGXHVBNjczXHVBNjdFXHVBNkYyLVx1QTZGN1x1QTg3NC1cdUE4NzdcdUE4Q0VcdUE4Q0ZcdUE4RjgtXHVBOEZBXHVBOEZDXHVBOTJFXHVBOTJGXHVBOTVGXHVBOUMxLVx1QTlDRFx1QTlERVx1QTlERlx1QUE1Qy1cdUFBNUZcdUFBREVcdUFBREZcdUFBRjBcdUFBRjFcdUFCRUJcdUZEM0VcdUZEM0ZcdUZFMTAtXHVGRTE5XHVGRTMwLVx1RkU1Mlx1RkU1NC1cdUZFNjFcdUZFNjNcdUZFNjhcdUZFNkFcdUZFNkJcdUZGMDEtXHVGRjAzXHVGRjA1LVx1RkYwQVx1RkYwQy1cdUZGMEZcdUZGMUFcdUZGMUJcdUZGMUZcdUZGMjBcdUZGM0ItXHVGRjNEXHVGRjNGXHVGRjVCXHVGRjVEXHVGRjVGLVx1RkY2NV18XHVEODAwW1x1REQwMC1cdUREMDJcdURGOUZcdURGRDBdfFx1RDgwMVx1REQ2RnxcdUQ4MDJbXHVEQzU3XHVERDFGXHVERDNGXHVERTUwLVx1REU1OFx1REU3Rlx1REVGMC1cdURFRjZcdURGMzktXHVERjNGXHVERjk5LVx1REY5Q118XHVEODAzW1x1REVBRFx1REY1NS1cdURGNTlcdURGODYtXHVERjg5XXxcdUQ4MDRbXHVEQzQ3LVx1REM0RFx1RENCQlx1RENCQ1x1RENCRS1cdURDQzFcdURENDAtXHVERDQzXHVERDc0XHVERDc1XHVEREM1LVx1RERDOFx1RERDRFx1REREQlx1RERERC1cdUREREZcdURFMzgtXHVERTNEXHVERUE5XXxcdUQ4MDVbXHVEQzRCLVx1REM0Rlx1REM1QVx1REM1Qlx1REM1RFx1RENDNlx1RERDMS1cdURERDdcdURFNDEtXHVERTQzXHVERTYwLVx1REU2Q1x1REVCOVx1REYzQy1cdURGM0VdfFx1RDgwNltcdURDM0JcdURENDQtXHVERDQ2XHVEREUyXHVERTNGLVx1REU0Nlx1REU5QS1cdURFOUNcdURFOUUtXHVERUEyXHVERjAwLVx1REYwOV18XHVEODA3W1x1REM0MS1cdURDNDVcdURDNzBcdURDNzFcdURFRjdcdURFRjhcdURGNDMtXHVERjRGXHVERkZGXXxcdUQ4MDlbXHVEQzcwLVx1REM3NF18XHVEODBCW1x1REZGMVx1REZGMl18XHVEODFBW1x1REU2RVx1REU2Rlx1REVGNVx1REYzNy1cdURGM0JcdURGNDRdfFx1RDgxQltcdURFOTctXHVERTlBXHVERkUyXXxcdUQ4MkZcdURDOUZ8XHVEODM2W1x1REU4Ny1cdURFOEJdfFx1RDgzQVtcdURENUVcdURENUZdLyxYZD0vWyBceEEwXHUxNjgwXHUyMDAwLVx1MjAwQVx1MjAyOFx1MjAyOVx1MjAyRlx1MjA1Rlx1MzAwMF0vO2Z1bmN0aW9uIFpkKGUpe2xldCB0PXt9O2V8fD17fSx0LnNyY19Bbnk9cWQuc291cmNlLHQuc3JjX0NjPUpkLnNvdXJjZSx0LnNyY19aPVhkLnNvdXJjZSx0LnNyY19QPVlkLnNvdXJjZSx0LnNyY19aUENjPVt0LnNyY19aLHQuc3JjX1AsdC5zcmNfQ2NdLmpvaW4oYHxgKSx0LnNyY19aQ2M9W3Quc3JjX1osdC5zcmNfQ2NdLmpvaW4oYHxgKTtsZXQgbj1gWz48772cXWA7cmV0dXJuIHQuc3JjX3BzZXVkb19sZXR0ZXI9YCg/Oig/IWArbitgfGArdC5zcmNfWlBDYytgKWArdC5zcmNfQW55K2ApYCx0LnNyY19pcDQ9YCg/OigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pYCx0LnNyY19hdXRoPWAoPzooPzooPyFgK3Quc3JjX1pDYytgfFtAL1xcW1xcXSgpXSkuKStAKT9gLHQuc3JjX3BvcnQ9YCg/OjooPzo2KD86WzAtNF1cXGR7M318NSg/OlswLTRdXFxkezJ9fDUoPzpbMC0yXVxcZHwzWzAtNV0pKSl8WzEtNV0/XFxkezEsNH0pKT9gLHQuc3JjX2hvc3RfdGVybWluYXRvcj1gKD89JHxgK24rYHxgK3Quc3JjX1pQQ2MrYCkoPyFgKyhlW2AtLS1gXT9gLSg/IS0tKXxgOmAtfGApK2BffDpcXGR8XFwuLXxcXC4oPyEkfGArdC5zcmNfWlBDYytgKSlgLHQuc3JjX3BhdGg9YCg/OlsvPyNdKD86KD8hYCt0LnNyY19aQ2MrYHxbPjzvvZxdfFsoKVtcXF17fS4sIic/IVxcLTtdKS58XFxbKD86KD8hYCt0LnNyY19aQ2MrYHxcXF0pLikqXFxdfFxcKCg/Oig/IWArdC5zcmNfWkNjK2B8WyldKS4pKlxcKXxcXHsoPzooPyFgK3Quc3JjX1pDYytgfFt9XSkuKSpcXH18XFwiKD86KD8hYCt0LnNyY19aQ2MrYHxbIl0pLikrXFwifFxcJyg/Oig/IWArdC5zcmNfWkNjK2B8WyddKS4pK1xcJ3xcXCcoPz1gK3Quc3JjX3BzZXVkb19sZXR0ZXIrYHxbLV0pfFxcLnsyLH1bYS16QS1aMC05JS8mXXxcXC4oPyFgK3Quc3JjX1pDYytgfFsuXXwkKXxgKyhlW2AtLS1gXT9gXFwtKD8hLS0oPzpbXi1dfCQpKSg/Oi0qKXxgOmBcXC0rfGApK2AsKD8hYCt0LnNyY19aQ2MrYHwkKXw7KD8hYCt0LnNyY19aQ2MrYHwkKXxcXCErKD8hYCt0LnNyY19aQ2MrYHxbIV18JCl8XFw/KD8hYCt0LnNyY19aQ2MrYHxbP118JCkpK3xcXC8pP2AsdC5zcmNfZW1haWxfbmFtZT1gW1xcLTs6Jj1cXCtcXCQsXFwuYS16QS1aMC05X11bXFwtOzomPVxcK1xcJCxcXCJcXC5hLXpBLVowLTlfXSpgLHQuc3JjX3huPWB4bi0tW2EtejAtOVxcLV17MSw1OX1gLHQuc3JjX2RvbWFpbl9yb290PWAoPzpgK3Quc3JjX3huK2B8YCt0LnNyY19wc2V1ZG9fbGV0dGVyK2B7MSw2M30pYCx0LnNyY19kb21haW49YCg/OmArdC5zcmNfeG4rYHwoPzpgK3Quc3JjX3BzZXVkb19sZXR0ZXIrYCl8KD86YCt0LnNyY19wc2V1ZG9fbGV0dGVyK2AoPzotfGArdC5zcmNfcHNldWRvX2xldHRlcitgKXswLDYxfWArdC5zcmNfcHNldWRvX2xldHRlcitgKSlgLHQuc3JjX2hvc3Q9YCg/Oig/Oig/Oig/OmArdC5zcmNfZG9tYWluK2ApXFwuKSpgK3Quc3JjX2RvbWFpbitgKSlgLHQudHBsX2hvc3RfZnV6enk9YCg/OmArdC5zcmNfaXA0K2B8KD86KD86KD86YCt0LnNyY19kb21haW4rYClcXC4pKyg/OiVUTERTJSkpKWAsdC50cGxfaG9zdF9ub19pcF9mdXp6eT1gKD86KD86KD86YCt0LnNyY19kb21haW4rYClcXC4pKyg/OiVUTERTJSkpYCx0LnNyY19ob3N0X3N0cmljdD10LnNyY19ob3N0K3Quc3JjX2hvc3RfdGVybWluYXRvcix0LnRwbF9ob3N0X2Z1enp5X3N0cmljdD10LnRwbF9ob3N0X2Z1enp5K3Quc3JjX2hvc3RfdGVybWluYXRvcix0LnNyY19ob3N0X3BvcnRfc3RyaWN0PXQuc3JjX2hvc3QrdC5zcmNfcG9ydCt0LnNyY19ob3N0X3Rlcm1pbmF0b3IsdC50cGxfaG9zdF9wb3J0X2Z1enp5X3N0cmljdD10LnRwbF9ob3N0X2Z1enp5K3Quc3JjX3BvcnQrdC5zcmNfaG9zdF90ZXJtaW5hdG9yLHQudHBsX2hvc3RfcG9ydF9ub19pcF9mdXp6eV9zdHJpY3Q9dC50cGxfaG9zdF9ub19pcF9mdXp6eSt0LnNyY19wb3J0K3Quc3JjX2hvc3RfdGVybWluYXRvcix0LnRwbF9ob3N0X2Z1enp5X3Rlc3Q9YGxvY2FsaG9zdHx3d3dcXC58XFwuXFxkezEsM31cXC58KD86XFwuKD86JVRMRFMlKSg/OmArdC5zcmNfWlBDYytgfD58JCkpYCx0LnRwbF9lbWFpbF9mdXp6eT1gKF58YCtuK2B8InxcXCh8YCt0LnNyY19aQ2MrYCkoYCt0LnNyY19lbWFpbF9uYW1lK2BAYCt0LnRwbF9ob3N0X2Z1enp5X3N0cmljdCtgKWAsdC50cGxfbGlua19mdXp6eT0iKF58KD8hWy46L1xcLV9AXSkoPzpbJCs8PT5eYHzvvZxdfCIrdC5zcmNfWlBDYysiKSkoKD8hWyQrPD0+XmB8772cXSkiK3QudHBsX2hvc3RfcG9ydF9mdXp6eV9zdHJpY3QrdC5zcmNfcGF0aCtgKWAsdC50cGxfbGlua19ub19pcF9mdXp6eT0iKF58KD8hWy46L1xcLV9AXSkoPzpbJCs8PT5eYHzvvZxdfCIrdC5zcmNfWlBDYysiKSkoKD8hWyQrPD0+XmB8772cXSkiK3QudHBsX2hvc3RfcG9ydF9ub19pcF9mdXp6eV9zdHJpY3QrdC5zcmNfcGF0aCtgKWAsdH1mdW5jdGlvbiBRZChlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLmZvckVhY2goZnVuY3Rpb24odCl7dCYmT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtlW25dPXRbbl19KX0pLGV9ZnVuY3Rpb24gJGQoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX1mdW5jdGlvbiBlZihlKXtyZXR1cm4gJGQoZSk9PT1gW29iamVjdCBTdHJpbmddYH1mdW5jdGlvbiB0ZihlKXtyZXR1cm4gJGQoZSk9PT1gW29iamVjdCBPYmplY3RdYH1mdW5jdGlvbiBuZihlKXtyZXR1cm4gJGQoZSk9PT1gW29iamVjdCBSZWdFeHBdYH1mdW5jdGlvbiByZihlKXtyZXR1cm4gJGQoZSk9PT1gW29iamVjdCBGdW5jdGlvbl1gfWZ1bmN0aW9uIGFmKGUpe3JldHVybiBlLnJlcGxhY2UoL1suPyorXiRbXF1cXCgpe318LV0vZyxgXFwkJmApfXZhciBvZj17ZnV6enlMaW5rOiEwLGZ1enp5RW1haWw6ITAsZnV6enlJUDohMX07ZnVuY3Rpb24gc2YoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGV8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8b2YuaGFzT3duUHJvcGVydHkodCl9LCExKX12YXIgY2Y9eyJodHRwOiI6e3ZhbGlkYXRlOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnNsaWNlKHQpO3JldHVybiBuLnJlLmh0dHB8fChuLnJlLmh0dHA9UmVnRXhwKGBeXFwvXFwvYCtuLnJlLnNyY19hdXRoK24ucmUuc3JjX2hvc3RfcG9ydF9zdHJpY3Qrbi5yZS5zcmNfcGF0aCxgaWApKSxuLnJlLmh0dHAudGVzdChyKT9yLm1hdGNoKG4ucmUuaHR0cClbMF0ubGVuZ3RoOjB9fSwiaHR0cHM6IjpgaHR0cDpgLCJmdHA6IjpgaHR0cDpgLCIvLyI6e3ZhbGlkYXRlOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnNsaWNlKHQpO3JldHVybiBuLnJlLm5vX2h0dHB8fChuLnJlLm5vX2h0dHA9UmVnRXhwKGBeYCtuLnJlLnNyY19hdXRoK2AoPzpsb2NhbGhvc3R8KD86KD86YCtuLnJlLnNyY19kb21haW4rYClcXC4pK2Arbi5yZS5zcmNfZG9tYWluX3Jvb3QrYClgK24ucmUuc3JjX3BvcnQrbi5yZS5zcmNfaG9zdF90ZXJtaW5hdG9yK24ucmUuc3JjX3BhdGgsYGlgKSksbi5yZS5ub19odHRwLnRlc3Qocik/dD49MyYmZVt0LTNdPT09YDpgfHx0Pj0zJiZlW3QtM109PT1gL2A/MDpyLm1hdGNoKG4ucmUubm9faHR0cClbMF0ubGVuZ3RoOjB9fSwibWFpbHRvOiI6e3ZhbGlkYXRlOmZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1lLnNsaWNlKHQpO3JldHVybiBuLnJlLm1haWx0b3x8KG4ucmUubWFpbHRvPVJlZ0V4cChgXmArbi5yZS5zcmNfZW1haWxfbmFtZStgQGArbi5yZS5zcmNfaG9zdF9zdHJpY3QsYGlgKSksbi5yZS5tYWlsdG8udGVzdChyKT9yLm1hdGNoKG4ucmUubWFpbHRvKVswXS5sZW5ndGg6MH19fSxsZj1gYVtjZGVmZ2lsbW5vcXJzdHV3eHpdfGJbYWJkZWZnaGlqbW5vcnN0dnd5el18Y1thY2RmZ2hpa2xtbm9ydXZ3eHl6XXxkW2Vqa21vel18ZVtjZWdyc3R1XXxmW2lqa21vcl18Z1thYmRlZmdoaWxtbnBxcnN0dXd5XXxoW2ttbnJ0dV18aVtkZWxtbm9xcnN0XXxqW2Vtb3BdfGtbZWdoaW1ucHJ3eXpdfGxbYWJjaWtyc3R1dnldfG1bYWNkZWdoa2xtbm9wcXJzdHV2d3h5el18blthY2VmZ2lsb3BydXpdfG9tfHBbYWVmZ2hrbG1ucnN0d3ldfHFhfHJbZW9zdXddfHNbYWJjZGVnaGlqa2xtbm9ydHV2eHl6XXx0W2NkZmdoamtsbW5vcnR2d3pdfHVbYWdrc3l6XXx2W2FjZWdpbnVdfHdbZnNdfHlbZXRdfHpbYW13XWAsdWY9YGJpenxjb218ZWR1fGdvdnxuZXR8b3JnfHByb3x3ZWJ8eHh4fGFlcm98YXNpYXxjb29wfGluZm98bXVzZXVtfG5hbWV8c2hvcHzRgNGEYC5zcGxpdChgfGApO2Z1bmN0aW9uIGRmKGUpe2UuX19pbmRleF9fPS0xLGUuX190ZXh0X2NhY2hlX189YGB9ZnVuY3Rpb24gZmYoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7bGV0IHI9dC5zbGljZShuKTtyZXR1cm4gZS50ZXN0KHIpP3IubWF0Y2goZSlbMF0ubGVuZ3RoOjB9fWZ1bmN0aW9uIHBmKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dC5ub3JtYWxpemUoZSl9fWZ1bmN0aW9uIG1mKGUpe2xldCB0PWUucmU9WmQoZS5fX29wdHNfXyksbj1lLl9fdGxkc19fLnNsaWNlKCk7ZS5vbkNvbXBpbGUoKSxlLl9fdGxkc19yZXBsYWNlZF9ffHxuLnB1c2gobGYpLG4ucHVzaCh0LnNyY194biksdC5zcmNfdGxkcz1uLmpvaW4oYHxgKTtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UoYCVUTERTJWAsdC5zcmNfdGxkcyl9dC5lbWFpbF9mdXp6eT1SZWdFeHAocih0LnRwbF9lbWFpbF9mdXp6eSksYGlgKSx0LmxpbmtfZnV6enk9UmVnRXhwKHIodC50cGxfbGlua19mdXp6eSksYGlgKSx0Lmxpbmtfbm9faXBfZnV6enk9UmVnRXhwKHIodC50cGxfbGlua19ub19pcF9mdXp6eSksYGlgKSx0Lmhvc3RfZnV6enlfdGVzdD1SZWdFeHAocih0LnRwbF9ob3N0X2Z1enp5X3Rlc3QpLGBpYCk7bGV0IGk9W107ZS5fX2NvbXBpbGVkX189e307ZnVuY3Rpb24gYShlLHQpe3Rocm93IEVycm9yKGAoTGlua2lmeUl0KSBJbnZhbGlkIHNjaGVtYSAiYCtlK2AiOiBgK3QpfU9iamVjdC5rZXlzKGUuX19zY2hlbWFzX18pLmZvckVhY2goZnVuY3Rpb24odCl7bGV0IG49ZS5fX3NjaGVtYXNfX1t0XTtpZihuPT09bnVsbClyZXR1cm47bGV0IHI9e3ZhbGlkYXRlOm51bGwsbGluazpudWxsfTtpZihlLl9fY29tcGlsZWRfX1t0XT1yLHRmKG4pKXtuZihuLnZhbGlkYXRlKT9yLnZhbGlkYXRlPWZmKG4udmFsaWRhdGUpOnJmKG4udmFsaWRhdGUpP3IudmFsaWRhdGU9bi52YWxpZGF0ZTphKHQsbikscmYobi5ub3JtYWxpemUpP3Iubm9ybWFsaXplPW4ubm9ybWFsaXplOm4ubm9ybWFsaXplP2EodCxuKTpyLm5vcm1hbGl6ZT1wZigpO3JldHVybn1pZihlZihuKSl7aS5wdXNoKHQpO3JldHVybn1hKHQsbil9KSxpLmZvckVhY2goZnVuY3Rpb24odCl7ZS5fX2NvbXBpbGVkX19bZS5fX3NjaGVtYXNfX1t0XV0mJihlLl9fY29tcGlsZWRfX1t0XS52YWxpZGF0ZT1lLl9fY29tcGlsZWRfX1tlLl9fc2NoZW1hc19fW3RdXS52YWxpZGF0ZSxlLl9fY29tcGlsZWRfX1t0XS5ub3JtYWxpemU9ZS5fX2NvbXBpbGVkX19bZS5fX3NjaGVtYXNfX1t0XV0ubm9ybWFsaXplKX0pLGUuX19jb21waWxlZF9fW2BgXT17dmFsaWRhdGU6bnVsbCxub3JtYWxpemU6cGYoKX07bGV0IG89T2JqZWN0LmtleXMoZS5fX2NvbXBpbGVkX18pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MCYmZS5fX2NvbXBpbGVkX19bdF19KS5tYXAoYWYpLmpvaW4oYHxgKTtlLnJlLnNjaGVtYV90ZXN0PVJlZ0V4cChgKF58KD8hXykoPzpbPjzvvZxdfGArdC5zcmNfWlBDYytgKSkoYCtvK2ApYCxgaWApLGUucmUuc2NoZW1hX3NlYXJjaD1SZWdFeHAoYChefCg/IV8pKD86Wz48772cXXxgK3Quc3JjX1pQQ2MrYCkpKGArbytgKWAsYGlnYCksZS5yZS5zY2hlbWFfYXRfc3RhcnQ9UmVnRXhwKGBeYCtlLnJlLnNjaGVtYV9zZWFyY2guc291cmNlLGBpYCksZS5yZS5wcmV0ZXN0PVJlZ0V4cChgKGArZS5yZS5zY2hlbWFfdGVzdC5zb3VyY2UrYCl8KGArZS5yZS5ob3N0X2Z1enp5X3Rlc3Quc291cmNlK2ApfEBgLGBpYCksZGYoZSl9ZnVuY3Rpb24gaGYoZSx0KXtsZXQgbj1lLl9faW5kZXhfXyxyPWUuX19sYXN0X2luZGV4X18saT1lLl9fdGV4dF9jYWNoZV9fLnNsaWNlKG4scik7dGhpcy5zY2hlbWE9ZS5fX3NjaGVtYV9fLnRvTG93ZXJDYXNlKCksdGhpcy5pbmRleD1uK3QsdGhpcy5sYXN0SW5kZXg9cit0LHRoaXMucmF3PWksdGhpcy50ZXh0PWksdGhpcy51cmw9aX1mdW5jdGlvbiBnZihlLHQpe2xldCBuPW5ldyBoZihlLHQpO3JldHVybiBlLl9fY29tcGlsZWRfX1tuLnNjaGVtYV0ubm9ybWFsaXplKG4sZSksbn1mdW5jdGlvbiBfZihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIF9mKSlyZXR1cm4gbmV3IF9mKGUsdCk7dHx8c2YoZSkmJih0PWUsZT17fSksdGhpcy5fX29wdHNfXz1RZCh7fSxvZix0KSx0aGlzLl9faW5kZXhfXz0tMSx0aGlzLl9fbGFzdF9pbmRleF9fPS0xLHRoaXMuX19zY2hlbWFfXz1gYCx0aGlzLl9fdGV4dF9jYWNoZV9fPWBgLHRoaXMuX19zY2hlbWFzX189UWQoe30sY2YsZSksdGhpcy5fX2NvbXBpbGVkX189e30sdGhpcy5fX3RsZHNfXz11Zix0aGlzLl9fdGxkc19yZXBsYWNlZF9fPSExLHRoaXMucmU9e30sbWYodGhpcyl9X2YucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9fc2NoZW1hc19fW2VdPXQsbWYodGhpcyksdGhpc30sX2YucHJvdG90eXBlLnNldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fX29wdHNfXz1RZCh0aGlzLl9fb3B0c19fLGUpLHRoaXN9LF9mLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX190ZXh0X2NhY2hlX189ZSx0aGlzLl9faW5kZXhfXz0tMSwhZS5sZW5ndGgpcmV0dXJuITE7bGV0IHQsbixyLGksYSxvLHMsYyxsO2lmKHRoaXMucmUuc2NoZW1hX3Rlc3QudGVzdChlKSl7Zm9yKHM9dGhpcy5yZS5zY2hlbWFfc2VhcmNoLHMubGFzdEluZGV4PTA7KHQ9cy5leGVjKGUpKSE9PW51bGw7KWlmKGk9dGhpcy50ZXN0U2NoZW1hQXQoZSx0WzJdLHMubGFzdEluZGV4KSxpKXt0aGlzLl9fc2NoZW1hX189dFsyXSx0aGlzLl9faW5kZXhfXz10LmluZGV4K3RbMV0ubGVuZ3RoLHRoaXMuX19sYXN0X2luZGV4X189dC5pbmRleCt0WzBdLmxlbmd0aCtpO2JyZWFrfX1yZXR1cm4gdGhpcy5fX29wdHNfXy5mdXp6eUxpbmsmJnRoaXMuX19jb21waWxlZF9fW2BodHRwOmBdJiYoYz1lLnNlYXJjaCh0aGlzLnJlLmhvc3RfZnV6enlfdGVzdCksYz49MCYmKHRoaXMuX19pbmRleF9fPDB8fGM8dGhpcy5fX2luZGV4X18pJiYobj1lLm1hdGNoKHRoaXMuX19vcHRzX18uZnV6enlJUD90aGlzLnJlLmxpbmtfZnV6enk6dGhpcy5yZS5saW5rX25vX2lwX2Z1enp5KSkhPT1udWxsJiYoYT1uLmluZGV4K25bMV0ubGVuZ3RoLCh0aGlzLl9faW5kZXhfXzwwfHxhPHRoaXMuX19pbmRleF9fKSYmKHRoaXMuX19zY2hlbWFfXz1gYCx0aGlzLl9faW5kZXhfXz1hLHRoaXMuX19sYXN0X2luZGV4X189bi5pbmRleCtuWzBdLmxlbmd0aCkpKSx0aGlzLl9fb3B0c19fLmZ1enp5RW1haWwmJnRoaXMuX19jb21waWxlZF9fW2BtYWlsdG86YF0mJihsPWUuaW5kZXhPZihgQGApLGw+PTAmJihyPWUubWF0Y2godGhpcy5yZS5lbWFpbF9mdXp6eSkpIT09bnVsbCYmKGE9ci5pbmRleCtyWzFdLmxlbmd0aCxvPXIuaW5kZXgrclswXS5sZW5ndGgsKHRoaXMuX19pbmRleF9fPDB8fGE8dGhpcy5fX2luZGV4X198fGE9PT10aGlzLl9faW5kZXhfXyYmbz50aGlzLl9fbGFzdF9pbmRleF9fKSYmKHRoaXMuX19zY2hlbWFfXz1gbWFpbHRvOmAsdGhpcy5fX2luZGV4X189YSx0aGlzLl9fbGFzdF9pbmRleF9fPW8pKSksdGhpcy5fX2luZGV4X18+PTB9LF9mLnByb3RvdHlwZS5wcmV0ZXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlLnByZXRlc3QudGVzdChlKX0sX2YucHJvdG90eXBlLnRlc3RTY2hlbWFBdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuX19jb21waWxlZF9fW3QudG9Mb3dlckNhc2UoKV0/dGhpcy5fX2NvbXBpbGVkX19bdC50b0xvd2VyQ2FzZSgpXS52YWxpZGF0ZShlLG4sdGhpcyk6MH0sX2YucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe2xldCB0PVtdLG49MDt0aGlzLl9faW5kZXhfXz49MCYmdGhpcy5fX3RleHRfY2FjaGVfXz09PWUmJih0LnB1c2goZ2YodGhpcyxuKSksbj10aGlzLl9fbGFzdF9pbmRleF9fKTtsZXQgcj1uP2Uuc2xpY2Uobik6ZTtmb3IoO3RoaXMudGVzdChyKTspdC5wdXNoKGdmKHRoaXMsbikpLHI9ci5zbGljZSh0aGlzLl9fbGFzdF9pbmRleF9fKSxuKz10aGlzLl9fbGFzdF9pbmRleF9fO3JldHVybiB0Lmxlbmd0aD90Om51bGx9LF9mLnByb3RvdHlwZS5tYXRjaEF0U3RhcnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5fX3RleHRfY2FjaGVfXz1lLHRoaXMuX19pbmRleF9fPS0xLCFlLmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgdD10aGlzLnJlLnNjaGVtYV9hdF9zdGFydC5leGVjKGUpO2lmKCF0KXJldHVybiBudWxsO2xldCBuPXRoaXMudGVzdFNjaGVtYUF0KGUsdFsyXSx0WzBdLmxlbmd0aCk7cmV0dXJuIG4/KHRoaXMuX19zY2hlbWFfXz10WzJdLHRoaXMuX19pbmRleF9fPXQuaW5kZXgrdFsxXS5sZW5ndGgsdGhpcy5fX2xhc3RfaW5kZXhfXz10LmluZGV4K3RbMF0ubGVuZ3RoK24sZ2YodGhpcywwKSk6bnVsbH0sX2YucHJvdG90eXBlLnRsZHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdLHQ/KHRoaXMuX190bGRzX189dGhpcy5fX3RsZHNfXy5jb25jYXQoZSkuc29ydCgpLmZpbHRlcihmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUhPT1uW3QtMV19KS5yZXZlcnNlKCksbWYodGhpcyksdGhpcyk6KHRoaXMuX190bGRzX189ZS5zbGljZSgpLHRoaXMuX190bGRzX3JlcGxhY2VkX189ITAsbWYodGhpcyksdGhpcyl9LF9mLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7ZS5zY2hlbWF8fChlLnVybD1gaHR0cDovL2ArZS51cmwpLGUuc2NoZW1hPT09YG1haWx0bzpgJiYhL15tYWlsdG86L2kudGVzdChlLnVybCkmJihlLnVybD1gbWFpbHRvOmArZS51cmwpfSxfZi5wcm90b3R5cGUub25Db21waWxlPWZ1bmN0aW9uKCl7fTt2YXIgdmY9SlNPTi5wYXJzZShgWyJhYWEiLCJhYXJwIiwiYWJiIiwiYWJib3R0IiwiYWJidmllIiwiYWJjIiwiYWJsZSIsImFib2dhZG8iLCJhYnVkaGFiaSIsImFjIiwiYWNhZGVteSIsImFjY2VudHVyZSIsImFjY291bnRhbnQiLCJhY2NvdW50YW50cyIsImFjbyIsImFjdG9yIiwiYWQiLCJhZHMiLCJhZHVsdCIsImFlIiwiYWVnIiwiYWVybyIsImFldG5hIiwiYWYiLCJhZmwiLCJhZnJpY2EiLCJhZyIsImFnYWtoYW4iLCJhZ2VuY3kiLCJhaSIsImFpZyIsImFpcmJ1cyIsImFpcmZvcmNlIiwiYWlydGVsIiwiYWtkbiIsImFsIiwiYWxpYmFiYSIsImFsaXBheSIsImFsbGZpbmFueiIsImFsbHN0YXRlIiwiYWxseSIsImFsc2FjZSIsImFsc3RvbSIsImFtIiwiYW1hem9uIiwiYW1lcmljYW5leHByZXNzIiwiYW1lcmljYW5mYW1pbHkiLCJhbWV4IiwiYW1mYW0iLCJhbWljYSIsImFtc3RlcmRhbSIsImFuYWx5dGljcyIsImFuZHJvaWQiLCJhbnF1YW4iLCJhbnoiLCJhbyIsImFvbCIsImFwYXJ0bWVudHMiLCJhcHAiLCJhcHBsZSIsImFxIiwiYXF1YXJlbGxlIiwiYXIiLCJhcmFiIiwiYXJhbWNvIiwiYXJjaGkiLCJhcm15IiwiYXJwYSIsImFydCIsImFydGUiLCJhcyIsImFzZGEiLCJhc2lhIiwiYXNzb2NpYXRlcyIsImF0IiwiYXRobGV0YSIsImF0dG9ybmV5IiwiYXUiLCJhdWN0aW9uIiwiYXVkaSIsImF1ZGlibGUiLCJhdWRpbyIsImF1c3Bvc3QiLCJhdXRob3IiLCJhdXRvIiwiYXV0b3MiLCJhdyIsImF3cyIsImF4IiwiYXhhIiwiYXoiLCJhenVyZSIsImJhIiwiYmFieSIsImJhaWR1IiwiYmFuYW1leCIsImJhbmQiLCJiYW5rIiwiYmFyIiwiYmFyY2Vsb25hIiwiYmFyY2xheWNhcmQiLCJiYXJjbGF5cyIsImJhcmVmb290IiwiYmFyZ2FpbnMiLCJiYXNlYmFsbCIsImJhc2tldGJhbGwiLCJiYXVoYXVzIiwiYmF5ZXJuIiwiYmIiLCJiYmMiLCJiYnQiLCJiYnZhIiwiYmNnIiwiYmNuIiwiYmQiLCJiZSIsImJlYXRzIiwiYmVhdXR5IiwiYmVlciIsImJlcmxpbiIsImJlc3QiLCJiZXN0YnV5IiwiYmV0IiwiYmYiLCJiZyIsImJoIiwiYmhhcnRpIiwiYmkiLCJiaWJsZSIsImJpZCIsImJpa2UiLCJiaW5nIiwiYmluZ28iLCJiaW8iLCJiaXoiLCJiaiIsImJsYWNrIiwiYmxhY2tmcmlkYXkiLCJibG9ja2J1c3RlciIsImJsb2ciLCJibG9vbWJlcmciLCJibHVlIiwiYm0iLCJibXMiLCJibXciLCJibiIsImJucHBhcmliYXMiLCJibyIsImJvYXRzIiwiYm9laHJpbmdlciIsImJvZmEiLCJib20iLCJib25kIiwiYm9vIiwiYm9vayIsImJvb2tpbmciLCJib3NjaCIsImJvc3RpayIsImJvc3RvbiIsImJvdCIsImJvdXRpcXVlIiwiYm94IiwiYnIiLCJicmFkZXNjbyIsImJyaWRnZXN0b25lIiwiYnJvYWR3YXkiLCJicm9rZXIiLCJicm90aGVyIiwiYnJ1c3NlbHMiLCJicyIsImJ0IiwiYnVpbGQiLCJidWlsZGVycyIsImJ1c2luZXNzIiwiYnV5IiwiYnV6eiIsImJ2IiwiYnciLCJieSIsImJ6IiwiYnpoIiwiY2EiLCJjYWIiLCJjYWZlIiwiY2FsIiwiY2FsbCIsImNhbHZpbmtsZWluIiwiY2FtIiwiY2FtZXJhIiwiY2FtcCIsImNhbm9uIiwiY2FwZXRvd24iLCJjYXBpdGFsIiwiY2FwaXRhbG9uZSIsImNhciIsImNhcmF2YW4iLCJjYXJkcyIsImNhcmUiLCJjYXJlZXIiLCJjYXJlZXJzIiwiY2FycyIsImNhc2EiLCJjYXNlIiwiY2FzaCIsImNhc2lubyIsImNhdCIsImNhdGVyaW5nIiwiY2F0aG9saWMiLCJjYmEiLCJjYm4iLCJjYnJlIiwiY2MiLCJjZCIsImNlbnRlciIsImNlbyIsImNlcm4iLCJjZiIsImNmYSIsImNmZCIsImNnIiwiY2giLCJjaGFuZWwiLCJjaGFubmVsIiwiY2hhcml0eSIsImNoYXNlIiwiY2hhdCIsImNoZWFwIiwiY2hpbnRhaSIsImNocmlzdG1hcyIsImNocm9tZSIsImNodXJjaCIsImNpIiwiY2lwcmlhbmkiLCJjaXJjbGUiLCJjaXNjbyIsImNpdGFkZWwiLCJjaXRpIiwiY2l0aWMiLCJjaXR5IiwiY2siLCJjbCIsImNsYWltcyIsImNsZWFuaW5nIiwiY2xpY2siLCJjbGluaWMiLCJjbGluaXF1ZSIsImNsb3RoaW5nIiwiY2xvdWQiLCJjbHViIiwiY2x1Ym1lZCIsImNtIiwiY24iLCJjbyIsImNvYWNoIiwiY29kZXMiLCJjb2ZmZWUiLCJjb2xsZWdlIiwiY29sb2duZSIsImNvbSIsImNvbW1iYW5rIiwiY29tbXVuaXR5IiwiY29tcGFueSIsImNvbXBhcmUiLCJjb21wdXRlciIsImNvbXNlYyIsImNvbmRvcyIsImNvbnN0cnVjdGlvbiIsImNvbnN1bHRpbmciLCJjb250YWN0IiwiY29udHJhY3RvcnMiLCJjb29raW5nIiwiY29vbCIsImNvb3AiLCJjb3JzaWNhIiwiY291bnRyeSIsImNvdXBvbiIsImNvdXBvbnMiLCJjb3Vyc2VzIiwiY3BhIiwiY3IiLCJjcmVkaXQiLCJjcmVkaXRjYXJkIiwiY3JlZGl0dW5pb24iLCJjcmlja2V0IiwiY3Jvd24iLCJjcnMiLCJjcnVpc2UiLCJjcnVpc2VzIiwiY3UiLCJjdWlzaW5lbGxhIiwiY3YiLCJjdyIsImN4IiwiY3kiLCJjeW1ydSIsImN5b3UiLCJjeiIsImRhZCIsImRhbmNlIiwiZGF0YSIsImRhdGUiLCJkYXRpbmciLCJkYXRzdW4iLCJkYXkiLCJkY2xrIiwiZGRzIiwiZGUiLCJkZWFsIiwiZGVhbGVyIiwiZGVhbHMiLCJkZWdyZWUiLCJkZWxpdmVyeSIsImRlbGwiLCJkZWxvaXR0ZSIsImRlbHRhIiwiZGVtb2NyYXQiLCJkZW50YWwiLCJkZW50aXN0IiwiZGVzaSIsImRlc2lnbiIsImRldiIsImRobCIsImRpYW1vbmRzIiwiZGlldCIsImRpZ2l0YWwiLCJkaXJlY3QiLCJkaXJlY3RvcnkiLCJkaXNjb3VudCIsImRpc2NvdmVyIiwiZGlzaCIsImRpeSIsImRqIiwiZGsiLCJkbSIsImRucCIsImRvIiwiZG9jcyIsImRvY3RvciIsImRvZyIsImRvbWFpbnMiLCJkb3QiLCJkb3dubG9hZCIsImRyaXZlIiwiZHR2IiwiZHViYWkiLCJkdXBvbnQiLCJkdXJiYW4iLCJkdmFnIiwiZHZyIiwiZHoiLCJlYXJ0aCIsImVhdCIsImVjIiwiZWNvIiwiZWRla2EiLCJlZHUiLCJlZHVjYXRpb24iLCJlZSIsImVnIiwiZW1haWwiLCJlbWVyY2siLCJlbmVyZ3kiLCJlbmdpbmVlciIsImVuZ2luZWVyaW5nIiwiZW50ZXJwcmlzZXMiLCJlcHNvbiIsImVxdWlwbWVudCIsImVyIiwiZXJpY3Nzb24iLCJlcm5pIiwiZXMiLCJlc3EiLCJlc3RhdGUiLCJldCIsImV1IiwiZXVyb3Zpc2lvbiIsImV1cyIsImV2ZW50cyIsImV4Y2hhbmdlIiwiZXhwZXJ0IiwiZXhwb3NlZCIsImV4cHJlc3MiLCJleHRyYXNwYWNlIiwiZmFnZSIsImZhaWwiLCJmYWlyd2luZHMiLCJmYWl0aCIsImZhbWlseSIsImZhbiIsImZhbnMiLCJmYXJtIiwiZmFybWVycyIsImZhc2hpb24iLCJmYXN0IiwiZmVkZXgiLCJmZWVkYmFjayIsImZlcnJhcmkiLCJmZXJyZXJvIiwiZmkiLCJmaWRlbGl0eSIsImZpZG8iLCJmaWxtIiwiZmluYWwiLCJmaW5hbmNlIiwiZmluYW5jaWFsIiwiZmlyZSIsImZpcmVzdG9uZSIsImZpcm1kYWxlIiwiZmlzaCIsImZpc2hpbmciLCJmaXQiLCJmaXRuZXNzIiwiZmoiLCJmayIsImZsaWNrciIsImZsaWdodHMiLCJmbGlyIiwiZmxvcmlzdCIsImZsb3dlcnMiLCJmbHkiLCJmbSIsImZvIiwiZm9vIiwiZm9vZCIsImZvb3RiYWxsIiwiZm9yZCIsImZvcmV4IiwiZm9yc2FsZSIsImZvcnVtIiwiZm91bmRhdGlvbiIsImZveCIsImZyIiwiZnJlZSIsImZyZXNlbml1cyIsImZybCIsImZyb2dhbnMiLCJmcm9udGllciIsImZ0ciIsImZ1aml0c3UiLCJmdW4iLCJmdW5kIiwiZnVybml0dXJlIiwiZnV0Ym9sIiwiZnlpIiwiZ2EiLCJnYWwiLCJnYWxsZXJ5IiwiZ2FsbG8iLCJnYWxsdXAiLCJnYW1lIiwiZ2FtZXMiLCJnYXAiLCJnYXJkZW4iLCJnYXkiLCJnYiIsImdiaXoiLCJnZCIsImdkbiIsImdlIiwiZ2VhIiwiZ2VudCIsImdlbnRpbmciLCJnZW9yZ2UiLCJnZiIsImdnIiwiZ2dlZSIsImdoIiwiZ2kiLCJnaWZ0IiwiZ2lmdHMiLCJnaXZlcyIsImdpdmluZyIsImdsIiwiZ2xhc3MiLCJnbGUiLCJnbG9iYWwiLCJnbG9ibyIsImdtIiwiZ21haWwiLCJnbWJoIiwiZ21vIiwiZ214IiwiZ24iLCJnb2RhZGR5IiwiZ29sZCIsImdvbGRwb2ludCIsImdvbGYiLCJnb28iLCJnb29keWVhciIsImdvb2ciLCJnb29nbGUiLCJnb3AiLCJnb3QiLCJnb3YiLCJncCIsImdxIiwiZ3IiLCJncmFpbmdlciIsImdyYXBoaWNzIiwiZ3JhdGlzIiwiZ3JlZW4iLCJncmlwZSIsImdyb2NlcnkiLCJncm91cCIsImdzIiwiZ3QiLCJndSIsImd1Y2NpIiwiZ3VnZSIsImd1aWRlIiwiZ3VpdGFycyIsImd1cnUiLCJndyIsImd5IiwiaGFpciIsImhhbWJ1cmciLCJoYW5nb3V0IiwiaGF1cyIsImhibyIsImhkZmMiLCJoZGZjYmFuayIsImhlYWx0aCIsImhlYWx0aGNhcmUiLCJoZWxwIiwiaGVsc2lua2kiLCJoZXJlIiwiaGVybWVzIiwiaGlwaG9wIiwiaGlzYW1pdHN1IiwiaGl0YWNoaSIsImhpdiIsImhrIiwiaGt0IiwiaG0iLCJobiIsImhvY2tleSIsImhvbGRpbmdzIiwiaG9saWRheSIsImhvbWVkZXBvdCIsImhvbWVnb29kcyIsImhvbWVzIiwiaG9tZXNlbnNlIiwiaG9uZGEiLCJob3JzZSIsImhvc3BpdGFsIiwiaG9zdCIsImhvc3RpbmciLCJob3QiLCJob3RlbHMiLCJob3RtYWlsIiwiaG91c2UiLCJob3ciLCJociIsImhzYmMiLCJodCIsImh1IiwiaHVnaGVzIiwiaHlhdHQiLCJoeXVuZGFpIiwiaWJtIiwiaWNiYyIsImljZSIsImljdSIsImlkIiwiaWUiLCJpZWVlIiwiaWZtIiwiaWthbm8iLCJpbCIsImltIiwiaW1hbWF0IiwiaW1kYiIsImltbW8iLCJpbW1vYmlsaWVuIiwiaW4iLCJpbmMiLCJpbmR1c3RyaWVzIiwiaW5maW5pdGkiLCJpbmZvIiwiaW5nIiwiaW5rIiwiaW5zdGl0dXRlIiwiaW5zdXJhbmNlIiwiaW5zdXJlIiwiaW50IiwiaW50ZXJuYXRpb25hbCIsImludHVpdCIsImludmVzdG1lbnRzIiwiaW8iLCJpcGlyYW5nYSIsImlxIiwiaXIiLCJpcmlzaCIsImlzIiwiaXNtYWlsaSIsImlzdCIsImlzdGFuYnVsIiwiaXQiLCJpdGF1IiwiaXR2IiwiamFndWFyIiwiamF2YSIsImpjYiIsImplIiwiamVlcCIsImpldHp0IiwiamV3ZWxyeSIsImppbyIsImpsbCIsImptIiwiam1wIiwiam5qIiwiam8iLCJqb2JzIiwiam9idXJnIiwiam90Iiwiam95IiwianAiLCJqcG1vcmdhbiIsImpwcnMiLCJqdWVnb3MiLCJqdW5pcGVyIiwia2F1ZmVuIiwia2RkaSIsImtlIiwia2Vycnlob3RlbHMiLCJrZXJyeXByb3BlcnRpZXMiLCJrZmgiLCJrZyIsImtoIiwia2kiLCJraWEiLCJraWRzIiwia2ltIiwia2luZGxlIiwia2l0Y2hlbiIsImtpd2kiLCJrbSIsImtuIiwia29lbG4iLCJrb21hdHN1Iiwia29zaGVyIiwia3AiLCJrcG1nIiwia3BuIiwia3IiLCJrcmQiLCJrcmVkIiwia3Vva2dyb3VwIiwia3ciLCJreSIsImt5b3RvIiwia3oiLCJsYSIsImxhY2FpeGEiLCJsYW1ib3JnaGluaSIsImxhbWVyIiwibGFuZCIsImxhbmRyb3ZlciIsImxhbnhlc3MiLCJsYXNhbGxlIiwibGF0IiwibGF0aW5vIiwibGF0cm9iZSIsImxhdyIsImxhd3llciIsImxiIiwibGMiLCJsZHMiLCJsZWFzZSIsImxlY2xlcmMiLCJsZWZyYWsiLCJsZWdhbCIsImxlZ28iLCJsZXh1cyIsImxnYnQiLCJsaSIsImxpZGwiLCJsaWZlIiwibGlmZWluc3VyYW5jZSIsImxpZmVzdHlsZSIsImxpZ2h0aW5nIiwibGlrZSIsImxpbGx5IiwibGltaXRlZCIsImxpbW8iLCJsaW5jb2xuIiwibGluayIsImxpdmUiLCJsaXZpbmciLCJsayIsImxsYyIsImxscCIsImxvYW4iLCJsb2FucyIsImxvY2tlciIsImxvY3VzIiwibG9sIiwibG9uZG9uIiwibG90dGUiLCJsb3R0byIsImxvdmUiLCJscGwiLCJscGxmaW5hbmNpYWwiLCJsciIsImxzIiwibHQiLCJsdGQiLCJsdGRhIiwibHUiLCJsdW5kYmVjayIsImx1eGUiLCJsdXh1cnkiLCJsdiIsImx5IiwibWEiLCJtYWRyaWQiLCJtYWlmIiwibWFpc29uIiwibWFrZXVwIiwibWFuIiwibWFuYWdlbWVudCIsIm1hbmdvIiwibWFwIiwibWFya2V0IiwibWFya2V0aW5nIiwibWFya2V0cyIsIm1hcnJpb3R0IiwibWFyc2hhbGxzIiwibWF0dGVsIiwibWJhIiwibWMiLCJtY2tpbnNleSIsIm1kIiwibWUiLCJtZWQiLCJtZWRpYSIsIm1lZXQiLCJtZWxib3VybmUiLCJtZW1lIiwibWVtb3JpYWwiLCJtZW4iLCJtZW51IiwibWVyY2ttc2QiLCJtZyIsIm1oIiwibWlhbWkiLCJtaWNyb3NvZnQiLCJtaWwiLCJtaW5pIiwibWludCIsIm1pdCIsIm1pdHN1YmlzaGkiLCJtayIsIm1sIiwibWxiIiwibWxzIiwibW0iLCJtbWEiLCJtbiIsIm1vIiwibW9iaSIsIm1vYmlsZSIsIm1vZGEiLCJtb2UiLCJtb2kiLCJtb20iLCJtb25hc2giLCJtb25leSIsIm1vbnN0ZXIiLCJtb3Jtb24iLCJtb3J0Z2FnZSIsIm1vc2NvdyIsIm1vdG8iLCJtb3RvcmN5Y2xlcyIsIm1vdiIsIm1vdmllIiwibXAiLCJtcSIsIm1yIiwibXMiLCJtc2QiLCJtdCIsIm10biIsIm10ciIsIm11IiwibXVzZXVtIiwibXVzaWMiLCJtdiIsIm13IiwibXgiLCJteSIsIm16IiwibmEiLCJuYWIiLCJuYWdveWEiLCJuYW1lIiwibmF2eSIsIm5iYSIsIm5jIiwibmUiLCJuZWMiLCJuZXQiLCJuZXRiYW5rIiwibmV0ZmxpeCIsIm5ldHdvcmsiLCJuZXVzdGFyIiwibmV3IiwibmV3cyIsIm5leHQiLCJuZXh0ZGlyZWN0IiwibmV4dXMiLCJuZiIsIm5mbCIsIm5nIiwibmdvIiwibmhrIiwibmkiLCJuaWNvIiwibmlrZSIsIm5pa29uIiwibmluamEiLCJuaXNzYW4iLCJuaXNzYXkiLCJubCIsIm5vIiwibm9raWEiLCJub3J0b24iLCJub3ciLCJub3dydXoiLCJub3d0diIsIm5wIiwibnIiLCJucmEiLCJucnciLCJudHQiLCJudSIsIm55YyIsIm56Iiwib2JpIiwib2JzZXJ2ZXIiLCJvZmZpY2UiLCJva2luYXdhIiwib2xheWFuIiwib2xheWFuZ3JvdXAiLCJvbGxvIiwib20iLCJvbWVnYSIsIm9uZSIsIm9uZyIsIm9ubCIsIm9ubGluZSIsIm9vbyIsIm9wZW4iLCJvcmFjbGUiLCJvcmFuZ2UiLCJvcmciLCJvcmdhbmljIiwib3JpZ2lucyIsIm9zYWthIiwib3RzdWthIiwib3R0Iiwib3ZoIiwicGEiLCJwYWdlIiwicGFuYXNvbmljIiwicGFyaXMiLCJwYXJzIiwicGFydG5lcnMiLCJwYXJ0cyIsInBhcnR5IiwicGF5IiwicGNjdyIsInBlIiwicGV0IiwicGYiLCJwZml6ZXIiLCJwZyIsInBoIiwicGhhcm1hY3kiLCJwaGQiLCJwaGlsaXBzIiwicGhvbmUiLCJwaG90byIsInBob3RvZ3JhcGh5IiwicGhvdG9zIiwicGh5c2lvIiwicGljcyIsInBpY3RldCIsInBpY3R1cmVzIiwicGlkIiwicGluIiwicGluZyIsInBpbmsiLCJwaW9uZWVyIiwicGl6emEiLCJwayIsInBsIiwicGxhY2UiLCJwbGF5IiwicGxheXN0YXRpb24iLCJwbHVtYmluZyIsInBsdXMiLCJwbSIsInBuIiwicG5jIiwicG9obCIsInBva2VyIiwicG9saXRpZSIsInBvcm4iLCJwb3N0IiwicHIiLCJwcmF4aSIsInByZXNzIiwicHJpbWUiLCJwcm8iLCJwcm9kIiwicHJvZHVjdGlvbnMiLCJwcm9mIiwicHJvZ3Jlc3NpdmUiLCJwcm9tbyIsInByb3BlcnRpZXMiLCJwcm9wZXJ0eSIsInByb3RlY3Rpb24iLCJwcnUiLCJwcnVkZW50aWFsIiwicHMiLCJwdCIsInB1YiIsInB3IiwicHdjIiwicHkiLCJxYSIsInFwb24iLCJxdWViZWMiLCJxdWVzdCIsInJhY2luZyIsInJhZGlvIiwicmUiLCJyZWFkIiwicmVhbGVzdGF0ZSIsInJlYWx0b3IiLCJyZWFsdHkiLCJyZWNpcGVzIiwicmVkIiwicmVkdW1icmVsbGEiLCJyZWhhYiIsInJlaXNlIiwicmVpc2VuIiwicmVpdCIsInJlbGlhbmNlIiwicmVuIiwicmVudCIsInJlbnRhbHMiLCJyZXBhaXIiLCJyZXBvcnQiLCJyZXB1YmxpY2FuIiwicmVzdCIsInJlc3RhdXJhbnQiLCJyZXZpZXciLCJyZXZpZXdzIiwicmV4cm90aCIsInJpY2giLCJyaWNoYXJkbGkiLCJyaWNvaCIsInJpbCIsInJpbyIsInJpcCIsInJvIiwicm9ja3MiLCJyb2RlbyIsInJvZ2VycyIsInJvb20iLCJycyIsInJzdnAiLCJydSIsInJ1Z2J5IiwicnVociIsInJ1biIsInJ3IiwicndlIiwicnl1a3l1Iiwic2EiLCJzYWFybGFuZCIsInNhZmUiLCJzYWZldHkiLCJzYWt1cmEiLCJzYWxlIiwic2Fsb24iLCJzYW1zY2x1YiIsInNhbXN1bmciLCJzYW5kdmlrIiwic2FuZHZpa2Nvcm9tYW50Iiwic2Fub2ZpIiwic2FwIiwic2FybCIsInNhcyIsInNhdmUiLCJzYXhvIiwic2IiLCJzYmkiLCJzYnMiLCJzYyIsInNjYiIsInNjaGFlZmZsZXIiLCJzY2htaWR0Iiwic2Nob2xhcnNoaXBzIiwic2Nob29sIiwic2NodWxlIiwic2Nod2FyeiIsInNjaWVuY2UiLCJzY290Iiwic2QiLCJzZSIsInNlYXJjaCIsInNlYXQiLCJzZWN1cmUiLCJzZWN1cml0eSIsInNlZWsiLCJzZWxlY3QiLCJzZW5lciIsInNlcnZpY2VzIiwic2V2ZW4iLCJzZXciLCJzZXgiLCJzZXh5Iiwic2ZyIiwic2ciLCJzaCIsInNoYW5ncmlsYSIsInNoYXJwIiwic2hlbGwiLCJzaGlhIiwic2hpa3NoYSIsInNob2VzIiwic2hvcCIsInNob3BwaW5nIiwic2hvdWppIiwic2hvdyIsInNpIiwic2lsayIsInNpbmEiLCJzaW5nbGVzIiwic2l0ZSIsInNqIiwic2siLCJza2kiLCJza2luIiwic2t5Iiwic2t5cGUiLCJzbCIsInNsaW5nIiwic20iLCJzbWFydCIsInNtaWxlIiwic24iLCJzbmNmIiwic28iLCJzb2NjZXIiLCJzb2NpYWwiLCJzb2Z0YmFuayIsInNvZnR3YXJlIiwic29odSIsInNvbGFyIiwic29sdXRpb25zIiwic29uZyIsInNvbnkiLCJzb3kiLCJzcGEiLCJzcGFjZSIsInNwb3J0Iiwic3BvdCIsInNyIiwic3JsIiwic3MiLCJzdCIsInN0YWRhIiwic3RhcGxlcyIsInN0YXIiLCJzdGF0ZWJhbmsiLCJzdGF0ZWZhcm0iLCJzdGMiLCJzdGNncm91cCIsInN0b2NraG9sbSIsInN0b3JhZ2UiLCJzdG9yZSIsInN0cmVhbSIsInN0dWRpbyIsInN0dWR5Iiwic3R5bGUiLCJzdSIsInN1Y2tzIiwic3VwcGxpZXMiLCJzdXBwbHkiLCJzdXBwb3J0Iiwic3VyZiIsInN1cmdlcnkiLCJzdXp1a2kiLCJzdiIsInN3YXRjaCIsInN3aXNzIiwic3giLCJzeSIsInN5ZG5leSIsInN5c3RlbXMiLCJzeiIsInRhYiIsInRhaXBlaSIsInRhbGsiLCJ0YW9iYW8iLCJ0YXJnZXQiLCJ0YXRhbW90b3JzIiwidGF0YXIiLCJ0YXR0b28iLCJ0YXgiLCJ0YXhpIiwidGMiLCJ0Y2kiLCJ0ZCIsInRkayIsInRlYW0iLCJ0ZWNoIiwidGVjaG5vbG9neSIsInRlbCIsInRlbWFzZWsiLCJ0ZW5uaXMiLCJ0ZXZhIiwidGYiLCJ0ZyIsInRoIiwidGhkIiwidGhlYXRlciIsInRoZWF0cmUiLCJ0aWFhIiwidGlja2V0cyIsInRpZW5kYSIsInRpcHMiLCJ0aXJlcyIsInRpcm9sIiwidGoiLCJ0am1heHgiLCJ0angiLCJ0ayIsInRrbWF4eCIsInRsIiwidG0iLCJ0bWFsbCIsInRuIiwidG8iLCJ0b2RheSIsInRva3lvIiwidG9vbHMiLCJ0b3AiLCJ0b3JheSIsInRvc2hpYmEiLCJ0b3RhbCIsInRvdXJzIiwidG93biIsInRveW90YSIsInRveXMiLCJ0ciIsInRyYWRlIiwidHJhZGluZyIsInRyYWluaW5nIiwidHJhdmVsIiwidHJhdmVsZXJzIiwidHJhdmVsZXJzaW5zdXJhbmNlIiwidHJ1c3QiLCJ0cnYiLCJ0dCIsInR1YmUiLCJ0dWkiLCJ0dW5lcyIsInR1c2h1IiwidHYiLCJ0dnMiLCJ0dyIsInR6IiwidWEiLCJ1YmFuayIsInVicyIsInVnIiwidWsiLCJ1bmljb20iLCJ1bml2ZXJzaXR5IiwidW5vIiwidW9sIiwidXBzIiwidXMiLCJ1eSIsInV6IiwidmEiLCJ2YWNhdGlvbnMiLCJ2YW5hIiwidmFuZ3VhcmQiLCJ2YyIsInZlIiwidmVnYXMiLCJ2ZW50dXJlcyIsInZlcmlzaWduIiwidmVybcO2Z2Vuc2JlcmF0ZXIiLCJ2ZXJtw7ZnZW5zYmVyYXR1bmciLCJ2ZXJzaWNoZXJ1bmciLCJ2ZXQiLCJ2ZyIsInZpIiwidmlhamVzIiwidmlkZW8iLCJ2aWciLCJ2aWtpbmciLCJ2aWxsYXMiLCJ2aW4iLCJ2aXAiLCJ2aXJnaW4iLCJ2aXNhIiwidmlzaW9uIiwidml2YSIsInZpdm8iLCJ2bGFhbmRlcmVuIiwidm4iLCJ2b2RrYSIsInZvbHZvIiwidm90ZSIsInZvdGluZyIsInZvdG8iLCJ2b3lhZ2UiLCJ2dSIsIndhbGVzIiwid2FsbWFydCIsIndhbHRlciIsIndhbmciLCJ3YW5nZ291Iiwid2F0Y2giLCJ3YXRjaGVzIiwid2VhdGhlciIsIndlYXRoZXJjaGFubmVsIiwid2ViY2FtIiwid2ViZXIiLCJ3ZWJzaXRlIiwid2VkIiwid2VkZGluZyIsIndlaWJvIiwid2VpciIsIndmIiwid2hvc3dobyIsIndpZW4iLCJ3aWtpIiwid2lsbGlhbWhpbGwiLCJ3aW4iLCJ3aW5kb3dzIiwid2luZSIsIndpbm5lcnMiLCJ3bWUiLCJ3b2x0ZXJza2x1d2VyIiwid29vZHNpZGUiLCJ3b3JrIiwid29ya3MiLCJ3b3JsZCIsIndvdyIsIndzIiwid3RjIiwid3RmIiwieGJveCIsInhlcm94IiwieGlodWFuIiwieGluIiwieHh4IiwieHl6IiwieWFjaHRzIiwieWFob28iLCJ5YW1heHVuIiwieWFuZGV4IiwieWUiLCJ5b2RvYmFzaGkiLCJ5b2dhIiwieW9rb2hhbWEiLCJ5b3UiLCJ5b3V0dWJlIiwieXQiLCJ5dW4iLCJ6YSIsInphcHBvcyIsInphcmEiLCJ6ZXJvIiwiemlwIiwiem0iLCJ6b25lIiwienVlcmljaCIsInp3IiwizrXOuyIsIs61z4UiLCLQsdCzIiwi0LHQtdC7Iiwi0LTQtdGC0LgiLCLQtdGOIiwi0LrQsNGC0L7Qu9C40LoiLCLQutC+0LwiLCLQvNC60LQiLCLQvNC+0L0iLCLQvNC+0YHQutCy0LAiLCLQvtC90LvQsNC50L0iLCLQvtGA0LMiLCLRgNGD0YEiLCLRgNGEIiwi0YHQsNC50YIiLCLRgdGA0LEiLCLRg9C60YAiLCLSm9Cw0LciLCLVsNWh1bUiLCLXmdep16jXkNecIiwi16fXldedIiwi2KfYqNmI2LjYqNmKIiwi2KfYsdin2YXZg9mIIiwi2KfZhNin2LHYr9mGIiwi2KfZhNio2K3YsdmK2YYiLCLYp9mE2KzYstin2KbYsSIsItin2YTYs9i52YjYr9mK2KkiLCLYp9mE2LnZhNmK2KfZhiIsItin2YTZhdi62LHYqCIsItin2YXYp9ix2KfYqiIsItin24zYsdin2YYiLCLYqNin2LHYqiIsItio2KfYstin2LEiLCLYqNmK2KrZgyIsItio2r7Yp9ix2KoiLCLYqtmI2YbYsyIsItiz2YjYr9in2YYiLCLYs9mI2LHZitipIiwi2LTYqNmD2KkiLCLYudix2KfZgiIsIti52LHYqCIsIti52YXYp9mGIiwi2YHZhNiz2LfZitmGIiwi2YLYt9ixIiwi2YPYp9ir2YjZhNmK2YMiLCLZg9mI2YUiLCLZhdi12LEiLCLZhdmE2YrYs9mK2KciLCLZhdmI2LHZitiq2KfZhtmK2KciLCLZhdmI2YLYuSIsItmH2YXYsdin2YciLCLZvtin2qnYs9iq2KfZhiIsItqA2KfYsdiqIiwi4KSV4KWJ4KSuIiwi4KSo4KWH4KSfIiwi4KSt4KS+4KSw4KSkIiwi4KSt4KS+4KSw4KSk4KSu4KWNIiwi4KSt4KS+4KSw4KWL4KSkIiwi4KS44KSC4KSX4KSg4KSoIiwi4Kas4Ka+4KaC4Kay4Ka+Iiwi4Kat4Ka+4Kaw4KakIiwi4Kat4Ka+4Kew4KakIiwi4Kit4Ki+4Kiw4KikIiwi4Kqt4Kq+4Kqw4KqkIiwi4Kyt4Ky+4Kyw4KykIiwi4K6H4K6o4K+N4K6k4K6/4K6v4K6+Iiwi4K6H4K6y4K6Z4K+N4K6V4K+IIiwi4K6a4K6/4K6Z4K+N4K6V4K6q4K+N4K6q4K+C4K6w4K+NIiwi4LCt4LC+4LCw4LCk4LGNIiwi4LKt4LK+4LKw4LKkIiwi4LSt4LS+4LSw4LSk4LSCIiwi4La94LaC4Laa4LePIiwi4LiE4Lit4LihIiwi4LmE4LiX4LiiIiwi4Lql4Lqy4LqnIiwi4YOS4YOUIiwi44G/44KT44GqIiwi44Ki44Oe44K+44OzIiwi44Kv44Op44Km44OJIiwi44Kw44O844Kw44OrIiwi44Kz44OgIiwi44K544OI44KiIiwi44K744O844OrIiwi44OV44Kh44OD44K344On44OzIiwi44Od44Kk44Oz44OIIiwi5LiW55WMIiwi5Lit5L+hIiwi5Lit5Zu9Iiwi5Lit5ZyLIiwi5Lit5paH572RIiwi5Lqa6ams6YCKIiwi5LyB5LiaIiwi5L2b5bGxIiwi5L+h5oGvIiwi5YGl5bq3Iiwi5YWr5Y2mIiwi5YWs5Y+4Iiwi5YWs55uKIiwi5Y+w5rm+Iiwi5Y+w54GjIiwi5ZWG5Z+OIiwi5ZWG5bqXIiwi5ZWG5qCHIiwi5ZiJ6YeMIiwi5ZiJ6YeM5aSn6YWS5bqXIiwi5Zyo57q/Iiwi5aSn5ou/Iiwi5aSp5Li75pWZIiwi5aix5LmQIiwi5a626Zu7Iiwi5bm/5LicIiwi5b6u5Y2aIiwi5oWI5ZaEIiwi5oiR54ix5L2gIiwi5omL5py6Iiwi5oub6IGYIiwi5pS/5YqhIiwi5pS/5bqcIiwi5paw5Yqg5Z2hIiwi5paw6Ze7Iiwi5pe25bCaIiwi5pu457GNIiwi5py65p6EIiwi5reh6ams6ZShIiwi5ri45oiPIiwi5r6z6ZaAIiwi54K555yLIiwi56e75YqoIiwi57uE57uH5py65p6EIiwi572R5Z2AIiwi572R5bqXIiwi572R56uZIiwi572R57ucIiwi6IGU6YCaIiwi6LC35q2MIiwi6LSt54mpIiwi6YCa6LKpIiwi6ZuG5ZuiIiwi6Zu76KiK55uI56eRIiwi6aOe5Yip5rWmIiwi6aOf5ZOBIiwi6aSQ5Y6FIiwi6aaZ5qC86YeM5ouJIiwi6aaZ5rivIiwi64u364S3Iiwi64u37Lu0Iiwi7IK87ISxIiwi7ZWc6rWtIl1gKSx5Zj0vXlstISMkJSYnKisvMC05PT9BLVpeX2EtemB7fH1+XShcLj9bLSEjJCUmJyorLzAtOT0/QS1aXl9hLXpge3x9fl0pKkBbYS16QS1aMC05XSgtKlwuP1thLXpBLVowLTldKSpcLlthLXpBLVpdKC0/W2EtekEtWjAtOV0pKyQvLGJmPS8oKD86d3d3Lik/W15ccy5dK1wuW15ccy9dK1wvW15ccy5dKykvLHhmPS9bJjw+IiddL2csU2Y9ZT0+e2xldCB0PXsiJiI6YCZhbXA7YCwiPCI6YCZsdDtgLCI+IjpgJmd0O2AsJyInOmAmcXVvdDtgLCInIjpgJiMzOTtgfSxuPVJlZ0V4cCh4Zi5zb3VyY2UpO3JldHVybiBlJiZuLnRlc3QoZSk/ZS5yZXBsYWNlKHhmLGU9PnRbZV0pOmV8fGBgfSxDZj1gb3ZlcmZsb3c6IGhpZGRlbjsgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94OyAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOyAtd2Via2l0LWxpbmUtY2xhbXA6IDE7IGxpbmUtY2xhbXA6IDE7IHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtgLHdmPW5ldyBfZigpLnRsZHModmYpLnNldCh7ZnV6enlJUDohMH0pLFRmPW5ldyBfZigpLnRsZHModmYpLEVmPShlLHQsbik9PntsZXQgcj1CKCkubG9jYXRpb24uaG9zdG5hbWU7cmV0dXJuYDxhIGhyZWY9IiR7ZX0iIHRhcmdldD0iJHtyLmxlbmd0aD4wJiZlLmluY2x1ZGVzKHIpP2BfcGFyZW50YDpgX2JsYW5rYH0iIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciIgdGl0bGU9IiR7ZX0iIHN0eWxlPSIke24/LmNsYW1wJiYhbj8ucmVwbGFjZVRleHQ/Q2Y6YGB9Ij4ke3R9PC9hPmB9LERmPShlLHQpPT57aWYoZT09PWBgKXJldHVybiBlO2xldCBuPXdmLm1hdGNoKGUpO2lmKCFuKXJldHVybiBTZihlKTtsZXQgcj1gYCxpPTA7cmV0dXJuIG4uZm9yRWFjaChuPT57bGV0IGE9YGAsbz1gYCxzPU9mKGUsbiksYz10Py5jbGFtcCYmbi50ZXh0Lmxlbmd0aD4zMCYmIXM7bi5pbmRleD5pJiYoYT1lLnN1YnN0cmluZyhpLG4uaW5kZXgpKSxvPUVmKG4udXJsLG4udGV4dCx7Li4udCxjbGFtcDpjfSksaT1uLmxhc3RJbmRleCxzJiYoYT1hLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLGkrPTEpLGMmJiFrZihlLG4pJiYobz1gXG4ke299XG5gLGE9YS50cmltRW5kKCksZVtpXT8ubWF0Y2goL1xzLykmJihpKz0xKSkscis9U2YoYSkrb30pLGUubGVuZ3RoPmkmJihyKz1TZihlLnN1YnN0cmluZyhpKSkpLHJ9LE9mPShlLHQpPT5lW3QuaW5kZXgtMV09PT1gImAmJmVbdC5sYXN0SW5kZXhdPT09YCJgLGtmPShlLHQpPT4hISh0LmluZGV4PD0xJiZlLnN1YnN0cmluZyh0Lmxhc3RJbmRleCx0Lmxhc3RJbmRleCszKS5tYXRjaCgvW1xuXHJdKy8pfHxlLnN1YnN0cmluZyh0LmluZGV4LTMsdC5pbmRleCkubWF0Y2goL1tcblxyXSsvKSYmZS5zdWJzdHJpbmcodC5sYXN0SW5kZXgsdC5sYXN0SW5kZXgrMykubWF0Y2goL1tcblxyXSsvKXx8ZS5zdWJzdHJpbmcodC5pbmRleC0zLHQuaW5kZXgpLm1hdGNoKC9bXG5ccl0rLykmJnQubGFzdEluZGV4PmUubGVuZ3RoLTN8fHQuaW5kZXg8PTEmJnQubGFzdEluZGV4Pj1lLmxlbmd0aC0yKSxBZj1lPT5lLnJlcGxhY2UoL15odHRwcz86XC9cLy8sYGApLnJlcGxhY2UoL153d3dcLi8sYGApLnJlcGxhY2UoL1wvKyQvLGBgKS50b0xvd2VyQ2FzZSgpLGpmPWU9PntsZXQgdD1bYG1haWx0bzpgLGBmdHA6YCxgLy9gXSxuPVRmLm1hdGNoKGUpO2lmKCFuKXJldHVybiBudWxsO2xldCByPW5ldyBTZXQ7cmV0dXJuIG4uZmlsdGVyKGU9PntpZih0LmluY2x1ZGVzKGUuc2NoZW1hKSlyZXR1cm4hMTtsZXQgbj1BZihlLnVybCk7cmV0dXJuIHIuaGFzKG4pPyExOihyLmFkZChuKSwhMCl9KX0sTWY9KCk9PlBvKGBjYXJkc2ApLE5mPWU9PntGbyh7Li4uZX0sYGNhcmRzYCl9LFBmPWFzeW5jIGU9PntsZXQgdD1uZXcgSGVhZGVycyx7d2lkZ2V0QXBpVXJsOm59PVYuZ2V0T3B0aW9ucygpO3QuYXBwZW5kKGBDb250ZW50LVR5cGVgLGBhcHBsaWNhdGlvbi9qc29uYCk7bGV0IHI9SlNPTi5zdHJpbmdpZnkoe2xpbmtzOmV9KTt0cnl7bGV0IGU9YXdhaXQgZmV0Y2goYCR7bn0vbGlua3MvcHJldmlld2Ase21ldGhvZDpgUE9TVGAsaGVhZGVyczp0LGJvZHk6cn0pO3JldHVybiBlLm9rJiZlLmpzb24/YXdhaXQgZS5qc29uKCk6bnVsbH1jYXRjaHtyZXR1cm4gbnVsbH19LEZmPWU9PmUuZmluZChlPT5lLnR5cGU9PT1gb3Blbl91cmxgKT8udmFsdWV8fGBgLElmPWU9PntsZXQgdD1lLmZpbHRlcihlPT5lLnRpdGxlJiZlLmltYWdlJiYhUmYoRmYoZS5hY3Rpb25zKSkpO3JldHVybiB0Lmxlbmd0aCYmZS5sZW5ndGg+MT9lOnQubGVuZ3RoPT09MT90OltdfSxMZj1lPT57bGV0IHQ9bmV3IERhdGUoKS5nZXRUaW1lKCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2gobj0+eyghZVtuXS5leHBpcmF0aW9ufHxlW25dLmV4cGlyYXRpb24mJmVbbl0uZXhwaXJhdGlvbjx0KSYmZGVsZXRlIGVbbl19KSxlfSxSZj1lPT57bGV0e2FjY2VwdGVkRmlsZUV4dGVuc2lvbnM6dH09QShibCksbj1lLm1hdGNoKC8oXC4pKFteLl17Myw0fSkkL20pO3JldHVybiBuJiZuWzJdJiZ0LmluY2x1ZGVzKG5bMl0pfSx6Zj1hc3luYyBlPT57dHJ5e2F3YWl0IHEuZ2V0Q2xpZW50KCkubGlua09wZW5lZCh7dXJsOmV9KX1jYXRjaChlKXtqbyhgU2VuZGluZyBsaW5rIG9wZW5lZCBhbmFseXRpY3MgZXZlbnQgZmFpbGVkYCxTdHJpbmcoZSkpfX0sQmY9KGUsdCk9PntpZighdClyZXR1cm47bGV0IG49YXN5bmMgbj0+e2xldCByPW4udGFyZ2V0LmNsb3Nlc3QoYGFgKTtyJiZlLmNvbnRhaW5zKHIpJiZ0JiZhd2FpdCB6ZihyLmhyZWYpfSxyPWU9PnZvaWQgbihlKSxpPWU9PntlLmJ1dHRvbiE9PTImJm4oZSl9LGE9ZT0+dm9pZCBuKGUpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoYGNsaWNrYCxyKSxlLmFkZEV2ZW50TGlzdGVuZXIoYGF1eGNsaWNrYCxpKSxlLmFkZEV2ZW50TGlzdGVuZXIoYGNvbnRleHRtZW51YCxhKSx7ZGVzdHJveSgpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2xpY2tgLHIpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYXV4Y2xpY2tgLGkpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY29udGV4dG1lbnVgLGEpfX19LFZmPSExLEhmPU8oKSxVZj1PKCExKSxXZj1PKCExKSxHZj0oZSx0LG4pPT57bGV0IHI9e30saT1uZXcgRGF0ZSgpLmdldFRpbWUoKStNZDtlLmZvckVhY2goKGUsbik9PnJbZV09e2V4cGlyYXRpb246aSxjYXJkOnRbbl19KTtsZXQgYT17Li4ubiwuLi5yfTtIZi5zZXQoYSksTmYoYSl9LEtmPWFzeW5jKGUsdCxuPSExKT0+e2xldCByPVtdLGk9e3R5cGU6YGNhcmRzYCxsYXlvdXQ6YGNhcm91c2VsYCxpdGVtczpbXX07VmZ8fD0oSGYuc2V0KE1mKCkpLCEwKTtsZXQgYT1qZihlKTtpZighYSlyZXR1cm4gbnVsbDtsZXQgbz1MZihBKEhmKSkscz1bXTtpZihhLmZvckVhY2godD0+e09mKGUsdCl8fChvW3QudXJsXT9yLnB1c2gob1t0LnVybF0uY2FyZCk6cy5wdXNoKHQudXJsKSl9KSxzLmxlbmd0aD4wKXt0JiZVZi5zZXQoITApLG4mJldmLnNldCghMCk7bGV0IGU9YXdhaXQgUGYocyk7ZSYmKEdmKHMsZSxvKSxyPVsuLi5yLC4uLmVdKX1yZXR1cm4gaS5pdGVtcz1JZihyKSxVZi5zZXQoITEpLFdmLnNldCghMSksaS5pdGVtcy5sZW5ndGg+MD9pOm51bGx9LHFmPWZ1bmN0aW9uKGUpe3JldHVybiBlLkNvbnRhY3RNZXNzYWdlPWBjb250YWN0LW1lc3NhZ2VgLGUuQWdlbnRNZXNzYWdlPWBhZ2VudC1tZXNzYWdlYCxlLkJvdE1lc3NhZ2U9YGJvdC1tZXNzYWdlYCxlLkJvdFJlcGxpZXM9YGJvdC1yZXBsaWVzYCxlfSh7fSksSmY9YXN5bmMoe3RleHQ6ZSxxdWlja1JlcGx5OnR9KT0+e3RyeXtsZXQgbj1CKCkubG9jYXRpb24uaHJlZjtyZXR1cm4gYXdhaXQgcS5nZXRDbGllbnQoKS5jaGF0TWVzc2FnZSh7Y29udGVudDp7dHlwZTpHLk1lc3NhZ2VDb250ZW50VHlwZS5UZXh0LHRleHQ6ZX0scXVpY2tSZXBseTp0LHBhZ2VVcmw6bn0pPz9udWxsfWNhdGNoe3JldHVybiBudWxsfX0sWWY9ZT0+ZS5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Cb3R8fGUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuVHJpZ2dlcixYZj1lPT5lLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLlN5c3RlbSxaZj1lPT5lLnR5cGU9PT1HLk1lc3NhZ2VUeXBlLk5vdGUsUWY9ZT0+IWUuZGVsZXRlZEF0JiYhWmYoZSkmJihlLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLkFnZW50fHxZZihlKSksJGY9ZT0+YGh0bWxgaW4gZSYmISFlLmh0bWwsZXA9ZT0+YHRleHRgaW4gZSYmISFlLnRleHQsdHA9KGUsdCk9Pm5ldyBEYXRlKGUuY3JlYXRlZEF0KS5nZXRUaW1lKCktbmV3IERhdGUodC5jcmVhdGVkQXQpLmdldFRpbWUoKSxucD0oZSx0KT0+dD09PXFmLkJvdFJlcGxpZXM/YCR7ZS5pZH0tcmVwbGllc2A6ZS5pZCxycD1lPT57bGV0IHQ9e2lzUmlnaHQ6ITEsaXNMZWZ0OiExfSxuPXtpc1ByaW1hcnk6ITEsaXNTZWNvbmRhcnk6ITF9O3N3aXRjaChlKXtjYXNlIHFmLkNvbnRhY3RNZXNzYWdlOnQuaXNSaWdodD0hMCxuLmlzUHJpbWFyeT0hMDticmVhaztkZWZhdWx0OnQuaXNMZWZ0PSEwLG4uaXNTZWNvbmRhcnk9ITB9cmV0dXJue2FsaWduOnQsdmFyaWFudDpufX0saXA9ZT0+ISFlLmFnZW50SWR8fGUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQm90JiZlLmNvbnRlbnQudHlwZSE9PUcuTWVzc2FnZUNvbnRlbnRUeXBlLlRpY2tldEZvcm0sYXA9KGUsdCk9PmUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuU3lzdGVtfHx0PT09cWYuQm90UmVwbGllc3x8ZS5jb250ZW50LnR5cGU9PT1HLk1lc3NhZ2VDb250ZW50VHlwZS5UaWNrZXRGb3JtLG9wPWU9PntsZXQgdD1bXSxuPW51bGwscj1udWxsO2ZvcihsZXQgaSBvZiBlKXtpZihpLmNvbnRlbnQudHlwZT09PUcuTWVzc2FnZUNvbnRlbnRUeXBlLlJhdGVGb3JtJiYoaS5jb250ZW50LmRhdGEudGFyZ2V0PT09Ry5SYXRpbmdUYXJnZXQuQWkmJiFKcCgpfHxpLmNvbnRlbnQuZGF0YS50YXJnZXQ9PT1HLlJhdGluZ1RhcmdldC5BZ2VudCYmIXFwKCkpKWNvbnRpbnVlO24mJiFocChpLG4pJiYodC5wdXNoKG4pLG49bnVsbCxyPW51bGwpLG58fD1zcChpKTtsZXQgZT1scChpLG4pO2lmKHIpe2xldCB0PV9wKHIpLG49ZHAocik7ZS5uZWlnaGJvcnMuaGFzVG9wPXQsbi5hbnkubmVpZ2hib3JzLmhhc0JvdHRvbT10LG4uYXR0YWNobWVudENvbnRleHQmJihuLmF0dGFjaG1lbnRDb250ZXh0LmV4dHJhU3BhY2VzLmhhc0JvdHRvbT15cChuLmF0dGFjaG1lbnRDb250ZXh0LmF0dGFjaG1lbnQpKX1sZXQgYT1mcChpKTtpZihhJiZ1cChhLGUsciksbi5tZXNzYWdlc0NvbnRleHQucHVzaChlKSxyPWUsKFlmKGkpfHxYZihpKSkmJlRwKGkpKXt0LnB1c2gobik7bGV0IGU9Y3AoaSk7ZS5tZXNzYWdlc0NvbnRleHQucHVzaChscChpLGUpKSx0LnB1c2goZSksbj1udWxsfX1yZXR1cm4gbiYmdC5wdXNoKG4pLHR9LHNwPWU9PntsZXQgdD1ncChlKSxuPWUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQm90fHxlLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLlRyaWdnZXIse2FsaWduOnIsdmFyaWFudDppfT1ycCh0KTtyZXR1cm57dHlwZTp0LGlzQm90Om4saWQ6bnAoZSx0KSxkYXRlOmUuY3JlYXRlZEF0LGFnZW50SWQ6ZS5hZ2VudElkLGFsaWduOnIsdmFyaWFudDppLG1lc3NhZ2VzQ29udGV4dDpbXSxzaG93QXZhdGFyOmlwKGUpLHVzZUZ1bGxXaWR0aDphcChlLHQpfX0sY3A9ZT0+e2xldCB0PXFmLkJvdFJlcGxpZXMse2FsaWduOm4sdmFyaWFudDpyfT1ycCh0KTtyZXR1cm57dHlwZTpxZi5Cb3RSZXBsaWVzLGlzQm90OiEwLGlkOm5wKGUsdCksZGF0ZTplLmNyZWF0ZWRBdCxhZ2VudElkOmUuYWdlbnRJZCxhbGlnbjpuLHZhcmlhbnQ6cixtZXNzYWdlc0NvbnRleHQ6W10sc2hvd0F2YXRhcjohMSx1c2VGdWxsV2lkdGg6YXAoZSx0KX19LGxwPShlLHQpPT4oe2dyb3VwOnQsbWVzc2FnZTplLG5laWdoYm9yczp7aGFzVG9wOiExLGhhc0JvdHRvbTohMX0sYXR0YWNobWVudHNDb250ZXh0OltdfSksdXA9KGUsdCxuKT0+e2xldCByPW51bGw7Zm9yKGxldCBpIG9mIGUpe2xldCBlPXZwKGkpLGE9e2hhc1RvcDohMSxoYXNCb3R0b206ITF9LG89eXAoaSkscz17aGFzVG9wOm8saGFzQm90dG9tOiExfTtpZihyKXtsZXQgdD12cChyLmF0dGFjaG1lbnQpLG49eXAoci5hdHRhY2htZW50KTtyLm5laWdoYm9ycy5oYXNCb3R0b209dCYmZSxhLmhhc1RvcD10JiZlLHIuZXh0cmFTcGFjZXMuaGFzQm90dG9tPSFvJiZufWVsc2UgaWYodC5uZWlnaGJvcnMuaGFzQm90dG9tPWUsYS5oYXNUb3A9ZSxwcCh0Lm1lc3NhZ2UpKWlmKGEuaGFzVG9wPSExLHQubmVpZ2hib3JzLmhhc1RvcD0hMSx0Lm5laWdoYm9ycy5oYXNCb3R0b209ITEsbil7bGV0IHQ9X3Aobikscj1kcChuKTthLmhhc1RvcD10JiZlLHIuYW55Lm5laWdoYm9ycy5oYXNCb3R0b209dCYmZTtsZXQgaT1yLmF0dGFjaG1lbnRDb250ZXh0O2kmJihpLmV4dHJhU3BhY2VzLmhhc0JvdHRvbT0hbyYmeXAoaS5hdHRhY2htZW50KSl9ZWxzZSBzLmhhc1RvcD0hMTtsZXQgYz17YXR0YWNobWVudDppLG5laWdoYm9yczphLGV4dHJhU3BhY2VzOnMsbWVzc2FnZUNvbnRleHQ6dH07dC5hdHRhY2htZW50c0NvbnRleHQucHVzaChjKSxyPXsuLi5jfX19LGRwPWU9PntsZXQgdD1TZChlLmF0dGFjaG1lbnRzQ29udGV4dCl8fHZvaWQgMDtyZXR1cm57YXR0YWNobWVudENvbnRleHQ6dCxhbnk6dHx8ZX19LGZwPWU9PmU/ZS5jb250ZW50Py50eXBlPT09Ry5NZXNzYWdlQ29udGVudFR5cGUuVXBsb2FkP1tlLmNvbnRlbnQuZGF0YV06ZS5hdHRhY2htZW50czpbXSxwcD1lPT4hZS5jb250ZW50LnRleHQsbXA9ZT0+e3RyeXtsZXQgdD1CKCkubG9jYXRpb24uaG9zdG5hbWUsbj1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGUsYHRleHQvaHRtbGApO3JldHVybiBuLnF1ZXJ5U2VsZWN0b3JBbGwoYGFbaHJlZl1gKS5mb3JFYWNoKGU9PntsZXQgbj1lLmdldEF0dHJpYnV0ZShgaHJlZmApfHxgYDtuPW4ucmVwbGFjZSgvXmh0dHBzPzpcL1wvIj9odHRwcz86XC9cLy8sYGh0dHBzOi8vYCksbj1uLnJlcGxhY2UoL14iK3wiKyQvZyxgYCksZS5zZXRBdHRyaWJ1dGUoYGhyZWZgLG4pO2xldCByPXQubGVuZ3RoPjAmJm4uaW5jbHVkZXModCk7ZS5oYXNBdHRyaWJ1dGUoYHRhcmdldGApfHxlLnNldEF0dHJpYnV0ZShgdGFyZ2V0YCxyP2BfcGFyZW50YDpgX2JsYW5rYCksZS5oYXNBdHRyaWJ1dGUoYHJlbGApfHxlLnNldEF0dHJpYnV0ZShgcmVsYCxgbm9vcGVuZXIgbm9yZWZlcnJlcmApfSksbi5ib2R5LmlubmVySFRNTH1jYXRjaHtyZXR1cm4gZX19LGhwPShlLHQpPT57bGV0IG49Z3AoZSkscj1uPT09cWYuQWdlbnRNZXNzYWdlJiZlLmFnZW50SWQ9PT10LmFnZW50SWQsaT1uPT09cWYuQ29udGFjdE1lc3NhZ2UsYT1lLnN1YlR5cGUhPT1HLk1lc3NhZ2VTdWJUeXBlLkJvdHx8KGUuY29udGVudC5xdWlja1JlcGxpZXN8fFtdKS5sZW5ndGg9PT0wO3JldHVybiB0LnR5cGU9PT1uJiYocnx8aSkmJmEmJklkKHQuZGF0ZSxlLmNyZWF0ZWRBdCl9LGdwPWU9Pntzd2l0Y2goZS5zdWJUeXBlKXtjYXNlIEcuTWVzc2FnZVN1YlR5cGUuQWdlbnQ6cmV0dXJuIHFmLkFnZW50TWVzc2FnZTtjYXNlIEcuTWVzc2FnZVN1YlR5cGUuQ29udGFjdDpyZXR1cm4gcWYuQ29udGFjdE1lc3NhZ2U7Y2FzZSBHLk1lc3NhZ2VTdWJUeXBlLkJvdDpyZXR1cm4gcWYuQm90TWVzc2FnZX1yZXR1cm4gbnVsbH0sX3A9ZT0+e2xldCB0PWUuYXR0YWNobWVudHNDb250ZXh0Lmxlbmd0aDtyZXR1cm4hKHQ+MCYmZS5hdHRhY2htZW50c0NvbnRleHRbdC0xXS5hdHRhY2htZW50LnR5cGU9PT1HLkF0dGFjaG1lbnRUeXBlLkZpbGUpfSx2cD1lPT5lLnR5cGUhPT1HLkF0dGFjaG1lbnRUeXBlLkZpbGUmJmUudHlwZSE9PUcuQXR0YWNobWVudFR5cGUuQ2FyZHMseXA9ZT0+ISFlJiYoZS50eXBlPT09Ry5BdHRhY2htZW50VHlwZS5GaWxlfHxlLnR5cGU9PT1HLkF0dGFjaG1lbnRUeXBlLkNhcmRzKSxicD0oKT0+e2xldCBlPWdfKCk7ZS52b2x1bWU9cWMsZS5hZGRFdmVudExpc3RlbmVyKGBjYW5wbGF5dGhyb3VnaGAsKCk9PntlLnBsYXkoKS5jYXRjaChlPT5IKGBDb3VsZCBub3QgcGxheSBtZXNzYWdlIHNvdW5kLmAsZSkpfSl9LHhwPUtkKGJwLEpjKSxTcD1lPT5lLmZpbHRlcihlPT5lLnR5cGU9PT1HLk1lc3NhZ2VUeXBlLk1lc3NhZ2UmJihlLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLkFnZW50fHxlLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLkNvbnRhY3QpKSxDcD0oZSx0PSEwKT0+e2xldCBuPWUucmVkdWNlKChlLHQpPT4oZS5wdXNoKHQpLHQuY29udGVudC50eXBlPT09Ry5NZXNzYWdlQ29udGVudFR5cGUuQ2hhdENsb3NlfHx0LmNvbnRlbnQudHlwZT09PUcuTWVzc2FnZUNvbnRlbnRUeXBlLkNoYXRWaXNpdG9yQ2xvc2U/W106ZSksW10pO3JldHVybiB0P24uZmlsdGVyKGU9PmUudHlwZT09PUcuTWVzc2FnZVR5cGUuTWVzc2FnZSYmZS5zdWJUeXBlIT09Ry5NZXNzYWdlU3ViVHlwZS5TeXN0ZW0pOm59LHdwPWU9PntsZXQgdD17fTtyZXR1cm4gZS5mb3JFYWNoKGU9PntlLnRyaWdnZXImJih0W2UudHJpZ2dlci5pZF09e3NlbnQ6ITB9KX0pLHR9LFRwPWU9PiEhKGUuY29udGVudC5xdWlja1JlcGxpZXMmJmUuY29udGVudC5xdWlja1JlcGxpZXMubGVuZ3RoPjApLEVwPWFzeW5jKGUsdD0hMSk9PntsZXQgbj1RZihlKSxyPSF0JiZuO2lmKGBodG1sYGluIGUuY29udGVudCYmZS5jb250ZW50Lmh0bWwmJihlLmNvbnRlbnQuaHRtbD1tcChlLmNvbnRlbnQuaHRtbCkpLGUuY29udGVudD8udGV4dCYmVi5nZXRPcHRpb25zKCkudXJsQ2FyZHNFbmFibGVkJiZlLmF0dGFjaG1lbnRzLmxlbmd0aD09PTApe2xldCB0PWF3YWl0IEtmKGUuY29udGVudC50ZXh0LGUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQ29udGFjdCxyKTt0JiZ0Lml0ZW1zLmxlbmd0aD4wJiZlLmF0dGFjaG1lbnRzLnB1c2godCl9cmV0dXJuIG5kLnNldCghMSksZX0sRHA9YXN5bmMgZT0+KFYuZ2V0T3B0aW9ucygpLnVybENhcmRzRW5hYmxlZCYmYXdhaXQgUHJvbWlzZS5hbGwoZS5tYXAoYXN5bmMgZT0+YXdhaXQgRXAoZSkpKSxlKSxPcD1lPT5lLmZpbmRJbmRleChlPT5lLm1lc3NhZ2UuY2hhbm5lbC50eXBlPT09YGVtYWlsYCk+LTEsa3A9ZT0+ZS5maW5kKGU9PmUubWVzc2FnZT8udHJpZ2dlcj8uaWRlbnRpdHlJZCk/Lm1lc3NhZ2U/LnRyaWdnZXI/LmlkZW50aXR5SWQsSj0oKCk9PntsZXQgZT1PKHt9KSx7c3Vic2NyaWJlOnQsdXBkYXRlOm4sc2V0OnJ9PWUsaT1hc3luYyBlPT57cihybChgaWRgLGF3YWl0IERwKGUpKSl9LGE9YXN5bmMgZT0+e2xldCB0PWF3YWl0IEVwKGUpO1lmKGUpJiZNcC5zZXQoITEpLG4obj0+KHsuLi5uLFtlLmlkXTp0fSkpLGpwKHQpfSxvPWFzeW5jIGU9PntpZighQShScCkuc29tZSh0PT50LmlkPT09ZS5pZCkpcmV0dXJuO2xldCB0PUEoQnApPT09ZS5pZD9hd2FpdCBFcChlLCEwKTplO24obj0+KHsuLi5uLFtlLmlkXTp0fSkpfTtyZXR1cm57c3Vic2NyaWJlOnQsc2V0TWVzc2FnZXM6aSxhZGRNZXNzYWdlOmEsZGVsZXRlTWVzc2FnZTplPT57bih0PT57bGV0e1tlXTpuLC4uLnJ9PXQ7cmV0dXJuIHJ9KX0sbWFya01lc3NhZ2VBc0RlbGV0ZWQ6KHQscik9PntsZXQgaT1BKGUpW3RdO2kmJm4oZT0+KHsuLi5lLFtpLmlkXTp7Li4uaSxkZWxldGVkQXQ6cj8/bmV3IERhdGUoKS50b0lTT1N0cmluZygpfX0pKX0scmVwbGFjZU1lc3NhZ2U6byx1cGRhdGVNZXNzYWdlUmF0aW5nOmU9PntBKGlkKT09PWUuY29udGVudC5kYXRhPy50YXJnZXQmJnhkKCksbih0PT4hZXx8ZS5jb250ZW50LnR5cGUhPT1HLk1lc3NhZ2VDb250ZW50VHlwZS5SYXRlRm9ybT97Li4udH06KHRbZS5pZF18fFlwKGUuaWQpLHsuLi50LFtlLmlkXTplfSkpfSxzZW5kTWVzc2FnZTphc3luYyhlLHQpPT57S3Auc2V0KGUpO2xldCBuPWF3YWl0IEpmKHt0ZXh0OmV9KTtuJiYoS3Auc2V0KG51bGwpLGF3YWl0IGEobiksei5lbWl0KGBtZXNzYWdlU2VudGAsbiksd2goQSgkdSkpKSxhd2FpdCBQcm9taXNlLmFsbCh0Lm1hcChlPT5PZChlKSkpfSxzZW5kQm90UmVwbHk6YXN5bmMoZSx0LG4pPT57bGV0IHI9YXdhaXQgSmYoe3RleHQ6dCxxdWlja1JlcGx5OntyZXBseVRvOmUscGF5bG9hZDpufX0pO24uaXNHb0JhY2tCdXR0b258fEptKHQpLHImJmF3YWl0IG8ocil9LGNsZWFyTWVzc2FnZXM6KCk9PntyKHt9KX19fSkoKSxBcD1lPT57QShSXyl8fElfKCksUV8oKSxzZXRUaW1lb3V0KCgpPT57Si5hZGRNZXNzYWdlKGUpLCRfKCl9LDE2MDApfSxqcD1lPT57ZSYmQShEXykmJkEoUl8pJiYhKEEoa18pJiZBKFgpKSYmX18oZSkmJnhwKCl9LE1wPU8oITEpLE5wPWsoW0pdLChbZV0pPT57bGV0IHQ9T2JqZWN0LnZhbHVlcyhlKS5maWx0ZXIoUWYpO3JldHVybiB0P1NkKHQuc29ydCgoZSx0KT0+bmV3IERhdGUoZS5jcmVhdGVkQXQpLmdldFRpbWUoKS1uZXcgRGF0ZSh0LmNyZWF0ZWRBdCkuZ2V0VGltZSgpKSk6bnVsbH0pLFBwPWsoW0oscmRdLChbZSx0XSk9PntsZXQgbj1PYmplY3QudmFsdWVzKGUpLmZpbHRlcihRZik7cmV0dXJuIHQ/bi5maWx0ZXIoZT0+bmV3IERhdGUoZS5jcmVhdGVkQXQpPm5ldyBEYXRlKHQpKTpufSksRnA9ayhbUHBdLChbZV0pPT5TZChlKSksSXA9ayhbUHBdLChbZV0pPT5lLmxlbmd0aCksTHA9ayhbSXBdLChbZV0pPT5lPjApLFJwPWsoW0pdLChbZV0pPT5PYmplY3QudmFsdWVzKGUpLnNvcnQodHApKSx6cD1rKFtScF0sKFtlXSk9Pm9wKGUpKSxCcD1rKFtScF0sKFtlXSk9PlNkKGUpPy5pZD8/bnVsbCksVnA9ayhbSl0sKFtlXSk9PlNkKE9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKGU9PnR5cGVvZiBlLndpZGdldE9wdGlvbnM/LmRpc2FibGVJbnB1dD09YGJvb2xlYW5gKSk/LndpZGdldE9wdGlvbnM/LmRpc2FibGVJbnB1dD8/ITEpLEhwPWsoW0pdLChbZV0pPT5PYmplY3QudmFsdWVzKGUpLmZpbHRlcihlPT5lLnN1YlR5cGU9PT1gY29udGFjdGB8fGUuc3ViVHlwZT09PWBhZ2VudGApLmxlbmd0aD4wKSxVcD1rKFtKXSwoW2VdKT0+T2JqZWN0LnZhbHVlcyhlKS5maWx0ZXIoZT0+ZS5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Db250YWN0KS5sZW5ndGg+MCksV3A9ayhbSixDc10sKFtlLHRdLG4pPT57aWYodCl7bGV0IHI9ZVt0XTtyJiZyLmNvbnRlbnQudHlwZT09PUcuTWVzc2FnZUNvbnRlbnRUeXBlLlJhdGVGb3JtJiZuKHttZXNzYWdlSWQ6ci5pZCx2YWx1ZTpyLmNvbnRlbnQuZGF0YT8udmFsdWUsdGV4dDpyLmNvbnRlbnQuZGF0YT8udGV4dCx0YXJnZXQ6ci5jb250ZW50LmRhdGE/LnRhcmdldH0pfWVsc2UgbihudWxsKX0pLEdwPWsoW1JwXSwoW2VdKT0+ZS5zbGljZSgpLnJldmVyc2UoKS5maW5kKGU9PmUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQ29udGFjdCl8fG51bGwpLEtwPU8obnVsbCkscXA9KCk9PiEhVi5nZXRPcHRpb25zKCkucmF0aW5nRW5hYmxlZCxKcD0oKT0+ISFWLmdldE9wdGlvbnMoKS5haVJhdGluZ0VuYWJsZWQsWXA9ZT0+e0NzLnNldChlKSxCYyhIYy5DaGF0UmF0aW5nKX0sWHA9YXN5bmMoe21lc3NhZ2VJZDplLHJhdGluZzp7dGV4dDp0LHZhbHVlOm59LG9uU3VjY2VzczpyfSk9PntsZXQgaT1BKEopW2VdLGE9ZT09PWByYXRlX2Zvcm1faWRgP3ZvaWQgMDplO3RyeXthd2FpdCBxLmdldENsaWVudCgpLmNoYXRSYXRlKHttZXNzYWdlSWQ6YSx2YWx1ZTpuLHRleHQ6dD8/dm9pZCAwfSksciYmcigpfWNhdGNoKGUpe2kmJmF3YWl0IEoucmVwbGFjZU1lc3NhZ2UoaSksam8oYENoYXQgcmF0aW5nIGZhaWxlZC5gLFN0cmluZyhlKSksZ3MoQShXKShgZm9ybS5zdWJtaXQuZXJyb3JgKSl9fSxacD1lPT57bGV0e3dpZGdldFYzVXJsOnR9PVYuZ2V0T3B0aW9ucygpO3JldHVybmAke3R9L2Fzc2V0cy9pbWFnZXMvcmF0aW5nLyR7ZX0uc3ZnYH0sUXA9LyhHLShbQS1aLDAtOV0qKSkvZywkcD1bXSxlbT0hMSx0bSxubT0hMSxybSxpbT1lPT5lLm1hdGNoKFFwKSxhbT0oKT0+e2xldHtnb29nbGVBbmFseXRpY3NFbmFibGVkOmV9PVYuZ2V0T3B0aW9ucygpO3RtPXdpbmRvdy50b3B8fHdpbmRvdyxlJiYodG0uZ3RhZyYmKHJtPXRtLmd0YWcsbm09ITApLHoub24oYGFuYWx5dGljc0NvbnNlbnRDaGFuZ2VkYCxvbSksIWVtJiZVbygpJiZzbSgpKX0sb209ZT0+eyFlbSYmZSYmc20oKX0sc209KCk9PntsZXR7Z2FLZXk6ZSxnYU9wdGlvbnM6dCxnb29nbGVBbmFseXRpY3NNYW51YWw6bixnb29nbGVBbmFseXRpY3NNZWFzdXJlbWVudElkczpyfT1WLmdldE9wdGlvbnMoKSxpPXR8fHtjb29raWVEb21haW46YGF1dG9gfTtpZihlKWltKGUpJiYkcC5wdXNoKHtrZXk6ZSxvcHRpb25zOml9KTtlbHNlIGlmKG4mJnIpci5mb3JFYWNoKGU9PntpbShlKSYmJHAucHVzaCh7a2V5OmUsb3B0aW9uczppfSl9KTtlbHNlIHRyeXskcC5wdXNoKC4uLmNtKCkpfWNhdGNoKGUpe3ZvKGBFcnJvciBkdXJpbmcgZ2V0dGluZyBHQSB0b3AgdHJhY2tlcnNgLGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSl9JHAubGVuZ3RoPjAmJiFubSYmbG0oKSwkcC5sZW5ndGg9PT0wP3ZvKGBObyBHQSB0byBzZXR1cGApOihkbSgpLGVtPSEwLHZvKGBHQSBpbml0aWFsaXplZGApKX0sY209KCk9PntsZXQgZT1bXTtyZXR1cm4gdG0uZ29vZ2xlX3RhZ19tYW5hZ2VyJiZPYmplY3Qua2V5cyh0bS5nb29nbGVfdGFnX21hbmFnZXIpLmZvckVhY2godD0+e2ltKHQpJiZlLnB1c2goe2tleTp0LG9wdGlvbnM6e2Nvb2tpZURvbWFpbjpgYXV0b2B9fSl9KSxlfSxsbT0oKT0+e2xldCBlPXRtLmRvY3VtZW50LHtoZWFkOnR9PWUsbj1lLmNyZWF0ZUVsZW1lbnQoYHNjcmlwdGApO24uaWQ9YGd0YWdgLG4udHlwZT1gdGV4dC9qYXZhc2NyaXB0YCxuLmFzeW5jPSEwLG4uc3JjPWBodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzYCx0Lmluc2VydEJlZm9yZShuLHQuZmlyc3RDaGlsZCksdG0uZGF0YUxheWVyPXRtLmRhdGFMYXllcnx8W10sdG0uZ3RhZz1mdW5jdGlvbigpe3RtLmRhdGFMYXllci5wdXNoKGFyZ3VtZW50cyl9LHJtPXRtLmd0YWcscm0oYGpzYCxuZXcgRGF0ZSl9LHVtPSgpPT57bGV0IGU9W107aWYobm0pe2xldCB0PWNtKCk7JHAuZm9yRWFjaChuPT57dC5maW5kKCh7a2V5OmV9KT0+ZT09PW4ua2V5KXx8ZS5wdXNoKG4pfSl9ZWxzZSBlPVsuLi4kcF07cmV0dXJuIGV9LGRtPSgpPT57dW0oKS5mb3JFYWNoKGU9PntsZXR7a2V5OnQsb3B0aW9uczpufT1lLHI9e307bj8ocj17Y29va2llX2RvbWFpbjpuLmNvb2tpZURvbWFpbn0sbi5uYW1lJiYoci5uYW1lPW4ubmFtZSkpOnI9e2Nvb2tpZV9kb21haW46dG0/LmxvY2F0aW9uLmhvc3RuYW1lfHxgYH0sci5zZW5kX3BhZ2Vfdmlldz0hMSxybShgY29uZmlnYCx0LHIpfSl9LGZtPShlLHQpPT57bGV0e2dvb2dsZUFuYWx5dGljc0VuYWJsZWQ6bn09Vi5nZXRPcHRpb25zKCk7aWYoISghbnx8IXRtLmd0YWd8fCFVbygpfHx0bS5kb2N1bWVudC5oaWRkZW4pKXRyeXskcC5mb3JFYWNoKG49Pnt0LnNlbmRfdG89bi5rZXkscm0oYGV2ZW50YCxlLHQpLHZvKGBTbWFydHN1cHA6IEdBIGV2ZW50ICR7ZX0gLSAke0pTT04uc3RyaW5naWZ5KHQpfWApfSl9Y2F0Y2goZSl7dm8oYFNtYXJ0c3VwcDogR0EgZXJyb3I6YCxlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUpfX0scG09YFZpc2l0b3Jfc3RhcnRlZF9jb252ZXJzYXRpb25gLG1tPWBWaXNpdG9yX2Nsb3NlZF9jb252ZXJzYXRpb25gLGhtPWBUcmlnZ2VyX21lc3NhZ2Vfc2VudGAsZ209YFRyaWdnZXJfbWVzc2FnZV92aWV3ZWRgLF9tPWBUcmlnZ2VyX3Zpc2l0b3JfcmVhY3Rpb25gLHZtPWBBdXRvX21lc3NhZ2Vfc2VudGAseW09YEF1dG9fbWVzc2FnZV92aWV3ZWRgLGJtPWBBdXRvX21lc3NhZ2VfdmlzaXRvcl9yZWFjdGlvbmAseG09YENoYXRib3Rfc2VudGAsU209YENoYXRib3Rfdmlld2VkYCxDbT1gQ2hhdGJvdF9pbnRlcmFjdGlvbmAsd209YENoYXRib3RfYnV0dG9uX2ludGVyYWN0aW9uYCxUbT1gQ2hhdGJvdF92aXNpdG9yX3JlYWN0aW9uYCxFbT1gQWlfY2hhdGJvdF9zZW50YCxEbT1gQWlfY2hhdGJvdF9pbnRlcmFjdGlvbmAsT209YEFpX2NoYXRib3RfdmlzaXRvcl9yZWFjdGlvbmAsa209YEFnZW50X3NlcnZlZF9jb252ZXJzYXRpb25gLEFtPWBBZ2VudF9jbG9zZWRfY29udmVyc2F0aW9uYCxqbT1gQ29udGFjdF9hY3F1aXJlZGAsTW09YEF1dGhfZm9ybV9maWxsZWRgLE5tPWBPZmZsaW5lX21lc3NhZ2Vfc2VudGAsUG09YEZlZWRiYWNrX3NlbnRgLEZtPWBGZWVkYmFja190ZXh0X3NlbnRgLEltPWBVcmxfY2FyZF9vcGVuZWRgLExtPWBDaGF0Ym94X29wZW5lZGAsUm09e2V2ZW50X2NhdGVnb3J5OmBTbWFydHN1cHBfdjNgLG5vbl9pbnRlcmFjdGlvbjohMH0sWT0oZSx0KT0+e2ZtKGUsey4uLlJtLC4uLnR9KX0sem09KGU9YGApPT5ZKGhtLHtldmVudF9sYWJlbDplfSksQm09ZT0+WShnbSx7ZXZlbnRfbGFiZWw6ZX0pLFZtPShlPWBgKT0+WShfbSx7ZXZlbnRfbGFiZWw6ZX0pLEhtPShlPWBgKT0+WSh2bSx7ZXZlbnRfbGFiZWw6ZX0pLFVtPWU9PlkoeW0se2V2ZW50X2xhYmVsOmV9KSxXbT0oZT1gYCk9PlkoYm0se2V2ZW50X2xhYmVsOmV9KSxHbT0oZT1gYCk9PlkoeG0se2V2ZW50X2xhYmVsOmV9KSxLbT1lPT5ZKFNtLHtldmVudF9sYWJlbDplfSkscW09KGU9YGApPT5ZKENtLHtldmVudF9sYWJlbDplfSksSm09KGU9YGApPT5ZKHdtLHtldmVudF9sYWJlbDplfSksWW09KGU9YGApPT5ZKFRtLHtldmVudF9sYWJlbDplfSksWG09KCk9PlkocG0pLFptPSgpPT5ZKG1tKSxRbT1lPT5ZKEFtLHtldmVudF9sYWJlbDplfSksJG09ZT0+WShrbSx7ZXZlbnRfbGFiZWw6ZX0pLGVoPSgpPT5ZKE1tKSx0aD0oKT0+WShObSksbmg9KGUsdCk9PntsZXQgbj17ZXZlbnRfbGFiZWw6dHx8dnNbZV18fGBgLHZhbHVlOmV9O1kodD9GbTpQbSxuKX0scmg9ZT0+WShqbSx7ZXZlbnRfbGFiZWw6ZX0pLGloPWU9PlkoSW0se2V2ZW50X2xhYmVsOmV9KSxhaD0oZT1gYCk9PlkoRW0se2V2ZW50X2xhYmVsOmV9KSxvaD0oZT1gYCk9PlkoRG0se2V2ZW50X2xhYmVsOmV9KSxzaD0oZT1gYCk9PlkoT20se2V2ZW50X2xhYmVsOmV9KSxjaD0oKT0+WShMbSksbGg9ITEsdWg9e30sZGg9KCk9PntsaD0hMX0sZmg9KCk9Pnt1aD13cChBKFJwKSl9LHBoPShlLHQpPT5saD8hMTpDcChlKS5sZW5ndGg9PT0xJiZ0PT09Ry5NZXNzYWdlU3ViVHlwZS5Db250YWN0PyhsaD0hMCwhMCk6ITEsbWg9KGUsdCk9PntsZXQgbj1lLnRyaWdnZXI/LmlkfHxgYDtyZXR1cm4gdC5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Db250YWN0JiZlLnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLlRyaWdnZXImJiF1aFtuXT8udmlzaXRvclJlc3BvbmRlZD8odWhbbl0udmlzaXRvclJlc3BvbmRlZD0hMCwhMCk6ITF9LGhoPShlLHQpPT57bGV0IG49ZS50cmlnZ2VyPy5pZHx8YGA7cmV0dXJuIHQuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQ29udGFjdCYmISh0LmNvbnRlbnQucXVpY2tSZXBsaWVzfHx0LmNvbnRlbnQucXVpY2tSZXBseSkmJmUuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQm90JiYhdWhbbl0/LnZpc2l0b3JSZXNwb25kZWQmJm4/KHVoW25dLnZpc2l0b3JSZXNwb25kZWQ9ITAsITApOiExfSxnaD0oZSx0KT0+e2xldCBuPWUudHJpZ2dlcj8uaWR8fGBgO3JldHVybiB0LnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLkNvbnRhY3QmJmUudHJpZ2dlcj8uZ3JvdXBUeXBlPT09Ry5Hcm91cFR5cGUuY2hhdGJvdCYmIXVoW25dPy5yZWFjdGVkPyh1aFtuXS5yZWFjdGVkPSEwLCEwKTohMX0sX2g9ZT0+e2xldCB0PWUudHJpZ2dlcj8uaWR8fGBgO3JldHVybiBlLnRyaWdnZXI/Lmdyb3VwVHlwZT09PUcuR3JvdXBUeXBlLmFpJiYhdWhbdF0/LnJlYWN0ZWQ/KHVoW3RdLnJlYWN0ZWQ9ITAsITApOiExfSx2aD0oZSx0LG49ITEpPT57aWYoZS5sZW5ndGg+MCYmIW4pe2xldCB0PWUuc2xpY2UoLTIpLmZpbHRlcihlPT5lLnRyaWdnZXIpO3JldHVybiB0P3RbdC5sZW5ndGgtMV0udHJpZ2dlcj8ubmFtZTpgYH1lbHNlIHJldHVybiB0LnRyaWdnZXI/dC50cmlnZ2VyLm5hbWU6YGB9LHloPWU9PntsZXQgdD1BKFJwKTt4aCh0LGUpLFNoKHQsZSkscGgodCxlLnN1YlR5cGUpJiZYbSgpfSxiaD1lPT57bGV0IHQ9ZSxuPUEoUnApLmZpbHRlcihlPT5lLnRyaWdnZXIpO24mJm4ubGVuZ3RoPjAmJih0PW5bbi5sZW5ndGgtMV0udHJpZ2dlcj8ubmFtZT8/ZSkscmgodCl9LHhoPShlLHQpPT57bGV0IG49dC50cmlnZ2VyPy5pZHx8YGA7dC5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Cb3QmJiF1aFtuXT8uc2VudCYmKHQudHJpZ2dlcj8uZ3JvdXBUeXBlPT09Ry5Hcm91cFR5cGUuY2hhdGJvdCYmKEdtKHZoKGUsdCwhMCkpLHVoW25dPXtzZW50OiEwfSksdC50cmlnZ2VyPy5ncm91cFR5cGU9PT1HLkdyb3VwVHlwZS5tZXNzYWdlJiYoSG0odmgoZSx0LCEwKSksdWhbbl09e3NlbnQ6ITB9KSx0LnRyaWdnZXI/Lmdyb3VwVHlwZT09PUcuR3JvdXBUeXBlLmFpJiYoYWgodmgoZSx0LCEwKSksdWhbbl09e3NlbnQ6ITB9KSk7bGV0IHI9ZS5sZW5ndGg+MT9lW2UubGVuZ3RoLTJdOnZvaWQgMDtyJiYoaGgocix0KT8oci50cmlnZ2VyPy5ncm91cFR5cGU9PT1HLkdyb3VwVHlwZS5jaGF0Ym90JiZZbSh2aChlLHQpKSxyLnRyaWdnZXI/Lmdyb3VwVHlwZT09PUcuR3JvdXBUeXBlLm1lc3NhZ2UmJldtKHZoKGUsdCkpLHIudHJpZ2dlcj8uZ3JvdXBUeXBlPT09Ry5Hcm91cFR5cGUuYWkmJnNoKHZoKGUsdCkpKTpnaChyLHQpP3FtKHZoKGUsdCkpOl9oKHQpJiZvaCh2aChlLHQpKSl9LFNoPShlLHQpPT57dC5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5UcmlnZ2VyJiYoem0odD8udHJpZ2dlcj8ubmFtZSksdWhbdC50cmlnZ2VyPy5pZHx8YGBdPXtzZW50OiEwfSk7bGV0IG49ZS5sZW5ndGg+MT9lW2UubGVuZ3RoLTJdOnZvaWQgMDtuJiZtaChuLHQpJiZWbSh2aChlLHQpKX0sQ2g9KCk9PntsZXQgZT1BKFBwKS5maWx0ZXIoZT0+ZS50cmlnZ2VyKSx0PWVbZS5sZW5ndGgtMV07dCYmdC50cmlnZ2VyJiYodC5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Cb3QmJnQuY29udGVudC5xdWlja1JlcGxpZXM/S20odC50cmlnZ2VyLm5hbWUpOnQuc3ViVHlwZT09PUcuTWVzc2FnZVN1YlR5cGUuQm90P1VtKHQudHJpZ2dlci5uYW1lKTp0LnN1YlR5cGU9PT1HLk1lc3NhZ2VTdWJUeXBlLlRyaWdnZXImJkJtKHQudHJpZ2dlci5uYW1lKSl9LHdoPWU9PntlPT09Sy5BY2NvdW50U3RhdHVzLk9mZmxpbmUmJnRoKCl9O3oub24oYG1lc3NhZ2VSZWNlaXZlZGAseWgpLHoub24oYGFnZW50Sm9pbmVkYCxlPT57JG0oZS5mdWxsbmFtZSl9KSx6Lm9uKGBjaGF0UmF0ZWRgLGU9PntuaChlLnZhbHVlLGUudGV4dCl9KSx6Lm9uKGBjaGF0Q2xvc2VkYCwoKT0+e2RoKCl9KSx6Lm9uKGBjaGF0VmlzaXRvckNsb3NlZGAsKCk9PntkaCgpfSksei5vbihgY29udGFjdEFjcXVpcmVkYCwoe2FjcXVpcmVkQnk6ZX0pPT57YmgoZSl9KSxYbC5wdXNoKGZoKTt2YXIgVGg9e0Fycm93RG93bjpgQXJyb3dEb3duYCxBcnJvd1VwOmBBcnJvd1VwYCxFbnRlcjpgRW50ZXJgLEVzY2FwZTpgRXNjYXBlYCxUYWI6YFRhYmB9LEVoPTJlMyxEaD0yZTMsT2g9ZT0+ZS5maWx0ZXIoZT0+IWUuaXNIaWRkZW4pLnJlZHVjZSgoZSx0KT0+KGVbdC5uYW1lXT10LnZhbHVlLGUpLHt9KSxraD1lPT5lLnJlZHVjZSgoZSx0KT0+KGVbdC5uYW1lXT10LnZhbGlkYXRvcnMsZSkse30pLEFoPShlLHQsbik9PntlLnVwZGF0ZShlPT4oey4uLmUsW3RdOm59KSl9LGpoPShlLHQpPT57bGV0IG49e307Zm9yKGxldCByIGluIGUpbltyXT10O3JldHVybiBufSxNaD0oKT0+TWF0aC5yYW5kb20oKS50b1N0cmluZygzNiksTmg9ZT0+e2lmKCFlKXJldHVybiExO2xldCB0PWUuc3BsaXQoYEBgKTtpZih0Lmxlbmd0aCE9PTIpcmV0dXJuITE7bGV0IG49dFswXSxyPXRbMV07cmV0dXJuIG4ubGVuZ3RoPjY0fHxyLmxlbmd0aD4yNTV8fHIuc3BsaXQoYC5gKS5zb21lKGU9PmUubGVuZ3RoPjYzKT8hMTp5Zi50ZXN0KGUpfSxQaD1udWxsLEZoPWU9PntsZXQgdD1lLmluaXRpYWxWYWx1ZXN8fHt9LHt2YWxpZGF0b3JzOm4sb25DaGFuZ2U6cixvblN1Ym1pdDppfT1lLGE9KCk9Pih7Li4udH0pLG89amgodCxQaCkscz1PKGEoKSksYz1PKG8pLGw9TyhqaCh0LCExKSksdT1PKCExKSxkPWsoYyxlPT5PYmplY3QudmFsdWVzKGUpLmV2ZXJ5KGU9PmU9PT1QaCkpLGY9KCk9PntPYmplY3QuZW50cmllcyhBKHMpKS5mb3JFYWNoKChbZSx0XSk9PntlZShlLHQpfSl9LHA9ZT0+e2xldCB0PWUudGFyZ2V0O3QmJl8odC5uYW1lfHx0LmlkLHQudmFsdWUpfSxtPWFzeW5jIGU9PntpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCksdS5zZXQoITApLGYoKSwhQShkKSl7dS5zZXQoITEpO3JldHVybn1jLnNldChvKSxhd2FpdCBpKEEocykpLHUuc2V0KCExKX0saD0oZSx7c2hvdWxkVmFsaWRhdGU6dD0hMX09e30pPT57cy51cGRhdGUodD0+KHsuLi50LC4uLmV9KSksdCYmZigpfSxnPShlLHQpPT57XyhlLHQpfSxfPShlLHQpPT57dihlLHQpLGVlKGUsdCksciYmcihlLHQpfSx2PShlLHQpPT57QWgocyxlLHQpfSx5PShlLHQpPT57QWgobCxlLHQpfSxlZT0oZSx0KT0+e3koZSx0KTtsZXQgcj1uW2VdO2lmKHIpZm9yKGxldCBuIG9mIHIpe2xldHt0eXBlOnIsaXNWYWxpZDppfT1uKHQpO2lmKEFoKGMsZSxpP1BoOnIpLCFpKXJldHVybn19O3JldHVybntmb3JtOnMsZXJyb3JzOmMsaXNWYWxpZDpkLGlzU3VibWl0dGluZzp1LGhhbmRsZUNoYW5nZTpwLGhhbmRsZVN1Ym1pdDptLHNldEZpZWxkVmFsdWU6ZyxzZXRWYWx1ZXM6aH19LEloPWZ1bmN0aW9uKGUpe3JldHVybiBlLlRleHQ9YHRleHRgLGUuQ2hlY2tib3g9YGNoZWNrYm94YCxlLlNlbGVjdD1gc2VsZWN0YCxlfSh7fSksTGg9KCk9PmU9PntsZXQgdD0hMDtyZXR1cm4gZT8/KHQ9ITEpLEx1KGUpJiYodD1lLnRyaW0oKS5sZW5ndGg+MCkse3R5cGU6YHJlcXVpcmVkYCxpc1ZhbGlkOnR9fSxSaD0oKT0+ZT0+KHt0eXBlOmBjaGVja2VkYCxpc1ZhbGlkOkx1KGUpP2U9PT1gdHJ1ZWA6ZT09PSEwfSksemg9KCk9PmU9Pih7dHlwZTpgZW1haWxgLGlzVmFsaWQ6TmgoU3RyaW5nKGUpKX0pLEJoPSgpPT5lPT4oe3R5cGU6YHBob25lYCxpc1ZhbGlkOi9eWytdKlsoXXswLDF9WzAtOV17MSw0fVspXXswLDF9Wy1zLi8wLTldKiQvLnRlc3QoU3RyaW5nKGUpKX0pLFZoPU8odm9pZCAwKSxIaD1lPT57bGV0e2VtYWlsQ29udHJvbDp0fT1WLmdldE9wdGlvbnMoKSxuPSEhZT8uZW1haWw7cmV0dXJuIHQmJiFufSxVaD1lPT57bGV0e25hbWVDb250cm9sOnR9PVYuZ2V0T3B0aW9ucygpLG49ISFlPy5uYW1lO3JldHVybiB0JiYhbn0sV2g9ZT0+e2xldHtudW1iZXJDb250cm9sOnR9PVYuZ2V0T3B0aW9ucygpLG49ISFlPy5waG9uZTtyZXR1cm4hIXQmJiFufSxHaD0oKT0+e2xldHtncm91cFNlbGVjdEVuYWJsZWQ6ZX09Vi5nZXRPcHRpb25zKCksdD1BKGFsKTtyZXR1cm4hIWUmJnQubGVuZ3RoPjB9LEtoPSgpPT57bGV0e3ByaXZhY3lOb3RpY2VFbmFibGVkOmUscHJpdmFjeU5vdGljZUNoZWNrUmVxdWlyZWQ6dH09Vi5nZXRPcHRpb25zKCksbj1jZygpO3JldHVybiEhZSYmdCYmIW59LHFoPWU9PntsZXR7cHJpdmFjeU5vdGljZUVuYWJsZWQ6dH09Vi5nZXRPcHRpb25zKCksbj0hIWU/LnZhcmlhYmxlcz8ucGVyc29uYWxEYXRhUHJvY2Vzc2luZ0NvbnNlbnQ7cmV0dXJuISF0JiYhbn0sSmg9KCk9Pih7dHlwZTpJaC5UZXh0LHN1YlR5cGU6YGVtYWlsYCxuYW1lOmBlbWFpbGAsbGFiZWw6YGF1dGhGb3JtLmxhYmVsLmVtYWlsYCxwbGFjZWhvbGRlcjpgYXV0aEZvcm0ueW91ckVtYWlsYCx2YWx1ZTpgYCx2YWxpZGF0b3JzOltMaCgpLHpoKCldLG1heExlbmd0aDoyNTV9KSxZaD0oKT0+KHt0eXBlOkloLlRleHQsc3ViVHlwZTpgdGV4dGAsbmFtZTpgbmFtZWAsbGFiZWw6YGF1dGhGb3JtLmxhYmVsLm5hbWVgLHBsYWNlaG9sZGVyOmBhdXRoRm9ybS55b3VyTmFtZWAsdmFsdWU6YGAsdmFsaWRhdG9yczpbTGgoKV0sbWF4TGVuZ3RoOjI1NX0pLFhoPSgpPT4oe3R5cGU6SWguVGV4dCxzdWJUeXBlOmB0ZWxgLG5hbWU6YHBob25lYCxsYWJlbDpgYXV0aEZvcm0ubGFiZWwucGhvbmVgLHBsYWNlaG9sZGVyOmBhdXRoRm9ybS55b3VyUGhvbmVgLHZhbHVlOmBgLHZhbGlkYXRvcnM6W0xoKCksQmgoKV0sbWF4TGVuZ3RoOjMyfSksWmg9ZT0+e2xldCB0PUEoYWwpO3JldHVybnt0eXBlOkloLlNlbGVjdCxuYW1lOmBncm91cGAsbGFiZWw6YGF1dGhGb3JtLmxhYmVsLmdyb3VwYCxwbGFjZWhvbGRlcjpgYXV0aEZvcm0uZ3JvdXBgLHZhbHVlOmU/Lmdyb3VwPz9gYCx2YWxpZGF0b3JzOltMaCgpXSxvcHRpb25zOnQubWFwKGU9Pih7dGV4dDplLm5hbWUsdmFsdWU6ZS5rZXl9KSl9fSxRaD0oKT0+KHt0eXBlOkloLkNoZWNrYm94LG5hbWU6YHBlcnNvbmFsRGF0YVByb2Nlc3NpbmdDb25zZW50YCxsYWJlbDpgYXV0aEZvcm0uYWNjZXB0VGVybXNgLHZhbHVlOiExLHZhbGlkYXRvcnM6W1JoKCldfSksJGg9KCk9Pih7dHlwZTpJaC5DaGVja2JveCxuYW1lOmBwZXJzb25hbERhdGFQcm9jZXNzaW5nQ29uc2VudGAsbGFiZWw6YHRvcEJhci5nZHByVGl0bGVgLHZhbHVlOiExLHZhbGlkYXRvcnM6W10saXNIaWRkZW46ITB9KSxlZz1lPT4oe3Nob3dFbWFpbDpIaChlKSxzaG93TmFtZTpVaChlKSxzaG93UGhvbmU6V2goZSksc2hvd0dyb3VwczpHaCgpLHNob3dDb25zZW50OktoKCl9KSx0Zz1lPT4oe3Nob3dFbWFpbDohIWUuZW1haWxDb250cm9sLHNob3dOYW1lOiEhZS5uYW1lQ29udHJvbCxzaG93UGhvbmU6ISFlLm51bWJlckNvbnRyb2wsc2hvd0dyb3VwczohIWUuZ3JvdXBTZWxlY3RFbmFibGVkLHNob3dDb25zZW50OiEhZS5wcml2YWN5Tm90aWNlRW5hYmxlZCYmZS5wcml2YWN5Tm90aWNlQ2hlY2tSZXF1aXJlZH0pLG5nPWU9Pk9iamVjdC52YWx1ZXMoZWcoZSkpLnNvbWUoZT0+ZSkscmc9KGUsdCk9PntsZXQgbj1bXSx7c2hvd0VtYWlsOnIsc2hvd05hbWU6aSxzaG93UGhvbmU6YSxzaG93R3JvdXBzOm8sc2hvd0NvbnNlbnQ6c309dD90Zyh0KTplZyhlKTtyZXR1cm4gaSYmbi5wdXNoKFloKCkpLHImJm4ucHVzaChKaCgpKSxhJiZuLnB1c2goWGgoKSksbyYmbi5wdXNoKFpoKGUpKSxzP24ucHVzaChRaCgpKTpuLmxlbmd0aD4wJiYodD90Py5wcml2YWN5Tm90aWNlRW5hYmxlZDpxaChlKSkmJm4ucHVzaCgkaCgpKSxufSxpZz0oKT0+e2xldCBlPXpvKFUuQXV0aEZvcm0pO2lmKCFlKXJldHVybiBudWxsO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaHtyZXR1cm4gbnVsbH19LGFnPShlLHQpPT57bGV0IG49aWcoKSxyPXtbZV06dH0saT1uP3suLi5uLC4uLnJ9OnI7Qm8oe25hbWU6VS5BdXRoRm9ybSx2YWx1ZTpKU09OLnN0cmluZ2lmeShpKX0pfSxvZz0oKT0+e0xvKFUuQXV0aEZvcm0pfSxzZz0oKT0+ISFBKE11KT8udmFyaWFibGVzPy5hdXRoZW50aWNhdGVkLGNnPSgpPT5BKE11KT8uZ2RwckFwcHJvdmVkfHwhMSxsZz0oKT0+e2xldHtpc1ByZXZpZXdNb2RlOmV9PVYuZ2V0T3B0aW9ucygpO2lmKGV8fEEocGQpfHxzZygpfHwhbmcoQShNdSkpKXJldHVybiExO2xldHtyZXF1aXJlTG9naW46dH09Vi5nZXRPcHRpb25zKCksbj1BKCR1KT09PUsuQWNjb3VudFN0YXR1cy5PZmZsaW5lLHI9QShVdSkubGVuZ3RoPjA7cmV0dXJuISF0fHxufHwhbiYmIXJ9LHVnPWFzeW5jIGU9PntsZXR7cHJpdmFjeU5vdGljZUNoZWNrUmVxdWlyZWQ6dH09Vi5nZXRPcHRpb25zKCksbj1BKE11KSxyPW4/Lm5hbWU/P2UubmFtZSxpPW4/LmVtYWlsPz9lLmVtYWlsLGE9bj8ucGhvbmU/P2UucGhvbmUsbz1lLmdyb3VwPz9uPy5ncm91cCxzPWUucGVyc29uYWxEYXRhUHJvY2Vzc2luZ0NvbnNlbnQsYz17Li4uciYme25hbWU6cn0sLi4uaSYme2VtYWlsOml9LC4uLmEmJntwaG9uZTphfSwuLi5vJiZ7Z3JvdXA6b30sLi4ucyYmdCYme3BlcnNvbmFsRGF0YVByb2Nlc3NpbmdDb25zZW50OnN9fTthd2FpdCBxLmdldENsaWVudCgpLmF1dGhlbnRpY2F0ZShjKSxlaCgpLGF3YWl0IHVfKCksVmMoKX0sZGc9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGVtb2ppLW1hcnQvZGF0YWAsZmc9UmVnRXhwKGA6KFthLXpBLVowLTlfLV0rKTpgLGBnYCkscGc9bnVsbCxtZz1udWxsLGhnPW51bGwsZ2c9TyhbXSksX2c9YXN5bmMoKT0+cGd8fGhnfHwoaGc9ZmV0Y2goZGcpLnRoZW4oZT0+ZS5qc29uKCkpLnRoZW4oZT0+KHBnPWUsZSkpLmNhdGNoKGU9Pnt0aHJvdyB2byhgRmFpbGVkIHRvIGxvYWQgZW1vamkgZGF0YWAsZSksaGc9bnVsbCxlfSksaGcpLHZnPWU9Pk9iamVjdC52YWx1ZXMoZS5lbW9qaXMpLm1hcChlPT4oe2lkOmUuaWQsbmFtZTplLm5hbWUsbmF0aXZlOmUuc2tpbnNbMF0/Lm5hdGl2ZT8/YGAsa2V5d29yZHM6ZS5rZXl3b3Jkcz8/W119KSkseWc9e3N1YnNjcmliZTpnZy5zdWJzY3JpYmUsYXN5bmMgbG9hZFJhd0RhdGEoKXtyZXR1cm4gX2coKX0sYXN5bmMgbG9hZERhdGEoKXtyZXR1cm4gbWd8fChtZz12Zyhhd2FpdCBfZygpKSxnZy5zZXQobWcpLG1nKX0sZ2V0QnlJZChlKXtsZXQgdD1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG1nPy5maW5kKGU9PmUuaWQudG9Mb3dlckNhc2UoKT09PXQpfSxpc0xvYWRlZCgpe3JldHVybiBtZyE9PW51bGx9fSxiZz1lPT55Zy5pc0xvYWRlZCgpP2UucmVwbGFjZShmZywoZSx0KT0+e2xldCBuPXlnLmdldEJ5SWQodCk7cmV0dXJuIG4/bi5uYXRpdmU6ZX0pOmUseGc9MjAsU2c9eyI6KSI6YPCfmYJgLCI6LSkiOmDwn5mCYCwiOkQiOmDwn5iAYCwiOi1EIjpg8J+YgGAsIjspIjpg8J+YiWAsIjstKSI6YPCfmIlgLCI8MyI6YOKdpO+4j2AsIjooIjpg8J+YnmAsIjotKCI6YPCfmJ5gLCI6UCI6YPCfmJtgLCI6LVAiOmDwn5ibYCwiOi1vIjpg8J+YrmAsIjpPIjpg8J+YrmAsIjovIjpg8J+YlWAsIjotLyI6YPCfmJVgfSxDZz1lPT57bGV0IHQ9YCgke2U/YCR8YDpgYH0gKWA7cmV0dXJuIG5ldyBSZWdFeHAoT2JqZWN0LmtleXMoU2cpLm1hcChlPT5gJHtlLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLGBcXCQmYCl9JHt0fWApLmpvaW4oYHxgKSxgZ2lgKX0sd2c9KGUsdD0hMSk9PntsZXQgbj1DZyh0KTtyZXR1cm4gZS5yZXBsYWNlKG4sZT0+e2xldCB0PU9iamVjdC5rZXlzKFNnKS5maW5kKHQ9PmUudG9VcHBlckNhc2UoKS5pbmNsdWRlcyh0KSk7aWYoIXQpcmV0dXJuIGU7bGV0IG49ZS5lbmRzV2l0aChgIGApP2AgYDpgYDtyZXR1cm5gJHtTZ1t0XX0ke259YH0pfSxUZz0oZSx0LG49eGcpPT57aWYoIWV8fGUubGVuZ3RoPDIpcmV0dXJuW107bGV0IHI9ZS50b0xvd2VyQ2FzZSgpLGk9W10sYT1bXSxvPVtdLHM9W107Zm9yKGxldCBlIG9mIHQpe2xldCB0PWUuaWQudG9Mb3dlckNhc2UoKSxuPWUubmFtZS50b0xvd2VyQ2FzZSgpO2lmKHQuc3RhcnRzV2l0aChyKSl7aS5wdXNoKGUpO2NvbnRpbnVlfWlmKHQuaW5jbHVkZXMocikpe2EucHVzaChlKTtjb250aW51ZX1pZihuLmluY2x1ZGVzKHIpKXtvLnB1c2goZSk7Y29udGludWV9ZS5rZXl3b3Jkcy5zb21lKGU9PmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhyKSkmJnMucHVzaChlKX1yZXR1cm5bLi4uaSwuLi5hLC4uLm8sLi4uc10uc2xpY2UoMCxuKX0sRWc9KGUsdCk9PntsZXQgbj1lLnNsaWNlKDAsdCkscj1uLmxhc3RJbmRleE9mKGA6YCk7aWYocj09PS0xKXJldHVybiBudWxsO2xldCBpPW4uc2xpY2UocisxKTtyZXR1cm4gUmVnRXhwKGBeW2EtekEtWjAtOV8tXSokYCkudGVzdChpKSYmaS5sZW5ndGg+PTI/aTpudWxsfSxEZz0oZSx0LG4pPT57bGV0IHI9ZS5zbGljZSgwLHQpLGk9ZS5zbGljZSh0KSxhPXIubGFzdEluZGV4T2YoYDpgKTtpZihhPT09LTEpcmV0dXJue25ld1RleHQ6ZSxuZXdDdXJzb3JQb3NpdGlvbjp0fTtsZXQgbz1lLnNsaWNlKDAsYSkscz1pLmxlbmd0aD09PTA/bitgIGA6bjtyZXR1cm57bmV3VGV4dDpvK3MraSxuZXdDdXJzb3JQb3NpdGlvbjphK3MubGVuZ3RofX0sT2c9KGUsdD0zMDApPT57bGV0IG47cmV0dXJuKC4uLnIpPT57Y2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoKT0+ZSguLi5yKSx0KX19LGtnPTNlMyxBZz1bYHNtYXJ0c3VwcC5kZXZgLGBzbWFydHN1cHBjaGF0LmxvY2BdLGpnPWZ1bmN0aW9uKGUpe3JldHVybiBlLkRlZmF1bHQ9YGJsYWNrYmVycnkyLm1wM2AsZX0oe30pLE1nPWZ1bmN0aW9uKGUpe3JldHVybiBlLkNvbm5lY3Rpbmc9YGNvbm5lY3RpbmdgLGUuQ29ubmVjdGVkPWBjb25uZWN0ZWRgLGUuRGlzY29ubmVjdGVkPWBkaXNjb25uZWN0ZWRgLGV9KHt9KSxOZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5JbWFnZT1gaW1hZ2VgLGUuVmlkZW89YHZpZGVvYCxlfSh7fSksUGc9TyghMSksRmc9TyghMSksSWc9TyghMSk7QigpLmFkZEV2ZW50TGlzdGVuZXIoYG9mZmxpbmVgLCgpPT5QZy5zZXQoITApKSxCKCkuYWRkRXZlbnRMaXN0ZW5lcihgb25saW5lYCwoKT0+UGcuc2V0KCExKSk7dmFyIExnPWsoW2RsLFBnLElnXSwoW2UsdCxuXSk9Pm4/TWcuQ29ubmVjdGVkOiFlfHx0P01nLkRpc2Nvbm5lY3RlZDpNZy5Db25uZWN0ZWQsTWcuQ29ubmVjdGluZyksUmcsemc9T2coZT0+e2UmJiFSZyYmKFJnPV9zKEEoVykoYGVycm9yLm5vSW50ZXJuZXRgKSwwKSksIWUmJlJnJiYoUmcoKSxSZz12b2lkIDApfSxrZyk7TGcuc3Vic2NyaWJlKGU9PntlPT09TWcuRGlzY29ubmVjdGVkJiYoRmcuc2V0KCEwKSx6ZyghMCkpLGU9PT1NZy5Db25uZWN0ZWQmJihGZy5zZXQoITEpLHpnKCExKSl9KTt2YXIgQmc9KGUsdCxuKT0+ZT09PU1nLkRpc2Nvbm5lY3RlZHx8IXR8fG4sVmc9KCk9PkJnKEEoTGcpLEEoSHApLEEoWHUpLmRpc2FibGVBdHRhY2htZW50cyksSGc9TyghMSksVWc9ZT0+e2lmKEEoSGcpKXtIKGBUaGVyZSBpcyBhbHJlYWR5IGZpbGUgdXBsb2FkIGluIHByb2dyZXNzYCk7cmV0dXJufWlmKGUubGVuZ3RoPT09MClyZXR1cm47bGV0IHQ9V2coZSk7dC5sZW5ndGg+MCYmWWwuYWRkKHQpfSxXZz1lPT5lLmxlbmd0aD41PyhncyhgJHtBKFcpKGBmaWxlVXBsb2FkLnRvb01hbnlGaWxlc2ApfSA1YCksW10pOmUuZmlsdGVyKGU9PkdnKGUpKSxHZz1lPT57bGV0e2FjY2VwdGVkRmlsZUV4dGVuc2lvbnM6dCxhY2NlcHRlZEZpbGVUeXBlczpuLG1heEZpbGVTaXplOnJ9PUEoYmwpO2lmKCFlKXJldHVybiExO2xldCBpPXQuaW5jbHVkZXMoQ2QoZS5uYW1lKSksYT1uLnNvbWUodD0+dD09PWUudHlwZSk7aWYoVmcoKSlyZXR1cm4gSChgRmlsZSB1cGxvYWQgaXMgZGlzYWJsZWRgKSwhMTtpZighQShIcCkpcmV0dXJuIGdzKEEoVykoYHdhcm5pbmdCYXIudXBsb2FkRmlsZU5vdEZpcnN0YCkpLCExO2lmKGUuc2l6ZT5yKXtsZXQgZT13ZChyKTtyZXR1cm4gZ3MoYCR7QShXKShgZmlsZVVwbG9hZC5maWxlVG9vQmlnYCl9ICR7ZS5zaXplfSAke2UudW5pdH1gKSwhMX1yZXR1cm4gaXx8YT8hMDooZ3MoQShXKShgZmlsZVVwbG9hZC5iYWRGaWxlVHlwZWApKSwhMSl9LEtnPSgpPT5ZbC5jb3VudCgpPT09MD9bXTooWWwuc2V0VXBsb2FkaW5nU3RhdHVzKCksRGQoQShZbCksZT0+WWwuc2V0RmlsZVVwbG9hZGVkKGUubmFtZSkpKSxxZz0xMCxKZz0xZTQsWWc9M2U0LFhnPTIwLFpnPWU9PntpZihlLmxlbmd0aD4wJiZlLmxlbmd0aCVxZz09PTApe2xldCB0PWUuc2xpY2UoLXFnKSxuPW5ldyBEYXRlKGVbZS5sZW5ndGgtMV0uY3JlYXRlZEF0KS5nZXRUaW1lKCk7aWYobmV3IERhdGUoKS5nZXRUaW1lKCktbj5ZZ3x8IXQuZXZlcnkoZT0+ZS5zdWJUeXBlPT09Ry5NZXNzYWdlU3ViVHlwZS5Db250YWN0KSlyZXR1cm4hMTtpZihuLW5ldyBEYXRlKHRbMF0uY3JlYXRlZEF0KS5nZXRUaW1lKCk8SmcpcmV0dXJuITB9cmV0dXJuITF9LFFnPWU9PntsZXQgdD1qZihlKTtyZXR1cm4gdD90Lmxlbmd0aD5YZzohMX0sJGc9TygpLGVfPU8oITEpLHRfPU8oKSxuXz0yMDAscl89TyghMSksaV89ayhbJGddLChbZV0pPT5lPT09dm9pZCAwP3pvKFUuTWVzc2FnZSk/P2BgOmUpLGFfPWsoW2lfXSwoW2VdKT0+ZS50cmltKCkubGVuZ3RoPT09MCksb189ZT0+eyRnLnNldChiZyh3ZyhlKSkpfSxzXz0oZSx0KT0+e2xldCBuPUEoaV8pPz9gYCxyPWAke24uc2xpY2UoMCx0KX0ke2V9JHtuLnNsaWNlKHQpfWA7JGcuc2V0KHIpfSxjXz0oKT0+e0EoZV8pfHwocS5nZXRDbGllbnQoKS5jaGF0VHlwaW5nKCEwKSxlXy5zZXQoITApKX0sbF89KCk9PntBKGVfKSYmKHEuZ2V0Q2xpZW50KCkuY2hhdFR5cGluZyghMSksZV8uc2V0KCExKSl9LHVfPWFzeW5jKGU9W10pPT57aWYoQShhXykmJmUubGVuZ3RoPT09MClyZXR1cm47bGV0IHQ9Ymcod2coQShpXyksITApKS50cmltKCk7YXdhaXQgSi5zZW5kTWVzc2FnZSh0LGUpLG9fKGBgKSxsXygpLHJfLnNldCghMCksZ2QoKX0sZF89T2coYXN5bmMoKT0+e2xldCBlPVlsLmNvdW50KCk+MDtpZihBKGFfKSYmIWUpcmV0dXJuO2lmKCFBKFgpJiZsZygpJiZVXygpLGZfKCkmJiFlKXtfcyhBKFcpKGB3YXJuaW5nQmFyLnNhbWVNZXNzYWdlVHdpY2VgKSk7cmV0dXJufWlmKFpnKEEoUnApKSl7X3MoQShXKShgd2FybmluZ0Jhci5zcGFtUHJvdGVjdGlvbmApKTtyZXR1cm59aWYoQShIZykpe2pvKEEoVykoYGNoYXQuZmlsZVVwbG9hZC5lcnJvci5zdGlsbFVwbG9hZGluZ2ApKTtyZXR1cm59aWYoQShVZikpe19zKEEoVykoYGNhcmQuc2VuZGluZ0luUHJvZ3Jlc3NgKSk7cmV0dXJufWlmKFFnKEEoaV8pKSl7X3MoQShXKShgY2FyZC5saW5rc0xpbWl0UmVhY2hlZGApKTtyZXR1cm59aWYobGcoKSl7QmMoSGMuQXV0aEZvcm0pO3JldHVybn1sZXQgdD1bXTtlJiYoSGcuc2V0KCEwKSx0PWF3YWl0IEtnKCksWWwuY2xlYXIoKSxIZy5zZXQoITEpKSxhd2FpdCB1Xyh0KX0sbl8pLGZfPSgpPT57bGV0IGU9QShHcCksdD1BKEtwKSxuPUEoaV8pLnRyaW0oKTtyZXR1cm4gZSYmbj09PWUuY29udGVudC50ZXh0fHx0JiZuPT09dH0scF89ZT0+e2xldCB0PSgpPT57X2QoKX07c28oKCk9PihlLmFkZEV2ZW50TGlzdGVuZXIoYHZpc2liaWxpdHljaGFuZ2VgLHQpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHZpc2liaWxpdHljaGFuZ2VgLHQpKSl9LG1fPWU9PntsZXQgdD0oKT0+e0EoWCkmJldfKCEwKX07c28oKCk9PihlLmFkZEV2ZW50TGlzdGVuZXIoYHBvcHN0YXRlYCx0KSwoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKGBwb3BzdGF0ZWAsdCkpKX0saF89KCk9PntsZXQgZT1CKCkuX3NtYXJ0c3VwcHx8e307ZS5hcHBWZXJzaW9uPWAwLjAuMWAsZS5jb21taXRIYXNoPWBlMDdjMjA4YTM4ZTZmNTA4NGM4ZWI0NjBiOTU4YTQyZjc3OGE1OTY1YCxlLmNvbW1pdEluZm89YGUwN2MyMDhhMzhlNmY1MDg0YzhlYjQ2MGI5NThhNDJmNzc4YTU5NjUgLSBNZXJnZSBwdWxsIHJlcXVlc3QgIzQ1NyBmcm9tIHNtYXJ0c3VwcC9kZXZlbG9wIC0gMjAyNi0wNy0yNyAwOToxOTozMiArMDIwMGAsQigpLl9zbWFydHN1cHA9ZX0sZ189KGU9amcuRGVmYXVsdCk9PntsZXR7d2lkZ2V0VjNVcmw6dH09Vi5nZXRPcHRpb25zKCksbj1uZXcgQXVkaW8oYCR7dH0vYXNzZXRzL3NvdW5kcy8ke2V9YCk7cmV0dXJuIG4uY3Jvc3NPcmlnaW49YGFub255bW91c2Asbi5sb2FkKCksbn0sX189ZT0+ZS5zdWJUeXBlIT09Ry5NZXNzYWdlU3ViVHlwZS5Db250YWN0JiYhW0cuTWVzc2FnZUNvbnRlbnRUeXBlLlJhdGVGb3JtLEcuTWVzc2FnZUNvbnRlbnRUeXBlLkFnZW50Sm9pbixHLk1lc3NhZ2VDb250ZW50VHlwZS5BZ2VudExlYXZlLEcuTWVzc2FnZUNvbnRlbnRUeXBlLkFnZW50QXNzaWduLEcuTWVzc2FnZUNvbnRlbnRUeXBlLkFnZW50VW5hc3NpZ25dLmluY2x1ZGVzKGUuY29udGVudC50eXBlKSx2Xz1lPT57cS5pc0luaXRpYWxpemVkKCkmJnEuZ2V0Q2xpZW50KCkubm90aWZ5KGUpfSx5Xz0oKT0+e1YuZ2V0T3B0aW9ucygpLmlzUHJldmlld01vZGV8fHZfKEsuV2Vic29ja2V0VmlzaXRvckNsaWVudC5FdmVudE5hbWUuV2lkZ2V0T3Blbil9LGJfPSgpPT52XyhLLldlYnNvY2tldFZpc2l0b3JDbGllbnQuRXZlbnROYW1lLldpZGdldFNob3cpLHhfPSgpPT5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT1gdmlzaWJsZWAsU189KCk9PntpZihBKHNzKSl7VF8uc2V0KCEwKTtsZXQgZT1CKCk7ZS5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLGBgLGUubG9jYXRpb24uaHJlZil9fSxDXz1PKCExKSx3Xz1PKCExKSxUXz1PKCExKSxFXz1lPT4hIUFnLmZpbmQodD0+ZS5pbmNsdWRlcyh0KSksRF89TyghMCk7Vi5hd2FpdE9wdGlvbnMoKS50aGVuKGU9PntsZXQgdD16byhVLlNvdW5kc0VuYWJsZWQpO3Q/RF8uc2V0KHQ9PT1gdHJ1ZWApOnR5cGVvZiBlLmVuYWJsZVNvdW5kcz09YGJvb2xlYW5gJiZEXy5zZXQoZS5lbmFibGVTb3VuZHMpLHdfLnNldChFXyhlLmJvb3RzdHJhcFVybCkpfSk7dmFyIE9fPWU9PntEXy5zZXQoZSksQm8oe25hbWU6VS5Tb3VuZHNFbmFibGVkLHZhbHVlOmUudG9TdHJpbmcoKX0pLGUmJmJwKCl9LGtfPU8oeF8oKSksQV89T2coKCk9PmtfLnNldCh4XygpKSw1MDApO0IoKS5hZGRFdmVudExpc3RlbmVyKGB2aXNpYmlsaXR5Y2hhbmdlYCwoKT0+e0FfKCl9KTt2YXIgal89TygwKSxNXz0oKT0+al8udXBkYXRlKGU9PmUrMSksTl89TyghMCksUF89KGUsdCk9Pih2byhgd2lkZ2V0IHZpc2libGU6ICR7U3RyaW5nKHQpfSA9PiByZWFzb246ICR7ZX1gKSx0JiZ0IT09QShSXykmJmJfKCksdCksRl89TygpLElfPSgpPT5GXy5zZXQoITApLExfPSgpPT5GXy5zZXQoITEpLFJfPWsoW011LHNzLEZfLGVkLG9kLGsoWyR1LFJwLGFfLG9kXSwoW2UsdCxuLHJdKT0+e2xldHtoaWRlT2ZmbGluZUNoYXQ6aSxpc1ByZXZpZXdNb2RlOmF9PVYuZ2V0T3B0aW9ucygpO3JldHVybiBlPT09Sy5BY2NvdW50U3RhdHVzLk9mZmxpbmUmJiEhaSYmU3AodCkubGVuZ3RoPT09MCYmbiYmIXImJiFhfSldLChbZSx0LG4scixpLGFdKT0+e2xldHtoaWRlTW9iaWxlV2lkZ2V0Om8saGlkZVdpZGdldDpzfT1WLmdldE9wdGlvbnMoKTtyZXR1cm4gZT8uYmFubmVkQXQ/UF8oYHZpc2l0b3IgaXMgYmFubmVkYCwhMSk6dCYmbz9QXyhgb3B0aW9uICdoaWRlTW9iaWxlV2lkZ2V0JyBpcyB0cnVlYCwhMSk6dHlwZW9mIG49PWBib29sZWFuYD9QXyhgc2V0IGJ5IEFQSSBjb21tYW5kYCxuKTpyJiYhaT9QXyhgY2hhdCBzdGF0dXMgaXMgbm90IHBlbmRpbmdgLCEwKTphP1BfKGBvcHRpb24gJ2hpZGVPZmZsaW5lQ2hhdCcgaXMgdHJ1ZWAsITEpOlBfKGBvcHRpb24gJ2hpZGVXaWRnZXQnIGlzICR7U3RyaW5nKHMpfWAsIXMpfSksel89ayhbc3NdLChbZV0pPT57bGV0e29wZW5PblRyaWdnZXI6dH09Vi5nZXRPcHRpb25zKCk7cmV0dXJuIHQmJiFlfSksQl89W10sVl89ZT0+KEJfLnB1c2goZSksKCk9PntsZXQgdD1CXy5pbmRleE9mKGUpO3QhPT0tMSYmQl8uc3BsaWNlKHQsMSl9KSxIXz0oKT0+Ql8ubGVuZ3RoPT09MD8hMTooQl8ucG9wKCkoKSwhMCksWD1ycyhVLklzTWVzc2VuZ2VyRnJhbWVPcGVuZWQsITEsZT0+IUEoc3MpJiZlPT09YHRydWVgKSxVXz0oZT0hMSk9PntsZXR7d2lkZ2V0QmxvY2tpbmdPcHRpb25zOnR9PVYuZ2V0T3B0aW9ucygpO3Q/LmRpc2FibGVPcGVuTWVzc2VuZ2VyJiYhZXx8KGNoKCksU18oKSxYLnNldCghMCksZXYoKSxDaCgpLHlfKCkpfSxXXz1lPT57aWYoQShzcykmJkEoVF8pJiYhZSlyZXR1cm4gVF8uc2V0KCExKSxCKCkuaGlzdG9yeS5iYWNrKCk7ei5lbWl0KGBtZXNzZW5nZXJDbG9zZWAsITApLFguc2V0KCExKX0sR189ZT0+e2lmKCFlKXJldHVybjtsZXR7d2lkZ2V0QmxvY2tpbmdPcHRpb25zOnR9PVYuZ2V0T3B0aW9ucygpLG49ZT0+e2lmKGUua2V5PT09VGguRXNjYXBlKXtpZihIXygpfHx0Py5kaXNhYmxlQ2xvc2VCdXR0b24pcmV0dXJuO1dfKCl9fSxyPWUub3duZXJEb2N1bWVudDtyZXR1cm4gci5hZGRFdmVudExpc3RlbmVyKGBrZXlkb3duYCxuLCEwKSx7ZGVzdHJveSgpe3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihga2V5ZG93bmAsbiwhMCl9fX0sS189ayhbQ18sUl8sWF0sKFtlLHQsbl0pPT5lJiZ0JiZuKTtmdW5jdGlvbiBxXygpe2xldCBlPU8oITEpLHtzdWJzY3JpYmU6dH09ZSxuPW51bGw7cmV0dXJue3N1YnNjcmliZTp0LGhhbmRsZURyYWdPdmVyOih0LHI9ITApPT57ciYmdC5wcmV2ZW50RGVmYXVsdCgpLEEoZSl8fGUuc2V0KCEwKSxuJiZjbGVhclRpbWVvdXQobiksbj13aW5kb3cuc2V0VGltZW91dCgoKT0+e2Uuc2V0KCExKX0sMjAwKX0saGFuZGxlRHJvcDp0PT57dC5wcmV2ZW50RGVmYXVsdCgpLG4mJmNsZWFyVGltZW91dChuKSxlLnNldCghMSk7bGV0IHI9dC5kYXRhVHJhbnNmZXI/LmZpbGVzP1suLi50LmRhdGFUcmFuc2Zlci5maWxlc106W107cmV0dXJuIHIubGVuZ3RoPT09MCYmX3MoYERyb3BwZWQgaXRlbShzKSBhcmUgbm90IHByb2Nlc3NhYmxlIGZpbGVzYCkse2Ryb3BwZWRGaWxlczpyfX19fXZhciBKXz1xXygpLFlfPWsoW0NfLFJfLFhdLChbZSx0LG5dKT0+ZSYmdCYmIW4pLFhfPU8oITEpLFpfPU8oITEpLFFfPSgpPT57WF8uc2V0KCEwKSxaXy5zZXQoITEpfSwkXz0oKT0+e1pfLnNldCghMCksWF8uc2V0KCExKX0sZXY9KGU9ITEpPT57Wl8uc2V0KCExKSxlJiZCbyh7bmFtZTpVLlBvcHVwQ2xvc2VkQXQsdmFsdWU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSl9LHR2PWsoW3NzXSwoW2VdKT0+e2xldHttb2JpbGVQb3B1cHNFbmFibGVkOnR9PVYuZ2V0T3B0aW9ucygpO3JldHVybiBlPyEhdDohMH0pLG52PWsoW05wXSwoW2VdKT0+e2xldCB0PXpvKFUuUG9wdXBDbG9zZWRBdCk/P251bGw7cmV0dXJuIXR8fCFlPyEwOm5ldyBEYXRlKGUuY3JlYXRlZEF0KS5nZXRUaW1lKCk+bmV3IERhdGUodCkuZ2V0VGltZSgpfSkscnY9ayhbQ18sUl8sWF8sWCx0dl0sKFtlLHQsbixyLGldKT0+ZSYmdCYmbiYmIXImJmkpLGl2PWsoW0NfLFJfLFpfLFgsTnAsbnYsdHYsV2ZdLChbZSx0LG4scixpLGEsbyxzXSk9PmUmJnQmJm4mJmkmJmEmJiFyJiZvJiYhcyksYXY9e3doaXRlOmAjZmZmZmZmYCxzbGF0ZTEwMDpgI2YxZjVmOWAsc2xhdGUyMDA6YCNlMmU4ZjBgLHNsYXRlMzAwOmAjY2JkNWUxYCxzbGF0ZTkwMDpgIzBmMTcyYWAsYmx1ZTcwMDpgIzFkNGVkOGAsc21hcnRzdXBwQmx1ZTpgIzEyMzNkZmB9O2Z1bmN0aW9uIFooZSx0KXtzdihlKSYmKGU9YDEwMCVgKTtsZXQgbj1jdihlKTtyZXR1cm4gZT10PT09MzYwP2U6TWF0aC5taW4odCxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxuJiYoZT1wYXJzZUludChTdHJpbmcoZSp0KSwxMCkvMTAwKSxNYXRoLmFicyhlLXQpPDFlLTY/MTooZT10PT09MzYwPyhlPDA/ZSV0K3Q6ZSV0KS9wYXJzZUZsb2F0KFN0cmluZyh0KSk6ZSV0L3BhcnNlRmxvYXQoU3RyaW5nKHQpKSxlKX1mdW5jdGlvbiBvdihlKXtyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgwLGUpKX1mdW5jdGlvbiBzdihlKXtyZXR1cm4gdHlwZW9mIGU9PWBzdHJpbmdgJiZlLmluZGV4T2YoYC5gKSE9PS0xJiZwYXJzZUZsb2F0KGUpPT09MX1mdW5jdGlvbiBjdihlKXtyZXR1cm4gdHlwZW9mIGU9PWBzdHJpbmdgJiZlLmluZGV4T2YoYCVgKSE9PS0xfWZ1bmN0aW9uIGx2KGUpe3JldHVybiBlPXBhcnNlRmxvYXQoZSksKGlzTmFOKGUpfHxlPDB8fGU+MSkmJihlPTEpLGV9ZnVuY3Rpb24gdXYoZSl7cmV0dXJuIE51bWJlcihlKTw9MT9gJHtOdW1iZXIoZSkqMTAwfSVgOmV9ZnVuY3Rpb24gZHYoZSl7cmV0dXJuIGUubGVuZ3RoPT09MT9gMGArZTpTdHJpbmcoZSl9ZnVuY3Rpb24gZnYoZSx0LG4pe3JldHVybntyOlooZSwyNTUpKjI1NSxnOloodCwyNTUpKjI1NSxiOloobiwyNTUpKjI1NX19ZnVuY3Rpb24gcHYoZSx0LG4pe2U9WihlLDI1NSksdD1aKHQsMjU1KSxuPVoobiwyNTUpO2xldCByPU1hdGgubWF4KGUsdCxuKSxpPU1hdGgubWluKGUsdCxuKSxhPTAsbz0wLHM9KHIraSkvMjtpZihyPT09aSlvPTAsYT0wO2Vsc2V7bGV0IGM9ci1pO3N3aXRjaChvPXM+LjU/Yy8oMi1yLWkpOmMvKHIraSkscil7Y2FzZSBlOmE9KHQtbikvYysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OmE9KG4tZSkvYysyO2JyZWFrO2Nhc2UgbjphPShlLXQpL2MrNDticmVhaztkZWZhdWx0OmJyZWFrfWEvPTZ9cmV0dXJue2g6YSxzOm8sbDpzfX1mdW5jdGlvbiBtdihlLHQsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmLS1uLG48MS82P2UrKHQtZSkqKDYqbik6bjwxLzI/dDpuPDIvMz9lKyh0LWUpKigyLzMtbikqNjplfWZ1bmN0aW9uIGh2KGUsdCxuKXtsZXQgcixpLGE7aWYoZT1aKGUsMzYwKSx0PVoodCwxMDApLG49WihuLDEwMCksdD09PTApaT1uLGE9bixyPW47ZWxzZXtsZXQgbz1uPC41P24qKDErdCk6bit0LW4qdCxzPTIqbi1vO3I9bXYocyxvLGUrMS8zKSxpPW12KHMsbyxlKSxhPW12KHMsbyxlLTEvMyl9cmV0dXJue3I6cioyNTUsZzppKjI1NSxiOmEqMjU1fX1mdW5jdGlvbiBndihlLHQsbil7ZT1aKGUsMjU1KSx0PVoodCwyNTUpLG49WihuLDI1NSk7bGV0IHI9TWF0aC5tYXgoZSx0LG4pLGk9TWF0aC5taW4oZSx0LG4pLGE9MCxvPXIscz1yLWksYz1yPT09MD8wOnMvcjtpZihyPT09aSlhPTA7ZWxzZXtzd2l0Y2gocil7Y2FzZSBlOmE9KHQtbikvcysodDxuPzY6MCk7YnJlYWs7Y2FzZSB0OmE9KG4tZSkvcysyO2JyZWFrO2Nhc2UgbjphPShlLXQpL3MrNDticmVhaztkZWZhdWx0OmJyZWFrfWEvPTZ9cmV0dXJue2g6YSxzOmMsdjpvfX1mdW5jdGlvbiBfdihlLHQsbil7ZT1aKGUsMzYwKSo2LHQ9Wih0LDEwMCksbj1aKG4sMTAwKTtsZXQgcj1NYXRoLmZsb29yKGUpLGk9ZS1yLGE9biooMS10KSxvPW4qKDEtaSp0KSxzPW4qKDEtKDEtaSkqdCksYz1yJTYsbD1bbixvLGEsYSxzLG5dW2NdLHU9W3MsbixuLG8sYSxhXVtjXSxkPVthLGEscyxuLG4sb11bY107cmV0dXJue3I6bCoyNTUsZzp1KjI1NSxiOmQqMjU1fX1mdW5jdGlvbiB2dihlLHQsbixyKXtsZXQgaT1bZHYoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGR2KE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxkdihNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSldO3JldHVybiByJiZpWzBdLnN0YXJ0c1dpdGgoaVswXS5jaGFyQXQoMSkpJiZpWzFdLnN0YXJ0c1dpdGgoaVsxXS5jaGFyQXQoMSkpJiZpWzJdLnN0YXJ0c1dpdGgoaVsyXS5jaGFyQXQoMSkpP2lbMF0uY2hhckF0KDApK2lbMV0uY2hhckF0KDApK2lbMl0uY2hhckF0KDApOmkuam9pbihgYCl9ZnVuY3Rpb24geXYoZSx0LG4scixpKXtsZXQgYT1bZHYoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGR2KE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpKSxkdihNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KSksZHYoU3YocikpXTtyZXR1cm4gaSYmYVswXS5zdGFydHNXaXRoKGFbMF0uY2hhckF0KDEpKSYmYVsxXS5zdGFydHNXaXRoKGFbMV0uY2hhckF0KDEpKSYmYVsyXS5zdGFydHNXaXRoKGFbMl0uY2hhckF0KDEpKSYmYVszXS5zdGFydHNXaXRoKGFbM10uY2hhckF0KDEpKT9hWzBdLmNoYXJBdCgwKSthWzFdLmNoYXJBdCgwKSthWzJdLmNoYXJBdCgwKSthWzNdLmNoYXJBdCgwKTphLmpvaW4oYGApfWZ1bmN0aW9uIGJ2KGUsdCxuLHIpe2xldCBpPWUvMTAwLGE9dC8xMDAsbz1uLzEwMCxzPXIvMTAwO3JldHVybntyOjI1NSooMS1pKSooMS1zKSxnOjI1NSooMS1hKSooMS1zKSxiOjI1NSooMS1vKSooMS1zKX19ZnVuY3Rpb24geHYoZSx0LG4pe2xldCByPTEtZS8yNTUsaT0xLXQvMjU1LGE9MS1uLzI1NSxvPU1hdGgubWluKHIsaSxhKTtyZXR1cm4gbz09PTE/KHI9MCxpPTAsYT0wKToocj0oci1vKS8oMS1vKSoxMDAsaT0oaS1vKS8oMS1vKSoxMDAsYT0oYS1vKS8oMS1vKSoxMDApLG8qPTEwMCx7YzpNYXRoLnJvdW5kKHIpLG06TWF0aC5yb3VuZChpKSx5Ok1hdGgucm91bmQoYSksazpNYXRoLnJvdW5kKG8pfX1mdW5jdGlvbiBTdihlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKjI1NSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIEN2KGUpe3JldHVybiB3dihlKS8yNTV9ZnVuY3Rpb24gd3YoZSl7cmV0dXJuIHBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIFR2KGUpe3JldHVybntyOmU+PjE2LGc6KGUmNjUyODApPj44LGI6ZSYyNTV9fXZhciBFdj17YWxpY2VibHVlOmAjZjBmOGZmYCxhbnRpcXVld2hpdGU6YCNmYWViZDdgLGFxdWE6YCMwMGZmZmZgLGFxdWFtYXJpbmU6YCM3ZmZmZDRgLGF6dXJlOmAjZjBmZmZmYCxiZWlnZTpgI2Y1ZjVkY2AsYmlzcXVlOmAjZmZlNGM0YCxibGFjazpgIzAwMDAwMGAsYmxhbmNoZWRhbG1vbmQ6YCNmZmViY2RgLGJsdWU6YCMwMDAwZmZgLGJsdWV2aW9sZXQ6YCM4YTJiZTJgLGJyb3duOmAjYTUyYTJhYCxidXJseXdvb2Q6YCNkZWI4ODdgLGNhZGV0Ymx1ZTpgIzVmOWVhMGAsY2hhcnRyZXVzZTpgIzdmZmYwMGAsY2hvY29sYXRlOmAjZDI2OTFlYCxjb3JhbDpgI2ZmN2Y1MGAsY29ybmZsb3dlcmJsdWU6YCM2NDk1ZWRgLGNvcm5zaWxrOmAjZmZmOGRjYCxjcmltc29uOmAjZGMxNDNjYCxjeWFuOmAjMDBmZmZmYCxkYXJrYmx1ZTpgIzAwMDA4YmAsZGFya2N5YW46YCMwMDhiOGJgLGRhcmtnb2xkZW5yb2Q6YCNiODg2MGJgLGRhcmtncmF5OmAjYTlhOWE5YCxkYXJrZ3JlZW46YCMwMDY0MDBgLGRhcmtncmV5OmAjYTlhOWE5YCxkYXJra2hha2k6YCNiZGI3NmJgLGRhcmttYWdlbnRhOmAjOGIwMDhiYCxkYXJrb2xpdmVncmVlbjpgIzU1NmIyZmAsZGFya29yYW5nZTpgI2ZmOGMwMGAsZGFya29yY2hpZDpgIzk5MzJjY2AsZGFya3JlZDpgIzhiMDAwMGAsZGFya3NhbG1vbjpgI2U5OTY3YWAsZGFya3NlYWdyZWVuOmAjOGZiYzhmYCxkYXJrc2xhdGVibHVlOmAjNDgzZDhiYCxkYXJrc2xhdGVncmF5OmAjMmY0ZjRmYCxkYXJrc2xhdGVncmV5OmAjMmY0ZjRmYCxkYXJrdHVycXVvaXNlOmAjMDBjZWQxYCxkYXJrdmlvbGV0OmAjOTQwMGQzYCxkZWVwcGluazpgI2ZmMTQ5M2AsZGVlcHNreWJsdWU6YCMwMGJmZmZgLGRpbWdyYXk6YCM2OTY5NjlgLGRpbWdyZXk6YCM2OTY5NjlgLGRvZGdlcmJsdWU6YCMxZTkwZmZgLGZpcmVicmljazpgI2IyMjIyMmAsZmxvcmFsd2hpdGU6YCNmZmZhZjBgLGZvcmVzdGdyZWVuOmAjMjI4YjIyYCxmdWNoc2lhOmAjZmYwMGZmYCxnYWluc2Jvcm86YCNkY2RjZGNgLGdob3N0d2hpdGU6YCNmOGY4ZmZgLGdvbGRlbnJvZDpgI2RhYTUyMGAsZ29sZDpgI2ZmZDcwMGAsZ3JheTpgIzgwODA4MGAsZ3JlZW46YCMwMDgwMDBgLGdyZWVueWVsbG93OmAjYWRmZjJmYCxncmV5OmAjODA4MDgwYCxob25leWRldzpgI2YwZmZmMGAsaG90cGluazpgI2ZmNjliNGAsaW5kaWFucmVkOmAjY2Q1YzVjYCxpbmRpZ286YCM0YjAwODJgLGl2b3J5OmAjZmZmZmYwYCxraGFraTpgI2YwZTY4Y2AsbGF2ZW5kZXJibHVzaDpgI2ZmZjBmNWAsbGF2ZW5kZXI6YCNlNmU2ZmFgLGxhd25ncmVlbjpgIzdjZmMwMGAsbGVtb25jaGlmZm9uOmAjZmZmYWNkYCxsaWdodGJsdWU6YCNhZGQ4ZTZgLGxpZ2h0Y29yYWw6YCNmMDgwODBgLGxpZ2h0Y3lhbjpgI2UwZmZmZmAsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6YCNmYWZhZDJgLGxpZ2h0Z3JheTpgI2QzZDNkM2AsbGlnaHRncmVlbjpgIzkwZWU5MGAsbGlnaHRncmV5OmAjZDNkM2QzYCxsaWdodHBpbms6YCNmZmI2YzFgLGxpZ2h0c2FsbW9uOmAjZmZhMDdhYCxsaWdodHNlYWdyZWVuOmAjMjBiMmFhYCxsaWdodHNreWJsdWU6YCM4N2NlZmFgLGxpZ2h0c2xhdGVncmF5OmAjNzc4ODk5YCxsaWdodHNsYXRlZ3JleTpgIzc3ODg5OWAsbGlnaHRzdGVlbGJsdWU6YCNiMGM0ZGVgLGxpZ2h0eWVsbG93OmAjZmZmZmUwYCxsaW1lOmAjMDBmZjAwYCxsaW1lZ3JlZW46YCMzMmNkMzJgLGxpbmVuOmAjZmFmMGU2YCxtYWdlbnRhOmAjZmYwMGZmYCxtYXJvb246YCM4MDAwMDBgLG1lZGl1bWFxdWFtYXJpbmU6YCM2NmNkYWFgLG1lZGl1bWJsdWU6YCMwMDAwY2RgLG1lZGl1bW9yY2hpZDpgI2JhNTVkM2AsbWVkaXVtcHVycGxlOmAjOTM3MGRiYCxtZWRpdW1zZWFncmVlbjpgIzNjYjM3MWAsbWVkaXVtc2xhdGVibHVlOmAjN2I2OGVlYCxtZWRpdW1zcHJpbmdncmVlbjpgIzAwZmE5YWAsbWVkaXVtdHVycXVvaXNlOmAjNDhkMWNjYCxtZWRpdW12aW9sZXRyZWQ6YCNjNzE1ODVgLG1pZG5pZ2h0Ymx1ZTpgIzE5MTk3MGAsbWludGNyZWFtOmAjZjVmZmZhYCxtaXN0eXJvc2U6YCNmZmU0ZTFgLG1vY2Nhc2luOmAjZmZlNGI1YCxuYXZham93aGl0ZTpgI2ZmZGVhZGAsbmF2eTpgIzAwMDA4MGAsb2xkbGFjZTpgI2ZkZjVlNmAsb2xpdmU6YCM4MDgwMDBgLG9saXZlZHJhYjpgIzZiOGUyM2Asb3JhbmdlOmAjZmZhNTAwYCxvcmFuZ2VyZWQ6YCNmZjQ1MDBgLG9yY2hpZDpgI2RhNzBkNmAscGFsZWdvbGRlbnJvZDpgI2VlZThhYWAscGFsZWdyZWVuOmAjOThmYjk4YCxwYWxldHVycXVvaXNlOmAjYWZlZWVlYCxwYWxldmlvbGV0cmVkOmAjZGI3MDkzYCxwYXBheWF3aGlwOmAjZmZlZmQ1YCxwZWFjaHB1ZmY6YCNmZmRhYjlgLHBlcnU6YCNjZDg1M2ZgLHBpbms6YCNmZmMwY2JgLHBsdW06YCNkZGEwZGRgLHBvd2RlcmJsdWU6YCNiMGUwZTZgLHB1cnBsZTpgIzgwMDA4MGAscmViZWNjYXB1cnBsZTpgIzY2MzM5OWAscmVkOmAjZmYwMDAwYCxyb3N5YnJvd246YCNiYzhmOGZgLHJveWFsYmx1ZTpgIzQxNjllMWAsc2FkZGxlYnJvd246YCM4YjQ1MTNgLHNhbG1vbjpgI2ZhODA3MmAsc2FuZHlicm93bjpgI2Y0YTQ2MGAsc2VhZ3JlZW46YCMyZThiNTdgLHNlYXNoZWxsOmAjZmZmNWVlYCxzaWVubmE6YCNhMDUyMmRgLHNpbHZlcjpgI2MwYzBjMGAsc2t5Ymx1ZTpgIzg3Y2VlYmAsc2xhdGVibHVlOmAjNmE1YWNkYCxzbGF0ZWdyYXk6YCM3MDgwOTBgLHNsYXRlZ3JleTpgIzcwODA5MGAsc25vdzpgI2ZmZmFmYWAsc3ByaW5nZ3JlZW46YCMwMGZmN2ZgLHN0ZWVsYmx1ZTpgIzQ2ODJiNGAsdGFuOmAjZDJiNDhjYCx0ZWFsOmAjMDA4MDgwYCx0aGlzdGxlOmAjZDhiZmQ4YCx0b21hdG86YCNmZjYzNDdgLHR1cnF1b2lzZTpgIzQwZTBkMGAsdmlvbGV0OmAjZWU4MmVlYCx3aGVhdDpgI2Y1ZGViM2Asd2hpdGU6YCNmZmZmZmZgLHdoaXRlc21va2U6YCNmNWY1ZjVgLHllbGxvdzpgI2ZmZmYwMGAseWVsbG93Z3JlZW46YCM5YWNkMzJgfTtmdW5jdGlvbiBEdihlKXtsZXQgdD17cjowLGc6MCxiOjB9LG49MSxyPW51bGwsaT1udWxsLGE9bnVsbCxvPSExLHM9ITE7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYCYmKGU9TXYoZSkpLHR5cGVvZiBlPT1gb2JqZWN0YCYmKE52KGUucikmJk52KGUuZykmJk52KGUuYik/KHQ9ZnYoZS5yLGUuZyxlLmIpLG89ITAscz1TdHJpbmcoZS5yKS5zdWJzdHIoLTEpPT09YCVgP2BwcmdiYDpgcmdiYCk6TnYoZS5oKSYmTnYoZS5zKSYmTnYoZS52KT8ocj11dihlLnMpLGk9dXYoZS52KSx0PV92KGUuaCxyLGkpLG89ITAscz1gaHN2YCk6TnYoZS5oKSYmTnYoZS5zKSYmTnYoZS5sKT8ocj11dihlLnMpLGE9dXYoZS5sKSx0PWh2KGUuaCxyLGEpLG89ITAscz1gaHNsYCk6TnYoZS5jKSYmTnYoZS5tKSYmTnYoZS55KSYmTnYoZS5rKSYmKHQ9YnYoZS5jLGUubSxlLnksZS5rKSxvPSEwLHM9YGNteWtgKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxgYWApJiYobj1lLmEpKSxuPWx2KG4pLHtvazpvLGZvcm1hdDplLmZvcm1hdHx8cyxyOk1hdGgubWluKDI1NSxNYXRoLm1heCh0LnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KHQuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgodC5iLDApKSxhOm59fXZhciBPdj1gKD86Wy1cXCtdP1xcZCpcXC5cXGQrJT8pfCg/OlstXFwrXT9cXGQrJT8pYCxrdj1gW1xcc3xcXChdKyhgK092K2ApWyx8XFxzXSsoKD86Wy1cXCtdP1xcZCpcXC5cXGQrJT8pfCg/OlstXFwrXT9cXGQrJT8pKVssfFxcc10rKCg/OlstXFwrXT9cXGQqXFwuXFxkKyU/KXwoPzpbLVxcK10/XFxkKyU/KSlcXHMqXFwpP2AsQXY9YFtcXHN8XFwoXSsoYCtPditgKVssfFxcc10rKCg/OlstXFwrXT9cXGQqXFwuXFxkKyU/KXwoPzpbLVxcK10/XFxkKyU/KSlbLHxcXHNdKygoPzpbLVxcK10/XFxkKlxcLlxcZCslPyl8KD86Wy1cXCtdP1xcZCslPykpWyx8XFxzXSsoKD86Wy1cXCtdP1xcZCpcXC5cXGQrJT8pfCg/OlstXFwrXT9cXGQrJT8pKVxccypcXCk/YCxqdj17Q1NTX1VOSVQ6bmV3IFJlZ0V4cChPdikscmdiOlJlZ0V4cChgcmdiYCtrdikscmdiYTpSZWdFeHAoYHJnYmFgK0F2KSxoc2w6UmVnRXhwKGBoc2xgK2t2KSxoc2xhOlJlZ0V4cChgaHNsYWArQXYpLGhzdjpSZWdFeHAoYGhzdmAra3YpLGhzdmE6UmVnRXhwKGBoc3ZhYCtBdiksY215azpSZWdFeHAoYGNteWtgK0F2KSxoZXgzOi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg2Oi9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkLyxoZXg0Oi9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4ODovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KSQvfTtmdW5jdGlvbiBNdihlKXtpZihlPWUudHJpbSgpLnRvTG93ZXJDYXNlKCksZS5sZW5ndGg9PT0wKXJldHVybiExO2xldCB0PSExO2lmKEV2W2VdKWU9RXZbZV0sdD0hMDtlbHNlIGlmKGU9PT1gdHJhbnNwYXJlbnRgKXJldHVybntyOjAsZzowLGI6MCxhOjAsZm9ybWF0OmBuYW1lYH07bGV0IG49anYucmdiLmV4ZWMoZSk7cmV0dXJuIG4/e3I6blsxXSxnOm5bMl0sYjpuWzNdfToobj1qdi5yZ2JhLmV4ZWMoZSksbj97cjpuWzFdLGc6blsyXSxiOm5bM10sYTpuWzRdfToobj1qdi5oc2wuZXhlYyhlKSxuP3toOm5bMV0sczpuWzJdLGw6blszXX06KG49anYuaHNsYS5leGVjKGUpLG4/e2g6blsxXSxzOm5bMl0sbDpuWzNdLGE6bls0XX06KG49anYuaHN2LmV4ZWMoZSksbj97aDpuWzFdLHM6blsyXSx2Om5bM119OihuPWp2LmhzdmEuZXhlYyhlKSxuP3toOm5bMV0sczpuWzJdLHY6blszXSxhOm5bNF19OihuPWp2LmNteWsuZXhlYyhlKSxuP3tjOm5bMV0sbTpuWzJdLHk6blszXSxrOm5bNF19OihuPWp2LmhleDguZXhlYyhlKSxuP3tyOnd2KG5bMV0pLGc6d3YoblsyXSksYjp3dihuWzNdKSxhOkN2KG5bNF0pLGZvcm1hdDp0P2BuYW1lYDpgaGV4OGB9OihuPWp2LmhleDYuZXhlYyhlKSxuP3tyOnd2KG5bMV0pLGc6d3YoblsyXSksYjp3dihuWzNdKSxmb3JtYXQ6dD9gbmFtZWA6YGhleGB9OihuPWp2LmhleDQuZXhlYyhlKSxuP3tyOnd2KG5bMV0rblsxXSksZzp3dihuWzJdK25bMl0pLGI6d3YoblszXStuWzNdKSxhOkN2KG5bNF0rbls0XSksZm9ybWF0OnQ/YG5hbWVgOmBoZXg4YH06KG49anYuaGV4My5leGVjKGUpLG4/e3I6d3YoblsxXStuWzFdKSxnOnd2KG5bMl0rblsyXSksYjp3dihuWzNdK25bM10pLGZvcm1hdDp0P2BuYW1lYDpgaGV4YH06ITEpKSkpKSkpKSkpfWZ1bmN0aW9uIE52KGUpe3JldHVybiB0eXBlb2YgZT09YG51bWJlcmA/IU51bWJlci5pc05hTihlKTpqdi5DU1NfVU5JVC50ZXN0KGUpfXZhciBQdj1jbGFzcyBle2NvbnN0cnVjdG9yKHQ9YGAsbj17fSl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7dHlwZW9mIHQ9PWBudW1iZXJgJiYodD1Udih0KSksdGhpcy5vcmlnaW5hbElucHV0PXQ7bGV0IHI9RHYodCk7dGhpcy5vcmlnaW5hbElucHV0PXQsdGhpcy5yPXIucix0aGlzLmc9ci5nLHRoaXMuYj1yLmIsdGhpcy5hPXIuYSx0aGlzLnJvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLmEpLzEwMCx0aGlzLmZvcm1hdD1uLmZvcm1hdD8/ci5mb3JtYXQsdGhpcy5ncmFkaWVudFR5cGU9bi5ncmFkaWVudFR5cGUsdGhpcy5yPDEmJih0aGlzLnI9TWF0aC5yb3VuZCh0aGlzLnIpKSx0aGlzLmc8MSYmKHRoaXMuZz1NYXRoLnJvdW5kKHRoaXMuZykpLHRoaXMuYjwxJiYodGhpcy5iPU1hdGgucm91bmQodGhpcy5iKSksdGhpcy5pc1ZhbGlkPXIub2t9aXNEYXJrKCl7cmV0dXJuIHRoaXMuZ2V0QnJpZ2h0bmVzcygpPDEyOH1pc0xpZ2h0KCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9Z2V0QnJpZ2h0bmVzcygpe2xldCBlPXRoaXMudG9SZ2IoKTtyZXR1cm4oZS5yKjI5OStlLmcqNTg3K2UuYioxMTQpLzFlM31nZXRMdW1pbmFuY2UoKXtsZXQgZT10aGlzLnRvUmdiKCksdCxuLHIsaT1lLnIvMjU1LGE9ZS5nLzI1NSxvPWUuYi8yNTU7cmV0dXJuIHQ9aTw9LjAzOTI4P2kvMTIuOTI6KChpKy4wNTUpLzEuMDU1KSoqMi40LG49YTw9LjAzOTI4P2EvMTIuOTI6KChhKy4wNTUpLzEuMDU1KSoqMi40LHI9bzw9LjAzOTI4P28vMTIuOTI6KChvKy4wNTUpLzEuMDU1KSoqMi40LC4yMTI2KnQrLjcxNTIqbisuMDcyMipyfWdldEFscGhhKCl7cmV0dXJuIHRoaXMuYX1zZXRBbHBoYShlKXtyZXR1cm4gdGhpcy5hPWx2KGUpLHRoaXMucm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuYSkvMTAwLHRoaXN9aXNNb25vY2hyb21lKCl7bGV0e3M6ZX09dGhpcy50b0hzbCgpO3JldHVybiBlPT09MH10b0hzdigpe2xldCBlPWd2KHRoaXMucix0aGlzLmcsdGhpcy5iKTtyZXR1cm57aDplLmgqMzYwLHM6ZS5zLHY6ZS52LGE6dGhpcy5hfX10b0hzdlN0cmluZygpe2xldCBlPWd2KHRoaXMucix0aGlzLmcsdGhpcy5iKSx0PU1hdGgucm91bmQoZS5oKjM2MCksbj1NYXRoLnJvdW5kKGUucyoxMDApLHI9TWF0aC5yb3VuZChlLnYqMTAwKTtyZXR1cm4gdGhpcy5hPT09MT9gaHN2KCR7dH0sICR7bn0lLCAke3J9JSlgOmBoc3ZhKCR7dH0sICR7bn0lLCAke3J9JSwgJHt0aGlzLnJvdW5kQX0pYH10b0hzbCgpe2xldCBlPXB2KHRoaXMucix0aGlzLmcsdGhpcy5iKTtyZXR1cm57aDplLmgqMzYwLHM6ZS5zLGw6ZS5sLGE6dGhpcy5hfX10b0hzbFN0cmluZygpe2xldCBlPXB2KHRoaXMucix0aGlzLmcsdGhpcy5iKSx0PU1hdGgucm91bmQoZS5oKjM2MCksbj1NYXRoLnJvdW5kKGUucyoxMDApLHI9TWF0aC5yb3VuZChlLmwqMTAwKTtyZXR1cm4gdGhpcy5hPT09MT9gaHNsKCR7dH0sICR7bn0lLCAke3J9JSlgOmBoc2xhKCR7dH0sICR7bn0lLCAke3J9JSwgJHt0aGlzLnJvdW5kQX0pYH10b0hleChlPSExKXtyZXR1cm4gdnYodGhpcy5yLHRoaXMuZyx0aGlzLmIsZSl9dG9IZXhTdHJpbmcoZT0hMSl7cmV0dXJuYCNgK3RoaXMudG9IZXgoZSl9dG9IZXg4KGU9ITEpe3JldHVybiB5dih0aGlzLnIsdGhpcy5nLHRoaXMuYix0aGlzLmEsZSl9dG9IZXg4U3RyaW5nKGU9ITEpe3JldHVybmAjYCt0aGlzLnRvSGV4OChlKX10b0hleFNob3J0U3RyaW5nKGU9ITEpe3JldHVybiB0aGlzLmE9PT0xP3RoaXMudG9IZXhTdHJpbmcoZSk6dGhpcy50b0hleDhTdHJpbmcoZSl9dG9SZ2IoKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuciksZzpNYXRoLnJvdW5kKHRoaXMuZyksYjpNYXRoLnJvdW5kKHRoaXMuYiksYTp0aGlzLmF9fXRvUmdiU3RyaW5nKCl7bGV0IGU9TWF0aC5yb3VuZCh0aGlzLnIpLHQ9TWF0aC5yb3VuZCh0aGlzLmcpLG49TWF0aC5yb3VuZCh0aGlzLmIpO3JldHVybiB0aGlzLmE9PT0xP2ByZ2IoJHtlfSwgJHt0fSwgJHtufSlgOmByZ2JhKCR7ZX0sICR7dH0sICR7bn0sICR7dGhpcy5yb3VuZEF9KWB9dG9QZXJjZW50YWdlUmdiKCl7bGV0IGU9ZT0+YCR7TWF0aC5yb3VuZChaKGUsMjU1KSoxMDApfSVgO3JldHVybntyOmUodGhpcy5yKSxnOmUodGhpcy5nKSxiOmUodGhpcy5iKSxhOnRoaXMuYX19dG9QZXJjZW50YWdlUmdiU3RyaW5nKCl7bGV0IGU9ZT0+TWF0aC5yb3VuZChaKGUsMjU1KSoxMDApO3JldHVybiB0aGlzLmE9PT0xP2ByZ2IoJHtlKHRoaXMucil9JSwgJHtlKHRoaXMuZyl9JSwgJHtlKHRoaXMuYil9JSlgOmByZ2JhKCR7ZSh0aGlzLnIpfSUsICR7ZSh0aGlzLmcpfSUsICR7ZSh0aGlzLmIpfSUsICR7dGhpcy5yb3VuZEF9KWB9dG9DbXlrKCl7cmV0dXJuey4uLnh2KHRoaXMucix0aGlzLmcsdGhpcy5iKX19dG9DbXlrU3RyaW5nKCl7bGV0e2M6ZSxtOnQseTpuLGs6cn09eHYodGhpcy5yLHRoaXMuZyx0aGlzLmIpO3JldHVybmBjbXlrKCR7ZX0sICR7dH0sICR7bn0sICR7cn0pYH10b05hbWUoKXtpZih0aGlzLmE9PT0wKXJldHVybmB0cmFuc3BhcmVudGA7aWYodGhpcy5hPDEpcmV0dXJuITE7bGV0IGU9YCNgK3Z2KHRoaXMucix0aGlzLmcsdGhpcy5iLCExKTtmb3IobGV0W3Qsbl1vZiBPYmplY3QuZW50cmllcyhFdikpaWYoZT09PW4pcmV0dXJuIHQ7cmV0dXJuITF9dG9TdHJpbmcoZSl7bGV0IHQ9ISFlO2U/Pz10aGlzLmZvcm1hdDtsZXQgbj0hMSxyPXRoaXMuYTwxJiZ0aGlzLmE+PTA7cmV0dXJuIXQmJnImJihlLnN0YXJ0c1dpdGgoYGhleGApfHxlPT09YG5hbWVgKT9lPT09YG5hbWVgJiZ0aGlzLmE9PT0wP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpOihlPT09YHJnYmAmJihuPXRoaXMudG9SZ2JTdHJpbmcoKSksZT09PWBwcmdiYCYmKG49dGhpcy50b1BlcmNlbnRhZ2VSZ2JTdHJpbmcoKSksKGU9PT1gaGV4YHx8ZT09PWBoZXg2YCkmJihuPXRoaXMudG9IZXhTdHJpbmcoKSksZT09PWBoZXgzYCYmKG49dGhpcy50b0hleFN0cmluZyghMCkpLGU9PT1gaGV4NGAmJihuPXRoaXMudG9IZXg4U3RyaW5nKCEwKSksZT09PWBoZXg4YCYmKG49dGhpcy50b0hleDhTdHJpbmcoKSksZT09PWBuYW1lYCYmKG49dGhpcy50b05hbWUoKSksZT09PWBoc2xgJiYobj10aGlzLnRvSHNsU3RyaW5nKCkpLGU9PT1gaHN2YCYmKG49dGhpcy50b0hzdlN0cmluZygpKSxlPT09YGNteWtgJiYobj10aGlzLnRvQ215a1N0cmluZygpKSxufHx0aGlzLnRvSGV4U3RyaW5nKCkpfXRvTnVtYmVyKCl7cmV0dXJuKE1hdGgucm91bmQodGhpcy5yKTw8MTYpKyhNYXRoLnJvdW5kKHRoaXMuZyk8PDgpK01hdGgucm91bmQodGhpcy5iKX1jbG9uZSgpe3JldHVybiBuZXcgZSh0aGlzLnRvU3RyaW5nKCkpfWxpZ2h0ZW4odD0xMCl7bGV0IG49dGhpcy50b0hzbCgpO3JldHVybiBuLmwrPXQvMTAwLG4ubD1vdihuLmwpLG5ldyBlKG4pfWJyaWdodGVuKHQ9MTApe2xldCBuPXRoaXMudG9SZ2IoKTtyZXR1cm4gbi5yPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LG4uci1NYXRoLnJvdW5kKDI1NSotKHQvMTAwKSkpKSxuLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsbi5nLU1hdGgucm91bmQoMjU1Ki0odC8xMDApKSkpLG4uYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxuLmItTWF0aC5yb3VuZCgyNTUqLSh0LzEwMCkpKSksbmV3IGUobil9ZGFya2VuKHQ9MTApe2xldCBuPXRoaXMudG9Ic2woKTtyZXR1cm4gbi5sLT10LzEwMCxuLmw9b3Yobi5sKSxuZXcgZShuKX10aW50KGU9MTApe3JldHVybiB0aGlzLm1peChgd2hpdGVgLGUpfXNoYWRlKGU9MTApe3JldHVybiB0aGlzLm1peChgYmxhY2tgLGUpfWRlc2F0dXJhdGUodD0xMCl7bGV0IG49dGhpcy50b0hzbCgpO3JldHVybiBuLnMtPXQvMTAwLG4ucz1vdihuLnMpLG5ldyBlKG4pfXNhdHVyYXRlKHQ9MTApe2xldCBuPXRoaXMudG9Ic2woKTtyZXR1cm4gbi5zKz10LzEwMCxuLnM9b3Yobi5zKSxuZXcgZShuKX1ncmV5c2NhbGUoKXtyZXR1cm4gdGhpcy5kZXNhdHVyYXRlKDEwMCl9c3Bpbih0KXtsZXQgbj10aGlzLnRvSHNsKCkscj0obi5oK3QpJTM2MDtyZXR1cm4gbi5oPXI8MD8zNjArcjpyLG5ldyBlKG4pfW1peCh0LG49NTApe2xldCByPXRoaXMudG9SZ2IoKSxpPW5ldyBlKHQpLnRvUmdiKCksYT1uLzEwMDtyZXR1cm4gbmV3IGUoe3I6KGkuci1yLnIpKmErci5yLGc6KGkuZy1yLmcpKmErci5nLGI6KGkuYi1yLmIpKmErci5iLGE6KGkuYS1yLmEpKmErci5hfSl9YW5hbG9nb3VzKHQ9NixuPTMwKXtsZXQgcj10aGlzLnRvSHNsKCksaT0zNjAvbixhPVt0aGlzXTtmb3Ioci5oPShyLmgtKGkqdD4+MSkrNzIwKSUzNjA7LS10OylyLmg9KHIuaCtpKSUzNjAsYS5wdXNoKG5ldyBlKHIpKTtyZXR1cm4gYX1jb21wbGVtZW50KCl7bGV0IHQ9dGhpcy50b0hzbCgpO3JldHVybiB0Lmg9KHQuaCsxODApJTM2MCxuZXcgZSh0KX1tb25vY2hyb21hdGljKHQ9Nil7bGV0IG49dGhpcy50b0hzdigpLHtoOnJ9PW4se3M6aX09bix7djphfT1uLG89W10scz0xL3Q7Zm9yKDt0LS07KW8ucHVzaChuZXcgZSh7aDpyLHM6aSx2OmF9KSksYT0oYStzKSUxO3JldHVybiBvfXNwbGl0Y29tcGxlbWVudCgpe2xldCB0PXRoaXMudG9Ic2woKSx7aDpufT10O3JldHVyblt0aGlzLG5ldyBlKHtoOihuKzcyKSUzNjAsczp0LnMsbDp0Lmx9KSxuZXcgZSh7aDoobisyMTYpJTM2MCxzOnQucyxsOnQubH0pXX1vbkJhY2tncm91bmQodCl7bGV0IG49dGhpcy50b1JnYigpLHI9bmV3IGUodCkudG9SZ2IoKSxpPW4uYStyLmEqKDEtbi5hKTtyZXR1cm4gbmV3IGUoe3I6KG4ucipuLmErci5yKnIuYSooMS1uLmEpKS9pLGc6KG4uZypuLmErci5nKnIuYSooMS1uLmEpKS9pLGI6KG4uYipuLmErci5iKnIuYSooMS1uLmEpKS9pLGE6aX0pfXRyaWFkKCl7cmV0dXJuIHRoaXMucG9seWFkKDMpfXRldHJhZCgpe3JldHVybiB0aGlzLnBvbHlhZCg0KX1wb2x5YWQodCl7bGV0IG49dGhpcy50b0hzbCgpLHtoOnJ9PW4saT1bdGhpc10sYT0zNjAvdDtmb3IobGV0IG89MTtvPHQ7bysrKWkucHVzaChuZXcgZSh7aDoocitvKmEpJTM2MCxzOm4ucyxsOm4ubH0pKTtyZXR1cm4gaX1lcXVhbHModCl7bGV0IG49bmV3IGUodCk7cmV0dXJuIHRoaXMuZm9ybWF0PT09YGNteWtgfHxuLmZvcm1hdD09PWBjbXlrYD90aGlzLnRvQ215a1N0cmluZygpPT09bi50b0NteWtTdHJpbmcoKTp0aGlzLnRvUmdiU3RyaW5nKCk9PT1uLnRvUmdiU3RyaW5nKCl9fTtmdW5jdGlvbiBGdihlLHQpe2xldCBuPW5ldyBQdihlKSxyPW5ldyBQdih0KTtyZXR1cm4oTWF0aC5tYXgobi5nZXRMdW1pbmFuY2UoKSxyLmdldEx1bWluYW5jZSgpKSsuMDUpLyhNYXRoLm1pbihuLmdldEx1bWluYW5jZSgpLHIuZ2V0THVtaW5hbmNlKCkpKy4wNSl9dmFyIEl2PS4yOTksTHY9LjU4NyxSdj0uMTE0LHp2PTE4MCxCdj0tMjAsVnY9LS4yNSxIdj0uMixVdj0tNSxXdj0uMDMsR3Y9LjUsS3Y9NSxxdj0oZSx0KT0+bmV3IFB2KGUpLmRhcmtlbih0KS50b0hleFN0cmluZygpLEp2PWU9PntsZXQgdD1uZXcgUHYoZSkudG9SZ2IoKTtyZXR1cm5gJHt0LnJ9LCAke3QuZ30sICR7dC5ifWB9LFl2PWU9Pi9eI1swLTlBLUZdezZ9JC9pLnRlc3QoZSksWHY9ZT0+e2xldHtyOnQsZzpuLGI6cn09bmV3IFB2KGUpLnRvUmdiKCk7cmV0dXJuIE1hdGguc3FydCh0KnQqSXYrbipuKkx2K3IqcipSdik+enZ9LFp2PWU9PntsZXQgdD1uZXcgUHYoZSkse3M6bixsOnJ9PXQudG9Ic2woKTtyZXR1cm4gdC5zcGluKEJ2KS5kZXNhdHVyYXRlKG4qVnYpLmxpZ2h0ZW4ocipIdikudG9IZXhTdHJpbmcoKX0sUXY9KGUsdD1Hdik9PntsZXQgbj1uZXcgUHYoZSkse3M6cixsOml9PW4udG9Ic2woKTtyZXR1cm4gbi5zcGluKFV2KS5zYXR1cmF0ZShyKld2KS5kYXJrZW4oaSp0KS50b0hleFN0cmluZygpfSwkdj1lPT57bGV0e2NvbG9yOnQsY29sb3IyOm4sY29sb3JHcmFkaWVudDpyfT1lO3JldHVybiByP24/e2Zyb206dCx0bzpufTpYdih0KT97ZnJvbTp0LHRvOlF2KHQpfTp7ZnJvbTpadih0KSx0bzp0fTp7ZnJvbTp0LHRvOnR9fSxleT1lPT5YdihlKT9hdi5zbGF0ZTkwMDphdi53aGl0ZSx0eT1lPT5YdihlKT8uMTouMixueT1lPT57aWYoWHYoZSkpe2xldCB0PW5ldyBQdihlKS5nZXRMdW1pbmFuY2UoKTtyZXR1cm4gdD4uOD9xdihlLCgxMCp0KSoqdCk6ZX1yZXR1cm4gZX0scnk9KGUsdCk9PntsZXQgbj10Py5iYWNrZ3JvdW5kQ29sb3I/P2Uscj0wLGk9bmV3IFB2KGUpLGE9RnYobixpKSxvPXQ/LmZvcmNlTGlnaHRCZz8/bmV3IFB2KG4pLmlzTGlnaHQoKTtmb3IoO2E8My43NSYmcjwyMDspaT1vP2kuZGFya2VuKDUpOmkubGlnaHRlbig1KSxhPUZ2KG4saSkscisrO3JldHVybiBpLnRvSGV4U3RyaW5nKCl9LGl5PShlLHQpPT57bGV0IG49cnkoZSx7YmFja2dyb3VuZENvbG9yOmF2LndoaXRlfSkscj1yeShlKSxpPW5ldyBQdihlKS5pc0xpZ2h0KCksYT1uZXcgUHYodCkuaXNMaWdodCgpO3JldHVybiBpJiZhP3I9cnkodCk6IWkmJiFhP3I9cnkoZSk6aSYmIWE/cj1yeSh0LHtmb3JjZUxpZ2h0Qmc6ITB9KTohaSYmYSYmKHI9cnkoZSx7Zm9yY2VMaWdodEJnOiExfSkpLHtwcmltYXJ5Om4sc2Vjb25kYXJ5OnJ9fSxRPShlLHQsbik9PntlLmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pfSxheT0oZSx0KT0+e2xldHtjb2xvcjpufT10LHI9JHYodCksaT1yLmZyb209PT1gI2ZmZmZmZmAmJnIuZnJvbT09PXIudG8/e2Zyb206YXYuc2xhdGUzMDAsdG86YXYuc2xhdGUzMDB9OnIsYT1leShuKTtRKGUsYC0tY29sb3ItcHJpbWFyeWAsbiksUShlLGAtLWNvbG9yLXByaW1hcnktY29udGVudGAsYSksUShlLGAtLWNvbG9yLXByaW1hcnktY29udGVudC1yZ2JgLEp2KGEpKSxRKGUsYC0tY29sb3ItcHJpbWFyeS1ncmFkaWVudC1mcm9tYCxyLmZyb20pLFEoZSxgLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LXRvYCxyLnRvKSxRKGUsYC0tY29sb3ItcHJpbWFyeS1ncmFkaWVudC1idXR0b24tZnJvbWAsaS5mcm9tKSxRKGUsYC0tY29sb3ItcHJpbWFyeS1ncmFkaWVudC1idXR0b24tdG9gLGkudG8pLFEoZSxgLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWhvdmVyLWZyb21gLHF2KHIuZnJvbSxLdikpLFEoZSxgLS1jb2xvci1wcmltYXJ5LWdyYWRpZW50LWhvdmVyLXRvYCxxdihyLnRvLEt2KSk7bGV0IG89bnkobik7UShlLGAtLWNvbG9yLXByaW1hcnktYnV0dG9uYCxvKSxRKGUsYC0tY29sb3ItcHJpbWFyeS1idXR0b24taG92ZXJgLHF2KG8sMTApKSxRKGUsYC0tY29sb3ItcHJpbWFyeS1idXR0b24tY29udGVudGAsYSksUShlLGAtLW9wYWNpdHktcHJpbWFyeS1jb250ZW50YCxTdHJpbmcodHkobikpKTtsZXQgcz1peShyLmZyb20sci50byk7UShlLGAtLWNvbG9yLXByaW1hcnktZm9jdXNgLHMucHJpbWFyeSksUShlLGAtLWNvbG9yLXNlY29uZGFyeS1mb2N1c2Ascy5zZWNvbmRhcnkpfSxveT0oKCk9PntsZXR7c3Vic2NyaWJlOmUsc2V0OnR9PU8oe2NvbG9yOmF2LnNtYXJ0c3VwcEJsdWUsY29sb3IyOm51bGwsY29sb3JHcmFkaWVudDohMH0pO3JldHVybntzdWJzY3JpYmU6ZSxzZXRUaGVtZUNvbG9yOmU9PntsZXR7Y29sb3I6bixjb2xvcjI6cixjb2xvckdyYWRpZW50Oml9PWU7aWYoIVl2KG4pKXtIKGBQcm92aWRlZCBjb2xvciAnJHtufScgaXMgbm90IHZhbGlkLiBEZWZhdWx0IGNvbG9yIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLmApO3JldHVybn1lbHNlIGlmKGkmJnImJiFZdihyKSl7SChgUHJvdmlkZWQgY29sb3IgJyR7cn0nIGlzIG5vdCB2YWxpZC4gRGVmYXVsdCBjb2xvciB3aWxsIGJlIHVzZWQgaW5zdGVhZC5gKTtyZXR1cm59dCh7Y29sb3I6bixjb2xvcjI6cixjb2xvckdyYWRpZW50Oml9KX19fSkoKSxzeT0yNCxjeT0xMixseT03Mix1eT0zODAsZHk9NjcyLGZ5PTU2MCxweT04NDAsbXk9ZT0+YCR7ZX1weGAsaHk9ZT0+e2lmKGUpcmV0dXJuIEx1KGUpP3BhcnNlSW50KGUsMTApOmV9LGd5PShlLHQpPT57bGV0e3dpZGdldEJsb2NraW5nT3B0aW9uczpufT1WLmdldE9wdGlvbnMoKTtyZXR1cm4gZXx8bj8uaGVhZGxlc3NNb2RlP3t3aWR0aDpgMTAwJWAsaGVpZ2h0OmAxMDAlYH06dD97d2lkdGg6ZnksaGVpZ2h0OnB5fTp7d2lkdGg6dXksaGVpZ2h0OmR5fX0sX3k9ZT0+e2xldHt3aWRnZXRCbG9ja2luZ09wdGlvbnM6dH09Vi5nZXRPcHRpb25zKCk7ZS5zdHlsZS5ib3JkZXJSYWRpdXM9bXkoMjApLHQ/LmhlYWRsZXNzTW9kZT9lLnN0eWxlLmJveFNoYWRvdz1gbm9uZWA6dD8ubGltaXRTaGFkb3c/ZS5zdHlsZS5ib3hTaGFkb3c9YHJnYmEoMCwgMCwgMCwgMC4yNSkgMHB4IDVweCAxMnB4YDplLnN0eWxlLmJveFNoYWRvdz1gcmdiYSgwLCAwLCAwLCAwLjE2KSAwcHggNXB4IDQwcHhgfSx2eT0oKT0+e2xldHtvZmZzZXRZOmV9PVYuZ2V0T3B0aW9ucygpO3JldHVybiBoeShlKT8/c3l9LHl5PSgpPT57bGV0e29mZnNldFg6ZX09Vi5nZXRPcHRpb25zKCk7cmV0dXJuIGh5KGUpPz9jeX0sYnk9ZT0+e2xldHt3aWRnZXRCbG9ja2luZ09wdGlvbnM6dH09Vi5nZXRPcHRpb25zKCk7cmV0dXJuIGV8fHQ/LmhlYWRsZXNzTW9kZT8wOnN5fSx4eT1lPT57bGV0e3dpZGdldEJsb2NraW5nT3B0aW9uczp0fT1WLmdldE9wdGlvbnMoKTtyZXR1cm4gZXx8dD8uaGVhZGxlc3NNb2RlPzA6Y3l9LFN5PSgpPT57bGV0e3Bvc2l0aW9uOmV9PVYuZ2V0T3B0aW9ucygpO3JldHVybiBlPT09YGZpeGVkYH0sQ3k9ZT0+e1N5KCkmJihlLnN0eWxlLnBvc2l0aW9uPWBmaXhlZGApfSx3eT0oZSx0KT0+e1N5KCkmJihlLnN0eWxlLmJvdHRvbT1teSh0KSl9LFR5PShlLHQpPT57aWYoU3koKSl7bGV0e29yaWVudGF0aW9uOm59PVYuZ2V0T3B0aW9ucygpO249PT1gcmlnaHRgPyhlLnN0eWxlLmxlZnQ9YGluaXRpYWxgLGUuc3R5bGUucmlnaHQ9bXkodCkpOihlLnN0eWxlLmxlZnQ9bXkodCksZS5zdHlsZS5yaWdodD1gaW5pdGlhbGApfX0sRXk9ZT0+e2xldHt6SW5kZXg6dH09Vi5nZXRPcHRpb25zKCk7ZS5zdHlsZS56SW5kZXg9U3RyaW5nKHQ/P2BhdXRvYCl9LER5PWU9PntsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBpZnJhbWVgKTtyZXR1cm4gdC5zdHlsZS5wb3NpdGlvbj1gYWJzb2x1dGVgLHQuc3R5bGUud2lkdGg9YDEwMCVgLHQuc3R5bGUuaGVpZ2h0PWAxMDAlYCx0LnN0eWxlLmJvcmRlcj1gbm9uZWAsdC5zdHlsZS5kaXNwbGF5PWBibG9ja2AsdC5zdHlsZS50ZXh0QWxpZ249YGxlZnRgLHQuc3R5bGUubWFyZ2luPWAwYCx0LnN0eWxlLnBhZGRpbmc9YDBgLHQuc3R5bGUudG9wPWAwYCx0LnN0eWxlLmxlZnQ9YDBgLHQuc3R5bGUub3BhY2l0eT1gMWAsZSYmZSh0KSx0LmdldEF0dHJpYnV0ZShgc3R5bGVgKT8/YGB9LE95PWU9PntDeShlKSx3eShlLHZ5KCkpLFR5KGUseXkoKSksRXkoZSl9LGt5PShlLHQpPT57Q3koZSksd3koZSxieSh0KSksVHkoZSx4eSh0KSksRXkoZSksdHx8X3koZSl9LEF5PWU9PntDeShlKSx3eShlLHZ5KCkrbHkpLFR5KGUseXkoKSksRXkoZSl9LGp5PWU9PntlLnN0eWxlLnBvc2l0aW9uPWBmaXhlZGAsZS5zdHlsZS53aWR0aD1gMTAwJWAsZS5zdHlsZS5oZWlnaHQ9YDEwMCVgLHd5KGUsMCksVHkoZSwwKSxFeShlKX0sTXk9ZT0+e095KGUpfSxOeT0oZSx0KT0+e2t5KGUsdCl9LFB5PWU9PntBeShlKX0sRnk9ZT0+e0F5KGUpfSxJeT1lPT57ankoZSl9LEx5PU8oMzAwKSxSeT1PKDE2Niksenk9TyghMSksQnk9Tyh2b2lkIDApLFZ5PWsoW3NzLEJ5XSwoW2UsdF0pPT57bGV0e2J1dHRvblN0eWxlOm59PVYuZ2V0T3B0aW9ucygpO3JldHVybiB0P3Q9PT1gYnViYmxlYDplfHxuPT09YGJ1YmJsZWB9KSxIeT1rKFtWeSxMeV0sKFtlLHRdKT0+ZT81Njp0KSxVeT1PKHZvaWQgMCksV3k9ayhbY3MsVXldLChbZSx0XSk9PmU/ITA6KHQ/P1YuZ2V0T3B0aW9ucygpLmhlYWRlclN0eWxlKT09PWBjb21wYWN0YCksR3k9ayhbV3ldLChbZV0pPT5lPzc2OjExNCksS3k9TygpLHF5PWsoW0t5XSwoW2VdKT0+ZT09PXZvaWQgMD96byhVLklzTWVzc2VuZ2VyRnJhbWVFeHBhbmRlZCk9PT1gdHJ1ZWA6ZSksSnk9ZT0+e0JvKHtuYW1lOlUuSXNNZXNzZW5nZXJGcmFtZUV4cGFuZGVkLHZhbHVlOmUudG9TdHJpbmcoKX0pLEt5LnNldChlKX0sJD1mdW5jdGlvbihlKXtyZXR1cm4gZS5OYW1lPWBuYW1lYCxlLkdyb3VwPWBncm91cGAsZS5FbWFpbD1gZW1haWxgLGUuUGhvbmU9YHBob25lYCxlLlZhcmlhYmxlcz1gdmFyaWFibGVzYCxlLkNvbnRhY3REYXRhPWBjb250YWN0RGF0YWAsZS5MYW5ndWFnZT1gbGFuZ3VhZ2VgLGUuQ2hhdENsb3NlPWBjaGF0OmNsb3NlYCxlLkNoYXRPcGVuPWBjaGF0Om9wZW5gLGUuQ2hhdFNob3c9YGNoYXQ6c2hvd2AsZS5DaGF0SGlkZT1gY2hhdDpoaWRlYCxlLlRoZW1lQ29sb3I9YHRoZW1lOmNvbG9yYCxlLkNoYXRNZXNzYWdlPWBjaGF0Om1lc3NhZ2VgLGUuQ2hhdFNlbmQ9YGNoYXQ6c2VuZGAsZS5IdG1sQXBwbHk9YGh0bWw6YXBwbHlgLGUuT249YG9uYCxlLkFuYWx5dGljc0NvbnNlbnQ9YGFuYWx5dGljc0NvbnNlbnRgLGUuTWFya2V0aW5nQ29uc2VudD1gbWFya2V0aW5nQ29uc2VudGAsZS5PcGVuUmF0ZUZvcm09YG9wZW5SYXRlRm9ybWAsZS5PcGVuQXV0aEZvcm09YG9wZW5BdXRoRm9ybWAsZS5XaWRnZXRTdGF0dXM9YHdpZGdldFN0YXR1c2AsZS5UcmFuc2xhdGlvbnM9YHRyYW5zbGF0aW9uc2AsZS5BdXRoRm9ybUZpZWxkcz1gYXV0aEZvcm1GaWVsZHNgLGUuQnV0dG9uU3R5bGU9YGJ1dHRvblN0eWxlYCxlLkhlYWRlclN0eWxlPWBoZWFkZXJTdHlsZWAsZS5QcmV2aWV3VHJhbnNsYXRlPWBwcmV2aWV3VHJhbnNsYXRlYCxlLkRpc2FibGVDb25uZWN0aW9uU3RhdHVzPWBkaXNhYmxlQ29ubmVjdGlvblN0YXR1c2AsZS5SZWxvYWRXaXRoTW9ja0RhdGE9YHJlbG9hZFdpdGhNb2NrRGF0YWAsZS5SZWxvYWQ9YHJlbG9hZGAsZS5Cb3RJZGVudGl0eVVwZGF0ZT1gYm90SWRlbnRpdHk6dXBkYXRlYCxlfSh7fSksWXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuTWVzc2FnZVNlbnQ9YG1lc3NhZ2Vfc2VudGAsZS5NZXNzYWdlUmVjZWl2ZWQ9YG1lc3NhZ2VfcmVjZWl2ZWRgLGUuTWVzc2VuZ2VyQ2xvc2U9YG1lc3Nlbmdlcl9jbG9zZWAsZS5XaWRnZXRJbml0PWB3aWRnZXRfaW5pdGAsZX0oe30pLFh5PWU9Pnt6Lm9uKGBtZXNzYWdlU2VudGAsZSl9LFp5PWU9Pnt6Lm9uKGBtZXNzYWdlUmVjZWl2ZWRgLGUpfSxReT1lPT57ei5vbihgbWVzc2VuZ2VyQ2xvc2VgLGUpfSwkeT1lPT57ei5vbihgd2lkZ2V0SW5pdGAsZSl9LGViPXtbWXkuTWVzc2FnZVNlbnRdOlh5LFtZeS5NZXNzYWdlUmVjZWl2ZWRdOlp5LFtZeS5NZXNzZW5nZXJDbG9zZV06UXksW1l5LldpZGdldEluaXRdOiR5fSx0Yj0oZSx0KT0+e2xldCBuPWViW2VdO24mJm4odCl9LG5iPWBodHRwczovL2RvY3Muc21hcnRzdXBwLmNvbS9jaGF0LWJveC9gLHJiPWAke25ifWxvY2FsaXphdGlvbi8jc3VwcG9ydGVkLWxhbmd1YWdlc2AsaWI9YCR7bmJ9dmlzaXRvci1pZGVudGlmaWNhdGlvbi8jY3VzdG9tLXZpc2l0b3ItZGF0YWAsYWI9YCR7bmJ9dmlzaXRvci1pZGVudGlmaWNhdGlvbi8jY3VzdG9tLWNvbnRhY3QtZGF0YWAsb2I9YCR7bmJ9amF2YXNjcmlwdC1hcGkvZXZlbnRzL2Asc2I9YGh0dHBzOi8vd3d3LnNtYXJ0c3VwcC5jb20vaGVscC9jb29raWUtY29uc2VudC8jd2hlcmUtdG8tZW5hYmxlLWNvb2tpZS1jb25zZW50LWluLXNtYXJ0c3VwcGAsY2I9YGh0dHBzOi8vd3d3LnNtYXJ0c3VwcC5jb20vcHJpY2luZ2AsbGI9Tyh7fSksdWI9KGUsdCk9PntsYi51cGRhdGUobj0+KHsuLi5uLFtlXTp0fSkpfSxkYj1lPT5PYmplY3QudmFsdWVzKCQpLnNvbWUodD0+dD09PWUpLGZiPShlLHQpPT5MdSh0KT8hMDooSChgUGFyYW1ldGVyIG9mICcke2V9JyBBUEkgY29tbWFuZCBtdXN0IGJlIHR5cGUgc3RyaW5nLiBTZWUgJHtuYn0gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksITEpLHBiPShlLHQpPT5QdSh0KT8hMDooSChgUGFyYW1ldGVyIG9mICcke2V9JyBBUEkgY29tbWFuZCBtdXN0IGJlIHR5cGUgYm9vbGVhbi4gU2VlICR7bmJ9IGZvciBtb3JlIGluZm9ybWF0aW9uLmApLCExKSxtYj0oZSx0KT0+dHlwZW9mIHQ9PWBmdW5jdGlvbmA/ITA6KEgoYFBhcmFtZXRlciBvZiAnJHtlfScgQVBJIGNvbW1hbmQgbXVzdCBiZSB0eXBlIGZ1bmN0aW9uLiBTZWUgJHtuYn0gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksITEpLGhiPShlLHQpPT5JdSh0KT8hMDooSChgUGFyYW1ldGVyIG9mICcke2V9JyBBUEkgY29tbWFuZCBtdXN0IGJlIHR5cGUgb2JqZWN0LiBTZWUgJHtpYn0gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksITEpLGdiPShlLHQpPT5JdSh0KT8hMDooSChgUGFyYW1ldGVyIG9mICcke2V9JyBBUEkgY29tbWFuZCBtdXN0IGJlIHR5cGUgb2JqZWN0LiBTZWUgJHthYn0gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksITEpLF9iPShlLHQpPT5JdSh0KT8hMDooSChgUGFyYW1ldGVyIG9mICcke2V9JyBBUEkgY29tbWFuZCBtdXN0IGJlIHR5cGUgb2JqZWN0LmApLCExKSx2Yj0oZSx0KT0+IUl1KHQpfHwhKGBpZGBpbiB0KXx8IUx1KHQuaWQpPyhIKGBQYXJhbWV0ZXIgb2YgJyR7ZX0nIEFQSSBjb21tYW5kIG11c3QgYmUgdHlwZSBvYmplY3QgYW5kIGhhcyBhIHZhbGlkICdpZCcgcHJvcGVydHkuYCksITEpOmBuYW1lYGluIHQmJiFMdSh0Lm5hbWUpPyhIKGBQYXJhbWV0ZXIgb2YgJyR7ZX0nIEFQSSBjb21tYW5kIG11c3QgaGF2ZSBhIHZhbGlkICduYW1lJyBwcm9wZXJ0eS5gKSwhMSk6YGF2YXRhclVybGBpbiB0JiYhTHUodC5hdmF0YXJVcmwpPyhIKGBQYXJhbWV0ZXIgb2YgJyR7ZX0nIEFQSSBjb21tYW5kIG11c3QgaGF2ZSBhIHZhbGlkICdhdmF0YXJVcmwnIHByb3BlcnR5LmApLCExKTohMCx5Yj0oZSx0KT0+e2xldCBuPU9iamVjdC52YWx1ZXMoWXkpO3JldHVybiBuLmluY2x1ZGVzKHQpPyEwOihIKGBVbmtub3duIGV2ZW50OiAnJHt0fScuIEF2YWlsYWJsZSBldmVudCBuYW1lcyBhcmU6ICR7bi5qb2luKGAsIGApfS4gU2VlICR7b2J9IGZvciBtb3JlIGluZm9ybWF0aW9uLmApLCExKX0sYmI9ZT0+e0goYFVua25vd24gQVBJIGNvbW1hbmQ6ICcke2V9Jy4gU2VlICR7bmJ9IHRvIGNoZWNrIGF2YWlsYWJsZSBBUEkgY29tbWFuZHMuYCl9LHhiPSgpPT4hIVYuZ2V0T3B0aW9ucygpLmZlYXR1cmVzPy5hcGksU2I9KCk9PiEhVi5nZXRPcHRpb25zKCkuZmVhdHVyZXM/Lmdyb3VwcyxDYj0oKT0+Vi5nZXRPcHRpb25zKCkuaXNQcmV2aWV3TW9kZSx3Yj0oKT0+IXhiKCkmJiFDYigpPyhIKGBDaGF0IGJveCBBUEkgZmVhdHVyZSBpcyBub3QgZW5hYmxlZC4gU2VlICR7Y2J9IHRvIHVwZ3JhZGUgeW91ciBwYWNrYWdlLmApLCExKTohMCxUYj0oKT0+IXhiKCl8fCFTYigpPyhIKGBDaGF0IGJveCBHcm91cHMgZmVhdHVyZSBpcyBub3QgZW5hYmxlZC4gU2VlICR7Y2J9IHRvIHVwZ3JhZGUgeW91ciBwYWNrYWdlLmApLCExKTohMCxFYj0oKT0+e0hvKCl8fEgoYEVuYWJsZSBtYW5hZ2luZyBjb29raWUgY29uc2VudCBpbiB3aWRnZXQgc2V0dGluZ3MgdG8gYWxsb3cgdGhpcyBjb21tYW5kLiBTZWUgJHtzYn0gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCl9LERiPSgpPT57bGV0IGU9KCk9PntVXyghMCksSV8oKX07aWYoIUEoQ18pKXtYbC5wdXNoKGUpO3JldHVybn1lKCl9LE9iPSgpPT57aWYod2IoKSl7aWYoIUEoQ18pKXtYbC5wdXNoKFdfKTtyZXR1cm59V18oKX19LGtiPSgpPT57d2IoKSYmSV8oKX0sQWI9KCk9Pnt3YigpJiZMXygpfSxqYj0oZSx0KT0+e2lmKHdiKCkmJmU9PT0kLkxhbmd1YWdlJiZmYihlLHQpKXtpZighSWwodCkpe0goYFByb3ZpZGVkIGxhbmd1YWdlICcke3R9JyBpcyBub3Qgc3VwcG9ydGVkLiBTZWUgJHtyYn0gdG8gY2hlY2sgc3VwcG9ydGVkIGxhbmd1YWdlcy5gKTtyZXR1cm59aWYoIUEoQ18pKXt1YihgbGFuZ2AsdCk7cmV0dXJufUdsKHQpfX0sTWI9KGUsdCk9PntsZXQgbixyPW51bGwsaT0hMDtpZih3YigpKXtpZih0eXBlb2YgdD09YHN0cmluZ2AmJmZiKGUsdCkpbj10O2Vsc2UgaWYoaGIoZSx0KSl7aWYobj10LmNvbG9yLHI9dC5jb2xvcjIsaT10LmNvbG9yR3JhZGllbnQsIXBiKGUsaSkpcmV0dXJufWVsc2UgcmV0dXJuO2lmKCFZdihuKSl7SChgUHJvdmlkZWQgY29sb3IgJyR7bn0nIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHVzZSBoZXggY29sb3IgY29kZS5gKTtyZXR1cm59ZWxzZSBpZihpJiZyJiYhWXYocikpe0goYFByb3ZpZGVkIGNvbG9yICcke3J9JyBpcyBub3QgdmFsaWQuIERlZmF1bHQgY29sb3Igd2lsbCBiZSB1c2VkIGluc3RlYWQuYCk7cmV0dXJufW95LnNldFRoZW1lQ29sb3Ioe2NvbG9yOm4sY29sb3IyOnIsY29sb3JHcmFkaWVudDppfSl9fSxOYj0oZSx0KT0+e3diKCkmJmZiKGUsdCkmJm9fKHQpfSxQYj0oZSx0KT0+e3diKCkmJmZiKGUsdCkmJihvXyh0KSxkXygpKX0sRmI9KGUsdCxuKT0+e2ZiKGUsdCkmJnliKGUsdCkmJm1iKGUsbikmJnRiKHQsbil9LEliPShlLHQpPT57aGIoZSx0KSYmTXUudXBkYXRlVmlzaXRvclZhcmlhYmxlcyh6dSh0KSl9LExiPShlLHQpPT57ZSE9PSQuTmFtZSYmZSE9PSQuRW1haWwmJmUhPT0kLlBob25lJiZlIT09JC5Hcm91cHx8ZmIoZSx0KSYmTXUudXBkYXRlVmlzaXRvclByb3BlcnR5KGUsdCl9LFJiPShlLHQpPT57aWYoIVRiKCl8fCFmYihlLHQpKXJldHVybjtsZXQgbj1BKGlsKVt0XTtpZihBKENfKSYmIW4pe0goYEdyb3VwIHdpdGgga2V5ICcke3R9JyBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBncm91cCBrZXkgZnJvbSB5b3VyIGdyb3VwIHNldHRpbmdzLmApO3JldHVybn1MYihlLHQpfSx6Yj0oZSx0KT0+e2diKGUsdCkmJk11LnVwZGF0ZVZpc2l0b3JDb250YWN0RGF0YSh0KX0sQmI9KGUsdCk9PntwYihlLHQpJiYoRWIoKSx6LmVtaXQoYGFuYWx5dGljc0NvbnNlbnRDaGFuZ2VkYCwhIXQpKX0sVmI9KGUsdCk9PntwYihlLHQpJiYoRWIoKSx6LmVtaXQoYG1hcmtldGluZ0NvbnNlbnRDaGFuZ2VkYCwhIXQpKX0sSGI9KCk9PntZcChBKEJwKXx8YGApfSxVYj0oKT0+e0JjKEhjLkF1dGhGb3JtKX0sV2I9KGUsdCk9PntmYihlLHQpJiYodCE9PUsuQWNjb3VudFN0YXR1cy5PbmxpbmUmJnQhPT1LLkFjY291bnRTdGF0dXMuT2ZmbGluZXx8JHUuc2V0KHQpKX0sR2I9KGUsdCk9PntoYihlLHQpJiZxbCh0KX0sS2I9KGUsdCk9PntoYihlLHQpJiYoQShWaCl8fFZoLnNldChWLmdldE9wdGlvbnMoKSksVmgudXBkYXRlKGU9Pih7Li4uZSwuLi50fSkpKX0scWI9KGUsdCk9PntmYihlLHQpJiZCeS5zZXQodCl9LEpiPShlLHQpPT57aWYoZT09PSQuSGVhZGVyU3R5bGUmJmZiKGUsdCkpe2lmKHQhPT1gY29tcGFjdGAmJnQhPT1gc3RhbmRhcmRgKXtIKGBQcm92aWRlZCBoZWFkZXIgc3R5bGUgJyR7dH0nIGlzIG5vdCB2YWxpZC4gVXNlICdjb21wYWN0JyBvciAnc3RhbmRhcmQnLmApO3JldHVybn1VeS5zZXQodCl9fSxZYj0oKT0+e2xldCBlPSgpPT57fTtlPUhsLnN1YnNjcmliZSgoKT0+e0EoUnApLmZvckVhY2goZT0+e2xldCB0PWUuY29udGVudD8uZGF0YXx8YGA7dHlwZW9mIHQ9PWBzdHJpbmdgJiZ0Lm1hdGNoKC93aWRnZXRQcmV2aWV3XC4uKi8pJiYoZS5jb250ZW50LnRleHQ9QShXKSh0KSxKLnJlcGxhY2VNZXNzYWdlKGUpKX0pLGUoKX0pfSxYYj0oZSx0KT0+e3BiKGUsdCkmJklnLnNldCh0KX0sWmI9KGUsdCk9PntfYihlLHQpJiZxLnJlbG9hZENsaWVudCh0KX0sUWI9KGUsdCk9PntwYihlLHQpJiZxLnJlbG9hZENsaWVudCh2b2lkIDAsdCl9LCRiPShlLHQpPT57aWYoIXZiKGUsdCkpcmV0dXJuO2xldHtpZDpuLC4uLnJ9PXQ7JGwudXBkYXRlSWRlbnRpdHkobixyKX0sZXg9e3ZlcnNpb246YGUwN2MyMDhhMzhlNmY1MDg0YzhlYjQ2MGI5NThhNDJmNzc4YTU5NjVgLGV4ZWN1dGU6ZT0+e2xldCB0PWVbMF07aWYodHlwZW9mIHQ9PWBmdW5jdGlvbmApe3J4KHQpO3JldHVybn1pZighZGIodCkpe2JiKFN0cmluZyh0KSk7cmV0dXJufW54KHQsZVsxXSwuLi5lLnNsaWNlKDIpKX0sZXhlYzpmdW5jdGlvbiguLi5lKXt0aGlzLmV4ZWN1dGUoZSl9fSx0eD17WyQuQ2hhdE9wZW5dOkRiLFskLkNoYXRDbG9zZV06T2IsWyQuQ2hhdFNob3ddOmtiLFskLkNoYXRIaWRlXTpBYixbJC5DaGF0TWVzc2FnZV06TmIsWyQuQ2hhdFNlbmRdOlBiLFskLkxhbmd1YWdlXTpqYixbJC5UaGVtZUNvbG9yXTpNYixbJC5IZWFkZXJTdHlsZV06SmIsWyQuT25dOkZiLFskLlZhcmlhYmxlc106SWIsWyQuQ29udGFjdERhdGFdOnpiLFskLk5hbWVdOkxiLFskLkdyb3VwXTpSYixbJC5FbWFpbF06TGIsWyQuUGhvbmVdOkxiLFskLkFuYWx5dGljc0NvbnNlbnRdOkJiLFskLk1hcmtldGluZ0NvbnNlbnRdOlZiLFskLkh0bWxBcHBseV06bnVsbCxbJC5PcGVuUmF0ZUZvcm1dOkhiLFskLk9wZW5BdXRoRm9ybV06VWIsWyQuV2lkZ2V0U3RhdHVzXTpXYixbJC5UcmFuc2xhdGlvbnNdOkdiLFskLkF1dGhGb3JtRmllbGRzXTpLYixbJC5CdXR0b25TdHlsZV06cWIsWyQuUHJldmlld1RyYW5zbGF0ZV06WWIsWyQuRGlzYWJsZUNvbm5lY3Rpb25TdGF0dXNdOlhiLFskLlJlbG9hZFdpdGhNb2NrRGF0YV06WmIsWyQuUmVsb2FkXTpRYixbJC5Cb3RJZGVudGl0eVVwZGF0ZV06JGJ9LG54PShlLHQsLi4ubik9PntsZXQgcj10eFtlXTtpZihyPT09dm9pZCAwKXtiYihlKTtyZXR1cm59ciE9PW51bGwmJihyKGUsdCwuLi5uKSx2byhg8J+nmeKAjeKZgu+4j1tBUEldICR7ZX0ke3Q/YDpgOmBgfWAsdD8/YGApKX0scng9ZT0+e0EoQ18pP2UoKTpYbC5wdXNoKGUpfTt0eXBlb2Ygd2luZG93PGB1YCYmKCh3aW5kb3cuX19zdmVsdGU/Pz17fSkudj8/PW5ldyBTZXQpLmFkZChgNWApO3ZhciBpeD1lPT5lO2Z1bmN0aW9uIGF4KGUpe2xldCB0PWUtMTtyZXR1cm4gdCp0KnQrMX1mdW5jdGlvbiBveChlKXtsZXQgdD10eXBlb2YgZT09YHN0cmluZ2AmJmUubWF0Y2goL15ccyooLT9bXGQuXSspKFteXHNdKilccyokLyk7cmV0dXJuIHQ/W3BhcnNlRmxvYXQodFsxXSksdFsyXXx8YHB4YF06W2UsYHB4YF19ZnVuY3Rpb24gc3goZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWl4fT17fSl7bGV0IGk9K2dldENvbXB1dGVkU3R5bGUoZSkub3BhY2l0eTtyZXR1cm57ZGVsYXk6dCxkdXJhdGlvbjpuLGVhc2luZzpyLGNzczplPT5gb3BhY2l0eTogJHtlKml9YH19ZnVuY3Rpb24gY3goZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWF4LHg6aT0wLHk6YT0wLG9wYWNpdHk6bz0wfT17fSl7bGV0IHM9Z2V0Q29tcHV0ZWRTdHlsZShlKSxjPStzLm9wYWNpdHksbD1zLnRyYW5zZm9ybT09PWBub25lYD9gYDpzLnRyYW5zZm9ybSx1PWMqKDEtbyksW2QsZl09b3goaSksW3AsbV09b3goYSk7cmV0dXJue2RlbGF5OnQsZHVyYXRpb246bixlYXNpbmc6cixjc3M6KGUsdCk9PmAKCQkJdHJhbnNmb3JtOiAke2x9IHRyYW5zbGF0ZSgkeygxLWUpKmR9JHtmfSwgJHsoMS1lKSpwfSR7bX0pOwoJCQlvcGFjaXR5OiAke2MtdSp0fWB9fWZ1bmN0aW9uIGx4KGUse2RlbGF5OnQ9MCxkdXJhdGlvbjpuPTQwMCxlYXNpbmc6cj1heCxheGlzOmk9YHlgfT17fSl7bGV0IGE9Z2V0Q29tcHV0ZWRTdHlsZShlKSxvPSthLm9wYWNpdHkscz1pPT09YHlgP2BoZWlnaHRgOmB3aWR0aGAsYz1wYXJzZUZsb2F0KGFbc10pLGw9aT09PWB5YD9bYHRvcGAsYGJvdHRvbWBdOltgbGVmdGAsYHJpZ2h0YF0sdT1sLm1hcChlPT5gJHtlWzBdLnRvVXBwZXJDYXNlKCl9JHtlLnNsaWNlKDEpfWApLGQ9cGFyc2VGbG9hdChhW2BwYWRkaW5nJHt1WzBdfWBdKSxmPXBhcnNlRmxvYXQoYVtgcGFkZGluZyR7dVsxXX1gXSkscD1wYXJzZUZsb2F0KGFbYG1hcmdpbiR7dVswXX1gXSksbT1wYXJzZUZsb2F0KGFbYG1hcmdpbiR7dVsxXX1gXSksaD1wYXJzZUZsb2F0KGFbYGJvcmRlciR7dVswXX1XaWR0aGBdKSxnPXBhcnNlRmxvYXQoYVtgYm9yZGVyJHt1WzFdfVdpZHRoYF0pO3JldHVybntkZWxheTp0LGR1cmF0aW9uOm4sZWFzaW5nOnIsY3NzOmU9PmBvdmVyZmxvdzogaGlkZGVuO29wYWNpdHk6ICR7TWF0aC5taW4oZSoyMCwxKSpvfTske3N9OiAke2UqY31weDtwYWRkaW5nLSR7bFswXX06ICR7ZSpkfXB4O3BhZGRpbmctJHtsWzFdfTogJHtlKmZ9cHg7bWFyZ2luLSR7bFswXX06ICR7ZSpwfXB4O21hcmdpbi0ke2xbMV19OiAke2UqbX1weDtib3JkZXItJHtsWzBdfS13aWR0aDogJHtlKmh9cHg7Ym9yZGVyLSR7bFsxXX0td2lkdGg6ICR7ZSpnfXB4O21pbi0ke3N9OiAwYH19ZnVuY3Rpb24gdXgoZSx7ZGVsYXk6dD0wLGR1cmF0aW9uOm49NDAwLGVhc2luZzpyPWF4LHN0YXJ0Omk9MCxvcGFjaXR5OmE9MH09e30pe2xldCBvPWdldENvbXB1dGVkU3R5bGUoZSkscz0rby5vcGFjaXR5LGM9by50cmFuc2Zvcm09PT1gbm9uZWA/YGA6by50cmFuc2Zvcm0sbD0xLWksdT1zKigxLWEpO3JldHVybntkZWxheTp0LGR1cmF0aW9uOm4sZWFzaW5nOnIsY3NzOihlLHQpPT5gCgkJCXRyYW5zZm9ybTogJHtjfSBzY2FsZSgkezEtbCp0fSk7CgkJCW9wYWNpdHk6ICR7cy11KnR9CgkJYH19YXQoKTt2YXIgZHg9d2koYDxkaXY+PC9kaXY+YCk7ZnVuY3Rpb24gZngoZSx0KXtsdCh0LCEwKTtsZXQgbj1vbyh0LGBoZWlnaHRgLDMsMjApLHI9b28odCxgd2lkdGhgLDMsYDEwMCVgKSxpPW9vKHQsYGNvbG9yU2NoZW1lYCwzLGBncmF5YCksYT1vbyh0LGByb3VuZGVkU3R5bGVgLDMsYHJvdW5kZWQtZnVsbGApLG89Zm4oKCk9PmAke2EoKX0gYW5pbWF0ZS1wdWxzZWApO3ZhciBzPWR4KCk7bGV0IGM7cHIoZT0+e2JhKHMsMSxtYShbUihvKSxpKCk9PT1gZ3JheWAmJmBiZy1ncmF5LTIwMGAsaSgpPT09YGRhcmtHcmF5YCYmYGJnLWdyYXktMzAwYF0pKSxjPVNhKHMsYGAsYyxlKX0sWygpPT4oe2hlaWdodDpteShuKCkpLHdpZHRoOkZ1KHIoKSk/bXkocigpKTpyKCl9KV0pLGtpKGUscyksdXQoKX1mdW5jdGlvbiBweChlLHQpe2xldCBuPW9vKHQsYHNpemVgLDMsMjApO2Z4KGUse2NvbG9yU2NoZW1lOmBkYXJrR3JheWAsZ2V0IHdpZHRoKCl7cmV0dXJuIG4oKX0sZ2V0IGhlaWdodCgpe3JldHVybiBuKCl9fSl9dmFyIG14PUVpKGA8c3ZnPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE4IDZMNiAxOE02IDZsMTIgMTIiPjwvcGF0aD48L3N2Zz5gKTtmdW5jdGlvbiBoeChlLHQpe2xldCBuPXJvKHQsW2AkJHNsb3RzYCxgJCRldmVudHNgLGAkJGxlZ2FjeWBdKTt2YXIgcj1teCgpO1ZhKHIsKCk9Pih7dmlld0JveDpgMCAwIDI0IDI0YCx3aWR0aDpgMS4yZW1gLGhlaWdodDpgMS4yZW1gLC4uLm59KSksa2koZSxyKX12YXIgZ3g9d2koYDxidXR0b24gdHlwZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+PGRpdj48IT48L2Rpdj48L2J1dHRvbj5gKTtmdW5jdGlvbiBfeChlLHQpe2x0KHQsITApO2xldCBuPW9vKHQsYGljb25PcmllbnRhdGlvbmAsMyxgcmlnaHRgKSxyPW9vKHQsYGljb25BbmltYXRpb25gLDMsYG5vbmVgKSxpPW9vKHQsYGljb25TY2FsZWAsMywhMSksYT1vbyh0LGBzaXplYCwzLGBtZGApLG89b28odCxgdmFyaWFudGAsMyxgZ2hvc3RgKSxzPW9vKHQsYGZvY3VzYCwzLGBwcmltYXJ5YCksYz1mbigoKT0+bigpPT09YHJpZ2h0YD8xOi0xKSxsPWZuKCgpPT5pKCk/MS40OjEuMiksdT1mbigoKT0+dC5pY29uKSxkPWU9PntlLnN0b3BQcm9wYWdhdGlvbigpLHQub25DbGljayYmdC5vbkNsaWNrKGUpfTt2YXIgZj1neCgpLHA9Vm4oZik7JGkoVm4ocCksKCk9PlIodSksKGUsdCk9Pnt0KGUse3dpZHRoOmAxZW1gLGhlaWdodDpgMWVtYH0pfSksWGUocCksWGUoZikscHIoZT0+e2JhKGYsMSxlLGBzdmVsdGUteXdvZm1sYCksZi5kaXNhYmxlZD10LmRpc2FibGVkLHphKGYsYGRhdGEtdGVzdGlkYCx0LnRlc3RJZCksemEoZixgYXJpYS1sYWJlbGAsdC5pY29uRGVzY3JpcHRpb24pLHphKGYsYGFyaWEtZGlzYWJsZWRgLHQuZGlzYWJsZWQpLGJhKHAsMSxtYShbYHctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJgLHIoKT09PWBzcGluYCYmYGFuaW1hdGUtc3BpbmBdKSksU2EocCxgdHJhbnNmb3JtOiBzY2FsZSgke1IobCl9KSBzY2FsZVgoJHtSKGMpfSk7YCl9LFsoKT0+bWEoW2BidG4gYnRuLSR7bygpfSBidG4tJHthKCl9YCwhIXQuZGlzYWJsZWQmJmBidG4tZGlzYWJsZWRgLGlzKCk/YGN1cnNvci1hdXRvYDpgY3Vyc29yLXBvaW50ZXJgLHMoKT09PWBwcmltYXJ5YCYmYGJ1dHRvbi1mb2N1c2AscygpPT09YHNlY29uZGFyeWAmJmBidXR0b24tZm9jdXMtc2Vjb25kYXJ5YF0pXSksZ2koYGNsaWNrYCxmLGQpLGtpKGUsZiksdXQoKX1faShbYGNsaWNrYF0pO2V4cG9ydHtkXyBhcyAkLGp0IGFzICRpLFNsIGFzICRuLGFvIGFzICRyLCRmIGFzICR0LCRfIGFzIEEsZ2kgYXMgQWksc2QgYXMgQW4sc3MgYXMgQXIsVGggYXMgQXQsS18gYXMgQixWbiBhcyBCaSxVdSBhcyBCbixqbyBhcyBCcixIcCBhcyBCdCxGeSBhcyBDLElpIGFzIENpLF9kIGFzIENuLGJzIGFzIENyLHpoIGFzIEN0LG95IGFzIEQsRWkgYXMgRGksbmQgYXMgRG4sX3MgYXMgRHIsTWggYXMgRHQsbXkgYXMgRSx3aSBhcyBFaSxlZCBhcyBFbixocyBhcyBFcixGaCBhcyBFdCxKXyBhcyBGLCRyIGFzIEZpLEt1IGFzIEZuLHpvIGFzIEZyLFpwIGFzIEZ0LE9fIGFzIEcsVG4gYXMgR2ksJGwgYXMgR24scG8gYXMgR3IsenAgYXMgR3QsTl8gYXMgSCxVbiBhcyBIaSxMdSBhcyBIbix5byBhcyBIcixNcCBhcyBIdCxYIGFzIEkscHIgYXMgSWksWXUgYXMgSW4sVm8gYXMgSXIsWXAgYXMgSXQsbV8gYXMgSixwbiBhcyBKaSxIbCBhcyBKbix6IGFzIEpyLFJwIGFzIEp0LGdfIGFzIEssQ24gYXMgS2ksWWwgYXMgS24sQiBhcyBLcixKIGFzIEt0LEdfIGFzIEwsb3IgYXMgTGkscXUgYXMgTG4sQm8gYXMgTHIsWHAgYXMgTHQscnYgYXMgTSxwaSBhcyBNaSxpZCBhcyBNbixhcyBhcyBNcixFaCBhcyBNdCxZXyBhcyBOLFIgYXMgTmksWnUgYXMgTm4saXMgYXMgTnIsaWggYXMgTnQsYXkgYXMgTyxEaSBhcyBPaSxsZCBhcyBPbixscyBhcyBPcixraCBhcyBPdCxXXyBhcyBQLFhyIGFzIFBpLEd1IGFzIFBuLEpvIGFzIFByLGFtIGFzIFB0LGlfIGFzIFEsUHQgYXMgUWksd2wgYXMgUW4scm8gYXMgUXIsT3AgYXMgUXQsVV8gYXMgUixjciBhcyBSaSxXdSBhcyBSbixVIGFzIFJyLFdwIGFzIFJ0LFB5IGFzIFMsamkgYXMgU2ksZ2QgYXMgU24seXMgYXMgU3IsYWcgYXMgU3QsZ3kgYXMgVCxPaSBhcyBUaSx1ZCBhcyBUbixmcyBhcyBUcixJaCBhcyBUdCxqXyBhcyBVLGpuIGFzIFVpLE11IGFzIFVuLFYgYXMgVXIsQnAgYXMgVXQsTV8gYXMgVixIbiBhcyBWaSxWdSBhcyBWbixIIGFzIFZyLFZwIGFzIFZ0LERfIGFzIFcsd24gYXMgV2kscSBhcyBXbix2byBhcyBXcixGcCBhcyBXdCxzXyBhcyBYLE10IGFzIFhpLFJsIGFzIFhuLHNvIGFzIFhyLElwIGFzIFh0LHBfIGFzIFksZm4gYXMgWWksVyBhcyBZbixjbyBhcyBZcixQcCBhcyBZdCxhXyBhcyBaLEF0IGFzIFppLENsIGFzIFpuLG9vIGFzIFpyLGtwIGFzIFp0LFJ5IGFzIF8sR2kgYXMgX2ksVGQgYXMgX24sTmMgYXMgX3IsdWcgYXMgX3Qsc3ggYXMgYSxsdCBhcyBhYSxWYSBhcyBhaSxCZiBhcyBhbixsbCBhcyBhcixVZyBhcyBhdCxOeSBhcyBiLFJpIGFzIGJpLHlkIGFzIGJuLENzIGFzIGJyLGlnIGFzIGJ0LGx4IGFzIGMsWGUgYXMgY2EsVGEgYXMgY2ksU2YgYXMgY24sUWMgYXMgY3IsVmcgYXMgY3QsSHkgYXMgZCxtYSBhcyBkaSxHZCBhcyBkbixXYyBhcyBkcixOZyBhcyBkdCxrIGFzIGVhLGVvIGFzIGVpLGVwIGFzIGVuLGJsIGFzIGVyLG9fIGFzIGV0LHp5IGFzIGYsdWEgYXMgZmksVmQgYXMgZm4sR2MgYXMgZnIsT2cgYXMgZnQsR3kgYXMgZyxaaSBhcyBnaSx3ZCBhcyBnbixCYyBhcyBncix5ZyBhcyBndCxWeSBhcyBoLFFpIGFzIGhpLEVkIGFzIGhuLHpjIGFzIGhyLFRnIGFzIGh0LGZ4IGFzIGksdXQgYXMgaWEscWEgYXMgaWksRmYgYXMgaW4sc2wgYXMgaXIsdF8gYXMgaXQsaXYgYXMgaixoaSBhcyBqaSxmZCBhcyBqbix1cyBhcyBqcixEaCBhcyBqdCxldiBhcyBrLF9pIGFzIGtpLGNkIGFzIGtuLGNzIGFzIGtyLE9oIGFzIGt0LGV4IGFzIGwseCBhcyBsYSxTYSBhcyBsaSxiZiBhcyBsbixVYyBhcyBscixMZyBhcyBsdCxxeSBhcyBtLCRpIGFzIG1pLHpkIGFzIG1uLFZjIGFzIG1yLERnIGFzIG10LGh4IGFzIG4sTyBhcyBuYSxZYSBhcyBuaSxxZiBhcyBubix1bCBhcyBucixjXyBhcyBudCxjeCBhcyBvLGN0IGFzIG9hLHphIGFzIG9pLHpmIGFzIG9uLG9sIGFzIG9yLEhnIGFzIG90LFd5IGFzIHAsY2EgYXMgcGksSGQgYXMgcG4sSGMgYXMgcHIsRWcgYXMgcHQsaF8gYXMgcSxPbiBhcyBxaSxLbCBhcyBxbixtbyBhcyBxcixOcCBhcyBxdCxweCBhcyByLHN0IGFzIHJhLEphIGFzIHJpLFVmIGFzIHJuLGNsIGFzIHJyLGxfIGFzIHJ0LHV4IGFzIHMsWmUgYXMgc2EsTGEgYXMgc2ksRGYgYXMgc24sbmwgYXMgc3IsQmcgYXMgc3QsX3ggYXMgdCxBIGFzIHRhLCRhIGFzIHRpLFRwIGFzIHRuLGRsIGFzIHRyLHJfIGFzIHR0LEx5IGFzIHUsdSBhcyB1YSxiYSBhcyB1aSxSZCBhcyB1bixLYyBhcyB1cixGZyBhcyB1dCxKeSBhcyB2LFZpIGFzIHZpLFNkIGFzIHZuLFBjIGFzIHZyLHJnIGFzIHZ0LER5IGFzIHcsa2kgYXMgd2ksJHUgYXMgd24sZ3MgYXMgd3IsTGggYXMgd3QsSXkgYXMgeCxNaSBhcyB4aSx4ZCBhcyB4bix4cyBhcyB4cixvZyBhcyB4dCxNeSBhcyB5LEJpIGFzIHlpLGJkIGFzIHluLE1jIGFzIHlyLFZoIGFzIHl0LFZfIGFzIHosWG4gYXMgemksSHUgYXMgem4sTG8gYXMgenIsVXAgYXMgenR9OwovLyMgc291cmNlTWFwcGluZ1VSTD1zaGFyZWQta2IxeXFIYUEuanMubWFw"}},"time_used":16,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img04.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.066Z","timestamp":1785159465066,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img04.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 2620\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2620,"size_decoded":2885,"mime_type":"image/png","magic":"PNG image data, 137 x 42, 8-bit/color RGBA, non-interlaced","md5":"77ef5a0fee6b1ca7e45396ba4be0e808","sha1":"783922964e3d17b6f2eef4f5c800a4ec7602d3d4","sha256":"bd16a080ab47689925c9480ec42dff6eeaeac6266325594b41f08038c205b2b9","sha512":"ae58276fd48c59d7e3d77e7a5d43d284914998f58a20c4604e79340d0a84d4fd7ab5817a28364305069fa0a701be535cbdb212aa812a88487a1f2a2103b32525","ssdeep":"","tlshash":"095109ee5121c95a5acf3af1c911d29d6345b9048122f542eec53025fe25eecc8ccdd6","first_seen":"2025-08-04T11:51:21.622278Z","last_seen":"2026-07-27T13:38:47.791531Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":69,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":62,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.odometer.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.801Z","timestamp":1785159464801,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/jquery.odometer.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 3693\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":12145,"size_decoded":3930,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (12122)","md5":"dc259ded1a84fccde97eed25b0f36fd7","sha1":"951884d82a2ab311e2719ff96d429082b48c4053","sha256":"45cd87a552a2962ecab5f977c381df31f82adc173512b492cb4a0bd555b2c567","sha512":"a8f21bb09901d6d0f61941dac83cb874b3c132ec4f4f5e163523e1e35705080e57866042de05d3c20c2a63d156769f755513b9cc9f8cc4b75a797ef51eb7518e","ssdeep":"192:x2vNkLkN/cBQiCmchU752Z/mE7hJrky6XHdKyXmaWZShW1Ik7IaB:8vokN0BQiX5y/m8XklHdKyXIZS8OiB","tlshash":"fe42451163e1273d9707e1a1aeef8d44b7b989296194808eb61cd4d9a831c348b7dff8","first_seen":"2023-03-11T22:43:23Z","last_seen":"2026-08-02T09:41:51.847561Z","times_seen":241,"resource_available":true,"data":"Ci8qISBvZG9tZXRlciAwLjQuOCAqLwooZnVuY3Rpb24gKCkgeyB2YXIgYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCwgbSwgbiwgbywgcCwgcSwgciwgcywgdCwgdSwgdiwgdywgeCwgeSwgeiwgQSwgQiwgQywgRCwgRSwgRiwgRyA9IFtdLnNsaWNlOyBxID0gJzxzcGFuIGNsYXNzPSJvZG9tZXRlci12YWx1ZSI+PC9zcGFuPicsIG4gPSAnPHNwYW4gY2xhc3M9Im9kb21ldGVyLXJpYmJvbiI+PHNwYW4gY2xhc3M9Im9kb21ldGVyLXJpYmJvbi1pbm5lciI+JyArIHEgKyAiPC9zcGFuPjwvc3Bhbj4iLCBkID0gJzxzcGFuIGNsYXNzPSJvZG9tZXRlci1kaWdpdCI+PHNwYW4gY2xhc3M9Im9kb21ldGVyLWRpZ2l0LXNwYWNlciI+ODwvc3Bhbj48c3BhbiBjbGFzcz0ib2RvbWV0ZXItZGlnaXQtaW5uZXIiPicgKyBuICsgIjwvc3Bhbj48L3NwYW4+IiwgZyA9ICc8c3BhbiBjbGFzcz0ib2RvbWV0ZXItZm9ybWF0dGluZy1tYXJrIj48L3NwYW4+JywgYyA9ICIoLGRkZCkuZGQiLCBoID0gL15cKD8oW14pXSopXCk/KD86KC4pKGQrKSk/JC8sIGkgPSAzMCwgZiA9IDJlMywgYSA9IDIwLCBqID0gMiwgZSA9IC41LCBrID0gMWUzIC8gaSwgYiA9IDFlMyAvIGEsIG8gPSAidHJhbnNpdGlvbmVuZCB3ZWJraXRUcmFuc2l0aW9uRW5kIG9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIE1TVHJhbnNpdGlvbkVuZCIsIHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwgcCA9IG51bGwgIT0geS50cmFuc2l0aW9uIHx8IG51bGwgIT0geS53ZWJraXRUcmFuc2l0aW9uIHx8IG51bGwgIT0geS5tb3pUcmFuc2l0aW9uIHx8IG51bGwgIT0geS5vVHJhbnNpdGlvbiwgdyA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSwgbCA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5Nb3pNdXRhdGlvbk9ic2VydmVyLCBzID0gZnVuY3Rpb24gKGEpIHsgdmFyIGI7IHJldHVybiBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGIuaW5uZXJIVE1MID0gYSwgYi5jaGlsZHJlblswXSB9LCB2ID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEuY2xhc3NOYW1lID0gYS5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnwgKSIgKyBiLnNwbGl0KCIgIikuam9pbigifCIpICsgIiggfCQpIiwgImdpIiksICIgIikgfSwgciA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiB2KGEsIGIpLCBhLmNsYXNzTmFtZSArPSAiICIgKyBiIH0sIHogPSBmdW5jdGlvbiAoYSwgYikgeyB2YXIgYzsgcmV0dXJuIG51bGwgIT0gZG9jdW1lbnQuY3JlYXRlRXZlbnQgPyAoYyA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIiksIGMuaW5pdEV2ZW50KGIsICEwLCAhMCksIGEuZGlzcGF0Y2hFdmVudChjKSkgOiB2b2lkIDAgfSwgdSA9IGZ1bmN0aW9uICgpIHsgdmFyIGEsIGI7IHJldHVybiBudWxsICE9IChhID0gbnVsbCAhPSAoYiA9IHdpbmRvdy5wZXJmb3JtYW5jZSkgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYi5ub3cgPyBiLm5vdygpIDogdm9pZCAwKSA/IGEgOiArbmV3IERhdGUgfSwgeCA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBudWxsID09IGIgJiYgKGIgPSAwKSwgYiA/IChhICo9IE1hdGgucG93KDEwLCBiKSwgYSArPSAuNSwgYSA9IE1hdGguZmxvb3IoYSksIGEgLz0gTWF0aC5wb3coMTAsIGIpKSA6IE1hdGgucm91bmQoYSkgfSwgQSA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiAwID4gYSA/IE1hdGguY2VpbChhKSA6IE1hdGguZmxvb3IoYSkgfSwgdCA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBhIC0geChhKSB9LCBDID0gITEsIChCID0gZnVuY3Rpb24gKCkgeyB2YXIgYSwgYiwgYywgZCwgZTsgaWYgKCFDICYmIG51bGwgIT0gd2luZG93LmpRdWVyeSkgeyBmb3IgKEMgPSAhMCwgZCA9IFsiaHRtbCIsICJ0ZXh0Il0sIGUgPSBbXSwgYiA9IDAsIGMgPSBkLmxlbmd0aDsgYyA+IGI7IGIrKylhID0gZFtiXSwgZS5wdXNoKGZ1bmN0aW9uIChhKSB7IHZhciBiOyByZXR1cm4gYiA9IHdpbmRvdy5qUXVlcnkuZm5bYV0sIHdpbmRvdy5qUXVlcnkuZm5bYV0gPSBmdW5jdGlvbiAoYSkgeyB2YXIgYzsgcmV0dXJuIG51bGwgPT0gYSB8fCBudWxsID09IChudWxsICE9IChjID0gdGhpc1swXSkgPyBjLm9kb21ldGVyIDogdm9pZCAwKSA/IGIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHRoaXNbMF0ub2RvbWV0ZXIudXBkYXRlKGEpIH0gfShhKSk7IHJldHVybiBlIH0gfSkoKSwgc2V0VGltZW91dChCLCAwKSwgbSA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gYShiKSB7IHZhciBjLCBkLCBlLCBnLCBoLCBpLCBsLCBtLCBuLCBvLCBwID0gdGhpczsgaWYgKHRoaXMub3B0aW9ucyA9IGIsIHRoaXMuZWwgPSB0aGlzLm9wdGlvbnMuZWwsIG51bGwgIT0gdGhpcy5lbC5vZG9tZXRlcikgcmV0dXJuIHRoaXMuZWwub2RvbWV0ZXI7IHRoaXMuZWwub2RvbWV0ZXIgPSB0aGlzLCBtID0gYS5vcHRpb25zOyBmb3IgKGQgaW4gbSkgZyA9IG1bZF0sIG51bGwgPT0gdGhpcy5vcHRpb25zW2RdICYmICh0aGlzLm9wdGlvbnNbZF0gPSBnKTsgbnVsbCA9PSAoaCA9IHRoaXMub3B0aW9ucykuZHVyYXRpb24gJiYgKGguZHVyYXRpb24gPSBmKSwgdGhpcy5NQVhfVkFMVUVTID0gdGhpcy5vcHRpb25zLmR1cmF0aW9uIC8gayAvIGogfCAwLCB0aGlzLnJlc2V0Rm9ybWF0KCksIHRoaXMudmFsdWUgPSB0aGlzLmNsZWFuVmFsdWUobnVsbCAhPSAobiA9IHRoaXMub3B0aW9ucy52YWx1ZSkgPyBuIDogIiIpLCB0aGlzLnJlbmRlckluc2lkZSgpLCB0aGlzLnJlbmRlcigpOyB0cnkgeyBmb3IgKG8gPSBbImlubmVySFRNTCIsICJpbm5lclRleHQiLCAidGV4dENvbnRlbnQiXSwgaSA9IDAsIGwgPSBvLmxlbmd0aDsgbCA+IGk7IGkrKyllID0gb1tpXSwgbnVsbCAhPSB0aGlzLmVsW2VdICYmICFmdW5jdGlvbiAoYSkgeyByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHAuZWwsIGEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHZhciBiOyByZXR1cm4gImlubmVySFRNTCIgPT09IGEgPyBwLmluc2lkZS5vdXRlckhUTUwgOiBudWxsICE9IChiID0gcC5pbnNpZGUuaW5uZXJUZXh0KSA/IGIgOiBwLmluc2lkZS50ZXh0Q29udGVudCB9LCBzZXQ6IGZ1bmN0aW9uIChhKSB7IHJldHVybiBwLnVwZGF0ZShhKSB9IH0pIH0oZSkgfSBjYXRjaCAocSkgeyBjID0gcSwgdGhpcy53YXRjaEZvck11dGF0aW9ucygpIH0gfSByZXR1cm4gYS5wcm90b3R5cGUucmVuZGVySW5zaWRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5pbnNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgdGhpcy5pbnNpZGUuY2xhc3NOYW1lID0gIm9kb21ldGVyLWluc2lkZSIsIHRoaXMuZWwuaW5uZXJIVE1MID0gIiIsIHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy5pbnNpZGUpIH0sIGEucHJvdG90eXBlLndhdGNoRm9yTXV0YXRpb25zID0gZnVuY3Rpb24gKCkgeyB2YXIgYSwgYiA9IHRoaXM7IGlmIChudWxsICE9IGwpIHRyeSB7IHJldHVybiBudWxsID09IHRoaXMub2JzZXJ2ZXIgJiYgKHRoaXMub2JzZXJ2ZXIgPSBuZXcgbChmdW5jdGlvbiAoYSkgeyB2YXIgYzsgcmV0dXJuIGMgPSBiLmVsLmlubmVyVGV4dCwgYi5yZW5kZXJJbnNpZGUoKSwgYi5yZW5kZXIoYi52YWx1ZSksIGIudXBkYXRlKGMpIH0pKSwgdGhpcy53YXRjaE11dGF0aW9ucyA9ICEwLCB0aGlzLnN0YXJ0V2F0Y2hpbmdNdXRhdGlvbnMoKSB9IGNhdGNoIChjKSB7IGEgPSBjIH0gfSwgYS5wcm90b3R5cGUuc3RhcnRXYXRjaGluZ011dGF0aW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMud2F0Y2hNdXRhdGlvbnMgPyB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbCwgeyBjaGlsZExpc3Q6ICEwIH0pIDogdm9pZCAwIH0sIGEucHJvdG90eXBlLnN0b3BXYXRjaGluZ011dGF0aW9ucyA9IGZ1bmN0aW9uICgpIHsgdmFyIGE7IHJldHVybiBudWxsICE9IChhID0gdGhpcy5vYnNlcnZlcikgPyBhLmRpc2Nvbm5lY3QoKSA6IHZvaWQgMCB9LCBhLnByb3RvdHlwZS5jbGVhblZhbHVlID0gZnVuY3Rpb24gKGEpIHsgdmFyIGI7IHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgYSAmJiAoYSA9IGEucmVwbGFjZShudWxsICE9IChiID0gdGhpcy5mb3JtYXQucmFkaXgpID8gYiA6ICIuIiwgIjxyYWRpeD4iKSwgYSA9IGEucmVwbGFjZSgvWy4sXS9nLCAiIiksIGEgPSBhLnJlcGxhY2UoIjxyYWRpeD4iLCAiLiIpLCBhID0gcGFyc2VGbG9hdChhLCAxMCkgfHwgMCksIHgoYSwgdGhpcy5mb3JtYXQucHJlY2lzaW9uKSB9LCBhLnByb3RvdHlwZS5iaW5kVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHsgdmFyIGEsIGIsIGMsIGQsIGUsIGYsIGcgPSB0aGlzOyBpZiAoIXRoaXMudHJhbnNpdGlvbkVuZEJvdW5kKSB7IGZvciAodGhpcy50cmFuc2l0aW9uRW5kQm91bmQgPSAhMCwgYiA9ICExLCBlID0gby5zcGxpdCgiICIpLCBmID0gW10sIGMgPSAwLCBkID0gZS5sZW5ndGg7IGQgPiBjOyBjKyspYSA9IGVbY10sIGYucHVzaCh0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoYSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gYiA/ICEwIDogKGIgPSAhMCwgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBnLnJlbmRlcigpLCBiID0gITEsIHooZy5lbCwgIm9kb21ldGVyZG9uZSIpIH0sIDApLCAhMCkgfSwgITEpKTsgcmV0dXJuIGYgfSB9LCBhLnByb3RvdHlwZS5yZXNldEZvcm1hdCA9IGZ1bmN0aW9uICgpIHsgdmFyIGEsIGIsIGQsIGUsIGYsIGcsIGksIGo7IGlmIChhID0gbnVsbCAhPSAoaSA9IHRoaXMub3B0aW9ucy5mb3JtYXQpID8gaSA6IGMsIGEgfHwgKGEgPSAiZCIpLCBkID0gaC5leGVjKGEpLCAhZCkgdGhyb3cgbmV3IEVycm9yKCJPZG9tZXRlcjogVW5wYXJzYWJsZSBkaWdpdCBmb3JtYXQiKTsgcmV0dXJuIGogPSBkLnNsaWNlKDEsIDQpLCBnID0galswXSwgZiA9IGpbMV0sIGIgPSBqWzJdLCBlID0gKG51bGwgIT0gYiA/IGIubGVuZ3RoIDogdm9pZCAwKSB8fCAwLCB0aGlzLmZvcm1hdCA9IHsgcmVwZWF0aW5nOiBnLCByYWRpeDogZiwgcHJlY2lzaW9uOiBlIH0gfSwgYS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGEpIHsgdmFyIGIsIGMsIGQsIGUsIGYsIGcsIGg7IGZvciAobnVsbCA9PSBhICYmIChhID0gdGhpcy52YWx1ZSksIHRoaXMuc3RvcFdhdGNoaW5nTXV0YXRpb25zKCksIHRoaXMucmVzZXRGb3JtYXQoKSwgdGhpcy5pbnNpZGUuaW5uZXJIVE1MID0gIiIsIGYgPSB0aGlzLm9wdGlvbnMudGhlbWUsIGIgPSB0aGlzLmVsLmNsYXNzTmFtZS5zcGxpdCgiICIpLCBlID0gW10sIGcgPSAwLCBoID0gYi5sZW5ndGg7IGggPiBnOyBnKyspYyA9IGJbZ10sIGMubGVuZ3RoICYmICgoZCA9IC9eb2RvbWV0ZXItdGhlbWUtKC4rKSQvLmV4ZWMoYykpID8gZiA9IGRbMV0gOiAvXm9kb21ldGVyKC18JCkvLnRlc3QoYykgfHwgZS5wdXNoKGMpKTsgcmV0dXJuIGUucHVzaCgib2RvbWV0ZXIiKSwgcCB8fCBlLnB1c2goIm9kb21ldGVyLW5vLXRyYW5zaXRpb25zIiksIGYgPyBlLnB1c2goIm9kb21ldGVyLXRoZW1lLSIgKyBmKSA6IGUucHVzaCgib2RvbWV0ZXItYXV0by10aGVtZSIpLCB0aGlzLmVsLmNsYXNzTmFtZSA9IGUuam9pbigiICIpLCB0aGlzLnJpYmJvbnMgPSB7fSwgdGhpcy5mb3JtYXREaWdpdHMoYSksIHRoaXMuc3RhcnRXYXRjaGluZ011dGF0aW9ucygpIH0sIGEucHJvdG90eXBlLmZvcm1hdERpZ2l0cyA9IGZ1bmN0aW9uIChhKSB7IHZhciBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrOyBpZiAodGhpcy5kaWdpdHMgPSBbXSwgdGhpcy5vcHRpb25zLmZvcm1hdEZ1bmN0aW9uKSBmb3IgKGQgPSB0aGlzLm9wdGlvbnMuZm9ybWF0RnVuY3Rpb24oYSksIGogPSBkLnNwbGl0KCIiKS5yZXZlcnNlKCksIGYgPSAwLCBoID0gai5sZW5ndGg7IGggPiBmOyBmKyspYyA9IGpbZl0sIGMubWF0Y2goLzAtOS8pID8gKGIgPSB0aGlzLnJlbmRlckRpZ2l0KCksIGIucXVlcnlTZWxlY3RvcigiLm9kb21ldGVyLXZhbHVlIikuaW5uZXJIVE1MID0gYywgdGhpcy5kaWdpdHMucHVzaChiKSwgdGhpcy5pbnNlcnREaWdpdChiKSkgOiB0aGlzLmFkZFNwYWNlcihjKTsgZWxzZSBmb3IgKGUgPSAhdGhpcy5mb3JtYXQucHJlY2lzaW9uIHx8ICF0KGEpIHx8ICExLCBrID0gYS50b1N0cmluZygpLnNwbGl0KCIiKS5yZXZlcnNlKCksIGcgPSAwLCBpID0gay5sZW5ndGg7IGkgPiBnOyBnKyspYiA9IGtbZ10sICIuIiA9PT0gYiAmJiAoZSA9ICEwKSwgdGhpcy5hZGREaWdpdChiLCBlKSB9LCBhLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYSkgeyB2YXIgYiwgYyA9IHRoaXM7IHJldHVybiBhID0gdGhpcy5jbGVhblZhbHVlKGEpLCAoYiA9IGEgLSB0aGlzLnZhbHVlKSA/ICh2KHRoaXMuZWwsICJvZG9tZXRlci1hbmltYXRpbmctdXAgb2RvbWV0ZXItYW5pbWF0aW5nLWRvd24gb2RvbWV0ZXItYW5pbWF0aW5nIiksIGIgPiAwID8gcih0aGlzLmVsLCAib2RvbWV0ZXItYW5pbWF0aW5nLXVwIikgOiByKHRoaXMuZWwsICJvZG9tZXRlci1hbmltYXRpbmctZG93biIpLCB0aGlzLnN0b3BXYXRjaGluZ011dGF0aW9ucygpLCB0aGlzLmFuaW1hdGUoYSksIHRoaXMuc3RhcnRXYXRjaGluZ011dGF0aW9ucygpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGMuZWwub2Zmc2V0SGVpZ2h0LCByKGMuZWwsICJvZG9tZXRlci1hbmltYXRpbmciKSB9LCAwKSwgdGhpcy52YWx1ZSA9IGEpIDogdm9pZCAwIH0sIGEucHJvdG90eXBlLnJlbmRlckRpZ2l0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcyhkKSB9LCBhLnByb3RvdHlwZS5pbnNlcnREaWdpdCA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBudWxsICE9IGIgPyB0aGlzLmluc2lkZS5pbnNlcnRCZWZvcmUoYSwgYikgOiB0aGlzLmluc2lkZS5jaGlsZHJlbi5sZW5ndGggPyB0aGlzLmluc2lkZS5pbnNlcnRCZWZvcmUoYSwgdGhpcy5pbnNpZGUuY2hpbGRyZW5bMF0pIDogdGhpcy5pbnNpZGUuYXBwZW5kQ2hpbGQoYSkgfSwgYS5wcm90b3R5cGUuYWRkU3BhY2VyID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgdmFyIGQ7IHJldHVybiBkID0gcyhnKSwgZC5pbm5lckhUTUwgPSBhLCBjICYmIHIoZCwgYyksIHRoaXMuaW5zZXJ0RGlnaXQoZCwgYikgfSwgYS5wcm90b3R5cGUuYWRkRGlnaXQgPSBmdW5jdGlvbiAoYSwgYikgeyB2YXIgYywgZCwgZSwgZjsgaWYgKG51bGwgPT0gYiAmJiAoYiA9ICEwKSwgIi0iID09PSBhKSByZXR1cm4gdGhpcy5hZGRTcGFjZXIoYSwgbnVsbCwgIm9kb21ldGVyLW5lZ2F0aW9uLW1hcmsiKTsgaWYgKCIuIiA9PT0gYSkgcmV0dXJuIHRoaXMuYWRkU3BhY2VyKG51bGwgIT0gKGYgPSB0aGlzLmZvcm1hdC5yYWRpeCkgPyBmIDogIi4iLCBudWxsLCAib2RvbWV0ZXItcmFkaXgtbWFyayIpOyBpZiAoYikgZm9yIChlID0gITE7IDspIHsgaWYgKCF0aGlzLmZvcm1hdC5yZXBlYXRpbmcubGVuZ3RoKSB7IGlmIChlKSB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvZG9tZXRlciBmb3JtYXQgd2l0aG91dCBkaWdpdHMiKTsgdGhpcy5yZXNldEZvcm1hdCgpLCBlID0gITAgfSBpZiAoYyA9IHRoaXMuZm9ybWF0LnJlcGVhdGluZ1t0aGlzLmZvcm1hdC5yZXBlYXRpbmcubGVuZ3RoIC0gMV0sIHRoaXMuZm9ybWF0LnJlcGVhdGluZyA9IHRoaXMuZm9ybWF0LnJlcGVhdGluZy5zdWJzdHJpbmcoMCwgdGhpcy5mb3JtYXQucmVwZWF0aW5nLmxlbmd0aCAtIDEpLCAiZCIgPT09IGMpIGJyZWFrOyB0aGlzLmFkZFNwYWNlcihjKSB9IHJldHVybiBkID0gdGhpcy5yZW5kZXJEaWdpdCgpLCBkLnF1ZXJ5U2VsZWN0b3IoIi5vZG9tZXRlci12YWx1ZSIpLmlubmVySFRNTCA9IGEsIHRoaXMuZGlnaXRzLnB1c2goZCksIHRoaXMuaW5zZXJ0RGlnaXQoZCkgfSwgYS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBwICYmICJjb3VudCIgIT09IHRoaXMub3B0aW9ucy5hbmltYXRpb24gPyB0aGlzLmFuaW1hdGVTbGlkZShhKSA6IHRoaXMuYW5pbWF0ZUNvdW50KGEpIH0sIGEucHJvdG90eXBlLmFuaW1hdGVDb3VudCA9IGZ1bmN0aW9uIChhKSB7IHZhciBjLCBkLCBlLCBmLCBnLCBoID0gdGhpczsgaWYgKGQgPSArYSAtIHRoaXMudmFsdWUpIHJldHVybiBmID0gZSA9IHUoKSwgYyA9IHRoaXMudmFsdWUsIChnID0gZnVuY3Rpb24gKCkgeyB2YXIgaSwgaiwgazsgcmV0dXJuIHUoKSAtIGYgPiBoLm9wdGlvbnMuZHVyYXRpb24gPyAoaC52YWx1ZSA9IGEsIGgucmVuZGVyKCksIHZvaWQgeihoLmVsLCAib2RvbWV0ZXJkb25lIikpIDogKGkgPSB1KCkgLSBlLCBpID4gYiAmJiAoZSA9IHUoKSwgayA9IGkgLyBoLm9wdGlvbnMuZHVyYXRpb24sIGogPSBkICogaywgYyArPSBqLCBoLnJlbmRlcihNYXRoLnJvdW5kKGMpKSksIG51bGwgIT0gdyA/IHcoZykgOiBzZXRUaW1lb3V0KGcsIGIpKSB9KSgpIH0sIGEucHJvdG90eXBlLmdldERpZ2l0Q291bnQgPSBmdW5jdGlvbiAoKSB7IHZhciBhLCBiLCBjLCBkLCBlLCBmOyBmb3IgKGQgPSAxIDw9IGFyZ3VtZW50cy5sZW5ndGggPyBHLmNhbGwoYXJndW1lbnRzLCAwKSA6IFtdLCBhID0gZSA9IDAsIGYgPSBkLmxlbmd0aDsgZiA+IGU7IGEgPSArK2UpYyA9IGRbYV0sIGRbYV0gPSBNYXRoLmFicyhjKTsgcmV0dXJuIGIgPSBNYXRoLm1heC5hcHBseShNYXRoLCBkKSwgTWF0aC5jZWlsKE1hdGgubG9nKGIgKyAxKSAvIE1hdGgubG9nKDEwKSkgfSwgYS5wcm90b3R5cGUuZ2V0RnJhY3Rpb25hbERpZ2l0Q291bnQgPSBmdW5jdGlvbiAoKSB7IHZhciBhLCBiLCBjLCBkLCBlLCBmLCBnOyBmb3IgKGUgPSAxIDw9IGFyZ3VtZW50cy5sZW5ndGggPyBHLmNhbGwoYXJndW1lbnRzLCAwKSA6IFtdLCBiID0gL15cLT9cZCpcLihcZCo/KTAqJC8sIGEgPSBmID0gMCwgZyA9IGUubGVuZ3RoOyBnID4gZjsgYSA9ICsrZilkID0gZVthXSwgZVthXSA9IGQudG9TdHJpbmcoKSwgYyA9IGIuZXhlYyhlW2FdKSwgbnVsbCA9PSBjID8gZVthXSA9IDAgOiBlW2FdID0gY1sxXS5sZW5ndGg7IHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBlKSB9LCBhLnByb3RvdHlwZS5yZXNldERpZ2l0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZGlnaXRzID0gW10sIHRoaXMucmliYm9ucyA9IFtdLCB0aGlzLmluc2lkZS5pbm5lckhUTUwgPSAiIiwgdGhpcy5yZXNldEZvcm1hdCgpIH0sIGEucHJvdG90eXBlLmFuaW1hdGVTbGlkZSA9IGZ1bmN0aW9uIChhKSB7IHZhciBiLCBjLCBkLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCBzLCB0LCB1LCB2LCB3LCB4LCB5LCB6LCBCLCBDLCBELCBFOyBpZiAocyA9IHRoaXMudmFsdWUsIGogPSB0aGlzLmdldEZyYWN0aW9uYWxEaWdpdENvdW50KHMsIGEpLCBqICYmIChhICo9IE1hdGgucG93KDEwLCBqKSwgcyAqPSBNYXRoLnBvdygxMCwgaikpLCBkID0gYSAtIHMpIHsgZm9yICh0aGlzLmJpbmRUcmFuc2l0aW9uRW5kKCksIGYgPSB0aGlzLmdldERpZ2l0Q291bnQocywgYSksIGcgPSBbXSwgYiA9IDAsIG0gPSB2ID0gMDsgZiA+PSAwID8gZiA+IHYgOiB2ID4gZjsgbSA9IGYgPj0gMCA/ICsrdiA6IC0tdikgeyBpZiAodCA9IEEocyAvIE1hdGgucG93KDEwLCBmIC0gbSAtIDEpKSwgaSA9IEEoYSAvIE1hdGgucG93KDEwLCBmIC0gbSAtIDEpKSwgaCA9IGkgLSB0LCBNYXRoLmFicyhoKSA+IHRoaXMuTUFYX1ZBTFVFUykgeyBmb3IgKGwgPSBbXSwgbiA9IGggLyAodGhpcy5NQVhfVkFMVUVTICsgdGhpcy5NQVhfVkFMVUVTICogYiAqIGUpLCBjID0gdDsgaCA+IDAgJiYgaSA+IGMgfHwgMCA+IGggJiYgYyA+IGk7KWwucHVzaChNYXRoLnJvdW5kKGMpKSwgYyArPSBuOyBsW2wubGVuZ3RoIC0gMV0gIT09IGkgJiYgbC5wdXNoKGkpLCBiKysgfSBlbHNlIGwgPSBmdW5jdGlvbiAoKSB7IEUgPSBbXTsgZm9yICh2YXIgYSA9IHQ7IGkgPj0gdCA/IGkgPj0gYSA6IGEgPj0gaTsgaSA+PSB0ID8gYSsrIDogYS0tKUUucHVzaChhKTsgcmV0dXJuIEUgfS5hcHBseSh0aGlzKTsgZm9yIChtID0gdyA9IDAsIHkgPSBsLmxlbmd0aDsgeSA+IHc7IG0gPSArK3cpayA9IGxbbV0sIGxbbV0gPSBNYXRoLmFicyhrICUgMTApOyBnLnB1c2gobCkgfSBmb3IgKHRoaXMucmVzZXREaWdpdHMoKSwgRCA9IGcucmV2ZXJzZSgpLCBtID0geCA9IDAsIHogPSBELmxlbmd0aDsgeiA+IHg7IG0gPSArK3gpZm9yIChsID0gRFttXSwgdGhpcy5kaWdpdHNbbV0gfHwgdGhpcy5hZGREaWdpdCgiICIsIG0gPj0gaiksIG51bGwgPT0gKHUgPSB0aGlzLnJpYmJvbnMpW21dICYmICh1W21dID0gdGhpcy5kaWdpdHNbbV0ucXVlcnlTZWxlY3RvcigiLm9kb21ldGVyLXJpYmJvbi1pbm5lciIpKSwgdGhpcy5yaWJib25zW21dLmlubmVySFRNTCA9ICIiLCAwID4gZCAmJiAobCA9IGwucmV2ZXJzZSgpKSwgbyA9IEMgPSAwLCBCID0gbC5sZW5ndGg7IEIgPiBDOyBvID0gKytDKWsgPSBsW29dLCBxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIHEuY2xhc3NOYW1lID0gIm9kb21ldGVyLXZhbHVlIiwgcS5pbm5lckhUTUwgPSBrLCB0aGlzLnJpYmJvbnNbbV0uYXBwZW5kQ2hpbGQocSksIG8gPT09IGwubGVuZ3RoIC0gMSAmJiByKHEsICJvZG9tZXRlci1sYXN0LXZhbHVlIiksIDAgPT09IG8gJiYgcihxLCAib2RvbWV0ZXItZmlyc3QtdmFsdWUiKTsgcmV0dXJuIDAgPiB0ICYmIHRoaXMuYWRkRGlnaXQoIi0iKSwgcCA9IHRoaXMuaW5zaWRlLnF1ZXJ5U2VsZWN0b3IoIi5vZG9tZXRlci1yYWRpeC1tYXJrIiksIG51bGwgIT0gcCAmJiBwLnBhcmVudC5yZW1vdmVDaGlsZChwKSwgaiA/IHRoaXMuYWRkU3BhY2VyKHRoaXMuZm9ybWF0LnJhZGl4LCB0aGlzLmRpZ2l0c1tqIC0gMV0sICJvZG9tZXRlci1yYWRpeC1tYXJrIikgOiB2b2lkIDAgfSB9LCBhIH0oKSwgbS5vcHRpb25zID0gbnVsbCAhPSAoRSA9IHdpbmRvdy5vZG9tZXRlck9wdGlvbnMpID8gRSA6IHt9LCBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdmFyIGEsIGIsIGMsIGQsIGU7IGlmICh3aW5kb3cub2RvbWV0ZXJPcHRpb25zKSB7IGQgPSB3aW5kb3cub2RvbWV0ZXJPcHRpb25zLCBlID0gW107IGZvciAoYSBpbiBkKSBiID0gZFthXSwgZS5wdXNoKG51bGwgIT0gKGMgPSBtLm9wdGlvbnMpW2FdID8gKGMgPSBtLm9wdGlvbnMpW2FdIDogY1thXSA9IGIpOyByZXR1cm4gZSB9IH0sIDApLCBtLmluaXQgPSBmdW5jdGlvbiAoKSB7IHZhciBhLCBiLCBjLCBkLCBlLCBmOyBpZiAobnVsbCAhPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKSB7IGZvciAoYiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwobS5vcHRpb25zLnNlbGVjdG9yIHx8ICIub2RvbWV0ZXIiKSwgZiA9IFtdLCBjID0gMCwgZCA9IGIubGVuZ3RoOyBkID4gYzsgYysrKWEgPSBiW2NdLCBmLnB1c2goYS5vZG9tZXRlciA9IG5ldyBtKHsgZWw6IGEsIHZhbHVlOiBudWxsICE9IChlID0gYS5pbm5lclRleHQpID8gZSA6IGEudGV4dENvbnRlbnQgfSkpOyByZXR1cm4gZiB9IH0sIG51bGwgIT0gKG51bGwgIT0gKEYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpID8gRi5kb1Njcm9sbCA6IHZvaWQgMCkgJiYgbnVsbCAhPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCA/IChEID0gZG9jdW1lbnQub25yZWFkeXN0YXRlY2hhbmdlLCBkb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAiY29tcGxldGUiID09PSBkb2N1bWVudC5yZWFkeVN0YXRlICYmIG0ub3B0aW9ucy5hdXRvICE9PSAhMSAmJiBtLmluaXQoKSwgbnVsbCAhPSBEID8gRC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdm9pZCAwIH0pIDogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG0ub3B0aW9ucy5hdXRvICE9PSAhMSA/IG0uaW5pdCgpIDogdm9pZCAwIH0sICExKSwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZGVmaW5lICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG0gfSkgOiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZXhwb3J0cyAmJiBudWxsICE9PSBleHBvcnRzID8gbW9kdWxlLmV4cG9ydHMgPSBtIDogd2luZG93Lk9kb21ldGVyID0gbSB9KS5jYWxsKHRoaXMpOw=="}},"time_used":34,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":34,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/gsap-animation.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.808Z","timestamp":1785159464808,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/gsap-animation.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 580\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1786,"size_decoded":816,"mime_type":"text/javascript","magic":"ASCII text","md5":"61d7f08525706d199b7b94efacedb48f","sha1":"9e6707d19bdc61b0f8682d2c77d2746ebe1b5b85","sha256":"c2a93e40116682091c972c80a2819c57a1600ddf50cbdb1db869f36478155539","sha512":"17555cde681e8f11ed04eae1ece21629c23ca44425ef7dbb60fd80a2241eafc1a8182b32150d367a7ada478199b583ed2fc3ade17d6479016e61bc2e2fc526dc","ssdeep":"","tlshash":"0531998d86e70561177f63be4abe4529383040432c1aaf68befd420b3f494386762fa5","first_seen":"2024-06-02T05:34:57Z","last_seen":"2026-07-27T13:38:47.76919Z","times_seen":119,"resource_available":true,"data":"Z3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyLCBTcGxpdFRleHQpOwpnc2FwLmNvbmZpZyh7CiAgICBudWxsVGFyZ2V0V2FybjogZmFsc2UsCiAgICB0cmlhbFdhcm46IGZhbHNlCn0pOwoKZnVuY3Rpb24gdGdfdGl0bGVfYW5pbWF0aW9uKCkgewoKICAgIHZhciB0Z192YXIgPSBqUXVlcnkoJy50Zy1oZWFkaW5nLXN1YmhlYWRpbmcnKTsKICAgIGlmICghdGdfdmFyLmxlbmd0aCkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IHF1b3RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50Zy1oZWFkaW5nLXN1YmhlYWRpbmcgLnRnLWVsZW1lbnQtdGl0bGUiKTsKCiAgICBxdW90ZXMuZm9yRWFjaChxdW90ZSA9PiB7CgogICAgICAgIC8vUmVzZXQgaWYgbmVlZGVkCiAgICAgICAgaWYgKHF1b3RlLmFuaW1hdGlvbikgewogICAgICAgICAgICBxdW90ZS5hbmltYXRpb24ucHJvZ3Jlc3MoMSkua2lsbCgpOwogICAgICAgICAgICBxdW90ZS5zcGxpdC5yZXZlcnQoKTsKICAgICAgICB9CgogICAgICAgIHZhciBnZXRjbGFzcyA9IHF1b3RlLmNsb3Nlc3QoJy50Zy1oZWFkaW5nLXN1YmhlYWRpbmcnKS5jbGFzc05hbWU7CiAgICAgICAgdmFyIGFuaW1hdGlvbiA9IGdldGNsYXNzLnNwbGl0KCdhbmltYXRpb24tJyk7CiAgICAgICAgaWYgKGFuaW1hdGlvblsxXSA9PSAic3R5bGU0IikgcmV0dXJuCgogICAgICAgIHF1b3RlLnNwbGl0ID0gbmV3IFNwbGl0VGV4dChxdW90ZSwgewogICAgICAgICAgICB0eXBlOiAibGluZXMsd29yZHMsY2hhcnMiLAogICAgICAgICAgICBsaW5lc0NsYXNzOiAic3BsaXQtbGluZSIKICAgICAgICB9KTsKICAgICAgICBnc2FwLnNldChxdW90ZSwgeyBwZXJzcGVjdGl2ZTogNDAwIH0pOwoKICAgICAgICBpZiAoYW5pbWF0aW9uWzFdID09ICJzdHlsZTEiKSB7CiAgICAgICAgICAgIGdzYXAuc2V0KHF1b3RlLnNwbGl0LmNoYXJzLCB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLAogICAgICAgICAgICAgICAgeTogIjkwJSIsCiAgICAgICAgICAgICAgICByb3RhdGVYOiAiLTQwZGVnIgogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgaWYgKGFuaW1hdGlvblsxXSA9PSAic3R5bGUyIikgewogICAgICAgICAgICBnc2FwLnNldChxdW90ZS5zcGxpdC5jaGFycywgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMCwKICAgICAgICAgICAgICAgIHg6ICI1MCIKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGlmIChhbmltYXRpb25bMV0gPT0gInN0eWxlMyIpIHsKICAgICAgICAgICAgZ3NhcC5zZXQocXVvdGUuc3BsaXQuY2hhcnMsIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBxdW90ZS5hbmltYXRpb24gPSBnc2FwLnRvKHF1b3RlLnNwbGl0LmNoYXJzLCB7CiAgICAgICAgICAgIHNjcm9sbFRyaWdnZXI6IHsKICAgICAgICAgICAgICAgIHRyaWdnZXI6IHF1b3RlLAogICAgICAgICAgICAgICAgc3RhcnQ6ICJ0b3AgOTAlIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgeDogIjAiLAogICAgICAgICAgICB5OiAiMCIsCiAgICAgICAgICAgIHJvdGF0ZVg6ICIwIiwKICAgICAgICAgICAgb3BhY2l0eTogMSwKICAgICAgICAgICAgZHVyYXRpb246IDEsCiAgICAgICAgICAgIGVhc2U6IEJhY2suZWFzZU91dCwKICAgICAgICAgICAgc3RhZ2dlcjogLjAyCiAgICAgICAgfSk7CiAgICB9KTsKfQpTY3JvbGxUcmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoInJlZnJlc2giLCB0Z190aXRsZV9hbmltYXRpb24pOw=="}},"time_used":40,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":40,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/aos.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.817Z","timestamp":1785159464817,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/aos.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 4420\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":14690,"size_decoded":4657,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (14690), with no line terminators","md5":"d3718e34eeb0355be8e3179a2e2bccb7","sha1":"850ee2e5c9fba610840137c6c4e92b5abbc428fe","sha256":"a5005b2e414770fd5ccb40bc221a12771966d02b5c1f9c89da48bd8e3811d377","sha512":"03b0189357c6297e92d92b07cb098f92b9f34d91eb822553ec671090b1837b67afd1a59bf337a3cadcd2f308e8ecf1845caa893ab8d0e28391b678a6211641b7","ssdeep":"384:3IJfNa+yGZHbXPgJT7UKEgMt1sH6GCZy54:4JfNa+yGZHbfgJT7URgesaGCZy54","tlshash":"d162e8dc3691f0a617a790f782bf600ff2f04874245d9090d269c4e63eb58ae8673e5e","first_seen":"2023-03-07T01:19:08Z","last_seen":"2026-08-03T20:38:38.748021Z","times_seen":10321,"resource_available":true,"data":"IWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQU9TPXQoKTplLkFPUz10KCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChvKXtpZihuW29dKXJldHVybiBuW29dLmV4cG9ydHM7dmFyIGk9bltvXT17ZXhwb3J0czp7fSxpZDpvLGxvYWRlZDohMX07cmV0dXJuIGVbb10uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsdCksaS5sb2FkZWQ9ITAsaS5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0LmM9bix0LnA9ImRpc3QvIix0KDApfShbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBvIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pfXJldHVybiBlfSxyPW4oMSksYT0obyhyKSxuKDYpKSx1PW8oYSksYz1uKDcpLHM9byhjKSxmPW4oOCksZD1vKGYpLGw9big5KSxwPW8obCksbT1uKDEwKSxiPW8obSksdj1uKDExKSx5PW8odiksZz1uKDE0KSxoPW8oZyksdz1bXSxrPSExLHg9e29mZnNldDoxMjAsZGVsYXk6MCxlYXNpbmc6ImVhc2UiLGR1cmF0aW9uOjQwMCxkaXNhYmxlOiExLG9uY2U6ITEsc3RhcnRFdmVudDoiRE9NQ29udGVudExvYWRlZCIsdGhyb3R0bGVEZWxheTo5OSxkZWJvdW5jZURlbGF5OjUwLGRpc2FibGVNdXRhdGlvbk9ic2VydmVyOiExfSxqPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZihlJiYoaz0hMCksaylyZXR1cm4gdz0oMCx5LmRlZmF1bHQpKHcseCksKDAsYi5kZWZhdWx0KSh3LHgub25jZSksd30sTz1mdW5jdGlvbigpe3c9KDAsaC5kZWZhdWx0KSgpLGooKX0sTT1mdW5jdGlvbigpe3cuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uubm9kZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtYW9zIiksZS5ub2RlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1hb3MtZWFzaW5nIiksZS5ub2RlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1hb3MtZHVyYXRpb24iKSxlLm5vZGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWFvcy1kZWxheSIpfSl9LFM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0hMHx8Im1vYmlsZSI9PT1lJiZwLmRlZmF1bHQubW9iaWxlKCl8fCJwaG9uZSI9PT1lJiZwLmRlZmF1bHQucGhvbmUoKXx8InRhYmxldCI9PT1lJiZwLmRlZmF1bHQudGFibGV0KCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCk9PT0hMH0sXz1mdW5jdGlvbihlKXt4PWkoeCxlKSx3PSgwLGguZGVmYXVsdCkoKTt2YXIgdD1kb2N1bWVudC5hbGwmJiF3aW5kb3cuYXRvYjtyZXR1cm4gUyh4LmRpc2FibGUpfHx0P00oKTooeC5kaXNhYmxlTXV0YXRpb25PYnNlcnZlcnx8ZC5kZWZhdWx0LmlzU3VwcG9ydGVkKCl8fChjb25zb2xlLmluZm8oJ1xuICAgICAgYW9zOiBNdXRhdGlvbk9ic2VydmVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBicm93c2VyLFxuICAgICAgY29kZSBtdXRhdGlvbnMgb2JzZXJ2aW5nIGhhcyBiZWVuIGRpc2FibGVkLlxuICAgICAgWW91IG1heSBoYXZlIHRvIGNhbGwgInJlZnJlc2hIYXJkKCkiIGJ5IHlvdXJzZWxmLlxuICAgICcpLHguZGlzYWJsZU11dGF0aW9uT2JzZXJ2ZXI9ITApLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKS5zZXRBdHRyaWJ1dGUoImRhdGEtYW9zLWVhc2luZyIseC5lYXNpbmcpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKS5zZXRBdHRyaWJ1dGUoImRhdGEtYW9zLWR1cmF0aW9uIix4LmR1cmF0aW9uKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5Iikuc2V0QXR0cmlidXRlKCJkYXRhLWFvcy1kZWxheSIseC5kZWxheSksIkRPTUNvbnRlbnRMb2FkZWQiPT09eC5zdGFydEV2ZW50JiZbImNvbXBsZXRlIiwiaW50ZXJhY3RpdmUiXS5pbmRleE9mKGRvY3VtZW50LnJlYWR5U3RhdGUpPi0xP2ooITApOiJsb2FkIj09PXguc3RhcnRFdmVudD93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcih4LnN0YXJ0RXZlbnQsZnVuY3Rpb24oKXtqKCEwKX0pOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoeC5zdGFydEV2ZW50LGZ1bmN0aW9uKCl7aighMCl9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoMCxzLmRlZmF1bHQpKGoseC5kZWJvdW5jZURlbGF5LCEwKSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIiwoMCxzLmRlZmF1bHQpKGoseC5kZWJvdW5jZURlbGF5LCEwKSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsKDAsdS5kZWZhdWx0KShmdW5jdGlvbigpeygwLGIuZGVmYXVsdCkodyx4Lm9uY2UpfSx4LnRocm90dGxlRGVsYXkpKSx4LmRpc2FibGVNdXRhdGlvbk9ic2VydmVyfHxkLmRlZmF1bHQucmVhZHkoIltkYXRhLWFvc10iLE8pLHcpfTtlLmV4cG9ydHM9e2luaXQ6XyxyZWZyZXNoOmoscmVmcmVzaEhhcmQ6T319LGZ1bmN0aW9uKGUsdCl7fSwsLCwsZnVuY3Rpb24oZSx0KXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe2Z1bmN0aW9uIG8odCl7dmFyIG49YixvPXY7cmV0dXJuIGI9dj12b2lkIDAsaz10LGc9ZS5hcHBseShvLG4pfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGs9ZSxoPXNldFRpbWVvdXQoZix0KSxNP28oZSk6Z31mdW5jdGlvbiBhKGUpe3ZhciBuPWUtdyxvPWUtayxpPXQtbjtyZXR1cm4gUz9qKGkseS1vKTppfWZ1bmN0aW9uIGMoZSl7dmFyIG49ZS13LG89ZS1rO3JldHVybiB2b2lkIDA9PT13fHxuPj10fHxuPDB8fFMmJm8+PXl9ZnVuY3Rpb24gZigpe3ZhciBlPU8oKTtyZXR1cm4gYyhlKT9kKGUpOnZvaWQoaD1zZXRUaW1lb3V0KGYsYShlKSkpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGg9dm9pZCAwLF8mJmI/byhlKTooYj12PXZvaWQgMCxnKX1mdW5jdGlvbiBsKCl7dm9pZCAwIT09aCYmY2xlYXJUaW1lb3V0KGgpLGs9MCxiPXc9dj1oPXZvaWQgMH1mdW5jdGlvbiBwKCl7cmV0dXJuIHZvaWQgMD09PWg/ZzpkKE8oKSl9ZnVuY3Rpb24gbSgpe3ZhciBlPU8oKSxuPWMoZSk7aWYoYj1hcmd1bWVudHMsdj10aGlzLHc9ZSxuKXtpZih2b2lkIDA9PT1oKXJldHVybiByKHcpO2lmKFMpcmV0dXJuIGg9c2V0VGltZW91dChmLHQpLG8odyl9cmV0dXJuIHZvaWQgMD09PWgmJihoPXNldFRpbWVvdXQoZix0KSksZ312YXIgYix2LHksZyxoLHcsaz0wLE09ITEsUz0hMSxfPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3Iocyk7cmV0dXJuIHQ9dSh0KXx8MCxpKG4pJiYoTT0hIW4ubGVhZGluZyxTPSJtYXhXYWl0ImluIG4seT1TP3godShuLm1heFdhaXQpfHwwLHQpOnksXz0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6XyksbS5jYW5jZWw9bCxtLmZsdXNoPXAsbX1mdW5jdGlvbiBvKGUsdCxvKXt2YXIgcj0hMCxhPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3Iocyk7cmV0dXJuIGkobykmJihyPSJsZWFkaW5nImluIG8/ISFvLmxlYWRpbmc6cixhPSJ0cmFpbGluZyJpbiBvPyEhby50cmFpbGluZzphKSxuKGUsdCx7bGVhZGluZzpyLG1heFdhaXQ6dCx0cmFpbGluZzphfSl9ZnVuY3Rpb24gaShlKXt2YXIgdD0idW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6YyhlKTtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHx8ImZ1bmN0aW9uIj09dCl9ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWUmJiJvYmplY3QiPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBlPyJ1bmRlZmluZWQiOmMoZSkpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuInN5bWJvbCI9PSgidW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6YyhlKSl8fHIoZSkmJmsuY2FsbChlKT09ZH1mdW5jdGlvbiB1KGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihhKGUpKXJldHVybiBmO2lmKGkoZSkpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlLnZhbHVlT2Y/ZS52YWx1ZU9mKCk6ZTtlPWkodCk/dCsiIjp0fWlmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gMD09PWU/ZTorZTtlPWUucmVwbGFjZShsLCIiKTt2YXIgbj1tLnRlc3QoZSk7cmV0dXJuIG58fGIudGVzdChlKT92KGUuc2xpY2UoMiksbj8yOjgpOnAudGVzdChlKT9mOitlfXZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxzPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIixmPU5hTixkPSJbb2JqZWN0IFN5bWJvbF0iLGw9L15ccyt8XHMrJC9nLHA9L15bLStdMHhbMC05YS1mXSskL2ksbT0vXjBiWzAxXSskL2ksYj0vXjBvWzAtN10rJC9pLHY9cGFyc2VJbnQseT0ib2JqZWN0Ij09KCJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpjKHQpKSYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQsZz0ib2JqZWN0Ij09KCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZj8idW5kZWZpbmVkIjpjKHNlbGYpKSYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaD15fHxnfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHc9T2JqZWN0LnByb3RvdHlwZSxrPXcudG9TdHJpbmcseD1NYXRoLm1heCxqPU1hdGgubWluLE89ZnVuY3Rpb24oKXtyZXR1cm4gaC5EYXRlLm5vdygpfTtlLmV4cG9ydHM9b30pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24oZSx0KXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LG4pe2Z1bmN0aW9uIGkodCl7dmFyIG49YixvPXY7cmV0dXJuIGI9dj12b2lkIDAsTz10LGc9ZS5hcHBseShvLG4pfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIE89ZSxoPXNldFRpbWVvdXQoZix0KSxNP2koZSk6Z31mdW5jdGlvbiB1KGUpe3ZhciBuPWUtdyxvPWUtTyxpPXQtbjtyZXR1cm4gUz94KGkseS1vKTppfWZ1bmN0aW9uIHMoZSl7dmFyIG49ZS13LG89ZS1PO3JldHVybiB2b2lkIDA9PT13fHxuPj10fHxuPDB8fFMmJm8+PXl9ZnVuY3Rpb24gZigpe3ZhciBlPWooKTtyZXR1cm4gcyhlKT9kKGUpOnZvaWQoaD1zZXRUaW1lb3V0KGYsdShlKSkpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGg9dm9pZCAwLF8mJmI/aShlKTooYj12PXZvaWQgMCxnKX1mdW5jdGlvbiBsKCl7dm9pZCAwIT09aCYmY2xlYXJUaW1lb3V0KGgpLE89MCxiPXc9dj1oPXZvaWQgMH1mdW5jdGlvbiBwKCl7cmV0dXJuIHZvaWQgMD09PWg/ZzpkKGooKSl9ZnVuY3Rpb24gbSgpe3ZhciBlPWooKSxuPXMoZSk7aWYoYj1hcmd1bWVudHMsdj10aGlzLHc9ZSxuKXtpZih2b2lkIDA9PT1oKXJldHVybiByKHcpO2lmKFMpcmV0dXJuIGg9c2V0VGltZW91dChmLHQpLGkodyl9cmV0dXJuIHZvaWQgMD09PWgmJihoPXNldFRpbWVvdXQoZix0KSksZ312YXIgYix2LHksZyxoLHcsTz0wLE09ITEsUz0hMSxfPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoYyk7cmV0dXJuIHQ9YSh0KXx8MCxvKG4pJiYoTT0hIW4ubGVhZGluZyxTPSJtYXhXYWl0ImluIG4seT1TP2soYShuLm1heFdhaXQpfHwwLHQpOnksXz0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6XyksbS5jYW5jZWw9bCxtLmZsdXNoPXAsbX1mdW5jdGlvbiBvKGUpe3ZhciB0PSJ1bmRlZmluZWQiPT10eXBlb2YgZT8idW5kZWZpbmVkIjp1KGUpO3JldHVybiEhZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX1mdW5jdGlvbiBpKGUpe3JldHVybiEhZSYmIm9iamVjdCI9PSgidW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6dShlKSl9ZnVuY3Rpb24gcihlKXtyZXR1cm4ic3ltYm9sIj09KCJ1bmRlZmluZWQiPT10eXBlb2YgZT8idW5kZWZpbmVkIjp1KGUpKXx8aShlKSYmdy5jYWxsKGUpPT1mfWZ1bmN0aW9uIGEoZSl7aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiBlO2lmKHIoZSkpcmV0dXJuIHM7aWYobyhlKSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUudmFsdWVPZj9lLnZhbHVlT2YoKTplO2U9byh0KT90KyIiOnR9aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiAwPT09ZT9lOitlO2U9ZS5yZXBsYWNlKGQsIiIpO3ZhciBuPXAudGVzdChlKTtyZXR1cm4gbnx8bS50ZXN0KGUpP2IoZS5zbGljZSgyKSxuPzI6OCk6bC50ZXN0KGUpP3M6K2V9dmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LGM9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TmFOLGY9IltvYmplY3QgU3ltYm9sXSIsZD0vXlxzK3xccyskL2csbD0vXlstK10weFswLTlhLWZdKyQvaSxwPS9eMGJbMDFdKyQvaSxtPS9eMG9bMC03XSskL2ksYj1wYXJzZUludCx2PSJvYmplY3QiPT0oInVuZGVmaW5lZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOnUodCkpJiZ0JiZ0Lk9iamVjdD09PU9iamVjdCYmdCx5PSJvYmplY3QiPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBzZWxmPyJ1bmRlZmluZWQiOnUoc2VsZikpJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixnPXZ8fHl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksaD1PYmplY3QucHJvdG90eXBlLHc9aC50b1N0cmluZyxrPU1hdGgubWF4LHg9TWF0aC5taW4saj1mdW5jdGlvbigpe3JldHVybiBnLkRhdGUubm93KCl9O2UuZXhwb3J0cz1ufSkuY2FsbCh0LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PXZvaWQgMCxvPXZvaWQgMCxpPXZvaWQgMDtmb3IodD0wO3Q8ZS5sZW5ndGg7dCs9MSl7aWYobz1lW3RdLG8uZGF0YXNldCYmby5kYXRhc2V0LmFvcylyZXR1cm4hMDtpZihpPW8uY2hpbGRyZW4mJm4oby5jaGlsZHJlbikpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbygpe3JldHVybiB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcnx8d2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXJ8fHdpbmRvdy5Nb3pNdXRhdGlvbk9ic2VydmVyfWZ1bmN0aW9uIGkoKXtyZXR1cm4hIW8oKX1mdW5jdGlvbiByKGUsdCl7dmFyIG49d2luZG93LmRvY3VtZW50LGk9bygpLHI9bmV3IGkoYSk7dT10LHIub2JzZXJ2ZShuLmRvY3VtZW50RWxlbWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITAscmVtb3ZlZE5vZGVzOiEwfSl9ZnVuY3Rpb24gYShlKXtlJiZlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZS5hZGRlZE5vZGVzKSxvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUucmVtb3ZlZE5vZGVzKSxpPXQuY29uY2F0KG8pO2lmKG4oaSkpcmV0dXJuIHUoKX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigpe307dC5kZWZhdWx0PXtpc1N1cHBvcnRlZDppLHJlYWR5OnJ9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbygpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50fHxuYXZpZ2F0b3IudmVuZG9yfHx3aW5kb3cub3BlcmF8fCIifU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIG89dFtuXTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbyYmKG8ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8ua2V5LG8pfX1yZXR1cm4gZnVuY3Rpb24odCxuLG8pe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLG8mJmUodCxvKSx0fX0oKSxyPS8oYW5kcm9pZHxiYlxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWluby9pLGE9LzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1wtKG58dSl8YzU1XC98Y2FwaXxjY3dhfGNkbVwtfGNlbGx8Y2h0bXxjbGRjfGNtZFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXC01fGdcLW1vfGdvKFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFwtKG18cHx0KXxoZWlcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXC1jfGh0KGMoXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XC18XC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XC8pfGtsb258a3B0IHxrd2NcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XC8oa3xsfHUpfDUwfDU0fFwtW2Etd10pfGxpYnd8bHlueHxtMVwtd3xtM2dhfG01MFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XC1nfHFhXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFwtWzItN118aVwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXC18b298cFwtKXxzZGtcL3xzZShjKFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFwtfHNoYXJ8c2llKFwtfG0pfHNrXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcLXx2XC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcLXx0ZGdcLXx0ZWwoaXxtKXx0aW1cLXx0XC1tb3x0byhwbHxzaCl8dHMoNzB8bVwtfG0zfG01KXx0eFwtOXx1cChcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcLXx5b3VyfHpldG98enRlXC0vaSx1PS8oYW5kcm9pZHxiYlxkK3xtZWVnbykuK21vYmlsZXxhdmFudGdvfGJhZGFcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8aXJpc3xraW5kbGV8bGdlIHxtYWVtb3xtaWRwfG1tcHxtb2JpbGUuK2ZpcmVmb3h8bmV0ZnJvbnR8b3BlcmEgbShvYnxpbilpfHBhbG0oIG9zKT98cGhvbmV8cChpeGl8cmUpXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWlub3xhbmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pLGM9LzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcLSl8YWkoa298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcLW18ciB8cyApfGF2YW58YmUoY2t8bGx8bnEpfGJpKGxifHJkKXxibChhY3xheil8YnIoZXx2KXd8YnVtYnxid1wtKG58dSl8YzU1XC98Y2FwaXxjY3dhfGNkbVwtfGNlbGx8Y2h0bXxjbGRjfGNtZFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFwtZCl8ZWwoNDl8YWkpfGVtKGwyfHVsKXxlcihpY3xrMCl8ZXNsOHxleihbNC03XTB8b3N8d2F8emUpfGZldGN8Zmx5KFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXC01fGdcLW1vfGdvKFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFwtKG18cHx0KXxoZWlcLXxoaShwdHx0YSl8aHAoIGl8aXApfGhzXC1jfGh0KGMoXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXC0oMjB8Z298bWEpfGkyMzB8aWFjKCB8XC18XC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XC8pfGtsb258a3B0IHxrd2NcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XC8oa3xsfHUpfDUwfDU0fFwtW2Etd10pfGxpYnd8bHlueHxtMVwtd3xtM2dhfG01MFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVwtY3J8bWUocmN8cmkpfG1pKG84fG9hfHRzKXxtbWVmfG1vKDAxfDAyfGJpfGRlfGRvfHQoXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcLShbMS04XXxjKSl8cGhpbHxwaXJlfHBsKGF5fHVjKXxwblwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XC1nfHFhXC1hfHFjKDA3fDEyfDIxfDMyfDYwfFwtWzItN118aVwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVwvfHNhKGdlfG1hfG1tfG1zfG55fHZhKXxzYygwMXxoXC18b298cFwtKXxzZGtcL3xzZShjKFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFwtfHNoYXJ8c2llKFwtfG0pfHNrXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcLXx2XC18diApfHN5KDAxfG1iKXx0MigxOHw1MCl8dDYoMDB8MTB8MTgpfHRhKGd0fGxrKXx0Y2xcLXx0ZGdcLXx0ZWwoaXxtKXx0aW1cLXx0XC1tb3x0byhwbHxzaCl8dHMoNzB8bVwtfG0zfG01KXx0eFwtOXx1cChcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXC18ICl8d2ViY3x3aGl0fHdpKGcgfG5jfG53KXx3bWxifHdvbnV8eDcwMHx5YXNcLXx5b3VyfHpldG98enRlXC0vaSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe24odGhpcyxlKX1yZXR1cm4gaShlLFt7a2V5OiJwaG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1vKCk7cmV0dXJuISghci50ZXN0KGUpJiYhYS50ZXN0KGUuc3Vic3RyKDAsNCkpKX19LHtrZXk6Im1vYmlsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1vKCk7cmV0dXJuISghdS50ZXN0KGUpJiYhYy50ZXN0KGUuc3Vic3RyKDAsNCkpKX19LHtrZXk6InRhYmxldCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2JpbGUoKSYmIXRoaXMucGhvbmUoKX19XSksZX0oKTt0LmRlZmF1bHQ9bmV3IHN9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbihlLHQsbil7dmFyIG89ZS5ub2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1hb3Mtb25jZSIpO3Q+ZS5wb3NpdGlvbj9lLm5vZGUuY2xhc3NMaXN0LmFkZCgiYW9zLWFuaW1hdGUiKToidW5kZWZpbmVkIiE9dHlwZW9mIG8mJigiZmFsc2UiPT09b3x8IW4mJiJ0cnVlIiE9PW8pJiZlLm5vZGUuY2xhc3NMaXN0LnJlbW92ZSgiYW9zLWFuaW1hdGUiKX0sbz1mdW5jdGlvbihlLHQpe3ZhciBvPXdpbmRvdy5wYWdlWU9mZnNldCxpPXdpbmRvdy5pbm5lckhlaWdodDtlLmZvckVhY2goZnVuY3Rpb24oZSxyKXtuKGUsaStvLHQpfSl9O3QuZGVmYXVsdD1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDEyKSxyPW8oaSksYT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLm5vZGUuY2xhc3NMaXN0LmFkZCgiYW9zLWluaXQiKSxlLnBvc2l0aW9uPSgwLHIuZGVmYXVsdCkoZS5ub2RlLHQub2Zmc2V0KX0pLGV9O3QuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDEzKSxyPW8oaSksYT1mdW5jdGlvbihlLHQpe3ZhciBuPTAsbz0wLGk9d2luZG93LmlubmVySGVpZ2h0LGE9e29mZnNldDplLmdldEF0dHJpYnV0ZSgiZGF0YS1hb3Mtb2Zmc2V0IiksYW5jaG9yOmUuZ2V0QXR0cmlidXRlKCJkYXRhLWFvcy1hbmNob3IiKSxhbmNob3JQbGFjZW1lbnQ6ZS5nZXRBdHRyaWJ1dGUoImRhdGEtYW9zLWFuY2hvci1wbGFjZW1lbnQiKX07c3dpdGNoKGEub2Zmc2V0JiYhaXNOYU4oYS5vZmZzZXQpJiYobz1wYXJzZUludChhLm9mZnNldCkpLGEuYW5jaG9yJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGEuYW5jaG9yKSYmKGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChhLmFuY2hvcilbMF0pLG49KDAsci5kZWZhdWx0KShlKS50b3AsYS5hbmNob3JQbGFjZW1lbnQpe2Nhc2UidG9wLWJvdHRvbSI6YnJlYWs7Y2FzZSJjZW50ZXItYm90dG9tIjpuKz1lLm9mZnNldEhlaWdodC8yO2JyZWFrO2Nhc2UiYm90dG9tLWJvdHRvbSI6bis9ZS5vZmZzZXRIZWlnaHQ7YnJlYWs7Y2FzZSJ0b3AtY2VudGVyIjpuKz1pLzI7YnJlYWs7Y2FzZSJib3R0b20tY2VudGVyIjpuKz1pLzIrZS5vZmZzZXRIZWlnaHQ7YnJlYWs7Y2FzZSJjZW50ZXItY2VudGVyIjpuKz1pLzIrZS5vZmZzZXRIZWlnaHQvMjticmVhaztjYXNlInRvcC10b3AiOm4rPWk7YnJlYWs7Y2FzZSJib3R0b20tdG9wIjpuKz1lLm9mZnNldEhlaWdodCtpO2JyZWFrO2Nhc2UiY2VudGVyLXRvcCI6bis9ZS5vZmZzZXRIZWlnaHQvMitpfXJldHVybiBhLmFuY2hvclBsYWNlbWVudHx8YS5vZmZzZXR8fGlzTmFOKHQpfHwobz10KSxuK299O3QuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO2UmJiFpc05hTihlLm9mZnNldExlZnQpJiYhaXNOYU4oZS5vZmZzZXRUb3ApOyl0Kz1lLm9mZnNldExlZnQtKCJCT0RZIiE9ZS50YWdOYW1lP2Uuc2Nyb2xsTGVmdDowKSxuKz1lLm9mZnNldFRvcC0oIkJPRFkiIT1lLnRhZ05hbWU/ZS5zY3JvbGxUb3A6MCksZT1lLm9mZnNldFBhcmVudDtyZXR1cm57dG9wOm4sbGVmdDp0fX07dC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4gZT1lfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1hb3NdIiksQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGUsZnVuY3Rpb24oZSl7cmV0dXJue25vZGU6ZX19KX07dC5kZWZhdWx0PW59XSl9KTs="}},"time_used":36,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":15,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/app.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.024Z","timestamp":1785159465024,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/app.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 2461\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":10607,"size_decoded":2698,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (405)","md5":"3ed688d18cf6e5aa7c1828b565047642","sha1":"a09825d2e7849d6984b88195d3dbf5a19421d9f5","sha256":"1708f99052a957335350f2194bab65d8e620bb965007d990d7c65fa5cc18827f","sha512":"51e62f102f90cfb6721375fed7d4882f4b3d487aaef06cde5d238b5ca924c6f0e15c9bc421ff3d2e17d980a8d69af8b5904b3f593dac17d6775085e053a2db9a","ssdeep":"192:jlUriF8xFYFs8LhO0XymJ8y52LUAtwdLZNF0NHsb972pZFCiYGdQpSWcT+Q:J8xFYFs8o09JiLUAtm6XCi5dQY","tlshash":"b622121ab0f621a1507b716a4e5f804072739023a459ed243f8d42f20f7d4acd2fbfaa","first_seen":"2026-07-27T07:42:30.721596Z","last_seen":"2026-07-27T13:38:47.779792Z","times_seen":3,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKLy8gY2hlY2sgaWYgdG91Y2ggZGV2aWNlCmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7CiAgICB2YXIgcHJlZml4ZXMgPSAiIC13ZWJraXQtIC1tb3otIC1vLSAtbXMtICIuc3BsaXQoIiAiKTsKICAgIHZhciBtcSA9IGZ1bmN0aW9uKHF1ZXJ5KSB7CiAgICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzOwogICAgfTsKICAgIGlmICgib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICB2YXIgcXVlcnkgPSBbIigiLCBwcmVmaXhlcy5qb2luKCJ0b3VjaC1lbmFibGVkKSwoIiksICJoZWFydHoiLCAiKSJdLmpvaW4oIiIpOwogICAgcmV0dXJuIG1xKHF1ZXJ5KTsKfQppZiAoaXNUb3VjaERldmljZSgpKSB7CiAgICAkKCJib2R5IikuYWRkQ2xhc3MoInRvdWNoLWRldmljZSIpOwp9CgovLyBoZWFkZXIKKGZ1bmN0aW9uKCkgewogICAgY29uc3QgaGVhZGVyID0gJCgiLmhlYWRlciIpLAogICAgICAgIGJ1cmdlciA9IGhlYWRlci5maW5kKCIuaGVhZGVyX19idXJnZXIiKSwKICAgICAgICBjbG9zZSA9IGhlYWRlci5maW5kKCIuaGVhZGVyX19jbG9zZSIpLAogICAgICAgIHdyYXAgPSBoZWFkZXIuZmluZCgiLmhlYWRlcl9fd3JhcCIpLAogICAgICAgIG92ZXJsYXkgPSBoZWFkZXIuZmluZCgiLmhlYWRlcl9fb3ZlcmxheSIpLAogICAgICAgIGJveCA9IGhlYWRlci5maW5kKCIuaGVhZGVyX19ib3giKSwKICAgICAgICBvcGVuU2VhcmNoID0gaGVhZGVyLmZpbmQoIi5oZWFkZXJfX3NlYXJjaC1vcGVuIiksCiAgICAgICAgb3BlbkNsb3NlID0gaGVhZGVyLmZpbmQoIi5oZWFkZXJfX3NlYXJjaC1jbG9zZSIpLAogICAgICAgIG5vdGlmaWNhdGlvbiA9IGhlYWRlci5maW5kKCIubm90aWZpY2F0aW9uIiksCiAgICAgICAgYnV0dG9uID0gbm90aWZpY2F0aW9uLmZpbmQoIi5ub3RpZmljYXRpb25fX2J1dHRvbiIpLAogICAgICAgIGJvZHkgPSBub3RpZmljYXRpb24uZmluZCgiLm5vdGlmaWNhdGlvbl9fYm9keSIpOwogICAgYnV0dG9uLm9uKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIG5vdGlmaWNhdGlvbi50b2dnbGVDbGFzcygiYWN0aXZlIik7CiAgICB9KTsKICAgIGJvZHkub24oImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICB9KTsKICAgICQoImh0bWwsIGJvZHkiKS5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBub3RpZmljYXRpb24ucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOwogICAgfSk7CiAgICBidXJnZXIub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgd3JhcC5hZGRDbGFzcygidmlzaWJsZSIpOwogICAgICAgIG92ZXJsYXkuYWRkQ2xhc3MoInZpc2libGUiKTsKICAgICAgICBzY3JvbGxMb2NrLmRpc2FibGVQYWdlU2Nyb2xsKCk7CiAgICB9KTsKICAgIGNsb3NlLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIHdyYXAucmVtb3ZlQ2xhc3MoInZpc2libGUiKTsKICAgICAgICBvdmVybGF5LnJlbW92ZUNsYXNzKCJ2aXNpYmxlIik7CiAgICAgICAgc2Nyb2xsTG9jay5lbmFibGVQYWdlU2Nyb2xsKCk7CiAgICB9KTsKICAgIG92ZXJsYXkub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgd3JhcC5yZW1vdmVDbGFzcygidmlzaWJsZSIpOwogICAgICAgIG92ZXJsYXkucmVtb3ZlQ2xhc3MoInZpc2libGUiKTsKICAgICAgICBzY3JvbGxMb2NrLmVuYWJsZVBhZ2VTY3JvbGwoKTsKICAgIH0pOwogICAgb3BlblNlYXJjaC5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBib3guYWRkQ2xhc3MoInZpc2libGUiKTsKICAgIH0pOwogICAgb3BlbkNsb3NlLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIGJveC5yZW1vdmVDbGFzcygidmlzaWJsZSIpOwogICAgfSk7Cn0pKCk7CgovLyBmaWVsZCB2aWV3IHBhc3N3b3JkCihmdW5jdGlvbigpIHsKICAgIGNvbnN0IGZpZWxkcyA9ICQoIi5maWVsZCIpOwogICAgZmllbGRzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgbGV0IGZpZWxkID0gJCh0aGlzKSwKICAgICAgICAgICAgaW5wdXQgPSBmaWVsZC5maW5kKCIuZmllbGRfX2lucHV0IiksCiAgICAgICAgICAgIGJ1dHRvbiA9IGZpZWxkLmZpbmQoIi5maWVsZF9fdmlldyIpOwogICAgICAgIGJ1dHRvbi5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYnV0dG9uLnRvZ2dsZUNsYXNzKCJhY3RpdmUiKTsKICAgICAgICAgICAgaWYgKGJ1dHRvbi5oYXNDbGFzcygiYWN0aXZlIikpIHsKICAgICAgICAgICAgICAgIGlucHV0LmF0dHIoInR5cGUiLCAidGV4dCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXQuYXR0cigidHlwZSIsICJwYXNzd29yZCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnNvbGUubG9nKHR5cGVJbnB1dCk7CiAgICAgICAgfSk7CiAgICB9KTsKfSkoKTsKCi8vIHNsaWRlcnMKKGZ1bmN0aW9uKCkgewogICAgLy8gc3dpcGVyIGNvbnRhY3RzIHRocmVlCiAgICBjb25zdCBzd2lwZXJDb250YWN0c1RocmVlID0gbmV3IFN3aXBlcigiLnN3aXBlci1jb250YWN0cy10aHJlZSIsIHsKICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLAogICAgICAgIHNwZWVkOiA1MDAsCiAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSwKICAgICAgICBuYXZpZ2F0aW9uOiB7CiAgICAgICAgICAgIG5leHRFbDogIi5zd2lwZXItYnV0dG9uLW5leHQiLAogICAgICAgICAgICBwcmV2RWw6ICIuc3dpcGVyLWJ1dHRvbi1wcmV2IgogICAgICAgIH0sCiAgICAgICAgYnJlYWtwb2ludHM6IHsKICAgICAgICAgICAgMzIwOiB7CiAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc2ODogewogICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gc3dpcGVyIGNvbnRhY3RzIGZvdXIKICAgIGNvbnN0IHN3aXBlckNvbnRhY3RzRm91ciA9IG5ldyBTd2lwZXIoIi5zd2lwZXItY29udGFjdHMtZm91ciIsIHsKICAgICAgICBzbGlkZXNQZXJWaWV3OiA0LAogICAgICAgIHNwZWVkOiA1MDAsCiAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSwKICAgICAgICBuYXZpZ2F0aW9uOiB7CiAgICAgICAgICAgIG5leHRFbDogIi5zd2lwZXItYnV0dG9uLW5leHQiLAogICAgICAgICAgICBwcmV2RWw6ICIuc3dpcGVyLWJ1dHRvbi1wcmV2IgogICAgICAgIH0sCiAgICAgICAgYnJlYWtwb2ludHM6IHsKICAgICAgICAgICAgMzIwOiB7CiAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDc2ODogewogICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogNAogICAgICAgICAgICB9LAogICAgICAgICAgICAxMDI0OiB7CiAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA0CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIDEyNjA6IHsKICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgMTQyMDogewogICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogNAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cn0pKCk7CgovLyBkYXRlUmFuZ2VQaWNrZXIKKGZ1bmN0aW9uKCkgewogICAgY29uc3QgZGF0ZVJhbmdlID0gJCgiLmpzLWRhdGUtcmFuZ2UiKTsKICAgIGlmIChkYXRlUmFuZ2UubGVuZ3RoKSB7CiAgICAgICAgZGF0ZVJhbmdlLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IF90aGlzID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIHNpbmdsZU1vbnRoID0gX3RoaXMuZGF0YSgic2luZ2xlLW1vbnRoIiksCiAgICAgICAgICAgICAgICBzaW5nbGVEYXRlID0gX3RoaXMuZGF0YSgic2luZ2xlLWRhdGUiKSwKICAgICAgICAgICAgICAgIGZvcm1hdCA9IF90aGlzLmRhdGEoImZvcm1hdCIpLAogICAgICAgICAgICAgICAgY29udGFpbmVyID0gX3RoaXMuZGF0YSgiY29udGFpbmVyIik7CiAgICAgICAgICAgIF90aGlzLmRhdGVSYW5nZVBpY2tlcih7CiAgICAgICAgICAgICAgICBsYW5ndWFnZTogImVuIiwKICAgICAgICAgICAgICAgIGlubGluZTogZmFsc2UsCiAgICAgICAgICAgICAgICBhdXRvQ2xvc2U6IHRydWUsCiAgICAgICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCwKICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogIiAtICIsCiAgICAgICAgICAgICAgICBzaG93U2hvcnRjdXRzOiBmYWxzZSwKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLAogICAgICAgICAgICAgICAgc2luZ2xlRGF0ZTogc2luZ2xlRGF0ZSwKICAgICAgICAgICAgICAgIHNpbmdsZU1vbnRoOiBzaW5nbGVNb250aCwKICAgICAgICAgICAgICAgIHNob3dUb3BiYXI6IGZhbHNlLAogICAgICAgICAgICAgICAgc3RpY2t5TW9udGhzOiB0cnVlLAogICAgICAgICAgICAgICAgaG92ZXJpbmdUb29sdGlwOiBmYWxzZSwKICAgICAgICAgICAgICAgIGFsd2F5c09wZW46IGZhbHNlLAogICAgICAgICAgICAgICAgY3VzdG9tQXJyb3dQcmV2U3ltYm9sOiAnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC4yMDcgNy43OTNhMSAxIDAgMCAxIDAgMS40MTRMMTEuNDE0IDEybDIuNzkzIDIuNzkzYTEgMSAwIDAgMS0xLjQxNCAxLjQxNGwtMy41LTMuNWExIDEgMCAwIDEgMC0xLjQxNGwzLjUtMy41YTEgMSAwIDAgMSAxLjQxNCAweiIgZmlsbD0iIzc3N2U5MSIvPjwvc3ZnPicsCiAgICAgICAgICAgICAgICBjdXN0b21BcnJvd05leHRTeW1ib2w6ICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNzkzIDcuNzkzYTEgMSAwIDAgMCAwIDEuNDE0TDEyLjU4NiAxMmwtMi43OTMgMi43OTNhMSAxIDAgMCAwIDEuNDE0IDEuNDE0bDMuNS0zLjVhMSAxIDAgMCAwIDAtMS40MTRsLTMuNS0zLjVhMSAxIDAgMCAwLTEuNDE0IDB6IiBmaWxsPSIjNzc3ZTkxIi8+PC9zdmc+JywKICAgICAgICAgICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbihzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cigicmVhZG9ubHkiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbChzKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbChzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY3VzdG9tT3BlbkFuaW1hdGlvbjogZnVuY3Rpb24oY2IpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZhZGVJbigyMDAsIGNiKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjdXN0b21DbG9zZUFuaW1hdGlvbjogZnVuY3Rpb24oY2IpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZhZGVPdXQoMjAwLCBjYik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAoIV90aGlzLmF0dHIoInBsYWNlaG9sZGVyIikpIHsKICAgICAgICAgICAgICAgIF90aGlzLmRhdGEoImRhdGVSYW5nZVBpY2tlciIpLnNldFN0YXJ0KG5ldyBEYXRlKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9Cn0pKCk7CgovLyB0b29sdGlwCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgY29uc3QgdG9vbHRpcCA9ICQoIi50b29sdGlwIik7CiAgICBpZiAoIWlzVG91Y2hEZXZpY2UoKSkgewogICAgICAgICQoIi50b29sdGlwIikudG9vbHRpcHN0ZXIoewogICAgICAgICAgICBkZWxheTogMAogICAgICAgIH0pOwogICAgfQogICAgaWYgKGlzVG91Y2hEZXZpY2UoKSkgewogICAgICAgICQoIi50b29sdGlwIikudG9vbHRpcHN0ZXIoewogICAgICAgICAgICBkZWxheTogMCwKICAgICAgICAgICAgdHJpZ2dlcjogImNsaWNrIgogICAgICAgIH0pOwogICAgfQp9KTsKCi8qIGRyb3AKKGZ1bmN0aW9uICgpIHsKICBjb25zdCBkcm9wcyA9ICQoIi5qcy1kcm9wIik7CiAgZHJvcHMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICBjb25zdCBkcm9wID0gJCh0aGlzKSwKICAgICAgaGVhZCA9IGRyb3AuZmluZCgiLmpzLWRyb3AtaGVhZCIpLAogICAgICB0aXRsZSA9IGRyb3AuZmluZCgiLmpzLWRyb3AtdGl0bGUiKSwKICAgICAgYm9keSA9IGRyb3AuZmluZCgiLmpzLWRyb3AtYm9keSIpLAogICAgICBvcHRpb25zID0gZHJvcC5maW5kKCIuanMtZHJvcC1vcHRpb24iKSwKICAgICAgaW5wdXQgPSBkcm9wLmZpbmQoIi5qcy1kcm9wLWlucHV0Iik7CiAgICBsZXQgdGV4dE9wdGlvblNlbGVjdGVkID0gYm9keS5maW5kKCIuanMtZHJvcC1vcHRpb24uc2VsZWN0ZWQgLmpzLWRyb3AtdGV4dCIpLnRleHQoKSwKICAgICAgaW1hZ2VPcHRpb25TZWxlY3RlZCA9IGJvZHkuZmluZCgiLmpzLWRyb3Atb3B0aW9uLnNlbGVjdGVkIGltZyIpLmF0dHIoInNyYyIpLAogICAgICBjb2xvck9wdGlvblNlbGVjdGVkID0gYm9keS5maW5kKCIuanMtZHJvcC1vcHRpb24uc2VsZWN0ZWQgLmNvbG9yIikuYXR0cigic3R5bGUiKTsKICAgIGlmICh0aXRsZS50ZXh0KCkgPT09ICIiKSB7CiAgICAgIGRyb3AuYWRkQ2xhc3MoInNlbGVjdGVkIik7CiAgICAgIHRpdGxlLnRleHQodGV4dE9wdGlvblNlbGVjdGVkKTsKICAgICAgaGVhZC5maW5kKCJpbWciKS5hdHRyKCJzcmMiLCBpbWFnZU9wdGlvblNlbGVjdGVkKTsKICAgICAgaGVhZC5maW5kKCIuanMtZHJvcC1jb2xvciIpLmF0dHIoInN0eWxlIiwgY29sb3JPcHRpb25TZWxlY3RlZCk7CiAgICAgIGlucHV0LnZhbCh0ZXh0T3B0aW9uU2VsZWN0ZWQpOwogICAgfSBlbHNlIHsKICAgICAgb3B0aW9ucy5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTsKICAgIH0KICAgIGhlYWQub24oImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgaWYgKCFkcm9wLmhhc0NsYXNzKCJvcGVuIikpIHsKICAgICAgICBkcm9wcy5yZW1vdmVDbGFzcygib3BlbiIpOwogICAgICAgIGRyb3AuYWRkQ2xhc3MoIm9wZW4iKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkcm9wcy5yZW1vdmVDbGFzcygib3BlbiIpOwogICAgICB9CiAgICB9KTsKICAgIGJvZHkub24oImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgIH0pOwogICAgJChkb2N1bWVudCkub24oImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgICBkcm9wcy5yZW1vdmVDbGFzcygib3BlbiIpOwogICAgfSk7CiAgICBvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICBjb25zdCBvcHRpb24gPSAkKHRoaXMpOwogICAgICBvcHRpb24ub24oImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgbGV0IG9wdGlvblRleHQgPSBvcHRpb24uZmluZCgiLmpzLWRyb3AtdGV4dCIpLnRleHQoKSwKICAgICAgICAgIG9wdGlvbkltYWdlID0gb3B0aW9uLmZpbmQoImltZyIpLmF0dHIoInNyYyIpLAogICAgICAgICAgb3B0aW9uQ29sb3IgPSBvcHRpb24uZmluZCgiLmpzLWRyb3AtY29sb3IiKS5hdHRyKCJzdHlsZSIpOwogICAgICAgIGlmICghb3B0aW9uLmhhc0NsYXNzKCJzZWxlY3RlZCIpKSB7CiAgICAgICAgICBvcHRpb25zLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgb3B0aW9uLmFkZENsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBvcHRpb25zLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgIH0KICAgICAgICBpZiAob3B0aW9uLmhhc0NsYXNzKCJzZWxlY3RlZCIpKSB7CiAgICAgICAgICBkcm9wLmFkZENsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgIH0KICAgICAgICB0aXRsZS50ZXh0KG9wdGlvblRleHQpOwogICAgICAgIGhlYWQuZmluZCgiaW1nIikuYXR0cigic3JjIiwgb3B0aW9uSW1hZ2UpOwogICAgICAgIGhlYWQuZmluZCgiLmpzLWRyb3AtY29sb3IiKS5hdHRyKCJzdHlsZSIsIG9wdGlvbkNvbG9yKTsKICAgICAgICBpbnB1dC52YWwob3B0aW9uVGV4dCk7CiAgICAgICAgZHJvcHMucmVtb3ZlQ2xhc3MoIm9wZW4iKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfSkoKTsKKi8KLy8gdHJhbnNhY3Rpb25zCihmdW5jdGlvbigpIHsKICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9ICQoIi50cmFuc2FjdGlvbnMiKSwKICAgICAgICBmaWx0ZXIgPSB0cmFuc2FjdGlvbnMuZmluZCgiLnRyYW5zYWN0aW9uc19fZmlsdGVyIiksCiAgICAgICAgZmlsdGVycyA9IHRyYW5zYWN0aW9ucy5maW5kKCIudHJhbnNhY3Rpb25zX19maWx0ZXJzIiksCiAgICAgICAgdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbnMuZmluZCgiLnRyYW5zYWN0aW9uIiksCiAgICAgICAgdmlldyA9IHRyYW5zYWN0aW9ucy5maW5kKCIudHJhbnNhY3Rpb25fX3ZpZXciKTsKICAgIGZpbHRlci5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBmaWx0ZXIudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpOwogICAgICAgIGZpbHRlcnMuc2xpZGVUb2dnbGUoKTsKICAgIH0pOwogICAgdmlldy5vbigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICAkKHRoaXMpLnBhcmVudHMoIi50cmFuc2FjdGlvbiIpLnRvZ2dsZUNsYXNzKCJhY3RpdmUiKTsKICAgICAgICAkKHRoaXMpLnBhcmVudHMoIi50cmFuc2FjdGlvbiIpLmZpbmQoIi50cmFuc2FjdGlvbl9fYm9keSIpLnNsaWRlVG9nZ2xlKCk7CiAgICB9KTsKfSkoKTsKCi8vIG1hZ25pZmljUG9wdXAKKGZ1bmN0aW9uKCkgewogICAgY29uc3QgbGluayA9ICQoIi5qcy1wb3B1cC1vcGVuIiksCiAgICAgICAgcG9wdXBDbG9zZSA9ICQoIi5qcy1wb3B1cC1jbG9zZSIpOwogICAgaWYgKGxpbmsubGVuZ3RoKSB7CiAgICAgICAgbGluay5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb25zdCBfdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICB0eXBlID0gX3RoaXMuZGF0YSgidHlwZSIpOwogICAgICAgICAgICBfdGhpcy5tYWduaWZpY1BvcHVwKHsKICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgICBmaXhlZENvbnRlbnRQb3M6IHRydWUsCiAgICAgICAgICAgICAgICByZW1vdmFsRGVsYXk6IDIwMCwKICAgICAgICAgICAgICAgIGNsb3NlTWFya3VwOiAnPGJ1dHRvbiB0aXRsZT0iJXRpdGxlJSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWZwLWNsb3NlIj48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNS40NDcgNC4zOTdsLjA4NC4wNzNMMTIgMTAuOTM4bDYuNDY5LTYuNDY4YS43NS43NSAwIDAgMSAxLjEzMy45NzdsLS4wNzMuMDg0LTYuNDY4IDYuNDY5IDYuNDY5IDYuNDdhLjc1Ljc1IDAgMCAxLS45NzcgMS4xMzNsLS4wODQtLjA3M0wxMiAxMy4wNmwtNi40NyA2LjQ2OWEuNzUuNzUgMCAwIDEtMS4xMzMtLjk3N2wuMDczLS4wODQgNi40NjktNi40N0w0LjQ3MSA1LjUzYS43NS43NSAwIDAgMSAuOTc3LTEuMTMzeiI+PC9wYXRoPjwvc3ZnPjwvYnV0dG9uPicsCiAgICAgICAgICAgICAgICBjYWxsYmFja3M6IHsKICAgICAgICAgICAgICAgICAgICBiZWZvcmVPcGVuOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdC5tYWluQ2xhc3MgPSB0aGlzLnN0LmVsLmF0dHIoImRhdGEtZWZmZWN0Iik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0KICAgIHBvcHVwQ2xvc2Uub24oImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgJC5tYWduaWZpY1BvcHVwLmNsb3NlKCk7CiAgICB9KTsKfSkoKTsKCi8vIGhlbHAgbGlrZQokKCIuaGVscF9fbGlrZSIpLm9uKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgJCh0aGlzKS50b2dnbGVDbGFzcygiYWN0aXZlIik7Cn0pOwoKCgovLyB0b2dnbGUgYm9keSB0aGVtZQooZnVuY3Rpb24oKSB7CiAgICB2YXIgc3dpdGNoVGhlbWUgPSAkKCcuanMtc3dpdGNoLXRoZW1lJyksCiAgICAgICAgYm9keSA9ICQoJ2JvZHknKTsKCiAgICBzd2l0Y2hUaGVtZS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFib2R5Lmhhc0NsYXNzKCdkYXJrLW1vZGUnKSkgewogICAgICAgICAgICBib2R5LmFkZENsYXNzKCdkYXJrLW1vZGUnKTsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhcmtNb2RlJywgIm9uIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYm9keS5yZW1vdmVDbGFzcygnZGFyay1tb2RlJyk7CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXJrTW9kZScsICJvZmYiKTsKICAgICAgICB9CiAgICB9KTsKfSkoKTs="}},"time_used":27,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":26,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/services/services_img02.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.053Z","timestamp":1785159465053,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/services/services_img02.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 113606\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":113606,"size_decoded":113874,"mime_type":"image/jpeg","magic":"JPEG image data, progressive, precision 8, 500x500, components 3","md5":"86e416749cecca140155cd5bdc66e6dd","sha1":"6c36e210933cf2bc926dcf00daea53e2e3a78f54","sha256":"5b0ed5218e42d197da50cd4955d78c9956e35f5e4083b22195dffe84b3fde6db","sha512":"33c0fe40d3e7ba7a6d1cbd3be19c8e27ae3dbfc0b4f505fb8f9fed59c86d53164b58a3afa9b17b2f74fd170c969031bfe0b497ed8dec41a4a5016ec25f133441","ssdeep":"1536:4VGLxgqJYzlL919tas5d9FRrEEbbykXB73Z5BiOE+CPO74rBef2g4Ge62PGw/W:4vxZL919NdBrHVBDQPmoghwO","tlshash":"38b31235779f0a6ae2b6c67394c1634e91a312447a4e0908bf73729c78d10b9f7cfa84","first_seen":"2026-02-14T04:59:18.765373Z","last_seen":"2026-07-27T13:38:47.788277Z","times_seen":5,"resource_available":false,"data":"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"}},"time_used":80,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":46,"receive":34,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/SplitText.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.807Z","timestamp":1785159464807,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/SplitText.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 5382\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":18394,"size_decoded":5619,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (7192)","md5":"d203e0f384f1ec120e487ce417d5347c","sha1":"84d4083ec3af4b039fc8eb294a088fe32af8d894","sha256":"55d585e0ef72aa225af809a9bd01ef585560c67af9f88049a117bc545d7c9771","sha512":"21594f64edd0289a83a839a39c8c57fb76d2197955e3bbef8575808ef1137e08e9a9d34513100ae79167e37989ccbd0ff1fec1afb115d7930bd5f943d18003fd","ssdeep":"384:VrEawZ1w8mol3iPqPqMirVuiEUiEJ7i1rxrVkMeilkXcvZaDZ:zwvKhPqPqXV/EJEJ7MzkklgcvZaDZ","tlshash":"4882766052611b34712251175e8aab1ff0b8490bdb53e936b79cf0acab05430dbf7af9","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T06:03:55.512669Z","times_seen":351,"resource_available":true,"data":"LyohCiAqIFNwbGl0VGV4dCAzLjYuMQogKiBodHRwczovL2dyZWVuc29jay5jb20KICoKICogQGxpY2Vuc2UgQ29weXJpZ2h0IDIwMjEsIEdyZWVuU29jay4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogU3ViamVjdCB0byB0aGUgdGVybXMgYXQgaHR0cHM6Ly9ncmVlbnNvY2suY29tL3N0YW5kYXJkLWxpY2Vuc2Ugb3IgZm9yIENsdWIgR3JlZW5Tb2NrIG1lbWJlcnMsIHRoZSBhZ3JlZW1lbnQgaXNzdWVkIHdpdGggdGhhdCBtZW1iZXJzaGlwLgogKiBAYXV0aG9yOiBKYWNrIERveWxlLCBqYWNrQGdyZWVuc29jay5jb20KICovCiEgZnVuY3Rpb24oRCwgdSkgeyAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gdShleHBvcnRzKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsiZXhwb3J0cyJdLCB1KSA6IHUoKEQgPSBEIHx8IHNlbGYpLndpbmRvdyA9IEQud2luZG93IHx8IHt9KSB9KHRoaXMsIGZ1bmN0aW9uKEQpIHsKICAgICJ1c2Ugc3RyaWN0IjsKICAgIHZhciBfID0gLyhbXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0oPzpbXHUyMDBEXHVGRTBGXVtcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXSl7Mix9fFx1RDgzRFx1REM2OSg/Olx1MjAwRCg/Oig/Olx1RDgzRFx1REM2OVx1MjAwRCk/XHVEODNEXHVEQzY3fCg/Olx1RDgzRFx1REM2OVx1MjAwRCk/XHVEODNEXHVEQzY2KXxcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1RDgzRFx1REM2OVx1MjAwRCg/Olx1RDgzRFx1REM2OVx1MjAwRCk/XHVEODNEXHVEQzY2XHUyMDBEXHVEODNEXHVEQzY2fFx1RDgzRFx1REM2OVx1MjAwRCg/Olx1RDgzRFx1REM2OVx1MjAwRCk/XHVEODNEXHVEQzY3XHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pfFx1RDgzQ1x1REZGM1x1RkUwRlx1MjAwRFx1RDgzQ1x1REYwOHwoPzpcdUQ4M0NbXHVERkMzXHVERkM0XHVERkNBXXxcdUQ4M0RbXHVEQzZFXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdfFx1RDgzRVtcdUREMjZcdUREMzctXHVERDM5XHVERDNEXHVERDNFXHVEREQ2LVx1RERERF0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGfFx1RDgzRFx1REM2OSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXSl8KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM2Rlx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM3LVx1REQzOVx1REQzQy1cdUREM0VcdURERDYtXHVERERGXSlcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRnxcdUQ4M0NcdURERkRcdUQ4M0NcdURERjB8XHVEODNDXHVEREY2XHVEODNDXHVEREU2fFx1RDgzQ1x1RERGNFx1RDgzQ1x1RERGMnxcdUQ4M0NcdURERTkoPzpcdUQ4M0NbXHVEREVBXHVEREVDXHVEREVGXHVEREYwXHVEREYyXHVEREY0XHVEREZGXSl8XHVEODNDXHVEREY3KD86XHVEODNDW1x1RERFQVx1RERGNFx1RERGOFx1RERGQVx1RERGQ10pfFx1RDgzQ1x1RERFOCg/Olx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdKXwoPzpcdTI2Rjl8XHVEODNDW1x1REZDQlx1REZDQ118XHVEODNEXHVERDc1KSg/Olx1RkUwRlx1MjAwRFtcdTI2NDBcdTI2NDJdfCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMERbXHUyNjQwXHUyNjQyXSlcdUZFMEZ8KD86XHVEODNEXHVEQzQxXHVGRTBGXHUyMDBEXHVEODNEXHVEREU4fFx1RDgzRFx1REM2OSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0RcdURDNjlcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0RcdURDNjgoPzooPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF0pKVx1RkUwRnxcdUQ4M0NcdURERjIoPzpcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdKXxcdUQ4M0RcdURDNjlcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdTI3NjRcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pKXxcdUQ4M0NcdURERjEoPzpcdUQ4M0NbXHVEREU2LVx1RERFOFx1RERFRVx1RERGMFx1RERGNy1cdURERkJcdURERkVdKXxcdUQ4M0NcdURERUYoPzpcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XSl8XHVEODNDXHVEREVEKD86XHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV0pfFx1RDgzQ1x1RERFQig/Olx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XSl8WyNcKjAtOV1cdUZFMEZcdTIwRTN8XHVEODNDXHVEREU3KD86XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl0pfFx1RDgzQ1x1RERFNig/Olx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl0pfFx1RDgzQ1x1RERGRig/Olx1RDgzQ1tcdURERTZcdURERjJcdURERkNdKXxcdUQ4M0NcdURERjUoPzpcdUQ4M0NbXHVEREU2XHVEREVBLVx1RERFRFx1RERGMC1cdURERjNcdURERjctXHVEREY5XHVEREZDXHVEREZFXSl8XHVEODNDXHVEREZCKD86XHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRVx1RERGM1x1RERGQV0pfFx1RDgzQ1x1RERGMyg/Olx1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXSl8XHVEODNDXHVERkY0XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyKD86XHVEQjQwXHVEQzc3XHVEQjQwXHVEQzZDXHVEQjQwXHVEQzczfFx1REI0MFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURCNDBcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjcpXHVEQjQwXHVEQzdGfFx1RDgzRFx1REM2OCg/Olx1MjAwRCg/Olx1Mjc2NFx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNEXHVEQzY4fCg/Oig/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCk/XHVEODNEXHVEQzY2XHUyMDBEXHVEODNEXHVEQzY2fCg/Oig/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCk/XHVEODNEXHVEQzY3XHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdKXwoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml0pKXxcdUQ4M0NcdURERjgoPzpcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl0pfFx1RDgzQ1x1RERGMCg/Olx1RDgzQ1tcdURERUFcdURERUMtXHVEREVFXHVEREYyXHVEREYzXHVEREY1XHVEREY3XHVEREZDXHVEREZFXHVEREZGXSl8XHVEODNDXHVEREZFKD86XHVEODNDW1x1RERFQVx1RERGOV0pfFx1RDgzQ1x1RERFRSg/Olx1RDgzQ1tcdURERTgtXHVEREVBXHVEREYxLVx1RERGNFx1RERGNi1cdURERjldKXxcdUQ4M0NcdURERjkoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdKXxcdUQ4M0NcdURERUMoPzpcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXSl8XHVEODNDXHVEREZBKD86XHVEODNDW1x1RERFNlx1RERFQ1x1RERGMlx1RERGM1x1RERGOFx1RERGRVx1RERGRl0pfFx1RDgzQ1x1RERFQSg/Olx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXSl8XHVEODNDXHVEREZDKD86XHVEODNDW1x1RERFQlx1RERGOF0pfCg/Olx1MjZGOXxcdUQ4M0NbXHVERkNCXHVERkNDXXxcdUQ4M0RcdURENzUpKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXwoPzpcdUQ4M0NbXHVERkMzXHVERkM0XHVERkNBXXxcdUQ4M0RbXHVEQzZFXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdfFx1RDgzRVtcdUREMjZcdUREMzctXHVERDM5XHVERDNEXHVERDNFXHVEREQ2LVx1RERERF0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXwoPzpbXHUyNjFEXHUyNzBBLVx1MjcwRF18XHVEODNDW1x1REY4NVx1REZDMlx1REZDN118XHVEODNEW1x1REM0Mlx1REM0M1x1REM0Ni1cdURDNTBcdURDNjZcdURDNjdcdURDNzBcdURDNzJcdURDNzQtXHVEQzc2XHVEQzc4XHVEQzdDXHVEQzgzXHVEQzg1XHVEQ0FBXHVERDc0XHVERDdBXHVERDkwXHVERDk1XHVERDk2XHVERTRDXHVERTRGXHVERUMwXHVERUNDXXxcdUQ4M0VbXHVERDE4LVx1REQxQ1x1REQxRVx1REQxRlx1REQzMC1cdUREMzZcdURERDEtXHVEREQ1XSkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1RDgzRFx1REM2OCg/Olx1MjAwRCg/Oig/Oig/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCk/XHVEODNEXHVEQzY3fCg/Oig/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCk/XHVEODNEXHVEQzY2KXxcdUQ4M0NbXHVERkZCLVx1REZGRl0pfCg/OltcdTI2MURcdTI2RjlcdTI3MEEtXHUyNzBEXXxcdUQ4M0NbXHVERjg1XHVERkMyLVx1REZDNFx1REZDN1x1REZDQS1cdURGQ0NdfFx1RDgzRFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2LVx1REM2OVx1REM2RVx1REM3MC1cdURDNzhcdURDN0NcdURDODEtXHVEQzgzXHVEQzg1LVx1REM4N1x1RENBQVx1REQ3NFx1REQ3NVx1REQ3QVx1REQ5MFx1REQ5NVx1REQ5Nlx1REU0NS1cdURFNDdcdURFNEItXHVERTRGXHVERUEzXHVERUI0LVx1REVCNlx1REVDMFx1REVDQ118XHVEODNFW1x1REQxOC1cdUREMUNcdUREMUVcdUREMUZcdUREMjZcdUREMzAtXHVERDM5XHVERDNEXHVERDNFXHVEREQxLVx1RERERF0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98KD86W1x1MjMxQVx1MjMxQlx1MjNFOS1cdTIzRUNcdTIzRjBcdTIzRjNcdTI1RkRcdTI1RkVcdTI2MTRcdTI2MTVcdTI2NDgtXHUyNjUzXHUyNjdGXHUyNjkzXHUyNkExXHUyNkFBXHUyNkFCXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkYyXHUyNkYzXHUyNkY1XHUyNkZBXHUyNkZEXHUyNzA1XHUyNzBBXHUyNzBCXHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc1N1x1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCMUJcdTJCMUNcdTJCNTBcdTJCNTVdfFx1RDgzQ1tcdURDMDRcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVEREU2LVx1RERGRlx1REUwMVx1REUxQVx1REUyRlx1REUzMi1cdURFMzZcdURFMzgtXHVERTNBXHVERTUwXHVERTUxXHVERjAwLVx1REYyMFx1REYyRC1cdURGMzVcdURGMzctXHVERjdDXHVERjdFLVx1REY5M1x1REZBMC1cdURGQ0FcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGNFx1REZGOC1cdURGRkZdfFx1RDgzRFtcdURDMDAtXHVEQzNFXHVEQzQwXHVEQzQyLVx1RENGQ1x1RENGRi1cdUREM0RcdURENEItXHVERDRFXHVERDUwLVx1REQ2N1x1REQ3QVx1REQ5NVx1REQ5Nlx1RERBNFx1RERGQi1cdURFNEZcdURFODAtXHVERUM1XHVERUNDXHVERUQwLVx1REVEMlx1REVFQlx1REVFQ1x1REVGNC1cdURFRjhdfFx1RDgzRVtcdUREMTAtXHVERDNBXHVERDNDLVx1REQzRVx1REQ0MC1cdURENDVcdURENDctXHVERDRDXHVERDUwLVx1REQ2Qlx1REQ4MC1cdUREOTdcdUREQzBcdURERDAtXHVEREU2XSl8KD86WyNcKjAtOVx4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFOS1cdTIzRjNcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCLVx1MjVGRVx1MjYwMC1cdTI2MDRcdTI2MEVcdTI2MTFcdTI2MTRcdTI2MTVcdTI2MThcdTI2MURcdTI2MjBcdTI2MjJcdTI2MjNcdTI2MjZcdTI2MkFcdTI2MkVcdTI2MkZcdTI2MzgtXHUyNjNBXHUyNjQwXHUyNjQyXHUyNjQ4LVx1MjY1M1x1MjY2MFx1MjY2M1x1MjY2NVx1MjY2Nlx1MjY2OFx1MjY3Qlx1MjY3Rlx1MjY5Mi1cdTI2OTdcdTI2OTlcdTI2OUJcdTI2OUNcdTI2QTBcdTI2QTFcdTI2QUFcdTI2QUJcdTI2QjBcdTI2QjFcdTI2QkRcdTI2QkVcdTI2QzRcdTI2QzVcdTI2QzhcdTI2Q0VcdTI2Q0ZcdTI2RDFcdTI2RDNcdTI2RDRcdTI2RTlcdTI2RUFcdTI2RjAtXHUyNkY1XHUyNkY3LVx1MjZGQVx1MjZGRFx1MjcwMlx1MjcwNVx1MjcwOC1cdTI3MERcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MjhcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NENcdTI3NEVcdTI3NTMtXHUyNzU1XHUyNzU3XHUyNzYzXHUyNzY0XHUyNzk1LVx1Mjc5N1x1MjdBMVx1MjdCMFx1MjdCRlx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTBcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldfFx1RDgzQ1tcdURDMDRcdURDQ0ZcdURENzBcdURENzFcdUREN0VcdUREN0ZcdUREOEVcdUREOTEtXHVERDlBXHVEREU2LVx1RERGRlx1REUwMVx1REUwMlx1REUxQVx1REUyRlx1REUzMi1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIxXHVERjI0LVx1REY5M1x1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUUtXHVERkYwXHVERkYzLVx1REZGNVx1REZGNy1cdURGRkZdfFx1RDgzRFtcdURDMDAtXHVEQ0ZEXHVEQ0ZGLVx1REQzRFx1REQ0OS1cdURENEVcdURENTAtXHVERDY3XHVERDZGXHVERDcwXHVERDczLVx1REQ3QVx1REQ4N1x1REQ4QS1cdUREOERcdUREOTBcdUREOTVcdUREOTZcdUREQTRcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkEtXHVERTRGXHVERTgwLVx1REVDNVx1REVDQi1cdURFRDJcdURFRTAtXHVERUU1XHVERUU5XHVERUVCXHVERUVDXHVERUYwXHVERUYzLVx1REVGOF18XHVEODNFW1x1REQxMC1cdUREM0FcdUREM0MtXHVERDNFXHVERDQwLVx1REQ0NVx1REQ0Ny1cdURENENcdURENTAtXHVERDZCXHVERDgwLVx1REQ5N1x1RERDMFx1REREMC1cdURERTZdKVx1RkUwRikvOwoKICAgIGZ1bmN0aW9uIGsoRCkgeyByZXR1cm4gZS5nZXRDb21wdXRlZFN0eWxlKEQpIH0KCiAgICBmdW5jdGlvbiBuKEQsIHUpIHsgdmFyIGU7IHJldHVybiBpKEQpID8gRCA6ICJzdHJpbmciID09IChlID0gdHlwZW9mIEQpICYmICF1ICYmIEQgPyBFLmNhbGwoWC5xdWVyeVNlbGVjdG9yQWxsKEQpLCAwKSA6IEQgJiYgIm9iamVjdCIgPT0gZSAmJiAibGVuZ3RoIiBpbiBEID8gRS5jYWxsKEQsIDApIDogRCA/IFtEXSA6IFtdIH0KCiAgICBmdW5jdGlvbiBvKEQpIHsgcmV0dXJuICJhYnNvbHV0ZSIgPT09IEQucG9zaXRpb24gfHwgITAgPT09IEQuYWJzb2x1dGUgfQoKICAgIGZ1bmN0aW9uIHAoRCwgdSkgewogICAgICAgIGZvciAodmFyIGUsIHQgPSB1Lmxlbmd0aDsgLSAxIDwgLS10OykKICAgICAgICAgICAgaWYgKGUgPSB1W3RdLCBELnN1YnN0cigwLCBlLmxlbmd0aCkgPT09IGUpIHJldHVybiBlLmxlbmd0aAogICAgfQoKICAgIGZ1bmN0aW9uIHIoRCwgdSkgewogICAgICAgIHZvaWQgMCA9PT0gRCAmJiAoRCA9ICIiKTsKICAgICAgICB2YXIgZSA9IH5ELmluZGV4T2YoIisrIiksCiAgICAgICAgICAgIHQgPSAxOwogICAgICAgIHJldHVybiBlICYmIChEID0gRC5zcGxpdCgiKysiKS5qb2luKCIiKSksCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gIjwiICsgdSArICIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrOyciICsgKEQgPyAiIGNsYXNzPSciICsgRCArIChlID8gdCsrIDogIiIpICsgIic+IiA6ICI+IikgfQogICAgfQoKICAgIGZ1bmN0aW9uIHMoRCwgdSwgZSkgewogICAgICAgIHZhciB0ID0gRC5ub2RlVHlwZTsKICAgICAgICBpZiAoMSA9PT0gdCB8fCA5ID09PSB0IHx8IDExID09PSB0KQogICAgICAgICAgICBmb3IgKEQgPSBELmZpcnN0Q2hpbGQ7IEQ7IEQgPSBELm5leHRTaWJsaW5nKSBzKEQsIHUsIGUpOwogICAgICAgIGVsc2UgMyAhPT0gdCAmJiA0ICE9PSB0IHx8IChELm5vZGVWYWx1ZSA9IEQubm9kZVZhbHVlLnNwbGl0KHUpLmpvaW4oZSkpCiAgICB9CgogICAgZnVuY3Rpb24gdChELCB1KSB7IGZvciAodmFyIGUgPSB1Lmxlbmd0aDsgLSAxIDwgLS1lOykgRC5wdXNoKHVbZV0pIH0KCiAgICBmdW5jdGlvbiB1KEQsIHUsIGUpIHsKICAgICAgICBmb3IgKHZhciB0OyBEICYmIEQgIT09IHU7KSB7CiAgICAgICAgICAgIGlmICh0ID0gRC5fbmV4dCB8fCBELm5leHRTaWJsaW5nKSByZXR1cm4gdC50ZXh0Q29udGVudC5jaGFyQXQoMCkgPT09IGU7CiAgICAgICAgICAgIEQgPSBELnBhcmVudE5vZGUgfHwgRC5fcGFyZW50CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHYoRCkgewogICAgICAgIHZhciB1LCBlLCB0ID0gbihELmNoaWxkTm9kZXMpLAogICAgICAgICAgICBGID0gdC5sZW5ndGg7CiAgICAgICAgZm9yICh1ID0gMDsgdSA8IEY7IHUrKykoZSA9IHRbdV0pLl9pc1NwbGl0ID8gdihlKSA6IHUgJiYgZS5wcmV2aW91c1NpYmxpbmcgJiYgMyA9PT0gZS5wcmV2aW91c1NpYmxpbmcubm9kZVR5cGUgPyAoZS5wcmV2aW91c1NpYmxpbmcubm9kZVZhbHVlICs9IDMgPT09IGUubm9kZVR5cGUgPyBlLm5vZGVWYWx1ZSA6IGUuZmlyc3RDaGlsZC5ub2RlVmFsdWUsIEQucmVtb3ZlQ2hpbGQoZSkpIDogMyAhPT0gZS5ub2RlVHlwZSAmJiAoRC5pbnNlcnRCZWZvcmUoZS5maXJzdENoaWxkLCBlKSwgRC5yZW1vdmVDaGlsZChlKSkKICAgIH0KCiAgICBmdW5jdGlvbiB3KEQsIHUpIHsgcmV0dXJuIHBhcnNlRmxvYXQodVtEXSkgfHwgMCB9CgogICAgZnVuY3Rpb24geChELCBlLCBGLCBDLCBpLCBuLCBFKSB7CiAgICAgICAgdmFyIHIsIGwsIHAsIGQsIGEsIGgsIEIsIGYsIEEsIGMsIHgsIGcsIHkgPSBrKEQpLAogICAgICAgICAgICBfID0gdygicGFkZGluZ0xlZnQiLCB5KSwKICAgICAgICAgICAgYiA9IC05OTksCiAgICAgICAgICAgIFMgPSB3KCJib3JkZXJCb3R0b21XaWR0aCIsIHkpICsgdygiYm9yZGVyVG9wV2lkdGgiLCB5KSwKICAgICAgICAgICAgVCA9IHcoImJvcmRlckxlZnRXaWR0aCIsIHkpICsgdygiYm9yZGVyUmlnaHRXaWR0aCIsIHkpLAogICAgICAgICAgICBtID0gdygicGFkZGluZ1RvcCIsIHkpICsgdygicGFkZGluZ0JvdHRvbSIsIHkpLAogICAgICAgICAgICBOID0gdygicGFkZGluZ0xlZnQiLCB5KSArIHcoInBhZGRpbmdSaWdodCIsIHkpLAogICAgICAgICAgICBMID0gdygiZm9udFNpemUiLCB5KSAqIChlLmxpbmVUaHJlc2hvbGQgfHwgLjIpLAogICAgICAgICAgICBXID0geS50ZXh0QWxpZ24sCiAgICAgICAgICAgIEggPSBbXSwKICAgICAgICAgICAgTyA9IFtdLAogICAgICAgICAgICBWID0gW10sCiAgICAgICAgICAgIGogPSBlLndvcmREZWxpbWl0ZXIgfHwgIiAiLAogICAgICAgICAgICBNID0gZS50YWcgPyBlLnRhZyA6IGUuc3BhbiA/ICJzcGFuIiA6ICJkaXYiLAogICAgICAgICAgICBSID0gZS50eXBlIHx8IGUuc3BsaXQgfHwgImNoYXJzLHdvcmRzLGxpbmVzIiwKICAgICAgICAgICAgeiA9IGkgJiYgflIuaW5kZXhPZigibGluZXMiKSA/IFtdIDogbnVsbCwKICAgICAgICAgICAgUCA9IH5SLmluZGV4T2YoIndvcmRzIiksCiAgICAgICAgICAgIHEgPSB+Ui5pbmRleE9mKCJjaGFycyIpLAogICAgICAgICAgICBHID0gbyhlKSwKICAgICAgICAgICAgSSA9IGUubGluZXNDbGFzcywKICAgICAgICAgICAgSiA9IH4oSSB8fCAiIikuaW5kZXhPZigiKysiKSwKICAgICAgICAgICAgSyA9IFtdLAogICAgICAgICAgICBRID0gImZsZXgiID09PSB5LmRpc3BsYXksCiAgICAgICAgICAgIFUgPSBELnN0eWxlLmRpc3BsYXk7CiAgICAgICAgZm9yIChKICYmIChJID0gSS5zcGxpdCgiKysiKS5qb2luKCIiKSksIFEgJiYgKEQuc3R5bGUuZGlzcGxheSA9ICJibG9jayIpLCBwID0gKGwgPSBELmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLmxlbmd0aCwgYSA9IFtdLCByID0gMDsgciA8IHA7IHIrKykgYVtyXSA9IGxbcl07CiAgICAgICAgaWYgKHogfHwgRykKICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IHA7IHIrKykoKGggPSAoZCA9IGFbcl0pLnBhcmVudE5vZGUgPT09IEQpIHx8IEcgfHwgcSAmJiAhUCkgJiYgKGcgPSBkLm9mZnNldFRvcCwgeiAmJiBoICYmIE1hdGguYWJzKGcgLSBiKSA+IEwgJiYgKCJCUiIgIT09IGQubm9kZU5hbWUgfHwgMCA9PT0gcikgJiYgKEIgPSBbXSwgei5wdXNoKEIpLCBiID0gZyksIEcgJiYgKGQuX3ggPSBkLm9mZnNldExlZnQsIGQuX3kgPSBnLCBkLl93ID0gZC5vZmZzZXRXaWR0aCwgZC5faCA9IGQub2Zmc2V0SGVpZ2h0KSwgeiAmJiAoKGQuX2lzU3BsaXQgJiYgaCB8fCAhcSAmJiBoIHx8IFAgJiYgaCB8fCAhUCAmJiBkLnBhcmVudE5vZGUucGFyZW50Tm9kZSA9PT0gRCAmJiAhZC5wYXJlbnROb2RlLl9pc1NwbGl0KSAmJiAoQi5wdXNoKGQpLCBkLl94IC09IF8sIHUoZCwgRCwgaikgJiYgKGQuX3dvcmRFbmQgPSAhMCkpLCAiQlIiID09PSBkLm5vZGVOYW1lICYmIChkLm5leHRTaWJsaW5nICYmICJCUiIgPT09IGQubmV4dFNpYmxpbmcubm9kZU5hbWUgfHwgMCA9PT0gcikgJiYgei5wdXNoKFtdKSkpOwogICAgICAgIGZvciAociA9IDA7IHIgPCBwOyByKyspCiAgICAgICAgICAgIGlmIChoID0gKGQgPSBhW3JdKS5wYXJlbnROb2RlID09PSBELCAiQlIiICE9PSBkLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgaWYgKEcgJiYgKEEgPSBkLnN0eWxlLCBQIHx8IGggfHwgKGQuX3ggKz0gZC5wYXJlbnROb2RlLl94LCBkLl95ICs9IGQucGFyZW50Tm9kZS5feSksIEEubGVmdCA9IGQuX3ggKyAicHgiLCBBLnRvcCA9IGQuX3kgKyAicHgiLCBBLnBvc2l0aW9uID0gImFic29sdXRlIiwgQS5kaXNwbGF5ID0gImJsb2NrIiwgQS53aWR0aCA9IGQuX3cgKyAxICsgInB4IiwgQS5oZWlnaHQgPSBkLl9oICsgInB4IiksICFQICYmIHEpCiAgICAgICAgICAgICAgICAgICAgaWYgKGQuX2lzU3BsaXQpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZC5fbmV4dCA9IGwgPSBkLm5leHRTaWJsaW5nLCBkLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoZCk7IGwgJiYgMyA9PT0gbC5ub2RlVHlwZSAmJiAiICIgPT09IGwudGV4dENvbnRlbnQ7KSBkLl9uZXh0ID0gbC5uZXh0U2libGluZywgZC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGwpLCBsID0gbC5uZXh0U2libGluZzsKICAgICAgICAgICAgICAgICAgICBlbHNlIGQucGFyZW50Tm9kZS5faXNTcGxpdCA/IChkLl9wYXJlbnQgPSBkLnBhcmVudE5vZGUsICFkLnByZXZpb3VzU2libGluZyAmJiBkLmZpcnN0Q2hpbGQgJiYgKGQuZmlyc3RDaGlsZC5faXNGaXJzdCA9ICEwKSwgZC5uZXh0U2libGluZyAmJiAiICIgPT09IGQubmV4dFNpYmxpbmcudGV4dENvbnRlbnQgJiYgIWQubmV4dFNpYmxpbmcubmV4dFNpYmxpbmcgJiYgSy5wdXNoKGQubmV4dFNpYmxpbmcpLCBkLl9uZXh0ID0gZC5uZXh0U2libGluZyAmJiBkLm5leHRTaWJsaW5nLl9pc0ZpcnN0ID8gbnVsbCA6IGQubmV4dFNpYmxpbmcsIGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSwgYS5zcGxpY2Uoci0tLCAxKSwgcC0tKSA6IGggfHwgKGcgPSAhZC5uZXh0U2libGluZyAmJiB1KGQucGFyZW50Tm9kZSwgRCwgaiksIGQucGFyZW50Tm9kZS5fcGFyZW50ICYmIGQucGFyZW50Tm9kZS5fcGFyZW50LmFwcGVuZENoaWxkKGQpLCBnICYmIGQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChYLmNyZWF0ZVRleHROb2RlKCIgIikpLCAic3BhbiIgPT09IE0gJiYgKGQuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiKSwgSC5wdXNoKGQpKTsKICAgICAgICBlbHNlIGQucGFyZW50Tm9kZS5faXNTcGxpdCAmJiAhZC5faXNTcGxpdCAmJiAiIiAhPT0gZC5pbm5lckhUTUwgPyBPLnB1c2goZCkgOiBxICYmICFkLl9pc1NwbGl0ICYmICgic3BhbiIgPT09IE0gJiYgKGQuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiKSwgSC5wdXNoKGQpKTsKICAgICAgICBlbHNlIHogfHwgRyA/IChkLnBhcmVudE5vZGUgJiYgZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpLCBhLnNwbGljZShyLS0sIDEpLCBwLS0pIDogUCB8fCBELmFwcGVuZENoaWxkKGQpOwogICAgICAgIGZvciAociA9IEsubGVuZ3RoOyAtIDEgPCAtLXI7KSBLW3JdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoS1tyXSk7CiAgICAgICAgaWYgKHopIHsKICAgICAgICAgICAgZm9yIChHICYmIChjID0gWC5jcmVhdGVFbGVtZW50KE0pLCBELmFwcGVuZENoaWxkKGMpLCB4ID0gYy5vZmZzZXRXaWR0aCArICJweCIsIGcgPSBjLm9mZnNldFBhcmVudCA9PT0gRCA/IDAgOiBELm9mZnNldExlZnQsIEQucmVtb3ZlQ2hpbGQoYykpLCBBID0gRC5zdHlsZS5jc3NUZXh0LCBELnN0eWxlLmNzc1RleHQgPSAiZGlzcGxheTpub25lOyI7IEQuZmlyc3RDaGlsZDspIEQucmVtb3ZlQ2hpbGQoRC5maXJzdENoaWxkKTsKICAgICAgICAgICAgZm9yIChmID0gIiAiID09PSBqICYmICghRyB8fCAhUCAmJiAhcSksIHIgPSAwOyByIDwgei5sZW5ndGg7IHIrKykgewogICAgICAgICAgICAgICAgZm9yIChCID0geltyXSwgKGMgPSBYLmNyZWF0ZUVsZW1lbnQoTSkpLnN0eWxlLmNzc1RleHQgPSAiZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOiIgKyBXICsgIjtwb3NpdGlvbjoiICsgKEcgPyAiYWJzb2x1dGU7IiA6ICJyZWxhdGl2ZTsiKSwgSSAmJiAoYy5jbGFzc05hbWUgPSBJICsgKEogPyByICsgMSA6ICIiKSksIFYucHVzaChjKSwgcCA9IEIubGVuZ3RoLCBsID0gMDsgbCA8IHA7IGwrKykgIkJSIiAhPT0gQltsXS5ub2RlTmFtZSAmJiAoZCA9IEJbbF0sIGMuYXBwZW5kQ2hpbGQoZCksIGYgJiYgZC5fd29yZEVuZCAmJiBjLmFwcGVuZENoaWxkKFguY3JlYXRlVGV4dE5vZGUoIiAiKSksIEcgJiYgKDAgPT09IGwgJiYgKGMuc3R5bGUudG9wID0gZC5feSArICJweCIsIGMuc3R5bGUubGVmdCA9IF8gKyBnICsgInB4IiksIGQuc3R5bGUudG9wID0gIjBweCIsIGcgJiYgKGQuc3R5bGUubGVmdCA9IGQuX3ggLSBnICsgInB4IikpKTsKICAgICAgICAgICAgICAgIDAgPT09IHAgPyBjLmlubmVySFRNTCA9ICImbmJzcDsiIDogUCB8fCBxIHx8ICh2KGMpLCBzKGMsIFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSwgIiAiKSksIEcgJiYgKGMuc3R5bGUud2lkdGggPSB4LCBjLnN0eWxlLmhlaWdodCA9IGQuX2ggKyAicHgiKSwgRC5hcHBlbmRDaGlsZChjKQogICAgICAgICAgICB9CiAgICAgICAgICAgIEQuc3R5bGUuY3NzVGV4dCA9IEEKICAgICAgICB9CiAgICAgICAgRyAmJiAoRSA+IEQuY2xpZW50SGVpZ2h0ICYmIChELnN0eWxlLmhlaWdodCA9IEUgLSBtICsgInB4IiwgRC5jbGllbnRIZWlnaHQgPCBFICYmIChELnN0eWxlLmhlaWdodCA9IEUgKyBTICsgInB4IikpLCBuID4gRC5jbGllbnRXaWR0aCAmJiAoRC5zdHlsZS53aWR0aCA9IG4gLSBOICsgInB4IiwgRC5jbGllbnRXaWR0aCA8IG4gJiYgKEQuc3R5bGUud2lkdGggPSBuICsgVCArICJweCIpKSksIFEgJiYgKFUgPyBELnN0eWxlLmRpc3BsYXkgPSBVIDogRC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpKSwgdChGLCBIKSwgUCAmJiB0KEMsIE8pLCB0KGksIFYpCiAgICB9CgogICAgZnVuY3Rpb24geShELCB1LCBlLCB0KSB7CiAgICAgICAgdmFyIEYsIEMsIGksIG4sIEUsIHIsIGwsIGQsIGEgPSB1LnRhZyA/IHUudGFnIDogdS5zcGFuID8gInNwYW4iIDogImRpdiIsCiAgICAgICAgICAgIGggPSB+KHUudHlwZSB8fCB1LnNwbGl0IHx8ICJjaGFycyx3b3JkcyxsaW5lcyIpLmluZGV4T2YoImNoYXJzIiksCiAgICAgICAgICAgIEIgPSBvKHUpLAogICAgICAgICAgICBmID0gdS53b3JkRGVsaW1pdGVyIHx8ICIgIiwKICAgICAgICAgICAgQSA9ICIgIiAhPT0gZiA/ICIiIDogQiA/ICImIzE3MzsgIiA6ICIgIiwKICAgICAgICAgICAgYyA9ICI8LyIgKyBhICsgIj4iLAogICAgICAgICAgICB4ID0gMSwKICAgICAgICAgICAgZyA9IHUuc3BlY2lhbENoYXJzID8gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdS5zcGVjaWFsQ2hhcnMgPyB1LnNwZWNpYWxDaGFycyA6IHAgOiBudWxsLAogICAgICAgICAgICB5ID0gWC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgdiA9IEQucGFyZW50Tm9kZTsKICAgICAgICBmb3IgKHYuaW5zZXJ0QmVmb3JlKHksIEQpLCB5LnRleHRDb250ZW50ID0gRC5ub2RlVmFsdWUsIHYucmVtb3ZlQ2hpbGQoRCksIGwgPSAtMSAhPT0gKEYgPSBmdW5jdGlvbiBnZXRUZXh0KEQpIHsKICAgICAgICAgICAgICAgIHZhciB1ID0gRC5ub2RlVHlwZSwKICAgICAgICAgICAgICAgICAgICBlID0gIiI7CiAgICAgICAgICAgICAgICBpZiAoMSA9PT0gdSB8fCA5ID09PSB1IHx8IDExID09PSB1KSB7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgRC50ZXh0Q29udGVudCkgcmV0dXJuIEQudGV4dENvbnRlbnQ7IGZvciAoRCA9IEQuZmlyc3RDaGlsZDsgRDsgRCA9IEQubmV4dFNpYmxpbmcpIGUgKz0gZ2V0VGV4dChEKSB9IGVsc2UgaWYgKDMgPT09IHUgfHwgNCA9PT0gdSkgcmV0dXJuIEQubm9kZVZhbHVlOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfShEID0geSkpLmluZGV4T2YoIjwiKSwgITEgIT09IHUucmVkdWNlV2hpdGVTcGFjZSAmJiAoRiA9IEYucmVwbGFjZShTLCAiICIpLnJlcGxhY2UoYiwgIiIpKSwgbCAmJiAoRiA9IEYuc3BsaXQoIjwiKS5qb2luKCJ7e0xUfX0iKSksIEUgPSBGLmxlbmd0aCwgQyA9ICgiICIgPT09IEYuY2hhckF0KDApID8gQSA6ICIiKSArIGUoKSwgaSA9IDA7IGkgPCBFOyBpKyspCiAgICAgICAgICAgIGlmIChyID0gRi5jaGFyQXQoaSksIGcgJiYgKGQgPSBnKEYuc3Vic3RyKGkpLCB1LnNwZWNpYWxDaGFycykpKSByID0gRi5zdWJzdHIoaSwgZCB8fCAxKSwgQyArPSBoICYmICIgIiAhPT0gciA/IHQoKSArIHIgKyAiPC8iICsgYSArICI+IiA6IHIsIGkgKz0gZCAtIDE7CiAgICAgICAgICAgIGVsc2UgaWYgKHIgPT09IGYgJiYgRi5jaGFyQXQoaSAtIDEpICE9PSBmICYmIGkpIHsKICAgICAgICAgICAgZm9yIChDICs9IHggPyBjIDogIiIsIHggPSAwOyBGLmNoYXJBdChpICsgMSkgPT09IGY7KSBDICs9IEEsIGkrKzsKICAgICAgICAgICAgaSA9PT0gRSAtIDEgPyBDICs9IEEgOiAiKSIgIT09IEYuY2hhckF0KGkgKyAxKSAmJiAoQyArPSBBICsgZSgpLCB4ID0gMSkKICAgICAgICB9IGVsc2UgInsiID09PSByICYmICJ7e0xUfX0iID09PSBGLnN1YnN0cihpLCA2KSA/IChDICs9IGggPyB0KCkgKyAie3tMVH19PC8iICsgYSArICI+IiA6ICJ7e0xUfX0iLCBpICs9IDUpIDogNTUyOTYgPD0gci5jaGFyQ29kZUF0KDApICYmIHIuY2hhckNvZGVBdCgwKSA8PSA1NjMxOSB8fCA2NTAyNCA8PSBGLmNoYXJDb2RlQXQoaSArIDEpICYmIEYuY2hhckNvZGVBdChpICsgMSkgPD0gNjUwMzkgPyAobiA9ICgoRi5zdWJzdHIoaSwgMTIpLnNwbGl0KF8pIHx8IFtdKVsxXSB8fCAiIikubGVuZ3RoIHx8IDIsIEMgKz0gaCAmJiAiICIgIT09IHIgPyB0KCkgKyBGLnN1YnN0cihpLCBuKSArICI8LyIgKyBhICsgIj4iIDogRi5zdWJzdHIoaSwgbiksIGkgKz0gbiAtIDEpIDogQyArPSBoICYmICIgIiAhPT0gciA/IHQoKSArIHIgKyAiPC8iICsgYSArICI+IiA6IHI7CiAgICAgICAgRC5vdXRlckhUTUwgPSBDICsgKHggPyBjIDogIiIpLCBsICYmIHModiwgInt7TFR9fSIsICI8IikKICAgIH0KCiAgICBmdW5jdGlvbiB6KEQsIHUsIGUsIHQpIHsKICAgICAgICB2YXIgRiwgQywgaSA9IG4oRC5jaGlsZE5vZGVzKSwKICAgICAgICAgICAgRSA9IGkubGVuZ3RoLAogICAgICAgICAgICBzID0gbyh1KTsKICAgICAgICBpZiAoMyAhPT0gRC5ub2RlVHlwZSB8fCAxIDwgRSkgeyBmb3IgKHUuYWJzb2x1dGUgPSAhMSwgRiA9IDA7IEYgPCBFOyBGKyspKEMgPSBpW0ZdKS5fbmV4dCA9IEMuX2lzRmlyc3QgPSBDLl9wYXJlbnQgPSBDLl93b3JkRW5kID0gbnVsbCwgMyA9PT0gQy5ub2RlVHlwZSAmJiAhL1xTKy8udGVzdChDLm5vZGVWYWx1ZSkgfHwgKHMgJiYgMyAhPT0gQy5ub2RlVHlwZSAmJiAiaW5saW5lIiA9PT0gayhDKS5kaXNwbGF5ICYmIChDLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIiwgQy5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSIpLCBDLl9pc1NwbGl0ID0gITAsIHooQywgdSwgZSwgdCkpOyByZXR1cm4gdS5hYnNvbHV0ZSA9IHMsIHZvaWQoRC5faXNTcGxpdCA9ICEwKSB9CiAgICAgICAgeShELCB1LCBlLCB0KQogICAgfQogICAgdmFyIFgsIGUsIEYsIEMsIGIgPSAvKD86XHJ8XG58XHRcdCkvZywKICAgICAgICBTID0gLyg/OlxzXHMrKS9nLAogICAgICAgIGkgPSBBcnJheS5pc0FycmF5LAogICAgICAgIEUgPSBbXS5zbGljZSwKICAgICAgICBsID0gKChDID0gU3BsaXRUZXh0LnByb3RvdHlwZSkuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdChEKSB7IHRoaXMuaXNTcGxpdCAmJiB0aGlzLnJldmVydCgpLCB0aGlzLnZhcnMgPSBEID0gRCB8fCB0aGlzLnZhcnMsIHRoaXMuX29yaWdpbmFscy5sZW5ndGggPSB0aGlzLmNoYXJzLmxlbmd0aCA9IHRoaXMud29yZHMubGVuZ3RoID0gdGhpcy5saW5lcy5sZW5ndGggPSAwOyBmb3IgKHZhciB1LCBlLCB0LCBGID0gdGhpcy5lbGVtZW50cy5sZW5ndGgsIEMgPSBELnRhZyA/IEQudGFnIDogRC5zcGFuID8gInNwYW4iIDogImRpdiIsIGkgPSByKEQud29yZHNDbGFzcywgQyksIG4gPSByKEQuY2hhcnNDbGFzcywgQyk7IC0gMSA8IC0tRjspIHQgPSB0aGlzLmVsZW1lbnRzW0ZdLCB0aGlzLl9vcmlnaW5hbHNbRl0gPSB0LmlubmVySFRNTCwgdSA9IHQuY2xpZW50SGVpZ2h0LCBlID0gdC5jbGllbnRXaWR0aCwgeih0LCBELCBpLCBuKSwgeCh0LCBELCB0aGlzLmNoYXJzLCB0aGlzLndvcmRzLCB0aGlzLmxpbmVzLCBlLCB1KTsgcmV0dXJuIHRoaXMuY2hhcnMucmV2ZXJzZSgpLCB0aGlzLndvcmRzLnJldmVyc2UoKSwgdGhpcy5saW5lcy5yZXZlcnNlKCksIHRoaXMuaXNTcGxpdCA9ICEwLCB0aGlzIH0sIEMucmV2ZXJ0ID0gZnVuY3Rpb24gcmV2ZXJ0KCkgeyB2YXIgZSA9IHRoaXMuX29yaWdpbmFsczsgaWYgKCFlKSB0aHJvdyAicmV2ZXJ0KCkgY2FsbCB3YXNuJ3Qgc2NvcGVkIHByb3Blcmx5LiI7IHJldHVybiB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oRCwgdSkgeyByZXR1cm4gRC5pbm5lckhUTUwgPSBlW3VdIH0pLCB0aGlzLmNoYXJzID0gW10sIHRoaXMud29yZHMgPSBbXSwgdGhpcy5saW5lcyA9IFtdLCB0aGlzLmlzU3BsaXQgPSAhMSwgdGhpcyB9LCBTcGxpdFRleHQuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKEQsIHUpIHsgcmV0dXJuIG5ldyBTcGxpdFRleHQoRCwgdSkgfSwgU3BsaXRUZXh0KTsKCiAgICBmdW5jdGlvbiBTcGxpdFRleHQoRCwgdSkgeyBGIHx8IGZ1bmN0aW9uIF9pbml0Q29yZSgpIHsgWCA9IGRvY3VtZW50LCBlID0gd2luZG93LCBGID0gMSB9KCksIHRoaXMuZWxlbWVudHMgPSBuKEQpLCB0aGlzLmNoYXJzID0gW10sIHRoaXMud29yZHMgPSBbXSwgdGhpcy5saW5lcyA9IFtdLCB0aGlzLl9vcmlnaW5hbHMgPSBbXSwgdGhpcy52YXJzID0gdSB8fCB7fSwgdGhpcy5zcGxpdCh1KSB9CiAgICBsLnZlcnNpb24gPSAiMy42LjEiLCBELlNwbGl0VGV4dCA9IGwsIEQuZGVmYXVsdCA9IGw7CiAgICBpZiAodHlwZW9mKHdpbmRvdykgPT09ICJ1bmRlZmluZWQiIHx8IHdpbmRvdyAhPT0gRCkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRCwgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiAhMCB9KSB9IGVsc2UgeyBkZWxldGUgRC5kZWZhdWx0IH0KfSk7Ow=="}},"time_used":42,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":41,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/global/css/iziToast.min.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.030Z","timestamp":1785159465030,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/global/css/iziToast.min.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 17 Mar 2022 02:44:40 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 9933\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":41500,"size_decoded":10242,"mime_type":"text/css","magic":"ASCII text, with very long lines (41419)","md5":"ca2f839e9a41207ce4d486b75b0dc926","sha1":"398acaa4eca2baa749a90175fe24d3c2a35f19ca","sha256":"20b2776eaee552defc7c9b25bfef14a891f0dd4a12ac7320d689d749e1ca0fa7","sha512":"d9feb978fe3c1c26cbb2efb380a70eeb7501f5631343a998abfc84766f9a6d2f1e521cee40bcff6b381515a7a1d8fb4726af583502ee23549934757766257f5c","ssdeep":"384:pV5zpPVWahj8Ik/4kYip7pHRiJhkgL6LlG1oLzlRCPoA50UhLoMPFPsR4lweGbzi:zPVNhlHgppGf1oWQA1","tlshash":"711345fd15f0124454c6ab4296da6a980e3fcd9770ea1cef32cd344b8b46b9e136532b","first_seen":"2023-04-10T01:39:17Z","last_seen":"2026-08-04T06:10:25.77012Z","times_seen":2374,"resource_available":false,"data":"LyoKKiBpemlUb2FzdCB8IHYxLjQuMAoqIGh0dHA6Ly9peml0b2FzdC5tYXJjZWxvZG9sY2UuY29tCiogYnkgTWFyY2VsbyBEb2xjZS4KKi8KLml6aVRvYXN0LWNhcHN1bGV7Zm9udC1zaXplOjA7aGVpZ2h0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgY3ViaWMtYmV6aWVyKC4yNSwuOCwuMjUsMSksaGVpZ2h0IC41cyBjdWJpYy1iZXppZXIoLjI1LC44LC4yNSwxKX0uaXppVG9hc3QtY2Fwc3VsZSwuaXppVG9hc3QtY2Fwc3VsZSAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0uaXppVG9hc3Qtb3ZlcmxheXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmZpeGVkO3RvcDotMTAwcHg7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOi0xMDBweDt6LWluZGV4Ojk5N30uaXppVG9hc3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y2xlYXI6Ym90aDtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LWZhbWlseTonTGF0bycsVGFob21hLEFyaWFsO2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6OHB4IDQ1cHggOXB4IDA7YmFja2dyb3VuZDpyZ2JhKDIzOCwyMzgsMjM4LC45KTtib3JkZXItY29sb3I6cmdiYSgyMzgsMjM4LDIzOCwuOSk7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czphbGw7Y3Vyc29yOmRlZmF1bHQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1raHRtbC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO21pbi1oZWlnaHQ6NTRweH0uaXppVG9hc3Q+Lml6aVRvYXN0LXByb2dyZXNzYmFye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDt3aWR0aDoxMDAlO3otaW5kZXg6MTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS5pemlUb2FzdD4uaXppVG9hc3QtcHJvZ3Jlc3NiYXI+ZGl2e2hlaWdodDoycHg7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMpO2JvcmRlci1yYWRpdXM6MCAwIDNweCAzcHh9Lml6aVRvYXN0Lml6aVRvYXN0LWJhbGxvb246YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6OHB4O2xlZnQ6YXV0bzt3aWR0aDowO2hlaWdodDowO3RvcDoxMDAlO2JvcmRlci1yaWdodDowIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjE1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDoxMHB4IHNvbGlkICMwMDA7Ym9yZGVyLXRvcC1jb2xvcjppbmhlcml0O2JvcmRlci1yYWRpdXM6MH0uaXppVG9hc3QuaXppVG9hc3QtYmFsbG9vbiAuaXppVG9hc3QtcHJvZ3Jlc3NiYXJ7dG9wOjA7Ym90dG9tOmF1dG99Lml6aVRvYXN0Lml6aVRvYXN0LWJhbGxvb24+ZGl2e2JvcmRlci1yYWRpdXM6MCAwIDAgM3B4fS5pemlUb2FzdD4uaXppVG9hc3QtY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO2JvdHRvbTowO2hlaWdodDoxMDAlO21hcmdpbjowO2JhY2tncm91bmQtc2l6ZToxMDAlO2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0uaXppVG9hc3Q+Lml6aVRvYXN0LWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7Ym9yZGVyOjA7cGFkZGluZzowO29wYWNpdHk6LjY7d2lkdGg6NDJweDtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUpQQUFBQ1R3QmNHZlcwUUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFEM1NVUkJWRmlGMVpkdERvTWdERUJmZGk0UHdBWDh2TEZuMHFUN3d4YW50b2pLdXBtUW1DaThSNHRTQUNwZ2pDMklDQ1ViRUJhOGluZ2pzVTFBWFJCZVI4YUxONjRGaWtuc3dOOENZZWZCQkRRM3dodUZFU3k3V3lRTWVDMGlwRUkwQSswRmVCdkhVRk44eFBhVWhBSC9pS29Xc25YSEdlZ3k0SjB5eGlhbE9mYUhKQXo0YmhSelF6Z0R2ZEduejRHYkFvblpiQ1FNdUJtMUsva2NGdThNcDFOMmNGRnBzeHNNdUpxcWJJR0V4R2w0bG9BUmFqVTF0d3NrSkxMaElzSUQ3K3R2VW9EbklqVGc1VDlEUEg5RUJyejhyeGpQemNpQWw5K084U3hJOEN6SjhDeEtGZmgzeW5LOER5Yjh3TkhNL1hEcWVqeC9BdE55UE84N3ROeWJBQUFBQUVsRlRrU3VRbUNDKSBuby1yZXBlYXQgNTAlIDUwJTtiYWNrZ3JvdW5kLXNpemU6OHB4O2N1cnNvcjpwb2ludGVyO291dGxpbmU6MH0uaXppVG9hc3Q+Lml6aVRvYXN0LWNsb3NlOmhvdmVye29wYWNpdHk6MX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowIDAgMCAxMHB4O2hlaWdodDphdXRvO21pbi1oZWlnaHQ6MzZweDttYXJnaW46MCAwIDAgMTVweDt0ZXh0LWFsaWduOmxlZnR9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RofS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtdGV4dHN7bWFyZ2luOjEwcHggMCAwO3BhZGRpbmctcmlnaHQ6MnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnR9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1pbnB1dHN7bWluLWhlaWdodDoxOXB4O2Zsb2F0OmxlZnQ7bWFyZ2luOjNweCAtMnB4fS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaW5wdXRzPmlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pLC5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaW5wdXRzPnNlbGVjdHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MnB4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjowO3BhZGRpbmc6NHB4IDdweDtmb250LXNpemU6MTNweDtsZXR0ZXItc3BhY2luZzouMDJlbTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEpO2NvbG9yOiMwMDA7Ym94LXNoYWRvdzowIDAgMCAxcHggcmdiYSgwLDAsMCwuMik7bWluLWhlaWdodDoyNnB4fS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaW5wdXRzPmlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pOmZvY3VzLC5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaW5wdXRzPnNlbGVjdDpmb2N1c3tib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC42KX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnN7bWluLWhlaWdodDoxN3B4O2Zsb2F0OmxlZnQ7bWFyZ2luOjRweCAtMnB4fS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtYnV0dG9ucz5hLC5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtYnV0dG9ucz5idXR0b24sLml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1idXR0b25zPmlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjoycHg7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjA7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsZXR0ZXItc3BhY2luZzouMDJlbTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEpO2NvbG9yOiMwMDB9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1idXR0b25zPmE6aG92ZXIsLml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1idXR0b25zPmJ1dHRvbjpob3ZlciwuaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnM+aW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSk6bm90KFt0eXBlPXJhZGlvXSk6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yKX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnM+YTpmb2N1cywuaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnM+YnV0dG9uOmZvY3VzLC5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtYnV0dG9ucz5pbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9cmFkaW9dKTpmb2N1c3tib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC42KX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnM+YTphY3RpdmUsLml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1idXR0b25zPmJ1dHRvbjphY3RpdmUsLml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1idXR0b25zPmlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pOmFjdGl2ZXt0b3A6MXB4fS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjUwJTtkaXNwbGF5OnRhYmxlO2ZvbnQtc2l6ZToyM3B4O2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luLXRvcDotMTJweDtjb2xvcjojMDAwO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHh9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1pY29uLmljby1pbmZve2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBTUFBQUNkdDRIc0FBQUFmbEJNVkVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ3RvUHNBQUFBS1hSU1RsTUE2UHNJdkRvYitPYXBhdlZoV1JZUHJJcnkyTXhHUTk3Y3pzT3pwSmFNY0UwcUpRT3dWdEtqZnhDVkZlSUFBQUkzU1VSQlZGakRsSlBac29Jd0VFVG5DaUd5YjhxK3FtamwvMy93Rm1HS3dqQlJPUzlRV2J0bk9xRERHUHE0TWRNa1NjMG03Z2NERGhGNE5SZHY4Tm9MNEVjTXB6b0pnbFBsL0tURHo0V1czSWR2WEV2eGtmSUtuN0JNWmIxYkZLNHlaRnFnaFowM2prMG5HOE41TkJ3eng5eFU1Y3hBZzhmWGkyMC9oRGRDMzE2bGNBOG83dDE2ZVJ1UXZXMVhHZDJkMlA4UVNIUUREYmRJSUkvOUNSM2xVRitsYnVjZkp5NFdmTVM2NEVKUE9SbnJaeHRmYzJwakpkbmJ1YWdzM2wwNFRUdEpNWHJkVHBoNFB5ZzRYQWp1Z0FKcU1EZjVSZitvWHgyL3FpNHU2bmlwYWtJaTdDc2dpdU1TRUY5SUdLZzhoZVFKS2t4SWZGU1VVL2VnV1N3TnJTMWZQRHRMZm9uOHNaT2NZVVFtbDFRdjlhM2tmd3NFVXlKRU1nRkJLemRWOG8zSXc5eUFqZzFqZExRQ1Y0cWJkM25vOHlEMkd1Z2FDM29NYkYwTllIQ3BKWVNEaE5JNU4yREFXQjRGNHo5QWovMDRDbmEveDdlVkFRMTd2UmpRWlBoK0cva2RkWXYwaDQ5eVk0TldORFdNTU9NVUlSWXZsVEVDbXJOOHBVQWpvNVJDTW44S29QbWJKLytBcHBnbmsvL1N5OTBHWUJDR2dtN0lBc2tRN0Q5aEZLVzRBcEIxZWkzRlNZRDlQakdBS3lnQVYrQVJGWUJINUJzVmdHOWtrQlNBUVdLVUZZQlJacGtVZ0dWaW5SV0FkVVpRREFCQlFkSWNBRWxEVkJVQVVVWFdIUUJaeDFnTUFHTXByTTBBc0xiVlhIc0E1dHJaZTkzL3dwM3N2UTBZTmIvaldWM0FJT0xzTXRsem5TTk9IN0pxak9wRFZoN3o4cUNaUjEwZnR2TzRueGVPdlBMa3BTdXZmWG54ekt0dlhyN2ordjhDNWlpMGU3MUF0N2NBQUFBQVNVVk9SSzVDWUlJPSkgbm8tcmVwZWF0IDUwJSA1MCU7YmFja2dyb3VuZC1zaXplOjg1JX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWljb24uaWNvLXdhcm5pbmd7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFUUFBQUJFQ0FNQUFBQVB6V09BQUFBQWtGQk1WRVVBQUFBQUFBQUJBQUlBQUFBQkFBSUFBQU1BQUFBQkFBSUJBQUlCQUFJQUFBSUFBQUFCQUFJQUFBQUJBQUlDQUFJQ0FBSUFBQUlBQUFBQUFBQUFBQUFCQUFJQkFBSUFBQU1BQUFBQkFBSUJBQU1CQUFFQ0FBSUFBQUlBQUFJQUFBQUJBQUlCQUFJQkFBTUJBQUlCQUFFQUFBSUFBQU1BQUFBQUFBQUJBQUVDQUFJQ0FBSUFBQUlBQUFNQUFBUUFBQUUwNXlOQUFBQUFMM1JTVGxNQUIra0Q3VjhRK1BYaWN3djdJOWlZaGtBekp4bngwMUlWNWNtbmsyeG1IZnpleHNLNGVFdzVMN0dlaTM5YVJ3NjQwYXdBQUFIUVNVUkJWRmpEN1pmSmRvSkFFRVdKZ0NpSTRvRGlQTThtNy8vL0xpZEVyUk83c0hyWTV1N1lYTHI3dktxdTlrVEMwSFBtbzluOGNKYkVRT3pxcUFkQVVIZVVaQUNRdVRrR0RRQm9ESndrSFpSMFhCejlGa3BhZlh1SFAwU0owOW1HZUpMWjV3d2xUbWNiQTBUSFBtZEVLN1hQR1RHMXp4bUlubjNPaUoxOXprQjBqU1ZUS0V4TUhUMHdqQXdsV3pDMGZTUEhGMWdXUnBJaFdNWW03ZllURmNRR2xiZW1mNGRGZmRUR2cwQi9LWE04cUJVLzN3bnRicTdyU0dxdko5a2xhNklwdWVGSmV0OGZ4ZmVtNXloeWtqeU9nTmFXRjFxU0dkNUpNTk54cE5GN1NaUWFWaDVKekxyVENaSUVKMUd5RXlWeWQrcENsTWpkYVNKSzVPNDBnaVNSdTVQZkZpVnlkMXBBa3NqZEtSbnJTc2JWZGJpSHJnVDd5c3MzMTVma1ZRUExGUXJMKzRGSGVPWEtPNVlSRkVLdjVBaUZhTWxLTGxCcEp1VkNKbEM1c0pmdkNnenRydS8zTm1CWWNjUGdHVHhSQXp4bjFYR0VNVWY1OHBYWnZqb09zT0NnakwwOCtiNTNtdGZBTS9TVnNaY2pLTHR5c1FaUHFJeTlIUFAzbS8zektJdFJ3VDBMeVFvOHNUcjI2dGNPODNESVVNV0lKamllckhMc0pkYS90Yk5CRlkwQlAvYkt0Y004SE5JV0NLM2FZUjRPTXpneG81dzVFRkxPTEtERXhYQW05Z0k0RTNpQU85NC9DdC9sS1d1TTJMTUdiZ0FBQUFCSlJVNUVya0pnZ2c9PSkgbm8tcmVwZWF0IDUwJSA1MCU7YmFja2dyb3VuZC1zaXplOjg1JX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWljb24uaWNvLWVycm9ye2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBTUFBQUNkdDRIc0FBQUFlRkJNVkVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZ5RWlJQUFBQUozUlNUbE1BM0JzQjk4UVY4dVN5V1ZVRno3K2tjV01NMkx1WmlvQnBUVVZCTmNxMnFhaWJqNGQxYXpMWlpZQUJBQUFDWkVsRVFWUll3N1dYMjVLQ01BeUdBeFVvRkRrcGlvaG5WOTcvRFhlR0J0b09VcHJaMmR5bzFLODJmeEtid0pKVnArS1FaN3NvMm1YNW9UaFZRTEt3akRlOVladTRERjNwdEFuNnJ4WTBxUVBPRXE5Zk5DOWhhM3k3N2EyMmJhMjR2KzlYYmU4djh4MDNkUE9DMi9OZHZCNnhlU3JlTGZHSnBueDBUeW90S3FMbTJzN0pkL1dPNml2WE5wMHRDeTAyUi9hRno1VlE1d1VQbFVMNWZJZmo1S0lsVkdVMG5XSG0vNVF0b1RWTVdZOG16SVZ1MUs5TzdYSDJKaVUveG5PT1QzOWduVWZqK2xGSGRkeDR0RmpMMy9IOGpqemFGQ3kyUmYwYy9mZFF5UXN6SThCRFI5NzNJeU1TS2E0a3JqeEFpVy9sa1J2TVArYktLOVdiWVMxQVNRZzhkS2phVUdsWVB3UmUvV29Ja3o4dGlRY2hINVFBRU12NlQwazhNRDRtVXlXcjRFN2pBV3FaK3hXY01JWWtYdmx3Z2dKM0l2Rksrd0lPY3BYQW84bjhQMENPQWFYeUtINE9zakJ1WkI0ZXcwSUd1K0gxU2ViaE5henNRQmJXbTh5aitoRnVVSkI1ZU1zTjBJVVhtWWVuZEFGRmZKQjV1RWtSTVl3eG1jZDZ6REdSdG1RZVBFeWtBZ3VieW1NUkZtTXhDU0lQQ1JiVHVGTk41T0dPUlRqbU5HYzBQbzBtOFV2MGdjQ3J5NnhVaFIyUWVMaWk5dG9mYkVmaHovcXZOdGkrT2ZQcU5tMk1xNjEwNUZVTXZkVDRHUG11Zk1pVjhQcUJNa2MrRGRUMWJqWVlianpVL2V3MjNWUDRuM21MQXo0bjhKdHYvVWkzY2VUVDJteno1bzFtWnQwZ25CcG1zZGpxUnFWbG1wbGNQZHFhN1gyM2tMOWJyZG0ydC91QllEUG4yK3R5dTQ4bXRJR0QxMEpUdVVydWtWcmJDRml3RHpjSHJQanhLdDdQVytBWlF5VC9XRVNPKzFXTDdmM28rV0xITDJkWU1TWnNnNmRnL3ozNjBvZnZQNC8vdjFOUHpnczI4V2xXQUFBQUFFbEZUa1N1UW1DQykgbm8tcmVwZWF0IDUwJSA1MCU7YmFja2dyb3VuZC1zaXplOjgwJX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWljb24uaWNvLXN1Y2Nlc3N7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQkFNQUFBQllSMnp0QUFBQUlWQk1WRVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnQwVWpCQUFBQUNuUlNUbE1BcEFQaElGbjgyd2dHdjhtVnR3QUFBS1ZKUkVGVVNNZnQwTEVKQWtFQVJORkZGRXcxTkZKYjhDS2pBeTFBRU96QXhOdytiRUVFZzZueUZqYlk0TE96Y0J3WDdTL2d3VXhvVGRJbitKYnY0THY4Yng0NDYra0I2VnNCdEswQit3Yk1DS3hyd0wzM3dPclZlZUNoWDI4bjdLVE9UamdvRXU2RFJTWUFnQUFBQWtBbUFJQUFBQUlBQ1FJa01rQUNBQWdBSUFDQXlFQ0JLQU9KdUNhZ1RKd1NVQ2FVQUVNQUFCRUJSd0FBRVFGTGJDSmdPNGJXK0FaS0dua3RSK2pBRkFBQUFBQkpSVTVFcmtKZ2dnPT0pIG5vLXJlcGVhdCA1MCUgNTAlO2JhY2tncm91bmQtc2l6ZTo4NSV9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1pY29uLmljby1xdWVzdGlvbntiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVFBQUFBQVlMbFZBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFBbUpMUjBRQUFLcU5JeklBQUFBSmNFaFpjd0FBRGRjQUFBM1hBVUlvbTNnQUFBQUhkRWxOUlFmaENRa1VFaEZvdnhUeEFBQUVEa2xFUVZSbzNzMlpUV2dUUVJUSGYwM2lwVFJVcWdoTlNnc1JqSGdRckZVUUM2SmdEMUthazNnUVVVb1BxUmRCZ2xmMW9CZWhCd3M5Q240Y0drKzFTT21oMnVwQnhBWVZvZUpIclI5dGdxMGkxQ3EwbHFZZWtzN01icFBkbVUwMC9jOGhtOW4zM3YvdDdOdDVNMitxTUVXUUkwUUlpYlpLUnJRcEh2TEwyS0kyd25RenpCS3JEbTJSSWVLRXkwMWRUWUtVSTdHMVpSa25RWFY1eVAxMGtUWWdseTFORi81UzZkdVo4RVMrMWlab2R5YW9jcmpYeEUwT0ZlaWZZWWdwMG1SSWt3RkNoQWtSSnNJeEdncklQK0kwbjgyZnZaVzVkYy96a3NzME8ybzFjNW1YNi9UbWFEV2w3N1JGZTVZa1VXM3RLRW15RnYwbE92WEovZlRZbm1DRUZ1TVJiR0hFWnFWSEx5VDlERmpVSm1rekpsOURHNU1XV3dNNkxsaWYvZ0YxbnVrQjZuaGdHd1VYZEZyRSt3aVVSQThRb005aTB6RVdXcFhRVytac3llUnJPTXV5RW81RnY0Z215NGRYUHZxY0MrcEgyVlJZYU13eStPV0craUxHQ2dtMFcwS3Y5SGR2UjhBU2ptS0NYcHVLL2J4aVYvNzZBL3Y1VWRESVp1S2NKR2pybmVjNUtaN3d3c1dGT3A2eFBYLzltdDJzcURlN0ZPK0tmL2ZYSEJQUERXcGRYR2hUcEx2VUc5Vkt3aDF4TUREamt2dStjTkRGQlRrN3B0WDFRa0taODUwbTNkdXU2ZmNyV3h3ZGFGRnlSRUoyajR2T3BLUDZEdTZ6NHVKQ3Y4c1lKSVZrQ25KQkdHWmFCT05PM3JvWTJFcU5yU2ZJUGk3U0tQNGZkWHlOVWQ2STZ3YlNBSEVsMzN0RkxlK0ZsU3N1c25LOTBBMCtvRVBjdXVmWmdYbk9pK3U5THJLU0pRWlF3Nkx3cUJudjJDS3NmSE9SYkZieVFoQTZ4Ti9wRXVpaFNkajU2Q283TFdSalBpS2llNmdrQjJMaUt1VXFLNWtpUGtMaXoxUUo5SzFjTlhCQU1vVUNpZ05wUTlJcUR0TUkxSEtBNC9qeXZVc2FvU3laTEE1a2pPakRQRlplbjhRbDVUc3ZCc2tVZ2pjaUlQU1gzUUFYQzg2RFQ3Vld2bEVoL3haK2lqOUJEVldKMFFMMFNiWnE2UWFGeG9MUGNYUG1CTHZlTENjNHdYZERLNnMrNi92d2hDU25pRkxQWFcwTkplNVVCOHpLQ3N2aXFwYzd2R1BWUUZjeVpieVB3R0QrZDVabnhtTldsaEc0eFNCWlpqaXZqSVdIRVFnb0RrU01qTXdUbzU0NTY5SlNFNUlwQTdFeUpTTVR5R1RVQVVGbE8xWktPdGFIVE1lTDFQaFlZRlRjaWhtWTJjUTUrdWxsajdFRGtpVmZWZXoyc0NUejh5aXY4NGRqaGc3SUpWazgxeEZXSmxQZGZIQkcwZmxrUkMvelFGWitEU2xsTnRmRGRVc09NQ2xpeUdYNXVPelUzWmhJWEZEb2Y0bTFnRHVLYkV4MHQyWVMyNWdWR3BjTW5yL0kxa3gzYzZwaUI4UDhab3FFd2ZNWDNaeUNYeW5KVG1xL1U3TlVYcWZVekNiV0wxd3FWS0JRVWVFU3pRWW9VbFc4VEFjVkwxUkN4VXUxRzZCWVhmRnlmUTRWUGJESTRUOGQyV3pnUTZzYy92bXhuVHNxZkhDWlF6VUp4bTFoNWR4UzVUdTZsUWdUWjBpcHFSVnFTd3pUYmJMSE10K2MxOWlPNzZ0c3gvY0xadWIrQWxpK3RZQzkzb2xFQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTNMVEE1TFRBNVZESXdPakU0T2pFM0t6QXlPakF3akt0ZmpnQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4Tnkwd09TMHdPVlF5TURveE9Eb3hOeXN3TWpvd01QMzI1eklBQUFBWmRFVllkRk52Wm5SM1lYSmxBSGQzZHk1cGJtdHpZMkZ3WlM1dmNtZWI3andhQUFBQUFFbEZUa1N1UW1DQykgbm8tcmVwZWF0IDUwJSA1MCU7YmFja2dyb3VuZC1zaXplOjg1JX0uaXppVG9hc3Q+Lml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LW1lc3NhZ2UsLml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC10aXRsZXtwYWRkaW5nOjA7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MTZweDt0ZXh0LWFsaWduOmxlZnQ7ZmxvYXQ6bGVmdDt3aGl0ZS1zcGFjZTpub3JtYWx9Lml6aVRvYXN0Pi5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC10aXRsZXtjb2xvcjojMDAwO21hcmdpbjowfS5pemlUb2FzdD4uaXppVG9hc3QtYm9keSAuaXppVG9hc3QtbWVzc2FnZXttYXJnaW46MCAwIDEwcHg7Y29sb3I6cmdiYSgwLDAsMCwuNil9Lml6aVRvYXN0Lml6aVRvYXN0LWFuaW1hdGVJbnNpZGUgLml6aVRvYXN0LWJ1dHRvbnMtY2hpbGQsLml6aVRvYXN0Lml6aVRvYXN0LWFuaW1hdGVJbnNpZGUgLml6aVRvYXN0LWljb24sLml6aVRvYXN0Lml6aVRvYXN0LWFuaW1hdGVJbnNpZGUgLml6aVRvYXN0LWlucHV0cy1jaGlsZCwuaXppVG9hc3QuaXppVG9hc3QtYW5pbWF0ZUluc2lkZSAuaXppVG9hc3QtbWVzc2FnZSwuaXppVG9hc3QuaXppVG9hc3QtYW5pbWF0ZUluc2lkZSAuaXppVG9hc3QtdGl0bGV7b3BhY2l0eTowfS5pemlUb2FzdC10YXJnZXR7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvfS5pemlUb2FzdC10YXJnZXQgLml6aVRvYXN0LWNhcHN1bGV7b3ZlcmZsb3c6aGlkZGVufS5pemlUb2FzdC10YXJnZXQgLml6aVRvYXN0LWNhcHN1bGU6YWZ0ZXJ7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTpibG9jaztmb250LXNpemU6MDtjb250ZW50OiIgIjtjbGVhcjpib3RoO2hlaWdodDowfS5pemlUb2FzdC10YXJnZXQgLml6aVRvYXN0LWNhcHN1bGUgLml6aVRvYXN0e3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdH0uaXppVG9hc3Qtd3JhcHBlcnt6LWluZGV4Ojk5OTk5O3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5pemlUb2FzdC13cmFwcGVyIC5pemlUb2FzdC5pemlUb2FzdC1iYWxsb29uOmJlZm9yZXtib3JkZXItcmlnaHQ6MCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDoxNXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6MTBweCBzb2xpZCAjMDAwO2JvcmRlci10b3AtY29sb3I6aW5oZXJpdDtyaWdodDo4cHg7bGVmdDphdXRvfS5pemlUb2FzdC13cmFwcGVyLWJvdHRvbUxlZnR7bGVmdDowO2JvdHRvbTowO3RleHQtYWxpZ246bGVmdH0uaXppVG9hc3Qtd3JhcHBlci1ib3R0b21MZWZ0IC5pemlUb2FzdC5pemlUb2FzdC1iYWxsb29uOmJlZm9yZSwuaXppVG9hc3Qtd3JhcHBlci10b3BMZWZ0IC5pemlUb2FzdC5pemlUb2FzdC1iYWxsb29uOmJlZm9yZXtib3JkZXItcmlnaHQ6MTVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDowIHNvbGlkIHRyYW5zcGFyZW50O3JpZ2h0OmF1dG87bGVmdDo4cHh9Lml6aVRvYXN0LXdyYXBwZXItYm90dG9tUmlnaHR7cmlnaHQ6MDtib3R0b206MDt0ZXh0LWFsaWduOnJpZ2h0fS5pemlUb2FzdC13cmFwcGVyLXRvcExlZnR7bGVmdDowO3RvcDowO3RleHQtYWxpZ246bGVmdH0uaXppVG9hc3Qtd3JhcHBlci10b3BSaWdodHt0b3A6MDtyaWdodDowO3RleHQtYWxpZ246cmlnaHR9Lml6aVRvYXN0LXdyYXBwZXItdG9wQ2VudGVye3RvcDowO2xlZnQ6MDtyaWdodDowO3RleHQtYWxpZ246Y2VudGVyfS5pemlUb2FzdC13cmFwcGVyLWJvdHRvbUNlbnRlciwuaXppVG9hc3Qtd3JhcHBlci1jZW50ZXJ7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7dGV4dC1hbGlnbjpjZW50ZXJ9Lml6aVRvYXN0LXdyYXBwZXItY2VudGVye3RvcDowO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1mbG93OmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9Lml6aVRvYXN0LXJ0bHtkaXJlY3Rpb246cnRsO3BhZGRpbmc6OHB4IDAgOXB4IDQ1cHg7Zm9udC1mYW1pbHk6VGFob21hLCdMYXRvJyxBcmlhbH0uaXppVG9hc3QtcnRsIC5pemlUb2FzdC1jb3ZlcntsZWZ0OmF1dG87cmlnaHQ6MH0uaXppVG9hc3QtcnRsIC5pemlUb2FzdC1jbG9zZXtyaWdodDphdXRvO2xlZnQ6MH0uaXppVG9hc3QtcnRsIC5pemlUb2FzdC1ib2R5e3BhZGRpbmc6MCAxMHB4IDAgMDttYXJnaW46MCAxNnB4IDAgMDt0ZXh0LWFsaWduOnJpZ2h0fS5pemlUb2FzdC1ydGwgLml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LWJ1dHRvbnMsLml6aVRvYXN0LXJ0bCAuaXppVG9hc3QtYm9keSAuaXppVG9hc3QtaW5wdXRzLC5pemlUb2FzdC1ydGwgLml6aVRvYXN0LWJvZHkgLml6aVRvYXN0LW1lc3NhZ2UsLml6aVRvYXN0LXJ0bCAuaXppVG9hc3QtYm9keSAuaXppVG9hc3QtdGV4dHMsLml6aVRvYXN0LXJ0bCAuaXppVG9hc3QtYm9keSAuaXppVG9hc3QtdGl0bGV7ZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodH0uaXppVG9hc3QtcnRsIC5pemlUb2FzdC1ib2R5IC5pemlUb2FzdC1pY29ue2xlZnQ6YXV0bztyaWdodDowfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo1NjhweCl7Lml6aVRvYXN0LXdyYXBwZXJ7cGFkZGluZzoxMHB4IDE1cHh9Lml6aVRvYXN0e21hcmdpbjo1cHggMDtib3JkZXItcmFkaXVzOjNweDt3aWR0aDphdXRvfS5pemlUb2FzdDphZnRlcntjb250ZW50OicnO3otaW5kZXg6LTE7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzppbnNldCAwIC0xMHB4IDIwcHggLTEwcHggcmdiYSgwLDAsMCwuMiksaW5zZXQgMCAwIDVweCByZ2JhKDAsMCwwLC4xKSwwIDhweCA4cHggLTVweCByZ2JhKDAsMCwwLC4yNSl9Lml6aVRvYXN0Om5vdCguaXppVG9hc3QtcnRsKSAuaXppVG9hc3QtY292ZXJ7Ym9yZGVyLXJhZGl1czozcHggMCAwIDNweH0uaXppVG9hc3QuaXppVG9hc3QtcnRsIC5pemlUb2FzdC1jb3Zlcntib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwfS5pemlUb2FzdC5pemlUb2FzdC1jb2xvci1kYXJrOmFmdGVye2JveC1zaGFkb3c6aW5zZXQgMCAtMTBweCAyMHB4IC0xMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpLDAgMTBweCAxMHB4IC01cHggcmdiYSgwLDAsMCwuMjUpfS5pemlUb2FzdC5pemlUb2FzdC1iYWxsb29uIC5pemlUb2FzdC1wcm9ncmVzc2JhcntiYWNrZ3JvdW5kOjAgMH0uaXppVG9hc3QuaXppVG9hc3QtYmFsbG9vbjphZnRlcntib3gtc2hhZG93OjAgMTBweCAxMHB4IC01cHggcmdiYSgwLDAsMCwuMjUpLGluc2V0IDAgMTBweCAyMHB4IC01cHggcmdiYSgwLDAsMCwuMjUpfS5pemlUb2FzdC10YXJnZXQgLml6aVRvYXN0OmFmdGVye2JveC1zaGFkb3c6aW5zZXQgMCAtMTBweCAyMHB4IC0xMHB4IHJnYmEoMCwwLDAsLjIpLGluc2V0IDAgMCA1cHggcmdiYSgwLDAsMCwuMSl9fS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJre2JhY2tncm91bmQ6IzU2NWM3MDtib3JkZXItY29sb3I6IzU2NWM3MH0uaXppVG9hc3QuaXppVG9hc3QtdGhlbWUtZGFyayAuaXppVG9hc3QtdGl0bGV7Y29sb3I6I2ZmZn0uaXppVG9hc3QuaXppVG9hc3QtdGhlbWUtZGFyayAuaXppVG9hc3QtbWVzc2FnZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtmb250LXdlaWdodDozMDB9Lml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWNsb3Nle2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBUUFBQURaYzdKL0FBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUFtSkxSMFFBQUtxTkl6SUFBQUFKY0VoWmN3QUFEZGNBQUEzWEFVSW9tM2dBQUFBSGRFbE5SUWZnQ1I0T0lRSVBTYW82QUFBQXdFbEVRVlJJeDcyVlVRNkVJQXdGbXoyWEIrQUNvbmhqenFUSjdKZUdLaExZbHl4L0JHZG9CVnBqSXBNSk5qZ0laREtUa1FIWW1ZZndtUjJBZkFxR0ZCY08yUWpYWkNkMjRiRWdndmQxS0J4K3hsd29EcFltdm5CVVV5NjhEWVhENzdFU3I4V0R0WXF2eFJleDdhOG9IUDRXbzFNa3Q1STY4TWMrcVlxdjFoNU9zWm1ac1EzZ2ovMDJoNmNPL0tFWXgyOWh1M1IrVlRUd3o2RDNUeW1JUDFFOFJ2RWlpVmRaZkV6aWN4WUxpbGpTeEtJcWxuVzVzZWl0VFc2dVludi9BcWg0d2hYM21FVXJBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFMkxUQTVMVE13VkRFME9qTXpPakF5S3pBeU9qQXdsNlJNVmdBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhOaTB3T1Mwek1GUXhORG96TXpvd01pc3dNam93TU9iNTlPb0FBQUFaZEVWWWRGTnZablIzWVhKbEFIZDNkeTVwYm10elkyRndaUzV2Y21lYjdqd2FBQUFBQUVsRlRrU3VRbUNDKSBuby1yZXBlYXQgNTAlIDUwJTtiYWNrZ3JvdW5kLXNpemU6OHB4fS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1pY29ue2NvbG9yOiNmZmZ9Lml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWljb24uaWNvLWluZm97YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FNQUFBQ2R0NEhzQUFBQWZsQk1WRVVBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy92cm9hU0FBQUFLWFJTVGxNQTZQc0l2RG9iK09hcGF2VmhXUllQcklyeTJNeEdROTdjenNPenBKYU1jRTBxSlFPd1Z0S2pmeENWRmVJQUFBSTNTVVJCVkZqRGxKUFpzb0l3RUVUbkNpR3liOHErcW1qbC8zL3dGbUdLd2pCUk9TOVFXYnRuT3FEREdQcTRNZE1rU2MwbTdnY0REaEY0TlJkdjhOb0w0RWNNcHpvSmdsUGwvS1REejRXVzNJZHZYRXZ4a2ZJS243Qk1aYjFiRks0eVpGcWdoWjAzamswbkc4TjVOQnd6eDl4VTVjeEFnOGZYaTIwL2hEZEMzMTZsY0E4bzd0MTZlUnVRdlcxWEdkMmQyUDhRU0hRRERiZElJSS85Q1IzbFVGK2xidWNmSnk0V2ZNUzY0RUpQT1Juclp4dGZjMnBqSmRuYnVhZ3MzbDA0VFR0Sk1YcmRUcGg0UHlnNFhBanVnQUpxTURmNVJmK29YeDIvcWk0dTZuaXBha0lpN0NzZ2l1TVNFRjlJR0tnOGhlUUpLa3hJZkZTVVUvZWdXU3dOclMxZlBEdExmb244c1pPY1lVUW1sMVF2OWEza2Z3c0VVeUpFTWdGQkt6ZFY4bzNJdzl5QWpnMWpkTFFDVjRxYmQzbm84eUQyR3VnYUMzb01iRjBOWUhDcEpZU0RoTkk1TjJEQVdCNEY0ejlBai8wNENuYS94N2VWQVExN3ZSalFaUGgrRy9rZGRZdjBoNDl5WTROV05EV01NT01VSVJZdmxURUNtck44cFVBam81UkNNbjhLb1BtYkovK0FwcGduay8vU3k5MEdZQkNHZ203SUFza1E3RDloRktXNEFwQjFlaTNGU1lEOVBqR0FLeWdBVitBUkZZQkg1QnNWZ0c5a2tCU0FRV0tVRllCUlpwa1VnR1ZpblJXQWRVWlFEQUJCUWRJY0FFbERWQlVBVVVYV0hRQlp4MWdNQUdNcHJNMEFzTGJWWEhzQTV0clplOTMvd3Azc3ZRMFlOYi9qV1YzQUlPTHNNdGx6blNOT0g3SnFqT3BEVmg3ejhxQ1pSMTBmdHZPNG54ZU92UExrcFN1dmZYbnh6S3R2WHI3ait2OEM1aWkwZTcxQXQ3Y0FBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgNTAlIDUwJTtiYWNrZ3JvdW5kLXNpemU6ODUlfS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1pY29uLmljby13YXJuaW5ne2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRVFBQUFCRUNBTUFBQUFQeldPQUFBQUFsbEJNVkVVQUFBRC8vLy8rLy8zKy8vMysvLzMvLy8vLy8veisvLzMrLy8zKy8vMy8vLy8vLy8vLy8vLzkvLzMvLy8vKy8vMzkvLzMvLy8zLy8vLy8vLy8vLy8vKy8vMysvLzM5Ly8zLy8veisvL3orLy83Ly8vMy8vLzMvLy8zLy8vMy8vLy8vLy8vKy8vMysvLzMrLy8zKy8veisvLzMrLy83Ly8vMy8vL3ovLy8vLy8vLysvLzc5Ly8zLy8vMy8vL3ovLy92Ky8vMy8vLyt0clhvdUFBQUFNSFJTVGxNQUIrajg3UkJmK1BYaUN3UUNsU1BZaGtBekp4bngwNXRTeWFkemNteG1IUmJwNWQ3R3dyaDRURGt2c1l0L1drZFF6Q0lUQUFBQjFVbEVRVlJZdyszWGFYS0NRQkNHWVNJSWlnaG94Q1ZxTkpyRVBmbHkvOHZGSW1LWGR1TnNmL01jNEsxeTdGbndsTUxRYy9iVWJqODVSNmJBMUxYUkRJQ2c2UmpKY1phN05RWXRuTFVHVHBFUlNpT1h4ck9Qa3Y5czMwaUdLRG10YllpcjNIN09VSEphMnlsQXV2WnpSdnpVZnM3SWkvMmNnZlR0NTR4ODJzOFpTTTg0OGdKbVl0cm9RekEyakh3QStMa0JJRXVNR3QrUUluZzFpZ3pseU1ya3VQMkN5T2k0N2F4UmFZVEw1amhESmVob1IrYW92QzI5czNpSXlseTNFYitoUkN2Wm8ycXNHVG5oS3IyY0xEUytKNzNHc3FCSTlXODBVQ21XV3BFdWhJamg2WlJHanlOUmFyanpLR0oyT3UyaGltQ3ZqSHdxSStyVHFRZGxSSDA2VFpRUjllazBoaXFpUHAwNm1WNGtlN1FQWDZFUlVaeE84VW8zc3FyZmh4dm9SckNwdlh3TC9ValI5R1JITUl2TGdrZTRkNVFiaXdoTTZKVjJZS0tGNHZJbDdYSUJrd200a2VyeUpWbXZrL1Rmd2NtUHdRTmtVUXV5QTIvc1lHd25YTDdHUHU0YlcxallzbWV2ck5qMDkvTUdaTU9FUFhzbFFWcU84aHF5a0QxN0pmUEhQL2JtbzJ5R0dwZFppSDNJWnZ6WmE3QjMrSWREampwamVzSEpjdmJzNWRaL2UrY2RkVm9EZHZscTd4MTJOYWMraU43ZTRSOE9YVGpwMHB3NUNHbk9MTkRFemVCczVnVndGbmlBTys4Zjh3dmZlWFAyaHlxbm13QUFBQUJKUlU1RXJrSmdnZz09KSBuby1yZXBlYXQgNTAlIDUwJTtiYWNrZ3JvdW5kLXNpemU6ODUlfS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1pY29uLmljby1lcnJvcntiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQU1BQUFDZHQ0SHNBQUFBZUZCTVZFVUFBQUQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9HcU9Tc0FBQUFKM1JTVGxNQTNCc0I5OFFWOHVTeVdWVUZ6NlJ4WXd6WXZidXBtWXFBYVUxRlFUWEt2N2FiajRkMWF6S05VaXQzQUFBQ1pFbEVRVlJZdzdXWGFaT0NNQXlHdzMwVU9SUlFCTHhYL3Y4LzNCa2FXanJZMnN6TzVvdEtmR3J6SnJFcDZLdzZGOGY4c0kraS9TRS9GdWNLU0JhV2lUOHA1aWRsYUV0blhUQjl0S0RMTEhBdmRTYXRPYW4zamU5M2s5RjJ2UkYzNittcjFhNmVIMk5GTnlkb0hxL2llVS9VWGNXamprOVh5a2ROV3EyeXd0cDR0WEw2V2IyVC9NcXR6elp1dHNyTnlmdkE1MUtvUVJPaFZDamZybkFTSVJwU1ZVWmlENXY0UmJXRXhqUmRKelNtT3NaRnZ6WXo1OWtSU3I2VjV6RSsvUUVMSGtOZGIzVlJ4NDVIUzFiMXUremZra2NiUkFaM3FKOWwvQTRxZWZIVURNU2hKZSs2a1pLSkREMnBMUTlRNGx1KzVRN3J6N1BscGVyZDdBdFFFZ0lQSTZvMmR4cjJENEdYdnhxQ2lLY244Y0Q0Z3hJQUV0Ny9HWWtITDE2S3FlSmQwTkI0Z0piWGZnVm56Q0dKbHpHY29jQ1ZTTHpVdm9Bajl4SjRORjcvUjhneG9WUWV4Yy9oZ0JwU2VialBqZ1BzNTljSG1ZZm43TmtEYjZ3WG1VZjFJMXlnSVBQdzRndGdDRTh5RHc4ZUFvcDRKL1BRY0JFeGpRbVp4MzdNc1pCMlpCNGNMS1FDRzV2S1l4TVdTek14SWc4cE50T3lVa3Zrb2NFbVhHbzY5bWg4RmdueFM0eUJ3TXZEckpTTkhaQjR1QzNheXovWWtjSVA0bGZsd1ZJVCtPVTA3WlNqcmJUa1pRNmRUUGtZdWJaOEdDL0NxeHU2V3ZKWklJOTNkY0N3NDZHZE5xZHBUZUYvdGlNT3VER0I5ei9OSTZOdnlXZXRHUE0wZytiVk5lb3ZCbWFtSFhXajBuQ2JFYUdlVE1OMlBXcnFkNmNNMjZaeFAyRGVKdmorcGgvMzBaaS9HbVJidGxLNVNwdEkrbndHR252SDZnVXJ1VCtMMTZNSkhGKzU4cndOSWlmVFYwdk04K2h3TWVPWEFiNll4MHdYVCtiOTk5V1hmdm4rOC9YL0Y3Zld6amRUb3JkNUFBQUFBRWxGVGtTdVFtQ0MpIG5vLXJlcGVhdCA1MCUgNTAlO2JhY2tncm91bmQtc2l6ZTo4MCV9Lml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWljb24uaWNvLXN1Y2Nlc3N7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQkFNQUFBQllSMnp0QUFBQUlWQk1WRVVBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1BJZXY1QUFBQUNuUlNUbE1BcEFQaElGbjgyd2dHdjhtVnR3QUFBS1ZKUkVGVVNNZnQwTEVKQWtFQVJORkZGRXcxTkZKYjhDS2pBeTFBRU96QXhOdytiRUVFZzZueUZqYlk0TE96Y0J3WDdTL2d3VXhvVGRJbitKYnY0THY4Yng0NDYra0I2VnNCdEswQit3Yk1DS3hyd0wzM3dPclZlZUNoWDI4bjdLVE9UamdvRXU2RFJTWUFnQUFBQWtBbUFJQUFBQUlBQ1FJa01rQUNBQWdBSUFDQXlFQ0JLQU9KdUNhZ1RKd1NVQ2FVQUVNQUFCRUJSd0FBRVFGTGJDSmdPNGJXK0FaS0dua3RSK2pBRkFBQUFBQkpSVTVFcmtKZ2dnPT0pIG5vLXJlcGVhdCA1MCUgNTAlO2JhY2tncm91bmQtc2l6ZTo4NSV9Lml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWljb24uaWNvLXF1ZXN0aW9ue2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBUUFBQUFBWUxsVkFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUFtSkxSMFFBQUtxTkl6SUFBQUFKY0VoWmN3QUFEZGNBQUEzWEFVSW9tM2dBQUFBSGRFbE5SUWZoQ1FrVUVnMTh2a2krQUFBRVRVbEVRVlJvM3MxWlRXaGJSeEQrVmxJdXhzTEZDWVZJSVFZVm9wQkRvSzViS0RXVUJ1cERNTmJKNUZCS2cvRkJ6aVVRZEU5eWFDK0ZIQnJ3c2RDZlE5UlRHb0x4d1dsK0RxSEVvalVGRnlkeG5COWJJblpEcU9zRXJCcnI2eUd2cy91ZVg5N2JsZFRLbzRQZTdwdVpiM1ozM3M3c3JJSWpNWTFqeUNFalA2SW12eVg4cEY2NGFyU0h6bktDMDZ3emlqWTV4U0t6N1lidVlva1YybE9Ec3l5eHF6M2dTWTZ6NmdDdXFjcHhKbHVGSCtaOFUrRC8wanlIb3hGVUJIZ2Z2c0dISVM5V01JVWxWRkZERlRVQUdXU1JRUlk1SE1lQkVQNmIrRXc5ZGgvN0lOZDJqR2VPNTlrZktkWFA4NXpiSWJmR1FWZjRzWUMzTjFobTNsbzZ6ekliUHZrNngrekJrN3dRR01FTUI1eG5jSUF6QVMwWHJGeVNTVjcyaVMxeXlCVmNkQTF4MGFmcnNvVUpnZEZmWTIrejhBREFYbDd6ejBLY3dKaVBmWktwVnVBQmdDbE8rblJHK1FJSERkZmI0cWxXd1VYdktXNFo3dmk2TDRKOXZnK3ZiZkNlQ2VaSDJSZk9kTU9jL0hiQ0E0QnZJVzZFTVF6N1hLL2x0ZCtoUCtWelI5bWd2YTJZU2Z5R0kxN2ZBN3lubm9jcWVRTkZmSUowb0hzZHY2Q0MyK3JYR0JONmNRZHZlWTNmY1ZSdG15L0hEZXRlKzkzenk4akE4elY3WWt3WU1yakh6UmRkUnNDZGlWQ3d3bWg2d2c5aVROQzdZOVhJRjFpUzdrYlVwc3Z2R0VkUHVUZlNnQUVqUnBSMDk2eDBsaVBGRC9FcXQyTk11QlF6QjJYaHJBQ0FBcGpGc3VRRmg5WGRHQVg3MEIzb1N1TmRuTVZCYVgrc29wWXhqd1ZwSEZCVkFDeUtUWE5va3RqRCs2TGw4eGhlblM5TUFBa0FJL0x1eDJZTlVPczRJNDEzWXBnMVNnRUF1N2twRnZXamFlSmUwZkpIREdlL2NOYVpCa2VrdWR3OFBNQSswZk13bG5kWmVBc0o1S1IvcWhVRFVKQ25TaXl2UnNvbGtKSEdVZ3ZqSDhRWERnWm9wRXpLTUtEcUNLcndFUTRDNk1IN0dFWEM2NjVidUxKRzhobFFjNExQNHBheGZKck9xWVZZWVkyVUFSZkVJYXpUYmdEZzJkQjk4R2ViekpkNTRiOEwvaVdOZEx5b29lUjZDSHlaKzZ4azB5S3hrWWc2bkVWU1VHNFZKOVFKOWN4UkN4Tys5V2lPeXZnVWVleFhQMWhMR0g1bkd1QldWdGlTcDR2cWUzVlAwVUZXSTlXYW40RXIzdjhxN2pqUFdWdG00RnRjUVFNck9LTzJuT1FDTTVBeURNaTU2RkRyS0hBLzFueXBwUzFwcEJwWWFFOHdjaUVqR0kyQWFlTTQxa0k0ZG9EWDRYaVQzUW0xZ2V2eXJ1Q2daZzlQOHhJdjhtMW5DelRLcTZvaUo5eFRNaVo1MDVQNW04Y2RaMENuWk1WWEhWbGpNN1dNQnp4cHlEeHlndGR4b0NFRlRhTUlXYlpVODVVdkJqZ1VNWXkwZkJhQUY4VjFMajlxV1ExYU1aNWY0azlyK0FHTVNrTVAxdlpvWmloNms2c2ljYzVoL09GSE05dkRxVS9WSVU3ekpaZFlZc0tHSDRnNG5BSk1HaVhaUmRzMXBWTW9aNjlSTTV2ZmtiaDBxa0Joc25TMlJMTUxpbFFkTDlNQkhTOVVBaDB2MWU2Q1luWEh5L1dlZUNjdkxEd2wvOU9WemU2OXRQS00rTSt2N2VKTjZPekZwV2RFRjB1Y0RiaFZORlhhZG5Wcm1KRmxrVk5HVFMyTTZwem1oTXZsdGZQaG5OMkI2M3NWdUw3ZmNOUDNEMVRTazJpaG9zUHJBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFM0xUQTVMVEE1VkRJd09qRTRPakV6S3pBeU9qQXdlT1I3blFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhOeTB3T1Mwd09WUXlNRG94T0RveE15c3dNam93TUFtNXd5RUFBQUFaZEVWWWRGTnZablIzWVhKbEFIZDNkeTVwYm10elkyRndaUzV2Y21lYjdqd2FBQUFBQUVsRlRrU3VRbUNDKSBuby1yZXBlYXQgNTAlIDUwJTtiYWNrZ3JvdW5kLXNpemU6ODUlfS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1idXR0b25zPmEsLml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWJ1dHRvbnM+YnV0dG9uLC5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1idXR0b25zPmlucHV0e2NvbG9yOiNmZmY7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0uaXppVG9hc3QuaXppVG9hc3QtdGhlbWUtZGFyayAuaXppVG9hc3QtYnV0dG9ucz5hOmhvdmVyLC5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1idXR0b25zPmJ1dHRvbjpob3ZlciwuaXppVG9hc3QuaXppVG9hc3QtdGhlbWUtZGFyayAuaXppVG9hc3QtYnV0dG9ucz5pbnB1dDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjIpfS5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1idXR0b25zPmE6Zm9jdXMsLml6aVRvYXN0Lml6aVRvYXN0LXRoZW1lLWRhcmsgLml6aVRvYXN0LWJ1dHRvbnM+YnV0dG9uOmZvY3VzLC5pemlUb2FzdC5pemlUb2FzdC10aGVtZS1kYXJrIC5pemlUb2FzdC1idXR0b25zPmlucHV0OmZvY3Vze2JveC1zaGFkb3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjYpfS5pemlUb2FzdC5pemlUb2FzdC1jb2xvci1yZWR7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNzUsMTgwLC45KTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTc1LDE4MCwuOSl9Lml6aVRvYXN0Lml6aVRvYXN0LWNvbG9yLW9yYW5nZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDIwNywxNjUsLjkpO2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyMDcsMTY1LC45KX0uaXppVG9hc3QuaXppVG9hc3QtY29sb3IteWVsbG93e2JhY2tncm91bmQ6cmdiYSgyNTUsMjQ5LDE3OCwuOSk7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI0OSwxNzgsLjkpfS5pemlUb2FzdC5pemlUb2FzdC1jb2xvci1ibHVle2JhY2tncm91bmQ6cmdiYSgxNTcsMjIyLDI1NSwuOSk7Ym9yZGVyLWNvbG9yOnJnYmEoMTU3LDIyMiwyNTUsLjkpfS5pemlUb2FzdC5pemlUb2FzdC1jb2xvci1ncmVlbntiYWNrZ3JvdW5kOnJnYmEoMTY2LDIzOSwxODQsLjkpO2JvcmRlci1jb2xvcjpyZ2JhKDE2NiwyMzksMTg0LC45KX0uaXppVG9hc3QuaXppVG9hc3QtbGF5b3V0MiAuaXppVG9hc3QtYm9keSAuaXppVG9hc3QtbWVzc2FnZSwuaXppVG9hc3QuaXppVG9hc3QtbGF5b3V0MiAuaXppVG9hc3QtYm9keSAuaXppVG9hc3QtdGV4dHN7d2lkdGg6MTAwJX0uaXppVG9hc3QuaXppVG9hc3QtbGF5b3V0M3tib3JkZXItcmFkaXVzOjJweH0uaXppVG9hc3QuaXppVG9hc3QtbGF5b3V0Mzo6YWZ0ZXJ7ZGlzcGxheTpub25lfS5pemlUb2FzdCAucmV2ZWFsSW4sLml6aVRvYXN0LnJldmVhbEluey13ZWJraXQtYW5pbWF0aW9uOml6aVQtcmV2ZWFsSW4gMXMgY3ViaWMtYmV6aWVyKC4yNSwxLjYsLjI1LDEpIGJvdGg7LW1vei1hbmltYXRpb246aXppVC1yZXZlYWxJbiAxcyBjdWJpYy1iZXppZXIoLjI1LDEuNiwuMjUsMSkgYm90aDthbmltYXRpb246aXppVC1yZXZlYWxJbiAxcyBjdWJpYy1iZXppZXIoLjI1LDEuNiwuMjUsMSkgYm90aH0uaXppVG9hc3QgLnNsaWRlSW4sLml6aVRvYXN0LnNsaWRlSW57LXdlYmtpdC1hbmltYXRpb246aXppVC1zbGlkZUluIDFzIGN1YmljLWJlemllciguMTYsLjgxLC4zMiwxKSBib3RoOy1tb3otYW5pbWF0aW9uOml6aVQtc2xpZGVJbiAxcyBjdWJpYy1iZXppZXIoLjE2LC44MSwuMzIsMSkgYm90aDthbmltYXRpb246aXppVC1zbGlkZUluIDFzIGN1YmljLWJlemllciguMTYsLjgxLC4zMiwxKSBib3RofS5pemlUb2FzdC5ib3VuY2VJbkxlZnR7LXdlYmtpdC1hbmltYXRpb246aXppVC1ib3VuY2VJbkxlZnQgLjdzIGVhc2UtaW4tb3V0IGJvdGg7YW5pbWF0aW9uOml6aVQtYm91bmNlSW5MZWZ0IC43cyBlYXNlLWluLW91dCBib3RofS5pemlUb2FzdC5ib3VuY2VJblJpZ2h0ey13ZWJraXQtYW5pbWF0aW9uOml6aVQtYm91bmNlSW5SaWdodCAuODVzIGVhc2UtaW4tb3V0IGJvdGg7YW5pbWF0aW9uOml6aVQtYm91bmNlSW5SaWdodCAuODVzIGVhc2UtaW4tb3V0IGJvdGh9Lml6aVRvYXN0LmJvdW5jZUluRG93bnstd2Via2l0LWFuaW1hdGlvbjppemlULWJvdW5jZUluRG93biAuN3MgZWFzZS1pbi1vdXQgYm90aDthbmltYXRpb246aXppVC1ib3VuY2VJbkRvd24gLjdzIGVhc2UtaW4tb3V0IGJvdGh9Lml6aVRvYXN0LmJvdW5jZUluVXB7LXdlYmtpdC1hbmltYXRpb246aXppVC1ib3VuY2VJblVwIC43cyBlYXNlLWluLW91dCBib3RoO2FuaW1hdGlvbjppemlULWJvdW5jZUluVXAgLjdzIGVhc2UtaW4tb3V0IGJvdGh9Lml6aVRvYXN0IC5mYWRlSW4sLml6aVRvYXN0LmZhZGVJbnstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVJbiAuNXMgZWFzZSBib3RoO2FuaW1hdGlvbjppemlULWZhZGVJbiAuNXMgZWFzZSBib3RofS5pemlUb2FzdC5mYWRlSW5VcHstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVJblVwIC43cyBlYXNlIGJvdGg7YW5pbWF0aW9uOml6aVQtZmFkZUluVXAgLjdzIGVhc2UgYm90aH0uaXppVG9hc3QuZmFkZUluRG93bnstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVJbkRvd24gLjdzIGVhc2UgYm90aDthbmltYXRpb246aXppVC1mYWRlSW5Eb3duIC43cyBlYXNlIGJvdGh9Lml6aVRvYXN0LmZhZGVJbkxlZnR7LXdlYmtpdC1hbmltYXRpb246aXppVC1mYWRlSW5MZWZ0IC44NXMgY3ViaWMtYmV6aWVyKC4yNSwuOCwuMjUsMSkgYm90aDthbmltYXRpb246aXppVC1mYWRlSW5MZWZ0IC44NXMgY3ViaWMtYmV6aWVyKC4yNSwuOCwuMjUsMSkgYm90aH0uaXppVG9hc3QuZmFkZUluUmlnaHR7LXdlYmtpdC1hbmltYXRpb246aXppVC1mYWRlSW5SaWdodCAuODVzIGN1YmljLWJlemllciguMjUsLjgsLjI1LDEpIGJvdGg7YW5pbWF0aW9uOml6aVQtZmFkZUluUmlnaHQgLjg1cyBjdWJpYy1iZXppZXIoLjI1LC44LC4yNSwxKSBib3RofS5pemlUb2FzdC5mbGlwSW5Yey13ZWJraXQtYW5pbWF0aW9uOml6aVQtZmxpcEluWCAuODVzIGN1YmljLWJlemllciguMzUsMCwuMjUsMSkgYm90aDthbmltYXRpb246aXppVC1mbGlwSW5YIC44NXMgY3ViaWMtYmV6aWVyKC4zNSwwLC4yNSwxKSBib3RofS5pemlUb2FzdC5mYWRlT3V0ey13ZWJraXQtYW5pbWF0aW9uOml6aVQtZmFkZU91dCAuN3MgZWFzZSBib3RoO2FuaW1hdGlvbjppemlULWZhZGVPdXQgLjdzIGVhc2UgYm90aH0uaXppVG9hc3QuZmFkZU91dERvd257LXdlYmtpdC1hbmltYXRpb246aXppVC1mYWRlT3V0RG93biAuN3MgY3ViaWMtYmV6aWVyKC40LC40NSwuMTUsLjkxKSBib3RoO2FuaW1hdGlvbjppemlULWZhZGVPdXREb3duIC43cyBjdWJpYy1iZXppZXIoLjQsLjQ1LC4xNSwuOTEpIGJvdGh9Lml6aVRvYXN0LmZhZGVPdXRVcHstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVPdXRVcCAuN3MgY3ViaWMtYmV6aWVyKC40LC40NSwuMTUsLjkxKSBib3RoO2FuaW1hdGlvbjppemlULWZhZGVPdXRVcCAuN3MgY3ViaWMtYmV6aWVyKC40LC40NSwuMTUsLjkxKSBib3RofS5pemlUb2FzdC5mYWRlT3V0TGVmdHstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVPdXRMZWZ0IC41cyBlYXNlIGJvdGg7YW5pbWF0aW9uOml6aVQtZmFkZU91dExlZnQgLjVzIGVhc2UgYm90aH0uaXppVG9hc3QuZmFkZU91dFJpZ2h0ey13ZWJraXQtYW5pbWF0aW9uOml6aVQtZmFkZU91dFJpZ2h0IC41cyBlYXNlIGJvdGg7YW5pbWF0aW9uOml6aVQtZmFkZU91dFJpZ2h0IC41cyBlYXNlIGJvdGh9Lml6aVRvYXN0LmZsaXBPdXRYey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDtiYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50Oy13ZWJraXQtYW5pbWF0aW9uOml6aVQtZmxpcE91dFggLjdzIGN1YmljLWJlemllciguNCwuNDUsLjE1LC45MSkgYm90aDthbmltYXRpb246aXppVC1mbGlwT3V0WCAuN3MgY3ViaWMtYmV6aWVyKC40LC40NSwuMTUsLjkxKSBib3RofS5pemlUb2FzdC1vdmVybGF5LmZhZGVJbnstd2Via2l0LWFuaW1hdGlvbjppemlULWZhZGVJbiAuNXMgZWFzZSBib3RoO2FuaW1hdGlvbjppemlULWZhZGVJbiAuNXMgZWFzZSBib3RofS5pemlUb2FzdC1vdmVybGF5LmZhZGVPdXR7LXdlYmtpdC1hbmltYXRpb246aXppVC1mYWRlT3V0IC43cyBlYXNlIGJvdGg7YW5pbWF0aW9uOml6aVQtZmFkZU91dCAuN3MgZWFzZSBib3RofUAtd2Via2l0LWtleWZyYW1lcyBpemlULXJldmVhbEluezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC4zLC4zLDEpfXRve29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtcmV2ZWFsSW57MCV7b3BhY2l0eTowOy1tb3otdHJhbnNmb3JtOnNjYWxlM2QoLjMsLjMsMSl9dG97b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1zbGlkZUluezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1ALW1vei1rZXlmcmFtZXMgaXppVC1zbGlkZUluezAle29wYWNpdHk6MDstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfXRve29wYWNpdHk6MTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1ib3VuY2VJbkxlZnR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjgwcHgpfTUwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMjBweCl9NzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5SaWdodHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMjgwcHgpfTUwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgyMHB4KX03MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTBweCl9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5Eb3duezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0yMDBweCl9NTAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpfTcwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01cHgpfXRvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWJvdW5jZUluVXB7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjAwcHgpfTUwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9NzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoNXB4KX10b3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW57MCV7b3BhY2l0eTowfXRve29wYWNpdHk6MX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtZmFkZUluVXB7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW5Eb3duezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW5MZWZ0ezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgzMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgzMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW5SaWdodHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTMwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0zMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mbGlwSW5YezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7b3BhY2l0eTowfTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyl9NjAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwxMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwxMGRlZyk7b3BhY2l0eToxfTgwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTVkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTVkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlT3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVPdXREb3duezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVPdXRVcHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVPdXRMZWZ0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTIwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDBweCwwLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlT3V0UmlnaHR7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mbGlwT3V0WHswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpO29wYWNpdHk6MX10b3std2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO29wYWNpdHk6MH19QC1tb3ota2V5ZnJhbWVzIGl6aVQtcmV2ZWFsSW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZTNkKC4zLC4zLDEpfXRve29wYWNpdHk6MX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtcmV2ZWFsSW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZTNkKC4zLC4zLDEpfXRve29wYWNpdHk6MX19QC1vLWtleWZyYW1lcyBpemlULXJldmVhbEluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUzZCguMywuMywxKX10b3tvcGFjaXR5OjF9fUBrZXlmcmFtZXMgaXppVC1yZXZlYWxJbnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlM2QoLjMsLjMsMSl9dG97b3BhY2l0eToxfX1ALW1vei1rZXlmcmFtZXMgaXppVC1zbGlkZUluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCg1MHB4KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULXNsaWRlSW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC1vLWtleWZyYW1lcyBpemlULXNsaWRlSW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyBpemlULXNsaWRlSW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwcHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5MZWZ0ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyODBweCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMjBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwcHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1ib3VuY2VJbkxlZnR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI4MHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUAtby1rZXlmcmFtZXMgaXppVC1ib3VuY2VJbkxlZnR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI4MHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUBrZXlmcmFtZXMgaXppVC1ib3VuY2VJbkxlZnR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI4MHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUAtbW96LWtleWZyYW1lcyBpemlULWJvdW5jZUluUmlnaHR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yODBweCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1ib3VuY2VJblJpZ2h0ezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMjgwcHgpfTUwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMHB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QC1vLWtleWZyYW1lcyBpemlULWJvdW5jZUluUmlnaHR7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yODBweCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwcHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfX1Aa2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5SaWdodHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTI4MHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDIwcHgpfTcwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTBweCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fUAtbW96LWtleWZyYW1lcyBpemlULWJvdW5jZUluRG93bnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTIwMHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpfTcwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNXB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5Eb3duezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjAwcHgpfTUwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01cHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1ALW8ta2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5Eb3duezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjAwcHgpfTUwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01cHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIGl6aVQtYm91bmNlSW5Eb3duezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjAwcHgpfTUwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01cHgpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1ALW1vei1rZXlmcmFtZXMgaXppVC1ib3VuY2VJblVwezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyMDBweCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTBweCl9NzAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDVweCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWJvdW5jZUluVXB7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDIwMHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNXB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QC1vLWtleWZyYW1lcyBpemlULWJvdW5jZUluVXB7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDIwMHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNXB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBpemlULWJvdW5jZUluVXB7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDIwMHB4KX01MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX03MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNXB4KX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtZmFkZUluezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVJbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGl6aVQtZmFkZUluezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fUBrZXlmcmFtZXMgaXppVC1mYWRlSW57MCV7b3BhY2l0eTowfXRve29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtZmFkZUluVXB7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW5VcHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUAtby1rZXlmcmFtZXMgaXppVC1mYWRlSW5VcHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgaXppVC1mYWRlSW5VcHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUAtbW96LWtleWZyYW1lcyBpemlULWZhZGVJbkRvd257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVJbkRvd257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUAtby1rZXlmcmFtZXMgaXppVC1mYWRlSW5Eb3duezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGl6aVQtZmFkZUluRG93bnswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtZmFkZUluTGVmdHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMzAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMzAwcHgsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtZmFkZUluTGVmdHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMzAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMzAwcHgsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QC1vLWtleWZyYW1lcyBpemlULWZhZGVJbkxlZnR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDMwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDMwMHB4LDAsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgaXppVC1mYWRlSW5MZWZ0ezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgzMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgzMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALW1vei1rZXlmcmFtZXMgaXppVC1mYWRlSW5SaWdodHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTMwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0zMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlSW5SaWdodHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTMwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0zMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1ALW8ta2V5ZnJhbWVzIGl6aVQtZmFkZUluUmlnaHR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0zMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMzAwcHgsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QGtleWZyYW1lcyBpemlULWZhZGVJblJpZ2h0ezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMzAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTMwMHB4LDAsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUAtbW96LWtleWZyYW1lcyBpemlULWZsaXBJblh7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTtvcGFjaXR5OjB9NDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKX02MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDEwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDEwZGVnKTtvcGFjaXR5OjF9ODAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtNWRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtNWRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZsaXBJblh7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTtvcGFjaXR5OjB9NDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKX02MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDEwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDEwZGVnKTtvcGFjaXR5OjF9ODAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtNWRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtNWRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCl9fUAtby1rZXlmcmFtZXMgaXppVC1mbGlwSW5YezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7b3BhY2l0eTowfTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyl9NjAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwxMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwxMGRlZyk7b3BhY2l0eToxfTgwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTVkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTVkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpfX1Aa2V5ZnJhbWVzIGl6aVQtZmxpcEluWHswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpfTYwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsMTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsMTBkZWcpO29wYWNpdHk6MX04MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC01ZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC01ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtZmFkZU91dHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlT3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUAtby1rZXlmcmFtZXMgaXppVC1mYWRlT3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUBrZXlmcmFtZXMgaXppVC1mYWRlT3V0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUAtbW96LWtleWZyYW1lcyBpemlULWZhZGVPdXREb3duezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9fUAtd2Via2l0LWtleWZyYW1lcyBpemlULWZhZGVPdXREb3duezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9fUAtby1rZXlmcmFtZXMgaXppVC1mYWRlT3V0RG93bnswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApfX1Aa2V5ZnJhbWVzIGl6aVQtZmFkZU91dERvd257MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKX19QC1tb3ota2V5ZnJhbWVzIGl6aVQtZmFkZU91dFVwezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtZmFkZU91dFVwezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX19QC1vLWtleWZyYW1lcyBpemlULWZhZGVPdXRVcHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9fUBrZXlmcmFtZXMgaXppVC1mYWRlT3V0VXB7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApfX1ALW1vei1rZXlmcmFtZXMgaXppVC1mYWRlT3V0TGVmdHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjAwcHgsMCwwKX19QC13ZWJraXQta2V5ZnJhbWVzIGl6aVQtZmFkZU91dExlZnR7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTIwMHB4LDAsMCl9fUAtby1rZXlmcmFtZXMgaXppVC1mYWRlT3V0TGVmdHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjAwcHgsMCwwKX19QGtleWZyYW1lcyBpemlULWZhZGVPdXRMZWZ0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTIwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDBweCwwLDApfX1ALW1vei1rZXlmcmFtZXMgaXppVC1mYWRlT3V0UmlnaHR7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mYWRlT3V0UmlnaHR7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDBweCwwLDApfX1ALW8ta2V5ZnJhbWVzIGl6aVQtZmFkZU91dFJpZ2h0ezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAwcHgsMCwwKX19QGtleWZyYW1lcyBpemlULWZhZGVPdXRSaWdodHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwMHB4LDAsMCl9fUAtbW96LWtleWZyYW1lcyBpemlULWZsaXBPdXRYezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpfTMwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyk7b3BhY2l0eToxfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7b3BhY2l0eTowfX1ALXdlYmtpdC1rZXlmcmFtZXMgaXppVC1mbGlwT3V0WHswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpO29wYWNpdHk6MX10b3std2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsOTBkZWcpO29wYWNpdHk6MH19QC1vLWtleWZyYW1lcyBpemlULWZsaXBPdXRYezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpfTMwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLC0yMGRlZyk7b3BhY2l0eToxfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCw5MGRlZyk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIGl6aVQtZmxpcE91dFh7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCl9MzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLDAsMCwtMjBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwwLDAsLTIwZGVnKTtvcGFjaXR5OjF9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsMCwwLDkwZGVnKTtvcGFjaXR5OjB9fQ=="}},"time_used":38,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":35,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img06.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.068Z","timestamp":1785159465068,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img06.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3126\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3126,"size_decoded":3391,"mime_type":"image/png","magic":"PNG image data, 103 x 46, 8-bit/color RGBA, non-interlaced","md5":"9d7c51b9a280a401f3904a36981185da","sha1":"f7852c89419815f78182276430e0be75f1bfcfce","sha256":"f5b40576d06c9b92f8e77fb9b9a9428bc179a04fd04486825ddea67e6881494c","sha512":"5a2d6aea1cc257a9e0b80af539b37a875de8637d18573ea0513e3f830a920985e3616535f4f2b72411082c5677a0bc2ea67a0730ff09f79bdd59b99ceda6fbb4","ssdeep":"","tlshash":"27513b6eedc5b83b64d25c7485e592821884168290796088e92a335ed4f91e27cf3fd6","first_seen":"2025-08-04T11:51:21.537546Z","last_seen":"2026-07-27T13:38:47.748895Z","times_seen":7,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAGcAAAAuCAYAAAA1FgddAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAvLSURBVHgB7VzdbtvIFT5nSNsB2t04TxD1CaI8QaRkW6BXUZ7A8uYHyJUtb9tb21cFuk0oXy2wsSP5CSJfLdCNY/kJojxBmDfQFi2Q2uJMvzP8MUVRiSjJsbv1h+VaosjhzJw5P9+cwzBdYWJ4rVfLg8Fvy65Sd8hQmZjLOL0cHYI+zvtExteaDlRw0m08/aNPU4LpCp/F9y9+rrisViCMGp0JYjIY6mltdtTCPzuN1Qf9Ire6NAdI5xWpMrMpMfF1OacNfcCfvibd+/Pj33fpfwyiJaS/XsP6XaeiAkmDaVnZD8WbmElz7IpynBZWR+mzFxvqYgXtz6rq5w0Zk8NcZ1b3aQahGKJjNtxsPKp2aEpMLRxv73ATt2/RNIgE9d2Te226JAhNl7OJGanQDLBC0bzVeFztxue81k8lChbKjUffFBLUVMJ5tndYV8Qtmh2+Dsz2RWrTnIQCX2J2SKlmY7XaT7cdaeEKGW5Di1YLtFnc59hVYHhTlsgcUFIOhOws+dDELp2cbH8JISX+BBM3kUnOR9+YyHSltEQwLy0sLBytF+H8px7QOJSgxHVaXKpDSO3zElK0kmuksZLFnxRfYH3c8g5BT5sUdTZSWiIC14Ov64oZUR2VaQ4oLBxl7MMtxL6SMT2obY8CkqNP13B8xMAdHCwOVZcNc4WZ7tBEDjYS0u5hZ2D0zqyRnl3FwkumjLowxg8YY4eN6mC2emmBxO3HAldqhqguB8VDaTbSuW2xr9mOppA+38XRlA/ei6OKYVNnRXc+a04wYJiGmrf3ppBf+tuP/yg77FQU060peInVjGTBZbQjxlQCN/odFcTMJPSvP/xUWlxcrJCmEnjO8hDPUXD4Wvt5qx/mq26gJejAnYkfRqYdGHPwpzFRj9c6KtFAhK7LGpPGzPgca3C6GWHx+GOMr5Ty8b1Pp9RrPK36454ca0gUYpdocuQGC5NgKuFM1dExPMf78ahslFmH2VuhyYFtEtOdxxZJHuJtGiHW8CH3Ix9S1GRNLZQYhYUzE7+JkcNzZNWbwGwVFFIMX0wRtPUdzGYPGtF33X/1PrddIlrvOM4ytKeEqKtkTSFhv2wGhx7yHAP/pNqxUGyEO3BLjYL+s7Bwnu8d+jBdN2k+GPEn1jRpXSeJesxcosI+DftAQXqzch7IDavTPAeLcfu7x/e2qADmsrc2A0Z5zqq1+1tyiF+CkDZnFNK8BZEgrSUbGfKZ5TkKGk0FcdGakwMzwnOSKI9ppv2uecAKhAwWEsxWKoBI8Zz7ueRT8Y1zDwjSwsnlOTGm5jkRwC2yPAcmD8xe14yRYMQK6ksgJJ6iIQPVyUZ0qeAoJLa5wNbNw2JbN/YuKgjv5ZsjTNzxNFFIIZ5zhrE8J2xP1yTpVSwkH4+QdFKXjZgh1ctuzQgK8hyfTrj6qTB9HOaSbBOVPj39jUQ+SZQj/EaipoWFf/t5UdO58ByE5eBWJW00cksyaVwa4ThJUxmuI5q/QP64BTclz+lDMLenEYxgauEU6iyygYb0MSa2kyWkl5/nYPHALFNRX8cQ9n/4wbSCCZsoCA/bI+S4RzS9Y/bJOtSM058jzxGtHaexaXyC55RoyvHZgCEw7cYcclVTac6ME3mGMWT018JzZsVMPicRUjEHnwfr9LOZ0TnxnHND3m7APDGngCAMcecwkX7Ec/bH8JzZNHUOGMdzzgNzL42a30TmkNFLyHPOE+dWt5ZMZOFwOYMcMpo844J4zpfCFykqjJx8ZUZBgTfpAz49bY4LnSfgOfI59A0Fec5F4EIqPmde8Z/gTb8mXHg5rjV/A8mfhHtwstLRKfCNiUNdqU/uQdD7kla+TCt/VlzaWmkrtFM6M0sqEwUaK5Q+BOt/SSd9hStc4f8WsnloKyuvMDXOLU1tgutNJOWkprJwkukKIRRd4dKCbQqAeVnKds7y4HTLkPmFtcbW9x9GChOSXA7xddmmV4OTTpoYStXlgut6YHj9gdY7ci7mI3/ffV1zTk97eUQy3Rf7Hf0Jgq8qcXLNZiDxN11ilOnLB/SlnW772YtDm61U7ugbAMjXVKTwIv1qhpQx6cFiXT7H1TLpebHElkxfcknpjVp580IKK5UJOtk5k3FpdmpCfNP3pPqOtD8vZ+v6lFHuumFn3U6Mvv6eFdfBN37HCkk0x33rYTKHHvTyzXtXOa+IVRmMn5XDa7S49NbDg+JrXMdtoyP4zhVHOW05bGgsD2RuajccfBbSF2I32ZOThJfD6pX0Dc99i+ceEfqa9GXvsGX7QmpZBIO+V9CX9zu7RyvhpB4hV8Mejk090EPPlJe+5DzG4Q31IVhcl/NyyP3hNtT199KOfStBijcwoVI15O29eZ8a14ptTxZlFsptRW2upfq+KePBDK7ZsmG0ayuRFpeOPOSZbB/lf9jyv44GXlHADzbSL/1IvYDcTHSWFtbcIIe6QxX2cp3jbFJYF00bD++WvV2cI/Y3HlVn9zkyYG2OyVHVpFBv79AT4UsaeCPFc57vHjY1UxOTdiDXom9dWSgYuGyUNu29shDPds9L3g9HpZgrYRULAba7z/EY0YaU7EIIZh8zLen3SrSxCy3Tsli2kPI4ULI48Kx0e7agUEdFitpYK2K1LC7MNDgnRfLC55TxbL+Wllr4pRoGBLLKA7PaeHK3m54TbaBmmZek8l6jC2C67ArHKjoXho4ONx7dq8ZfwwHzuu3z07t++lJ21BY6vqJPtWh8G5N2HE1aOe6flkL31D3atdc2Qy0xFdsOspnx741v797O9KiNxXdLKkMhdLv9BLPZxr1e1F6dwto7gomsqfhhgeraazl+v0leqLqbWAKYfJJ5jAUcR2t+XlpVCjSgcpQHW80fFXTAdt+0a+1jamNxnkAibuhrsABzB7PH2v8+ZU4Fg8FATFYf1iDqm+4SWa3GNtFAznVtbZkF0gBkTZTVqiAI4AOimYwmMob1O/rrmvUrTDdJRe/3RBqY0dJkv9C+r0ORJkKbhrSWTQk+cSu+llNbVtrR1r+G2+Q5CIUzfO7Zi59hk51N3POLbK2HPTA35/Sm2xioIQeLdLDk+WHlnK28q434H032Hhvo7L2RBbNsWNWgHb1YO0ipBj7XYq0yQRD6V3P2xkH0FlwLmlqzYou1IGe8kaVJTBtd+0ixSYs1cYCAJ+EvIkjFlbwxYMH3CvGcqIgdUcmwbwrruJwKzQjMtxQr+iM/BCPaaOsC4NsqNAGwyPaZeQ3HfWhHV7Qj8il+vNpFq9hxJN2O/+Df4nuDr5ocvucDvxP6W9GS57uvO1HlUQKkHjqRaVu2pm2w2E9M2oKy7sA1JhkLorMGIsLmuH4X4znIQGKgB9kElJQQjVwKbcQgb9CEsH5kwncoYapEK5a9jEkbBzY69pMl9NVqR7ySxSeFjSLwicyNfYstvjes5JSJ3Bd/G/tURLO3ss+R32Qh2OZg2s7MJyc1BlGY3Y+u+WQ2t5DmIP18I6vO0Qu8K9nzYRKL10aCBGQYlaNGczh60aMJ/ZU1VbLildNC2FnNcibxh39Jcw3XFVNmTVuSPo+dc+KTEvPiZxafvU8m24a41z72YebG1krYhcDOmtXG2CWY4CB9jf0XPZQNCioS6Q6CwPpUKdGyr3UqG4RUCwmHJRRl9uDE/MAEXag7nKLjwWEfwPMNaY+QPghiBZPyFtfvx+QQ93TQqZZwFKnetPViDst1x5DvwcQ5DGaE6OZIeAHa35F/KUT6g3HZumVkRW83nlRDvxM6617IvWjIp6R9UtRwl8ZMpHAo0ktxB9poqJ7t1mh7EHamQlXI7fOXr0vQUFnUwy6BKcnSQvNMz1aT5EDsI5xrIvXGQ7GPZluI5wIIqpBLEjWGIOx1185WvtUW5qqt5xKn57qlqI22tCFVlBI24rd1aQOh8rr0Jf3upOsO/Gy7qfb9sH0IGMRZCB3aa8HeSJhdjQWTYDBoiJ+xxfcR3ziD2ba/ybNOaDs7kWF/o7S2vZ+rFJzu2M+UbSvV3tjfwQW//aaO31bDa8LxhYEZnqXYhu7/BTVoFYdXOOjAAAAAAElFTkSuQmCC"}},"time_used":76,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":61,"receive":15,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/animate.min.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.770Z","timestamp":1785159464770,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/animate.min.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 4618\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":68601,"size_decoded":4927,"mime_type":"text/css","magic":"ASCII text, with very long lines (460)","md5":"8ea67bf7d4ccacd55a30e2046f9241b2","sha1":"9e7eadfdcdf03a5664aaef256c76248ee786dd3b","sha256":"5d825a730b53e73c1ebf5e26ad9b5fc8e67ba28324ac6a55d5c966f4df4aa7b6","sha512":"1336cc299baba59cdcd3af3d2a9968a721ecc3ee2fbf15f62d295c761de8e88488caaaf27a8002f044ee3084e6306d6bde9a680c61bb5de71ef8056244c7f14a","ssdeep":"192:LIQHnIwf2T/awfDZUiduG+MONjnbimZbHMxymDSVbyPiVEzfukrWL7XU+qLmfRvw:LIW/yffHf7SpS/fjf7","tlshash":"9063096929e1114466370a15c7df9f78263ce5a31826ecfab3d2588bcf41fac23c9617","first_seen":"2023-04-13T23:00:03Z","last_seen":"2026-08-02T09:45:25.010241Z","times_seen":893,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsKCgovKiEKQW5pbWF0ZS5jc3MgLSBodHRwOi8vZGFuZWRlbi5tZS9hbmltYXRlCkxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQoKQ29weXJpZ2h0IChjKSAyMDEzIERhbmllbCBFZGVuCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgoqLwoKLmFuaW1hdGVkIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxczsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQoKLmFuaW1hdGVkLmhpbmdlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAyczsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZSB7CiAgMCUsIDIwJSwgNTAlLCA4MCUsIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICA0MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsKICB9CgogIDYwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpOwogIH0KfQoKQGtleWZyYW1lcyBib3VuY2UgewogIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9CgogIDQwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7CiAgfQoKICA2MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpOwogIH0KfQoKLmJvdW5jZSB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlOwogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2U7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmbGFzaCB7CiAgMCUsIDUwJSwgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMjUlLCA3NSUgewogICAgb3BhY2l0eTogMDsKICB9Cn0KCkBrZXlmcmFtZXMgZmxhc2ggewogIDAlLCA1MCUsIDEwMCUgewogICAgb3BhY2l0eTogMTsKICB9CgogIDI1JSwgNzUlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgouZmxhc2ggewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsYXNoOwogIGFuaW1hdGlvbi1uYW1lOiBmbGFzaDsKfQoKLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovCgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQoKICA1MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNlIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQoKICA1MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CgoucHVsc2UgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHB1bHNlOwogIGFuaW1hdGlvbi1uYW1lOiBwdWxzZTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNoYWtlIHsKICAwJSwgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDEwJSwgMzAlLCA1MCUsIDcwJSwgOTAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7CiAgfQoKICAyMCUsIDQwJSwgNjAlLCA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHNoYWtlIHsKICAwJSwgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQoKICAxMCUsIDMwJSwgNTAlLCA3MCUsIDkwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7CiAgfQoKICAyMCUsIDQwJSwgNjAlLCA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogIH0KfQoKLnNoYWtlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzaGFrZTsKICBhbmltYXRpb24tbmFtZTogc2hha2U7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzd2luZyB7CiAgMjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpOwogIH0KCiAgNDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMGRlZyk7CiAgfQoKICA2MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQp9CgpAa2V5ZnJhbWVzIHN3aW5nIHsKICAyMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpOwogIH0KCiAgNDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtMTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTEwZGVnKTsKICB9CgogIDYwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNWRlZyk7CiAgfQoKICA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQp9Cgouc3dpbmcgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHN3aW5nOwogIGFuaW1hdGlvbi1uYW1lOiBzd2luZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHRhZGEgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQoKICAxMCUsIDIwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KSByb3RhdGUoLTNkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHJvdGF0ZSgtM2RlZyk7CiAgfQoKICAzMCUsIDUwJSwgNzAlLCA5MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKTsKICB9CgogIDQwJSwgNjAlLCA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0zZGVnKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoLTNkZWcpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHRhZGEgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9CgogIDEwJSwgMjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHJvdGF0ZSgtM2RlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgwLjkpIHJvdGF0ZSgtM2RlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSkgcm90YXRlKC0zZGVnKTsKICB9CgogIDMwJSwgNTAlLCA3MCUsIDkwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoM2RlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoM2RlZyk7CiAgfQoKICA0MCUsIDYwJSwgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtM2RlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgtM2RlZyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKC0zZGVnKTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDApOwogIH0KfQoKLnRhZGEgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHRhZGE7CiAgYW5pbWF0aW9uLW5hbWU6IHRhZGE7Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQC13ZWJraXQta2V5ZnJhbWVzIHdvYmJsZSB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICB9CgogIDE1JSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjUlKSByb3RhdGUoLTVkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNSUpIHJvdGF0ZSgtNWRlZyk7CiAgfQoKICAzMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKSByb3RhdGUoM2RlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKSByb3RhdGUoM2RlZyk7CiAgfQoKICA0NSUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1JSkgcm90YXRlKC0zZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTUlKSByb3RhdGUoLTNkZWcpOwogIH0KCiAgNjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwJSkgcm90YXRlKDJkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwJSkgcm90YXRlKDJkZWcpOwogIH0KCiAgNzUlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01JSkgcm90YXRlKC0xZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNSUpIHJvdGF0ZSgtMWRlZyk7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgfQp9CgpAa2V5ZnJhbWVzIHdvYmJsZSB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwogIH0KCiAgMTUlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNSUpIHJvdGF0ZSgtNWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNSUpIHJvdGF0ZSgtNWRlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTI1JSkgcm90YXRlKC01ZGVnKTsKICB9CgogIDMwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMCUpIHJvdGF0ZSgzZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKSByb3RhdGUoM2RlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAlKSByb3RhdGUoM2RlZyk7CiAgfQoKICA0NSUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1JSkgcm90YXRlKC0zZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1JSkgcm90YXRlKC0zZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTUlKSByb3RhdGUoLTNkZWcpOwogIH0KCiAgNjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwJSkgcm90YXRlKDJkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpIHJvdGF0ZSgyZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMCUpIHJvdGF0ZSgyZGVnKTsKICB9CgogIDc1JSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNSUpIHJvdGF0ZSgtMWRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01JSkgcm90YXRlKC0xZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNSUpIHJvdGF0ZSgtMWRlZyk7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICB9Cn0KCi53b2JibGUgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHdvYmJsZTsKICBhbmltYXRpb24tbmFtZTogd29iYmxlOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjMpOwogICAgdHJhbnNmb3JtOiBzY2FsZSguMyk7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgfQoKICA3MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjkpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQoKQGtleWZyYW1lcyBib3VuY2VJbiB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zKTsKICB9CgogIDUwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogIH0KCiAgNzAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguOSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguOSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC45KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQoKLmJvdW5jZUluIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbjsKICBhbmltYXRpb24tbmFtZTogYm91bmNlSW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJbkRvd24gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgfQoKICA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluRG93biB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKLmJvdW5jZUluRG93biB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlSW5Eb3duOwogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkRvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJbkxlZnQgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7CiAgfQoKICA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKLmJvdW5jZUluTGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlSW5MZWZ0OwogIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJblJpZ2h0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5SaWdodCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKLmJvdW5jZUluUmlnaHQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluUmlnaHQ7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJblVwIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5VcCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKLmJvdW5jZUluVXAgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluVXA7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluVXA7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQoKICAyNSUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC45NSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC45NSk7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC4zKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjMpOwogIH0KfQoKQGtleWZyYW1lcyBib3VuY2VPdXQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9CgogIDI1JSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjk1KTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKC45NSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC45NSk7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMyk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSguMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4zKTsKICB9Cn0KCi5ib3VuY2VPdXQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dDsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlT3V0RG93biB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICAyMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dERvd24gewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9CgogIDIwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogIH0KfQoKLmJvdW5jZU91dERvd24gewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dERvd247CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dERvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXRMZWZ0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDIwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlT3V0TGVmdCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgfQp9CgouYm91bmNlT3V0TGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlT3V0TGVmdDsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0TGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZU91dFJpZ2h0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDIwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlT3V0UmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDIwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogIH0KfQoKLmJvdW5jZU91dFJpZ2h0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBib3VuY2VPdXRSaWdodDsKICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0UmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXRVcCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICAyMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGJvdW5jZU91dFVwIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICAyMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICB9Cn0KCi5ib3VuY2VPdXRVcCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlT3V0VXA7CiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFVwOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlSW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgouZmFkZUluIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW47CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkRvd24gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJbkRvd24gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgouZmFkZUluRG93biB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluRG93bjsKICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkRvd25CaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlSW5Eb3duQmlnIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKLmZhZGVJbkRvd25CaWcgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd25CaWc7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd25CaWc7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5MZWZ0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlSW5MZWZ0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKLmZhZGVJbkxlZnQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5MZWZ0QmlnIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgZmFkZUluTGVmdEJpZyB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCi5mYWRlSW5MZWZ0QmlnIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0QmlnOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5MZWZ0QmlnOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluUmlnaHQgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlSW5SaWdodCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCi5mYWRlSW5SaWdodCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluUmlnaHRCaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgZmFkZUluUmlnaHRCaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9CgouZmFkZUluUmlnaHRCaWcgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblJpZ2h0QmlnOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblVwIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgZmFkZUluVXAgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgouZmFkZUluVXAgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblVwQmlnIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVJblVwQmlnIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKLmZhZGVJblVwQmlnIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcEJpZzsKICBhbmltYXRpb24tbmFtZTogZmFkZUluVXBCaWc7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLmZhZGVPdXQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0RG93biB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVPdXREb3duIHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOwogIH0KfQoKLmZhZGVPdXREb3duIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0RG93bjsKICBhbmltYXRpb24tbmFtZTogZmFkZU91dERvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0RG93bkJpZyB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0RG93bkJpZyB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICB9Cn0KCi5mYWRlT3V0RG93bkJpZyB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZU91dERvd25CaWc7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dExlZnQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpOwogIH0KfQoKLmZhZGVPdXRMZWZ0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdDsKICBhbmltYXRpb24tbmFtZTogZmFkZU91dExlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0TGVmdEJpZyB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0QmlnIHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogIH0KfQoKLmZhZGVPdXRMZWZ0QmlnIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0TGVmdEJpZzsKICBhbmltYXRpb24tbmFtZTogZmFkZU91dExlZnRCaWc7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0UmlnaHQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0UmlnaHQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgfQp9CgouZmFkZU91dFJpZ2h0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0UmlnaHQ7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRSaWdodEJpZyB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0UmlnaHRCaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgfQp9CgouZmFkZU91dFJpZ2h0QmlnIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0UmlnaHRCaWc7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVPdXRVcCB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTsKICB9Cn0KCkBrZXlmcmFtZXMgZmFkZU91dFVwIHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOwogIH0KfQoKLmZhZGVPdXRVcCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZU91dFVwOwogIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0VXA7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0VXBCaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogIH0KfQoKQGtleWZyYW1lcyBmYWRlT3V0VXBCaWcgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgfQp9CgouZmFkZU91dFVwQmlnIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0VXBCaWc7CiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcEJpZzsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZsaXAgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDApIHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDApIHNjYWxlKDEpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIH0KCiAgNDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxNzBkZWcpIHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxNzBkZWcpIHNjYWxlKDEpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIH0KCiAgNTAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxOTBkZWcpIHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxOTBkZWcpIHNjYWxlKDEpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CgogIDgwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMCkgcm90YXRlWSgzNjBkZWcpIHNjYWxlKC45NSk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDApIHJvdGF0ZVkoMzYwZGVnKSBzY2FsZSguOTUpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDApIHJvdGF0ZVkoMzYwZGVnKSBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMCkgcm90YXRlWSgzNjBkZWcpIHNjYWxlKDEpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9Cn0KCkBrZXlmcmFtZXMgZmxpcCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDApIHJvdGF0ZVkoMCkgc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDApIHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDApIHNjYWxlKDEpOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIH0KCiAgNDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgxNzBkZWcpIHNjYWxlKDEpOwogICAgLW1zLXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoMTcwZGVnKSBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoMTcwZGVnKSBzY2FsZSgxKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoMTkwZGVnKSBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDE1MHB4KSByb3RhdGVZKDE5MGRlZykgc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDE1MHB4KSByb3RhdGVZKDE5MGRlZykgc2NhbGUoMSk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDM2MGRlZykgc2NhbGUoLjk1KTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDApIHJvdGF0ZVkoMzYwZGVnKSBzY2FsZSguOTUpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDM2MGRlZykgc2NhbGUoLjk1KTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDM2MGRlZykgc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigwKSByb3RhdGVZKDM2MGRlZykgc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDApIHJvdGF0ZVkoMzYwZGVnKSBzY2FsZSgxKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgfQp9CgouYW5pbWF0ZWQuZmxpcCB7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlOwogIC1tcy1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlOwogIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxpcDsKICBhbmltYXRpb24tbmFtZTogZmxpcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZsaXBJblggewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICA0MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC0xMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC0xMGRlZyk7CiAgfQoKICA3MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDEwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMTBkZWcpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDBkZWcpOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCkBrZXlmcmFtZXMgZmxpcEluWCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDQwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTEwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC0xMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC0xMGRlZyk7CiAgfQoKICA3MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDEwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDEwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMTBkZWcpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLmZsaXBJblggewogIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIC1tcy1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZsaXBJblg7CiAgYW5pbWF0aW9uLW5hbWU6IGZsaXBJblg7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5ZIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgNDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMTBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMTBkZWcpOwogIH0KCiAgNzAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDEwZGVnKTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIGZsaXBJblkgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICA0MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC0xMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMTBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMTBkZWcpOwogIH0KCiAgNzAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDEwZGVnKTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5mbGlwSW5ZIHsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICAtbXMtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmbGlwSW5ZOwogIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5ZOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmxpcE91dFggewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoOTBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyBmbGlwT3V0WCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDBkZWcpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCi5mbGlwT3V0WCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxpcE91dFg7CiAgYW5pbWF0aW9uLW5hbWU6IGZsaXBPdXRYOwogIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogIC1tcy1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZmxpcE91dFkgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMGRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpOwogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyBmbGlwT3V0WSB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMGRlZyk7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDBkZWcpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCi5mbGlwT3V0WSB7CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgLW1zLWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmxpcE91dFk7CiAgYW5pbWF0aW9uLW5hbWU6IGZsaXBPdXRZOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgbGlnaHRTcGVlZEluIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSBza2V3WCgtMzBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNrZXdYKC0zMGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgNjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMCUpIHNrZXdYKDMwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAlKSBza2V3WCgzMGRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgtMTVkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgtMTVkZWcpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIGxpZ2h0U3BlZWRJbiB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSBza2V3WCgtMzBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDYwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAlKSBza2V3WCgzMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMCUpIHNrZXdYKDMwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAlKSBza2V3WCgzMGRlZyk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgODAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgtMTVkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgc2tld1goLTE1ZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgc2tld1goLTE1ZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgoubGlnaHRTcGVlZEluIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkSW47CiAgYW5pbWF0aW9uLW5hbWU6IGxpZ2h0U3BlZWRJbjsKICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgbGlnaHRTcGVlZE91dCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNrZXdYKC0zMGRlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgpAa2V5ZnJhbWVzIGxpZ2h0U3BlZWRPdXQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNrZXdYKC0zMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNrZXdYKC0zMGRlZyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgoubGlnaHRTcGVlZE91dCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogbGlnaHRTcGVlZE91dDsKICBhbmltYXRpb24tbmFtZTogbGlnaHRTcGVlZE91dDsKICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZUluIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMjAwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0yMDBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0yMDBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC0yMDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTIwMGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnJvdGF0ZUluIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbjsKICBhbmltYXRpb24tbmFtZTogcm90YXRlSW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVJbkRvd25MZWZ0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCkBrZXlmcmFtZXMgcm90YXRlSW5Eb3duTGVmdCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5yb3RhdGVJbkRvd25MZWZ0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25MZWZ0OwogIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25MZWZ0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlSW5Eb3duUmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluRG93blJpZ2h0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnJvdGF0ZUluRG93blJpZ2h0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25SaWdodDsKICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5Eb3duUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKQGtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5yb3RhdGVJblVwTGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlSW5VcExlZnQ7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluVXBMZWZ0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlSW5VcFJpZ2h0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZUluVXBSaWdodCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9Cn0KCi5yb3RhdGVJblVwUmlnaHQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZUluVXBSaWdodDsKICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcFJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlT3V0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjAwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDIwMGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyByb3RhdGVPdXQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjAwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgyMDBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMjAwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9Cgoucm90YXRlT3V0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXQ7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU91dERvd25MZWZ0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25MZWZ0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLnJvdGF0ZU91dERvd25MZWZ0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXREb3duTGVmdDsKICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93bkxlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVPdXREb3duUmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCkBrZXlmcmFtZXMgcm90YXRlT3V0RG93blJpZ2h0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKLnJvdGF0ZU91dERvd25SaWdodCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93blJpZ2h0OwogIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXREb3duUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVPdXRVcExlZnQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyByb3RhdGVPdXRVcExlZnQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9Cgoucm90YXRlT3V0VXBMZWZ0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXRVcExlZnQ7CiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU91dFVwUmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDApOwogICAgb3BhY2l0eTogMTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgpAa2V5ZnJhbWVzIHJvdGF0ZU91dFVwUmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tOwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9Cgoucm90YXRlT3V0VXBSaWdodCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm90YXRlT3V0VXBSaWdodDsKICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0VXBSaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKQGtleWZyYW1lcyBzbGlkZUluRG93biB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQoKLnNsaWRlSW5Eb3duIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjsKICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd247Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluTGVmdCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KCi5zbGlkZUluTGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7CiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5MZWZ0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNTAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwMHB4KTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQoKLnNsaWRlSW5SaWdodCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJblJpZ2h0OwogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluUmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dExlZnQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgfQp9CgpAa2V5ZnJhbWVzIHNsaWRlT3V0TGVmdCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAwcHgpOwogIH0KfQoKLnNsaWRlT3V0TGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVPdXRMZWZ0OwogIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dExlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICB9Cn0KCkBrZXlmcmFtZXMgc2xpZGVPdXRSaWdodCB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDAwcHgpOwogIH0KfQoKLnNsaWRlT3V0UmlnaHQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7CiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dFVwIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogIH0KfQoKQGtleWZyYW1lcyBzbGlkZU91dFVwIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgfQp9Cgouc2xpZGVPdXRVcCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVPdXRVcDsKICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRVcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGhpbmdlIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQoKICAyMCUsIDYwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDgwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9CgogIDQwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9CgogIDgwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKSB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpIHRyYW5zbGF0ZVkoMCk7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogIH0KCiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg3MDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNzAwcHgpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCkBrZXlmcmFtZXMgaGluZ2UgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9CgogIDIwJSwgNjAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODBkZWcpOwogICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDgwZGVnKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDgwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9CgogIDQwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0OwogICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQoKICA4MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZykgdHJhbnNsYXRlWSgwKTsKICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZykgdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKSB0cmFuc2xhdGVZKDApOwogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNzAwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg3MDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNzAwcHgpOwogICAgb3BhY2l0eTogMDsKICB9Cn0KCi5oaW5nZSB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogaGluZ2U7CiAgYW5pbWF0aW9uLW5hbWU6IGhpbmdlOwp9CgovKiBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IE5pY2sgUGV0dGl0IC0gaHR0cHM6Ly9naXRodWIuY29tL25pY2twZXR0aXQvZ2xpZGUgKi8KCkAtd2Via2l0LWtleWZyYW1lcyByb2xsSW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSkgcm90YXRlKC0xMjBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKSByb3RhdGUoLTEyMGRlZyk7CiAgfQoKICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpIHJvdGF0ZSgwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpIHJvdGF0ZSgwZGVnKTsKICB9Cn0KCkBrZXlmcmFtZXMgcm9sbEluIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHJvdGF0ZSgtMTIwZGVnKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpIHJvdGF0ZSgtMTIwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSkgcm90YXRlKC0xMjBkZWcpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KSByb3RhdGUoMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpOwogIH0KfQoKLnJvbGxJbiB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcm9sbEluOwogIGFuaW1hdGlvbi1uYW1lOiByb2xsSW47Cn0KCi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqLwoKQC13ZWJraXQta2V5ZnJhbWVzIHJvbGxPdXQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpIHJvdGF0ZSgwZGVnKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpIHJvdGF0ZSgwZGVnKTsKICB9CgogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHJvdGF0ZSgxMjBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHJvdGF0ZSgxMjBkZWcpOwogIH0KfQoKQGtleWZyYW1lcyByb2xsT3V0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KSByb3RhdGUoMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpOwogIH0KCiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSkgcm90YXRlKDEyMGRlZyk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHJvdGF0ZSgxMjBkZWcpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHJvdGF0ZSgxMjBkZWcpOwogIH0KfQoKLnJvbGxPdXQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJvbGxPdXQ7CiAgYW5pbWF0aW9uLW5hbWU6IHJvbGxPdXQ7Cn0KQC13ZWJraXQta2V5ZnJhbWVzIHpvb21JbiB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMTsKICB9Cn0KCkBrZXlmcmFtZXMgem9vbUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMywgLjMsIC4zKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMywgLjMsIC4zKTsKICB9CgogIDUwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnpvb21JbiB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogem9vbUluOwogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW47Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tSW5Eb3duIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMTAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMTAwMHB4LCAwKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgfQoKICA2MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9CgpAa2V5ZnJhbWVzIHpvb21JbkRvd24gewogIGZyb20gewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIC0xMDAwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIDYwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICB9Cn0KCi56b29tSW5Eb3duIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tSW5Eb3duOwogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5Eb3duOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgem9vbUluTGVmdCB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoLTEwMDBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoLTEwMDBweCwgMCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogIH0KfQoKQGtleWZyYW1lcyB6b29tSW5MZWZ0IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LCAwLCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LCAwLCAwKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgfQoKICA2MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbUluTGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogem9vbUluTGVmdDsKICBhbmltYXRpb24tbmFtZTogem9vbUluTGVmdDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21JblJpZ2h0IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgxMDAwcHgsIDAsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwgMCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgtMTBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9CgpAa2V5ZnJhbWVzIHpvb21JblJpZ2h0IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgxMDAwcHgsIDAsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwgMCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgtMTBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbUluUmlnaHQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21JblJpZ2h0OwogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5SaWdodDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21JblVwIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIDEwMDBweCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9CgpAa2V5ZnJhbWVzIHpvb21JblVwIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAxMDAwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIDEwMDBweCwgMCk7CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogIH0KCiAgNjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbUluVXAgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21JblVwOwogIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5VcDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21PdXQgewogIGZyb20gewogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjMsIC4zLCAuMyk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogIH0KfQoKQGtleWZyYW1lcyB6b29tT3V0IHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICA1MCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC4zLCAuMywgLjMpOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4zLCAuMywgLjMpOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICB9Cn0KCi56b29tT3V0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tT3V0OwogIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgem9vbU91dERvd24gewogIDQwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1MCwgMC4wNTUsIDAuNjc1LCAwLjE5MCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjEsIC4xLCAuMSkgdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMjAsIDEpOwogIH0KfQoKQGtleWZyYW1lcyB6b29tT3V0RG93biB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC4xLCAuMSwgLjEpIHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyMCwgMSk7CiAgfQp9Cgouem9vbU91dERvd24gewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21PdXREb3duOwogIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0RG93bjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHpvb21PdXRMZWZ0IHsKICA0MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDQycHgsIDAsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDQycHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMSkgdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICB9Cn0KCkBrZXlmcmFtZXMgem9vbU91dExlZnQgewogIDQwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwgMCwgMCk7CiAgfQoKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjEpIHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyOwogIH0KfQoKLnpvb21PdXRMZWZ0IHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB6b29tT3V0TGVmdDsKICBhbmltYXRpb24tbmFtZTogem9vbU91dExlZnQ7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyB6b29tT3V0UmlnaHQgewogIDQwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKC00MnB4LCAwLCAwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjEpIHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgfQp9CgpAa2V5ZnJhbWVzIHpvb21PdXRSaWdodCB7CiAgNDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguNDc1LCAuNDc1LCAuNDc1KSB0cmFuc2xhdGUzZCgtNDJweCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoLjQ3NSwgLjQ3NSwgLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApOwogIH0KCiAgdG8gewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSguMSkgdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoLjEpIHRyYW5zbGF0ZTNkKDIwMDBweCwgMCwgMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICB9Cn0KCi56b29tT3V0UmlnaHQgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRSaWdodDsKICBhbmltYXRpb24tbmFtZTogem9vbU91dFJpZ2h0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgem9vbU91dFVwIHsKICA0MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICB9Cn0KCkBrZXlmcmFtZXMgem9vbU91dFVwIHsKICA0MCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC40NzUsIC40NzUsIC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApOwogICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDU1LCAwLjY3NSwgMC4xOTApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA1NSwgMC42NzUsIDAuMTkwKTsKICB9CgogIHRvIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUzZCguMSwgLjEsIC4xKSB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207CiAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIwLCAxKTsKICB9Cn0KCi56b29tT3V0VXAgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRVcDsKICBhbmltYXRpb24tbmFtZTogem9vbU91dFVwOwp9"}},"time_used":39,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":25,"receive":14,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/icon/check_icon.svg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.056Z","timestamp":1785159465056,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/icon/check_icon.svg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/svg+xml\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 433\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":840,"size_decoded":746,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"1c0d30e8c22854e3950a7c3659456650","sha1":"91545f5a5f43288043929436bde0ebcbf15eeb27","sha256":"e2e621d8109c0966b1ed380261b7546b2f20db799d730d3cd73218835a9715de","sha512":"ae9ec6b5fc285d205648ea84c353c3d2bc2f7c381b5c318644499b26b016528b07d259302e91767e79ec466f9ede7853c4bdd16a4e966c0357e30c2cf8a57e4e","ssdeep":"","tlshash":"a101f1d6414836c13887d7adc8b139186d1bb4b38985c2aca2c4a550e45f9b6cfe9c4f","first_seen":"2024-08-19T13:24:22.073328Z","last_seen":"2026-07-27T13:38:47.805201Z","times_seen":8,"resource_available":false,"data":"PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTEiIHZpZXdCb3g9IjAgMCAxNiAxMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUuNjY3MTcgMTFDNS40MDIxMiAxMC45OTg5IDUuMTQ4IDEwLjg5NzMgNC45NTg5OSAxMC43MTdMMC4yOTMzMzggNi4xODgyNEMwLjEwNTUxNyA2LjAwNTkzIDAgNS43NTg2NyAwIDUuNTAwODRDMCA1LjI0MzAyIDAuMTA1NTE3IDQuOTk1NzYgMC4yOTMzMzggNC44MTM0NUMwLjQ4MTE1OSA0LjYzMTE0IDAuNzM1ODk5IDQuNTI4NzIgMS4wMDE1MiA0LjUyODcyQzEuMjY3MTQgNC41Mjg3MiAxLjUyMTg4IDQuNjMxMTQgMS43MDk3IDQuODEzNDVMNS42NjcxNyA4LjY1NDc3TDE0LjI5MDMgMC4yODQ3MjhDMTQuMzgzMyAwLjE5NDQ1OCAxNC40OTM3IDAuMTIyODUyIDE0LjYxNTIgMC4wNzM5OTg2QzE0LjczNjcgMC4wMjUxNDQ4IDE0Ljg2NyAwIDE0Ljk5ODUgMEMxNS4xMyAwIDE1LjI2MDIgMC4wMjUxNDQ4IDE1LjM4MTcgMC4wNzM5OTg2QzE1LjUwMzMgMC4xMjI4NTIgMTUuNjEzNyAwLjE5NDQ1OCAxNS43MDY3IDAuMjg0NzI4QzE1Ljc5OTcgMC4zNzQ5OTggMTUuODczNCAwLjQ4MjE2NCAxNS45MjM4IDAuNjAwMTA4QzE1Ljk3NDEgMC43MTgwNTEgMTYgMC44NDQ0NjIgMTYgMC45NzIxMjNDMTYgMS4wOTk3OCAxNS45NzQxIDEuMjI2MiAxNS45MjM4IDEuMzQ0MTRDMTUuODczNCAxLjQ2MjA4IDE1Ljc5OTcgMS41NjkyNSAxNS43MDY3IDEuNjU5NTJMNi4zNzUzNSAxMC43MTdDNi4xODYzNCAxMC44OTczIDUuOTMyMjIgMTAuOTk4OSA1LjY2NzE3IDExWiIgZmlsbD0iI0ExQUZDRCIvPgo8L3N2Zz4K"}},"time_used":59,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":59,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/fonts/fa-brands-400.woff","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.571Z","timestamp":1785159465571,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/fonts/fa-brands-400.woff HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/assets1/css/fontawesome-all.min.css\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: font/woff\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 76736\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":76736,"size_decoded":77002,"mime_type":"font/woff","magic":"Web Open Font Format (Version 2), TrueType, length 76736, version 331.-31196","md5":"ed311c7a0ade9a75bb3ebf5a7670f31d","sha1":"0613c7ebba55ee47ef302c0f7766324692f899a7","sha256":"8ea8791754915a898a3100e63e32978a6d1763be6df8e73a39d3a90d691cdeef","sha512":"6048e7ab94134b7200f0d5ed7fb8d577298d4831a2b3a4e0e5baa5c67468f77d4409314d63d34436ba6ba038c86faf87e46dacf98d311a74291b976fa39a9674","ssdeep":"1536:yVIKSdIKO0RtQIJwjZKd4jkC8Voun7L5XpeVQ+OEmdEu:SItm0RtQpAdofaluV99u","tlshash":"4d730196c3ca08de6994937ce960efdd1b0d4dc7aa72c7525e63c9a451c8ec83834b78","first_seen":"2023-04-05T17:41:32Z","last_seen":"2026-08-04T05:24:10.971455Z","times_seen":28088,"resource_available":false,"data":"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"}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/slider/slider_bg01.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.708Z","timestamp":1785159465708,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/slider/slider_bg01.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 168422\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":168422,"size_decoded":168690,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 1920x831, components 3","md5":"a8f0b0563287add78f0379cfabdff23b","sha1":"9151ffefa632545c893ebfd7408e3fdfc23513ed","sha256":"8846405c2d9de5909ad0657b86034344e34ab089615ae12d12e4e82c785dc6c7","sha512":"245f900bc05a93d6bb8d79a0ca5b1233d1a407141b9a6453c727d1ed959b5a13a50e69abd9c7eb86407541afff27b5fa5d58464aa64fdbf5e5b33d465eba9f91","ssdeep":"3072:XZEEU2y4CtpZ4+cg20/QasgmPcFQ7ii3uElHv3Tllul9io0MWAu:zSZpcg20/BslcFri3uElHfZY/rtu","tlshash":"0ef3120b23d3d454ea80fef3b307e61f75929918b140be4b649d875607858aa307ecaf","first_seen":"2025-08-04T11:51:21.602312Z","last_seen":"2026-07-27T13:38:47.796736Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":58,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":23,"receive":35,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/ajax-form.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.813Z","timestamp":1785159464813,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/ajax-form.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 429\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":1202,"size_decoded":665,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"6fb844afc6d3c95fc02dc6f7301b7abd","sha1":"97b7659ca9318daeeb7513cba965817da8c3ff56","sha256":"a2d6b6c46044362f66dd1855cea06e4fc47bbd1a0f0f1ca220e51666a88215af","sha512":"45d21ad467479be270e0e1700254f1d4888ac6c924342a834ce17b6d83367e20daf7497f19b0dbe62aa6314823b1e3e9073e760004e3492f479a8e8a1b202001","ssdeep":"","tlshash":"55219005bf7c0b6e1227214536ed33cdbb2c55b28647742a8fe9187616841dc13c17ab","first_seen":"2023-03-07T13:01:57Z","last_seen":"2026-07-31T19:25:03.222155Z","times_seen":570,"resource_available":true,"data":"JChmdW5jdGlvbigpIHsKCgkvLyBHZXQgdGhlIGZvcm0uCgl2YXIgZm9ybSA9ICQoJyNjb250YWN0LWZvcm0nKTsKCgkvLyBHZXQgdGhlIG1lc3NhZ2VzIGRpdi4KCXZhciBmb3JtTWVzc2FnZXMgPSAkKCcuYWpheC1yZXNwb25zZScpOwoKCS8vIFNldCB1cCBhbiBldmVudCBsaXN0ZW5lciBmb3IgdGhlIGNvbnRhY3QgZm9ybS4KCSQoZm9ybSkuc3VibWl0KGZ1bmN0aW9uKGUpIHsKCQkvLyBTdG9wIHRoZSBicm93c2VyIGZyb20gc3VibWl0dGluZyB0aGUgZm9ybS4KCQllLnByZXZlbnREZWZhdWx0KCk7CgoJCS8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBkYXRhLgoJCXZhciBmb3JtRGF0YSA9ICQoZm9ybSkuc2VyaWFsaXplKCk7CgoJCS8vIFN1Ym1pdCB0aGUgZm9ybSB1c2luZyBBSkFYLgoJCSQuYWpheCh7CgkJCXR5cGU6ICdQT1NUJywKCQkJdXJsOiAkKGZvcm0pLmF0dHIoJ2FjdGlvbicpLAoJCQlkYXRhOiBmb3JtRGF0YQoJCX0pCgkJLmRvbmUoZnVuY3Rpb24ocmVzcG9uc2UpIHsKCQkJLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZvcm1NZXNzYWdlcyBkaXYgaGFzIHRoZSAnc3VjY2VzcycgY2xhc3MuCgkJCSQoZm9ybU1lc3NhZ2VzKS5yZW1vdmVDbGFzcygnZXJyb3InKTsKCQkJJChmb3JtTWVzc2FnZXMpLmFkZENsYXNzKCdzdWNjZXNzJyk7CgoJCQkvLyBTZXQgdGhlIG1lc3NhZ2UgdGV4dC4KCQkJJChmb3JtTWVzc2FnZXMpLnRleHQocmVzcG9uc2UpOwoKCQkJLy8gQ2xlYXIgdGhlIGZvcm0uCgkJCSQoJyNjb250YWN0LWZvcm0gaW5wdXQsI2NvbnRhY3QtZm9ybSB0ZXh0YXJlYScpLnZhbCgnJyk7CgkJfSkKCQkuZmFpbChmdW5jdGlvbihkYXRhKSB7CgkJCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBmb3JtTWVzc2FnZXMgZGl2IGhhcyB0aGUgJ2Vycm9yJyBjbGFzcy4KCQkJJChmb3JtTWVzc2FnZXMpLnJlbW92ZUNsYXNzKCdzdWNjZXNzJyk7CgkJCSQoZm9ybU1lc3NhZ2VzKS5hZGRDbGFzcygnZXJyb3InKTsKCgkJCS8vIFNldCB0aGUgbWVzc2FnZSB0ZXh0LgoJCQlpZiAoZGF0YS5yZXNwb25zZVRleHQgIT09ICcnKSB7CgkJCQkkKGZvcm1NZXNzYWdlcykudGV4dChkYXRhLnJlc3BvbnNlVGV4dCk7CgkJCX0gZWxzZSB7CgkJCQkkKGZvcm1NZXNzYWdlcykudGV4dCgnT29wcyEgQW4gZXJyb3Igb2NjdXJlZCBhbmQgeW91ciBtZXNzYWdlIGNvdWxkIG5vdCBiZSBzZW50LicpOwoJCQl9CgkJfSk7Cgl9KTsKCn0pOwo="}},"time_used":24,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"cdn.gtranslate.net/widgets/latest/float.js","fqdn":"cdn.gtranslate.net","domain":"gtranslate.net","tld":"net"},"ip":{"addr":"104.26.12.42","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.008Z","timestamp":1785159465008,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gtranslate.net","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 25 Jun 2026 02:04:42 GMT","end":"Wed, 23 Sep 2026 03:04:28 GMT"},"fingerprint":{"sha1":"7E:41:C7:FB:AD:E5:FE:5D:B3:02:94:54:88:D4:EE:DD:EA:46:BC:9C","sha256":"0F:62:03:25:71:9E:01:C5:E5:A6:FD:62:89:4B:D6:28:CC:04:66:24:A5:08:2F:E1:17:68:AA:E7:51:AA:E9:A3"}}},"request":{"raw":"GET /widgets/latest/float.js HTTP/1.1\r\nHost: cdn.gtranslate.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\ncontent-type: application/javascript\r\nserver: cloudflare\r\nlast-modified: Wed, 06 May 2026 19:42:51 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nvary: accept-encoding\r\nexpires: Thu, 01 Jul 2027 02:02:58 GMT\r\ncache-control: max-age=31536000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=m%2Bl9VBQZi4kmneNEMfozgrBh2q7Aqlt%2B%2FWsOTmp3MdnvGRJ5xfi5lXVOnIpCWX5V80WE1CPYGqqaQHp86lIN1bXn2TwkOa8qijLdqzvhQ69wThKG1u29qTke%2F34bF5rj3p1VFw%3D%3D\"}]}\r\nage: 2288086\r\ncf-cache-status: HIT\r\netag: W/\"69fb99bb-5a62\"\r\ncontent-encoding: br\r\ncf-ray: a21c0a606821b28a-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":23138,"size_decoded":7507,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (3129)","md5":"68ee10aa7ede43f8bb3293b220daf775","sha1":"1f26a636577ea9aaa524c0a23ae8cf342be925e9","sha256":"76e28fc0425d80422e45305464ada45c7c9b4a00132c65012c737c22814c259f","sha512":"531d2baf5f4d61c0def2c5f45fd8d9b69b143c24d0474a01291d858b086b45c233d1cca885cc722d6e6eaff3f8cb62e637df797beca8f5aec20d090f0e23fe08","ssdeep":"384:UzCKMPZATN09o0mtvwfEXMb5TZ/dDszCnfYI:UVMhAh060svwcX0T1dhh","tlshash":"10a2c62921b3003a49531265efff165c607a02b78004ec24bfaeddc2dfd59a9caa77d5","first_seen":"2026-05-06T20:53:53.345523Z","last_seen":"2026-08-04T02:43:27.765274Z","times_seen":2129,"resource_available":true,"data":"LyohIENvcHlyaWdodCAoQykgR1RyYW5zbGF0ZSBJbmMuICovCihmdW5jdGlvbigpe2lmKCEoZG9jdW1lbnQuY3VycmVudFNjcmlwdCBpbnN0YW5jZW9mIEhUTUxTY3JpcHRFbGVtZW50KSlyZXR1cm47CiAgICB2YXIgZ3QgPSB3aW5kb3cuZ3RyYW5zbGF0ZVNldHRpbmdzIHx8IHt9OwogICAgZ3QgPSBndFtkb2N1bWVudC5jdXJyZW50U2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1ndC13aWRnZXQtaWQnKV0gfHwgZ3Q7CgogICAgaWYoZ3QuZGVmYXVsdF9sYW5ndWFnZSA9PSBudWxsKSB7CiAgICAgICAgY29uc29sZS5sb2coJ2d0cmFuc2xhdGVTZXR0aW5ncyBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQnKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGxhbmdfYXJyYXlfZW5nbGlzaCA9IHsiYWYiOiJBZnJpa2FhbnMiLCJzcSI6IkFsYmFuaWFuIiwiYW0iOiJBbWhhcmljIiwiYXIiOiJBcmFiaWMiLCJoeSI6IkFybWVuaWFuIiwiYXoiOiJBemVyYmFpamFuaSIsImV1IjoiQmFzcXVlIiwiYmUiOiJCZWxhcnVzaWFuIiwiYm4iOiJCZW5nYWxpIiwiYnMiOiJCb3NuaWFuIiwiYmciOiJCdWxnYXJpYW4iLCJjYSI6IkNhdGFsYW4iLCJjZWIiOiJDZWJ1YW5vIiwibnkiOiJDaGljaGV3YSIsInpoLUNOIjoiQ2hpbmVzZSAoU2ltcGxpZmllZCkiLCJ6aC1UVyI6IkNoaW5lc2UgKFRyYWRpdGlvbmFsKSIsImNvIjoiQ29yc2ljYW4iLCJociI6IkNyb2F0aWFuIiwiY3MiOiJDemVjaCIsImRhIjoiRGFuaXNoIiwibmwiOiJEdXRjaCIsImVuIjoiRW5nbGlzaCIsImVvIjoiRXNwZXJhbnRvIiwiZXQiOiJFc3RvbmlhbiIsInRsIjoiRmlsaXBpbm8iLCJmaSI6IkZpbm5pc2giLCJmciI6IkZyZW5jaCIsImZ5IjoiRnJpc2lhbiIsImdsIjoiR2FsaWNpYW4iLCJrYSI6Ikdlb3JnaWFuIiwiZGUiOiJHZXJtYW4iLCJlbCI6IkdyZWVrIiwiZ3UiOiJHdWphcmF0aSIsImh0IjoiSGFpdGlhbiBDcmVvbGUiLCJoYSI6IkhhdXNhIiwiaGF3IjoiSGF3YWlpYW4iLCJpdyI6IkhlYnJldyIsImhpIjoiSGluZGkiLCJobW4iOiJIbW9uZyIsImh1IjoiSHVuZ2FyaWFuIiwiaXMiOiJJY2VsYW5kaWMiLCJpZyI6IklnYm8iLCJpZCI6IkluZG9uZXNpYW4iLCJnYSI6IklyaXNoIiwiaXQiOiJJdGFsaWFuIiwiamEiOiJKYXBhbmVzZSIsImp3IjoiSmF2YW5lc2UiLCJrbiI6Ikthbm5hZGEiLCJrayI6IkthemFraCIsImttIjoiS2htZXIiLCJrbyI6IktvcmVhbiIsImt1IjoiS3VyZGlzaCAoS3VybWFuamkpIiwia3kiOiJLeXJneXoiLCJsbyI6IkxhbyIsImxhIjoiTGF0aW4iLCJsdiI6IkxhdHZpYW4iLCJsdCI6IkxpdGh1YW5pYW4iLCJsYiI6Ikx1eGVtYm91cmdpc2giLCJtayI6Ik1hY2Vkb25pYW4iLCJtZyI6Ik1hbGFnYXN5IiwibXMiOiJNYWxheSIsIm1sIjoiTWFsYXlhbGFtIiwibXQiOiJNYWx0ZXNlIiwibWkiOiJNYW9yaSIsIm1yIjoiTWFyYXRoaSIsIm1uIjoiTW9uZ29saWFuIiwibXkiOiJNeWFubWFyIChCdXJtZXNlKSIsIm5lIjoiTmVwYWxpIiwibm8iOiJOb3J3ZWdpYW4iLCJwcyI6IlBhc2h0byIsImZhIjoiUGVyc2lhbiIsInBsIjoiUG9saXNoIiwicHQiOiJQb3J0dWd1ZXNlIiwicGEiOiJQdW5qYWJpIiwicm8iOiJSb21hbmlhbiIsInJ1IjoiUnVzc2lhbiIsInNtIjoiU2Ftb2FuIiwiZ2QiOiJTY290dGlzaCBHYWVsaWMiLCJzciI6IlNlcmJpYW4iLCJzdCI6IlNlc290aG8iLCJzbiI6IlNob25hIiwic2QiOiJTaW5kaGkiLCJzaSI6IlNpbmhhbGEiLCJzayI6IlNsb3ZhayIsInNsIjoiU2xvdmVuaWFuIiwic28iOiJTb21hbGkiLCJlcyI6IlNwYW5pc2giLCJzdSI6IlN1bmRhbmVzZSIsInN3IjoiU3dhaGlsaSIsInN2IjoiU3dlZGlzaCIsInRnIjoiVGFqaWsiLCJ0YSI6IlRhbWlsIiwidGUiOiJUZWx1Z3UiLCJ0aCI6IlRoYWkiLCJ0ciI6IlR1cmtpc2giLCJ1ayI6IlVrcmFpbmlhbiIsInVyIjoiVXJkdSIsInV6IjoiVXpiZWsiLCJ2aSI6IlZpZXRuYW1lc2UiLCJjeSI6IldlbHNoIiwieGgiOiJYaG9zYSIsInlpIjoiWWlkZGlzaCIsInlvIjoiWW9ydWJhIiwienUiOiJadWx1In07CiAgICB2YXIgbGFuZ19hcnJheV9uYXRpdmUgPSB7ImFmIjoiQWZyaWthYW5zIiwic3EiOiJTaHFpcCIsImFtIjoiXHUxMmEwXHUxMjFiXHUxMjJkXHUxMjliIiwiYXIiOiJcdTA2MjdcdTA2NDRcdTA2MzlcdTA2MzFcdTA2MjhcdTA2NGFcdTA2MjkiLCJoeSI6Ilx1MDU0MFx1MDU2MVx1MDU3NVx1MDU2NVx1MDU4MFx1MDU2NVx1MDU3NiIsImF6IjoiQXpcdTAyNTlyYmF5Y2FuIGRpbGkiLCJldSI6IkV1c2thcmEiLCJiZSI6Ilx1MDQxMVx1MDQzNVx1MDQzYlx1MDQzMFx1MDQ0MFx1MDQ0M1x1MDQ0MVx1MDQzYVx1MDQzMFx1MDQ0ZiBcdTA0M2NcdTA0M2VcdTA0MzJcdTA0MzAiLCJibiI6Ilx1MDlhY1x1MDliZVx1MDk4Mlx1MDliMlx1MDliZSIsImJzIjoiQm9zYW5za2kiLCJiZyI6Ilx1MDQxMVx1MDQ0YVx1MDQzYlx1MDQzM1x1MDQzMFx1MDQ0MFx1MDQ0MVx1MDQzYVx1MDQzOCIsImNhIjoiQ2F0YWxcdTAwZTAiLCJjZWIiOiJDZWJ1YW5vIiwibnkiOiJDaGljaGV3YSIsInpoLUNOIjoiXHU3YjgwXHU0ZjUzXHU0ZTJkXHU2NTg3IiwiemgtVFciOiJcdTdlNDFcdTlhZDRcdTRlMmRcdTY1ODciLCJjbyI6IkNvcnN1IiwiaHIiOiJIcnZhdHNraSIsImNzIjoiXHUwMTBjZVx1MDE2MXRpbmFcdTIwMGUiLCJkYSI6IkRhbnNrIiwibmwiOiJOZWRlcmxhbmRzIiwiZW4iOiJFbmdsaXNoIiwiZW8iOiJFc3BlcmFudG8iLCJldCI6IkVlc3RpIiwidGwiOiJGaWxpcGlubyIsImZpIjoiU3VvbWkiLCJmciI6IkZyYW5cdTAwZTdhaXMiLCJmeSI6IkZyeXNrIiwiZ2wiOiJHYWxlZ28iLCJrYSI6Ilx1MTBlNVx1MTBkMFx1MTBlMFx1MTBkN1x1MTBlM1x1MTBkYVx1MTBkOCIsImRlIjoiRGV1dHNjaCIsImVsIjoiXHUwMzk1XHUwM2JiXHUwM2JiXHUwM2I3XHUwM2JkXHUwM2I5XHUwM2JhXHUwM2FjIiwiZ3UiOiJcdTBhOTdcdTBhYzFcdTBhOWNcdTBhYjBcdTBhYmVcdTBhYTRcdTBhYzAiLCJodCI6IktyZXlvbCBheWlzeWVuIiwiaGEiOiJIYXJzaGVuIEhhdXNhIiwiaGF3IjoiXHUwMTRjbGVsbyBIYXdhaVx1MDJiYmkiLCJpdyI6Ilx1MDVlMlx1MDViNFx1MDVkMVx1MDViMFx1MDVlOFx1MDViNFx1MDVkOVx1MDVlYSIsImhpIjoiXHUwOTM5XHUwOTNmXHUwOTI4XHUwOTRkXHUwOTI2XHUwOTQwIiwiaG1uIjoiSG1vbmciLCJodSI6Ik1hZ3lhciIsImlzIjoiXHUwMGNkc2xlbnNrYSIsImlnIjoiSWdibyIsImlkIjoiQmFoYXNhIEluZG9uZXNpYSIsImdhIjoiR2FlaWxnZSIsIml0IjoiSXRhbGlhbm8iLCJqYSI6Ilx1NjVlNVx1NjcyY1x1OGE5ZSIsImp3IjoiQmFzYSBKYXdhIiwia24iOiJcdTBjOTVcdTBjYThcdTBjY2RcdTBjYThcdTBjYTEiLCJrayI6Ilx1MDQ5YVx1MDQzMFx1MDQzN1x1MDQzMFx1MDQ5YiBcdTA0NDJcdTA0NTZcdTA0M2JcdTA0NTYiLCJrbSI6Ilx1MTc5N1x1MTdiNlx1MTc5Zlx1MTdiNlx1MTc4MVx1MTdkMlx1MTc5OFx1MTdjMlx1MTc5YSIsImtvIjoiXHVkNTVjXHVhZDZkXHVjNWI0Iiwia3UiOiJcdTA2NDNcdTA2NDhcdTA2MzFcdTA2MmZcdTA2Y2NcdTIwMGUiLCJreSI6Ilx1MDQxYVx1MDQ0Ylx1MDQ0MFx1MDQzM1x1MDQ0Ylx1MDQzN1x1MDQ0N1x1MDQzMCIsImxvIjoiXHUwZTllXHUwZWIyXHUwZWFhXHUwZWIyXHUwZWE1XHUwZWIyXHUwZWE3IiwibGEiOiJMYXRpbiIsImx2IjoiTGF0dmllXHUwMTYxdSB2YWxvZGEiLCJsdCI6IkxpZXR1dmlcdTAxNzMga2FsYmEiLCJsYiI6IkxcdTAwZWJ0emVidWVyZ2VzY2giLCJtayI6Ilx1MDQxY1x1MDQzMFx1MDQzYVx1MDQzNVx1MDQzNFx1MDQzZVx1MDQzZFx1MDQ0MVx1MDQzYVx1MDQzOCBcdTA0NThcdTA0MzBcdTA0MzdcdTA0MzhcdTA0M2EiLCJtZyI6Ik1hbGFnYXN5IiwibXMiOiJCYWhhc2EgTWVsYXl1IiwibWwiOiJcdTBkMmVcdTBkMzJcdTBkMmZcdTBkM2VcdTBkMzNcdTBkMDIiLCJtdCI6Ik1hbHRlc2UiLCJtaSI6IlRlIFJlbyBNXHUwMTAxb3JpIiwibXIiOiJcdTA5MmVcdTA5MzBcdTA5M2VcdTA5MjBcdTA5NDAiLCJtbiI6Ilx1MDQxY1x1MDQzZVx1MDQzZFx1MDQzM1x1MDQzZVx1MDQzYiIsIm15IjoiXHUxMDE3XHUxMDE5XHUxMDJjXHUxMDA1XHUxMDJjIiwibmUiOiJcdTA5MjhcdTA5NDdcdTA5MmFcdTA5M2VcdTA5MzJcdTA5NDAiLCJubyI6Ik5vcnNrIGJva21cdTAwZTVsIiwicHMiOiJcdTA2N2VcdTA2OWFcdTA2MmFcdTA2NDgiLCJmYSI6Ilx1MDY0MVx1MDYyN1x1MDYzMVx1MDYzM1x1MDZjYyIsInBsIjoiUG9sc2tpIiwicHQiOiJQb3J0dWd1XHUwMGVhcyIsInBhIjoiXHUwYTJhXHUwYTcwXHUwYTFjXHUwYTNlXHUwYTJjXHUwYTQwIiwicm8iOiJSb21cdTAwZTJuXHUwMTAzIiwicnUiOiJcdTA0MjBcdTA0NDNcdTA0NDFcdTA0NDFcdTA0M2FcdTA0MzhcdTA0MzkiLCJzbSI6IlNhbW9hbiIsImdkIjoiR1x1MDBlMGlkaGxpZyIsInNyIjoiXHUwNDIxXHUwNDQwXHUwNDNmXHUwNDQxXHUwNDNhXHUwNDM4IFx1MDQ1OFx1MDQzNVx1MDQzN1x1MDQzOFx1MDQzYSIsInN0IjoiU2Vzb3RobyIsInNuIjoiU2hvbmEiLCJzZCI6Ilx1MDYzM1x1MDY0Nlx1MDY4Y1x1MDY0YSIsInNpIjoiXHUwZGMzXHUwZGQyXHUwZDgyXHUwZGM0XHUwZGJkIiwic2siOiJTbG92ZW5cdTAxMGRpbmEiLCJzbCI6IlNsb3Zlblx1MDE2MVx1MDEwZGluYSIsInNvIjoiQWZzb29tYWFsaSIsImVzIjoiRXNwYVx1MDBmMW9sIiwic3UiOiJCYXNhIFN1bmRhIiwic3ciOiJLaXN3YWhpbGkiLCJzdiI6IlN2ZW5za2EiLCJ0ZyI6Ilx1MDQyMlx1MDQzZVx1MDRiN1x1MDQzOFx1MDQzYVx1MDRlMyIsInRhIjoiXHUwYmE0XHUwYmFlXHUwYmJmXHUwYmI0XHUwYmNkIiwidGUiOiJcdTBjMjRcdTBjNDZcdTBjMzJcdTBjNDFcdTBjMTdcdTBjNDEiLCJ0aCI6Ilx1MGU0NFx1MGUxN1x1MGUyMiIsInRyIjoiVFx1MDBmY3JrXHUwMGU3ZSIsInVrIjoiXHUwNDIzXHUwNDNhXHUwNDQwXHUwNDMwXHUwNDU3XHUwNDNkXHUwNDQxXHUwNDRjXHUwNDNhXHUwNDMwIiwidXIiOiJcdTA2MjdcdTA2MzFcdTA2MmZcdTA2NDgiLCJ1eiI6Ik9cdTIwMTh6YmVrY2hhIiwidmkiOiJUaVx1MWViZm5nIFZpXHUxZWM3dCIsImN5IjoiQ3ltcmFlZyIsInhoIjoiaXNpWGhvc2EiLCJ5aSI6Ilx1MDVkOVx1MDVkOVx1MDVkM1x1MDVkOVx1MDVlOSIsInlvIjoiWW9yXHUwMGY5Ylx1MDBlMSIsInp1IjoiWnVsdSJ9OwoKICAgIHZhciBkZWZhdWx0X2xhbmd1YWdlID0gZ3QuZGVmYXVsdF9sYW5ndWFnZTsKICAgIHZhciBsYW5ndWFnZXMgPSBndC5sYW5ndWFnZXN8fE9iamVjdC5rZXlzKGxhbmdfYXJyYXlfZW5nbGlzaCk7CiAgICB2YXIgYWx0X2ZsYWdzID0gZ3QuYWx0X2ZsYWdzfHx7fTsKICAgIHZhciBmbGFnX3N0eWxlID0gZ3QuZmxhZ19zdHlsZXx8JzJkJzsKICAgIHZhciBmbGFnc19sb2NhdGlvbiA9IGd0LmZsYWdzX2xvY2F0aW9ufHwnaHR0cHM6Ly9jZG4uZ3RyYW5zbGF0ZS5uZXQvZmxhZ3MvJzsKICAgIHZhciB1cmxfc3RydWN0dXJlID0gZ3QudXJsX3N0cnVjdHVyZXx8J25vbmUnOwogICAgdmFyIGN1c3RvbV9kb21haW5zID0gZ3QuY3VzdG9tX2RvbWFpbnN8fHt9OwogICAgdmFyIHN3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24gPSBndC5zd2l0Y2hlcl9ob3Jpem9udGFsX3Bvc2l0aW9ufHwnbGVmdCc7CiAgICB2YXIgc3dpdGNoZXJfdmVydGljYWxfcG9zaXRpb24gPSBndC5zd2l0Y2hlcl92ZXJ0aWNhbF9wb3NpdGlvbnx8J2JvdHRvbSc7CiAgICB2YXIgZmxvYXRfc3dpdGNoZXJfb3Blbl9kaXJlY3Rpb24gPSBndC5mbG9hdF9zd2l0Y2hlcl9vcGVuX2RpcmVjdGlvbnx8J3RvcCc7CiAgICB2YXIgbmF0aXZlX2xhbmd1YWdlX25hbWVzID0gZ3QubmF0aXZlX2xhbmd1YWdlX25hbWVzfHxmYWxzZTsKICAgIHZhciBkZXRlY3RfYnJvd3Nlcl9sYW5ndWFnZSA9IGd0LmRldGVjdF9icm93c2VyX2xhbmd1YWdlfHxmYWxzZTsKICAgIHZhciB3cmFwcGVyX3NlbGVjdG9yID0gZ3Qud3JhcHBlcl9zZWxlY3Rvcnx8Jy5ndHJhbnNsYXRlX3dyYXBwZXInOwoKICAgIHZhciBjdXN0b21fY3NzID0gZ3QuY3VzdG9tX2Nzc3x8Jyc7CiAgICB2YXIgbGFuZ19hcnJheSA9IG5hdGl2ZV9sYW5ndWFnZV9uYW1lcyAmJiBsYW5nX2FycmF5X25hdGl2ZSB8fCBsYW5nX2FycmF5X2VuZ2xpc2g7CgogICAgdmFyIHVfY2xhc3MgPSAnLmd0X2NvbnRhaW5lci0nK0FycmF5LmZyb20oJ2Zsb2F0Jyt3cmFwcGVyX3NlbGVjdG9yKS5yZWR1Y2UoZnVuY3Rpb24oaCxjKXtyZXR1cm4gMHwoMzEqaCtjLmNoYXJDb2RlQXQoMCkpfSwwKS50b1N0cmluZygzNik7CgogICAgdmFyIHdpZGdldF9jb2RlID0gJzwhLS0gR1RyYW5zbGF0ZTogaHR0cHM6Ly9ndHJhbnNsYXRlLmNvbSAtLT4nOwogICAgdmFyIHdpZGdldF9jc3MgPSBjdXN0b21fY3NzOwoKICAgIGZsYWdzX2xvY2F0aW9uICs9IChmbGFnX3N0eWxlPT0nM2QnPzMyOidzdmcnKSsnLyc7CiAgICB2YXIgZmxhZ19leHQgPSBmbGFnX3N0eWxlPT0nM2QnPycucG5nJzonLnN2Zyc7CgogICAgLy8gaGVscGVyIGZ1bmN0aW9ucwogICAgZnVuY3Rpb24gZ2V0X2ZsYWdfc3JjKGxhbmcpIHsKICAgICAgICBpZighYWx0X2ZsYWdzW2xhbmddKQogICAgICAgICAgICByZXR1cm4gZmxhZ3NfbG9jYXRpb24rbGFuZytmbGFnX2V4dDsKICAgICAgICBlbHNlIGlmKGFsdF9mbGFnc1tsYW5nXSA9PSAndXNhJykKICAgICAgICAgICAgcmV0dXJuIGZsYWdzX2xvY2F0aW9uKydlbi11cycrZmxhZ19leHQ7CiAgICAgICAgZWxzZSBpZihhbHRfZmxhZ3NbbGFuZ10gPT0gJ2NhbmFkYScpCiAgICAgICAgICAgIHJldHVybiBmbGFnc19sb2NhdGlvbisnZW4tY2EnK2ZsYWdfZXh0OwogICAgICAgIGVsc2UgaWYoYWx0X2ZsYWdzW2xhbmddID09ICdicmF6aWwnKQogICAgICAgICAgICByZXR1cm4gZmxhZ3NfbG9jYXRpb24rJ3B0LWJyJytmbGFnX2V4dDsKICAgICAgICBlbHNlIGlmKGFsdF9mbGFnc1tsYW5nXSA9PSAnbWV4aWNvJykKICAgICAgICAgICAgcmV0dXJuIGZsYWdzX2xvY2F0aW9uKydlcy1teCcrZmxhZ19leHQ7CiAgICAgICAgZWxzZSBpZihhbHRfZmxhZ3NbbGFuZ10gPT0gJ2FyZ2VudGluYScpCiAgICAgICAgICAgIHJldHVybiBmbGFnc19sb2NhdGlvbisnZXMtYXInK2ZsYWdfZXh0OwogICAgICAgIGVsc2UgaWYoYWx0X2ZsYWdzW2xhbmddID09ICdjb2xvbWJpYScpCiAgICAgICAgICAgIHJldHVybiBmbGFnc19sb2NhdGlvbisnZXMtY28nK2ZsYWdfZXh0OwogICAgICAgIGVsc2UgaWYoYWx0X2ZsYWdzW2xhbmddID09ICdxdWViZWMnKQogICAgICAgICAgICByZXR1cm4gZmxhZ3NfbG9jYXRpb24rJ2ZyLXFjJytmbGFnX2V4dDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBhbHRfZmxhZ3NbbGFuZ107CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X2xhbmdfaHJlZihsYW5nKSB7CiAgICAgICAgdmFyIGhyZWYgPSAnIyc7CgogICAgICAgIGlmKHVybF9zdHJ1Y3R1cmUgPT0gJ3N1Yl9kaXJlY3RvcnknKSB7CiAgICAgICAgICAgIHZhciBndF9yZXF1ZXN0X3VyaSA9IChkb2N1bWVudC5jdXJyZW50U2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1ndC1vcmlnLXVybCcpIHx8IChsb2NhdGlvbi5wYXRobmFtZS5zdGFydHNXaXRoKCcvJytjdXJyZW50X2xhbmcrJy8nKSAmJiAnLycrbG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKS5zbGljZSgyKS5qb2luKCcvJykgfHwgbG9jYXRpb24ucGF0aG5hbWUpKSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2g7CiAgICAgICAgICAgIGhyZWYgPSAobGFuZyA9PSBkZWZhdWx0X2xhbmd1YWdlKSAmJiBsb2NhdGlvbi5wcm90b2NvbCsnLy8nK2xvY2F0aW9uLmhvc3RuYW1lK2d0X3JlcXVlc3RfdXJpIHx8IGxvY2F0aW9uLnByb3RvY29sKycvLycrbG9jYXRpb24uaG9zdG5hbWUrJy8nK2xhbmcrZ3RfcmVxdWVzdF91cmk7CiAgICAgICAgfSBlbHNlIGlmKHVybF9zdHJ1Y3R1cmUgPT0gJ3N1Yl9kb21haW4nKSB7CiAgICAgICAgICAgIHZhciBndF9yZXF1ZXN0X3VyaSA9IChkb2N1bWVudC5jdXJyZW50U2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1ndC1vcmlnLXVybCcpIHx8IGxvY2F0aW9uLnBhdGhuYW1lKSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2g7CiAgICAgICAgICAgIHZhciBkb21haW4gPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1ndC1vcmlnLWRvbWFpbicpIHx8IGxvY2F0aW9uLmhvc3RuYW1lOwogICAgICAgICAgICBpZih0eXBlb2YgY3VzdG9tX2RvbWFpbnMgPT0gJ29iamVjdCcgJiYgY3VzdG9tX2RvbWFpbnNbbGFuZ10pCiAgICAgICAgICAgICAgICBocmVmID0gKGxhbmcgPT0gZGVmYXVsdF9sYW5ndWFnZSkgJiYgbG9jYXRpb24ucHJvdG9jb2wrJy8vJytkb21haW4rZ3RfcmVxdWVzdF91cmkgfHwgbG9jYXRpb24ucHJvdG9jb2wrJy8vJytjdXN0b21fZG9tYWluc1tsYW5nXStndF9yZXF1ZXN0X3VyaTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaHJlZiA9IChsYW5nID09IGRlZmF1bHRfbGFuZ3VhZ2UpICYmIGxvY2F0aW9uLnByb3RvY29sKycvLycrZG9tYWluK2d0X3JlcXVlc3RfdXJpIHx8IGxvY2F0aW9uLnByb3RvY29sKycvLycrbGFuZysnLicrZG9tYWluLnJlcGxhY2UoL153d3dcLi8sICcnKStndF9yZXF1ZXN0X3VyaTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBocmVmOwogICAgfQoKICAgIHZhciBjdXJyZW50X2xhbmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykuZ2V0QXR0cmlidXRlKCdsYW5nJyl8fGRlZmF1bHRfbGFuZ3VhZ2U7CiAgICBpZih1cmxfc3RydWN0dXJlID09ICdub25lJykgewogICAgICAgIHZhciBnb29ndHJhbnNfbWF0Y2hlcyA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaCgnKF58OykgP2dvb2d0cmFucz0oW147XSopKDt8JCknKTsKICAgICAgICBjdXJyZW50X2xhbmcgPSBnb29ndHJhbnNfbWF0Y2hlcyAmJiBnb29ndHJhbnNfbWF0Y2hlc1syXS5zcGxpdCgnLycpWzJdIHx8IGN1cnJlbnRfbGFuZzsKICAgIH0KCiAgICBpZighbGFuZ19hcnJheVtjdXJyZW50X2xhbmddKQogICAgICAgIGN1cnJlbnRfbGFuZyA9IGRlZmF1bHRfbGFuZ3VhZ2U7CgogICAgaWYodXJsX3N0cnVjdHVyZSA9PSAnbm9uZScpIHsKICAgICAgICB3aWRnZXRfY29kZSArPSAnPGRpdiBpZD0iZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50MiI+PC9kaXY+JzsKCiAgICAgICAgd2lkZ2V0X2NzcyArPSAiZGl2LnNraXB0cmFuc2xhdGUsI2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDJ7ZGlzcGxheTpub25lIWltcG9ydGFudH0iOwogICAgICAgIHdpZGdldF9jc3MgKz0gImJvZHl7dG9wOjAhaW1wb3J0YW50fSI7CiAgICAgICAgd2lkZ2V0X2NzcyArPSAiZm9udCBmb250e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7cG9zaXRpb246aW5pdGlhbCFpbXBvcnRhbnR9IjsKICAgIH0KCiAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXJ7Zm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjIwcHg7Ym9yZGVyLXJhZGl1czoycHg7Y29sb3I6IzU1NTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyMHB4O2JveC1zaGFkb3c6cmdiYSgwLDAsMCwwLjE1KSAwIDVweCAxNXB4O2JhY2tncm91bmQ6I2ZmZjtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjphbGwgLjVzIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpfSc7CiAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXIgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozM3B4O2hlaWdodDphdXRvO21hcmdpbjowIDVweCAwIDA7Ym9yZGVyLXJhZGl1czozcHh9JzsKICAgIGlmKGZsb2F0X3N3aXRjaGVyX29wZW5fZGlyZWN0aW9uID09ICdsZWZ0JyB8fCBmbG9hdF9zd2l0Y2hlcl9vcGVuX2RpcmVjdGlvbiA9PSAncmlnaHQnKSB7CiAgICAgICAgdmFyIG1heF93aWR0aCA9IDAuNyAqIHdpbmRvdy5pbm5lcldpZHRoIC0gMTIwOwogICAgICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAwMCkKICAgICAgICAgICAgbWF4X3dpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSAyNjA7CiAgICAgICAgbWF4X3dpZHRoICs9ICdweCc7CgogICAgICAgIGlmKHN3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24gPT0gJ2lubGluZScpCiAgICAgICAgICAgIG1heF93aWR0aCA9ICdjYWxjKDEwMCUgLSAxMjJweCknOwoKICAgICAgICAvLyB0b2RvOiBvcHRpbWl6ZQogICAgICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9uc3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojc3Nzt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxvYXQ6JytmbG9hdF9zd2l0Y2hlcl9vcGVuX2RpcmVjdGlvbisnO21heC13aWR0aDonK21heF93aWR0aCsnO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtJyt3aW5kb3cuaW5uZXJXaWR0aCsncHgpO29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmFsbCAuOHMgY3ViaWMtYmV6aWVyKC4zLDEuMSwuNCwxLjEpfSc7CiAgICAgICAgd2lkZ2V0X2NzcyArPSAnLmd0X2Zsb2F0X3N3aXRjaGVyIC5ndF9vcHRpb25zIGF7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cGFkZGluZzonKyhmbGFnX3N0eWxlPT0nM2QnPzY6MTApKydweCAxNXB4O2NvbG9yOiM0NDQ7dHJhbnNpdGlvbjpjb2xvciAuNHMgbGluZWFyfSc7CiAgICAgICAgd2lkZ2V0X2NzcyArPSAnLmd0X2Zsb2F0X3N3aXRjaGVyIC5ndC1zZWxlY3RlZHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojg4ODtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZmxvYXQ6bGVmdDtjdXJzb3I6cG9pbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3ZlcmZsb3c6aGlkZGVuOycrKHN3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24gIT0gJ2lubGluZScgJiYgJ3RleHQtYWxpZ246Jytzd2l0Y2hlcl9ob3Jpem9udGFsX3Bvc2l0aW9uKSsnfSc7CiAgICB9IGVsc2UgewogICAgICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9uc3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojc3NzttYXgtaGVpZ2h0OjI1MHB4O292ZXJmbG93LXk6YXV0bzt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMzBweCk7b3BhY2l0eTowO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIC44cyBjdWJpYy1iZXppZXIoLjMsMS4xLC40LDEuMSl9JzsKICAgICAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXIgLmd0X29wdGlvbnMgYXtkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lO3BhZGRpbmc6JysoZmxhZ19zdHlsZT09JzNkJz82OjEwKSsncHggMTVweDtjb2xvcjojNDQ0O3RyYW5zaXRpb246Y29sb3IgLjRzIGxpbmVhcn0nOwogICAgICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Qtc2VsZWN0ZWR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDo4ODg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtvdmVyZmxvdzpoaWRkZW47Jysoc3dpdGNoZXJfaG9yaXpvbnRhbF9wb3NpdGlvbiAhPSAnaW5saW5lJyAmJiAndGV4dC1hbGlnbjonK3N3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24pKyd9JzsKICAgIH0KICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9ucy5ndC1vcGVue29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpfSc7CgogICAgd2lkZ2V0X2NzcyArPSAnLmd0X2Zsb2F0X3N3aXRjaGVyIC5ndF9vcHRpb25zOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9JzsKICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9uczo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6NXB4fSc7CiAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXIgLmd0X29wdGlvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6Izg4OH0nOwogICAgd2lkZ2V0X2NzcyArPSAnLmd0X2Zsb2F0X3N3aXRjaGVyIC5ndF9vcHRpb25zIGE6aG92ZXJ7YmFja2dyb3VuZDojNjA3MGEwO2NvbG9yOiNmZmZ9JzsKICAgIHdpZGdldF9jc3MgKz0gJy5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9ucyBhLmd0LWN1cnJlbnR7ZGlzcGxheTpub25lfSc7CiAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXIgLmd0LXNlbGVjdGVkIC5ndC1jdXJyZW50LWxhbmd7cGFkZGluZzonKyhmbGFnX3N0eWxlPT0nM2QnPzY6MTApKydweCAxNXB4O2NvbG9yOiMzMzM7Zm9udC13ZWlnaHQ6Ym9sZH0nOwogICAgd2lkZ2V0X2NzcyArPSAnLmd0X2Zsb2F0X3N3aXRjaGVyIC5ndC1zZWxlY3RlZCAuZ3QtY3VycmVudC1sYW5nIHNwYW4uZ3QtbGFuZy1jb2Rle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHh9JzsKCiAgICB2YXIgYXJyX2FuZ2xlID0gKGZsb2F0X3N3aXRjaGVyX29wZW5fZGlyZWN0aW9uID09ICdsZWZ0J3x8ZmxvYXRfc3dpdGNoZXJfb3Blbl9kaXJlY3Rpb24gPT0gJ3JpZ2h0Jyk/OTA6MDsKICAgIHdpZGdldF9jc3MgKz0gIi5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Qtc2VsZWN0ZWQgLmd0LWN1cnJlbnQtbGFuZyBzcGFuLmd0X2Zsb2F0X3N3aXRjaGVyLWFycm93e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O3dpZHRoOjE1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDI4NSAyODUnPjxwYXRoIGQ9J00yODIgNzYuNWwtMTQuMi0xNC4zYTkgOSAwIDAgMC0xMy4xIDBMMTQyLjUgMTc0LjQgMzAuMyA2Mi4yYTkgOSAwIDAgMC0xMy4yIDBMMyA3Ni41YTkgOSAwIDAgMCAwIDEzLjFsMTMzIDEzM2E5IDkgMCAwIDAgMTMuMSAwbDEzMy0xMzNhOSA5IDAgMCAwIDAtMTN6JyBzdHlsZT0nZmlsbDolMjM2NjYnLz48L3N2Zz5cIik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1zaXplOjExcHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3RyYW5zaXRpb246YWxsIC4zczt0cmFuc2Zvcm06cm90YXRlKCIrKGFycl9hbmdsZS0xODApKyJkZWcpfSI7CiAgICB3aWRnZXRfY3NzICs9ICcuZ3RfZmxvYXRfc3dpdGNoZXIgLmd0LXNlbGVjdGVkIC5ndC1jdXJyZW50LWxhbmcgc3Bhbi5ndF9mbG9hdF9zd2l0Y2hlci1hcnJvdy5ndF9hcnJvd19yb3RhdGV7dHJhbnNmb3JtOnJvdGF0ZSgnK2Fycl9hbmdsZSsnZGVnKX0nOwoKICAgIGlmKHN3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24gPT0gJ2lubGluZScpCiAgICAgICAgd2lkZ2V0X2NvZGUgKz0gJzxkaXYgaWQ9Imd0X2Zsb2F0X3dyYXBwZXIiPjxkaXYgY2xhc3M9Imd0X2Zsb2F0X3N3aXRjaGVyIG5vdHJhbnNsYXRlIiBzdHlsZT0ib3BhY2l0eTowIj4nOwogICAgZWxzZQogICAgICAgIHdpZGdldF9jb2RlICs9ICc8ZGl2IGlkPSJndF9mbG9hdF93cmFwcGVyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7Jytzd2l0Y2hlcl92ZXJ0aWNhbF9wb3NpdGlvbisnOjIwcHg7Jytzd2l0Y2hlcl9ob3Jpem9udGFsX3Bvc2l0aW9uKyc6MjBweDt6LWluZGV4Ojk5OTk5OTsiPjxkaXYgY2xhc3M9Imd0X2Zsb2F0X3N3aXRjaGVyIG5vdHJhbnNsYXRlIiBzdHlsZT0ib3BhY2l0eTowIj4nOwoKICAgIHZhciBndF9jdXJyZW50X2RpdiA9ICc8ZGl2IGNsYXNzPSJndC1zZWxlY3RlZCI+PGRpdiBjbGFzcz0iZ3QtY3VycmVudC1sYW5nIj48aW1nIHNyYz0iJytnZXRfZmxhZ19zcmMoY3VycmVudF9sYW5nKSsnIiBhbHQ9IicrY3VycmVudF9sYW5nKyciPiA8c3BhbiBjbGFzcz0iZ3QtbGFuZy1jb2RlIj4nK2N1cnJlbnRfbGFuZysnPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RfZmxvYXRfc3dpdGNoZXItYXJyb3ciPjwvc3Bhbj48L2Rpdj48L2Rpdj4nOwogICAgdmFyIGd0X29wdGlvbnNfZGl2ID0gJzxkaXYgY2xhc3M9Imd0X29wdGlvbnMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPic7CiAgICBsYW5ndWFnZXMuZm9yRWFjaChmdW5jdGlvbihsYW5nKSB7CiAgICAgICAgdmFyIGVsX2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgZWxfYS5ocmVmID0gZ2V0X2xhbmdfaHJlZihsYW5nKTsKICAgICAgICBlbF9hLmNsYXNzTGlzdC5hZGQoJ250dXJsJyk7CiAgICAgICAgY3VycmVudF9sYW5nID09IGxhbmcgJiYgZWxfYS5jbGFzc0xpc3QuYWRkKCdndC1jdXJyZW50Jyk7CiAgICAgICAgZWxfYS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QtbGFuZycsIGxhbmcpOwoKICAgICAgICB2YXIgZWxfaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CiAgICAgICAgZWxfaW1nLnNldEF0dHJpYnV0ZSgnZGF0YS1ndC1sYXp5LXNyYycsIGdldF9mbGFnX3NyYyhsYW5nKSk7CiAgICAgICAgZWxfaW1nLmFsdCA9IGxhbmc7CgogICAgICAgIGVsX2EuYXBwZW5kQ2hpbGQoZWxfaW1nKTsKICAgICAgICBlbF9hLmlubmVySFRNTCArPSAnICcgKyBsYW5nX2FycmF5W2xhbmddOwoKICAgICAgICBndF9vcHRpb25zX2RpdiArPSBlbF9hLm91dGVySFRNTDsKICAgIH0pOwogICAgZ3Rfb3B0aW9uc19kaXYgKz0gJzwvZGl2Pic7CgogICAgaWYoKHN3aXRjaGVyX3ZlcnRpY2FsX3Bvc2l0aW9uID09ICd0b3AnICYmIGZsb2F0X3N3aXRjaGVyX29wZW5fZGlyZWN0aW9uID09ICdib3R0b20nKSB8fCAoc3dpdGNoZXJfdmVydGljYWxfcG9zaXRpb24gPT0gJ2JvdHRvbScgJiYgZmxvYXRfc3dpdGNoZXJfb3Blbl9kaXJlY3Rpb24gPT0gJ2JvdHRvbScpKQogICAgICAgIHdpZGdldF9jb2RlICs9IGd0X2N1cnJlbnRfZGl2ICsgZ3Rfb3B0aW9uc19kaXY7CiAgICBlbHNlCiAgICAgICAgd2lkZ2V0X2NvZGUgKz0gZ3Rfb3B0aW9uc19kaXYgKyBndF9jdXJyZW50X2RpdjsKCiAgICB3aWRnZXRfY29kZSArPSAnPC9kaXY+PC9kaXY+JzsKCiAgICB2YXIgYWRkX2NzcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICBhZGRfY3NzLmNsYXNzTGlzdC5hZGQoJ2d0cmFuc2xhdGVfY3NzJyk7CiAgICBhZGRfY3NzLnRleHRDb250ZW50ID0gd2lkZ2V0X2NzczsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYWRkX2Nzcyk7CgogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh3cmFwcGVyX3NlbGVjdG9yKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LmFkZCh1X2NsYXNzLnN1YnN0cmluZygxKSk7ZS5pbm5lckhUTUwrPXdpZGdldF9jb2RlfSk7CgogICAgaWYodXJsX3N0cnVjdHVyZSA9PSAnbm9uZScpIHsKICAgICAgICBmdW5jdGlvbiBnZXRfY3VycmVudF9sYW5nKCkge3ZhciBrZXlWYWx1ZSA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaCgnKF58OykgP2dvb2d0cmFucz0oW147XSopKDt8JCknKTtyZXR1cm4ga2V5VmFsdWUgPyBrZXlWYWx1ZVsyXS5zcGxpdCgnLycpWzJdIDogbnVsbDt9CiAgICAgICAgZnVuY3Rpb24gZmlyZV9ldmVudChlbGVtZW50LGV2ZW50KXt0cnl7aWYoZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3Qpe3ZhciBldnQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTtlbGVtZW50LmZpcmVFdmVudCgnb24nK2V2ZW50LGV2dCl9ZWxzZXt2YXIgZXZ0PWRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7ZXZ0LmluaXRFdmVudChldmVudCx0cnVlLHRydWUpO2VsZW1lbnQuZGlzcGF0Y2hFdmVudChldnQpfX1jYXRjaChlKXt9fQogICAgICAgIGZ1bmN0aW9uIGxvYWRfdGxpYigpe2lmKCF3aW5kb3cuZ3RfdHJhbnNsYXRlX3NjcmlwdCl7d2luZG93Lmd0X3RyYW5zbGF0ZV9zY3JpcHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7Z3RfdHJhbnNsYXRlX3NjcmlwdC5zcmM9J2h0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20vdHJhbnNsYXRlX2EvZWxlbWVudC5qcz9jYj1nb29nbGVUcmFuc2xhdGVFbGVtZW50SW5pdDInO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZ3RfdHJhbnNsYXRlX3NjcmlwdCk7fX0KICAgICAgICB3aW5kb3cuZG9HVHJhbnNsYXRlID0gZnVuY3Rpb24obGFuZ19wYWlyKXtpZihsYW5nX3BhaXIudmFsdWUpbGFuZ19wYWlyPWxhbmdfcGFpci52YWx1ZTtpZihsYW5nX3BhaXI9PScnKXJldHVybjt2YXIgbGFuZz1sYW5nX3BhaXIuc3BsaXQoJ3wnKVsxXTtpZihnZXRfY3VycmVudF9sYW5nKCkgPT0gbnVsbCAmJiBsYW5nID09IGxhbmdfcGFpci5zcGxpdCgnfCcpWzBdKXJldHVybjt2YXIgdGVDb21ibzt2YXIgc2VsPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTtmb3IodmFyIGk9MDtpPHNlbC5sZW5ndGg7aSsrKWlmKHNlbFtpXS5jbGFzc05hbWUuaW5kZXhPZignZ29vZy10ZS1jb21ibycpIT0tMSl7dGVDb21ibz1zZWxbaV07YnJlYWs7fWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQyJyk9PW51bGx8fGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQyJykuaW5uZXJIVE1MLmxlbmd0aD09MHx8dGVDb21iby5sZW5ndGg9PTB8fHRlQ29tYm8uaW5uZXJIVE1MLmxlbmd0aD09MCl7c2V0VGltZW91dChmdW5jdGlvbigpe2RvR1RyYW5zbGF0ZShsYW5nX3BhaXIpfSw1MDApfWVsc2V7dGVDb21iby52YWx1ZT1sYW5nO2ZpcmVfZXZlbnQodGVDb21ibywnY2hhbmdlJyk7ZmlyZV9ldmVudCh0ZUNvbWJvLCdjaGFuZ2UnKX19CiAgICAgICAgd2luZG93Lmdvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0Mj1mdW5jdGlvbigpe25ldyBnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQoe3BhZ2VMYW5ndWFnZTpkZWZhdWx0X2xhbmd1YWdlLGF1dG9EaXNwbGF5OmZhbHNlfSwnZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50MicpfTsKCiAgICAgICAgaWYoY3VycmVudF9sYW5nICE9IGRlZmF1bHRfbGFuZ3VhZ2UpCiAgICAgICAgICAgIGxvYWRfdGxpYigpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh1X2NsYXNzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmVudGVyJyxsb2FkX3RsaWIpO2UuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsbG9hZF90bGliKX0pOwogICAgfQoKICAgIHZhciBndF9mbG9hdF9vcGVuID0gZmFsc2U7CiAgICBmdW5jdGlvbiBndF9oc2Nyb2xsKGV2dCl7dmFyIHRndCA9IGV2dC50YXJnZXQ7aWYodGd0LnRhZ05hbWUgPT0gJ0EnKXRndD10Z3QucGFyZW50Tm9kZTtlbHNlIGlmKHRndC50YWdOYW1lID09ICdJTUcnKXRndD10Z3QucGFyZW50Tm9kZS5wYXJlbnROb2RlO2lmKGV2dC50eXBlID09ICdtb3VzZXdoZWVsJyl7ZXZ0LnByZXZlbnREZWZhdWx0KCk7dGd0LnNjcm9sbExlZnQgLT0gTWF0aC5zaWduKGV2dC53aGVlbERlbHRhKSAqIDg4O31lbHNlIGlmKGV2dC50eXBlID09ICd0b3VjaHN0YXJ0Jyl7Z3RfdG91Y2hzdGFydF9wb3N4ID0gZ3RfdG91Y2hzdGFydF9wb3N4X3N0YXRpYyA9IGV2dC50b3VjaGVzWzBdLnBhZ2VYO2d0X3RvdWNoc3RhcnRfdGltZXN0YW1wID0gZXZ0LnRpbWVTdGFtcDt9ZWxzZSBpZihldnQudHlwZSA9PSAndG91Y2htb3ZlJyl7ZXZ0LnByZXZlbnREZWZhdWx0KCk7dGd0LnNjcm9sbExlZnQgKz0gTWF0aC5zaWduKGd0X3RvdWNoc3RhcnRfcG9zeCAtIGV2dC50b3VjaGVzWzBdLnBhZ2VYKSAqIDEwO2d0X3RvdWNoc3RhcnRfcG9zeCA9IGV2dC50b3VjaGVzWzBdLnBhZ2VYO31lbHNlIGlmKGV2dC50eXBlID09ICd0b3VjaGVuZCcpe3ZhciBzY3JvbGxfc3BlZWQgPSAoZ3RfdG91Y2hzdGFydF9wb3N4X3N0YXRpYyAtIGV2dC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCkgLyAoZXZ0LnRpbWVTdGFtcCAtIGd0X3RvdWNoc3RhcnRfdGltZXN0YW1wKTt0Z3Quc2Nyb2xsVG8oe2xlZnQ6IHRndC5zY3JvbGxMZWZ0ICsgc2Nyb2xsX3NwZWVkICogNTAwLCBiZWhhdmlvcjogJ3Ntb290aCd9KTt9fQogICAgZnVuY3Rpb24gZ3Rfc2hvd19mbG9hdF9zd2l0Y2hlcihlbCl7CiAgICAgICAgZ3RfZmxvYXRfb3Blbj10cnVlOwogICAgICAgIGlmKHN3aXRjaGVyX2hvcml6b250YWxfcG9zaXRpb24gPT0gJ2lubGluZScpCiAgICAgICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3IodV9jbGFzcyArICcgLmd0X29wdGlvbnMnKS5zdHlsZS5tYXhXaWR0aCA9IChlbC5wYXJlbnROb2RlLmNsaWVudFdpZHRoIC0gZWwuY2xpZW50V2lkdGggLSAxKSArICdweCc7CiAgICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCh1X2NsYXNzICsgJyAuZ3Rfb3B0aW9ucyBhIGltZzpub3QoW3NyY10pJykuZm9yRWFjaChmdW5jdGlvbihpbWcpe2ltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QtbGF6eS1zcmMnKSk7fSk7CiAgICAgICAgZWwucXVlcnlTZWxlY3Rvcih1X2NsYXNzICsgJyAuZ3Qtc2VsZWN0ZWQgc3Bhbi5ndF9mbG9hdF9zd2l0Y2hlci1hcnJvdycpLmNsYXNzTGlzdC5hZGQoJ2d0X2Fycm93X3JvdGF0ZScpOwogICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGwodV9jbGFzcyArICcgLmd0X29wdGlvbnMnKS5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICAgICAgICBlLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QuYWRkKCdndC1vcGVuJyk7CiAgICAgICAgICAgICAgICBpZihmbG9hdF9zd2l0Y2hlcl9vcGVuX2RpcmVjdGlvbiA9PSAnbGVmdCcgfHwgZmxvYXRfc3dpdGNoZXJfb3Blbl9kaXJlY3Rpb24gPT0gJ3JpZ2h0JykgewogICAgICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICAgICAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZ3RfaHNjcm9sbCk7CiAgICAgICAgICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LDIwMCk7CiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBndF9oaWRlX2Zsb2F0X3N3aXRjaGVyKCl7CiAgICAgICAgZ3RfZmxvYXRfb3Blbj1mYWxzZTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHVfY2xhc3MgKyAnIC5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Qtc2VsZWN0ZWQgc3Bhbi5ndF9mbG9hdF9zd2l0Y2hlci1hcnJvdy5ndF9hcnJvd19yb3RhdGUnKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LnJlbW92ZSgnZ3RfYXJyb3dfcm90YXRlJyl9KTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHVfY2xhc3MgKyAnIC5ndF9mbG9hdF9zd2l0Y2hlciAuZ3Rfb3B0aW9ucy5ndC1vcGVuJykuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgICAgICAgaWYoZmxvYXRfc3dpdGNoZXJfb3Blbl9kaXJlY3Rpb24gPT0gJ2xlZnQnIHx8IGZsb2F0X3N3aXRjaGVyX29wZW5fZGlyZWN0aW9uID09ICdyaWdodCcpIHsKICAgICAgICAgICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZ3RfaHNjcm9sbCk7CiAgICAgICAgICAgICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGd0X2hzY3JvbGwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZSgnZ3Qtb3BlbicpOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PSdub25lJ30sMjAwKTsKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGd0X3VwZGF0ZV9mbG9hdF9sYW5ndWFnZShlbCl7CiAgICAgICAgdmFyIGxhbmc9ZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWd0LWxhbmcnKTsKICAgICAgICB2YXIgaW1nX3NyYz1lbC5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoJ2FbZGF0YS1ndC1sYW5nPSInK2xhbmcrJyJdIGltZycpLmdldEF0dHJpYnV0ZSgnc3JjJyk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe2VsLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcignYS5ndC1jdXJyZW50JykuY2xhc3NMaXN0LnJlbW92ZSgnZ3QtY3VycmVudCcpO2VsLmNsYXNzTGlzdC5hZGQoJ2d0LWN1cnJlbnQnKTt9LDQwMCk7CiAgICAgICAgZWwucGFyZW50Tm9kZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5ndC1zZWxlY3RlZCBpbWcnKS5zZXRBdHRyaWJ1dGUoJ3NyYycsaW1nX3NyYyk7CiAgICAgICAgZWwucGFyZW50Tm9kZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5ndC1zZWxlY3RlZCBzcGFuLmd0LWxhbmctY29kZScpLmlubmVyVGV4dD1sYW5nOwogICAgICAgIGd0X2hpZGVfZmxvYXRfc3dpdGNoZXIoKTsKICAgIH0KCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh1X2NsYXNzICsgJyAuZ3RfZmxvYXRfc3dpdGNoZXInKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc3R5bGUub3BhY2l0eT0xfSl9LDIwKTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodV9jbGFzcyArICcgYVtkYXRhLWd0LWxhbmddJykuZm9yRWFjaChmdW5jdGlvbihlKXtlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihldnQpewogICAgICAgIGlmKHVybF9zdHJ1Y3R1cmUgPT0gJ25vbmUnKSB7CiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBkb0dUcmFuc2xhdGUoZGVmYXVsdF9sYW5ndWFnZSsnfCcrZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QtbGFuZycpKTsKICAgICAgICB9CiAgICAgICAgZ3RfdXBkYXRlX2Zsb2F0X2xhbmd1YWdlKGUpOwogICAgfSl9KTsKCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHVfY2xhc3MgKyAnIGRpdi5ndC1zZWxlY3RlZCcpLmZvckVhY2goZnVuY3Rpb24oZSl7CiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZXZ0KXtldnQuc3RvcFByb3BhZ2F0aW9uKCk7aWYoZ3RfZmxvYXRfb3BlbilndF9oaWRlX2Zsb2F0X3N3aXRjaGVyKCk7ZWxzZSBndF9zaG93X2Zsb2F0X3N3aXRjaGVyKGUucGFyZW50Tm9kZSk7fSk7CiAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZW50ZXInLGZ1bmN0aW9uKGV2dCl7ZXZ0LnRhcmdldC5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ndF9vcHRpb25zIGltZzpub3QoW3NyY10pJykuZm9yRWFjaChmdW5jdGlvbihpbWcpe2ltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZ3QtbGF6eS1zcmMnKSl9KX0pOwogICAgfSk7CgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7aWYoZ3RfZmxvYXRfb3BlbilndF9oaWRlX2Zsb2F0X3N3aXRjaGVyKCl9KTsKCiAgICBpZihkZXRlY3RfYnJvd3Nlcl9sYW5ndWFnZSAmJiB3aW5kb3cubG9jYWxTdG9yYWdlICYmIHdpbmRvdy5uYXZpZ2F0b3IgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2d0X2F1dG9zd2l0Y2gnKSA9PSBudWxsICYmICEvYm90fHNwaWRlcnxzbHVycHxmYWNlYm9vay9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKICAgICAgICB2YXIgYWNjZXB0X2xhbmd1YWdlID0gKG5hdmlnYXRvci5sYW5ndWFnZXx8bmF2aWdhdG9yLnVzZXJMYW5ndWFnZSkudG9Mb3dlckNhc2UoKTsKICAgICAgICBzd2l0Y2goYWNjZXB0X2xhbmd1YWdlKSB7CiAgICAgICAgICAgIGNhc2UgJ3poJzoKICAgICAgICAgICAgY2FzZSAnemgtY24nOnZhciBwcmVmZXJyZWRfbGFuZ3VhZ2UgPSAnemgtQ04nO2JyZWFrOwogICAgICAgICAgICBjYXNlICd6aC10dyc6CiAgICAgICAgICAgIGNhc2UgJ3poLWhrJzp2YXIgcHJlZmVycmVkX2xhbmd1YWdlID0gJ3poLVRXJzticmVhazsKICAgICAgICAgICAgY2FzZSAnaGUnOnZhciBwcmVmZXJyZWRfbGFuZ3VhZ2UgPSAnaXcnO2JyZWFrOwogICAgICAgICAgICBkZWZhdWx0OnZhciBwcmVmZXJyZWRfbGFuZ3VhZ2UgPSBhY2NlcHRfbGFuZ3VhZ2Uuc3Vic3RyKDAsMik7YnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZihjdXJyZW50X2xhbmcgPT0gZGVmYXVsdF9sYW5ndWFnZSAmJiBwcmVmZXJyZWRfbGFuZ3VhZ2UgIT0gZGVmYXVsdF9sYW5ndWFnZSAmJiBsYW5ndWFnZXMuaW5jbHVkZXMocHJlZmVycmVkX2xhbmd1YWdlKSkgewogICAgICAgICAgICBpZih1cmxfc3RydWN0dXJlID09ICdub25lJykgewogICAgICAgICAgICAgICAgbG9hZF90bGliKCk7CiAgICAgICAgICAgICAgICB3aW5kb3cuZ3RfdHJhbnNsYXRlX3NjcmlwdC5vbmxvYWQ9ZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICBkb0dUcmFuc2xhdGUoZGVmYXVsdF9sYW5ndWFnZSsnfCcrcHJlZmVycmVkX2xhbmd1YWdlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHVfY2xhc3MrJyBhW2RhdGEtZ3QtbGFuZz0iJytwcmVmZXJyZWRfbGFuZ3VhZ2UrJyJdJyk7CiAgICAgICAgICAgICAgICAgICAgZWwucXVlcnlTZWxlY3RvckFsbCgnaW1nOm5vdChbc3JjXSknKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKCdzcmMnLCBlLmdldEF0dHJpYnV0ZSgnZGF0YS1ndC1sYXp5LXNyYycpKX0pOwogICAgICAgICAgICAgICAgICAgIGd0X3VwZGF0ZV9mbG9hdF9sYW5ndWFnZShlbCk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodV9jbGFzcysnIGFbZGF0YS1ndC1sYW5nPSInK3ByZWZlcnJlZF9sYW5ndWFnZSsnIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2xvY2F0aW9uLmhyZWY9ZS5ocmVmfSk7CiAgICAgICAgfQoKICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZ3RfYXV0b3N3aXRjaCcsIDEpOwogICAgfQp9KSgpOwo="}},"time_used":27,"timings":{"blocked":-1,"dns":3,"connect":1,"send":0,"wait":8,"receive":0,"ssl":15},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/pricing_shape02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.059Z","timestamp":1785159465059,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/pricing_shape02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 9222\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":9222,"size_decoded":9487,"mime_type":"image/png","magic":"PNG image data, 348 x 275, 8-bit/color RGBA, non-interlaced","md5":"4e1ba5fb551dcc074053f5b329d45b2e","sha1":"dba7187dba77bd96af6e4a635aa509574dda28a6","sha256":"42b748104120ad96283b51cc6ebce2d03beeb66dac2dd9b5a0fb0938a7b214a2","sha512":"56a1ca3f2fd459a852df48b3efc3d17a26fdebf2cd387be2dec434ff67e461afcd73e9ad33b363aa6517809ef4d56c041de1d45a326766c3d6fca10eea41cc7d","ssdeep":"192:9SdJT4kn8GIf2ChdaHOspmIq8Z12JGobHltRYNQPTsrKo6/Jgx:8dJMoR/ChobeJGWtRqQPwrKovx","tlshash":"2f12b0e1c715ae8cf70a6d742dec5116f50681e17c235eaa8440a37d92ab3112c56bbd","first_seen":"2026-02-14T04:59:18.813429Z","last_seen":"2026-07-27T13:38:47.796161Z","times_seen":6,"resource_available":false,"data":"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"}},"time_used":85,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":66,"receive":19,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testi_avatar04.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.075Z","timestamp":1785159465075,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testi_avatar04.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 20464\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":20464,"size_decoded":20730,"mime_type":"image/png","magic":"PNG image data, 175 x 175, 8-bit colormap, non-interlaced","md5":"934c509bc99791a21799abe0e21d477f","sha1":"f4f94e18332e8c6345a0287cd3df181e32146864","sha256":"18c2ff921931b706140cce374d50c1795c41784eab489725471a8fb1f9f48144","sha512":"ebc12e4fa419345f45bfc631cb24ef9afba15dd4982d46b148e39fdf917e7627b9b83eed82d2fc41f59684366988ac78804072f0637bea927ed23df3ed6ae6f7","ssdeep":"384:Y82tqAC5JC9D43wS2kCd7UTSPkHSjAlsx6kGxZamgD/oDfH8Jl:xaKR3wS2ld7r5jnwamugDEJl","tlshash":"9c92e1c74644f4b19f38661289c98b50c5c563ecd71d68b0c663364f2c2f5fe557e882","first_seen":"2025-10-03T03:28:59.236007Z","last_seen":"2026-07-27T13:38:47.802133Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":75,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":71,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800\u0026amp;family=Outfit:wght@300;400;500;600;700;800;900\u0026amp;display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.326Z","timestamp":1785159465326,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css2?family=Inter:wght@300;400;500;600;700;800\u0026amp;family=Outfit:wght@300;400;500;600;700;800;900\u0026amp;display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Mon, 27 Jul 2026 13:37:45 GMT\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncross-origin-resource-policy: cross-origin\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":14238,"size_decoded":1514,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"5bff5d16ba9761effec4be5c24666086","sha1":"6424e044ec5a50ac19d729d33adda20079e8f9e0","sha256":"f4afea9c791fbeed6b6d30c6800d14dab868ba7f308dce89963f2b6b9be62c25","sha512":"8c5c283264eeac815f93f839933e7ea8017678bd830e15c54003ddb7fcce27d68a48ff2a463643a50a466ee3d975a4278669e07818931b4424ae5095665d03ad","ssdeep":"192:yNineO33lxopNP6TO3Kkxx2NkdIO3tPx+PNpYNO3o2x3kN2jqO3zpxMNNTGPO3WY:akYVOKczmIIpF","tlshash":"54527c92002be40067931dc363cf7e39aece5088a086d5796bfd0dc99cead66537436e","first_seen":"2025-09-20T22:32:10.736884Z","last_seen":"2026-07-31T17:58:51.484109Z","times_seen":170,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogODAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":83,"timings":{"blocked":-1,"dns":3,"connect":14,"send":0,"wait":34,"receive":0,"ssl":31},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/vendor/jquery-3.6.0.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.797Z","timestamp":1785159464797,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/vendor/jquery-3.6.0.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 32124\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":107748,"size_decoded":32362,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"e86504b92c4745b9315d7f4f9b73fc2a","sha1":"b9b4714b5c1cbc03d9444c9f60a17eecb8e0750d","sha256":"878796facbcbeadeddda79c14175bb3967519b61d1db46ae49a36b5dc84e5dd9","sha512":"b68bab355239d15d094c62bbe79cde78267f7636d15db229da584ce0d7276edb6d0844f05fb903d3f341ab5252004de893c9d9ba60d8a739e883d56695466491","ssdeep":"1536:b7/cnTfIbdDSRjlJTQPWVTagPShkMnJuxlk6WRIvQEtUK9G2CWKeYcftIougRuOk:bLd2oe9G2CWPtmK4Y3OFnG7KokA98J","tlshash":"4fb3b69973d63335864bf0b69c9fcd4df2b9595c23c98409a60cc5a6a830878877edec","first_seen":"2023-03-07T12:08:36Z","last_seen":"2026-08-03T15:20:17.886033Z","times_seen":1357,"resource_available":true,"data":"LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24gKGUsIHQpIHsgInVzZSBzdHJpY3QiOyAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlICYmICJvYmplY3QiID09IHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzID0gZS5kb2N1bWVudCA/IHQoZSwgITApIDogZnVuY3Rpb24gKGUpIHsgaWYgKCFlLmRvY3VtZW50KSB0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTsgcmV0dXJuIHQoZSkgfSA6IHQoZSkgfSgidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24gKEMsIGUpIHsgInVzZSBzdHJpY3QiOyB2YXIgdCA9IFtdLCByID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBzID0gdC5zbGljZSwgZyA9IHQuZmxhdCA/IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0LmZsYXQuY2FsbChlKSB9IDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHQuY29uY2F0LmFwcGx5KFtdLCBlKSB9LCB1ID0gdC5wdXNoLCBpID0gdC5pbmRleE9mLCBuID0ge30sIG8gPSBuLnRvU3RyaW5nLCB2ID0gbi5oYXNPd25Qcm9wZXJ0eSwgYSA9IHYudG9TdHJpbmcsIGwgPSBhLmNhbGwoT2JqZWN0KSwgeSA9IHt9LCBtID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgIm51bWJlciIgIT0gdHlwZW9mIGUubm9kZVR5cGUgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZS5pdGVtIH0sIHggPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCAhPSBlICYmIGUgPT09IGUud2luZG93IH0sIEUgPSBDLmRvY3VtZW50LCBjID0geyB0eXBlOiAhMCwgc3JjOiAhMCwgbm9uY2U6ICEwLCBub01vZHVsZTogITAgfTsgZnVuY3Rpb24gYihlLCB0LCBuKSB7IHZhciByLCBpLCBvID0gKG4gPSBuIHx8IEUpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOyBpZiAoby50ZXh0ID0gZSwgdCkgZm9yIChyIGluIGMpIChpID0gdFtyXSB8fCB0LmdldEF0dHJpYnV0ZSAmJiB0LmdldEF0dHJpYnV0ZShyKSkgJiYgby5zZXRBdHRyaWJ1dGUociwgaSk7IG4uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pIH0gZnVuY3Rpb24gdyhlKSB7IHJldHVybiBudWxsID09IGUgPyBlICsgIiIgOiAib2JqZWN0IiA9PSB0eXBlb2YgZSB8fCAiZnVuY3Rpb24iID09IHR5cGVvZiBlID8gbltvLmNhbGwoZSldIHx8ICJvYmplY3QiIDogdHlwZW9mIGUgfSB2YXIgZiA9ICIzLjYuMCIsIFMgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbmV3IFMuZm4uaW5pdChlLCB0KSB9OyBmdW5jdGlvbiBwKGUpIHsgdmFyIHQgPSAhIWUgJiYgImxlbmd0aCIgaW4gZSAmJiBlLmxlbmd0aCwgbiA9IHcoZSk7IHJldHVybiAhbShlKSAmJiAheChlKSAmJiAoImFycmF5IiA9PT0gbiB8fCAwID09PSB0IHx8ICJudW1iZXIiID09IHR5cGVvZiB0ICYmIDAgPCB0ICYmIHQgLSAxIGluIGUpIH0gUy5mbiA9IFMucHJvdG90eXBlID0geyBqcXVlcnk6IGYsIGNvbnN0cnVjdG9yOiBTLCBsZW5ndGg6IDAsIHRvQXJyYXk6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHMuY2FsbCh0aGlzKSB9LCBnZXQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBudWxsID09IGUgPyBzLmNhbGwodGhpcykgOiBlIDwgMCA/IHRoaXNbZSArIHRoaXMubGVuZ3RoXSA6IHRoaXNbZV0gfSwgcHVzaFN0YWNrOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFMubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLCBlKTsgcmV0dXJuIHQucHJldk9iamVjdCA9IHRoaXMsIHQgfSwgZWFjaDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFMuZWFjaCh0aGlzLCBlKSB9LCBtYXA6IGZ1bmN0aW9uIChuKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhTLm1hcCh0aGlzLCBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbi5jYWxsKGUsIHQsIGUpIH0pKSB9LCBzbGljZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSB9LCBmaXJzdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lcSgwKSB9LCBsYXN0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVxKC0xKSB9LCBldmVuOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhTLmdyZXAodGhpcywgZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuICh0ICsgMSkgJSAyIH0pKSB9LCBvZGQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLCBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCAlIDIgfSkpIH0sIGVxOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXMubGVuZ3RoLCBuID0gK2UgKyAoZSA8IDAgPyB0IDogMCk7IHJldHVybiB0aGlzLnB1c2hTdGFjaygwIDw9IG4gJiYgbiA8IHQgPyBbdGhpc1tuXV0gOiBbXSkgfSwgZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpIH0sIHB1c2g6IHUsIHNvcnQ6IHQuc29ydCwgc3BsaWNlOiB0LnNwbGljZSB9LCBTLmV4dGVuZCA9IFMuZm4uZXh0ZW5kID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgciwgaSwgbywgYSA9IGFyZ3VtZW50c1swXSB8fCB7fSwgcyA9IDEsIHUgPSBhcmd1bWVudHMubGVuZ3RoLCBsID0gITE7IGZvciAoImJvb2xlYW4iID09IHR5cGVvZiBhICYmIChsID0gYSwgYSA9IGFyZ3VtZW50c1tzXSB8fCB7fSwgcysrKSwgIm9iamVjdCIgPT0gdHlwZW9mIGEgfHwgbShhKSB8fCAoYSA9IHt9KSwgcyA9PT0gdSAmJiAoYSA9IHRoaXMsIHMtLSk7IHMgPCB1OyBzKyspaWYgKG51bGwgIT0gKGUgPSBhcmd1bWVudHNbc10pKSBmb3IgKHQgaW4gZSkgciA9IGVbdF0sICJfX3Byb3RvX18iICE9PSB0ICYmIGEgIT09IHIgJiYgKGwgJiYgciAmJiAoUy5pc1BsYWluT2JqZWN0KHIpIHx8IChpID0gQXJyYXkuaXNBcnJheShyKSkpID8gKG4gPSBhW3RdLCBvID0gaSAmJiAhQXJyYXkuaXNBcnJheShuKSA/IFtdIDogaSB8fCBTLmlzUGxhaW5PYmplY3QobikgPyBuIDoge30sIGkgPSAhMSwgYVt0XSA9IFMuZXh0ZW5kKGwsIG8sIHIpKSA6IHZvaWQgMCAhPT0gciAmJiAoYVt0XSA9IHIpKTsgcmV0dXJuIGEgfSwgUy5leHRlbmQoeyBleHBhbmRvOiAialF1ZXJ5IiArIChmICsgTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywgIiIpLCBpc1JlYWR5OiAhMCwgZXJyb3I6IGZ1bmN0aW9uIChlKSB7IHRocm93IG5ldyBFcnJvcihlKSB9LCBub29wOiBmdW5jdGlvbiAoKSB7IH0sIGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuOyByZXR1cm4gISghZSB8fCAiW29iamVjdCBPYmplY3RdIiAhPT0gby5jYWxsKGUpKSAmJiAoISh0ID0gcihlKSkgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgKG4gPSB2LmNhbGwodCwgImNvbnN0cnVjdG9yIikgJiYgdC5jb25zdHJ1Y3RvcikgJiYgYS5jYWxsKG4pID09PSBsKSB9LCBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgZm9yICh0IGluIGUpIHJldHVybiAhMTsgcmV0dXJuICEwIH0sIGdsb2JhbEV2YWw6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGIoZSwgeyBub25jZTogdCAmJiB0Lm5vbmNlIH0sIG4pIH0sIGVhY2g6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMDsgaWYgKHAoZSkpIHsgZm9yIChuID0gZS5sZW5ndGg7IHIgPCBuOyByKyspaWYgKCExID09PSB0LmNhbGwoZVtyXSwgciwgZVtyXSkpIGJyZWFrIH0gZWxzZSBmb3IgKHIgaW4gZSkgaWYgKCExID09PSB0LmNhbGwoZVtyXSwgciwgZVtyXSkpIGJyZWFrOyByZXR1cm4gZSB9LCBtYWtlQXJyYXk6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gdCB8fCBbXTsgcmV0dXJuIG51bGwgIT0gZSAmJiAocChPYmplY3QoZSkpID8gUy5tZXJnZShuLCAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IFtlXSA6IGUpIDogdS5jYWxsKG4sIGUpKSwgbiB9LCBpbkFycmF5OiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gbnVsbCA9PSB0ID8gLTEgOiBpLmNhbGwodCwgZSwgbikgfSwgbWVyZ2U6IGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSArdC5sZW5ndGgsIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBuOyByKyspZVtpKytdID0gdFtyXTsgcmV0dXJuIGUubGVuZ3RoID0gaSwgZSB9LCBncmVwOiBmdW5jdGlvbiAoZSwgdCwgbikgeyBmb3IgKHZhciByID0gW10sIGkgPSAwLCBvID0gZS5sZW5ndGgsIGEgPSAhbjsgaSA8IG87IGkrKykhdChlW2ldLCBpKSAhPT0gYSAmJiByLnB1c2goZVtpXSk7IHJldHVybiByIH0sIG1hcDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSAwLCBhID0gW107IGlmIChwKGUpKSBmb3IgKHIgPSBlLmxlbmd0aDsgbyA8IHI7IG8rKyludWxsICE9IChpID0gdChlW29dLCBvLCBuKSkgJiYgYS5wdXNoKGkpOyBlbHNlIGZvciAobyBpbiBlKSBudWxsICE9IChpID0gdChlW29dLCBvLCBuKSkgJiYgYS5wdXNoKGkpOyByZXR1cm4gZyhhKSB9LCBndWlkOiAxLCBzdXBwb3J0OiB5IH0pLCAiZnVuY3Rpb24iID09IHR5cGVvZiBTeW1ib2wgJiYgKFMuZm5bU3ltYm9sLml0ZXJhdG9yXSA9IHRbU3ltYm9sLml0ZXJhdG9yXSksIFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksIGZ1bmN0aW9uIChlLCB0KSB7IG5bIltvYmplY3QgIiArIHQgKyAiXSJdID0gdC50b0xvd2VyQ2FzZSgpIH0pOyB2YXIgZCA9IGZ1bmN0aW9uIChuKSB7IHZhciBlLCBkLCBiLCBvLCBpLCBoLCBmLCBnLCB3LCB1LCBsLCBULCBDLCBhLCBFLCB2LCBzLCBjLCB5LCBTID0gInNpenpsZSIgKyAxICogbmV3IERhdGUsIHAgPSBuLmRvY3VtZW50LCBrID0gMCwgciA9IDAsIG0gPSB1ZSgpLCB4ID0gdWUoKSwgQSA9IHVlKCksIE4gPSB1ZSgpLCBqID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIGUgPT09IHQgJiYgKGwgPSAhMCksIDAgfSwgRCA9IHt9Lmhhc093blByb3BlcnR5LCB0ID0gW10sIHEgPSB0LnBvcCwgTCA9IHQucHVzaCwgSCA9IHQucHVzaCwgTyA9IHQuc2xpY2UsIFAgPSBmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKWlmIChlW25dID09PSB0KSByZXR1cm4gbjsgcmV0dXJuIC0xIH0sIFIgPSAiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLCBNID0gIltcXHgyMFxcdFxcclxcblxcZl0iLCBJID0gIig/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9IiArIE0gKyAiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIiwgVyA9ICJcXFsiICsgTSArICIqKCIgKyBJICsgIikoPzoiICsgTSArICIqKFsqXiR8IX5dPz0pIiArIE0gKyAiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiICsgSSArICIpKXwpIiArIE0gKyAiKlxcXSIsIEYgPSAiOigiICsgSSArICIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IiArIFcgKyAiKSopfC4qKVxcKXwpIiwgQiA9IG5ldyBSZWdFeHAoTSArICIrIiwgImciKSwgJCA9IG5ldyBSZWdFeHAoIl4iICsgTSArICIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiICsgTSArICIrJCIsICJnIiksIF8gPSBuZXcgUmVnRXhwKCJeIiArIE0gKyAiKiwiICsgTSArICIqIiksIHogPSBuZXcgUmVnRXhwKCJeIiArIE0gKyAiKihbPit+XXwiICsgTSArICIpIiArIE0gKyAiKiIpLCBVID0gbmV3IFJlZ0V4cChNICsgInw+IiksIFggPSBuZXcgUmVnRXhwKEYpLCBWID0gbmV3IFJlZ0V4cCgiXiIgKyBJICsgIiQiKSwgRyA9IHsgSUQ6IG5ldyBSZWdFeHAoIl4jKCIgKyBJICsgIikiKSwgQ0xBU1M6IG5ldyBSZWdFeHAoIl5cXC4oIiArIEkgKyAiKSIpLCBUQUc6IG5ldyBSZWdFeHAoIl4oIiArIEkgKyAifFsqXSkiKSwgQVRUUjogbmV3IFJlZ0V4cCgiXiIgKyBXKSwgUFNFVURPOiBuZXcgUmVnRXhwKCJeIiArIEYpLCBDSElMRDogbmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIiArIE0gKyAiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIgKyBNICsgIiooPzooWystXXwpIiArIE0gKyAiKihcXGQrKXwpKSIgKyBNICsgIipcXCl8KSIsICJpIiksIGJvb2w6IG5ldyBSZWdFeHAoIl4oPzoiICsgUiArICIpJCIsICJpIiksIG5lZWRzQ29udGV4dDogbmV3IFJlZ0V4cCgiXiIgKyBNICsgIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIgKyBNICsgIiooKD86LVxcZCk/XFxkKikiICsgTSArICIqXFwpfCkoPz1bXi1dfCQpIiwgImkiKSB9LCBZID0gL0hUTUwkL2ksIFEgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLCBKID0gL15oXGQkL2ksIEsgPSAvXltee10rXHtccypcW25hdGl2ZSBcdy8sIFogPSAvXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCBlZSA9IC9bK35dLywgdGUgPSBuZXcgUmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIgKyBNICsgIj98XFxcXChbXlxcclxcblxcZl0pIiwgImciKSwgbmUgPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9ICIweCIgKyBlLnNsaWNlKDEpIC0gNjU1MzY7IHJldHVybiB0IHx8IChuIDwgMCA/IFN0cmluZy5mcm9tQ2hhckNvZGUobiArIDY1NTM2KSA6IFN0cmluZy5mcm9tQ2hhckNvZGUobiA+PiAxMCB8IDU1Mjk2LCAxMDIzICYgbiB8IDU2MzIwKSkgfSwgcmUgPSAvKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZywgaWUgPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCA/ICJcMCIgPT09IGUgPyAiXHVmZmZkIiA6IGUuc2xpY2UoMCwgLTEpICsgIlxcIiArIGUuY2hhckNvZGVBdChlLmxlbmd0aCAtIDEpLnRvU3RyaW5nKDE2KSArICIgIiA6ICJcXCIgKyBlIH0sIG9lID0gZnVuY3Rpb24gKCkgeyBUKCkgfSwgYWUgPSBiZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gITAgPT09IGUuZGlzYWJsZWQgJiYgImZpZWxkc2V0IiA9PT0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIH0sIHsgZGlyOiAicGFyZW50Tm9kZSIsIG5leHQ6ICJsZWdlbmQiIH0pOyB0cnkgeyBILmFwcGx5KHQgPSBPLmNhbGwocC5jaGlsZE5vZGVzKSwgcC5jaGlsZE5vZGVzKSwgdFtwLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZSB9IGNhdGNoIChlKSB7IEggPSB7IGFwcGx5OiB0Lmxlbmd0aCA/IGZ1bmN0aW9uIChlLCB0KSB7IEwuYXBwbHkoZSwgTy5jYWxsKHQpKSB9IDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSBlLmxlbmd0aCwgciA9IDA7IHdoaWxlIChlW24rK10gPSB0W3IrK10pOyBlLmxlbmd0aCA9IG4gLSAxIH0gfSB9IGZ1bmN0aW9uIHNlKHQsIGUsIG4sIHIpIHsgdmFyIGksIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSBlICYmIGUub3duZXJEb2N1bWVudCwgcCA9IGUgPyBlLm5vZGVUeXBlIDogOTsgaWYgKG4gPSBuIHx8IFtdLCAic3RyaW5nIiAhPSB0eXBlb2YgdCB8fCAhdCB8fCAxICE9PSBwICYmIDkgIT09IHAgJiYgMTEgIT09IHApIHJldHVybiBuOyBpZiAoIXIgJiYgKFQoZSksIGUgPSBlIHx8IEMsIEUpKSB7IGlmICgxMSAhPT0gcCAmJiAodSA9IFouZXhlYyh0KSkpIGlmIChpID0gdVsxXSkgeyBpZiAoOSA9PT0gcCkgeyBpZiAoIShhID0gZS5nZXRFbGVtZW50QnlJZChpKSkpIHJldHVybiBuOyBpZiAoYS5pZCA9PT0gaSkgcmV0dXJuIG4ucHVzaChhKSwgbiB9IGVsc2UgaWYgKGYgJiYgKGEgPSBmLmdldEVsZW1lbnRCeUlkKGkpKSAmJiB5KGUsIGEpICYmIGEuaWQgPT09IGkpIHJldHVybiBuLnB1c2goYSksIG4gfSBlbHNlIHsgaWYgKHVbMl0pIHJldHVybiBILmFwcGx5KG4sIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLCBuOyBpZiAoKGkgPSB1WzNdKSAmJiBkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSByZXR1cm4gSC5hcHBseShuLCBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkpLCBuIH0gaWYgKGQucXNhICYmICFOW3QgKyAiICJdICYmICghdiB8fCAhdi50ZXN0KHQpKSAmJiAoMSAhPT0gcCB8fCAib2JqZWN0IiAhPT0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSkgeyBpZiAoYyA9IHQsIGYgPSBlLCAxID09PSBwICYmIChVLnRlc3QodCkgfHwgei50ZXN0KHQpKSkgeyAoZiA9IGVlLnRlc3QodCkgJiYgeWUoZS5wYXJlbnROb2RlKSB8fCBlKSA9PT0gZSAmJiBkLnNjb3BlIHx8ICgocyA9IGUuZ2V0QXR0cmlidXRlKCJpZCIpKSA/IHMgPSBzLnJlcGxhY2UocmUsIGllKSA6IGUuc2V0QXR0cmlidXRlKCJpZCIsIHMgPSBTKSksIG8gPSAobCA9IGgodCkpLmxlbmd0aDsgd2hpbGUgKG8tLSkgbFtvXSA9IChzID8gIiMiICsgcyA6ICI6c2NvcGUiKSArICIgIiArIHhlKGxbb10pOyBjID0gbC5qb2luKCIsIikgfSB0cnkgeyByZXR1cm4gSC5hcHBseShuLCBmLnF1ZXJ5U2VsZWN0b3JBbGwoYykpLCBuIH0gY2F0Y2ggKGUpIHsgTih0LCAhMCkgfSBmaW5hbGx5IHsgcyA9PT0gUyAmJiBlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKSB9IH0gfSByZXR1cm4gZyh0LnJlcGxhY2UoJCwgIiQxIiksIGUsIG4sIHIpIH0gZnVuY3Rpb24gdWUoKSB7IHZhciByID0gW107IHJldHVybiBmdW5jdGlvbiBlKHQsIG4pIHsgcmV0dXJuIHIucHVzaCh0ICsgIiAiKSA+IGIuY2FjaGVMZW5ndGggJiYgZGVsZXRlIGVbci5zaGlmdCgpXSwgZVt0ICsgIiAiXSA9IG4gfSB9IGZ1bmN0aW9uIGxlKGUpIHsgcmV0dXJuIGVbU10gPSAhMCwgZSB9IGZ1bmN0aW9uIGNlKGUpIHsgdmFyIHQgPSBDLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7IHRyeSB7IHJldHVybiAhIWUodCkgfSBjYXRjaCAoZSkgeyByZXR1cm4gITEgfSBmaW5hbGx5IHsgdC5wYXJlbnROb2RlICYmIHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSwgdCA9IG51bGwgfSB9IGZ1bmN0aW9uIGZlKGUsIHQpIHsgdmFyIG4gPSBlLnNwbGl0KCJ8IiksIHIgPSBuLmxlbmd0aDsgd2hpbGUgKHItLSkgYi5hdHRySGFuZGxlW25bcl1dID0gdCB9IGZ1bmN0aW9uIHBlKGUsIHQpIHsgdmFyIG4gPSB0ICYmIGUsIHIgPSBuICYmIDEgPT09IGUubm9kZVR5cGUgJiYgMSA9PT0gdC5ub2RlVHlwZSAmJiBlLnNvdXJjZUluZGV4IC0gdC5zb3VyY2VJbmRleDsgaWYgKHIpIHJldHVybiByOyBpZiAobikgd2hpbGUgKG4gPSBuLm5leHRTaWJsaW5nKSBpZiAobiA9PT0gdCkgcmV0dXJuIC0xOyByZXR1cm4gZSA/IDEgOiAtMSB9IGZ1bmN0aW9uIGRlKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiAiaW5wdXQiID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgJiYgZS50eXBlID09PSB0IH0gfSBmdW5jdGlvbiBoZShuKSB7IHJldHVybiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICgiaW5wdXQiID09PSB0IHx8ICJidXR0b24iID09PSB0KSAmJiBlLnR5cGUgPT09IG4gfSB9IGZ1bmN0aW9uIGdlKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiAiZm9ybSIgaW4gZSA/IGUucGFyZW50Tm9kZSAmJiAhMSA9PT0gZS5kaXNhYmxlZCA/ICJsYWJlbCIgaW4gZSA/ICJsYWJlbCIgaW4gZS5wYXJlbnROb2RlID8gZS5wYXJlbnROb2RlLmRpc2FibGVkID09PSB0IDogZS5kaXNhYmxlZCA9PT0gdCA6IGUuaXNEaXNhYmxlZCA9PT0gdCB8fCBlLmlzRGlzYWJsZWQgIT09ICF0ICYmIGFlKGUpID09PSB0IDogZS5kaXNhYmxlZCA9PT0gdCA6ICJsYWJlbCIgaW4gZSAmJiBlLmRpc2FibGVkID09PSB0IH0gfSBmdW5jdGlvbiB2ZShhKSB7IHJldHVybiBsZShmdW5jdGlvbiAobykgeyByZXR1cm4gbyA9ICtvLCBsZShmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IGEoW10sIGUubGVuZ3RoLCBvKSwgaSA9IHIubGVuZ3RoOyB3aGlsZSAoaS0tKSBlW24gPSByW2ldXSAmJiAoZVtuXSA9ICEodFtuXSA9IGVbbl0pKSB9KSB9KSB9IGZ1bmN0aW9uIHllKGUpIHsgcmV0dXJuIGUgJiYgInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgJiYgZSB9IGZvciAoZSBpbiBkID0gc2Uuc3VwcG9ydCA9IHt9LCBpID0gc2UuaXNYTUwgPSBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUgJiYgZS5uYW1lc3BhY2VVUkksIG4gPSBlICYmIChlLm93bmVyRG9jdW1lbnQgfHwgZSkuZG9jdW1lbnRFbGVtZW50OyByZXR1cm4gIVkudGVzdCh0IHx8IG4gJiYgbi5ub2RlTmFtZSB8fCAiSFRNTCIpIH0sIFQgPSBzZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuLCByID0gZSA/IGUub3duZXJEb2N1bWVudCB8fCBlIDogcDsgcmV0dXJuIHIgIT0gQyAmJiA5ID09PSByLm5vZGVUeXBlICYmIHIuZG9jdW1lbnRFbGVtZW50ICYmIChhID0gKEMgPSByKS5kb2N1bWVudEVsZW1lbnQsIEUgPSAhaShDKSwgcCAhPSBDICYmIChuID0gQy5kZWZhdWx0VmlldykgJiYgbi50b3AgIT09IG4gJiYgKG4uYWRkRXZlbnRMaXN0ZW5lciA/IG4uYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgb2UsICExKSA6IG4uYXR0YWNoRXZlbnQgJiYgbi5hdHRhY2hFdmVudCgib251bmxvYWQiLCBvZSkpLCBkLnNjb3BlID0gY2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwgJiYgIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIGZpZWxkc2V0IGRpdiIpLmxlbmd0aCB9KSwgZC5hdHRyaWJ1dGVzID0gY2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuY2xhc3NOYW1lID0gImkiLCAhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpIH0pLCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gY2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuYXBwZW5kQ2hpbGQoQy5jcmVhdGVDb21tZW50KCIiKSksICFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoIH0pLCBkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBLLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSwgZC5nZXRCeUlkID0gY2UoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQgPSBTLCAhQy5nZXRFbGVtZW50c0J5TmFtZSB8fCAhQy5nZXRFbGVtZW50c0J5TmFtZShTKS5sZW5ndGggfSksIGQuZ2V0QnlJZCA/IChiLmZpbHRlci5JRCA9IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5yZXBsYWNlKHRlLCBuZSk7IHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIikgPT09IHQgfSB9LCBiLmZpbmQuSUQgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQgJiYgRSkgeyB2YXIgbiA9IHQuZ2V0RWxlbWVudEJ5SWQoZSk7IHJldHVybiBuID8gW25dIDogW10gfSB9KSA6IChiLmZpbHRlci5JRCA9IGZ1bmN0aW9uIChlKSB7IHZhciBuID0gZS5yZXBsYWNlKHRlLCBuZSk7IHJldHVybiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUgJiYgZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpOyByZXR1cm4gdCAmJiB0LnZhbHVlID09PSBuIH0gfSwgYi5maW5kLklEID0gZnVuY3Rpb24gKGUsIHQpIHsgaWYgKCJ1bmRlZmluZWQiICE9IHR5cGVvZiB0LmdldEVsZW1lbnRCeUlkICYmIEUpIHsgdmFyIG4sIHIsIGksIG8gPSB0LmdldEVsZW1lbnRCeUlkKGUpOyBpZiAobykgeyBpZiAoKG4gPSBvLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpICYmIG4udmFsdWUgPT09IGUpIHJldHVybiBbb107IGkgPSB0LmdldEVsZW1lbnRzQnlOYW1lKGUpLCByID0gMDsgd2hpbGUgKG8gPSBpW3IrK10pIGlmICgobiA9IG8uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkgJiYgbi52YWx1ZSA9PT0gZSkgcmV0dXJuIFtvXSB9IHJldHVybiBbXSB9IH0pLCBiLmZpbmQuVEFHID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZSA/IHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkgOiBkLnFzYSA/IHQucXVlcnlTZWxlY3RvckFsbChlKSA6IHZvaWQgMCB9IDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBbXSwgaSA9IDAsIG8gPSB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOyBpZiAoIioiID09PSBlKSB7IHdoaWxlIChuID0gb1tpKytdKSAxID09PSBuLm5vZGVUeXBlICYmIHIucHVzaChuKTsgcmV0dXJuIHIgfSByZXR1cm4gbyB9LCBiLmZpbmQuQ0xBU1MgPSBkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24gKGUsIHQpIHsgaWYgKCJ1bmRlZmluZWQiICE9IHR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgRSkgcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKSB9LCBzID0gW10sIHYgPSBbXSwgKGQucXNhID0gSy50ZXN0KEMucXVlcnlTZWxlY3RvckFsbCkpICYmIChjZShmdW5jdGlvbiAoZSkgeyB2YXIgdDsgYS5hcHBlbmRDaGlsZChlKS5pbm5lckhUTUwgPSAiPGEgaWQ9JyIgKyBTICsgIic+PC9hPjxzZWxlY3QgaWQ9JyIgKyBTICsgIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsIGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGggJiYgdi5wdXNoKCJbKl4kXT0iICsgTSArICIqKD86Jyd8XCJcIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RoIHx8IHYucHVzaCgiXFxbIiArIE0gKyAiKig/OnZhbHVlfCIgKyBSICsgIikiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIgKyBTICsgIi1dIikubGVuZ3RoIHx8IHYucHVzaCgifj0iKSwgKHQgPSBDLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsICIiKSwgZS5hcHBlbmRDaGlsZCh0KSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGggfHwgdi5wdXNoKCJcXFsiICsgTSArICIqbmFtZSIgKyBNICsgIio9IiArIE0gKyAiKig/OicnfFwiXCIpIiksIGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGggfHwgdi5wdXNoKCI6Y2hlY2tlZCIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIiArIFMgKyAiKyoiKS5sZW5ndGggfHwgdi5wdXNoKCIuIy4rWyt+XSIpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIlxcXGYiKSwgdi5wdXNoKCJbXFxyXFxuXFxmXSIpIH0pLCBjZShmdW5jdGlvbiAoZSkgeyBlLmlubmVySFRNTCA9ICI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iOyB2YXIgdCA9IEMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsgdC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiaGlkZGVuIiksIGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwgIkQiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCAmJiB2LnB1c2goIm5hbWUiICsgTSArICIqWypeJHwhfl0/PSIpLCAyICE9PSBlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoICYmIHYucHVzaCgiOmVuYWJsZWQiLCAiOmRpc2FibGVkIiksIGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQgPSAhMCwgMiAhPT0gZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGggJiYgdi5wdXNoKCI6ZW5hYmxlZCIsICI6ZGlzYWJsZWQiKSwgZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksIHYucHVzaCgiLC4qOiIpIH0pKSwgKGQubWF0Y2hlc1NlbGVjdG9yID0gSy50ZXN0KGMgPSBhLm1hdGNoZXMgfHwgYS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgYS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgYS5vTWF0Y2hlc1NlbGVjdG9yIHx8IGEubXNNYXRjaGVzU2VsZWN0b3IpKSAmJiBjZShmdW5jdGlvbiAoZSkgeyBkLmRpc2Nvbm5lY3RlZE1hdGNoID0gYy5jYWxsKGUsICIqIiksIGMuY2FsbChlLCAiW3MhPScnXTp4IiksIHMucHVzaCgiIT0iLCBGKSB9KSwgdiA9IHYubGVuZ3RoICYmIG5ldyBSZWdFeHAodi5qb2luKCJ8IikpLCBzID0gcy5sZW5ndGggJiYgbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksIHQgPSBLLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksIHkgPSB0IHx8IEsudGVzdChhLmNvbnRhaW5zKSA/IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gOSA9PT0gZS5ub2RlVHlwZSA/IGUuZG9jdW1lbnRFbGVtZW50IDogZSwgciA9IHQgJiYgdC5wYXJlbnROb2RlOyByZXR1cm4gZSA9PT0gciB8fCAhKCFyIHx8IDEgIT09IHIubm9kZVR5cGUgfHwgIShuLmNvbnRhaW5zID8gbi5jb250YWlucyhyKSA6IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgMTYgJiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSkgfSA6IGZ1bmN0aW9uIChlLCB0KSB7IGlmICh0KSB3aGlsZSAodCA9IHQucGFyZW50Tm9kZSkgaWYgKHQgPT09IGUpIHJldHVybiAhMDsgcmV0dXJuICExIH0sIGogPSB0ID8gZnVuY3Rpb24gKGUsIHQpIHsgaWYgKGUgPT09IHQpIHJldHVybiBsID0gITAsIDA7IHZhciBuID0gIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24gLSAhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsgcmV0dXJuIG4gfHwgKDEgJiAobiA9IChlLm93bmVyRG9jdW1lbnQgfHwgZSkgPT0gKHQub3duZXJEb2N1bWVudCB8fCB0KSA/IGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkgOiAxKSB8fCAhZC5zb3J0RGV0YWNoZWQgJiYgdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSA9PT0gbiA/IGUgPT0gQyB8fCBlLm93bmVyRG9jdW1lbnQgPT0gcCAmJiB5KHAsIGUpID8gLTEgOiB0ID09IEMgfHwgdC5vd25lckRvY3VtZW50ID09IHAgJiYgeShwLCB0KSA/IDEgOiB1ID8gUCh1LCBlKSAtIFAodSwgdCkgOiAwIDogNCAmIG4gPyAtMSA6IDEpIH0gOiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoZSA9PT0gdCkgcmV0dXJuIGwgPSAhMCwgMDsgdmFyIG4sIHIgPSAwLCBpID0gZS5wYXJlbnROb2RlLCBvID0gdC5wYXJlbnROb2RlLCBhID0gW2VdLCBzID0gW3RdOyBpZiAoIWkgfHwgIW8pIHJldHVybiBlID09IEMgPyAtMSA6IHQgPT0gQyA/IDEgOiBpID8gLTEgOiBvID8gMSA6IHUgPyBQKHUsIGUpIC0gUCh1LCB0KSA6IDA7IGlmIChpID09PSBvKSByZXR1cm4gcGUoZSwgdCk7IG4gPSBlOyB3aGlsZSAobiA9IG4ucGFyZW50Tm9kZSkgYS51bnNoaWZ0KG4pOyBuID0gdDsgd2hpbGUgKG4gPSBuLnBhcmVudE5vZGUpIHMudW5zaGlmdChuKTsgd2hpbGUgKGFbcl0gPT09IHNbcl0pIHIrKzsgcmV0dXJuIHIgPyBwZShhW3JdLCBzW3JdKSA6IGFbcl0gPT0gcCA/IC0xIDogc1tyXSA9PSBwID8gMSA6IDAgfSksIEMgfSwgc2UubWF0Y2hlcyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBzZShlLCBudWxsLCBudWxsLCB0KSB9LCBzZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoVChlKSwgZC5tYXRjaGVzU2VsZWN0b3IgJiYgRSAmJiAhTlt0ICsgIiAiXSAmJiAoIXMgfHwgIXMudGVzdCh0KSkgJiYgKCF2IHx8ICF2LnRlc3QodCkpKSB0cnkgeyB2YXIgbiA9IGMuY2FsbChlLCB0KTsgaWYgKG4gfHwgZC5kaXNjb25uZWN0ZWRNYXRjaCB8fCBlLmRvY3VtZW50ICYmIDExICE9PSBlLmRvY3VtZW50Lm5vZGVUeXBlKSByZXR1cm4gbiB9IGNhdGNoIChlKSB7IE4odCwgITApIH0gcmV0dXJuIDAgPCBzZSh0LCBDLCBudWxsLCBbZV0pLmxlbmd0aCB9LCBzZS5jb250YWlucyA9IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAoZS5vd25lckRvY3VtZW50IHx8IGUpICE9IEMgJiYgVChlKSwgeShlLCB0KSB9LCBzZS5hdHRyID0gZnVuY3Rpb24gKGUsIHQpIHsgKGUub3duZXJEb2N1bWVudCB8fCBlKSAhPSBDICYmIFQoZSk7IHZhciBuID0gYi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0sIHIgPSBuICYmIEQuY2FsbChiLmF0dHJIYW5kbGUsIHQudG9Mb3dlckNhc2UoKSkgPyBuKGUsIHQsICFFKSA6IHZvaWQgMDsgcmV0dXJuIHZvaWQgMCAhPT0gciA/IHIgOiBkLmF0dHJpYnV0ZXMgfHwgIUUgPyBlLmdldEF0dHJpYnV0ZSh0KSA6IChyID0gZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSAmJiByLnNwZWNpZmllZCA/IHIudmFsdWUgOiBudWxsIH0sIHNlLmVzY2FwZSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiAoZSArICIiKS5yZXBsYWNlKHJlLCBpZSkgfSwgc2UuZXJyb3IgPSBmdW5jdGlvbiAoZSkgeyB0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBlKSB9LCBzZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSBbXSwgciA9IDAsIGkgPSAwOyBpZiAobCA9ICFkLmRldGVjdER1cGxpY2F0ZXMsIHUgPSAhZC5zb3J0U3RhYmxlICYmIGUuc2xpY2UoMCksIGUuc29ydChqKSwgbCkgeyB3aGlsZSAodCA9IGVbaSsrXSkgdCA9PT0gZVtpXSAmJiAociA9IG4ucHVzaChpKSk7IHdoaWxlIChyLS0pIGUuc3BsaWNlKG5bcl0sIDEpIH0gcmV0dXJuIHUgPSBudWxsLCBlIH0sIG8gPSBzZS5nZXRUZXh0ID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSAiIiwgciA9IDAsIGkgPSBlLm5vZGVUeXBlOyBpZiAoaSkgeyBpZiAoMSA9PT0gaSB8fCA5ID09PSBpIHx8IDExID09PSBpKSB7IGlmICgic3RyaW5nIiA9PSB0eXBlb2YgZS50ZXh0Q29udGVudCkgcmV0dXJuIGUudGV4dENvbnRlbnQ7IGZvciAoZSA9IGUuZmlyc3RDaGlsZDsgZTsgZSA9IGUubmV4dFNpYmxpbmcpbiArPSBvKGUpIH0gZWxzZSBpZiAoMyA9PT0gaSB8fCA0ID09PSBpKSByZXR1cm4gZS5ub2RlVmFsdWUgfSBlbHNlIHdoaWxlICh0ID0gZVtyKytdKSBuICs9IG8odCk7IHJldHVybiBuIH0sIChiID0gc2Uuc2VsZWN0b3JzID0geyBjYWNoZUxlbmd0aDogNTAsIGNyZWF0ZVBzZXVkbzogbGUsIG1hdGNoOiBHLCBhdHRySGFuZGxlOiB7fSwgZmluZDoge30sIHJlbGF0aXZlOiB7ICI+IjogeyBkaXI6ICJwYXJlbnROb2RlIiwgZmlyc3Q6ICEwIH0sICIgIjogeyBkaXI6ICJwYXJlbnROb2RlIiB9LCAiKyI6IHsgZGlyOiAicHJldmlvdXNTaWJsaW5nIiwgZmlyc3Q6ICEwIH0sICJ+IjogeyBkaXI6ICJwcmV2aW91c1NpYmxpbmciIH0gfSwgcHJlRmlsdGVyOiB7IEFUVFI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlWzFdID0gZVsxXS5yZXBsYWNlKHRlLCBuZSksIGVbM10gPSAoZVszXSB8fCBlWzRdIHx8IGVbNV0gfHwgIiIpLnJlcGxhY2UodGUsIG5lKSwgIn49IiA9PT0gZVsyXSAmJiAoZVszXSA9ICIgIiArIGVbM10gKyAiICIpLCBlLnNsaWNlKDAsIDQpIH0sIENISUxEOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsxXSA9IGVbMV0udG9Mb3dlckNhc2UoKSwgIm50aCIgPT09IGVbMV0uc2xpY2UoMCwgMykgPyAoZVszXSB8fCBzZS5lcnJvcihlWzBdKSwgZVs0XSA9ICsoZVs0XSA/IGVbNV0gKyAoZVs2XSB8fCAxKSA6IDIgKiAoImV2ZW4iID09PSBlWzNdIHx8ICJvZGQiID09PSBlWzNdKSksIGVbNV0gPSArKGVbN10gKyBlWzhdIHx8ICJvZGQiID09PSBlWzNdKSkgOiBlWzNdICYmIHNlLmVycm9yKGVbMF0pLCBlIH0sIFBTRVVETzogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4gPSAhZVs2XSAmJiBlWzJdOyByZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pID8gbnVsbCA6IChlWzNdID8gZVsyXSA9IGVbNF0gfHwgZVs1XSB8fCAiIiA6IG4gJiYgWC50ZXN0KG4pICYmICh0ID0gaChuLCAhMCkpICYmICh0ID0gbi5pbmRleE9mKCIpIiwgbi5sZW5ndGggLSB0KSAtIG4ubGVuZ3RoKSAmJiAoZVswXSA9IGVbMF0uc2xpY2UoMCwgdCksIGVbMl0gPSBuLnNsaWNlKDAsIHQpKSwgZS5zbGljZSgwLCAzKSkgfSB9LCBmaWx0ZXI6IHsgVEFHOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUucmVwbGFjZSh0ZSwgbmUpLnRvTG93ZXJDYXNlKCk7IHJldHVybiAiKiIgPT09IGUgPyBmdW5jdGlvbiAoKSB7IHJldHVybiAhMCB9IDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubm9kZU5hbWUgJiYgZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0IH0gfSwgQ0xBU1M6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gbVtlICsgIiAiXTsgcmV0dXJuIHQgfHwgKHQgPSBuZXcgUmVnRXhwKCIoXnwiICsgTSArICIpIiArIGUgKyAiKCIgKyBNICsgInwkKSIpKSAmJiBtKGUsIGZ1bmN0aW9uIChlKSB7IHJldHVybiB0LnRlc3QoInN0cmluZyIgPT0gdHlwZW9mIGUuY2xhc3NOYW1lICYmIGUuY2xhc3NOYW1lIHx8ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLmdldEF0dHJpYnV0ZSAmJiBlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIikgfSkgfSwgQVRUUjogZnVuY3Rpb24gKG4sIHIsIGkpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gc2UuYXR0cihlLCBuKTsgcmV0dXJuIG51bGwgPT0gdCA/ICIhPSIgPT09IHIgOiAhciB8fCAodCArPSAiIiwgIj0iID09PSByID8gdCA9PT0gaSA6ICIhPSIgPT09IHIgPyB0ICE9PSBpIDogIl49IiA9PT0gciA/IGkgJiYgMCA9PT0gdC5pbmRleE9mKGkpIDogIio9IiA9PT0gciA/IGkgJiYgLTEgPCB0LmluZGV4T2YoaSkgOiAiJD0iID09PSByID8gaSAmJiB0LnNsaWNlKC1pLmxlbmd0aCkgPT09IGkgOiAifj0iID09PSByID8gLTEgPCAoIiAiICsgdC5yZXBsYWNlKEIsICIgIikgKyAiICIpLmluZGV4T2YoaSkgOiAifD0iID09PSByICYmICh0ID09PSBpIHx8IHQuc2xpY2UoMCwgaS5sZW5ndGggKyAxKSA9PT0gaSArICItIikpIH0gfSwgQ0hJTEQ6IGZ1bmN0aW9uIChoLCBlLCB0LCBnLCB2KSB7IHZhciB5ID0gIm50aCIgIT09IGguc2xpY2UoMCwgMyksIG0gPSAibGFzdCIgIT09IGguc2xpY2UoLTQpLCB4ID0gIm9mLXR5cGUiID09PSBlOyByZXR1cm4gMSA9PT0gZyAmJiAwID09PSB2ID8gZnVuY3Rpb24gKGUpIHsgcmV0dXJuICEhZS5wYXJlbnROb2RlIH0gOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgcywgdSwgbCA9IHkgIT09IG0gPyAibmV4dFNpYmxpbmciIDogInByZXZpb3VzU2libGluZyIsIGMgPSBlLnBhcmVudE5vZGUsIGYgPSB4ICYmIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgcCA9ICFuICYmICF4LCBkID0gITE7IGlmIChjKSB7IGlmICh5KSB7IHdoaWxlIChsKSB7IGEgPSBlOyB3aGlsZSAoYSA9IGFbbF0pIGlmICh4ID8gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBmIDogMSA9PT0gYS5ub2RlVHlwZSkgcmV0dXJuICExOyB1ID0gbCA9ICJvbmx5IiA9PT0gaCAmJiAhdSAmJiAibmV4dFNpYmxpbmciIH0gcmV0dXJuICEwIH0gaWYgKHUgPSBbbSA/IGMuZmlyc3RDaGlsZCA6IGMubGFzdENoaWxkXSwgbSAmJiBwKSB7IGQgPSAocyA9IChyID0gKGkgPSAobyA9IChhID0gYylbU10gfHwgKGFbU10gPSB7fSkpW2EudW5pcXVlSURdIHx8IChvW2EudW5pcXVlSURdID0ge30pKVtoXSB8fCBbXSlbMF0gPT09IGsgJiYgclsxXSkgJiYgclsyXSwgYSA9IHMgJiYgYy5jaGlsZE5vZGVzW3NdOyB3aGlsZSAoYSA9ICsrcyAmJiBhICYmIGFbbF0gfHwgKGQgPSBzID0gMCkgfHwgdS5wb3AoKSkgaWYgKDEgPT09IGEubm9kZVR5cGUgJiYgKytkICYmIGEgPT09IGUpIHsgaVtoXSA9IFtrLCBzLCBkXTsgYnJlYWsgfSB9IGVsc2UgaWYgKHAgJiYgKGQgPSBzID0gKHIgPSAoaSA9IChvID0gKGEgPSBlKVtTXSB8fCAoYVtTXSA9IHt9KSlbYS51bmlxdWVJRF0gfHwgKG9bYS51bmlxdWVJRF0gPSB7fSkpW2hdIHx8IFtdKVswXSA9PT0gayAmJiByWzFdKSwgITEgPT09IGQpIHdoaWxlIChhID0gKytzICYmIGEgJiYgYVtsXSB8fCAoZCA9IHMgPSAwKSB8fCB1LnBvcCgpKSBpZiAoKHggPyBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IGYgOiAxID09PSBhLm5vZGVUeXBlKSAmJiArK2QgJiYgKHAgJiYgKChpID0gKG8gPSBhW1NdIHx8IChhW1NdID0ge30pKVthLnVuaXF1ZUlEXSB8fCAob1thLnVuaXF1ZUlEXSA9IHt9KSlbaF0gPSBbaywgZF0pLCBhID09PSBlKSkgYnJlYWs7IHJldHVybiAoZCAtPSB2KSA9PT0gZyB8fCBkICUgZyA9PSAwICYmIDAgPD0gZCAvIGcgfSB9IH0sIFBTRVVETzogZnVuY3Rpb24gKGUsIG8pIHsgdmFyIHQsIGEgPSBiLnBzZXVkb3NbZV0gfHwgYi5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV0gfHwgc2UuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIiArIGUpOyByZXR1cm4gYVtTXSA/IGEobykgOiAxIDwgYS5sZW5ndGggPyAodCA9IFtlLCBlLCAiIiwgb10sIGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpID8gbGUoZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBhKGUsIG8pLCBpID0gci5sZW5ndGg7IHdoaWxlIChpLS0pIGVbbiA9IFAoZSwgcltpXSldID0gISh0W25dID0gcltpXSkgfSkgOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gYShlLCAwLCB0KSB9KSA6IGEgfSB9LCBwc2V1ZG9zOiB7IG5vdDogbGUoZnVuY3Rpb24gKGUpIHsgdmFyIHIgPSBbXSwgaSA9IFtdLCBzID0gZihlLnJlcGxhY2UoJCwgIiQxIikpOyByZXR1cm4gc1tTXSA/IGxlKGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IHZhciBpLCBvID0gcyhlLCBudWxsLCByLCBbXSksIGEgPSBlLmxlbmd0aDsgd2hpbGUgKGEtLSkgKGkgPSBvW2FdKSAmJiAoZVthXSA9ICEodFthXSA9IGkpKSB9KSA6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiByWzBdID0gZSwgcyhyLCBudWxsLCBuLCBpKSwgclswXSA9IG51bGwsICFpLnBvcCgpIH0gfSksIGhhczogbGUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJldHVybiAwIDwgc2UodCwgZSkubGVuZ3RoIH0gfSksIGNvbnRhaW5zOiBsZShmdW5jdGlvbiAodCkgeyByZXR1cm4gdCA9IHQucmVwbGFjZSh0ZSwgbmUpLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gLTEgPCAoZS50ZXh0Q29udGVudCB8fCBvKGUpKS5pbmRleE9mKHQpIH0gfSksIGxhbmc6IGxlKGZ1bmN0aW9uIChuKSB7IHJldHVybiBWLnRlc3QobiB8fCAiIikgfHwgc2UuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIgKyBuKSwgbiA9IG4ucmVwbGFjZSh0ZSwgbmUpLnRvTG93ZXJDYXNlKCksIGZ1bmN0aW9uIChlKSB7IHZhciB0OyBkbyB7IGlmICh0ID0gRSA/IGUubGFuZyA6IGUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpIHx8IGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpIHJldHVybiAodCA9IHQudG9Mb3dlckNhc2UoKSkgPT09IG4gfHwgMCA9PT0gdC5pbmRleE9mKG4gKyAiLSIpIH0gd2hpbGUgKChlID0gZS5wYXJlbnROb2RlKSAmJiAxID09PSBlLm5vZGVUeXBlKTsgcmV0dXJuICExIH0gfSksIHRhcmdldDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBuLmxvY2F0aW9uICYmIG4ubG9jYXRpb24uaGFzaDsgcmV0dXJuIHQgJiYgdC5zbGljZSgxKSA9PT0gZS5pZCB9LCByb290OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA9PT0gYSB9LCBmb2N1czogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IEMuYWN0aXZlRWxlbWVudCAmJiAoIUMuaGFzRm9jdXMgfHwgQy5oYXNGb2N1cygpKSAmJiAhIShlLnR5cGUgfHwgZS5ocmVmIHx8IH5lLnRhYkluZGV4KSB9LCBlbmFibGVkOiBnZSghMSksIGRpc2FibGVkOiBnZSghMCksIGNoZWNrZWQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyByZXR1cm4gImlucHV0IiA9PT0gdCAmJiAhIWUuY2hlY2tlZCB8fCAib3B0aW9uIiA9PT0gdCAmJiAhIWUuc2VsZWN0ZWQgfSwgc2VsZWN0ZWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnBhcmVudE5vZGUgJiYgZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsICEwID09PSBlLnNlbGVjdGVkIH0sIGVtcHR5OiBmdW5jdGlvbiAoZSkgeyBmb3IgKGUgPSBlLmZpcnN0Q2hpbGQ7IGU7IGUgPSBlLm5leHRTaWJsaW5nKWlmIChlLm5vZGVUeXBlIDwgNikgcmV0dXJuICExOyByZXR1cm4gITAgfSwgcGFyZW50OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIWIucHNldWRvcy5lbXB0eShlKSB9LCBoZWFkZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBKLnRlc3QoZS5ub2RlTmFtZSkgfSwgaW5wdXQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBRLnRlc3QoZS5ub2RlTmFtZSkgfSwgYnV0dG9uOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsgcmV0dXJuICJpbnB1dCIgPT09IHQgJiYgImJ1dHRvbiIgPT09IGUudHlwZSB8fCAiYnV0dG9uIiA9PT0gdCB9LCB0ZXh0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuICJpbnB1dCIgPT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAmJiAidGV4dCIgPT09IGUudHlwZSAmJiAobnVsbCA9PSAodCA9IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpIHx8ICJ0ZXh0IiA9PT0gdC50b0xvd2VyQ2FzZSgpKSB9LCBmaXJzdDogdmUoZnVuY3Rpb24gKCkgeyByZXR1cm4gWzBdIH0pLCBsYXN0OiB2ZShmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gW3QgLSAxXSB9KSwgZXE6IHZlKGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBbbiA8IDAgPyBuICsgdCA6IG5dIH0pLCBldmVuOiB2ZShmdW5jdGlvbiAoZSwgdCkgeyBmb3IgKHZhciBuID0gMDsgbiA8IHQ7IG4gKz0gMillLnB1c2gobik7IHJldHVybiBlIH0pLCBvZGQ6IHZlKGZ1bmN0aW9uIChlLCB0KSB7IGZvciAodmFyIG4gPSAxOyBuIDwgdDsgbiArPSAyKWUucHVzaChuKTsgcmV0dXJuIGUgfSksIGx0OiB2ZShmdW5jdGlvbiAoZSwgdCwgbikgeyBmb3IgKHZhciByID0gbiA8IDAgPyBuICsgdCA6IHQgPCBuID8gdCA6IG47IDAgPD0gLS1yOyllLnB1c2gocik7IHJldHVybiBlIH0pLCBndDogdmUoZnVuY3Rpb24gKGUsIHQsIG4pIHsgZm9yICh2YXIgciA9IG4gPCAwID8gbiArIHQgOiBuOyArK3IgPCB0OyllLnB1c2gocik7IHJldHVybiBlIH0pIH0gfSkucHNldWRvcy5udGggPSBiLnBzZXVkb3MuZXEsIHsgcmFkaW86ICEwLCBjaGVja2JveDogITAsIGZpbGU6ICEwLCBwYXNzd29yZDogITAsIGltYWdlOiAhMCB9KSBiLnBzZXVkb3NbZV0gPSBkZShlKTsgZm9yIChlIGluIHsgc3VibWl0OiAhMCwgcmVzZXQ6ICEwIH0pIGIucHNldWRvc1tlXSA9IGhlKGUpOyBmdW5jdGlvbiBtZSgpIHsgfSBmdW5jdGlvbiB4ZShlKSB7IGZvciAodmFyIHQgPSAwLCBuID0gZS5sZW5ndGgsIHIgPSAiIjsgdCA8IG47IHQrKylyICs9IGVbdF0udmFsdWU7IHJldHVybiByIH0gZnVuY3Rpb24gYmUocywgZSwgdCkgeyB2YXIgdSA9IGUuZGlyLCBsID0gZS5uZXh0LCBjID0gbCB8fCB1LCBmID0gdCAmJiAicGFyZW50Tm9kZSIgPT09IGMsIHAgPSByKys7IHJldHVybiBlLmZpcnN0ID8gZnVuY3Rpb24gKGUsIHQsIG4pIHsgd2hpbGUgKGUgPSBlW3VdKSBpZiAoMSA9PT0gZS5ub2RlVHlwZSB8fCBmKSByZXR1cm4gcyhlLCB0LCBuKTsgcmV0dXJuICExIH0gOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSA9IFtrLCBwXTsgaWYgKG4pIHsgd2hpbGUgKGUgPSBlW3VdKSBpZiAoKDEgPT09IGUubm9kZVR5cGUgfHwgZikgJiYgcyhlLCB0LCBuKSkgcmV0dXJuICEwIH0gZWxzZSB3aGlsZSAoZSA9IGVbdV0pIGlmICgxID09PSBlLm5vZGVUeXBlIHx8IGYpIGlmIChpID0gKG8gPSBlW1NdIHx8IChlW1NdID0ge30pKVtlLnVuaXF1ZUlEXSB8fCAob1tlLnVuaXF1ZUlEXSA9IHt9KSwgbCAmJiBsID09PSBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpIGUgPSBlW3VdIHx8IGU7IGVsc2UgeyBpZiAoKHIgPSBpW2NdKSAmJiByWzBdID09PSBrICYmIHJbMV0gPT09IHApIHJldHVybiBhWzJdID0gclsyXTsgaWYgKChpW2NdID0gYSlbMl0gPSBzKGUsIHQsIG4pKSByZXR1cm4gITAgfSByZXR1cm4gITEgfSB9IGZ1bmN0aW9uIHdlKGkpIHsgcmV0dXJuIDEgPCBpLmxlbmd0aCA/IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gaS5sZW5ndGg7IHdoaWxlIChyLS0pIGlmICghaVtyXShlLCB0LCBuKSkgcmV0dXJuICExOyByZXR1cm4gITAgfSA6IGlbMF0gfSBmdW5jdGlvbiBUZShlLCB0LCBuLCByLCBpKSB7IGZvciAodmFyIG8sIGEgPSBbXSwgcyA9IDAsIHUgPSBlLmxlbmd0aCwgbCA9IG51bGwgIT0gdDsgcyA8IHU7IHMrKykobyA9IGVbc10pICYmIChuICYmICFuKG8sIHIsIGkpIHx8IChhLnB1c2gobyksIGwgJiYgdC5wdXNoKHMpKSk7IHJldHVybiBhIH0gZnVuY3Rpb24gQ2UoZCwgaCwgZywgdiwgeSwgZSkgeyByZXR1cm4gdiAmJiAhdltTXSAmJiAodiA9IENlKHYpKSwgeSAmJiAheVtTXSAmJiAoeSA9IENlKHksIGUpKSwgbGUoZnVuY3Rpb24gKGUsIHQsIG4sIHIpIHsgdmFyIGksIG8sIGEsIHMgPSBbXSwgdSA9IFtdLCBsID0gdC5sZW5ndGgsIGMgPSBlIHx8IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGZvciAodmFyIHIgPSAwLCBpID0gdC5sZW5ndGg7IHIgPCBpOyByKyspc2UoZSwgdFtyXSwgbik7IHJldHVybiBuIH0oaCB8fCAiKiIsIG4ubm9kZVR5cGUgPyBbbl0gOiBuLCBbXSksIGYgPSAhZCB8fCAhZSAmJiBoID8gYyA6IFRlKGMsIHMsIGQsIG4sIHIpLCBwID0gZyA/IHkgfHwgKGUgPyBkIDogbCB8fCB2KSA/IFtdIDogdCA6IGY7IGlmIChnICYmIGcoZiwgcCwgbiwgciksIHYpIHsgaSA9IFRlKHAsIHUpLCB2KGksIFtdLCBuLCByKSwgbyA9IGkubGVuZ3RoOyB3aGlsZSAoby0tKSAoYSA9IGlbb10pICYmIChwW3Vbb11dID0gIShmW3Vbb11dID0gYSkpIH0gaWYgKGUpIHsgaWYgKHkgfHwgZCkgeyBpZiAoeSkgeyBpID0gW10sIG8gPSBwLmxlbmd0aDsgd2hpbGUgKG8tLSkgKGEgPSBwW29dKSAmJiBpLnB1c2goZltvXSA9IGEpOyB5KG51bGwsIHAgPSBbXSwgaSwgcikgfSBvID0gcC5sZW5ndGg7IHdoaWxlIChvLS0pIChhID0gcFtvXSkgJiYgLTEgPCAoaSA9IHkgPyBQKGUsIGEpIDogc1tvXSkgJiYgKGVbaV0gPSAhKHRbaV0gPSBhKSkgfSB9IGVsc2UgcCA9IFRlKHAgPT09IHQgPyBwLnNwbGljZShsLCBwLmxlbmd0aCkgOiBwKSwgeSA/IHkobnVsbCwgdCwgcCwgcikgOiBILmFwcGx5KHQsIHApIH0pIH0gZnVuY3Rpb24gRWUoZSkgeyBmb3IgKHZhciBpLCB0LCBuLCByID0gZS5sZW5ndGgsIG8gPSBiLnJlbGF0aXZlW2VbMF0udHlwZV0sIGEgPSBvIHx8IGIucmVsYXRpdmVbIiAiXSwgcyA9IG8gPyAxIDogMCwgdSA9IGJlKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID09PSBpIH0sIGEsICEwKSwgbCA9IGJlKGZ1bmN0aW9uIChlKSB7IHJldHVybiAtMSA8IFAoaSwgZSkgfSwgYSwgITApLCBjID0gW2Z1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gIW8gJiYgKG4gfHwgdCAhPT0gdykgfHwgKChpID0gdCkubm9kZVR5cGUgPyB1KGUsIHQsIG4pIDogbChlLCB0LCBuKSk7IHJldHVybiBpID0gbnVsbCwgciB9XTsgcyA8IHI7IHMrKylpZiAodCA9IGIucmVsYXRpdmVbZVtzXS50eXBlXSkgYyA9IFtiZSh3ZShjKSwgdCldOyBlbHNlIHsgaWYgKCh0ID0gYi5maWx0ZXJbZVtzXS50eXBlXS5hcHBseShudWxsLCBlW3NdLm1hdGNoZXMpKVtTXSkgeyBmb3IgKG4gPSArK3M7IG4gPCByOyBuKyspaWYgKGIucmVsYXRpdmVbZVtuXS50eXBlXSkgYnJlYWs7IHJldHVybiBDZSgxIDwgcyAmJiB3ZShjKSwgMSA8IHMgJiYgeGUoZS5zbGljZSgwLCBzIC0gMSkuY29uY2F0KHsgdmFsdWU6ICIgIiA9PT0gZVtzIC0gMl0udHlwZSA/ICIqIiA6ICIiIH0pKS5yZXBsYWNlKCQsICIkMSIpLCB0LCBzIDwgbiAmJiBFZShlLnNsaWNlKHMsIG4pKSwgbiA8IHIgJiYgRWUoZSA9IGUuc2xpY2UobikpLCBuIDwgciAmJiB4ZShlKSkgfSBjLnB1c2godCkgfSByZXR1cm4gd2UoYykgfSByZXR1cm4gbWUucHJvdG90eXBlID0gYi5maWx0ZXJzID0gYi5wc2V1ZG9zLCBiLnNldEZpbHRlcnMgPSBuZXcgbWUsIGggPSBzZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhLCBzLCB1LCBsID0geFtlICsgIiAiXTsgaWYgKGwpIHJldHVybiB0ID8gMCA6IGwuc2xpY2UoMCk7IGEgPSBlLCBzID0gW10sIHUgPSBiLnByZUZpbHRlcjsgd2hpbGUgKGEpIHsgZm9yIChvIGluIG4gJiYgIShyID0gXy5leGVjKGEpKSB8fCAociAmJiAoYSA9IGEuc2xpY2UoclswXS5sZW5ndGgpIHx8IGEpLCBzLnB1c2goaSA9IFtdKSksIG4gPSAhMSwgKHIgPSB6LmV4ZWMoYSkpICYmIChuID0gci5zaGlmdCgpLCBpLnB1c2goeyB2YWx1ZTogbiwgdHlwZTogclswXS5yZXBsYWNlKCQsICIgIikgfSksIGEgPSBhLnNsaWNlKG4ubGVuZ3RoKSksIGIuZmlsdGVyKSAhKHIgPSBHW29dLmV4ZWMoYSkpIHx8IHVbb10gJiYgIShyID0gdVtvXShyKSkgfHwgKG4gPSByLnNoaWZ0KCksIGkucHVzaCh7IHZhbHVlOiBuLCB0eXBlOiBvLCBtYXRjaGVzOiByIH0pLCBhID0gYS5zbGljZShuLmxlbmd0aCkpOyBpZiAoIW4pIGJyZWFrIH0gcmV0dXJuIHQgPyBhLmxlbmd0aCA6IGEgPyBzZS5lcnJvcihlKSA6IHgoZSwgcykuc2xpY2UoMCkgfSwgZiA9IHNlLmNvbXBpbGUgPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgdiwgeSwgbSwgeCwgciwgaSA9IFtdLCBvID0gW10sIGEgPSBBW2UgKyAiICJdOyBpZiAoIWEpIHsgdCB8fCAodCA9IGgoZSkpLCBuID0gdC5sZW5ndGg7IHdoaWxlIChuLS0pIChhID0gRWUodFtuXSkpW1NdID8gaS5wdXNoKGEpIDogby5wdXNoKGEpOyAoYSA9IEEoZSwgKHYgPSBvLCBtID0gMCA8ICh5ID0gaSkubGVuZ3RoLCB4ID0gMCA8IHYubGVuZ3RoLCByID0gZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGkpIHsgdmFyIG8sIGEsIHMsIHUgPSAwLCBsID0gIjAiLCBjID0gZSAmJiBbXSwgZiA9IFtdLCBwID0gdywgZCA9IGUgfHwgeCAmJiBiLmZpbmQuVEFHKCIqIiwgaSksIGggPSBrICs9IG51bGwgPT0gcCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IC4xLCBnID0gZC5sZW5ndGg7IGZvciAoaSAmJiAodyA9IHQgPT0gQyB8fCB0IHx8IGkpOyBsICE9PSBnICYmIG51bGwgIT0gKG8gPSBkW2xdKTsgbCsrKSB7IGlmICh4ICYmIG8pIHsgYSA9IDAsIHQgfHwgby5vd25lckRvY3VtZW50ID09IEMgfHwgKFQobyksIG4gPSAhRSk7IHdoaWxlIChzID0gdlthKytdKSBpZiAocyhvLCB0IHx8IEMsIG4pKSB7IHIucHVzaChvKTsgYnJlYWsgfSBpICYmIChrID0gaCkgfSBtICYmICgobyA9ICFzICYmIG8pICYmIHUtLSwgZSAmJiBjLnB1c2gobykpIH0gaWYgKHUgKz0gbCwgbSAmJiBsICE9PSB1KSB7IGEgPSAwOyB3aGlsZSAocyA9IHlbYSsrXSkgcyhjLCBmLCB0LCBuKTsgaWYgKGUpIHsgaWYgKDAgPCB1KSB3aGlsZSAobC0tKSBjW2xdIHx8IGZbbF0gfHwgKGZbbF0gPSBxLmNhbGwocikpOyBmID0gVGUoZikgfSBILmFwcGx5KHIsIGYpLCBpICYmICFlICYmIDAgPCBmLmxlbmd0aCAmJiAxIDwgdSArIHkubGVuZ3RoICYmIHNlLnVuaXF1ZVNvcnQocikgfSByZXR1cm4gaSAmJiAoayA9IGgsIHcgPSBwKSwgYyB9LCBtID8gbGUocikgOiByKSkpLnNlbGVjdG9yID0gZSB9IHJldHVybiBhIH0sIGcgPSBzZS5zZWxlY3QgPSBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgcywgdSwgbCA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgZSwgYyA9ICFyICYmIGgoZSA9IGwuc2VsZWN0b3IgfHwgZSk7IGlmIChuID0gbiB8fCBbXSwgMSA9PT0gYy5sZW5ndGgpIHsgaWYgKDIgPCAobyA9IGNbMF0gPSBjWzBdLnNsaWNlKDApKS5sZW5ndGggJiYgIklEIiA9PT0gKGEgPSBvWzBdKS50eXBlICYmIDkgPT09IHQubm9kZVR5cGUgJiYgRSAmJiBiLnJlbGF0aXZlW29bMV0udHlwZV0pIHsgaWYgKCEodCA9IChiLmZpbmQuSUQoYS5tYXRjaGVzWzBdLnJlcGxhY2UodGUsIG5lKSwgdCkgfHwgW10pWzBdKSkgcmV0dXJuIG47IGwgJiYgKHQgPSB0LnBhcmVudE5vZGUpLCBlID0gZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKSB9IGkgPSBHLm5lZWRzQ29udGV4dC50ZXN0KGUpID8gMCA6IG8ubGVuZ3RoOyB3aGlsZSAoaS0tKSB7IGlmIChhID0gb1tpXSwgYi5yZWxhdGl2ZVtzID0gYS50eXBlXSkgYnJlYWs7IGlmICgodSA9IGIuZmluZFtzXSkgJiYgKHIgPSB1KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLCBuZSksIGVlLnRlc3Qob1swXS50eXBlKSAmJiB5ZSh0LnBhcmVudE5vZGUpIHx8IHQpKSkgeyBpZiAoby5zcGxpY2UoaSwgMSksICEoZSA9IHIubGVuZ3RoICYmIHhlKG8pKSkgcmV0dXJuIEguYXBwbHkobiwgciksIG47IGJyZWFrIH0gfSB9IHJldHVybiAobCB8fCBmKGUsIGMpKShyLCB0LCAhRSwgbiwgIXQgfHwgZWUudGVzdChlKSAmJiB5ZSh0LnBhcmVudE5vZGUpIHx8IHQpLCBuIH0sIGQuc29ydFN0YWJsZSA9IFMuc3BsaXQoIiIpLnNvcnQoaikuam9pbigiIikgPT09IFMsIGQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhbCwgVCgpLCBkLnNvcnREZXRhY2hlZCA9IGNlKGZ1bmN0aW9uIChlKSB7IHJldHVybiAxICYgZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihDLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpIH0pLCBjZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5pbm5lckhUTUwgPSAiPGEgaHJlZj0nIyc+PC9hPiIsICIjIiA9PT0gZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIH0pIHx8IGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIiwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgaWYgKCFuKSByZXR1cm4gZS5nZXRBdHRyaWJ1dGUodCwgInR5cGUiID09PSB0LnRvTG93ZXJDYXNlKCkgPyAxIDogMikgfSksIGQuYXR0cmlidXRlcyAmJiBjZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5pbm5lckhUTUwgPSAiPGlucHV0Lz4iLCBlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsICIiKSwgIiIgPT09IGUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIikgfSkgfHwgZmUoInZhbHVlIiwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgaWYgKCFuICYmICJpbnB1dCIgPT09IGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIGUuZGVmYXVsdFZhbHVlIH0pLCBjZShmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PSBlLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSB9KSB8fCBmZShSLCBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgcjsgaWYgKCFuKSByZXR1cm4gITAgPT09IGVbdF0gPyB0LnRvTG93ZXJDYXNlKCkgOiAociA9IGUuZ2V0QXR0cmlidXRlTm9kZSh0KSkgJiYgci5zcGVjaWZpZWQgPyByLnZhbHVlIDogbnVsbCB9KSwgc2UgfShDKTsgUy5maW5kID0gZCwgUy5leHByID0gZC5zZWxlY3RvcnMsIFMuZXhwclsiOiJdID0gUy5leHByLnBzZXVkb3MsIFMudW5pcXVlU29ydCA9IFMudW5pcXVlID0gZC51bmlxdWVTb3J0LCBTLnRleHQgPSBkLmdldFRleHQsIFMuaXNYTUxEb2MgPSBkLmlzWE1MLCBTLmNvbnRhaW5zID0gZC5jb250YWlucywgUy5lc2NhcGVTZWxlY3RvciA9IGQuZXNjYXBlOyB2YXIgaCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gW10sIGkgPSB2b2lkIDAgIT09IG47IHdoaWxlICgoZSA9IGVbdF0pICYmIDkgIT09IGUubm9kZVR5cGUpIGlmICgxID09PSBlLm5vZGVUeXBlKSB7IGlmIChpICYmIFMoZSkuaXMobikpIGJyZWFrOyByLnB1c2goZSkgfSByZXR1cm4gciB9LCBUID0gZnVuY3Rpb24gKGUsIHQpIHsgZm9yICh2YXIgbiA9IFtdOyBlOyBlID0gZS5uZXh0U2libGluZykxID09PSBlLm5vZGVUeXBlICYmIGUgIT09IHQgJiYgbi5wdXNoKGUpOyByZXR1cm4gbiB9LCBrID0gUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dDsgZnVuY3Rpb24gQShlLCB0KSB7IHJldHVybiBlLm5vZGVOYW1lICYmIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdC50b0xvd2VyQ2FzZSgpIH0gdmFyIE4gPSAvXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTsgZnVuY3Rpb24gaihlLCBuLCByKSB7IHJldHVybiBtKG4pID8gUy5ncmVwKGUsIGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiAhIW4uY2FsbChlLCB0LCBlKSAhPT0gciB9KSA6IG4ubm9kZVR5cGUgPyBTLmdyZXAoZSwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgPT09IG4gIT09IHIgfSkgOiAic3RyaW5nIiAhPSB0eXBlb2YgbiA/IFMuZ3JlcChlLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gLTEgPCBpLmNhbGwobiwgZSkgIT09IHIgfSkgOiBTLmZpbHRlcihuLCBlLCByKSB9IFMuZmlsdGVyID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIgPSB0WzBdOyByZXR1cm4gbiAmJiAoZSA9ICI6bm90KCIgKyBlICsgIikiKSwgMSA9PT0gdC5sZW5ndGggJiYgMSA9PT0gci5ub2RlVHlwZSA/IFMuZmluZC5tYXRjaGVzU2VsZWN0b3IociwgZSkgPyBbcl0gOiBbXSA6IFMuZmluZC5tYXRjaGVzKGUsIFMuZ3JlcCh0LCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gMSA9PT0gZS5ub2RlVHlwZSB9KSkgfSwgUy5mbi5leHRlbmQoeyBmaW5kOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciA9IHRoaXMubGVuZ3RoLCBpID0gdGhpczsgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlKSByZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24gKCkgeyBmb3IgKHQgPSAwOyB0IDwgcjsgdCsrKWlmIChTLmNvbnRhaW5zKGlbdF0sIHRoaXMpKSByZXR1cm4gITAgfSkpOyBmb3IgKG4gPSB0aGlzLnB1c2hTdGFjayhbXSksIHQgPSAwOyB0IDwgcjsgdCsrKVMuZmluZChlLCBpW3RdLCBuKTsgcmV0dXJuIDEgPCByID8gUy51bmlxdWVTb3J0KG4pIDogbiB9LCBmaWx0ZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsIGUgfHwgW10sICExKSkgfSwgbm90OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLCBlIHx8IFtdLCAhMCkpIH0sIGlzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gISFqKHRoaXMsICJzdHJpbmciID09IHR5cGVvZiBlICYmIGsudGVzdChlKSA/IFMoZSkgOiBlIHx8IFtdLCAhMSkubGVuZ3RoIH0gfSk7IHZhciBELCBxID0gL14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsgKFMuZm4uaW5pdCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpOyBpZiAoIWUpIHJldHVybiB0aGlzOyBpZiAobiA9IG4gfHwgRCwgInN0cmluZyIgPT0gdHlwZW9mIGUpIHsgaWYgKCEociA9ICI8IiA9PT0gZVswXSAmJiAiPiIgPT09IGVbZS5sZW5ndGggLSAxXSAmJiAzIDw9IGUubGVuZ3RoID8gW251bGwsIGUsIG51bGxdIDogcS5leGVjKGUpKSB8fCAhclsxXSAmJiB0KSByZXR1cm4gIXQgfHwgdC5qcXVlcnkgPyAodCB8fCBuKS5maW5kKGUpIDogdGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpOyBpZiAoclsxXSkgeyBpZiAodCA9IHQgaW5zdGFuY2VvZiBTID8gdFswXSA6IHQsIFMubWVyZ2UodGhpcywgUy5wYXJzZUhUTUwoclsxXSwgdCAmJiB0Lm5vZGVUeXBlID8gdC5vd25lckRvY3VtZW50IHx8IHQgOiBFLCAhMCkpLCBOLnRlc3QoclsxXSkgJiYgUy5pc1BsYWluT2JqZWN0KHQpKSBmb3IgKHIgaW4gdCkgbSh0aGlzW3JdKSA/IHRoaXNbcl0odFtyXSkgOiB0aGlzLmF0dHIociwgdFtyXSk7IHJldHVybiB0aGlzIH0gcmV0dXJuIChpID0gRS5nZXRFbGVtZW50QnlJZChyWzJdKSkgJiYgKHRoaXNbMF0gPSBpLCB0aGlzLmxlbmd0aCA9IDEpLCB0aGlzIH0gcmV0dXJuIGUubm9kZVR5cGUgPyAodGhpc1swXSA9IGUsIHRoaXMubGVuZ3RoID0gMSwgdGhpcykgOiBtKGUpID8gdm9pZCAwICE9PSBuLnJlYWR5ID8gbi5yZWFkeShlKSA6IGUoUykgOiBTLm1ha2VBcnJheShlLCB0aGlzKSB9KS5wcm90b3R5cGUgPSBTLmZuLCBEID0gUyhFKTsgdmFyIEwgPSAvXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLywgSCA9IHsgY2hpbGRyZW46ICEwLCBjb250ZW50czogITAsIG5leHQ6ICEwLCBwcmV2OiAhMCB9OyBmdW5jdGlvbiBPKGUsIHQpIHsgd2hpbGUgKChlID0gZVt0XSkgJiYgMSAhPT0gZS5ub2RlVHlwZSk7IHJldHVybiBlIH0gUy5mbi5leHRlbmQoeyBoYXM6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gUyhlLCB0aGlzKSwgbiA9IHQubGVuZ3RoOyByZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlID0gMDsgZSA8IG47IGUrKylpZiAoUy5jb250YWlucyh0aGlzLCB0W2VdKSkgcmV0dXJuICEwIH0pIH0sIGNsb3Nlc3Q6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHRoaXMubGVuZ3RoLCBvID0gW10sIGEgPSAic3RyaW5nIiAhPSB0eXBlb2YgZSAmJiBTKGUpOyBpZiAoIWsudGVzdChlKSkgZm9yICg7IHIgPCBpOyByKyspZm9yIChuID0gdGhpc1tyXTsgbiAmJiBuICE9PSB0OyBuID0gbi5wYXJlbnROb2RlKWlmIChuLm5vZGVUeXBlIDwgMTEgJiYgKGEgPyAtMSA8IGEuaW5kZXgobikgOiAxID09PSBuLm5vZGVUeXBlICYmIFMuZmluZC5tYXRjaGVzU2VsZWN0b3IobiwgZSkpKSB7IG8ucHVzaChuKTsgYnJlYWsgfSByZXR1cm4gdGhpcy5wdXNoU3RhY2soMSA8IG8ubGVuZ3RoID8gUy51bmlxdWVTb3J0KG8pIDogbykgfSwgaW5kZXg6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID8gInN0cmluZyIgPT0gdHlwZW9mIGUgPyBpLmNhbGwoUyhlKSwgdGhpc1swXSkgOiBpLmNhbGwodGhpcywgZS5qcXVlcnkgPyBlWzBdIDogZSkgOiB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTEgfSwgYWRkOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSwgUyhlLCB0KSkpKSB9LCBhZGRCYWNrOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5hZGQobnVsbCA9PSBlID8gdGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSkgfSB9KSwgUy5lYWNoKHsgcGFyZW50OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IGUucGFyZW50Tm9kZTsgcmV0dXJuIHQgJiYgMTEgIT09IHQubm9kZVR5cGUgPyB0IDogbnVsbCB9LCBwYXJlbnRzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaChlLCAicGFyZW50Tm9kZSIpIH0sIHBhcmVudHNVbnRpbDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIGgoZSwgInBhcmVudE5vZGUiLCBuKSB9LCBuZXh0OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gTyhlLCAibmV4dFNpYmxpbmciKSB9LCBwcmV2OiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gTyhlLCAicHJldmlvdXNTaWJsaW5nIikgfSwgbmV4dEFsbDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGgoZSwgIm5leHRTaWJsaW5nIikgfSwgcHJldkFsbDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGgoZSwgInByZXZpb3VzU2libGluZyIpIH0sIG5leHRVbnRpbDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIGgoZSwgIm5leHRTaWJsaW5nIiwgbikgfSwgcHJldlVudGlsOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gaChlLCAicHJldmlvdXNTaWJsaW5nIiwgbikgfSwgc2libGluZ3M6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBUKChlLnBhcmVudE5vZGUgfHwge30pLmZpcnN0Q2hpbGQsIGUpIH0sIGNoaWxkcmVuOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gVChlLmZpcnN0Q2hpbGQpIH0sIGNvbnRlbnRzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCAhPSBlLmNvbnRlbnREb2N1bWVudCAmJiByKGUuY29udGVudERvY3VtZW50KSA/IGUuY29udGVudERvY3VtZW50IDogKEEoZSwgInRlbXBsYXRlIikgJiYgKGUgPSBlLmNvbnRlbnQgfHwgZSksIFMubWVyZ2UoW10sIGUuY2hpbGROb2RlcykpIH0gfSwgZnVuY3Rpb24gKHIsIGkpIHsgUy5mbltyXSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gUy5tYXAodGhpcywgaSwgZSk7IHJldHVybiAiVW50aWwiICE9PSByLnNsaWNlKC01KSAmJiAodCA9IGUpLCB0ICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmIChuID0gUy5maWx0ZXIodCwgbikpLCAxIDwgdGhpcy5sZW5ndGggJiYgKEhbcl0gfHwgUy51bmlxdWVTb3J0KG4pLCBMLnRlc3QocikgJiYgbi5yZXZlcnNlKCkpLCB0aGlzLnB1c2hTdGFjayhuKSB9IH0pOyB2YXIgUCA9IC9bXlx4MjBcdFxyXG5cZl0rL2c7IGZ1bmN0aW9uIFIoZSkgeyByZXR1cm4gZSB9IGZ1bmN0aW9uIE0oZSkgeyB0aHJvdyBlIH0gZnVuY3Rpb24gSShlLCB0LCBuLCByKSB7IHZhciBpOyB0cnkgeyBlICYmIG0oaSA9IGUucHJvbWlzZSkgPyBpLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pIDogZSAmJiBtKGkgPSBlLnRoZW4pID8gaS5jYWxsKGUsIHQsIG4pIDogdC5hcHBseSh2b2lkIDAsIFtlXS5zbGljZShyKSkgfSBjYXRjaCAoZSkgeyBuLmFwcGx5KHZvaWQgMCwgW2VdKSB9IH0gUy5DYWxsYmFja3MgPSBmdW5jdGlvbiAocikgeyB2YXIgZSwgbjsgciA9ICJzdHJpbmciID09IHR5cGVvZiByID8gKGUgPSByLCBuID0ge30sIFMuZWFjaChlLm1hdGNoKFApIHx8IFtdLCBmdW5jdGlvbiAoZSwgdCkgeyBuW3RdID0gITAgfSksIG4pIDogUy5leHRlbmQoe30sIHIpOyB2YXIgaSwgdCwgbywgYSwgcyA9IFtdLCB1ID0gW10sIGwgPSAtMSwgYyA9IGZ1bmN0aW9uICgpIHsgZm9yIChhID0gYSB8fCByLm9uY2UsIG8gPSBpID0gITA7IHUubGVuZ3RoOyBsID0gLTEpIHsgdCA9IHUuc2hpZnQoKTsgd2hpbGUgKCsrbCA8IHMubGVuZ3RoKSAhMSA9PT0gc1tsXS5hcHBseSh0WzBdLCB0WzFdKSAmJiByLnN0b3BPbkZhbHNlICYmIChsID0gcy5sZW5ndGgsIHQgPSAhMSkgfSByLm1lbW9yeSB8fCAodCA9ICExKSwgaSA9ICExLCBhICYmIChzID0gdCA/IFtdIDogIiIpIH0sIGYgPSB7IGFkZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcyAmJiAodCAmJiAhaSAmJiAobCA9IHMubGVuZ3RoIC0gMSwgdS5wdXNoKHQpKSwgZnVuY3Rpb24gbihlKSB7IFMuZWFjaChlLCBmdW5jdGlvbiAoZSwgdCkgeyBtKHQpID8gci51bmlxdWUgJiYgZi5oYXModCkgfHwgcy5wdXNoKHQpIDogdCAmJiB0Lmxlbmd0aCAmJiAic3RyaW5nIiAhPT0gdyh0KSAmJiBuKHQpIH0pIH0oYXJndW1lbnRzKSwgdCAmJiAhaSAmJiBjKCkpLCB0aGlzIH0sIHJlbW92ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gUy5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG47IHdoaWxlICgtMSA8IChuID0gUy5pbkFycmF5KHQsIHMsIG4pKSkgcy5zcGxpY2UobiwgMSksIG4gPD0gbCAmJiBsLS0gfSksIHRoaXMgfSwgaGFzOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSA/IC0xIDwgUy5pbkFycmF5KGUsIHMpIDogMCA8IHMubGVuZ3RoIH0sIGVtcHR5OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzICYmIChzID0gW10pLCB0aGlzIH0sIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGEgPSB1ID0gW10sIHMgPSB0ID0gIiIsIHRoaXMgfSwgZGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFzIH0sIGxvY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGEgPSB1ID0gW10sIHQgfHwgaSB8fCAocyA9IHQgPSAiIiksIHRoaXMgfSwgbG9ja2VkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIWEgfSwgZmlyZVdpdGg6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBhIHx8ICh0ID0gW2UsICh0ID0gdCB8fCBbXSkuc2xpY2UgPyB0LnNsaWNlKCkgOiB0XSwgdS5wdXNoKHQpLCBpIHx8IGMoKSksIHRoaXMgfSwgZmlyZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gZi5maXJlV2l0aCh0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIGZpcmVkOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIW8gfSB9OyByZXR1cm4gZiB9LCBTLmV4dGVuZCh7IERlZmVycmVkOiBmdW5jdGlvbiAoZSkgeyB2YXIgbyA9IFtbIm5vdGlmeSIsICJwcm9ncmVzcyIsIFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwgUy5DYWxsYmFja3MoIm1lbW9yeSIpLCAyXSwgWyJyZXNvbHZlIiwgImRvbmUiLCBTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwgUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIDAsICJyZXNvbHZlZCJdLCBbInJlamVjdCIsICJmYWlsIiwgUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCAxLCAicmVqZWN0ZWQiXV0sIGkgPSAicGVuZGluZyIsIGEgPSB7IHN0YXRlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBpIH0sIGFsd2F5czogZnVuY3Rpb24gKCkgeyByZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLCB0aGlzIH0sICJjYXRjaCI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBhLnRoZW4obnVsbCwgZSkgfSwgcGlwZTogZnVuY3Rpb24gKCkgeyB2YXIgaSA9IGFyZ3VtZW50czsgcmV0dXJuIFMuRGVmZXJyZWQoZnVuY3Rpb24gKHIpIHsgUy5lYWNoKG8sIGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gbShpW3RbNF1dKSAmJiBpW3RbNF1dOyBzW3RbMV1dKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBuICYmIG4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsgZSAmJiBtKGUucHJvbWlzZSkgPyBlLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpIDogclt0WzBdICsgIldpdGgiXSh0aGlzLCBuID8gW2VdIDogYXJndW1lbnRzKSB9KSB9KSwgaSA9IG51bGwgfSkucHJvbWlzZSgpIH0sIHRoZW46IGZ1bmN0aW9uICh0LCBuLCByKSB7IHZhciB1ID0gMDsgZnVuY3Rpb24gbChpLCBvLCBhLCBzKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBuID0gdGhpcywgciA9IGFyZ3VtZW50cywgZSA9IGZ1bmN0aW9uICgpIHsgdmFyIGUsIHQ7IGlmICghKGkgPCB1KSkgeyBpZiAoKGUgPSBhLmFwcGx5KG4sIHIpKSA9PT0gby5wcm9taXNlKCkpIHRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpOyB0ID0gZSAmJiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgfHwgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSkgJiYgZS50aGVuLCBtKHQpID8gcyA/IHQuY2FsbChlLCBsKHUsIG8sIFIsIHMpLCBsKHUsIG8sIE0sIHMpKSA6ICh1KyssIHQuY2FsbChlLCBsKHUsIG8sIFIsIHMpLCBsKHUsIG8sIE0sIHMpLCBsKHUsIG8sIFIsIG8ubm90aWZ5V2l0aCkpKSA6IChhICE9PSBSICYmIChuID0gdm9pZCAwLCByID0gW2VdKSwgKHMgfHwgby5yZXNvbHZlV2l0aCkobiwgcikpIH0gfSwgdCA9IHMgPyBlIDogZnVuY3Rpb24gKCkgeyB0cnkgeyBlKCkgfSBjYXRjaCAoZSkgeyBTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgJiYgUy5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsIHQuc3RhY2tUcmFjZSksIHUgPD0gaSArIDEgJiYgKGEgIT09IE0gJiYgKG4gPSB2b2lkIDAsIHIgPSBbZV0pLCBvLnJlamVjdFdpdGgobiwgcikpIH0gfTsgaSA/IHQoKSA6IChTLkRlZmVycmVkLmdldFN0YWNrSG9vayAmJiAodC5zdGFja1RyYWNlID0gUy5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksIEMuc2V0VGltZW91dCh0KSkgfSB9IHJldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uIChlKSB7IG9bMF1bM10uYWRkKGwoMCwgZSwgbShyKSA/IHIgOiBSLCBlLm5vdGlmeVdpdGgpKSwgb1sxXVszXS5hZGQobCgwLCBlLCBtKHQpID8gdCA6IFIpKSwgb1syXVszXS5hZGQobCgwLCBlLCBtKG4pID8gbiA6IE0pKSB9KS5wcm9taXNlKCkgfSwgcHJvbWlzZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgIT0gZSA/IFMuZXh0ZW5kKGUsIGEpIDogYSB9IH0sIHMgPSB7fTsgcmV0dXJuIFMuZWFjaChvLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHRbMl0sIHIgPSB0WzVdOyBhW3RbMV1dID0gbi5hZGQsIHIgJiYgbi5hZGQoZnVuY3Rpb24gKCkgeyBpID0gciB9LCBvWzMgLSBlXVsyXS5kaXNhYmxlLCBvWzMgLSBlXVszXS5kaXNhYmxlLCBvWzBdWzJdLmxvY2ssIG9bMF1bM10ubG9jayksIG4uYWRkKHRbM10uZmlyZSksIHNbdFswXV0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzW3RbMF0gKyAiV2l0aCJdKHRoaXMgPT09IHMgPyB2b2lkIDAgOiB0aGlzLCBhcmd1bWVudHMpLCB0aGlzIH0sIHNbdFswXSArICJXaXRoIl0gPSBuLmZpcmVXaXRoIH0pLCBhLnByb21pc2UocyksIGUgJiYgZS5jYWxsKHMsIHMpLCBzIH0sIHdoZW46IGZ1bmN0aW9uIChlKSB7IHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCwgdCA9IG4sIHIgPSBBcnJheSh0KSwgaSA9IHMuY2FsbChhcmd1bWVudHMpLCBvID0gUy5EZWZlcnJlZCgpLCBhID0gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IHJbdF0gPSB0aGlzLCBpW3RdID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBzLmNhbGwoYXJndW1lbnRzKSA6IGUsIC0tbiB8fCBvLnJlc29sdmVXaXRoKHIsIGkpIH0gfTsgaWYgKG4gPD0gMSAmJiAoSShlLCBvLmRvbmUoYSh0KSkucmVzb2x2ZSwgby5yZWplY3QsICFuKSwgInBlbmRpbmciID09PSBvLnN0YXRlKCkgfHwgbShpW3RdICYmIGlbdF0udGhlbikpKSByZXR1cm4gby50aGVuKCk7IHdoaWxlICh0LS0pIEkoaVt0XSwgYSh0KSwgby5yZWplY3QpOyByZXR1cm4gby5wcm9taXNlKCkgfSB9KTsgdmFyIFcgPSAvXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLzsgUy5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24gKGUsIHQpIHsgQy5jb25zb2xlICYmIEMuY29uc29sZS53YXJuICYmIGUgJiYgVy50ZXN0KGUubmFtZSkgJiYgQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIgKyBlLm1lc3NhZ2UsIGUuc3RhY2ssIHQpIH0sIFMucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiAoZSkgeyBDLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0pIH07IHZhciBGID0gUy5EZWZlcnJlZCgpOyBmdW5jdGlvbiBCKCkgeyBFLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBCKSwgQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIiwgQiksIFMucmVhZHkoKSB9IFMuZm4ucmVhZHkgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uIChlKSB7IFMucmVhZHlFeGNlcHRpb24oZSkgfSksIHRoaXMgfSwgUy5leHRlbmQoeyBpc1JlYWR5OiAhMSwgcmVhZHlXYWl0OiAxLCByZWFkeTogZnVuY3Rpb24gKGUpIHsgKCEwID09PSBlID8gLS1TLnJlYWR5V2FpdCA6IFMuaXNSZWFkeSkgfHwgKFMuaXNSZWFkeSA9ICEwKSAhPT0gZSAmJiAwIDwgLS1TLnJlYWR5V2FpdCB8fCBGLnJlc29sdmVXaXRoKEUsIFtTXSkgfSB9KSwgUy5yZWFkeS50aGVuID0gRi50aGVuLCAiY29tcGxldGUiID09PSBFLnJlYWR5U3RhdGUgfHwgImxvYWRpbmciICE9PSBFLnJlYWR5U3RhdGUgJiYgIUUuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsID8gQy5zZXRUaW1lb3V0KFMucmVhZHkpIDogKEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIEIpLCBDLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBCKSk7IHZhciAkID0gZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGksIG8sIGEpIHsgdmFyIHMgPSAwLCB1ID0gZS5sZW5ndGgsIGwgPSBudWxsID09IG47IGlmICgib2JqZWN0IiA9PT0gdyhuKSkgZm9yIChzIGluIGkgPSAhMCwgbikgJChlLCB0LCBzLCBuW3NdLCAhMCwgbywgYSk7IGVsc2UgaWYgKHZvaWQgMCAhPT0gciAmJiAoaSA9ICEwLCBtKHIpIHx8IChhID0gITApLCBsICYmIChhID8gKHQuY2FsbChlLCByKSwgdCA9IG51bGwpIDogKGwgPSB0LCB0ID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIGwuY2FsbChTKGUpLCBuKSB9KSksIHQpKSBmb3IgKDsgcyA8IHU7IHMrKyl0KGVbc10sIG4sIGEgPyByIDogci5jYWxsKGVbc10sIHMsIHQoZVtzXSwgbikpKTsgcmV0dXJuIGkgPyBlIDogbCA/IHQuY2FsbChlKSA6IHUgPyB0KGVbMF0sIG4pIDogbyB9LCBfID0gL14tbXMtLywgeiA9IC8tKFthLXpdKS9nOyBmdW5jdGlvbiBVKGUsIHQpIHsgcmV0dXJuIHQudG9VcHBlckNhc2UoKSB9IGZ1bmN0aW9uIFgoZSkgeyByZXR1cm4gZS5yZXBsYWNlKF8sICJtcy0iKS5yZXBsYWNlKHosIFUpIH0gdmFyIFYgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gMSA9PT0gZS5ub2RlVHlwZSB8fCA5ID09PSBlLm5vZGVUeXBlIHx8ICErZS5ub2RlVHlwZSB9OyBmdW5jdGlvbiBHKCkgeyB0aGlzLmV4cGFuZG8gPSBTLmV4cGFuZG8gKyBHLnVpZCsrIH0gRy51aWQgPSAxLCBHLnByb3RvdHlwZSA9IHsgY2FjaGU6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZVt0aGlzLmV4cGFuZG9dOyByZXR1cm4gdCB8fCAodCA9IHt9LCBWKGUpICYmIChlLm5vZGVUeXBlID8gZVt0aGlzLmV4cGFuZG9dID0gdCA6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0aGlzLmV4cGFuZG8sIHsgdmFsdWU6IHQsIGNvbmZpZ3VyYWJsZTogITAgfSkpKSwgdCB9LCBzZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpID0gdGhpcy5jYWNoZShlKTsgaWYgKCJzdHJpbmciID09IHR5cGVvZiB0KSBpW1godCldID0gbjsgZWxzZSBmb3IgKHIgaW4gdCkgaVtYKHIpXSA9IHRbcl07IHJldHVybiBpIH0sIGdldDogZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuIHZvaWQgMCA9PT0gdCA/IHRoaXMuY2FjaGUoZSkgOiBlW3RoaXMuZXhwYW5kb10gJiYgZVt0aGlzLmV4cGFuZG9dW1godCldIH0sIGFjY2VzczogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIHZvaWQgMCA9PT0gdCB8fCB0ICYmICJzdHJpbmciID09IHR5cGVvZiB0ICYmIHZvaWQgMCA9PT0gbiA/IHRoaXMuZ2V0KGUsIHQpIDogKHRoaXMuc2V0KGUsIHQsIG4pLCB2b2lkIDAgIT09IG4gPyBuIDogdCkgfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IGVbdGhpcy5leHBhbmRvXTsgaWYgKHZvaWQgMCAhPT0gcikgeyBpZiAodm9pZCAwICE9PSB0KSB7IG4gPSAodCA9IEFycmF5LmlzQXJyYXkodCkgPyB0Lm1hcChYKSA6ICh0ID0gWCh0KSkgaW4gciA/IFt0XSA6IHQubWF0Y2goUCkgfHwgW10pLmxlbmd0aDsgd2hpbGUgKG4tLSkgZGVsZXRlIHJbdFtuXV0gfSAodm9pZCAwID09PSB0IHx8IFMuaXNFbXB0eU9iamVjdChyKSkgJiYgKGUubm9kZVR5cGUgPyBlW3RoaXMuZXhwYW5kb10gPSB2b2lkIDAgOiBkZWxldGUgZVt0aGlzLmV4cGFuZG9dKSB9IH0sIGhhc0RhdGE6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZVt0aGlzLmV4cGFuZG9dOyByZXR1cm4gdm9pZCAwICE9PSB0ICYmICFTLmlzRW1wdHlPYmplY3QodCkgfSB9OyB2YXIgWSA9IG5ldyBHLCBRID0gbmV3IEcsIEogPSAvXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLCBLID0gL1tBLVpdL2c7IGZ1bmN0aW9uIFooZSwgdCwgbikgeyB2YXIgciwgaTsgaWYgKHZvaWQgMCA9PT0gbiAmJiAxID09PSBlLm5vZGVUeXBlKSBpZiAociA9ICJkYXRhLSIgKyB0LnJlcGxhY2UoSywgIi0kJiIpLnRvTG93ZXJDYXNlKCksICJzdHJpbmciID09IHR5cGVvZiAobiA9IGUuZ2V0QXR0cmlidXRlKHIpKSkgeyB0cnkgeyBuID0gInRydWUiID09PSAoaSA9IG4pIHx8ICJmYWxzZSIgIT09IGkgJiYgKCJudWxsIiA9PT0gaSA/IG51bGwgOiBpID09PSAraSArICIiID8gK2kgOiBKLnRlc3QoaSkgPyBKU09OLnBhcnNlKGkpIDogaSkgfSBjYXRjaCAoZSkgeyB9IFEuc2V0KGUsIHQsIG4pIH0gZWxzZSBuID0gdm9pZCAwOyByZXR1cm4gbiB9IFMuZXh0ZW5kKHsgaGFzRGF0YTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFEuaGFzRGF0YShlKSB8fCBZLmhhc0RhdGEoZSkgfSwgZGF0YTogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIFEuYWNjZXNzKGUsIHQsIG4pIH0sIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IFEucmVtb3ZlKGUsIHQpIH0sIF9kYXRhOiBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gWS5hY2Nlc3MoZSwgdCwgbikgfSwgX3JlbW92ZURhdGE6IGZ1bmN0aW9uIChlLCB0KSB7IFkucmVtb3ZlKGUsIHQpIH0gfSksIFMuZm4uZXh0ZW5kKHsgZGF0YTogZnVuY3Rpb24gKG4sIGUpIHsgdmFyIHQsIHIsIGksIG8gPSB0aGlzWzBdLCBhID0gbyAmJiBvLmF0dHJpYnV0ZXM7IGlmICh2b2lkIDAgPT09IG4pIHsgaWYgKHRoaXMubGVuZ3RoICYmIChpID0gUS5nZXQobyksIDEgPT09IG8ubm9kZVR5cGUgJiYgIVkuZ2V0KG8sICJoYXNEYXRhQXR0cnMiKSkpIHsgdCA9IGEubGVuZ3RoOyB3aGlsZSAodC0tKSBhW3RdICYmIDAgPT09IChyID0gYVt0XS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpICYmIChyID0gWChyLnNsaWNlKDUpKSwgWihvLCByLCBpW3JdKSk7IFkuc2V0KG8sICJoYXNEYXRhQXR0cnMiLCAhMCkgfSByZXR1cm4gaSB9IHJldHVybiAib2JqZWN0IiA9PSB0eXBlb2YgbiA/IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IFEuc2V0KHRoaXMsIG4pIH0pIDogJCh0aGlzLCBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgaWYgKG8gJiYgdm9pZCAwID09PSBlKSByZXR1cm4gdm9pZCAwICE9PSAodCA9IFEuZ2V0KG8sIG4pKSA/IHQgOiB2b2lkIDAgIT09ICh0ID0gWihvLCBuKSkgPyB0IDogdm9pZCAwOyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBRLnNldCh0aGlzLCBuLCBlKSB9KSB9LCBudWxsLCBlLCAxIDwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCwgITApIH0sIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBRLnJlbW92ZSh0aGlzLCBlKSB9KSB9IH0pLCBTLmV4dGVuZCh7IHF1ZXVlOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgcjsgaWYgKGUpIHJldHVybiB0ID0gKHQgfHwgImZ4IikgKyAicXVldWUiLCByID0gWS5nZXQoZSwgdCksIG4gJiYgKCFyIHx8IEFycmF5LmlzQXJyYXkobikgPyByID0gWS5hY2Nlc3MoZSwgdCwgUy5tYWtlQXJyYXkobikpIDogci5wdXNoKG4pKSwgciB8fCBbXSB9LCBkZXF1ZXVlOiBmdW5jdGlvbiAoZSwgdCkgeyB0ID0gdCB8fCAiZngiOyB2YXIgbiA9IFMucXVldWUoZSwgdCksIHIgPSBuLmxlbmd0aCwgaSA9IG4uc2hpZnQoKSwgbyA9IFMuX3F1ZXVlSG9va3MoZSwgdCk7ICJpbnByb2dyZXNzIiA9PT0gaSAmJiAoaSA9IG4uc2hpZnQoKSwgci0tKSwgaSAmJiAoImZ4IiA9PT0gdCAmJiBuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSwgZGVsZXRlIG8uc3RvcCwgaS5jYWxsKGUsIGZ1bmN0aW9uICgpIHsgUy5kZXF1ZXVlKGUsIHQpIH0sIG8pKSwgIXIgJiYgbyAmJiBvLmVtcHR5LmZpcmUoKSB9LCBfcXVldWVIb29rczogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0ICsgInF1ZXVlSG9va3MiOyByZXR1cm4gWS5nZXQoZSwgbikgfHwgWS5hY2Nlc3MoZSwgbiwgeyBlbXB0eTogUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uICgpIHsgWS5yZW1vdmUoZSwgW3QgKyAicXVldWUiLCBuXSkgfSkgfSkgfSB9KSwgUy5mbi5leHRlbmQoeyBxdWV1ZTogZnVuY3Rpb24gKHQsIG4pIHsgdmFyIGUgPSAyOyByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gImZ4IiwgZS0tKSwgYXJndW1lbnRzLmxlbmd0aCA8IGUgPyBTLnF1ZXVlKHRoaXNbMF0sIHQpIDogdm9pZCAwID09PSBuID8gdGhpcyA6IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciBlID0gUy5xdWV1ZSh0aGlzLCB0LCBuKTsgUy5fcXVldWVIb29rcyh0aGlzLCB0KSwgImZ4IiA9PT0gdCAmJiAiaW5wcm9ncmVzcyIgIT09IGVbMF0gJiYgUy5kZXF1ZXVlKHRoaXMsIHQpIH0pIH0sIGRlcXVldWU6IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyBTLmRlcXVldWUodGhpcywgZSkgfSkgfSwgY2xlYXJRdWV1ZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMucXVldWUoZSB8fCAiZngiLCBbXSkgfSwgcHJvbWlzZTogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSAxLCBpID0gUy5EZWZlcnJlZCgpLCBvID0gdGhpcywgYSA9IHRoaXMubGVuZ3RoLCBzID0gZnVuY3Rpb24gKCkgeyAtLXIgfHwgaS5yZXNvbHZlV2l0aChvLCBbb10pIH07ICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9IHZvaWQgMCksIGUgPSBlIHx8ICJmeCI7IHdoaWxlIChhLS0pIChuID0gWS5nZXQob1thXSwgZSArICJxdWV1ZUhvb2tzIikpICYmIG4uZW1wdHkgJiYgKHIrKywgbi5lbXB0eS5hZGQocykpOyByZXR1cm4gcygpLCBpLnByb21pc2UodCkgfSB9KTsgdmFyIGVlID0gL1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsIHRlID0gbmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiICsgZWUgKyAiKShbYS16JV0qKSQiLCAiaSIpLCBuZSA9IFsiVG9wIiwgIlJpZ2h0IiwgIkJvdHRvbSIsICJMZWZ0Il0sIHJlID0gRS5kb2N1bWVudEVsZW1lbnQsIGllID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LCBlKSB9LCBvZSA9IHsgY29tcG9zZWQ6ICEwIH07IHJlLmdldFJvb3ROb2RlICYmIChpZSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCwgZSkgfHwgZS5nZXRSb290Tm9kZShvZSkgPT09IGUub3duZXJEb2N1bWVudCB9KTsgdmFyIGFlID0gZnVuY3Rpb24gKGUsIHQpIHsgcmV0dXJuICJub25lIiA9PT0gKGUgPSB0IHx8IGUpLnN0eWxlLmRpc3BsYXkgfHwgIiIgPT09IGUuc3R5bGUuZGlzcGxheSAmJiBpZShlKSAmJiAibm9uZSIgPT09IFMuY3NzKGUsICJkaXNwbGF5IikgfTsgZnVuY3Rpb24gc2UoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSA9IDIwLCBzID0gciA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHIuY3VyKCkgfSA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFMuY3NzKGUsIHQsICIiKSB9LCB1ID0gcygpLCBsID0gbiAmJiBuWzNdIHx8IChTLmNzc051bWJlclt0XSA/ICIiIDogInB4IiksIGMgPSBlLm5vZGVUeXBlICYmIChTLmNzc051bWJlclt0XSB8fCAicHgiICE9PSBsICYmICt1KSAmJiB0ZS5leGVjKFMuY3NzKGUsIHQpKTsgaWYgKGMgJiYgY1szXSAhPT0gbCkgeyB1IC89IDIsIGwgPSBsIHx8IGNbM10sIGMgPSArdSB8fCAxOyB3aGlsZSAoYS0tKSBTLnN0eWxlKGUsIHQsIGMgKyBsKSwgKDEgLSBvKSAqICgxIC0gKG8gPSBzKCkgLyB1IHx8IC41KSkgPD0gMCAmJiAoYSA9IDApLCBjIC89IG87IGMgKj0gMiwgUy5zdHlsZShlLCB0LCBjICsgbCksIG4gPSBuIHx8IFtdIH0gcmV0dXJuIG4gJiYgKGMgPSArYyB8fCArdSB8fCAwLCBpID0gblsxXSA/IGMgKyAoblsxXSArIDEpICogblsyXSA6ICtuWzJdLCByICYmIChyLnVuaXQgPSBsLCByLnN0YXJ0ID0gYywgci5lbmQgPSBpKSksIGkgfSB2YXIgdWUgPSB7fTsgZnVuY3Rpb24gbGUoZSwgdCkgeyBmb3IgKHZhciBuLCByLCBpLCBvLCBhLCBzLCB1LCBsID0gW10sIGMgPSAwLCBmID0gZS5sZW5ndGg7IGMgPCBmOyBjKyspKHIgPSBlW2NdKS5zdHlsZSAmJiAobiA9IHIuc3R5bGUuZGlzcGxheSwgdCA/ICgibm9uZSIgPT09IG4gJiYgKGxbY10gPSBZLmdldChyLCAiZGlzcGxheSIpIHx8IG51bGwsIGxbY10gfHwgKHIuc3R5bGUuZGlzcGxheSA9ICIiKSksICIiID09PSByLnN0eWxlLmRpc3BsYXkgJiYgYWUocikgJiYgKGxbY10gPSAodSA9IGEgPSBvID0gdm9pZCAwLCBhID0gKGkgPSByKS5vd25lckRvY3VtZW50LCBzID0gaS5ub2RlTmFtZSwgKHUgPSB1ZVtzXSkgfHwgKG8gPSBhLmJvZHkuYXBwZW5kQ2hpbGQoYS5jcmVhdGVFbGVtZW50KHMpKSwgdSA9IFMuY3NzKG8sICJkaXNwbGF5IiksIG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwgIm5vbmUiID09PSB1ICYmICh1ID0gImJsb2NrIiksIHVlW3NdID0gdSkpKSkgOiAibm9uZSIgIT09IG4gJiYgKGxbY10gPSAibm9uZSIsIFkuc2V0KHIsICJkaXNwbGF5IiwgbikpKTsgZm9yIChjID0gMDsgYyA8IGY7IGMrKyludWxsICE9IGxbY10gJiYgKGVbY10uc3R5bGUuZGlzcGxheSA9IGxbY10pOyByZXR1cm4gZSB9IFMuZm4uZXh0ZW5kKHsgc2hvdzogZnVuY3Rpb24gKCkgeyByZXR1cm4gbGUodGhpcywgITApIH0sIGhpZGU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxlKHRoaXMpIH0sIHRvZ2dsZTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuICJib29sZWFuIiA9PSB0eXBlb2YgZSA/IGUgPyB0aGlzLnNob3coKSA6IHRoaXMuaGlkZSgpIDogdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgYWUodGhpcykgPyBTKHRoaXMpLnNob3coKSA6IFModGhpcykuaGlkZSgpIH0pIH0gfSk7IHZhciBjZSwgZmUsIHBlID0gL14oPzpjaGVja2JveHxyYWRpbykkL2ksIGRlID0gLzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopL2ksIGhlID0gL14kfF5tb2R1bGUkfFwvKD86amF2YXxlY21hKXNjcmlwdC9pOyBjZSA9IEUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgiZGl2IikpLCAoZmUgPSBFLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgidHlwZSIsICJyYWRpbyIpLCBmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCAiY2hlY2tlZCIpLCBmZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAidCIpLCBjZS5hcHBlbmRDaGlsZChmZSksIHkuY2hlY2tDbG9uZSA9IGNlLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCwgY2UuaW5uZXJIVE1MID0gIjx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLCB5Lm5vQ2xvbmVDaGVja2VkID0gISFjZS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsIGNlLmlubmVySFRNTCA9ICI8b3B0aW9uPjwvb3B0aW9uPiIsIHkub3B0aW9uID0gISFjZS5sYXN0Q2hpbGQ7IHZhciBnZSA9IHsgdGhlYWQ6IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJdLCBjb2w6IFsyLCAiPHRhYmxlPjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiJdLCB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5PjwvdGFibGU+Il0sIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSwgX2RlZmF1bHQ6IFswLCAiIiwgIiJdIH07IGZ1bmN0aW9uIHZlKGUsIHQpIHsgdmFyIG47IHJldHVybiBuID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPyBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQgfHwgIioiKSA6ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwgPyBlLnF1ZXJ5U2VsZWN0b3JBbGwodCB8fCAiKiIpIDogW10sIHZvaWQgMCA9PT0gdCB8fCB0ICYmIEEoZSwgdCkgPyBTLm1lcmdlKFtlXSwgbikgOiBuIH0gZnVuY3Rpb24geWUoZSwgdCkgeyBmb3IgKHZhciBuID0gMCwgciA9IGUubGVuZ3RoOyBuIDwgcjsgbisrKVkuc2V0KGVbbl0sICJnbG9iYWxFdmFsIiwgIXQgfHwgWS5nZXQodFtuXSwgImdsb2JhbEV2YWwiKSkgfSBnZS50Ym9keSA9IGdlLnRmb290ID0gZ2UuY29sZ3JvdXAgPSBnZS5jYXB0aW9uID0gZ2UudGhlYWQsIGdlLnRoID0gZ2UudGQsIHkub3B0aW9uIHx8IChnZS5vcHRncm91cCA9IGdlLm9wdGlvbiA9IFsxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSk7IHZhciBtZSA9IC88fCYjP1x3KzsvOyBmdW5jdGlvbiB4ZShlLCB0LCBuLCByLCBpKSB7IGZvciAodmFyIG8sIGEsIHMsIHUsIGwsIGMsIGYgPSB0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgcCA9IFtdLCBkID0gMCwgaCA9IGUubGVuZ3RoOyBkIDwgaDsgZCsrKWlmICgobyA9IGVbZF0pIHx8IDAgPT09IG8pIGlmICgib2JqZWN0IiA9PT0gdyhvKSkgUy5tZXJnZShwLCBvLm5vZGVUeXBlID8gW29dIDogbyk7IGVsc2UgaWYgKG1lLnRlc3QobykpIHsgYSA9IGEgfHwgZi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwgcyA9IChkZS5leGVjKG8pIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpLCB1ID0gZ2Vbc10gfHwgZ2UuX2RlZmF1bHQsIGEuaW5uZXJIVE1MID0gdVsxXSArIFMuaHRtbFByZWZpbHRlcihvKSArIHVbMl0sIGMgPSB1WzBdOyB3aGlsZSAoYy0tKSBhID0gYS5sYXN0Q2hpbGQ7IFMubWVyZ2UocCwgYS5jaGlsZE5vZGVzKSwgKGEgPSBmLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50ID0gIiIgfSBlbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTsgZi50ZXh0Q29udGVudCA9ICIiLCBkID0gMDsgd2hpbGUgKG8gPSBwW2QrK10pIGlmIChyICYmIC0xIDwgUy5pbkFycmF5KG8sIHIpKSBpICYmIGkucHVzaChvKTsgZWxzZSBpZiAobCA9IGllKG8pLCBhID0gdmUoZi5hcHBlbmRDaGlsZChvKSwgInNjcmlwdCIpLCBsICYmIHllKGEpLCBuKSB7IGMgPSAwOyB3aGlsZSAobyA9IGFbYysrXSkgaGUudGVzdChvLnR5cGUgfHwgIiIpICYmIG4ucHVzaChvKSB9IHJldHVybiBmIH0gdmFyIGJlID0gL14oW14uXSopKD86XC4oLispfCkvOyBmdW5jdGlvbiB3ZSgpIHsgcmV0dXJuICEwIH0gZnVuY3Rpb24gVGUoKSB7IHJldHVybiAhMSB9IGZ1bmN0aW9uIENlKGUsIHQpIHsgcmV0dXJuIGUgPT09IGZ1bmN0aW9uICgpIHsgdHJ5IHsgcmV0dXJuIEUuYWN0aXZlRWxlbWVudCB9IGNhdGNoIChlKSB7IH0gfSgpID09ICgiZm9jdXMiID09PSB0KSB9IGZ1bmN0aW9uIEVlKGUsIHQsIG4sIHIsIGksIG8pIHsgdmFyIGEsIHM7IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCkgeyBmb3IgKHMgaW4gInN0cmluZyIgIT0gdHlwZW9mIG4gJiYgKHIgPSByIHx8IG4sIG4gPSB2b2lkIDApLCB0KSBFZShlLCBzLCBuLCByLCB0W3NdLCBvKTsgcmV0dXJuIGUgfSBpZiAobnVsbCA9PSByICYmIG51bGwgPT0gaSA/IChpID0gbiwgciA9IG4gPSB2b2lkIDApIDogbnVsbCA9PSBpICYmICgic3RyaW5nIiA9PSB0eXBlb2YgbiA/IChpID0gciwgciA9IHZvaWQgMCkgOiAoaSA9IHIsIHIgPSBuLCBuID0gdm9pZCAwKSksICExID09PSBpKSBpID0gVGU7IGVsc2UgaWYgKCFpKSByZXR1cm4gZTsgcmV0dXJuIDEgPT09IG8gJiYgKGEgPSBpLCAoaSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBTKCkub2ZmKGUpLCBhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfSkuZ3VpZCA9IGEuZ3VpZCB8fCAoYS5ndWlkID0gUy5ndWlkKyspKSwgZS5lYWNoKGZ1bmN0aW9uICgpIHsgUy5ldmVudC5hZGQodGhpcywgdCwgaSwgciwgbikgfSkgfSBmdW5jdGlvbiBTZShlLCBpLCBvKSB7IG8gPyAoWS5zZXQoZSwgaSwgITEpLCBTLmV2ZW50LmFkZChlLCBpLCB7IG5hbWVzcGFjZTogITEsIGhhbmRsZXI6IGZ1bmN0aW9uIChlKSB7IHZhciB0LCBuLCByID0gWS5nZXQodGhpcywgaSk7IGlmICgxICYgZS5pc1RyaWdnZXIgJiYgdGhpc1tpXSkgeyBpZiAoci5sZW5ndGgpIChTLmV2ZW50LnNwZWNpYWxbaV0gfHwge30pLmRlbGVnYXRlVHlwZSAmJiBlLnN0b3BQcm9wYWdhdGlvbigpOyBlbHNlIGlmIChyID0gcy5jYWxsKGFyZ3VtZW50cyksIFkuc2V0KHRoaXMsIGksIHIpLCB0ID0gbyh0aGlzLCBpKSwgdGhpc1tpXSgpLCByICE9PSAobiA9IFkuZ2V0KHRoaXMsIGkpKSB8fCB0ID8gWS5zZXQodGhpcywgaSwgITEpIDogbiA9IHt9LCByICE9PSBuKSByZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgZS5wcmV2ZW50RGVmYXVsdCgpLCBuICYmIG4udmFsdWUgfSBlbHNlIHIubGVuZ3RoICYmIChZLnNldCh0aGlzLCBpLCB7IHZhbHVlOiBTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSwgUy5FdmVudC5wcm90b3R5cGUpLCByLnNsaWNlKDEpLCB0aGlzKSB9KSwgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSkgfSB9KSkgOiB2b2lkIDAgPT09IFkuZ2V0KGUsIGkpICYmIFMuZXZlbnQuYWRkKGUsIGksIHdlKSB9IFMuZXZlbnQgPSB7IGdsb2JhbDoge30sIGFkZDogZnVuY3Rpb24gKHQsIGUsIG4sIHIsIGkpIHsgdmFyIG8sIGEsIHMsIHUsIGwsIGMsIGYsIHAsIGQsIGgsIGcsIHYgPSBZLmdldCh0KTsgaWYgKFYodCkpIHsgbi5oYW5kbGVyICYmIChuID0gKG8gPSBuKS5oYW5kbGVyLCBpID0gby5zZWxlY3RvciksIGkgJiYgUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSwgaSksIG4uZ3VpZCB8fCAobi5ndWlkID0gUy5ndWlkKyspLCAodSA9IHYuZXZlbnRzKSB8fCAodSA9IHYuZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSksIChhID0gdi5oYW5kbGUpIHx8IChhID0gdi5oYW5kbGUgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gInVuZGVmaW5lZCIgIT0gdHlwZW9mIFMgJiYgUy5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSA/IFMuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCwgYXJndW1lbnRzKSA6IHZvaWQgMCB9KSwgbCA9IChlID0gKGUgfHwgIiIpLm1hdGNoKFApIHx8IFsiIl0pLmxlbmd0aDsgd2hpbGUgKGwtLSkgZCA9IGcgPSAocyA9IGJlLmV4ZWMoZVtsXSkgfHwgW10pWzFdLCBoID0gKHNbMl0gfHwgIiIpLnNwbGl0KCIuIikuc29ydCgpLCBkICYmIChmID0gUy5ldmVudC5zcGVjaWFsW2RdIHx8IHt9LCBkID0gKGkgPyBmLmRlbGVnYXRlVHlwZSA6IGYuYmluZFR5cGUpIHx8IGQsIGYgPSBTLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sIGMgPSBTLmV4dGVuZCh7IHR5cGU6IGQsIG9yaWdUeXBlOiBnLCBkYXRhOiByLCBoYW5kbGVyOiBuLCBndWlkOiBuLmd1aWQsIHNlbGVjdG9yOiBpLCBuZWVkc0NvbnRleHQ6IGkgJiYgUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLCBuYW1lc3BhY2U6IGguam9pbigiLiIpIH0sIG8pLCAocCA9IHVbZF0pIHx8ICgocCA9IHVbZF0gPSBbXSkuZGVsZWdhdGVDb3VudCA9IDAsIGYuc2V0dXAgJiYgITEgIT09IGYuc2V0dXAuY2FsbCh0LCByLCBoLCBhKSB8fCB0LmFkZEV2ZW50TGlzdGVuZXIgJiYgdC5hZGRFdmVudExpc3RlbmVyKGQsIGEpKSwgZi5hZGQgJiYgKGYuYWRkLmNhbGwodCwgYyksIGMuaGFuZGxlci5ndWlkIHx8IChjLmhhbmRsZXIuZ3VpZCA9IG4uZ3VpZCkpLCBpID8gcC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssIDAsIGMpIDogcC5wdXNoKGMpLCBTLmV2ZW50Lmdsb2JhbFtkXSA9ICEwKSB9IH0sIHJlbW92ZTogZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGkpIHsgdmFyIG8sIGEsIHMsIHUsIGwsIGMsIGYsIHAsIGQsIGgsIGcsIHYgPSBZLmhhc0RhdGEoZSkgJiYgWS5nZXQoZSk7IGlmICh2ICYmICh1ID0gdi5ldmVudHMpKSB7IGwgPSAodCA9ICh0IHx8ICIiKS5tYXRjaChQKSB8fCBbIiJdKS5sZW5ndGg7IHdoaWxlIChsLS0pIGlmIChkID0gZyA9IChzID0gYmUuZXhlYyh0W2xdKSB8fCBbXSlbMV0sIGggPSAoc1syXSB8fCAiIikuc3BsaXQoIi4iKS5zb3J0KCksIGQpIHsgZiA9IFMuZXZlbnQuc3BlY2lhbFtkXSB8fCB7fSwgcCA9IHVbZCA9IChyID8gZi5kZWxlZ2F0ZVR5cGUgOiBmLmJpbmRUeXBlKSB8fCBkXSB8fCBbXSwgcyA9IHNbMl0gJiYgbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSArICIoXFwufCQpIiksIGEgPSBvID0gcC5sZW5ndGg7IHdoaWxlIChvLS0pIGMgPSBwW29dLCAhaSAmJiBnICE9PSBjLm9yaWdUeXBlIHx8IG4gJiYgbi5ndWlkICE9PSBjLmd1aWQgfHwgcyAmJiAhcy50ZXN0KGMubmFtZXNwYWNlKSB8fCByICYmIHIgIT09IGMuc2VsZWN0b3IgJiYgKCIqKiIgIT09IHIgfHwgIWMuc2VsZWN0b3IpIHx8IChwLnNwbGljZShvLCAxKSwgYy5zZWxlY3RvciAmJiBwLmRlbGVnYXRlQ291bnQtLSwgZi5yZW1vdmUgJiYgZi5yZW1vdmUuY2FsbChlLCBjKSk7IGEgJiYgIXAubGVuZ3RoICYmIChmLnRlYXJkb3duICYmICExICE9PSBmLnRlYXJkb3duLmNhbGwoZSwgaCwgdi5oYW5kbGUpIHx8IFMucmVtb3ZlRXZlbnQoZSwgZCwgdi5oYW5kbGUpLCBkZWxldGUgdVtkXSkgfSBlbHNlIGZvciAoZCBpbiB1KSBTLmV2ZW50LnJlbW92ZShlLCBkICsgdFtsXSwgbiwgciwgITApOyBTLmlzRW1wdHlPYmplY3QodSkgJiYgWS5yZW1vdmUoZSwgImhhbmRsZSBldmVudHMiKSB9IH0sIGRpc3BhdGNoOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSwgbywgYSwgcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSwgdSA9IFMuZXZlbnQuZml4KGUpLCBsID0gKFkuZ2V0KHRoaXMsICJldmVudHMiKSB8fCBPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdIHx8IFtdLCBjID0gUy5ldmVudC5zcGVjaWFsW3UudHlwZV0gfHwge307IGZvciAoc1swXSA9IHUsIHQgPSAxOyB0IDwgYXJndW1lbnRzLmxlbmd0aDsgdCsrKXNbdF0gPSBhcmd1bWVudHNbdF07IGlmICh1LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcywgIWMucHJlRGlzcGF0Y2ggfHwgITEgIT09IGMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLCB1KSkgeyBhID0gUy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsIHUsIGwpLCB0ID0gMDsgd2hpbGUgKChpID0gYVt0KytdKSAmJiAhdS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7IHUuY3VycmVudFRhcmdldCA9IGkuZWxlbSwgbiA9IDA7IHdoaWxlICgobyA9IGkuaGFuZGxlcnNbbisrXSkgJiYgIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkgdS5ybmFtZXNwYWNlICYmICExICE9PSBvLm5hbWVzcGFjZSAmJiAhdS5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpIHx8ICh1LmhhbmRsZU9iaiA9IG8sIHUuZGF0YSA9IG8uZGF0YSwgdm9pZCAwICE9PSAociA9ICgoUy5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdIHx8IHt9KS5oYW5kbGUgfHwgby5oYW5kbGVyKS5hcHBseShpLmVsZW0sIHMpKSAmJiAhMSA9PT0gKHUucmVzdWx0ID0gcikgJiYgKHUucHJldmVudERlZmF1bHQoKSwgdS5zdG9wUHJvcGFnYXRpb24oKSkpIH0gcmV0dXJuIGMucG9zdERpc3BhdGNoICYmIGMucG9zdERpc3BhdGNoLmNhbGwodGhpcywgdSksIHUucmVzdWx0IH0gfSwgaGFuZGxlcnM6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhLCBzID0gW10sIHUgPSB0LmRlbGVnYXRlQ291bnQsIGwgPSBlLnRhcmdldDsgaWYgKHUgJiYgbC5ub2RlVHlwZSAmJiAhKCJjbGljayIgPT09IGUudHlwZSAmJiAxIDw9IGUuYnV0dG9uKSkgZm9yICg7IGwgIT09IHRoaXM7IGwgPSBsLnBhcmVudE5vZGUgfHwgdGhpcylpZiAoMSA9PT0gbC5ub2RlVHlwZSAmJiAoImNsaWNrIiAhPT0gZS50eXBlIHx8ICEwICE9PSBsLmRpc2FibGVkKSkgeyBmb3IgKG8gPSBbXSwgYSA9IHt9LCBuID0gMDsgbiA8IHU7IG4rKyl2b2lkIDAgPT09IGFbaSA9IChyID0gdFtuXSkuc2VsZWN0b3IgKyAiICJdICYmIChhW2ldID0gci5uZWVkc0NvbnRleHQgPyAtMSA8IFMoaSwgdGhpcykuaW5kZXgobCkgOiBTLmZpbmQoaSwgdGhpcywgbnVsbCwgW2xdKS5sZW5ndGgpLCBhW2ldICYmIG8ucHVzaChyKTsgby5sZW5ndGggJiYgcy5wdXNoKHsgZWxlbTogbCwgaGFuZGxlcnM6IG8gfSkgfSByZXR1cm4gbCA9IHRoaXMsIHUgPCB0Lmxlbmd0aCAmJiBzLnB1c2goeyBlbGVtOiBsLCBoYW5kbGVyczogdC5zbGljZSh1KSB9KSwgcyB9LCBhZGRQcm9wOiBmdW5jdGlvbiAodCwgZSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5FdmVudC5wcm90b3R5cGUsIHQsIHsgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIGdldDogbShlKSA/IGZ1bmN0aW9uICgpIHsgaWYgKHRoaXMub3JpZ2luYWxFdmVudCkgcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KSB9IDogZnVuY3Rpb24gKCkgeyBpZiAodGhpcy5vcmlnaW5hbEV2ZW50KSByZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdIH0sIHNldDogZnVuY3Rpb24gKGUpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHQsIHsgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAsIHdyaXRhYmxlOiAhMCwgdmFsdWU6IGUgfSkgfSB9KSB9LCBmaXg6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlW1MuZXhwYW5kb10gPyBlIDogbmV3IFMuRXZlbnQoZSkgfSwgc3BlY2lhbDogeyBsb2FkOiB7IG5vQnViYmxlOiAhMCB9LCBjbGljazogeyBzZXR1cDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB0aGlzIHx8IGU7IHJldHVybiBwZS50ZXN0KHQudHlwZSkgJiYgdC5jbGljayAmJiBBKHQsICJpbnB1dCIpICYmIFNlKHQsICJjbGljayIsIHdlKSwgITEgfSwgdHJpZ2dlcjogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB0aGlzIHx8IGU7IHJldHVybiBwZS50ZXN0KHQudHlwZSkgJiYgdC5jbGljayAmJiBBKHQsICJpbnB1dCIpICYmIFNlKHQsICJjbGljayIpLCAhMCB9LCBfZGVmYXVsdDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnRhcmdldDsgcmV0dXJuIHBlLnRlc3QodC50eXBlKSAmJiB0LmNsaWNrICYmIEEodCwgImlucHV0IikgJiYgWS5nZXQodCwgImNsaWNrIikgfHwgQSh0LCAiYSIpIH0gfSwgYmVmb3JldW5sb2FkOiB7IHBvc3REaXNwYXRjaDogZnVuY3Rpb24gKGUpIHsgdm9pZCAwICE9PSBlLnJlc3VsdCAmJiBlLm9yaWdpbmFsRXZlbnQgJiYgKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGUucmVzdWx0KSB9IH0gfSB9LCBTLnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgZS5yZW1vdmVFdmVudExpc3RlbmVyICYmIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCBuKSB9LCBTLkV2ZW50ID0gZnVuY3Rpb24gKGUsIHQpIHsgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFMuRXZlbnQpKSByZXR1cm4gbmV3IFMuRXZlbnQoZSwgdCk7IGUgJiYgZS50eXBlID8gKHRoaXMub3JpZ2luYWxFdmVudCA9IGUsIHRoaXMudHlwZSA9IGUudHlwZSwgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQgfHwgdm9pZCAwID09PSBlLmRlZmF1bHRQcmV2ZW50ZWQgJiYgITEgPT09IGUucmV0dXJuVmFsdWUgPyB3ZSA6IFRlLCB0aGlzLnRhcmdldCA9IGUudGFyZ2V0ICYmIDMgPT09IGUudGFyZ2V0Lm5vZGVUeXBlID8gZS50YXJnZXQucGFyZW50Tm9kZSA6IGUudGFyZ2V0LCB0aGlzLmN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQsIHRoaXMucmVsYXRlZFRhcmdldCA9IGUucmVsYXRlZFRhcmdldCkgOiB0aGlzLnR5cGUgPSBlLCB0ICYmIFMuZXh0ZW5kKHRoaXMsIHQpLCB0aGlzLnRpbWVTdGFtcCA9IGUgJiYgZS50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKSwgdGhpc1tTLmV4cGFuZG9dID0gITAgfSwgUy5FdmVudC5wcm90b3R5cGUgPSB7IGNvbnN0cnVjdG9yOiBTLkV2ZW50LCBpc0RlZmF1bHRQcmV2ZW50ZWQ6IFRlLCBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogVGUsIGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiBUZSwgaXNTaW11bGF0ZWQ6ICExLCBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDsgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSB3ZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnByZXZlbnREZWZhdWx0KCkgfSwgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50OyB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gd2UsIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgJiYgZS5zdG9wUHJvcGFnYXRpb24oKSB9LCBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7IHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSB3ZSwgZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCAmJiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCB0aGlzLnN0b3BQcm9wYWdhdGlvbigpIH0gfSwgUy5lYWNoKHsgYWx0S2V5OiAhMCwgYnViYmxlczogITAsIGNhbmNlbGFibGU6ICEwLCBjaGFuZ2VkVG91Y2hlczogITAsIGN0cmxLZXk6ICEwLCBkZXRhaWw6ICEwLCBldmVudFBoYXNlOiAhMCwgbWV0YUtleTogITAsIHBhZ2VYOiAhMCwgcGFnZVk6ICEwLCBzaGlmdEtleTogITAsIHZpZXc6ICEwLCAiY2hhciI6ICEwLCBjb2RlOiAhMCwgY2hhckNvZGU6ICEwLCBrZXk6ICEwLCBrZXlDb2RlOiAhMCwgYnV0dG9uOiAhMCwgYnV0dG9uczogITAsIGNsaWVudFg6ICEwLCBjbGllbnRZOiAhMCwgb2Zmc2V0WDogITAsIG9mZnNldFk6ICEwLCBwb2ludGVySWQ6ICEwLCBwb2ludGVyVHlwZTogITAsIHNjcmVlblg6ICEwLCBzY3JlZW5ZOiAhMCwgdGFyZ2V0VG91Y2hlczogITAsIHRvRWxlbWVudDogITAsIHRvdWNoZXM6ICEwLCB3aGljaDogITAgfSwgUy5ldmVudC5hZGRQcm9wKSwgUy5lYWNoKHsgZm9jdXM6ICJmb2N1c2luIiwgYmx1cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiAoZSwgdCkgeyBTLmV2ZW50LnNwZWNpYWxbZV0gPSB7IHNldHVwOiBmdW5jdGlvbiAoKSB7IHJldHVybiBTZSh0aGlzLCBlLCBDZSksICExIH0sIHRyaWdnZXI6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFNlKHRoaXMsIGUpLCAhMCB9LCBfZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gITAgfSwgZGVsZWdhdGVUeXBlOiB0IH0gfSksIFMuZWFjaCh7IG1vdXNlZW50ZXI6ICJtb3VzZW92ZXIiLCBtb3VzZWxlYXZlOiAibW91c2VvdXQiLCBwb2ludGVyZW50ZXI6ICJwb2ludGVyb3ZlciIsIHBvaW50ZXJsZWF2ZTogInBvaW50ZXJvdXQiIH0sIGZ1bmN0aW9uIChlLCBpKSB7IFMuZXZlbnQuc3BlY2lhbFtlXSA9IHsgZGVsZWdhdGVUeXBlOiBpLCBiaW5kVHlwZTogaSwgaGFuZGxlOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiA9IGUucmVsYXRlZFRhcmdldCwgciA9IGUuaGFuZGxlT2JqOyByZXR1cm4gbiAmJiAobiA9PT0gdGhpcyB8fCBTLmNvbnRhaW5zKHRoaXMsIG4pKSB8fCAoZS50eXBlID0gci5vcmlnVHlwZSwgdCA9IHIuaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBlLnR5cGUgPSBpKSwgdCB9IH0gfSksIFMuZm4uZXh0ZW5kKHsgb246IGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IHJldHVybiBFZSh0aGlzLCBlLCB0LCBuLCByKSB9LCBvbmU6IGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IHJldHVybiBFZSh0aGlzLCBlLCB0LCBuLCByLCAxKSB9LCBvZmY6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpOyBpZiAoZSAmJiBlLnByZXZlbnREZWZhdWx0ICYmIGUuaGFuZGxlT2JqKSByZXR1cm4gciA9IGUuaGFuZGxlT2JqLCBTKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZSA/IHIub3JpZ1R5cGUgKyAiLiIgKyByLm5hbWVzcGFjZSA6IHIub3JpZ1R5cGUsIHIuc2VsZWN0b3IsIHIuaGFuZGxlciksIHRoaXM7IGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkgeyBmb3IgKGkgaW4gZSkgdGhpcy5vZmYoaSwgdCwgZVtpXSk7IHJldHVybiB0aGlzIH0gcmV0dXJuICExICE9PSB0ICYmICJmdW5jdGlvbiIgIT0gdHlwZW9mIHQgfHwgKG4gPSB0LCB0ID0gdm9pZCAwKSwgITEgPT09IG4gJiYgKG4gPSBUZSksIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IFMuZXZlbnQucmVtb3ZlKHRoaXMsIGUsIG4sIHQpIH0pIH0gfSk7IHZhciBrZSA9IC88c2NyaXB0fDxzdHlsZXw8bGluay9pLCBBZSA9IC9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLCBOZSA9IC9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZzsgZnVuY3Rpb24gamUoZSwgdCkgeyByZXR1cm4gQShlLCAidGFibGUiKSAmJiBBKDExICE9PSB0Lm5vZGVUeXBlID8gdCA6IHQuZmlyc3RDaGlsZCwgInRyIikgJiYgUyhlKS5jaGlsZHJlbigidGJvZHkiKVswXSB8fCBlIH0gZnVuY3Rpb24gRGUoZSkgeyByZXR1cm4gZS50eXBlID0gKG51bGwgIT09IGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpICsgIi8iICsgZS50eXBlLCBlIH0gZnVuY3Rpb24gcWUoZSkgeyByZXR1cm4gInRydWUvIiA9PT0gKGUudHlwZSB8fCAiIikuc2xpY2UoMCwgNSkgPyBlLnR5cGUgPSBlLnR5cGUuc2xpY2UoNSkgOiBlLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLCBlIH0gZnVuY3Rpb24gTGUoZSwgdCkgeyB2YXIgbiwgciwgaSwgbywgYSwgczsgaWYgKDEgPT09IHQubm9kZVR5cGUpIHsgaWYgKFkuaGFzRGF0YShlKSAmJiAocyA9IFkuZ2V0KGUpLmV2ZW50cykpIGZvciAoaSBpbiBZLnJlbW92ZSh0LCAiaGFuZGxlIGV2ZW50cyIpLCBzKSBmb3IgKG4gPSAwLCByID0gc1tpXS5sZW5ndGg7IG4gPCByOyBuKyspUy5ldmVudC5hZGQodCwgaSwgc1tpXVtuXSk7IFEuaGFzRGF0YShlKSAmJiAobyA9IFEuYWNjZXNzKGUpLCBhID0gUy5leHRlbmQoe30sIG8pLCBRLnNldCh0LCBhKSkgfSB9IGZ1bmN0aW9uIEhlKG4sIHIsIGksIG8pIHsgciA9IGcocik7IHZhciBlLCB0LCBhLCBzLCB1LCBsLCBjID0gMCwgZiA9IG4ubGVuZ3RoLCBwID0gZiAtIDEsIGQgPSByWzBdLCBoID0gbShkKTsgaWYgKGggfHwgMSA8IGYgJiYgInN0cmluZyIgPT0gdHlwZW9mIGQgJiYgIXkuY2hlY2tDbG9uZSAmJiBBZS50ZXN0KGQpKSByZXR1cm4gbi5lYWNoKGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gbi5lcShlKTsgaCAmJiAoclswXSA9IGQuY2FsbCh0aGlzLCBlLCB0Lmh0bWwoKSkpLCBIZSh0LCByLCBpLCBvKSB9KTsgaWYgKGYgJiYgKHQgPSAoZSA9IHhlKHIsIG5bMF0ub3duZXJEb2N1bWVudCwgITEsIG4sIG8pKS5maXJzdENoaWxkLCAxID09PSBlLmNoaWxkTm9kZXMubGVuZ3RoICYmIChlID0gdCksIHQgfHwgbykpIHsgZm9yIChzID0gKGEgPSBTLm1hcCh2ZShlLCAic2NyaXB0IiksIERlKSkubGVuZ3RoOyBjIDwgZjsgYysrKXUgPSBlLCBjICE9PSBwICYmICh1ID0gUy5jbG9uZSh1LCAhMCwgITApLCBzICYmIFMubWVyZ2UoYSwgdmUodSwgInNjcmlwdCIpKSksIGkuY2FsbChuW2NdLCB1LCBjKTsgaWYgKHMpIGZvciAobCA9IGFbYS5sZW5ndGggLSAxXS5vd25lckRvY3VtZW50LCBTLm1hcChhLCBxZSksIGMgPSAwOyBjIDwgczsgYysrKXUgPSBhW2NdLCBoZS50ZXN0KHUudHlwZSB8fCAiIikgJiYgIVkuYWNjZXNzKHUsICJnbG9iYWxFdmFsIikgJiYgUy5jb250YWlucyhsLCB1KSAmJiAodS5zcmMgJiYgIm1vZHVsZSIgIT09ICh1LnR5cGUgfHwgIiIpLnRvTG93ZXJDYXNlKCkgPyBTLl9ldmFsVXJsICYmICF1Lm5vTW9kdWxlICYmIFMuX2V2YWxVcmwodS5zcmMsIHsgbm9uY2U6IHUubm9uY2UgfHwgdS5nZXRBdHRyaWJ1dGUoIm5vbmNlIikgfSwgbCkgOiBiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwgIiIpLCB1LCBsKSkgfSByZXR1cm4gbiB9IGZ1bmN0aW9uIE9lKGUsIHQsIG4pIHsgZm9yICh2YXIgciwgaSA9IHQgPyBTLmZpbHRlcih0LCBlKSA6IGUsIG8gPSAwOyBudWxsICE9IChyID0gaVtvXSk7IG8rKyluIHx8IDEgIT09IHIubm9kZVR5cGUgfHwgUy5jbGVhbkRhdGEodmUocikpLCByLnBhcmVudE5vZGUgJiYgKG4gJiYgaWUocikgJiYgeWUodmUociwgInNjcmlwdCIpKSwgci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTsgcmV0dXJuIGUgfSBTLmV4dGVuZCh7IGh0bWxQcmVmaWx0ZXI6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlIH0sIGNsb25lOiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgcywgdSwgbCwgYyA9IGUuY2xvbmVOb2RlKCEwKSwgZiA9IGllKGUpOyBpZiAoISh5Lm5vQ2xvbmVDaGVja2VkIHx8IDEgIT09IGUubm9kZVR5cGUgJiYgMTEgIT09IGUubm9kZVR5cGUgfHwgUy5pc1hNTERvYyhlKSkpIGZvciAoYSA9IHZlKGMpLCByID0gMCwgaSA9IChvID0gdmUoZSkpLmxlbmd0aDsgciA8IGk7IHIrKylzID0gb1tyXSwgdSA9IGFbcl0sIHZvaWQgMCwgImlucHV0IiA9PT0gKGwgPSB1Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICYmIHBlLnRlc3Qocy50eXBlKSA/IHUuY2hlY2tlZCA9IHMuY2hlY2tlZCA6ICJpbnB1dCIgIT09IGwgJiYgInRleHRhcmVhIiAhPT0gbCB8fCAodS5kZWZhdWx0VmFsdWUgPSBzLmRlZmF1bHRWYWx1ZSk7IGlmICh0KSBpZiAobikgZm9yIChvID0gbyB8fCB2ZShlKSwgYSA9IGEgfHwgdmUoYyksIHIgPSAwLCBpID0gby5sZW5ndGg7IHIgPCBpOyByKyspTGUob1tyXSwgYVtyXSk7IGVsc2UgTGUoZSwgYyk7IHJldHVybiAwIDwgKGEgPSB2ZShjLCAic2NyaXB0IikpLmxlbmd0aCAmJiB5ZShhLCAhZiAmJiB2ZShlLCAic2NyaXB0IikpLCBjIH0sIGNsZWFuRGF0YTogZnVuY3Rpb24gKGUpIHsgZm9yICh2YXIgdCwgbiwgciwgaSA9IFMuZXZlbnQuc3BlY2lhbCwgbyA9IDA7IHZvaWQgMCAhPT0gKG4gPSBlW29dKTsgbysrKWlmIChWKG4pKSB7IGlmICh0ID0gbltZLmV4cGFuZG9dKSB7IGlmICh0LmV2ZW50cykgZm9yIChyIGluIHQuZXZlbnRzKSBpW3JdID8gUy5ldmVudC5yZW1vdmUobiwgcikgOiBTLnJlbW92ZUV2ZW50KG4sIHIsIHQuaGFuZGxlKTsgbltZLmV4cGFuZG9dID0gdm9pZCAwIH0gbltRLmV4cGFuZG9dICYmIChuW1EuZXhwYW5kb10gPSB2b2lkIDApIH0gfSB9KSwgUy5mbi5leHRlbmQoeyBkZXRhY2g6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBPZSh0aGlzLCBlLCAhMCkgfSwgcmVtb3ZlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gT2UodGhpcywgZSkgfSwgdGV4dDogZnVuY3Rpb24gKGUpIHsgcmV0dXJuICQodGhpcywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IFMudGV4dCh0aGlzKSA6IHRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uICgpIHsgMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiAxMSAhPT0gdGhpcy5ub2RlVHlwZSAmJiA5ICE9PSB0aGlzLm5vZGVUeXBlIHx8ICh0aGlzLnRleHRDb250ZW50ID0gZSkgfSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgYXBwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBIZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IDEgIT09IHRoaXMubm9kZVR5cGUgJiYgMTEgIT09IHRoaXMubm9kZVR5cGUgJiYgOSAhPT0gdGhpcy5ub2RlVHlwZSB8fCBqZSh0aGlzLCBlKS5hcHBlbmRDaGlsZChlKSB9KSB9LCBwcmVwZW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBIZSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIChlKSB7IGlmICgxID09PSB0aGlzLm5vZGVUeXBlIHx8IDExID09PSB0aGlzLm5vZGVUeXBlIHx8IDkgPT09IHRoaXMubm9kZVR5cGUpIHsgdmFyIHQgPSBqZSh0aGlzLCBlKTsgdC5pbnNlcnRCZWZvcmUoZSwgdC5maXJzdENoaWxkKSB9IH0pIH0sIGJlZm9yZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gSGUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzKSB9KSB9LCBhZnRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gSGUodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiAoZSkgeyB0aGlzLnBhcmVudE5vZGUgJiYgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLCB0aGlzLm5leHRTaWJsaW5nKSB9KSB9LCBlbXB0eTogZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlLCB0ID0gMDsgbnVsbCAhPSAoZSA9IHRoaXNbdF0pOyB0KyspMSA9PT0gZS5ub2RlVHlwZSAmJiAoUy5jbGVhbkRhdGEodmUoZSwgITEpKSwgZS50ZXh0Q29udGVudCA9ICIiKTsgcmV0dXJuIHRoaXMgfSwgY2xvbmU6IGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiBlID0gbnVsbCAhPSBlICYmIGUsIHQgPSBudWxsID09IHQgPyBlIDogdCwgdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gUy5jbG9uZSh0aGlzLCBlLCB0KSB9KSB9LCBodG1sOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gJCh0aGlzLCBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IHRoaXNbMF0gfHwge30sIG4gPSAwLCByID0gdGhpcy5sZW5ndGg7IGlmICh2b2lkIDAgPT09IGUgJiYgMSA9PT0gdC5ub2RlVHlwZSkgcmV0dXJuIHQuaW5uZXJIVE1MOyBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgIWtlLnRlc3QoZSkgJiYgIWdlWyhkZS5leGVjKGUpIHx8IFsiIiwgIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkgeyBlID0gUy5odG1sUHJlZmlsdGVyKGUpOyB0cnkgeyBmb3IgKDsgbiA8IHI7IG4rKykxID09PSAodCA9IHRoaXNbbl0gfHwge30pLm5vZGVUeXBlICYmIChTLmNsZWFuRGF0YSh2ZSh0LCAhMSkpLCB0LmlubmVySFRNTCA9IGUpOyB0ID0gMCB9IGNhdGNoIChlKSB7IH0gfSB0ICYmIHRoaXMuZW1wdHkoKS5hcHBlbmQoZSkgfSwgbnVsbCwgZSwgYXJndW1lbnRzLmxlbmd0aCkgfSwgcmVwbGFjZVdpdGg6IGZ1bmN0aW9uICgpIHsgdmFyIG4gPSBbXTsgcmV0dXJuIEhlKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSB0aGlzLnBhcmVudE5vZGU7IFMuaW5BcnJheSh0aGlzLCBuKSA8IDAgJiYgKFMuY2xlYW5EYXRhKHZlKHRoaXMpKSwgdCAmJiB0LnJlcGxhY2VDaGlsZChlLCB0aGlzKSkgfSwgbikgfSB9KSwgUy5lYWNoKHsgYXBwZW5kVG86ICJhcHBlbmQiLCBwcmVwZW5kVG86ICJwcmVwZW5kIiwgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwgaW5zZXJ0QWZ0ZXI6ICJhZnRlciIsIHJlcGxhY2VBbGw6ICJyZXBsYWNlV2l0aCIgfSwgZnVuY3Rpb24gKGUsIGEpIHsgUy5mbltlXSA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIHQsIG4gPSBbXSwgciA9IFMoZSksIGkgPSByLmxlbmd0aCAtIDEsIG8gPSAwOyBvIDw9IGk7IG8rKyl0ID0gbyA9PT0gaSA/IHRoaXMgOiB0aGlzLmNsb25lKCEwKSwgUyhyW29dKVthXSh0KSwgdS5hcHBseShuLCB0LmdldCgpKTsgcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pIH0gfSk7IHZhciBQZSA9IG5ldyBSZWdFeHAoIl4oIiArIGVlICsgIikoPyFweClbYS16JV0rJCIsICJpIiksIFJlID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7IHJldHVybiB0ICYmIHQub3BlbmVyIHx8ICh0ID0gQyksIHQuZ2V0Q29tcHV0ZWRTdHlsZShlKSB9LCBNZSA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpLCBvID0ge307IGZvciAoaSBpbiB0KSBvW2ldID0gZS5zdHlsZVtpXSwgZS5zdHlsZVtpXSA9IHRbaV07IGZvciAoaSBpbiByID0gbi5jYWxsKGUpLCB0KSBlLnN0eWxlW2ldID0gb1tpXTsgcmV0dXJuIHIgfSwgSWUgPSBuZXcgUmVnRXhwKG5lLmpvaW4oInwiKSwgImkiKTsgZnVuY3Rpb24gV2UoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSwgcyA9IGUuc3R5bGU7IHJldHVybiAobiA9IG4gfHwgUmUoZSkpICYmICgiIiAhPT0gKGEgPSBuLmdldFByb3BlcnR5VmFsdWUodCkgfHwgblt0XSkgfHwgaWUoZSkgfHwgKGEgPSBTLnN0eWxlKGUsIHQpKSwgIXkucGl4ZWxCb3hTdHlsZXMoKSAmJiBQZS50ZXN0KGEpICYmIEllLnRlc3QodCkgJiYgKHIgPSBzLndpZHRoLCBpID0gcy5taW5XaWR0aCwgbyA9IHMubWF4V2lkdGgsIHMubWluV2lkdGggPSBzLm1heFdpZHRoID0gcy53aWR0aCA9IGEsIGEgPSBuLndpZHRoLCBzLndpZHRoID0gciwgcy5taW5XaWR0aCA9IGksIHMubWF4V2lkdGggPSBvKSksIHZvaWQgMCAhPT0gYSA/IGEgKyAiIiA6IGEgfSBmdW5jdGlvbiBGZShlLCB0KSB7IHJldHVybiB7IGdldDogZnVuY3Rpb24gKCkgeyBpZiAoIWUoKSkgcmV0dXJuICh0aGlzLmdldCA9IHQpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IGRlbGV0ZSB0aGlzLmdldCB9IH0gfSAhZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBlKCkgeyBpZiAobCkgeyB1LnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsIGwuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIiwgcmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7IHZhciBlID0gQy5nZXRDb21wdXRlZFN0eWxlKGwpOyBuID0gIjElIiAhPT0gZS50b3AsIHMgPSAxMiA9PT0gdChlLm1hcmdpbkxlZnQpLCBsLnN0eWxlLnJpZ2h0ID0gIjYwJSIsIG8gPSAzNiA9PT0gdChlLnJpZ2h0KSwgciA9IDM2ID09PSB0KGUud2lkdGgpLCBsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIiwgaSA9IDEyID09PSB0KGwub2Zmc2V0V2lkdGggLyAzKSwgcmUucmVtb3ZlQ2hpbGQodSksIGwgPSBudWxsIH0gfSBmdW5jdGlvbiB0KGUpIHsgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSkgfSB2YXIgbiwgciwgaSwgbywgYSwgcywgdSA9IEUuY3JlYXRlRWxlbWVudCgiZGl2IiksIGwgPSBFLmNyZWF0ZUVsZW1lbnQoImRpdiIpOyBsLnN0eWxlICYmIChsLnN0eWxlLmJhY2tncm91bmRDbGlwID0gImNvbnRlbnQtYm94IiwgbC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gIiIsIHkuY2xlYXJDbG9uZVN0eWxlID0gImNvbnRlbnQtYm94IiA9PT0gbC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCwgUy5leHRlbmQoeSwgeyBib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gZSgpLCByIH0sIHBpeGVsQm94U3R5bGVzOiBmdW5jdGlvbiAoKSB7IHJldHVybiBlKCksIG8gfSwgcGl4ZWxQb3NpdGlvbjogZnVuY3Rpb24gKCkgeyByZXR1cm4gZSgpLCBuIH0sIHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZSgpLCBzIH0sIHNjcm9sbGJveFNpemU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGUoKSwgaSB9LCByZWxpYWJsZVRyRGltZW5zaW9uczogZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgcjsgcmV0dXJuIG51bGwgPT0gYSAmJiAoZSA9IEUuY3JlYXRlRWxlbWVudCgidGFibGUiKSwgdCA9IEUuY3JlYXRlRWxlbWVudCgidHIiKSwgbiA9IEUuY3JlYXRlRWxlbWVudCgiZGl2IiksIGUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsIHQuc3R5bGUuY3NzVGV4dCA9ICJib3JkZXI6MXB4IHNvbGlkIiwgdC5zdHlsZS5oZWlnaHQgPSAiMXB4Iiwgbi5zdHlsZS5oZWlnaHQgPSAiOXB4Iiwgbi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIiwgcmUuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQobiksIHIgPSBDLmdldENvbXB1dGVkU3R5bGUodCksIGEgPSBwYXJzZUludChyLmhlaWdodCwgMTApICsgcGFyc2VJbnQoci5ib3JkZXJUb3BXaWR0aCwgMTApICsgcGFyc2VJbnQoci5ib3JkZXJCb3R0b21XaWR0aCwgMTApID09PSB0Lm9mZnNldEhlaWdodCwgcmUucmVtb3ZlQ2hpbGQoZSkpLCBhIH0gfSkpIH0oKTsgdmFyIEJlID0gWyJXZWJraXQiLCAiTW96IiwgIm1zIl0sICRlID0gRS5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwgX2UgPSB7fTsgZnVuY3Rpb24gemUoZSkgeyB2YXIgdCA9IFMuY3NzUHJvcHNbZV0gfHwgX2VbZV07IHJldHVybiB0IHx8IChlIGluICRlID8gZSA6IF9lW2VdID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlWzBdLnRvVXBwZXJDYXNlKCkgKyBlLnNsaWNlKDEpLCBuID0gQmUubGVuZ3RoOyB3aGlsZSAobi0tKSBpZiAoKGUgPSBCZVtuXSArIHQpIGluICRlKSByZXR1cm4gZSB9KGUpIHx8IGUpIH0gdmFyIFVlID0gL14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLCBYZSA9IC9eLS0vLCBWZSA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiYmxvY2siIH0sIEdlID0geyBsZXR0ZXJTcGFjaW5nOiAiMCIsIGZvbnRXZWlnaHQ6ICI0MDAiIH07IGZ1bmN0aW9uIFllKGUsIHQsIG4pIHsgdmFyIHIgPSB0ZS5leGVjKHQpOyByZXR1cm4gciA/IE1hdGgubWF4KDAsIHJbMl0gLSAobiB8fCAwKSkgKyAoclszXSB8fCAicHgiKSA6IHQgfSBmdW5jdGlvbiBRZShlLCB0LCBuLCByLCBpLCBvKSB7IHZhciBhID0gIndpZHRoIiA9PT0gdCA/IDEgOiAwLCBzID0gMCwgdSA9IDA7IGlmIChuID09PSAociA/ICJib3JkZXIiIDogImNvbnRlbnQiKSkgcmV0dXJuIDA7IGZvciAoOyBhIDwgNDsgYSArPSAyKSJtYXJnaW4iID09PSBuICYmICh1ICs9IFMuY3NzKGUsIG4gKyBuZVthXSwgITAsIGkpKSwgciA/ICgiY29udGVudCIgPT09IG4gJiYgKHUgLT0gUy5jc3MoZSwgInBhZGRpbmciICsgbmVbYV0sICEwLCBpKSksICJtYXJnaW4iICE9PSBuICYmICh1IC09IFMuY3NzKGUsICJib3JkZXIiICsgbmVbYV0gKyAiV2lkdGgiLCAhMCwgaSkpKSA6ICh1ICs9IFMuY3NzKGUsICJwYWRkaW5nIiArIG5lW2FdLCAhMCwgaSksICJwYWRkaW5nIiAhPT0gbiA/IHUgKz0gUy5jc3MoZSwgImJvcmRlciIgKyBuZVthXSArICJXaWR0aCIsICEwLCBpKSA6IHMgKz0gUy5jc3MoZSwgImJvcmRlciIgKyBuZVthXSArICJXaWR0aCIsICEwLCBpKSk7IHJldHVybiAhciAmJiAwIDw9IG8gJiYgKHUgKz0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGVbIm9mZnNldCIgKyB0WzBdLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpXSAtIG8gLSB1IC0gcyAtIC41KSkgfHwgMCksIHUgfSBmdW5jdGlvbiBKZShlLCB0LCBuKSB7IHZhciByID0gUmUoZSksIGkgPSAoIXkuYm94U2l6aW5nUmVsaWFibGUoKSB8fCBuKSAmJiAiYm9yZGVyLWJveCIgPT09IFMuY3NzKGUsICJib3hTaXppbmciLCAhMSwgciksIG8gPSBpLCBhID0gV2UoZSwgdCwgciksIHMgPSAib2Zmc2V0IiArIHRbMF0udG9VcHBlckNhc2UoKSArIHQuc2xpY2UoMSk7IGlmIChQZS50ZXN0KGEpKSB7IGlmICghbikgcmV0dXJuIGE7IGEgPSAiYXV0byIgfSByZXR1cm4gKCF5LmJveFNpemluZ1JlbGlhYmxlKCkgJiYgaSB8fCAheS5yZWxpYWJsZVRyRGltZW5zaW9ucygpICYmIEEoZSwgInRyIikgfHwgImF1dG8iID09PSBhIHx8ICFwYXJzZUZsb2F0KGEpICYmICJpbmxpbmUiID09PSBTLmNzcyhlLCAiZGlzcGxheSIsICExLCByKSkgJiYgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCAmJiAoaSA9ICJib3JkZXItYm94IiA9PT0gUy5jc3MoZSwgImJveFNpemluZyIsICExLCByKSwgKG8gPSBzIGluIGUpICYmIChhID0gZVtzXSkpLCAoYSA9IHBhcnNlRmxvYXQoYSkgfHwgMCkgKyBRZShlLCB0LCBuIHx8IChpID8gImJvcmRlciIgOiAiY29udGVudCIpLCBvLCByLCBhKSArICJweCIgfSBmdW5jdGlvbiBLZShlLCB0LCBuLCByLCBpKSB7IHJldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSwgdCwgbiwgciwgaSkgfSBTLmV4dGVuZCh7IGNzc0hvb2tzOiB7IG9wYWNpdHk6IHsgZ2V0OiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodCkgeyB2YXIgbiA9IFdlKGUsICJvcGFjaXR5Iik7IHJldHVybiAiIiA9PT0gbiA/ICIxIiA6IG4gfSB9IH0gfSwgY3NzTnVtYmVyOiB7IGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAhMCwgY29sdW1uQ291bnQ6ICEwLCBmaWxsT3BhY2l0eTogITAsIGZsZXhHcm93OiAhMCwgZmxleFNocmluazogITAsIGZvbnRXZWlnaHQ6ICEwLCBncmlkQXJlYTogITAsIGdyaWRDb2x1bW46ICEwLCBncmlkQ29sdW1uRW5kOiAhMCwgZ3JpZENvbHVtblN0YXJ0OiAhMCwgZ3JpZFJvdzogITAsIGdyaWRSb3dFbmQ6ICEwLCBncmlkUm93U3RhcnQ6ICEwLCBsaW5lSGVpZ2h0OiAhMCwgb3BhY2l0eTogITAsIG9yZGVyOiAhMCwgb3JwaGFuczogITAsIHdpZG93czogITAsIHpJbmRleDogITAsIHpvb206ICEwIH0sIGNzc1Byb3BzOiB7fSwgc3R5bGU6IGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IGlmIChlICYmIDMgIT09IGUubm9kZVR5cGUgJiYgOCAhPT0gZS5ub2RlVHlwZSAmJiBlLnN0eWxlKSB7IHZhciBpLCBvLCBhLCBzID0gWCh0KSwgdSA9IFhlLnRlc3QodCksIGwgPSBlLnN0eWxlOyBpZiAodSB8fCAodCA9IHplKHMpKSwgYSA9IFMuY3NzSG9va3NbdF0gfHwgUy5jc3NIb29rc1tzXSwgdm9pZCAwID09PSBuKSByZXR1cm4gYSAmJiAiZ2V0IiBpbiBhICYmIHZvaWQgMCAhPT0gKGkgPSBhLmdldChlLCAhMSwgcikpID8gaSA6IGxbdF07ICJzdHJpbmciID09PSAobyA9IHR5cGVvZiBuKSAmJiAoaSA9IHRlLmV4ZWMobikpICYmIGlbMV0gJiYgKG4gPSBzZShlLCB0LCBpKSwgbyA9ICJudW1iZXIiKSwgbnVsbCAhPSBuICYmIG4gPT0gbiAmJiAoIm51bWJlciIgIT09IG8gfHwgdSB8fCAobiArPSBpICYmIGlbM10gfHwgKFMuY3NzTnVtYmVyW3NdID8gIiIgOiAicHgiKSksIHkuY2xlYXJDbG9uZVN0eWxlIHx8ICIiICE9PSBuIHx8IDAgIT09IHQuaW5kZXhPZigiYmFja2dyb3VuZCIpIHx8IChsW3RdID0gImluaGVyaXQiKSwgYSAmJiAic2V0IiBpbiBhICYmIHZvaWQgMCA9PT0gKG4gPSBhLnNldChlLCBuLCByKSkgfHwgKHUgPyBsLnNldFByb3BlcnR5KHQsIG4pIDogbFt0XSA9IG4pKSB9IH0sIGNzczogZnVuY3Rpb24gKGUsIHQsIG4sIHIpIHsgdmFyIGksIG8sIGEsIHMgPSBYKHQpOyByZXR1cm4gWGUudGVzdCh0KSB8fCAodCA9IHplKHMpKSwgKGEgPSBTLmNzc0hvb2tzW3RdIHx8IFMuY3NzSG9va3Nbc10pICYmICJnZXQiIGluIGEgJiYgKGkgPSBhLmdldChlLCAhMCwgbikpLCB2b2lkIDAgPT09IGkgJiYgKGkgPSBXZShlLCB0LCByKSksICJub3JtYWwiID09PSBpICYmIHQgaW4gR2UgJiYgKGkgPSBHZVt0XSksICIiID09PSBuIHx8IG4gPyAobyA9IHBhcnNlRmxvYXQoaSksICEwID09PSBuIHx8IGlzRmluaXRlKG8pID8gbyB8fCAwIDogaSkgOiBpIH0gfSksIFMuZWFjaChbImhlaWdodCIsICJ3aWR0aCJdLCBmdW5jdGlvbiAoZSwgdSkgeyBTLmNzc0hvb2tzW3VdID0geyBnZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICh0KSByZXR1cm4gIVVlLnRlc3QoUy5jc3MoZSwgImRpc3BsYXkiKSkgfHwgZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCAmJiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID8gSmUoZSwgdSwgbikgOiBNZShlLCBWZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gSmUoZSwgdSwgbikgfSkgfSwgc2V0OiBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSA9IFJlKGUpLCBvID0gIXkuc2Nyb2xsYm94U2l6ZSgpICYmICJhYnNvbHV0ZSIgPT09IGkucG9zaXRpb24sIGEgPSAobyB8fCBuKSAmJiAiYm9yZGVyLWJveCIgPT09IFMuY3NzKGUsICJib3hTaXppbmciLCAhMSwgaSksIHMgPSBuID8gUWUoZSwgdSwgbiwgYSwgaSkgOiAwOyByZXR1cm4gYSAmJiBvICYmIChzIC09IE1hdGguY2VpbChlWyJvZmZzZXQiICsgdVswXS50b1VwcGVyQ2FzZSgpICsgdS5zbGljZSgxKV0gLSBwYXJzZUZsb2F0KGlbdV0pIC0gUWUoZSwgdSwgImJvcmRlciIsICExLCBpKSAtIC41KSksIHMgJiYgKHIgPSB0ZS5leGVjKHQpKSAmJiAicHgiICE9PSAoclszXSB8fCAicHgiKSAmJiAoZS5zdHlsZVt1XSA9IHQsIHQgPSBTLmNzcyhlLCB1KSksIFllKDAsIHQsIHMpIH0gfSB9KSwgUy5jc3NIb29rcy5tYXJnaW5MZWZ0ID0gRmUoeS5yZWxpYWJsZU1hcmdpbkxlZnQsIGZ1bmN0aW9uIChlLCB0KSB7IGlmICh0KSByZXR1cm4gKHBhcnNlRmxvYXQoV2UoZSwgIm1hcmdpbkxlZnQiKSkgfHwgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gTWUoZSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCB9KSkgKyAicHgiIH0pLCBTLmVhY2goeyBtYXJnaW46ICIiLCBwYWRkaW5nOiAiIiwgYm9yZGVyOiAiV2lkdGgiIH0sIGZ1bmN0aW9uIChpLCBvKSB7IFMuY3NzSG9va3NbaSArIG9dID0geyBleHBhbmQ6IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIHQgPSAwLCBuID0ge30sIHIgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUuc3BsaXQoIiAiKSA6IFtlXTsgdCA8IDQ7IHQrKyluW2kgKyBuZVt0XSArIG9dID0gclt0XSB8fCByW3QgLSAyXSB8fCByWzBdOyByZXR1cm4gbiB9IH0sICJtYXJnaW4iICE9PSBpICYmIChTLmNzc0hvb2tzW2kgKyBvXS5zZXQgPSBZZSkgfSksIFMuZm4uZXh0ZW5kKHsgY3NzOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gJCh0aGlzLCBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbyA9IHt9LCBhID0gMDsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHsgZm9yIChyID0gUmUoZSksIGkgPSB0Lmxlbmd0aDsgYSA8IGk7IGErKylvW3RbYV1dID0gUy5jc3MoZSwgdFthXSwgITEsIHIpOyByZXR1cm4gbyB9IHJldHVybiB2b2lkIDAgIT09IG4gPyBTLnN0eWxlKGUsIHQsIG4pIDogUy5jc3MoZSwgdCkgfSwgZSwgdCwgMSA8IGFyZ3VtZW50cy5sZW5ndGgpIH0gfSksICgoUy5Ud2VlbiA9IEtlKS5wcm90b3R5cGUgPSB7IGNvbnN0cnVjdG9yOiBLZSwgaW5pdDogZnVuY3Rpb24gKGUsIHQsIG4sIHIsIGksIG8pIHsgdGhpcy5lbGVtID0gZSwgdGhpcy5wcm9wID0gbiwgdGhpcy5lYXNpbmcgPSBpIHx8IFMuZWFzaW5nLl9kZWZhdWx0LCB0aGlzLm9wdGlvbnMgPSB0LCB0aGlzLnN0YXJ0ID0gdGhpcy5ub3cgPSB0aGlzLmN1cigpLCB0aGlzLmVuZCA9IHIsIHRoaXMudW5pdCA9IG8gfHwgKFMuY3NzTnVtYmVyW25dID8gIiIgOiAicHgiKSB9LCBjdXI6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBLZS5wcm9wSG9va3NbdGhpcy5wcm9wXTsgcmV0dXJuIGUgJiYgZS5nZXQgPyBlLmdldCh0aGlzKSA6IEtlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcykgfSwgcnVuOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiA9IEtlLnByb3BIb29rc1t0aGlzLnByb3BdOyByZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uID8gdGhpcy5wb3MgPSB0ID0gUy5lYXNpbmdbdGhpcy5lYXNpbmddKGUsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIGUsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvbikgOiB0aGlzLnBvcyA9IHQgPSBlLCB0aGlzLm5vdyA9ICh0aGlzLmVuZCAtIHRoaXMuc3RhcnQpICogdCArIHRoaXMuc3RhcnQsIHRoaXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyksIG4gJiYgbi5zZXQgPyBuLnNldCh0aGlzKSA6IEtlLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksIHRoaXMgfSB9KS5pbml0LnByb3RvdHlwZSA9IEtlLnByb3RvdHlwZSwgKEtlLnByb3BIb29rcyA9IHsgX2RlZmF1bHQ6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdDsgcmV0dXJuIDEgIT09IGUuZWxlbS5ub2RlVHlwZSB8fCBudWxsICE9IGUuZWxlbVtlLnByb3BdICYmIG51bGwgPT0gZS5lbGVtLnN0eWxlW2UucHJvcF0gPyBlLmVsZW1bZS5wcm9wXSA6ICh0ID0gUy5jc3MoZS5lbGVtLCBlLnByb3AsICIiKSkgJiYgImF1dG8iICE9PSB0ID8gdCA6IDAgfSwgc2V0OiBmdW5jdGlvbiAoZSkgeyBTLmZ4LnN0ZXBbZS5wcm9wXSA/IFMuZnguc3RlcFtlLnByb3BdKGUpIDogMSAhPT0gZS5lbGVtLm5vZGVUeXBlIHx8ICFTLmNzc0hvb2tzW2UucHJvcF0gJiYgbnVsbCA9PSBlLmVsZW0uc3R5bGVbemUoZS5wcm9wKV0gPyBlLmVsZW1bZS5wcm9wXSA9IGUubm93IDogUy5zdHlsZShlLmVsZW0sIGUucHJvcCwgZS5ub3cgKyBlLnVuaXQpIH0gfSB9KS5zY3JvbGxUb3AgPSBLZS5wcm9wSG9va3Muc2Nyb2xsTGVmdCA9IHsgc2V0OiBmdW5jdGlvbiAoZSkgeyBlLmVsZW0ubm9kZVR5cGUgJiYgZS5lbGVtLnBhcmVudE5vZGUgJiYgKGUuZWxlbVtlLnByb3BdID0gZS5ub3cpIH0gfSwgUy5lYXNpbmcgPSB7IGxpbmVhcjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgfSwgc3dpbmc6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAuNSAtIE1hdGguY29zKGUgKiBNYXRoLlBJKSAvIDIgfSwgX2RlZmF1bHQ6ICJzd2luZyIgfSwgUy5meCA9IEtlLnByb3RvdHlwZS5pbml0LCBTLmZ4LnN0ZXAgPSB7fTsgdmFyIFplLCBldCwgdHQsIG50LCBydCA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLywgaXQgPSAvcXVldWVIb29rcyQvOyBmdW5jdGlvbiBvdCgpIHsgZXQgJiYgKCExID09PSBFLmhpZGRlbiAmJiBDLnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IEMucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG90KSA6IEMuc2V0VGltZW91dChvdCwgUy5meC5pbnRlcnZhbCksIFMuZngudGljaygpKSB9IGZ1bmN0aW9uIGF0KCkgeyByZXR1cm4gQy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgWmUgPSB2b2lkIDAgfSksIFplID0gRGF0ZS5ub3coKSB9IGZ1bmN0aW9uIHN0KGUsIHQpIHsgdmFyIG4sIHIgPSAwLCBpID0geyBoZWlnaHQ6IGUgfTsgZm9yICh0ID0gdCA/IDEgOiAwOyByIDwgNDsgciArPSAyIC0gdClpWyJtYXJnaW4iICsgKG4gPSBuZVtyXSldID0gaVsicGFkZGluZyIgKyBuXSA9IGU7IHJldHVybiB0ICYmIChpLm9wYWNpdHkgPSBpLndpZHRoID0gZSksIGkgfSBmdW5jdGlvbiB1dChlLCB0LCBuKSB7IGZvciAodmFyIHIsIGkgPSAobHQudHdlZW5lcnNbdF0gfHwgW10pLmNvbmNhdChsdC50d2VlbmVyc1siKiJdKSwgbyA9IDAsIGEgPSBpLmxlbmd0aDsgbyA8IGE7IG8rKylpZiAociA9IGlbb10uY2FsbChuLCB0LCBlKSkgcmV0dXJuIHIgfSBmdW5jdGlvbiBsdChvLCBlLCB0KSB7IHZhciBuLCBhLCByID0gMCwgaSA9IGx0LnByZWZpbHRlcnMubGVuZ3RoLCBzID0gUy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbiAoKSB7IGRlbGV0ZSB1LmVsZW0gfSksIHUgPSBmdW5jdGlvbiAoKSB7IGlmIChhKSByZXR1cm4gITE7IGZvciAodmFyIGUgPSBaZSB8fCBhdCgpLCB0ID0gTWF0aC5tYXgoMCwgbC5zdGFydFRpbWUgKyBsLmR1cmF0aW9uIC0gZSksIG4gPSAxIC0gKHQgLyBsLmR1cmF0aW9uIHx8IDApLCByID0gMCwgaSA9IGwudHdlZW5zLmxlbmd0aDsgciA8IGk7IHIrKylsLnR3ZWVuc1tyXS5ydW4obik7IHJldHVybiBzLm5vdGlmeVdpdGgobywgW2wsIG4sIHRdKSwgbiA8IDEgJiYgaSA/IHQgOiAoaSB8fCBzLm5vdGlmeVdpdGgobywgW2wsIDEsIDBdKSwgcy5yZXNvbHZlV2l0aChvLCBbbF0pLCAhMSkgfSwgbCA9IHMucHJvbWlzZSh7IGVsZW06IG8sIHByb3BzOiBTLmV4dGVuZCh7fSwgZSksIG9wdHM6IFMuZXh0ZW5kKCEwLCB7IHNwZWNpYWxFYXNpbmc6IHt9LCBlYXNpbmc6IFMuZWFzaW5nLl9kZWZhdWx0IH0sIHQpLCBvcmlnaW5hbFByb3BlcnRpZXM6IGUsIG9yaWdpbmFsT3B0aW9uczogdCwgc3RhcnRUaW1lOiBaZSB8fCBhdCgpLCBkdXJhdGlvbjogdC5kdXJhdGlvbiwgdHdlZW5zOiBbXSwgY3JlYXRlVHdlZW46IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gUy5Ud2VlbihvLCBsLm9wdHMsIGUsIHQsIGwub3B0cy5zcGVjaWFsRWFzaW5nW2VdIHx8IGwub3B0cy5lYXNpbmcpOyByZXR1cm4gbC50d2VlbnMucHVzaChuKSwgbiB9LCBzdG9wOiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IDAsIG4gPSBlID8gbC50d2VlbnMubGVuZ3RoIDogMDsgaWYgKGEpIHJldHVybiB0aGlzOyBmb3IgKGEgPSAhMDsgdCA8IG47IHQrKylsLnR3ZWVuc1t0XS5ydW4oMSk7IHJldHVybiBlID8gKHMubm90aWZ5V2l0aChvLCBbbCwgMSwgMF0pLCBzLnJlc29sdmVXaXRoKG8sIFtsLCBlXSkpIDogcy5yZWplY3RXaXRoKG8sIFtsLCBlXSksIHRoaXMgfSB9KSwgYyA9IGwucHJvcHM7IGZvciAoIWZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByLCBpLCBvLCBhOyBmb3IgKG4gaW4gZSkgaWYgKGkgPSB0W3IgPSBYKG4pXSwgbyA9IGVbbl0sIEFycmF5LmlzQXJyYXkobykgJiYgKGkgPSBvWzFdLCBvID0gZVtuXSA9IG9bMF0pLCBuICE9PSByICYmIChlW3JdID0gbywgZGVsZXRlIGVbbl0pLCAoYSA9IFMuY3NzSG9va3Nbcl0pICYmICJleHBhbmQiIGluIGEpIGZvciAobiBpbiBvID0gYS5leHBhbmQobyksIGRlbGV0ZSBlW3JdLCBvKSBuIGluIGUgfHwgKGVbbl0gPSBvW25dLCB0W25dID0gaSk7IGVsc2UgdFtyXSA9IGkgfShjLCBsLm9wdHMuc3BlY2lhbEVhc2luZyk7IHIgPCBpOyByKyspaWYgKG4gPSBsdC5wcmVmaWx0ZXJzW3JdLmNhbGwobCwgbywgYywgbC5vcHRzKSkgcmV0dXJuIG0obi5zdG9wKSAmJiAoUy5fcXVldWVIb29rcyhsLmVsZW0sIGwub3B0cy5xdWV1ZSkuc3RvcCA9IG4uc3RvcC5iaW5kKG4pKSwgbjsgcmV0dXJuIFMubWFwKGMsIHV0LCBsKSwgbShsLm9wdHMuc3RhcnQpICYmIGwub3B0cy5zdGFydC5jYWxsKG8sIGwpLCBsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSwgbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksIFMuZngudGltZXIoUy5leHRlbmQodSwgeyBlbGVtOiBvLCBhbmltOiBsLCBxdWV1ZTogbC5vcHRzLnF1ZXVlIH0pKSwgbCB9IFMuQW5pbWF0aW9uID0gUy5leHRlbmQobHQsIHsgdHdlZW5lcnM6IHsgIioiOiBbZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0aGlzLmNyZWF0ZVR3ZWVuKGUsIHQpOyByZXR1cm4gc2Uobi5lbGVtLCBlLCB0ZS5leGVjKHQpLCBuKSwgbiB9XSB9LCB0d2VlbmVyOiBmdW5jdGlvbiAoZSwgdCkgeyBtKGUpID8gKHQgPSBlLCBlID0gWyIqIl0pIDogZSA9IGUubWF0Y2goUCk7IGZvciAodmFyIG4sIHIgPSAwLCBpID0gZS5sZW5ndGg7IHIgPCBpOyByKyspbiA9IGVbcl0sIGx0LnR3ZWVuZXJzW25dID0gbHQudHdlZW5lcnNbbl0gfHwgW10sIGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCkgfSwgcHJlZmlsdGVyczogW2Z1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpLCBvLCBhLCBzLCB1LCBsLCBjLCBmID0gIndpZHRoIiBpbiB0IHx8ICJoZWlnaHQiIGluIHQsIHAgPSB0aGlzLCBkID0ge30sIGggPSBlLnN0eWxlLCBnID0gZS5ub2RlVHlwZSAmJiBhZShlKSwgdiA9IFkuZ2V0KGUsICJmeHNob3ciKTsgZm9yIChyIGluIG4ucXVldWUgfHwgKG51bGwgPT0gKGEgPSBTLl9xdWV1ZUhvb2tzKGUsICJmeCIpKS51bnF1ZXVlZCAmJiAoYS51bnF1ZXVlZCA9IDAsIHMgPSBhLmVtcHR5LmZpcmUsIGEuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uICgpIHsgYS51bnF1ZXVlZCB8fCBzKCkgfSksIGEudW5xdWV1ZWQrKywgcC5hbHdheXMoZnVuY3Rpb24gKCkgeyBwLmFsd2F5cyhmdW5jdGlvbiAoKSB7IGEudW5xdWV1ZWQtLSwgUy5xdWV1ZShlLCAiZngiKS5sZW5ndGggfHwgYS5lbXB0eS5maXJlKCkgfSkgfSkpLCB0KSBpZiAoaSA9IHRbcl0sIHJ0LnRlc3QoaSkpIHsgaWYgKGRlbGV0ZSB0W3JdLCBvID0gbyB8fCAidG9nZ2xlIiA9PT0gaSwgaSA9PT0gKGcgPyAiaGlkZSIgOiAic2hvdyIpKSB7IGlmICgic2hvdyIgIT09IGkgfHwgIXYgfHwgdm9pZCAwID09PSB2W3JdKSBjb250aW51ZTsgZyA9ICEwIH0gZFtyXSA9IHYgJiYgdltyXSB8fCBTLnN0eWxlKGUsIHIpIH0gaWYgKCh1ID0gIVMuaXNFbXB0eU9iamVjdCh0KSkgfHwgIVMuaXNFbXB0eU9iamVjdChkKSkgZm9yIChyIGluIGYgJiYgMSA9PT0gZS5ub2RlVHlwZSAmJiAobi5vdmVyZmxvdyA9IFtoLm92ZXJmbG93LCBoLm92ZXJmbG93WCwgaC5vdmVyZmxvd1ldLCBudWxsID09IChsID0gdiAmJiB2LmRpc3BsYXkpICYmIChsID0gWS5nZXQoZSwgImRpc3BsYXkiKSksICJub25lIiA9PT0gKGMgPSBTLmNzcyhlLCAiZGlzcGxheSIpKSAmJiAobCA/IGMgPSBsIDogKGxlKFtlXSwgITApLCBsID0gZS5zdHlsZS5kaXNwbGF5IHx8IGwsIGMgPSBTLmNzcyhlLCAiZGlzcGxheSIpLCBsZShbZV0pKSksICgiaW5saW5lIiA9PT0gYyB8fCAiaW5saW5lLWJsb2NrIiA9PT0gYyAmJiBudWxsICE9IGwpICYmICJub25lIiA9PT0gUy5jc3MoZSwgImZsb2F0IikgJiYgKHUgfHwgKHAuZG9uZShmdW5jdGlvbiAoKSB7IGguZGlzcGxheSA9IGwgfSksIG51bGwgPT0gbCAmJiAoYyA9IGguZGlzcGxheSwgbCA9ICJub25lIiA9PT0gYyA/ICIiIDogYykpLCBoLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIikpLCBuLm92ZXJmbG93ICYmIChoLm92ZXJmbG93ID0gImhpZGRlbiIsIHAuYWx3YXlzKGZ1bmN0aW9uICgpIHsgaC5vdmVyZmxvdyA9IG4ub3ZlcmZsb3dbMF0sIGgub3ZlcmZsb3dYID0gbi5vdmVyZmxvd1sxXSwgaC5vdmVyZmxvd1kgPSBuLm92ZXJmbG93WzJdIH0pKSwgdSA9ICExLCBkKSB1IHx8ICh2ID8gImhpZGRlbiIgaW4gdiAmJiAoZyA9IHYuaGlkZGVuKSA6IHYgPSBZLmFjY2VzcyhlLCAiZnhzaG93IiwgeyBkaXNwbGF5OiBsIH0pLCBvICYmICh2LmhpZGRlbiA9ICFnKSwgZyAmJiBsZShbZV0sICEwKSwgcC5kb25lKGZ1bmN0aW9uICgpIHsgZm9yIChyIGluIGcgfHwgbGUoW2VdKSwgWS5yZW1vdmUoZSwgImZ4c2hvdyIpLCBkKSBTLnN0eWxlKGUsIHIsIGRbcl0pIH0pKSwgdSA9IHV0KGcgPyB2W3JdIDogMCwgciwgcCksIHIgaW4gdiB8fCAodltyXSA9IHUuc3RhcnQsIGcgJiYgKHUuZW5kID0gdS5zdGFydCwgdS5zdGFydCA9IDApKSB9XSwgcHJlZmlsdGVyOiBmdW5jdGlvbiAoZSwgdCkgeyB0ID8gbHQucHJlZmlsdGVycy51bnNoaWZ0KGUpIDogbHQucHJlZmlsdGVycy5wdXNoKGUpIH0gfSksIFMuc3BlZWQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciA9IGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIGUgPyBTLmV4dGVuZCh7fSwgZSkgOiB7IGNvbXBsZXRlOiBuIHx8ICFuICYmIHQgfHwgbShlKSAmJiBlLCBkdXJhdGlvbjogZSwgZWFzaW5nOiBuICYmIHQgfHwgdCAmJiAhbSh0KSAmJiB0IH07IHJldHVybiBTLmZ4Lm9mZiA/IHIuZHVyYXRpb24gPSAwIDogIm51bWJlciIgIT0gdHlwZW9mIHIuZHVyYXRpb24gJiYgKHIuZHVyYXRpb24gaW4gUy5meC5zcGVlZHMgPyByLmR1cmF0aW9uID0gUy5meC5zcGVlZHNbci5kdXJhdGlvbl0gOiByLmR1cmF0aW9uID0gUy5meC5zcGVlZHMuX2RlZmF1bHQpLCBudWxsICE9IHIucXVldWUgJiYgITAgIT09IHIucXVldWUgfHwgKHIucXVldWUgPSAiZngiKSwgci5vbGQgPSByLmNvbXBsZXRlLCByLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkgeyBtKHIub2xkKSAmJiByLm9sZC5jYWxsKHRoaXMpLCByLnF1ZXVlICYmIFMuZGVxdWV1ZSh0aGlzLCByLnF1ZXVlKSB9LCByIH0sIFMuZm4uZXh0ZW5kKHsgZmFkZVRvOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyByZXR1cm4gdGhpcy5maWx0ZXIoYWUpLmNzcygib3BhY2l0eSIsIDApLnNob3coKS5lbmQoKS5hbmltYXRlKHsgb3BhY2l0eTogdCB9LCBlLCBuLCByKSB9LCBhbmltYXRlOiBmdW5jdGlvbiAodCwgZSwgbiwgcikgeyB2YXIgaSA9IFMuaXNFbXB0eU9iamVjdCh0KSwgbyA9IFMuc3BlZWQoZSwgbiwgciksIGEgPSBmdW5jdGlvbiAoKSB7IHZhciBlID0gbHQodGhpcywgUy5leHRlbmQoe30sIHQpLCBvKTsgKGkgfHwgWS5nZXQodGhpcywgImZpbmlzaCIpKSAmJiBlLnN0b3AoITApIH07IHJldHVybiBhLmZpbmlzaCA9IGEsIGkgfHwgITEgPT09IG8ucXVldWUgPyB0aGlzLmVhY2goYSkgOiB0aGlzLnF1ZXVlKG8ucXVldWUsIGEpIH0sIHN0b3A6IGZ1bmN0aW9uIChpLCBlLCBvKSB7IHZhciBhID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnN0b3A7IGRlbGV0ZSBlLnN0b3AsIHQobykgfTsgcmV0dXJuICJzdHJpbmciICE9IHR5cGVvZiBpICYmIChvID0gZSwgZSA9IGksIGkgPSB2b2lkIDApLCBlICYmIHRoaXMucXVldWUoaSB8fCAiZngiLCBbXSksIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciBlID0gITAsIHQgPSBudWxsICE9IGkgJiYgaSArICJxdWV1ZUhvb2tzIiwgbiA9IFMudGltZXJzLCByID0gWS5nZXQodGhpcyk7IGlmICh0KSByW3RdICYmIHJbdF0uc3RvcCAmJiBhKHJbdF0pOyBlbHNlIGZvciAodCBpbiByKSByW3RdICYmIHJbdF0uc3RvcCAmJiBpdC50ZXN0KHQpICYmIGEoclt0XSk7IGZvciAodCA9IG4ubGVuZ3RoOyB0LS07KW5bdF0uZWxlbSAhPT0gdGhpcyB8fCBudWxsICE9IGkgJiYgblt0XS5xdWV1ZSAhPT0gaSB8fCAoblt0XS5hbmltLnN0b3AobyksIGUgPSAhMSwgbi5zcGxpY2UodCwgMSkpOyAhZSAmJiBvIHx8IFMuZGVxdWV1ZSh0aGlzLCBpKSB9KSB9LCBmaW5pc2g6IGZ1bmN0aW9uIChhKSB7IHJldHVybiAhMSAhPT0gYSAmJiAoYSA9IGEgfHwgImZ4IiksIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7IHZhciBlLCB0ID0gWS5nZXQodGhpcyksIG4gPSB0W2EgKyAicXVldWUiXSwgciA9IHRbYSArICJxdWV1ZUhvb2tzIl0sIGkgPSBTLnRpbWVycywgbyA9IG4gPyBuLmxlbmd0aCA6IDA7IGZvciAodC5maW5pc2ggPSAhMCwgUy5xdWV1ZSh0aGlzLCBhLCBbXSksIHIgJiYgci5zdG9wICYmIHIuc3RvcC5jYWxsKHRoaXMsICEwKSwgZSA9IGkubGVuZ3RoOyBlLS07KWlbZV0uZWxlbSA9PT0gdGhpcyAmJiBpW2VdLnF1ZXVlID09PSBhICYmIChpW2VdLmFuaW0uc3RvcCghMCksIGkuc3BsaWNlKGUsIDEpKTsgZm9yIChlID0gMDsgZSA8IG87IGUrKyluW2VdICYmIG5bZV0uZmluaXNoICYmIG5bZV0uZmluaXNoLmNhbGwodGhpcyk7IGRlbGV0ZSB0LmZpbmlzaCB9KSB9IH0pLCBTLmVhY2goWyJ0b2dnbGUiLCAic2hvdyIsICJoaWRlIl0sIGZ1bmN0aW9uIChlLCByKSB7IHZhciBpID0gUy5mbltyXTsgUy5mbltyXSA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiBudWxsID09IGUgfHwgImJvb2xlYW4iID09IHR5cGVvZiBlID8gaS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdGhpcy5hbmltYXRlKHN0KHIsICEwKSwgZSwgdCwgbikgfSB9KSwgUy5lYWNoKHsgc2xpZGVEb3duOiBzdCgic2hvdyIpLCBzbGlkZVVwOiBzdCgiaGlkZSIpLCBzbGlkZVRvZ2dsZTogc3QoInRvZ2dsZSIpLCBmYWRlSW46IHsgb3BhY2l0eTogInNob3ciIH0sIGZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sIGZhZGVUb2dnbGU6IHsgb3BhY2l0eTogInRvZ2dsZSIgfSB9LCBmdW5jdGlvbiAoZSwgcikgeyBTLmZuW2VdID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIHRoaXMuYW5pbWF0ZShyLCBlLCB0LCBuKSB9IH0pLCBTLnRpbWVycyA9IFtdLCBTLmZ4LnRpY2sgPSBmdW5jdGlvbiAoKSB7IHZhciBlLCB0ID0gMCwgbiA9IFMudGltZXJzOyBmb3IgKFplID0gRGF0ZS5ub3coKTsgdCA8IG4ubGVuZ3RoOyB0KyspKGUgPSBuW3RdKSgpIHx8IG5bdF0gIT09IGUgfHwgbi5zcGxpY2UodC0tLCAxKTsgbi5sZW5ndGggfHwgUy5meC5zdG9wKCksIFplID0gdm9pZCAwIH0sIFMuZngudGltZXIgPSBmdW5jdGlvbiAoZSkgeyBTLnRpbWVycy5wdXNoKGUpLCBTLmZ4LnN0YXJ0KCkgfSwgUy5meC5pbnRlcnZhbCA9IDEzLCBTLmZ4LnN0YXJ0ID0gZnVuY3Rpb24gKCkgeyBldCB8fCAoZXQgPSAhMCwgb3QoKSkgfSwgUy5meC5zdG9wID0gZnVuY3Rpb24gKCkgeyBldCA9IG51bGwgfSwgUy5meC5zcGVlZHMgPSB7IHNsb3c6IDYwMCwgZmFzdDogMjAwLCBfZGVmYXVsdDogNDAwIH0sIFMuZm4uZGVsYXkgPSBmdW5jdGlvbiAociwgZSkgeyByZXR1cm4gciA9IFMuZnggJiYgUy5meC5zcGVlZHNbcl0gfHwgciwgZSA9IGUgfHwgImZ4IiwgdGhpcy5xdWV1ZShlLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IEMuc2V0VGltZW91dChlLCByKTsgdC5zdG9wID0gZnVuY3Rpb24gKCkgeyBDLmNsZWFyVGltZW91dChuKSB9IH0pIH0sIHR0ID0gRS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLCBudCA9IEUuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksIHR0LnR5cGUgPSAiY2hlY2tib3giLCB5LmNoZWNrT24gPSAiIiAhPT0gdHQudmFsdWUsIHkub3B0U2VsZWN0ZWQgPSBudC5zZWxlY3RlZCwgKHR0ID0gRS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZSA9ICJ0IiwgdHQudHlwZSA9ICJyYWRpbyIsIHkucmFkaW9WYWx1ZSA9ICJ0IiA9PT0gdHQudmFsdWU7IHZhciBjdCwgZnQgPSBTLmV4cHIuYXR0ckhhbmRsZTsgUy5mbi5leHRlbmQoeyBhdHRyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gJCh0aGlzLCBTLmF0dHIsIGUsIHQsIDEgPCBhcmd1bWVudHMubGVuZ3RoKSB9LCByZW1vdmVBdHRyOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgUy5yZW1vdmVBdHRyKHRoaXMsIGUpIH0pIH0gfSksIFMuZXh0ZW5kKHsgYXR0cjogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAidW5kZWZpbmVkIiA9PSB0eXBlb2YgZS5nZXRBdHRyaWJ1dGUgPyBTLnByb3AoZSwgdCwgbikgOiAoMSA9PT0gbyAmJiBTLmlzWE1MRG9jKGUpIHx8IChpID0gUy5hdHRySG9va3NbdC50b0xvd2VyQ2FzZSgpXSB8fCAoUy5leHByLm1hdGNoLmJvb2wudGVzdCh0KSA/IGN0IDogdm9pZCAwKSksIHZvaWQgMCAhPT0gbiA/IG51bGwgPT09IG4gPyB2b2lkIFMucmVtb3ZlQXR0cihlLCB0KSA6IGkgJiYgInNldCIgaW4gaSAmJiB2b2lkIDAgIT09IChyID0gaS5zZXQoZSwgbiwgdCkpID8gciA6IChlLnNldEF0dHJpYnV0ZSh0LCBuICsgIiIpLCBuKSA6IGkgJiYgImdldCIgaW4gaSAmJiBudWxsICE9PSAociA9IGkuZ2V0KGUsIHQpKSA/IHIgOiBudWxsID09IChyID0gUy5maW5kLmF0dHIoZSwgdCkpID8gdm9pZCAwIDogcikgfSwgYXR0ckhvb2tzOiB7IHR5cGU6IHsgc2V0OiBmdW5jdGlvbiAoZSwgdCkgeyBpZiAoIXkucmFkaW9WYWx1ZSAmJiAicmFkaW8iID09PSB0ICYmIEEoZSwgImlucHV0IikpIHsgdmFyIG4gPSBlLnZhbHVlOyByZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLCB0KSwgbiAmJiAoZS52YWx1ZSA9IG4pLCB0IH0gfSB9IH0sIHJlbW92ZUF0dHI6IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByID0gMCwgaSA9IHQgJiYgdC5tYXRjaChQKTsgaWYgKGkgJiYgMSA9PT0gZS5ub2RlVHlwZSkgd2hpbGUgKG4gPSBpW3IrK10pIGUucmVtb3ZlQXR0cmlidXRlKG4pIH0gfSksIGN0ID0geyBzZXQ6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiAhMSA9PT0gdCA/IFMucmVtb3ZlQXR0cihlLCBuKSA6IGUuc2V0QXR0cmlidXRlKG4sIG4pLCBuIH0gfSwgUy5lYWNoKFMuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLCBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgYSA9IGZ0W3RdIHx8IFMuZmluZC5hdHRyOyBmdFt0XSA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByLCBpLCBvID0gdC50b0xvd2VyQ2FzZSgpOyByZXR1cm4gbiB8fCAoaSA9IGZ0W29dLCBmdFtvXSA9IHIsIHIgPSBudWxsICE9IGEoZSwgdCwgbikgPyBvIDogbnVsbCwgZnRbb10gPSBpKSwgciB9IH0pOyB2YXIgcHQgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLCBkdCA9IC9eKD86YXxhcmVhKSQvaTsgZnVuY3Rpb24gaHQoZSkgeyByZXR1cm4gKGUubWF0Y2goUCkgfHwgW10pLmpvaW4oIiAiKSB9IGZ1bmN0aW9uIGd0KGUpIHsgcmV0dXJuIGUuZ2V0QXR0cmlidXRlICYmIGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpIHx8ICIiIH0gZnVuY3Rpb24gdnQoZSkgeyByZXR1cm4gQXJyYXkuaXNBcnJheShlKSA/IGUgOiAic3RyaW5nIiA9PSB0eXBlb2YgZSAmJiBlLm1hdGNoKFApIHx8IFtdIH0gUy5mbi5leHRlbmQoeyBwcm9wOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gJCh0aGlzLCBTLnByb3AsIGUsIHQsIDEgPCBhcmd1bWVudHMubGVuZ3RoKSB9LCByZW1vdmVQcm9wOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdIHx8IGVdIH0pIH0gfSksIFMuZXh0ZW5kKHsgcHJvcDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8gPSBlLm5vZGVUeXBlOyBpZiAoMyAhPT0gbyAmJiA4ICE9PSBvICYmIDIgIT09IG8pIHJldHVybiAxID09PSBvICYmIFMuaXNYTUxEb2MoZSkgfHwgKHQgPSBTLnByb3BGaXhbdF0gfHwgdCwgaSA9IFMucHJvcEhvb2tzW3RdKSwgdm9pZCAwICE9PSBuID8gaSAmJiAic2V0IiBpbiBpICYmIHZvaWQgMCAhPT0gKHIgPSBpLnNldChlLCBuLCB0KSkgPyByIDogZVt0XSA9IG4gOiBpICYmICJnZXQiIGluIGkgJiYgbnVsbCAhPT0gKHIgPSBpLmdldChlLCB0KSkgPyByIDogZVt0XSB9LCBwcm9wSG9va3M6IHsgdGFiSW5kZXg6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFMuZmluZC5hdHRyKGUsICJ0YWJpbmRleCIpOyByZXR1cm4gdCA/IHBhcnNlSW50KHQsIDEwKSA6IHB0LnRlc3QoZS5ub2RlTmFtZSkgfHwgZHQudGVzdChlLm5vZGVOYW1lKSAmJiBlLmhyZWYgPyAwIDogLTEgfSB9IH0sIHByb3BGaXg6IHsgImZvciI6ICJodG1sRm9yIiwgImNsYXNzIjogImNsYXNzTmFtZSIgfSB9KSwgeS5vcHRTZWxlY3RlZCB8fCAoUy5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7IGdldDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlLnBhcmVudE5vZGU7IHJldHVybiB0ICYmIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwgbnVsbCB9LCBzZXQ6IGZ1bmN0aW9uIChlKSB7IHZhciB0ID0gZS5wYXJlbnROb2RlOyB0ICYmICh0LnNlbGVjdGVkSW5kZXgsIHQucGFyZW50Tm9kZSAmJiB0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCkgfSB9KSwgUy5lYWNoKFsidGFiSW5kZXgiLCAicmVhZE9ubHkiLCAibWF4TGVuZ3RoIiwgImNlbGxTcGFjaW5nIiwgImNlbGxQYWRkaW5nIiwgInJvd1NwYW4iLCAiY29sU3BhbiIsICJ1c2VNYXAiLCAiZnJhbWVCb3JkZXIiLCAiY29udGVudEVkaXRhYmxlIl0sIGZ1bmN0aW9uICgpIHsgUy5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV0gPSB0aGlzIH0pLCBTLmZuLmV4dGVuZCh7IGFkZENsYXNzOiBmdW5jdGlvbiAodCkgeyB2YXIgZSwgbiwgciwgaSwgbywgYSwgcywgdSA9IDA7IGlmIChtKHQpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7IFModGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsIGUsIGd0KHRoaXMpKSkgfSk7IGlmICgoZSA9IHZ0KHQpKS5sZW5ndGgpIHdoaWxlIChuID0gdGhpc1t1KytdKSBpZiAoaSA9IGd0KG4pLCByID0gMSA9PT0gbi5ub2RlVHlwZSAmJiAiICIgKyBodChpKSArICIgIikgeyBhID0gMDsgd2hpbGUgKG8gPSBlW2ErK10pIHIuaW5kZXhPZigiICIgKyBvICsgIiAiKSA8IDAgJiYgKHIgKz0gbyArICIgIik7IGkgIT09IChzID0gaHQocikpICYmIG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsIHMpIH0gcmV0dXJuIHRoaXMgfSwgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uICh0KSB7IHZhciBlLCBuLCByLCBpLCBvLCBhLCBzLCB1ID0gMDsgaWYgKG0odCkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKGUpIHsgUyh0aGlzKS5yZW1vdmVDbGFzcyh0LmNhbGwodGhpcywgZSwgZ3QodGhpcykpKSB9KTsgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsICIiKTsgaWYgKChlID0gdnQodCkpLmxlbmd0aCkgd2hpbGUgKG4gPSB0aGlzW3UrK10pIGlmIChpID0gZ3QobiksIHIgPSAxID09PSBuLm5vZGVUeXBlICYmICIgIiArIGh0KGkpICsgIiAiKSB7IGEgPSAwOyB3aGlsZSAobyA9IGVbYSsrXSkgd2hpbGUgKC0xIDwgci5pbmRleE9mKCIgIiArIG8gKyAiICIpKSByID0gci5yZXBsYWNlKCIgIiArIG8gKyAiICIsICIgIik7IGkgIT09IChzID0gaHQocikpICYmIG4uc2V0QXR0cmlidXRlKCJjbGFzcyIsIHMpIH0gcmV0dXJuIHRoaXMgfSwgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIChpLCB0KSB7IHZhciBvID0gdHlwZW9mIGksIGEgPSAic3RyaW5nIiA9PT0gbyB8fCBBcnJheS5pc0FycmF5KGkpOyByZXR1cm4gImJvb2xlYW4iID09IHR5cGVvZiB0ICYmIGEgPyB0ID8gdGhpcy5hZGRDbGFzcyhpKSA6IHRoaXMucmVtb3ZlQ2xhc3MoaSkgOiBtKGkpID8gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7IFModGhpcykudG9nZ2xlQ2xhc3MoaS5jYWxsKHRoaXMsIGUsIGd0KHRoaXMpLCB0KSwgdCkgfSkgOiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbiwgcjsgaWYgKGEpIHsgdCA9IDAsIG4gPSBTKHRoaXMpLCByID0gdnQoaSk7IHdoaWxlIChlID0gclt0KytdKSBuLmhhc0NsYXNzKGUpID8gbi5yZW1vdmVDbGFzcyhlKSA6IG4uYWRkQ2xhc3MoZSkgfSBlbHNlIHZvaWQgMCAhPT0gaSAmJiAiYm9vbGVhbiIgIT09IG8gfHwgKChlID0gZ3QodGhpcykpICYmIFkuc2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgZSksIHRoaXMuc2V0QXR0cmlidXRlICYmIHRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGUgfHwgITEgPT09IGkgPyAiIiA6IFkuZ2V0KHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIpKSB9KSB9LCBoYXNDbGFzczogZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG4sIHIgPSAwOyB0ID0gIiAiICsgZSArICIgIjsgd2hpbGUgKG4gPSB0aGlzW3IrK10pIGlmICgxID09PSBuLm5vZGVUeXBlICYmIC0xIDwgKCIgIiArIGh0KGd0KG4pKSArICIgIikuaW5kZXhPZih0KSkgcmV0dXJuICEwOyByZXR1cm4gITEgfSB9KTsgdmFyIHl0ID0gL1xyL2c7IFMuZm4uZXh0ZW5kKHsgdmFsOiBmdW5jdGlvbiAobikgeyB2YXIgciwgZSwgaSwgdCA9IHRoaXNbMF07IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGkgPSBtKG4pLCB0aGlzLmVhY2goZnVuY3Rpb24gKGUpIHsgdmFyIHQ7IDEgPT09IHRoaXMubm9kZVR5cGUgJiYgKG51bGwgPT0gKHQgPSBpID8gbi5jYWxsKHRoaXMsIGUsIFModGhpcykudmFsKCkpIDogbikgPyB0ID0gIiIgOiAibnVtYmVyIiA9PSB0eXBlb2YgdCA/IHQgKz0gIiIgOiBBcnJheS5pc0FycmF5KHQpICYmICh0ID0gUy5tYXAodCwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZSA/ICIiIDogZSArICIiIH0pKSwgKHIgPSBTLnZhbEhvb2tzW3RoaXMudHlwZV0gfHwgUy52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSAmJiAic2V0IiBpbiByICYmIHZvaWQgMCAhPT0gci5zZXQodGhpcywgdCwgInZhbHVlIikgfHwgKHRoaXMudmFsdWUgPSB0KSkgfSkpIDogdCA/IChyID0gUy52YWxIb29rc1t0LnR5cGVdIHx8IFMudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkgJiYgImdldCIgaW4gciAmJiB2b2lkIDAgIT09IChlID0gci5nZXQodCwgInZhbHVlIikpID8gZSA6ICJzdHJpbmciID09IHR5cGVvZiAoZSA9IHQudmFsdWUpID8gZS5yZXBsYWNlKHl0LCAiIikgOiBudWxsID09IGUgPyAiIiA6IGUgOiB2b2lkIDAgfSB9KSwgUy5leHRlbmQoeyB2YWxIb29rczogeyBvcHRpb246IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCA9IFMuZmluZC5hdHRyKGUsICJ2YWx1ZSIpOyByZXR1cm4gbnVsbCAhPSB0ID8gdCA6IGh0KFMudGV4dChlKSkgfSB9LCBzZWxlY3Q6IHsgZ2V0OiBmdW5jdGlvbiAoZSkgeyB2YXIgdCwgbiwgciwgaSA9IGUub3B0aW9ucywgbyA9IGUuc2VsZWN0ZWRJbmRleCwgYSA9ICJzZWxlY3Qtb25lIiA9PT0gZS50eXBlLCBzID0gYSA/IG51bGwgOiBbXSwgdSA9IGEgPyBvICsgMSA6IGkubGVuZ3RoOyBmb3IgKHIgPSBvIDwgMCA/IHUgOiBhID8gbyA6IDA7IHIgPCB1OyByKyspaWYgKCgobiA9IGlbcl0pLnNlbGVjdGVkIHx8IHIgPT09IG8pICYmICFuLmRpc2FibGVkICYmICghbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8ICFBKG4ucGFyZW50Tm9kZSwgIm9wdGdyb3VwIikpKSB7IGlmICh0ID0gUyhuKS52YWwoKSwgYSkgcmV0dXJuIHQ7IHMucHVzaCh0KSB9IHJldHVybiBzIH0sIHNldDogZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIsIGkgPSBlLm9wdGlvbnMsIG8gPSBTLm1ha2VBcnJheSh0KSwgYSA9IGkubGVuZ3RoOyB3aGlsZSAoYS0tKSAoKHIgPSBpW2FdKS5zZWxlY3RlZCA9IC0xIDwgUy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSwgbykpICYmIChuID0gITApOyByZXR1cm4gbiB8fCAoZS5zZWxlY3RlZEluZGV4ID0gLTEpLCBvIH0gfSB9IH0pLCBTLmVhY2goWyJyYWRpbyIsICJjaGVja2JveCJdLCBmdW5jdGlvbiAoKSB7IFMudmFsSG9va3NbdGhpc10gPSB7IHNldDogZnVuY3Rpb24gKGUsIHQpIHsgaWYgKEFycmF5LmlzQXJyYXkodCkpIHJldHVybiBlLmNoZWNrZWQgPSAtMSA8IFMuaW5BcnJheShTKGUpLnZhbCgpLCB0KSB9IH0sIHkuY2hlY2tPbiB8fCAoUy52YWxIb29rc1t0aGlzXS5nZXQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PT0gZS5nZXRBdHRyaWJ1dGUoInZhbHVlIikgPyAib24iIDogZS52YWx1ZSB9KSB9KSwgeS5mb2N1c2luID0gIm9uZm9jdXNpbiIgaW4gQzsgdmFyIG10ID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLCB4dCA9IGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCkgfTsgUy5leHRlbmQoUy5ldmVudCwgeyB0cmlnZ2VyOiBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgcywgdSwgbCwgYywgZiwgcCA9IFtuIHx8IEVdLCBkID0gdi5jYWxsKGUsICJ0eXBlIikgPyBlLnR5cGUgOiBlLCBoID0gdi5jYWxsKGUsICJuYW1lc3BhY2UiKSA/IGUubmFtZXNwYWNlLnNwbGl0KCIuIikgOiBbXTsgaWYgKG8gPSBmID0gYSA9IG4gPSBuIHx8IEUsIDMgIT09IG4ubm9kZVR5cGUgJiYgOCAhPT0gbi5ub2RlVHlwZSAmJiAhbXQudGVzdChkICsgUy5ldmVudC50cmlnZ2VyZWQpICYmICgtMSA8IGQuaW5kZXhPZigiLiIpICYmIChkID0gKGggPSBkLnNwbGl0KCIuIikpLnNoaWZ0KCksIGguc29ydCgpKSwgdSA9IGQuaW5kZXhPZigiOiIpIDwgMCAmJiAib24iICsgZCwgKGUgPSBlW1MuZXhwYW5kb10gPyBlIDogbmV3IFMuRXZlbnQoZCwgIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSkpLmlzVHJpZ2dlciA9IHIgPyAyIDogMywgZS5uYW1lc3BhY2UgPSBoLmpvaW4oIi4iKSwgZS5ybmFtZXNwYWNlID0gZS5uYW1lc3BhY2UgPyBuZXcgUmVnRXhwKCIoXnxcXC4pIiArIGguam9pbigiXFwuKD86LipcXC58KSIpICsgIihcXC58JCkiKSA6IG51bGwsIGUucmVzdWx0ID0gdm9pZCAwLCBlLnRhcmdldCB8fCAoZS50YXJnZXQgPSBuKSwgdCA9IG51bGwgPT0gdCA/IFtlXSA6IFMubWFrZUFycmF5KHQsIFtlXSksIGMgPSBTLmV2ZW50LnNwZWNpYWxbZF0gfHwge30sIHIgfHwgIWMudHJpZ2dlciB8fCAhMSAhPT0gYy50cmlnZ2VyLmFwcGx5KG4sIHQpKSkgeyBpZiAoIXIgJiYgIWMubm9CdWJibGUgJiYgIXgobikpIHsgZm9yIChzID0gYy5kZWxlZ2F0ZVR5cGUgfHwgZCwgbXQudGVzdChzICsgZCkgfHwgKG8gPSBvLnBhcmVudE5vZGUpOyBvOyBvID0gby5wYXJlbnROb2RlKXAucHVzaChvKSwgYSA9IG87IGEgPT09IChuLm93bmVyRG9jdW1lbnQgfHwgRSkgJiYgcC5wdXNoKGEuZGVmYXVsdFZpZXcgfHwgYS5wYXJlbnRXaW5kb3cgfHwgQykgfSBpID0gMDsgd2hpbGUgKChvID0gcFtpKytdKSAmJiAhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSBmID0gbywgZS50eXBlID0gMSA8IGkgPyBzIDogYy5iaW5kVHlwZSB8fCBkLCAobCA9IChZLmdldChvLCAiZXZlbnRzIikgfHwgT2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSAmJiBZLmdldChvLCAiaGFuZGxlIikpICYmIGwuYXBwbHkobywgdCksIChsID0gdSAmJiBvW3VdKSAmJiBsLmFwcGx5ICYmIFYobykgJiYgKGUucmVzdWx0ID0gbC5hcHBseShvLCB0KSwgITEgPT09IGUucmVzdWx0ICYmIGUucHJldmVudERlZmF1bHQoKSk7IHJldHVybiBlLnR5cGUgPSBkLCByIHx8IGUuaXNEZWZhdWx0UHJldmVudGVkKCkgfHwgYy5fZGVmYXVsdCAmJiAhMSAhPT0gYy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLCB0KSB8fCAhVihuKSB8fCB1ICYmIG0obltkXSkgJiYgIXgobikgJiYgKChhID0gblt1XSkgJiYgKG5bdV0gPSBudWxsKSwgUy5ldmVudC50cmlnZ2VyZWQgPSBkLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5hZGRFdmVudExpc3RlbmVyKGQsIHh0KSwgbltkXSgpLCBlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZi5yZW1vdmVFdmVudExpc3RlbmVyKGQsIHh0KSwgUy5ldmVudC50cmlnZ2VyZWQgPSB2b2lkIDAsIGEgJiYgKG5bdV0gPSBhKSksIGUucmVzdWx0IH0gfSwgc2ltdWxhdGU6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByID0gUy5leHRlbmQobmV3IFMuRXZlbnQsIG4sIHsgdHlwZTogZSwgaXNTaW11bGF0ZWQ6ICEwIH0pOyBTLmV2ZW50LnRyaWdnZXIociwgbnVsbCwgdCkgfSB9KSwgUy5mbi5leHRlbmQoeyB0cmlnZ2VyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsgUy5ldmVudC50cmlnZ2VyKGUsIHQsIHRoaXMpIH0pIH0sIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IHRoaXNbMF07IGlmIChuKSByZXR1cm4gUy5ldmVudC50cmlnZ2VyKGUsIHQsIG4sICEwKSB9IH0pLCB5LmZvY3VzaW4gfHwgUy5lYWNoKHsgZm9jdXM6ICJmb2N1c2luIiwgYmx1cjogImZvY3Vzb3V0IiB9LCBmdW5jdGlvbiAobiwgcikgeyB2YXIgaSA9IGZ1bmN0aW9uIChlKSB7IFMuZXZlbnQuc2ltdWxhdGUociwgZS50YXJnZXQsIFMuZXZlbnQuZml4KGUpKSB9OyBTLmV2ZW50LnNwZWNpYWxbcl0gPSB7IHNldHVwOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gdGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMuZG9jdW1lbnQgfHwgdGhpcywgdCA9IFkuYWNjZXNzKGUsIHIpOyB0IHx8IGUuYWRkRXZlbnRMaXN0ZW5lcihuLCBpLCAhMCksIFkuYWNjZXNzKGUsIHIsICh0IHx8IDApICsgMSkgfSwgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcy5kb2N1bWVudCB8fCB0aGlzLCB0ID0gWS5hY2Nlc3MoZSwgcikgLSAxOyB0ID8gWS5hY2Nlc3MoZSwgciwgdCkgOiAoZS5yZW1vdmVFdmVudExpc3RlbmVyKG4sIGksICEwKSwgWS5yZW1vdmUoZSwgcikpIH0gfSB9KTsgdmFyIGJ0ID0gQy5sb2NhdGlvbiwgd3QgPSB7IGd1aWQ6IERhdGUubm93KCkgfSwgVHQgPSAvXD8vOyBTLnBhcnNlWE1MID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQsIG47IGlmICghZSB8fCAic3RyaW5nIiAhPSB0eXBlb2YgZSkgcmV0dXJuIG51bGw7IHRyeSB7IHQgPSAobmV3IEMuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwgInRleHQveG1sIikgfSBjYXRjaCAoZSkgeyB9IHJldHVybiBuID0gdCAmJiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLCB0ICYmICFuIHx8IFMuZXJyb3IoIkludmFsaWQgWE1MOiAiICsgKG4gPyBTLm1hcChuLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRleHRDb250ZW50IH0pLmpvaW4oIlxuIikgOiBlKSksIHQgfTsgdmFyIEN0ID0gL1xbXF0kLywgRXQgPSAvXHI/XG4vZywgU3QgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksIGt0ID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pOyBmdW5jdGlvbiBBdChuLCBlLCByLCBpKSB7IHZhciB0OyBpZiAoQXJyYXkuaXNBcnJheShlKSkgUy5lYWNoKGUsIGZ1bmN0aW9uIChlLCB0KSB7IHIgfHwgQ3QudGVzdChuKSA/IGkobiwgdCkgOiBBdChuICsgIlsiICsgKCJvYmplY3QiID09IHR5cGVvZiB0ICYmIG51bGwgIT0gdCA/IGUgOiAiIikgKyAiXSIsIHQsIHIsIGkpIH0pOyBlbHNlIGlmIChyIHx8ICJvYmplY3QiICE9PSB3KGUpKSBpKG4sIGUpOyBlbHNlIGZvciAodCBpbiBlKSBBdChuICsgIlsiICsgdCArICJdIiwgZVt0XSwgciwgaSkgfSBTLnBhcmFtID0gZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4sIHIgPSBbXSwgaSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gbSh0KSA/IHQoKSA6IHQ7IHJbci5sZW5ndGhdID0gZW5jb2RlVVJJQ29tcG9uZW50KGUpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KG51bGwgPT0gbiA/ICIiIDogbikgfTsgaWYgKG51bGwgPT0gZSkgcmV0dXJuICIiOyBpZiAoQXJyYXkuaXNBcnJheShlKSB8fCBlLmpxdWVyeSAmJiAhUy5pc1BsYWluT2JqZWN0KGUpKSBTLmVhY2goZSwgZnVuY3Rpb24gKCkgeyBpKHRoaXMubmFtZSwgdGhpcy52YWx1ZSkgfSk7IGVsc2UgZm9yIChuIGluIGUpIEF0KG4sIGVbbl0sIHQsIGkpOyByZXR1cm4gci5qb2luKCImIikgfSwgUy5mbi5leHRlbmQoeyBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKSB9LCBzZXJpYWxpemVBcnJheTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKCkgeyB2YXIgZSA9IFMucHJvcCh0aGlzLCAiZWxlbWVudHMiKTsgcmV0dXJuIGUgPyBTLm1ha2VBcnJheShlKSA6IHRoaXMgfSkuZmlsdGVyKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLnR5cGU7IHJldHVybiB0aGlzLm5hbWUgJiYgIVModGhpcykuaXMoIjpkaXNhYmxlZCIpICYmIGt0LnRlc3QodGhpcy5ub2RlTmFtZSkgJiYgIVN0LnRlc3QoZSkgJiYgKHRoaXMuY2hlY2tlZCB8fCAhcGUudGVzdChlKSkgfSkubWFwKGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuID0gUyh0aGlzKS52YWwoKTsgcmV0dXJuIG51bGwgPT0gbiA/IG51bGwgOiBBcnJheS5pc0FycmF5KG4pID8gUy5tYXAobiwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHsgbmFtZTogdC5uYW1lLCB2YWx1ZTogZS5yZXBsYWNlKEV0LCAiXHJcbiIpIH0gfSkgOiB7IG5hbWU6IHQubmFtZSwgdmFsdWU6IG4ucmVwbGFjZShFdCwgIlxyXG4iKSB9IH0pLmdldCgpIH0gfSk7IHZhciBOdCA9IC8lMjAvZywganQgPSAvIy4qJC8sIER0ID0gLyhbPyZdKV89W14mXSovLCBxdCA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sIEx0ID0gL14oPzpHRVR8SEVBRCkkLywgSHQgPSAvXlwvXC8vLCBPdCA9IHt9LCBQdCA9IHt9LCBSdCA9ICIqLyIuY29uY2F0KCIqIiksIE10ID0gRS5jcmVhdGVFbGVtZW50KCJhIik7IGZ1bmN0aW9uIEl0KG8pIHsgcmV0dXJuIGZ1bmN0aW9uIChlLCB0KSB7ICJzdHJpbmciICE9IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9ICIqIik7IHZhciBuLCByID0gMCwgaSA9IGUudG9Mb3dlckNhc2UoKS5tYXRjaChQKSB8fCBbXTsgaWYgKG0odCkpIHdoaWxlIChuID0gaVtyKytdKSAiKyIgPT09IG5bMF0gPyAobiA9IG4uc2xpY2UoMSkgfHwgIioiLCAob1tuXSA9IG9bbl0gfHwgW10pLnVuc2hpZnQodCkpIDogKG9bbl0gPSBvW25dIHx8IFtdKS5wdXNoKHQpIH0gfSBmdW5jdGlvbiBXdCh0LCBpLCBvLCBhKSB7IHZhciBzID0ge30sIHUgPSB0ID09PSBQdDsgZnVuY3Rpb24gbChlKSB7IHZhciByOyByZXR1cm4gc1tlXSA9ICEwLCBTLmVhY2godFtlXSB8fCBbXSwgZnVuY3Rpb24gKGUsIHQpIHsgdmFyIG4gPSB0KGksIG8sIGEpOyByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIG4gfHwgdSB8fCBzW25dID8gdSA/ICEociA9IG4pIDogdm9pZCAwIDogKGkuZGF0YVR5cGVzLnVuc2hpZnQobiksIGwobiksICExKSB9KSwgciB9IHJldHVybiBsKGkuZGF0YVR5cGVzWzBdKSB8fCAhc1siKiJdICYmIGwoIioiKSB9IGZ1bmN0aW9uIEZ0KGUsIHQpIHsgdmFyIG4sIHIsIGkgPSBTLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTsgZm9yIChuIGluIHQpIHZvaWQgMCAhPT0gdFtuXSAmJiAoKGlbbl0gPyBlIDogciB8fCAociA9IHt9KSlbbl0gPSB0W25dKTsgcmV0dXJuIHIgJiYgUy5leHRlbmQoITAsIGUsIHIpLCBlIH0gTXQuaHJlZiA9IGJ0LmhyZWYsIFMuZXh0ZW5kKHsgYWN0aXZlOiAwLCBsYXN0TW9kaWZpZWQ6IHt9LCBldGFnOiB7fSwgYWpheFNldHRpbmdzOiB7IHVybDogYnQuaHJlZiwgdHlwZTogIkdFVCIsIGlzTG9jYWw6IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoYnQucHJvdG9jb2wpLCBnbG9iYWw6ICEwLCBwcm9jZXNzRGF0YTogITAsIGFzeW5jOiAhMCwgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLCBhY2NlcHRzOiB7ICIqIjogUnQsIHRleHQ6ICJ0ZXh0L3BsYWluIiwgaHRtbDogInRleHQvaHRtbCIsIHhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLCBqc29uOiAiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiB9LCBjb250ZW50czogeyB4bWw6IC9cYnhtbFxiLywgaHRtbDogL1xiaHRtbC8sIGpzb246IC9cYmpzb25cYi8gfSwgcmVzcG9uc2VGaWVsZHM6IHsgeG1sOiAicmVzcG9uc2VYTUwiLCB0ZXh0OiAicmVzcG9uc2VUZXh0IiwganNvbjogInJlc3BvbnNlSlNPTiIgfSwgY29udmVydGVyczogeyAiKiB0ZXh0IjogU3RyaW5nLCAidGV4dCBodG1sIjogITAsICJ0ZXh0IGpzb24iOiBKU09OLnBhcnNlLCAidGV4dCB4bWwiOiBTLnBhcnNlWE1MIH0sIGZsYXRPcHRpb25zOiB7IHVybDogITAsIGNvbnRleHQ6ICEwIH0gfSwgYWpheFNldHVwOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdCA/IEZ0KEZ0KGUsIFMuYWpheFNldHRpbmdzKSwgdCkgOiBGdChTLmFqYXhTZXR0aW5ncywgZSkgfSwgYWpheFByZWZpbHRlcjogSXQoT3QpLCBhamF4VHJhbnNwb3J0OiBJdChQdCksIGFqYXg6IGZ1bmN0aW9uIChlLCB0KSB7ICJvYmplY3QiID09IHR5cGVvZiBlICYmICh0ID0gZSwgZSA9IHZvaWQgMCksIHQgPSB0IHx8IHt9OyB2YXIgYywgZiwgcCwgbiwgZCwgciwgaCwgZywgaSwgbywgdiA9IFMuYWpheFNldHVwKHt9LCB0KSwgeSA9IHYuY29udGV4dCB8fCB2LCBtID0gdi5jb250ZXh0ICYmICh5Lm5vZGVUeXBlIHx8IHkuanF1ZXJ5KSA/IFMoeSkgOiBTLmV2ZW50LCB4ID0gUy5EZWZlcnJlZCgpLCBiID0gUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksIHcgPSB2LnN0YXR1c0NvZGUgfHwge30sIGEgPSB7fSwgcyA9IHt9LCB1ID0gImNhbmNlbGVkIiwgVCA9IHsgcmVhZHlTdGF0ZTogMCwgZ2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uIChlKSB7IHZhciB0OyBpZiAoaCkgeyBpZiAoIW4pIHsgbiA9IHt9OyB3aGlsZSAodCA9IHF0LmV4ZWMocCkpIG5bdFsxXS50b0xvd2VyQ2FzZSgpICsgIiAiXSA9IChuW3RbMV0udG9Mb3dlckNhc2UoKSArICIgIl0gfHwgW10pLmNvbmNhdCh0WzJdKSB9IHQgPSBuW2UudG9Mb3dlckNhc2UoKSArICIgIl0gfSByZXR1cm4gbnVsbCA9PSB0ID8gbnVsbCA6IHQuam9pbigiLCAiKSB9LCBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGggPyBwIDogbnVsbCB9LCBzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gbnVsbCA9PSBoICYmIChlID0gc1tlLnRvTG93ZXJDYXNlKCldID0gc1tlLnRvTG93ZXJDYXNlKCldIHx8IGUsIGFbZV0gPSB0KSwgdGhpcyB9LCBvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gbnVsbCA9PSBoICYmICh2Lm1pbWVUeXBlID0gZSksIHRoaXMgfSwgc3RhdHVzQ29kZTogZnVuY3Rpb24gKGUpIHsgdmFyIHQ7IGlmIChlKSBpZiAoaCkgVC5hbHdheXMoZVtULnN0YXR1c10pOyBlbHNlIGZvciAodCBpbiBlKSB3W3RdID0gW3dbdF0sIGVbdF1dOyByZXR1cm4gdGhpcyB9LCBhYm9ydDogZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBlIHx8IHU7IHJldHVybiBjICYmIGMuYWJvcnQodCksIGwoMCwgdCksIHRoaXMgfSB9OyBpZiAoeC5wcm9taXNlKFQpLCB2LnVybCA9ICgoZSB8fCB2LnVybCB8fCBidC5ocmVmKSArICIiKS5yZXBsYWNlKEh0LCBidC5wcm90b2NvbCArICIvLyIpLCB2LnR5cGUgPSB0Lm1ldGhvZCB8fCB0LnR5cGUgfHwgdi5tZXRob2QgfHwgdi50eXBlLCB2LmRhdGFUeXBlcyA9ICh2LmRhdGFUeXBlIHx8ICIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChQKSB8fCBbIiJdLCBudWxsID09IHYuY3Jvc3NEb21haW4pIHsgciA9IEUuY3JlYXRlRWxlbWVudCgiYSIpOyB0cnkgeyByLmhyZWYgPSB2LnVybCwgci5ocmVmID0gci5ocmVmLCB2LmNyb3NzRG9tYWluID0gTXQucHJvdG9jb2wgKyAiLy8iICsgTXQuaG9zdCAhPSByLnByb3RvY29sICsgIi8vIiArIHIuaG9zdCB9IGNhdGNoIChlKSB7IHYuY3Jvc3NEb21haW4gPSAhMCB9IH0gaWYgKHYuZGF0YSAmJiB2LnByb2Nlc3NEYXRhICYmICJzdHJpbmciICE9IHR5cGVvZiB2LmRhdGEgJiYgKHYuZGF0YSA9IFMucGFyYW0odi5kYXRhLCB2LnRyYWRpdGlvbmFsKSksIFd0KE90LCB2LCB0LCBUKSwgaCkgcmV0dXJuIFQ7IGZvciAoaSBpbiAoZyA9IFMuZXZlbnQgJiYgdi5nbG9iYWwpICYmIDAgPT0gUy5hY3RpdmUrKyAmJiBTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLCB2LnR5cGUgPSB2LnR5cGUudG9VcHBlckNhc2UoKSwgdi5oYXNDb250ZW50ID0gIUx0LnRlc3Qodi50eXBlKSwgZiA9IHYudXJsLnJlcGxhY2UoanQsICIiKSwgdi5oYXNDb250ZW50ID8gdi5kYXRhICYmIHYucHJvY2Vzc0RhdGEgJiYgMCA9PT0gKHYuY29udGVudFR5cGUgfHwgIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmICh2LmRhdGEgPSB2LmRhdGEucmVwbGFjZShOdCwgIisiKSkgOiAobyA9IHYudXJsLnNsaWNlKGYubGVuZ3RoKSwgdi5kYXRhICYmICh2LnByb2Nlc3NEYXRhIHx8ICJzdHJpbmciID09IHR5cGVvZiB2LmRhdGEpICYmIChmICs9IChUdC50ZXN0KGYpID8gIiYiIDogIj8iKSArIHYuZGF0YSwgZGVsZXRlIHYuZGF0YSksICExID09PSB2LmNhY2hlICYmIChmID0gZi5yZXBsYWNlKER0LCAiJDEiKSwgbyA9IChUdC50ZXN0KGYpID8gIiYiIDogIj8iKSArICJfPSIgKyB3dC5ndWlkKysgKyBvKSwgdi51cmwgPSBmICsgbyksIHYuaWZNb2RpZmllZCAmJiAoUy5sYXN0TW9kaWZpZWRbZl0gJiYgVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIFMubGFzdE1vZGlmaWVkW2ZdKSwgUy5ldGFnW2ZdICYmIFQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIFMuZXRhZ1tmXSkpLCAodi5kYXRhICYmIHYuaGFzQ29udGVudCAmJiAhMSAhPT0gdi5jb250ZW50VHlwZSB8fCB0LmNvbnRlbnRUeXBlKSAmJiBULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHYuY29udGVudFR5cGUpLCBULnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsIHYuZGF0YVR5cGVzWzBdICYmIHYuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0gPyB2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dICsgKCIqIiAhPT0gdi5kYXRhVHlwZXNbMF0gPyAiLCAiICsgUnQgKyAiOyBxPTAuMDEiIDogIiIpIDogdi5hY2NlcHRzWyIqIl0pLCB2LmhlYWRlcnMpIFQuc2V0UmVxdWVzdEhlYWRlcihpLCB2LmhlYWRlcnNbaV0pOyBpZiAodi5iZWZvcmVTZW5kICYmICghMSA9PT0gdi5iZWZvcmVTZW5kLmNhbGwoeSwgVCwgdikgfHwgaCkpIHJldHVybiBULmFib3J0KCk7IGlmICh1ID0gImFib3J0IiwgYi5hZGQodi5jb21wbGV0ZSksIFQuZG9uZSh2LnN1Y2Nlc3MpLCBULmZhaWwodi5lcnJvciksIGMgPSBXdChQdCwgdiwgdCwgVCkpIHsgaWYgKFQucmVhZHlTdGF0ZSA9IDEsIGcgJiYgbS50cmlnZ2VyKCJhamF4U2VuZCIsIFtULCB2XSksIGgpIHJldHVybiBUOyB2LmFzeW5jICYmIDAgPCB2LnRpbWVvdXQgJiYgKGQgPSBDLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBULmFib3J0KCJ0aW1lb3V0IikgfSwgdi50aW1lb3V0KSk7IHRyeSB7IGggPSAhMSwgYy5zZW5kKGEsIGwpIH0gY2F0Y2ggKGUpIHsgaWYgKGgpIHRocm93IGU7IGwoLTEsIGUpIH0gfSBlbHNlIGwoLTEsICJObyBUcmFuc3BvcnQiKTsgZnVuY3Rpb24gbChlLCB0LCBuLCByKSB7IHZhciBpLCBvLCBhLCBzLCB1LCBsID0gdDsgaCB8fCAoaCA9ICEwLCBkICYmIEMuY2xlYXJUaW1lb3V0KGQpLCBjID0gdm9pZCAwLCBwID0gciB8fCAiIiwgVC5yZWFkeVN0YXRlID0gMCA8IGUgPyA0IDogMCwgaSA9IDIwMCA8PSBlICYmIGUgPCAzMDAgfHwgMzA0ID09PSBlLCBuICYmIChzID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEsIHMgPSBlLmNvbnRlbnRzLCB1ID0gZS5kYXRhVHlwZXM7IHdoaWxlICgiKiIgPT09IHVbMF0pIHUuc2hpZnQoKSwgdm9pZCAwID09PSByICYmIChyID0gZS5taW1lVHlwZSB8fCB0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7IGlmIChyKSBmb3IgKGkgaW4gcykgaWYgKHNbaV0gJiYgc1tpXS50ZXN0KHIpKSB7IHUudW5zaGlmdChpKTsgYnJlYWsgfSBpZiAodVswXSBpbiBuKSBvID0gdVswXTsgZWxzZSB7IGZvciAoaSBpbiBuKSB7IGlmICghdVswXSB8fCBlLmNvbnZlcnRlcnNbaSArICIgIiArIHVbMF1dKSB7IG8gPSBpOyBicmVhayB9IGEgfHwgKGEgPSBpKSB9IG8gPSBvIHx8IGEgfSBpZiAobykgcmV0dXJuIG8gIT09IHVbMF0gJiYgdS51bnNoaWZ0KG8pLCBuW29dIH0odiwgVCwgbikpLCAhaSAmJiAtMSA8IFMuaW5BcnJheSgic2NyaXB0Iiwgdi5kYXRhVHlwZXMpICYmIFMuaW5BcnJheSgianNvbiIsIHYuZGF0YVR5cGVzKSA8IDAgJiYgKHYuY29udmVydGVyc1sidGV4dCBzY3JpcHQiXSA9IGZ1bmN0aW9uICgpIHsgfSksIHMgPSBmdW5jdGlvbiAoZSwgdCwgbiwgcikgeyB2YXIgaSwgbywgYSwgcywgdSwgbCA9IHt9LCBjID0gZS5kYXRhVHlwZXMuc2xpY2UoKTsgaWYgKGNbMV0pIGZvciAoYSBpbiBlLmNvbnZlcnRlcnMpIGxbYS50b0xvd2VyQ2FzZSgpXSA9IGUuY29udmVydGVyc1thXTsgbyA9IGMuc2hpZnQoKTsgd2hpbGUgKG8pIGlmIChlLnJlc3BvbnNlRmllbGRzW29dICYmIChuW2UucmVzcG9uc2VGaWVsZHNbb11dID0gdCksICF1ICYmIHIgJiYgZS5kYXRhRmlsdGVyICYmICh0ID0gZS5kYXRhRmlsdGVyKHQsIGUuZGF0YVR5cGUpKSwgdSA9IG8sIG8gPSBjLnNoaWZ0KCkpIGlmICgiKiIgPT09IG8pIG8gPSB1OyBlbHNlIGlmICgiKiIgIT09IHUgJiYgdSAhPT0gbykgeyBpZiAoIShhID0gbFt1ICsgIiAiICsgb10gfHwgbFsiKiAiICsgb10pKSBmb3IgKGkgaW4gbCkgaWYgKChzID0gaS5zcGxpdCgiICIpKVsxXSA9PT0gbyAmJiAoYSA9IGxbdSArICIgIiArIHNbMF1dIHx8IGxbIiogIiArIHNbMF1dKSkgeyAhMCA9PT0gYSA/IGEgPSBsW2ldIDogITAgIT09IGxbaV0gJiYgKG8gPSBzWzBdLCBjLnVuc2hpZnQoc1sxXSkpOyBicmVhayB9IGlmICghMCAhPT0gYSkgaWYgKGEgJiYgZVsidGhyb3dzIl0pIHQgPSBhKHQpOyBlbHNlIHRyeSB7IHQgPSBhKHQpIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIHsgc3RhdGU6ICJwYXJzZXJlcnJvciIsIGVycm9yOiBhID8gZSA6ICJObyBjb252ZXJzaW9uIGZyb20gIiArIHUgKyAiIHRvICIgKyBvIH0gfSB9IHJldHVybiB7IHN0YXRlOiAic3VjY2VzcyIsIGRhdGE6IHQgfSB9KHYsIHMsIFQsIGkpLCBpID8gKHYuaWZNb2RpZmllZCAmJiAoKHUgPSBULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpICYmIChTLmxhc3RNb2RpZmllZFtmXSA9IHUpLCAodSA9IFQuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSkgJiYgKFMuZXRhZ1tmXSA9IHUpKSwgMjA0ID09PSBlIHx8ICJIRUFEIiA9PT0gdi50eXBlID8gbCA9ICJub2NvbnRlbnQiIDogMzA0ID09PSBlID8gbCA9ICJub3Rtb2RpZmllZCIgOiAobCA9IHMuc3RhdGUsIG8gPSBzLmRhdGEsIGkgPSAhKGEgPSBzLmVycm9yKSkpIDogKGEgPSBsLCAhZSAmJiBsIHx8IChsID0gImVycm9yIiwgZSA8IDAgJiYgKGUgPSAwKSkpLCBULnN0YXR1cyA9IGUsIFQuc3RhdHVzVGV4dCA9ICh0IHx8IGwpICsgIiIsIGkgPyB4LnJlc29sdmVXaXRoKHksIFtvLCBsLCBUXSkgOiB4LnJlamVjdFdpdGgoeSwgW1QsIGwsIGFdKSwgVC5zdGF0dXNDb2RlKHcpLCB3ID0gdm9pZCAwLCBnICYmIG0udHJpZ2dlcihpID8gImFqYXhTdWNjZXNzIiA6ICJhamF4RXJyb3IiLCBbVCwgdiwgaSA/IG8gOiBhXSksIGIuZmlyZVdpdGgoeSwgW1QsIGxdKSwgZyAmJiAobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLCBbVCwgdl0pLCAtLVMuYWN0aXZlIHx8IFMuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpIH0gcmV0dXJuIFQgfSwgZ2V0SlNPTjogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIFMuZ2V0KGUsIHQsIG4sICJqc29uIikgfSwgZ2V0U2NyaXB0OiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gUy5nZXQoZSwgdm9pZCAwLCB0LCAic2NyaXB0IikgfSB9KSwgUy5lYWNoKFsiZ2V0IiwgInBvc3QiXSwgZnVuY3Rpb24gKGUsIGkpIHsgU1tpXSA9IGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IHJldHVybiBtKHQpICYmIChyID0gciB8fCBuLCBuID0gdCwgdCA9IHZvaWQgMCksIFMuYWpheChTLmV4dGVuZCh7IHVybDogZSwgdHlwZTogaSwgZGF0YVR5cGU6IHIsIGRhdGE6IHQsIHN1Y2Nlc3M6IG4gfSwgUy5pc1BsYWluT2JqZWN0KGUpICYmIGUpKSB9IH0pLCBTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24gKGUpIHsgdmFyIHQ7IGZvciAodCBpbiBlLmhlYWRlcnMpICJjb250ZW50LXR5cGUiID09PSB0LnRvTG93ZXJDYXNlKCkgJiYgKGUuY29udGVudFR5cGUgPSBlLmhlYWRlcnNbdF0gfHwgIiIpIH0pLCBTLl9ldmFsVXJsID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIFMuYWpheCh7IHVybDogZSwgdHlwZTogIkdFVCIsIGRhdGFUeXBlOiAic2NyaXB0IiwgY2FjaGU6ICEwLCBhc3luYzogITEsIGdsb2JhbDogITEsIGNvbnZlcnRlcnM6IHsgInRleHQgc2NyaXB0IjogZnVuY3Rpb24gKCkgeyB9IH0sIGRhdGFGaWx0ZXI6IGZ1bmN0aW9uIChlKSB7IFMuZ2xvYmFsRXZhbChlLCB0LCBuKSB9IH0pIH0sIFMuZm4uZXh0ZW5kKHsgd3JhcEFsbDogZnVuY3Rpb24gKGUpIHsgdmFyIHQ7IHJldHVybiB0aGlzWzBdICYmIChtKGUpICYmIChlID0gZS5jYWxsKHRoaXNbMF0pKSwgdCA9IFMoZSwgdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksIHRoaXNbMF0ucGFyZW50Tm9kZSAmJiB0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSwgdC5tYXAoZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHRoaXM7IHdoaWxlIChlLmZpcnN0RWxlbWVudENoaWxkKSBlID0gZS5maXJzdEVsZW1lbnRDaGlsZDsgcmV0dXJuIGUgfSkuYXBwZW5kKHRoaXMpKSwgdGhpcyB9LCB3cmFwSW5uZXI6IGZ1bmN0aW9uIChuKSB7IHJldHVybiBtKG4pID8gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7IFModGhpcykud3JhcElubmVyKG4uY2FsbCh0aGlzLCBlKSkgfSkgOiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgZSA9IFModGhpcyksIHQgPSBlLmNvbnRlbnRzKCk7IHQubGVuZ3RoID8gdC53cmFwQWxsKG4pIDogZS5hcHBlbmQobikgfSkgfSwgd3JhcDogZnVuY3Rpb24gKHQpIHsgdmFyIG4gPSBtKHQpOyByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7IFModGhpcykud3JhcEFsbChuID8gdC5jYWxsKHRoaXMsIGUpIDogdCkgfSkgfSwgdW53cmFwOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbiAoKSB7IFModGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKSB9KSwgdGhpcyB9IH0pLCBTLmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIVMuZXhwci5wc2V1ZG9zLnZpc2libGUoZSkgfSwgUy5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiAhIShlLm9mZnNldFdpZHRoIHx8IGUub2Zmc2V0SGVpZ2h0IHx8IGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpIH0sIFMuYWpheFNldHRpbmdzLnhociA9IGZ1bmN0aW9uICgpIHsgdHJ5IHsgcmV0dXJuIG5ldyBDLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfSB9OyB2YXIgQnQgPSB7IDA6IDIwMCwgMTIyMzogMjA0IH0sICR0ID0gUy5hamF4U2V0dGluZ3MueGhyKCk7IHkuY29ycyA9ICEhJHQgJiYgIndpdGhDcmVkZW50aWFscyIgaW4gJHQsIHkuYWpheCA9ICR0ID0gISEkdCwgUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uIChpKSB7IHZhciBvLCBhOyBpZiAoeS5jb3JzIHx8ICR0ICYmICFpLmNyb3NzRG9tYWluKSByZXR1cm4geyBzZW5kOiBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiwgciA9IGkueGhyKCk7IGlmIChyLm9wZW4oaS50eXBlLCBpLnVybCwgaS5hc3luYywgaS51c2VybmFtZSwgaS5wYXNzd29yZCksIGkueGhyRmllbGRzKSBmb3IgKG4gaW4gaS54aHJGaWVsZHMpIHJbbl0gPSBpLnhockZpZWxkc1tuXTsgZm9yIChuIGluIGkubWltZVR5cGUgJiYgci5vdmVycmlkZU1pbWVUeXBlICYmIHIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSwgaS5jcm9zc0RvbWFpbiB8fCBlWyJYLVJlcXVlc3RlZC1XaXRoIl0gfHwgKGVbIlgtUmVxdWVzdGVkLVdpdGgiXSA9ICJYTUxIdHRwUmVxdWVzdCIpLCBlKSByLnNldFJlcXVlc3RIZWFkZXIobiwgZVtuXSk7IG8gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyBvICYmIChvID0gYSA9IHIub25sb2FkID0gci5vbmVycm9yID0gci5vbmFib3J0ID0gci5vbnRpbWVvdXQgPSByLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGwsICJhYm9ydCIgPT09IGUgPyByLmFib3J0KCkgOiAiZXJyb3IiID09PSBlID8gIm51bWJlciIgIT0gdHlwZW9mIHIuc3RhdHVzID8gdCgwLCAiZXJyb3IiKSA6IHQoci5zdGF0dXMsIHIuc3RhdHVzVGV4dCkgOiB0KEJ0W3Iuc3RhdHVzXSB8fCByLnN0YXR1cywgci5zdGF0dXNUZXh0LCAidGV4dCIgIT09IChyLnJlc3BvbnNlVHlwZSB8fCAidGV4dCIpIHx8ICJzdHJpbmciICE9IHR5cGVvZiByLnJlc3BvbnNlVGV4dCA/IHsgYmluYXJ5OiByLnJlc3BvbnNlIH0gOiB7IHRleHQ6IHIucmVzcG9uc2VUZXh0IH0sIHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKSB9IH0sIHIub25sb2FkID0gbygpLCBhID0gci5vbmVycm9yID0gci5vbnRpbWVvdXQgPSBvKCJlcnJvciIpLCB2b2lkIDAgIT09IHIub25hYm9ydCA/IHIub25hYm9ydCA9IGEgOiByLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsgNCA9PT0gci5yZWFkeVN0YXRlICYmIEMuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IG8gJiYgYSgpIH0pIH0sIG8gPSBvKCJhYm9ydCIpOyB0cnkgeyByLnNlbmQoaS5oYXNDb250ZW50ICYmIGkuZGF0YSB8fCBudWxsKSB9IGNhdGNoIChlKSB7IGlmIChvKSB0aHJvdyBlIH0gfSwgYWJvcnQ6IGZ1bmN0aW9uICgpIHsgbyAmJiBvKCkgfSB9IH0pLCBTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24gKGUpIHsgZS5jcm9zc0RvbWFpbiAmJiAoZS5jb250ZW50cy5zY3JpcHQgPSAhMSkgfSksIFMuYWpheFNldHVwKHsgYWNjZXB0czogeyBzY3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIgfSwgY29udGVudHM6IHsgc2NyaXB0OiAvXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvIH0sIGNvbnZlcnRlcnM6IHsgInRleHQgc2NyaXB0IjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIFMuZ2xvYmFsRXZhbChlKSwgZSB9IH0gfSksIFMuYWpheFByZWZpbHRlcigic2NyaXB0IiwgZnVuY3Rpb24gKGUpIHsgdm9pZCAwID09PSBlLmNhY2hlICYmIChlLmNhY2hlID0gITEpLCBlLmNyb3NzRG9tYWluICYmIChlLnR5cGUgPSAiR0VUIikgfSksIFMuYWpheFRyYW5zcG9ydCgic2NyaXB0IiwgZnVuY3Rpb24gKG4pIHsgdmFyIHIsIGk7IGlmIChuLmNyb3NzRG9tYWluIHx8IG4uc2NyaXB0QXR0cnMpIHJldHVybiB7IHNlbmQ6IGZ1bmN0aW9uIChlLCB0KSB7IHIgPSBTKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRycyB8fCB7fSkucHJvcCh7IGNoYXJzZXQ6IG4uc2NyaXB0Q2hhcnNldCwgc3JjOiBuLnVybCB9KS5vbigibG9hZCBlcnJvciIsIGkgPSBmdW5jdGlvbiAoZSkgeyByLnJlbW92ZSgpLCBpID0gbnVsbCwgZSAmJiB0KCJlcnJvciIgPT09IGUudHlwZSA/IDQwNCA6IDIwMCwgZS50eXBlKSB9KSwgRS5oZWFkLmFwcGVuZENoaWxkKHJbMF0pIH0sIGFib3J0OiBmdW5jdGlvbiAoKSB7IGkgJiYgaSgpIH0gfSB9KTsgdmFyIF90LCB6dCA9IFtdLCBVdCA9IC8oPSlcPyg/PSZ8JCl8XD9cPy87IFMuYWpheFNldHVwKHsganNvbnA6ICJjYWxsYmFjayIsIGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB6dC5wb3AoKSB8fCBTLmV4cGFuZG8gKyAiXyIgKyB3dC5ndWlkKys7IHJldHVybiB0aGlzW2VdID0gITAsIGUgfSB9KSwgUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIiwgZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEgPSAhMSAhPT0gZS5qc29ucCAmJiAoVXQudGVzdChlLnVybCkgPyAidXJsIiA6ICJzdHJpbmciID09IHR5cGVvZiBlLmRhdGEgJiYgMCA9PT0gKGUuY29udGVudFR5cGUgfHwgIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpICYmIFV0LnRlc3QoZS5kYXRhKSAmJiAiZGF0YSIpOyBpZiAoYSB8fCAianNvbnAiID09PSBlLmRhdGFUeXBlc1swXSkgcmV0dXJuIHIgPSBlLmpzb25wQ2FsbGJhY2sgPSBtKGUuanNvbnBDYWxsYmFjaykgPyBlLmpzb25wQ2FsbGJhY2soKSA6IGUuanNvbnBDYWxsYmFjaywgYSA/IGVbYV0gPSBlW2FdLnJlcGxhY2UoVXQsICIkMSIgKyByKSA6ICExICE9PSBlLmpzb25wICYmIChlLnVybCArPSAoVHQudGVzdChlLnVybCkgPyAiJiIgOiAiPyIpICsgZS5qc29ucCArICI9IiArIHIpLCBlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvIHx8IFMuZXJyb3IociArICIgd2FzIG5vdCBjYWxsZWQiKSwgb1swXSB9LCBlLmRhdGFUeXBlc1swXSA9ICJqc29uIiwgaSA9IENbcl0sIENbcl0gPSBmdW5jdGlvbiAoKSB7IG8gPSBhcmd1bWVudHMgfSwgbi5hbHdheXMoZnVuY3Rpb24gKCkgeyB2b2lkIDAgPT09IGkgPyBTKEMpLnJlbW92ZVByb3AocikgOiBDW3JdID0gaSwgZVtyXSAmJiAoZS5qc29ucENhbGxiYWNrID0gdC5qc29ucENhbGxiYWNrLCB6dC5wdXNoKHIpKSwgbyAmJiBtKGkpICYmIGkob1swXSksIG8gPSBpID0gdm9pZCAwIH0pLCAic2NyaXB0IiB9KSwgeS5jcmVhdGVIVE1MRG9jdW1lbnQgPSAoKF90ID0gRS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTCA9ICI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsIDIgPT09IF90LmNoaWxkTm9kZXMubGVuZ3RoKSwgUy5wYXJzZUhUTUwgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyByZXR1cm4gInN0cmluZyIgIT0gdHlwZW9mIGUgPyBbXSA6ICgiYm9vbGVhbiIgPT0gdHlwZW9mIHQgJiYgKG4gPSB0LCB0ID0gITEpLCB0IHx8ICh5LmNyZWF0ZUhUTUxEb2N1bWVudCA/ICgociA9ICh0ID0gRS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWYgPSBFLmxvY2F0aW9uLmhyZWYsIHQuaGVhZC5hcHBlbmRDaGlsZChyKSkgOiB0ID0gRSksIG8gPSAhbiAmJiBbXSwgKGkgPSBOLmV4ZWMoZSkpID8gW3QuY3JlYXRlRWxlbWVudChpWzFdKV0gOiAoaSA9IHhlKFtlXSwgdCwgbyksIG8gJiYgby5sZW5ndGggJiYgUyhvKS5yZW1vdmUoKSwgUy5tZXJnZShbXSwgaS5jaGlsZE5vZGVzKSkpOyB2YXIgciwgaSwgbyB9LCBTLmZuLmxvYWQgPSBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgciwgaSwgbywgYSA9IHRoaXMsIHMgPSBlLmluZGV4T2YoIiAiKTsgcmV0dXJuIC0xIDwgcyAmJiAociA9IGh0KGUuc2xpY2UocykpLCBlID0gZS5zbGljZSgwLCBzKSksIG0odCkgPyAobiA9IHQsIHQgPSB2b2lkIDApIDogdCAmJiAib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAoaSA9ICJQT1NUIiksIDAgPCBhLmxlbmd0aCAmJiBTLmFqYXgoeyB1cmw6IGUsIHR5cGU6IGkgfHwgIkdFVCIsIGRhdGFUeXBlOiAiaHRtbCIsIGRhdGE6IHQgfSkuZG9uZShmdW5jdGlvbiAoZSkgeyBvID0gYXJndW1lbnRzLCBhLmh0bWwociA/IFMoIjxkaXY+IikuYXBwZW5kKFMucGFyc2VIVE1MKGUpKS5maW5kKHIpIDogZSkgfSkuYWx3YXlzKG4gJiYgZnVuY3Rpb24gKGUsIHQpIHsgYS5lYWNoKGZ1bmN0aW9uICgpIHsgbi5hcHBseSh0aGlzLCBvIHx8IFtlLnJlc3BvbnNlVGV4dCwgdCwgZV0pIH0pIH0pLCB0aGlzIH0sIFMuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIFMuZ3JlcChTLnRpbWVycywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHQgPT09IGUuZWxlbSB9KS5sZW5ndGggfSwgUy5vZmZzZXQgPSB7IHNldE9mZnNldDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgdmFyIHIsIGksIG8sIGEsIHMsIHUsIGwgPSBTLmNzcyhlLCAicG9zaXRpb24iKSwgYyA9IFMoZSksIGYgPSB7fTsgInN0YXRpYyIgPT09IGwgJiYgKGUuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiKSwgcyA9IGMub2Zmc2V0KCksIG8gPSBTLmNzcyhlLCAidG9wIiksIHUgPSBTLmNzcyhlLCAibGVmdCIpLCAoImFic29sdXRlIiA9PT0gbCB8fCAiZml4ZWQiID09PSBsKSAmJiAtMSA8IChvICsgdSkuaW5kZXhPZigiYXV0byIpID8gKGEgPSAociA9IGMucG9zaXRpb24oKSkudG9wLCBpID0gci5sZWZ0KSA6IChhID0gcGFyc2VGbG9hdChvKSB8fCAwLCBpID0gcGFyc2VGbG9hdCh1KSB8fCAwKSwgbSh0KSAmJiAodCA9IHQuY2FsbChlLCBuLCBTLmV4dGVuZCh7fSwgcykpKSwgbnVsbCAhPSB0LnRvcCAmJiAoZi50b3AgPSB0LnRvcCAtIHMudG9wICsgYSksIG51bGwgIT0gdC5sZWZ0ICYmIChmLmxlZnQgPSB0LmxlZnQgLSBzLmxlZnQgKyBpKSwgInVzaW5nIiBpbiB0ID8gdC51c2luZy5jYWxsKGUsIGYpIDogYy5jc3MoZikgfSB9LCBTLmZuLmV4dGVuZCh7IG9mZnNldDogZnVuY3Rpb24gKHQpIHsgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzIDogdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7IFMub2Zmc2V0LnNldE9mZnNldCh0aGlzLCB0LCBlKSB9KTsgdmFyIGUsIG4sIHIgPSB0aGlzWzBdOyByZXR1cm4gciA/IHIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPyAoZSA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIG4gPSByLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsIHsgdG9wOiBlLnRvcCArIG4ucGFnZVlPZmZzZXQsIGxlZnQ6IGUubGVmdCArIG4ucGFnZVhPZmZzZXQgfSkgOiB7IHRvcDogMCwgbGVmdDogMCB9IDogdm9pZCAwIH0sIHBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzWzBdKSB7IHZhciBlLCB0LCBuLCByID0gdGhpc1swXSwgaSA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07IGlmICgiZml4ZWQiID09PSBTLmNzcyhyLCAicG9zaXRpb24iKSkgdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGVsc2UgeyB0ID0gdGhpcy5vZmZzZXQoKSwgbiA9IHIub3duZXJEb2N1bWVudCwgZSA9IHIub2Zmc2V0UGFyZW50IHx8IG4uZG9jdW1lbnRFbGVtZW50OyB3aGlsZSAoZSAmJiAoZSA9PT0gbi5ib2R5IHx8IGUgPT09IG4uZG9jdW1lbnRFbGVtZW50KSAmJiAic3RhdGljIiA9PT0gUy5jc3MoZSwgInBvc2l0aW9uIikpIGUgPSBlLnBhcmVudE5vZGU7IGUgJiYgZSAhPT0gciAmJiAxID09PSBlLm5vZGVUeXBlICYmICgoaSA9IFMoZSkub2Zmc2V0KCkpLnRvcCArPSBTLmNzcyhlLCAiYm9yZGVyVG9wV2lkdGgiLCAhMCksIGkubGVmdCArPSBTLmNzcyhlLCAiYm9yZGVyTGVmdFdpZHRoIiwgITApKSB9IHJldHVybiB7IHRvcDogdC50b3AgLSBpLnRvcCAtIFMuY3NzKHIsICJtYXJnaW5Ub3AiLCAhMCksIGxlZnQ6IHQubGVmdCAtIGkubGVmdCAtIFMuY3NzKHIsICJtYXJnaW5MZWZ0IiwgITApIH0gfSB9LCBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzLm9mZnNldFBhcmVudDsgd2hpbGUgKGUgJiYgInN0YXRpYyIgPT09IFMuY3NzKGUsICJwb3NpdGlvbiIpKSBlID0gZS5vZmZzZXRQYXJlbnQ7IHJldHVybiBlIHx8IHJlIH0pIH0gfSksIFMuZWFjaCh7IHNjcm9sbExlZnQ6ICJwYWdlWE9mZnNldCIsIHNjcm9sbFRvcDogInBhZ2VZT2Zmc2V0IiB9LCBmdW5jdGlvbiAodCwgaSkgeyB2YXIgbyA9ICJwYWdlWU9mZnNldCIgPT09IGk7IFMuZm5bdF0gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gJCh0aGlzLCBmdW5jdGlvbiAoZSwgdCwgbikgeyB2YXIgcjsgaWYgKHgoZSkgPyByID0gZSA6IDkgPT09IGUubm9kZVR5cGUgJiYgKHIgPSBlLmRlZmF1bHRWaWV3KSwgdm9pZCAwID09PSBuKSByZXR1cm4gciA/IHJbaV0gOiBlW3RdOyByID8gci5zY3JvbGxUbyhvID8gci5wYWdlWE9mZnNldCA6IG4sIG8gPyBuIDogci5wYWdlWU9mZnNldCkgOiBlW3RdID0gbiB9LCB0LCBlLCBhcmd1bWVudHMubGVuZ3RoKSB9IH0pLCBTLmVhY2goWyJ0b3AiLCAibGVmdCJdLCBmdW5jdGlvbiAoZSwgbikgeyBTLmNzc0hvb2tzW25dID0gRmUoeS5waXhlbFBvc2l0aW9uLCBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodCkgcmV0dXJuIHQgPSBXZShlLCBuKSwgUGUudGVzdCh0KSA/IFMoZSkucG9zaXRpb24oKVtuXSArICJweCIgOiB0IH0pIH0pLCBTLmVhY2goeyBIZWlnaHQ6ICJoZWlnaHQiLCBXaWR0aDogIndpZHRoIiB9LCBmdW5jdGlvbiAoYSwgcykgeyBTLmVhY2goeyBwYWRkaW5nOiAiaW5uZXIiICsgYSwgY29udGVudDogcywgIiI6ICJvdXRlciIgKyBhIH0sIGZ1bmN0aW9uIChyLCBvKSB7IFMuZm5bb10gPSBmdW5jdGlvbiAoZSwgdCkgeyB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKHIgfHwgImJvb2xlYW4iICE9IHR5cGVvZiBlKSwgaSA9IHIgfHwgKCEwID09PSBlIHx8ICEwID09PSB0ID8gIm1hcmdpbiIgOiAiYm9yZGVyIik7IHJldHVybiAkKHRoaXMsIGZ1bmN0aW9uIChlLCB0LCBuKSB7IHZhciByOyByZXR1cm4geChlKSA/IDAgPT09IG8uaW5kZXhPZigib3V0ZXIiKSA/IGVbImlubmVyIiArIGFdIDogZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIgKyBhXSA6IDkgPT09IGUubm9kZVR5cGUgPyAociA9IGUuZG9jdW1lbnRFbGVtZW50LCBNYXRoLm1heChlLmJvZHlbInNjcm9sbCIgKyBhXSwgclsic2Nyb2xsIiArIGFdLCBlLmJvZHlbIm9mZnNldCIgKyBhXSwgclsib2Zmc2V0IiArIGFdLCByWyJjbGllbnQiICsgYV0pKSA6IHZvaWQgMCA9PT0gbiA/IFMuY3NzKGUsIHQsIGkpIDogUy5zdHlsZShlLCB0LCBuLCBpKSB9LCBzLCBuID8gZSA6IHZvaWQgMCwgbikgfSB9KSB9KSwgUy5lYWNoKFsiYWpheFN0YXJ0IiwgImFqYXhTdG9wIiwgImFqYXhDb21wbGV0ZSIsICJhamF4RXJyb3IiLCAiYWpheFN1Y2Nlc3MiLCAiYWpheFNlbmQiXSwgZnVuY3Rpb24gKGUsIHQpIHsgUy5mblt0XSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiB0aGlzLm9uKHQsIGUpIH0gfSksIFMuZm4uZXh0ZW5kKHsgYmluZDogZnVuY3Rpb24gKGUsIHQsIG4pIHsgcmV0dXJuIHRoaXMub24oZSwgbnVsbCwgdCwgbikgfSwgdW5iaW5kOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5vZmYoZSwgbnVsbCwgdCkgfSwgZGVsZWdhdGU6IGZ1bmN0aW9uIChlLCB0LCBuLCByKSB7IHJldHVybiB0aGlzLm9uKHQsIGUsIG4sIHIpIH0sIHVuZGVsZWdhdGU6IGZ1bmN0aW9uIChlLCB0LCBuKSB7IHJldHVybiAxID09PSBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy5vZmYoZSwgIioqIikgOiB0aGlzLm9mZih0LCBlIHx8ICIqKiIsIG4pIH0sIGhvdmVyOiBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodCB8fCBlKSB9IH0pLCBTLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksIGZ1bmN0aW9uIChlLCBuKSB7IFMuZm5bbl0gPSBmdW5jdGlvbiAoZSwgdCkgeyByZXR1cm4gMCA8IGFyZ3VtZW50cy5sZW5ndGggPyB0aGlzLm9uKG4sIG51bGwsIGUsIHQpIDogdGhpcy50cmlnZ2VyKG4pIH0gfSk7IHZhciBYdCA9IC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZzsgUy5wcm94eSA9IGZ1bmN0aW9uIChlLCB0KSB7IHZhciBuLCByLCBpOyBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQgJiYgKG4gPSBlW3RdLCB0ID0gZSwgZSA9IG4pLCBtKGUpKSByZXR1cm4gciA9IHMuY2FsbChhcmd1bWVudHMsIDIpLCAoaSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGUuYXBwbHkodCB8fCB0aGlzLCByLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpIH0pLmd1aWQgPSBlLmd1aWQgPSBlLmd1aWQgfHwgUy5ndWlkKyssIGkgfSwgUy5ob2xkUmVhZHkgPSBmdW5jdGlvbiAoZSkgeyBlID8gUy5yZWFkeVdhaXQrKyA6IFMucmVhZHkoITApIH0sIFMuaXNBcnJheSA9IEFycmF5LmlzQXJyYXksIFMucGFyc2VKU09OID0gSlNPTi5wYXJzZSwgUy5ub2RlTmFtZSA9IEEsIFMuaXNGdW5jdGlvbiA9IG0sIFMuaXNXaW5kb3cgPSB4LCBTLmNhbWVsQ2FzZSA9IFgsIFMudHlwZSA9IHcsIFMubm93ID0gRGF0ZS5ub3csIFMuaXNOdW1lcmljID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBTLnR5cGUoZSk7IHJldHVybiAoIm51bWJlciIgPT09IHQgfHwgInN0cmluZyIgPT09IHQpICYmICFpc05hTihlIC0gcGFyc2VGbG9hdChlKSkgfSwgUy50cmltID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT0gZSA/ICIiIDogKGUgKyAiIikucmVwbGFjZShYdCwgIiIpIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kICYmIGRlZmluZSgianF1ZXJ5IiwgW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFMgfSk7IHZhciBWdCA9IEMualF1ZXJ5LCBHdCA9IEMuJDsgcmV0dXJuIFMubm9Db25mbGljdCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBDLiQgPT09IFMgJiYgKEMuJCA9IEd0KSwgZSAmJiBDLmpRdWVyeSA9PT0gUyAmJiAoQy5qUXVlcnkgPSBWdCksIFMgfSwgInVuZGVmaW5lZCIgPT0gdHlwZW9mIGUgJiYgKEMualF1ZXJ5ID0gQy4kID0gUyksIFMgfSk7"}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_about_shape02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.049Z","timestamp":1785159465049,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_about_shape02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 9660\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":9660,"size_decoded":9925,"mime_type":"image/png","magic":"PNG image data, 108 x 108, 8-bit/color RGBA, non-interlaced","md5":"123de56b8bb02c45ae8473b4881b849b","sha1":"fd562d93fec7eb1936603497d881531aa68c28a6","sha256":"2d2ab799e64e40ca768ff55dc1b10d32f0daa9499869a6702f8b6b03874c6d29","sha512":"467adbb6ee550ca629002f0bb850a24ed354518be5a21fcc2ae62a134ff696c084fc2ebef981967bee4829e02f37527b8afe20a8cca431a966fd59d677d6b83d","ssdeep":"192:A42SwypOYfVmovvlgfD5ToigLXgiXOsWUtnN2NotvLEjFcv9eJt8F6SXeBA9CBF1:A4ZwypbfV1UD72tesWU8o1LDv9e/8HCd","tlshash":"4c12b01b4cd8411cf3d9317266109f212dc80d268b51dafed5c279e3ac81abb9b19df6","first_seen":"2025-04-12T15:34:26.848149Z","last_seen":"2026-07-27T13:38:47.754722Z","times_seen":17,"resource_available":false,"data":"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"}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":45,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.parallaxScroll.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.810Z","timestamp":1785159464810,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/jquery.parallaxScroll.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1867\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":9713,"size_decoded":2104,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"fe94d7ccb9fb6cbde8f3b3aaac1ace80","sha1":"ab53b50a877697c9151555726498ccbd357e7356","sha256":"325361f8437acd94b482a6a246e82fece26511e455ab3c44adfcc1a6765d9429","sha512":"80d012af500031f05f135be31b4f9d511aba4e3f03511f0d438e91c7d07b0528abeed4aa811df3c8519c42ffff4bb89eb23f32d22a3b22080806eede0f746965","ssdeep":"192:ztVW0ChASsOOqki3LyByw7FAuKLPr0aqB1yD:fXChCOOqkiWbyPx","tlshash":"3c12fc04e4930522e5e771358f5e029eb72eb5079265d8287b0ddacd4f80b3493e8fe6","first_seen":"2025-04-12T15:34:26.833919Z","last_seen":"2026-07-27T13:38:47.778094Z","times_seen":73,"resource_available":true,"data":"Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgID0gICAgICAgICBQYXJhbGxheCBTY3JvbGwgQWN0aXZlICAgICAgPQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwooZnVuY3Rpb24oJCkgewogICAgInVzZSBzdHJpY3QiOwoKICAgIHZhciBQYXJhbGxheFNjcm9sbCA9IHsKICAgICAgICAvKiBQVUJMSUMgVkFSSUFCTEVTICovCiAgICAgICAgc2hvd0xvZ3M6IGZhbHNlLAogICAgICAgIHJvdW5kOiAxMDAwLAoKICAgICAgICAvKiBQVUJMSUMgRlVOQ1RJT05TICovCiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMuX2xvZygiaW5pdCIpOwogICAgICAgICAgICBpZiAodGhpcy5faW5pdGVkKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9sb2coIkFscmVhZHkgSW5pdGVkIik7CiAgICAgICAgICAgICAgICB0aGlzLl9pbml0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8CiAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwKICAgICAgICAgICAgICAgICAgICB3aW5kb3cub1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCAvKiBmdW5jdGlvbiAqLyBjYWxsYmFjaywgLyogRE9NRWxlbWVudCAqLyBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAgICAgIHRoaXMuX29uU2Nyb2xsKHRydWUpOwogICAgICAgIH0sCgogICAgICAgIC8qIFBSSVZBVEUgVkFSSUFCTEVTICovCiAgICAgICAgX2luaXRlZDogZmFsc2UsCiAgICAgICAgX3Byb3BlcnRpZXM6IFsneCcsICd5JywgJ3onLCAncm90YXRlWCcsICdyb3RhdGVZJywgJ3JvdGF0ZVonLCAnc2NhbGVYJywgJ3NjYWxlWScsICdzY2FsZVonLCAnc2NhbGUnXSwKICAgICAgICBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBudWxsLAoKICAgICAgICAvKiBQUklWQVRFIEZVTkNUSU9OUyAqLwogICAgICAgIF9sb2c6IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0xvZ3MpIGNvbnNvbGUubG9nKCJQYXJhbGxheCBTY3JvbGwgLyAiICsgbWVzc2FnZSk7CiAgICAgICAgfSwKICAgICAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKG5vU21vb3RoKSB7CiAgICAgICAgICAgIHZhciBzY3JvbGwgPSAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKTsKICAgICAgICAgICAgdmFyIHdpbmRvd0hlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKICAgICAgICAgICAgdGhpcy5fbG9nKCJvblNjcm9sbCAiICsgc2Nyb2xsKTsKICAgICAgICAgICAgJCgiW2RhdGEtcGFyYWxsYXhdIikuZWFjaCgkLnByb3h5KGZ1bmN0aW9uKGluZGV4LCBlbCkgewogICAgICAgICAgICAgICAgdmFyICRlbCA9ICQoZWwpOwogICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsKICAgICAgICAgICAgICAgIHZhciBhcHBseVByb3BlcnRpZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHZhciBzdHlsZSA9ICRlbC5kYXRhKCJzdHlsZSIpOwogICAgICAgICAgICAgICAgaWYgKHN0eWxlID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIHN0eWxlID0gJGVsLmF0dHIoInN0eWxlIikgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAgJGVsLmRhdGEoInN0eWxlIiwgc3R5bGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGRhdGFzID0gWyRlbC5kYXRhKCJwYXJhbGxheCIpXTsKICAgICAgICAgICAgICAgIHZhciBpRGF0YTsKICAgICAgICAgICAgICAgIGZvciAoaURhdGEgPSAyOzsgaURhdGErKykgewogICAgICAgICAgICAgICAgICAgIGlmICgkZWwuZGF0YSgicGFyYWxsYXgiICsgaURhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzLnB1c2goJGVsLmRhdGEoInBhcmFsbGF4LSIgKyBpRGF0YSkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBkYXRhc0xlbmd0aCA9IGRhdGFzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGZvciAoaURhdGEgPSAwOyBpRGF0YSA8IGRhdGFzTGVuZ3RoOyBpRGF0YSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBkYXRhc1tpRGF0YV07CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbEZyb20gPSBkYXRhWyJmcm9tLXNjcm9sbCJdOwogICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxGcm9tID09IHVuZGVmaW5lZCkgc2Nyb2xsRnJvbSA9IE1hdGgubWF4KDAsICQoZWwpLm9mZnNldCgpLnRvcCAtIHdpbmRvd0hlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRnJvbSA9IHNjcm9sbEZyb20gfCAwOwogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxEaXN0YW5jZSA9IGRhdGFbImRpc3RhbmNlIl07CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbFRvID0gZGF0YVsidG8tc2Nyb2xsIl07CiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbERpc3RhbmNlID09IHVuZGVmaW5lZCAmJiBzY3JvbGxUbyA9PSB1bmRlZmluZWQpIHNjcm9sbERpc3RhbmNlID0gd2luZG93SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIHNjcm9sbERpc3RhbmNlID0gTWF0aC5tYXgoc2Nyb2xsRGlzdGFuY2UgfCAwLCAxKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZWFzaW5nID0gZGF0YVsiZWFzaW5nIl07CiAgICAgICAgICAgICAgICAgICAgdmFyIGVhc2luZ1JldHVybiA9IGRhdGFbImVhc2luZy1yZXR1cm4iXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZWFzaW5nID09IHVuZGVmaW5lZCB8fCAhJC5lYXNpbmcgfHwgISQuZWFzaW5nW2Vhc2luZ10pIGVhc2luZyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVhc2luZ1JldHVybiA9PSB1bmRlZmluZWQgfHwgISQuZWFzaW5nIHx8ICEkLmVhc2luZ1tlYXNpbmdSZXR1cm5dKSBlYXNpbmdSZXR1cm4gPSBlYXNpbmc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVhc2luZykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG90YWxUaW1lID0gZGF0YVsiZHVyYXRpb24iXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvdGFsVGltZSA9PSB1bmRlZmluZWQpIHRvdGFsVGltZSA9IHNjcm9sbERpc3RhbmNlOwogICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFRpbWUgPSBNYXRoLm1heCh0b3RhbFRpbWUgfCAwLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsVGltZVJldHVybiA9IGRhdGFbImR1cmF0aW9uLXJldHVybiJdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodG90YWxUaW1lUmV0dXJuID09IHVuZGVmaW5lZCkgdG90YWxUaW1lUmV0dXJuID0gdG90YWxUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxEaXN0YW5jZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZSA9ICRlbC5kYXRhKCJjdXJyZW50LXRpbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lID09IHVuZGVmaW5lZCkgY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPT0gdW5kZWZpbmVkKSBzY3JvbGxUbyA9IHNjcm9sbEZyb20gKyBzY3JvbGxEaXN0YW5jZTsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IHNjcm9sbFRvIHwgMDsKICAgICAgICAgICAgICAgICAgICB2YXIgc21vb3RobmVzcyA9IGRhdGFbInNtb290aG5lc3MiXTsKICAgICAgICAgICAgICAgICAgICBpZiAoc21vb3RobmVzcyA9PSB1bmRlZmluZWQpIHNtb290aG5lc3MgPSAzMDsKICAgICAgICAgICAgICAgICAgICBzbW9vdGhuZXNzID0gc21vb3RobmVzcyB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKG5vU21vb3RoIHx8IHNtb290aG5lc3MgPT0gMCkgc21vb3RobmVzcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgc21vb3RobmVzcyA9IHNtb290aG5lc3MgfCAwOwogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxDdXJyZW50ID0gc2Nyb2xsOwogICAgICAgICAgICAgICAgICAgIHNjcm9sbEN1cnJlbnQgPSBNYXRoLm1heChzY3JvbGxDdXJyZW50LCBzY3JvbGxGcm9tKTsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxDdXJyZW50ID0gTWF0aC5taW4oc2Nyb2xsQ3VycmVudCwgc2Nyb2xsVG8pOwogICAgICAgICAgICAgICAgICAgIGlmIChlYXNpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbC5kYXRhKCJzZW5zIikgPT0gdW5kZWZpbmVkKSAkZWwuZGF0YSgic2VucyIsICJiYWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxDdXJyZW50ID4gc2Nyb2xsRnJvbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbC5kYXRhKCJzZW5zIikgPT0gImJhY2siKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRpbWUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbC5kYXRhKCJzZW5zIiwgImdvIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbEN1cnJlbnQgPCBzY3JvbGxUbykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbC5kYXRhKCJzZW5zIikgPT0gImdvIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwuZGF0YSgic2VucyIsICJiYWNrIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vU21vb3RoKSBjdXJyZW50VGltZSA9IHRvdGFsVGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsLmRhdGEoImN1cnJlbnQtdGltZSIsIGN1cnJlbnRUaW1lKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllcy5tYXAoJC5wcm94eShmdW5jdGlvbihwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJvcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0byA9IGRhdGFbcHJvcF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0byA9PSB1bmRlZmluZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT0gInNjYWxlIiB8fCBwcm9wID09ICJzY2FsZVgiIHx8IHByb3AgPT0gInNjYWxlWSIgfHwgcHJvcCA9PSAic2NhbGVaIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFByb3AgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPSB0byB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSAkZWwuZGF0YSgiXyIgKyBwcm9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgPT0gdW5kZWZpbmVkKSBwcmV2ID0gZGVmYXVsdFByb3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gKCh0byAtIGRlZmF1bHRQcm9wKSAqICgoc2Nyb2xsQ3VycmVudCAtIHNjcm9sbEZyb20pIC8gKHNjcm9sbFRvIC0gc2Nyb2xsRnJvbSkpKSArIGRlZmF1bHRQcm9wOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gcHJldiArIChuZXh0IC0gcHJldikgLyBzbW9vdGhuZXNzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWFzaW5nICYmIGN1cnJlbnRUaW1lID4gMCAmJiBjdXJyZW50VGltZSA8PSB0b3RhbFRpbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gZGVmYXVsdFByb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVsLmRhdGEoInNlbnMiKSA9PSAiYmFjayIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gdG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPSAtdG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaW5nID0gZWFzaW5nUmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsVGltZSA9IHRvdGFsVGltZVJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICQuZWFzaW5nW2Vhc2luZ10obnVsbCwgY3VycmVudFRpbWUsIGZyb20sIHRvLCB0b3RhbFRpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguY2VpbCh2YWwgKiB0aGlzLnJvdW5kKSAvIHRoaXMucm91bmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT0gcHJldiAmJiBuZXh0ID09IHRvKSB2YWwgPSB0bzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzW3Byb3BdKSBwcm9wZXJ0aWVzW3Byb3BdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1twcm9wXSArPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2ICE9IHByb3BlcnRpZXNbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbC5kYXRhKCJfIiArIHByb3AsIHByb3BlcnRpZXNbcHJvcF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhcHBseVByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1sieiJdICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGVyc3BlY3RpdmUgPSBkYXRhWyJwZXJzcGVjdGl2ZSJdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVyc3BlY3RpdmUgPT0gdW5kZWZpbmVkKSBwZXJzcGVjdGl2ZSA9IDgwMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRwYXJlbnQgPSAkZWwucGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHBhcmVudC5kYXRhKCJzdHlsZSIpKSAkcGFyZW50LmRhdGEoInN0eWxlIiwgJHBhcmVudC5hdHRyKCJzdHlsZSIpIHx8ICIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmVudC5hdHRyKCJzdHlsZSIsICJwZXJzcGVjdGl2ZToiICsgcGVyc3BlY3RpdmUgKyAicHg7IC13ZWJraXQtcGVyc3BlY3RpdmU6IiArIHBlcnNwZWN0aXZlICsgInB4OyAiICsgJHBhcmVudC5kYXRhKCJzdHlsZSIpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbInNjYWxlWCJdID09IHVuZGVmaW5lZCkgcHJvcGVydGllc1sic2NhbGVYIl0gPSAxOwogICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzWyJzY2FsZVkiXSA9PSB1bmRlZmluZWQpIHByb3BlcnRpZXNbInNjYWxlWSJdID0gMTsKICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1sic2NhbGVaIl0gPT0gdW5kZWZpbmVkKSBwcm9wZXJ0aWVzWyJzY2FsZVoiXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbInNjYWxlIl0gIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbInNjYWxlWCJdICo9IHByb3BlcnRpZXNbInNjYWxlIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbInNjYWxlWSJdICo9IHByb3BlcnRpZXNbInNjYWxlIl07CiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbInNjYWxlWiJdICo9IHByb3BlcnRpZXNbInNjYWxlIl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGUzZCA9ICJ0cmFuc2xhdGUzZCgiICsgKHByb3BlcnRpZXNbIngiXSA/IHByb3BlcnRpZXNbIngiXSA6IDApICsgInB4LCAiICsgKHByb3BlcnRpZXNbInkiXSA/IHByb3BlcnRpZXNbInkiXSA6IDApICsgInB4LCAiICsgKHByb3BlcnRpZXNbInoiXSA/IHByb3BlcnRpZXNbInoiXSA6IDApICsgInB4KSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdGF0ZTNkID0gInJvdGF0ZVgoIiArIChwcm9wZXJ0aWVzWyJyb3RhdGVYIl0gPyBwcm9wZXJ0aWVzWyJyb3RhdGVYIl0gOiAwKSArICJkZWcpIHJvdGF0ZVkoIiArIChwcm9wZXJ0aWVzWyJyb3RhdGVZIl0gPyBwcm9wZXJ0aWVzWyJyb3RhdGVZIl0gOiAwKSArICJkZWcpIHJvdGF0ZVooIiArIChwcm9wZXJ0aWVzWyJyb3RhdGVaIl0gPyBwcm9wZXJ0aWVzWyJyb3RhdGVaIl0gOiAwKSArICJkZWcpIjsKICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGUzZCA9ICJzY2FsZVgoIiArIHByb3BlcnRpZXNbInNjYWxlWCJdICsgIikgc2NhbGVZKCIgKyBwcm9wZXJ0aWVzWyJzY2FsZVkiXSArICIpIHNjYWxlWigiICsgcHJvcGVydGllc1sic2NhbGVaIl0gKyAiKSI7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNzc1RyYW5zZm9ybSA9IHRyYW5zbGF0ZTNkICsgIiAiICsgcm90YXRlM2QgKyAiICIgKyBzY2FsZTNkICsgIjsiOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZyhjc3NUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgICAgICRlbC5hdHRyKCJzdHlsZSIsICJ0cmFuc2Zvcm06IiArIGNzc1RyYW5zZm9ybSArICIgLXdlYmtpdC10cmFuc2Zvcm06IiArIGNzc1RyYW5zZm9ybSArICIgIiArIHN0eWxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgdGhpcykpOwogICAgICAgICAgICBpZiAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkgewogICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgkLnByb3h5KHRoaXMuX29uU2Nyb2xsLCB0aGlzLCBmYWxzZSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCQucHJveHkodGhpcy5fb25TY3JvbGwsIHRoaXMsIGZhbHNlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIFBhcmFsbGF4U2Nyb2xsLmluaXQoKTsKfSkoalF1ZXJ5KTs="}},"time_used":26,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":26,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/aos.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.781Z","timestamp":1785159464781,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/aos.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1539\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":26053,"size_decoded":1848,"mime_type":"text/css","magic":"ASCII text, with very long lines (26053), with no line terminators","md5":"847da8fca8060ca1a70f976aab1210b9","sha1":"0557d37454b67f42f2cb101e57e5070fb1193570","sha256":"1aa8845fd06e475aefe733d4e55b36a92fcd487975049c8172341827ac9cc03e","sha512":"d5c2bbf1ad68fa1b7625c696ea0f0e5d8c2aa5ebfdfba1aa3a4cfdc6604df625148489dd2adc7020b19660e4a26ce2a32ec11d8f28d9bd80eafdc67035e6a4d3","ssdeep":"768:CMJihoCcZCOud8G8tKS65wqsZQ1G+dM2cl6iCRotsV84sxIKcv4g01UeEPEQEB4D:CMJihoCcZCOud8G8tKS65wqsZCG+dM25","tlshash":"f0c24b5a7a4cd100bf831b4762df2a0859347588e5301986be3f35ca2cd5ce6b973fa9","first_seen":"2023-04-05T07:18:45Z","last_seen":"2026-08-04T06:46:30.720847Z","times_seen":42781,"resource_available":false,"data":"W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246NTBtc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSI1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjUwbXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjEwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjEwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouMXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjEwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6LjFzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxNTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246LjE1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouMTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyMDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246LjJzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi4yc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyNTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6LjI1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMzAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMzAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4zc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMzAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMzAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjMwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjMwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouM3N9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjM1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjM1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouMzVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIzNTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIzNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMzUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMzUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi4zNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjQwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjQwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouNHN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjQwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjQwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI0MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSI0MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6LjRzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSI0NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSI0NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246LjQ1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNDUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iNDUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjQ1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjQ1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouNDVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSI1MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSI1MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246LjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI1MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSI1MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNTAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iNTAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi41c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iNTUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iNTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi41NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjU1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjU1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI1NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSI1NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6LjU1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iNjAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iNjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi42c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNjAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iNjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjYwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjYwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouNnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjY1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjY1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouNjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI2NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSI2NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNjUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iNjUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi42NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjcwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjcwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouN3N9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjcwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjcwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI3MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSI3MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6LjdzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSI3NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSI3NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Ljc1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iNzUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iNzUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9Ijc1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9Ijc1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouNzVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSI4MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSI4MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246LjhzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI4MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSI4MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iODAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iODAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi44c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iODUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iODUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi44NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9Ijg1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9Ijg1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI4NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSI4NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Ljg1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iOTAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iOTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi45c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iOTAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iOTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjkwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjkwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheTouOXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249Ijk1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249Ijk1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjouOTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSI5NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSI5NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iOTUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iOTUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5Oi45NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjEwMDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxMDAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjFzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMDAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTAwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMDAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTAwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTA1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjEwNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS4wNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEwNTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMDUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEwNTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMDUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuMDVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxMTAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTEwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjFzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMTAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTEwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMTAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTEwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjFzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxMTUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTE1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjE1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTE1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjExNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTE1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjExNTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS4xNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjEyMDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxMjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuMnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEyMDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEyMDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMjAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuMnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjEyNTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxMjUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuMjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMjUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTI1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxMjUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTI1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjI1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTMwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjEzMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS4zc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTMwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjEzMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTMwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjEzMDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS4zc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTM1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjEzNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS4zNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEzNTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMzUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjEzNTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxMzUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuMzVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxNDAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTQwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjRzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNDAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTQwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNDAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTQwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjRzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxNDUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTQ1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjQ1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTQ1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE0NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTQ1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE0NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS40NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjE1MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxNTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE1MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxNTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE1MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxNTAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjE1NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxNTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuNTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNTUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTU1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNTUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTU1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjU1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTYwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjE2MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS42c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTYwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE2MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTYwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE2MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS42c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTY1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjE2NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS42NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE2NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxNjUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE2NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxNjUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuNjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxNzAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTcwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjdzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNzAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTcwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxNzAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTcwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjdzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIxNzUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMTc1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoxLjc1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTc1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE3NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTc1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE3NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS43NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjE4MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxODAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuOHN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE4MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxODAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE4MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxODAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuOHN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjE4NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIxODUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjEuODVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxODUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMTg1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIxODUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMTg1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToxLjg1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTkwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjE5MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS45c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTkwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE5MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMTkwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjE5MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MS45c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMTk1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjE5NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246MS45NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE5NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxOTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjE5NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIxOTUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjEuOTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyMDAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjAwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjAwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIwMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjAwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIwMDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6MnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjIwNTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyMDUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuMDVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMDUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjA1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMDUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjA1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjA1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjEwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjIxMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi4xc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjEwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIxMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjEwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIxMDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi4xc31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjE1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjIxNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi4xNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjIxNTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyMTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjIxNTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyMTUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuMTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyMjAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjIwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjJzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMjAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjIwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMjAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjIwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjJzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyMjUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjI1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjI1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjI1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIyNTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjI1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjIyNTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi4yNXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjIzMDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyMzAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuM3N9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjIzMDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyMzAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjIzMDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyMzAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuM3N9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjIzNTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyMzUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuMzVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMzUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjM1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyMzUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjM1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjM1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjQwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjI0MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi40c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjQwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI0MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjQwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI0MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi40c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjQ1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjI0NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi40NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI0NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNDUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI0NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNDUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuNDVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyNTAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjUwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyNTAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjUwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyNTAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjUwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyNTUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjU1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjU1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjU1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI1NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjU1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI1NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi41NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjI2MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyNjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuNnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI2MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNjAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI2MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNjAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuNnN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjI2NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyNjUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuNjVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyNjUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjY1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyNjUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjY1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjY1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjcwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjI3MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi43c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjcwMCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI3MDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjcwMCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI3MDAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi43c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMjc1MCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjI3NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246Mi43NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI3NTAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNzUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI3NTAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyNzUwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuNzVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyODAwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjgwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjhzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyODAwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjgwMCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyODAwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjgwMCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjhzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWR1cmF0aW9uPSIyODUwIl0sYm9keVtkYXRhLWFvcy1kdXJhdGlvbj0iMjg1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kdXJhdGlvbjoyLjg1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjg1MCJdLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI4NTAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZGVsYXk6MH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kZWxheT0iMjg1MCJdLmFvcy1hbmltYXRlLGJvZHlbZGF0YS1hb3MtZGVsYXk9IjI4NTAiXSBbZGF0YS1hb3NdLmFvcy1hbmltYXRle3RyYW5zaXRpb24tZGVsYXk6Mi44NXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjI5MDAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyOTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuOXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI5MDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyOTAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjI5MDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIyOTAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjIuOXN9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZHVyYXRpb249IjI5NTAiXSxib2R5W2RhdGEtYW9zLWR1cmF0aW9uPSIyOTUwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWR1cmF0aW9uOjIuOTVzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyOTUwIl0sYm9keVtkYXRhLWFvcy1kZWxheT0iMjk1MCJdIFtkYXRhLWFvc117dHJhbnNpdGlvbi1kZWxheTowfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWRlbGF5PSIyOTUwIl0uYW9zLWFuaW1hdGUsYm9keVtkYXRhLWFvcy1kZWxheT0iMjk1MCJdIFtkYXRhLWFvc10uYW9zLWFuaW1hdGV7dHJhbnNpdGlvbi1kZWxheToyLjk1c31bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1kdXJhdGlvbj0iMzAwMCJdLGJvZHlbZGF0YS1hb3MtZHVyYXRpb249IjMwMDAiXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tZHVyYXRpb246M3N9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjMwMDAiXSxib2R5W2RhdGEtYW9zLWRlbGF5PSIzMDAwIl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLWRlbGF5OjB9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZGVsYXk9IjMwMDAiXS5hb3MtYW5pbWF0ZSxib2R5W2RhdGEtYW9zLWRlbGF5PSIzMDAwIl0gW2RhdGEtYW9zXS5hb3MtYW5pbWF0ZXt0cmFuc2l0aW9uLWRlbGF5OjNzfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1saW5lYXJdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWxpbmVhcl0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjI1LC4yNSwuNzUsLjc1KX1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZV0sYm9keVtkYXRhLWFvcy1lYXNpbmc9ZWFzZV0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1lYXNlLWluXSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLWluXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW59W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0XSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLW91dF0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dH1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1vdXRdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0XSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0fVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1lYXNlLWluLWJhY2tdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tYmFja10gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjYsLS4yOCwuNzM1LC4wNDUpfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1lYXNlLW91dC1iYWNrXSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLW91dC1iYWNrXSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEuMjc1KX1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1vdXQtYmFja10sYm9keVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1vdXQtYmFja10gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjY4LC0uNTUsLjI2NSwxLjU1KX1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1zaW5lXSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLWluLXNpbmVdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40NywwLC43NDUsLjcxNSl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0LXNpbmVdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0LXNpbmVdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4zOSwuNTc1LC41NjUsMSl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LXNpbmVdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LXNpbmVdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40NDUsLjA1LC41NSwuOTUpfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1lYXNlLWluLXF1YWRdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tcXVhZF0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wODUsLjY4LC41Myl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0LXF1YWRdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0LXF1YWRdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yNSwuNDYsLjQ1LC45NCl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LXF1YWRdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LXF1YWRdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40NTUsLjAzLC41MTUsLjk1NSl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tY3ViaWNdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tY3ViaWNdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDg1LC42OCwuNTMpfVtkYXRhLWFvc11bZGF0YS1hb3NdW2RhdGEtYW9zLWVhc2luZz1lYXNlLW91dC1jdWJpY10sYm9keVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1vdXQtY3ViaWNdIFtkYXRhLWFvc117dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yNSwuNDYsLjQ1LC45NCl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LWN1YmljXSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLWluLW91dC1jdWJpY10gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQ1NSwuMDMsLjUxNSwuOTU1KX1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1xdWFydF0sYm9keVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1xdWFydF0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wODUsLjY4LC41Myl9W2RhdGEtYW9zXVtkYXRhLWFvc11bZGF0YS1hb3MtZWFzaW5nPWVhc2Utb3V0LXF1YXJ0XSxib2R5W2RhdGEtYW9zLWVhc2luZz1lYXNlLW91dC1xdWFydF0gW2RhdGEtYW9zXXt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjI1LC40NiwuNDUsLjk0KX1bZGF0YS1hb3NdW2RhdGEtYW9zXVtkYXRhLWFvcy1lYXNpbmc9ZWFzZS1pbi1vdXQtcXVhcnRdLGJvZHlbZGF0YS1hb3MtZWFzaW5nPWVhc2UtaW4tb3V0LXF1YXJ0XSBbZGF0YS1hb3Nde3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNDU1LC4wMywuNTE1LC45NTUpfVtkYXRhLWFvc149ZmFkZV1bZGF0YS1hb3NePWZhZGVde29wYWNpdHk6MDt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksdHJhbnNmb3JtfVtkYXRhLWFvc149ZmFkZV1bZGF0YS1hb3NePWZhZGVdLmFvcy1hbmltYXRle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1bZGF0YS1hb3M9ZmFkZS11cF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwcHgsMCl9W2RhdGEtYW9zPWZhZGUtZG93bl17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMHB4LDApfVtkYXRhLWFvcz1mYWRlLXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMHB4LDAsMCl9W2RhdGEtYW9zPWZhZGUtbGVmdF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMHB4LDAsMCl9W2RhdGEtYW9zPWZhZGUtdXAtcmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwcHgsMTAwcHgsMCl9W2RhdGEtYW9zPWZhZGUtdXAtbGVmdF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMHB4LDEwMHB4LDApfVtkYXRhLWFvcz1mYWRlLWRvd24tcmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwcHgsLTEwMHB4LDApfVtkYXRhLWFvcz1mYWRlLWRvd24tbGVmdF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMHB4LC0xMDBweCwwKX1bZGF0YS1hb3NePXpvb21dW2RhdGEtYW9zXj16b29tXXtvcGFjaXR5OjA7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5LHRyYW5zZm9ybX1bZGF0YS1hb3NePXpvb21dW2RhdGEtYW9zXj16b29tXS5hb3MtYW5pbWF0ZXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCkgc2NhbGUoMSl9W2RhdGEtYW9zPXpvb20taW5de3RyYW5zZm9ybTpzY2FsZSguNil9W2RhdGEtYW9zPXpvb20taW4tdXBde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMHB4LDApIHNjYWxlKC42KX1bZGF0YS1hb3M9em9vbS1pbi1kb3duXXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwcHgsMCkgc2NhbGUoLjYpfVtkYXRhLWFvcz16b29tLWluLXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMHB4LDAsMCkgc2NhbGUoLjYpfVtkYXRhLWFvcz16b29tLWluLWxlZnRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDBweCwwLDApIHNjYWxlKC42KX1bZGF0YS1hb3M9em9vbS1vdXRde3RyYW5zZm9ybTpzY2FsZSgxLjIpfVtkYXRhLWFvcz16b29tLW91dC11cF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwcHgsMCkgc2NhbGUoMS4yKX1bZGF0YS1hb3M9em9vbS1vdXQtZG93bl17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMHB4LDApIHNjYWxlKDEuMil9W2RhdGEtYW9zPXpvb20tb3V0LXJpZ2h0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMHB4LDAsMCkgc2NhbGUoMS4yKX1bZGF0YS1hb3M9em9vbS1vdXQtbGVmdF17dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMHB4LDAsMCkgc2NhbGUoMS4yKX1bZGF0YS1hb3NePXNsaWRlXVtkYXRhLWFvc149c2xpZGVde3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtfVtkYXRhLWFvc149c2xpZGVdW2RhdGEtYW9zXj1zbGlkZV0uYW9zLWFuaW1hdGV7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9W2RhdGEtYW9zPXNsaWRlLXVwXXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApfVtkYXRhLWFvcz1zbGlkZS1kb3duXXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX1bZGF0YS1hb3M9c2xpZGUtcmlnaHRde3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApfVtkYXRhLWFvcz1zbGlkZS1sZWZ0XXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfVtkYXRhLWFvc149ZmxpcF1bZGF0YS1hb3NePWZsaXBde2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtfVtkYXRhLWFvcz1mbGlwLWxlZnRde3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgyNTAwcHgpIHJvdGF0ZVkoLTEwMGRlZyl9W2RhdGEtYW9zPWZsaXAtbGVmdF0uYW9zLWFuaW1hdGV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDI1MDBweCkgcm90YXRlWSgwKX1bZGF0YS1hb3M9ZmxpcC1yaWdodF17dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDI1MDBweCkgcm90YXRlWSgxMDBkZWcpfVtkYXRhLWFvcz1mbGlwLXJpZ2h0XS5hb3MtYW5pbWF0ZXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMjUwMHB4KSByb3RhdGVZKDApfVtkYXRhLWFvcz1mbGlwLXVwXXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMjUwMHB4KSByb3RhdGVYKC0xMDBkZWcpfVtkYXRhLWFvcz1mbGlwLXVwXS5hb3MtYW5pbWF0ZXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMjUwMHB4KSByb3RhdGVYKDApfVtkYXRhLWFvcz1mbGlwLWRvd25de3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgyNTAwcHgpIHJvdGF0ZVgoMTAwZGVnKX1bZGF0YS1hb3M9ZmxpcC1kb3duXS5hb3MtYW5pbWF0ZXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMjUwMHB4KSByb3RhdGVYKDApfQ=="}},"time_used":31,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/pricing_shape01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.058Z","timestamp":1785159465058,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/pricing_shape01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 12760\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":12760,"size_decoded":13026,"mime_type":"image/png","magic":"PNG image data, 380 x 316, 8-bit/color RGBA, non-interlaced","md5":"312f2e0eca523d5f1c0b8e72dbe1f4a0","sha1":"56dd6cfdb27910c3227bbb817595588d8dda79fa","sha256":"c44c56e0f4e4a66b61aae83fe535a23b999b06a13078ed68891db78ee1fe3744","sha512":"a683a210bcfabb5c63dbf36b33ce316737d6c35168a297927064aa9673b3191011292bc4e250795f72af26d7311382e0bfdfa3a8719ae83179540888fe49b880","ssdeep":"384:6oVJu1pG+dDBLQr8PdFl/Sw2bhCX39ddvi:6dCmdFl/H2dCH9za","tlshash":"f542bede57a680c0ece751b97bc90f01dcb5b078b90aa1a16e4cb0a7d0fc0e90665784","first_seen":"2026-02-14T04:59:18.794896Z","last_seen":"2026-07-27T13:38:47.750432Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":77,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":55,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/swiper-bundle.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.811Z","timestamp":1785159464811,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/swiper-bundle.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 35914\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":141278,"size_decoded":36152,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (65283)","md5":"512a32a6be6d9bd1da397272332fd757","sha1":"5e22ee0381b065de9860ace25b07e69358609652","sha256":"ac5eb91e15d457f314be461ef50a422bc1e381e4783ce1ad3ee30bc9bf8cab93","sha512":"1016c1bc09008414a46e1757d95b96bcfd29832d0cd21b085e7e462978850a2db5a8e0a8b9f33a3c5e39caa8b32e8ba0348128e9fe72dbbed28055702095aa5c","ssdeep":"3072:4nwnTVRLCBBUyMwgSpADH7BcVOsjqq3bwF:Iwn5ZPyMwgSpADH7BcVOsjqq3bK","tlshash":"83d3188db364b2a151e73256539ed10263b65845b80ac5a430b68cd7ac7de8c03bfefd","first_seen":"2025-12-22T07:55:46.860324Z","last_seen":"2026-07-27T13:38:47.769741Z","times_seen":6,"resource_available":true,"data":"LyoqCiAqIFN3aXBlciA2LjUuMAogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwczovL3N3aXBlcmpzLmNvbQogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDIxIFZsYWRpbWlyIEtoYXJsYW1waWRpCiAqCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQogKgogKiBSZWxlYXNlZCBvbjogTWFyY2ggNSwgMjAyMQogKi8KCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLlN3aXBlcj10KCl9KHRoaXMsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIGk9dFthXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1mdW5jdGlvbiB0KCl7cmV0dXJuKHQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGE9YXJndW1lbnRzW3RdO2Zvcih2YXIgaSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGkpJiYoZVtpXT1hW2ldKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiY29uc3RydWN0b3IiaW4gZSYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBpKGUsdCl7dm9pZCAwPT09ZSYmKGU9e30pLHZvaWQgMD09PXQmJih0PXt9KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihzKXt2b2lkIDA9PT1lW3NdP2Vbc109dFtzXTphKHRbc10pJiZhKGVbc10pJiZPYmplY3Qua2V5cyh0W3NdKS5sZW5ndGg+MCYmaShlW3NdLHRbc10pfSkpfXZhciBzPXtib2R5Ont9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oKXt9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oKXt9LGFjdGl2ZUVsZW1lbnQ6e2JsdXI6ZnVuY3Rpb24oKXt9LG5vZGVOYW1lOiIifSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sZ2V0RWxlbWVudEJ5SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sY3JlYXRlRXZlbnQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5pdEV2ZW50OmZ1bmN0aW9uKCl7fX19LGNyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Y2hpbGRyZW46W10sY2hpbGROb2RlczpbXSxzdHlsZTp7fSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oKXt9LGdldEVsZW1lbnRzQnlUYWdOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuW119fX0sY3JlYXRlRWxlbWVudE5TOmZ1bmN0aW9uKCl7cmV0dXJue319LGltcG9ydE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sbG9jYXRpb246e2hhc2g6IiIsaG9zdDoiIixob3N0bmFtZToiIixocmVmOiIiLG9yaWdpbjoiIixwYXRobmFtZToiIixwcm90b2NvbDoiIixzZWFyY2g6IiJ9fTtmdW5jdGlvbiByKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp7fTtyZXR1cm4gaShlLHMpLGV9dmFyIG49e2RvY3VtZW50OnMsbmF2aWdhdG9yOnt1c2VyQWdlbnQ6IiJ9LGxvY2F0aW9uOntoYXNoOiIiLGhvc3Q6IiIsaG9zdG5hbWU6IiIsaHJlZjoiIixvcmlnaW46IiIscGF0aG5hbWU6IiIscHJvdG9jb2w6IiIsc2VhcmNoOiIifSxoaXN0b3J5OntyZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LHB1c2hTdGF0ZTpmdW5jdGlvbigpe30sZ286ZnVuY3Rpb24oKXt9LGJhY2s6ZnVuY3Rpb24oKXt9fSxDdXN0b21FdmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKCl7fSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKCl7fSxnZXRDb21wdXRlZFN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJue2dldFByb3BlcnR5VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIn19fSxJbWFnZTpmdW5jdGlvbigpe30sRGF0ZTpmdW5jdGlvbigpe30sc2NyZWVuOnt9LHNldFRpbWVvdXQ6ZnVuY3Rpb24oKXt9LGNsZWFyVGltZW91dDpmdW5jdGlvbigpe30sbWF0Y2hNZWRpYTpmdW5jdGlvbigpe3JldHVybnt9fSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBzZXRUaW1lb3V0PyhlKCksbnVsbCk6c2V0VGltZW91dChlLDApfSxjYW5jZWxBbmltYXRpb25GcmFtZTpmdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIHNldFRpbWVvdXQmJmNsZWFyVGltZW91dChlKX19O2Z1bmN0aW9uIGwoKXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307cmV0dXJuIGkoZSxuKSxlfWZ1bmN0aW9uIG8oZSl7cmV0dXJuKG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4oZD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gcCgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGMoZSx0LGEpe3JldHVybihjPXAoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbihlLHQsYSl7dmFyIGk9W251bGxdO2kucHVzaC5hcHBseShpLHQpO3ZhciBzPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGUsaSkpO3JldHVybiBhJiZkKHMsYS5wcm90b3R5cGUpLHN9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdShlKXt2YXIgdD0iZnVuY3Rpb24iPT10eXBlb2YgTWFwP25ldyBNYXA6dm9pZCAwO3JldHVybih1PWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwoYT1lLC0xPT09RnVuY3Rpb24udG9TdHJpbmcuY2FsbChhKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikpKXJldHVybiBlO3ZhciBhO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7aWYodm9pZCAwIT09dCl7aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO3Quc2V0KGUsaSl9ZnVuY3Rpb24gaSgpe3JldHVybiBjKGUsYXJndW1lbnRzLG8odGhpcykuY29uc3RydWN0b3IpfXJldHVybiBpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6aSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxkKGksZSl9KShlKX12YXIgaD1mdW5jdGlvbihlKXt2YXIgdCxhO2Z1bmN0aW9uIGkodCl7dmFyIGEsaSxzO3JldHVybiBhPWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQodCkpfHx0aGlzLGk9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShhKSxzPWkuX19wcm90b19fLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJfX3Byb3RvX18iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUpe3MuX19wcm90b19fPWV9fSksYX1yZXR1cm4gYT1lLCh0PWkpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPWEsaX0odShBcnJheSkpO2Z1bmN0aW9uIHYoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciB0PVtdO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZSk/dC5wdXNoLmFwcGx5KHQsdihlKSk6dC5wdXNoKGUpfSkpLHR9ZnVuY3Rpb24gZihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZSx0KX1mdW5jdGlvbiBtKGUsdCl7dmFyIGE9bCgpLGk9cigpLHM9W107aWYoIXQmJmUgaW5zdGFuY2VvZiBoKXJldHVybiBlO2lmKCFlKXJldHVybiBuZXcgaChzKTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBuPWUudHJpbSgpO2lmKG4uaW5kZXhPZigiPCIpPj0wJiZuLmluZGV4T2YoIj4iKT49MCl7dmFyIG89ImRpdiI7MD09PW4uaW5kZXhPZigiPGxpIikmJihvPSJ1bCIpLDA9PT1uLmluZGV4T2YoIjx0ciIpJiYobz0idGJvZHkiKSwwIT09bi5pbmRleE9mKCI8dGQiKSYmMCE9PW4uaW5kZXhPZigiPHRoIil8fChvPSJ0ciIpLDA9PT1uLmluZGV4T2YoIjx0Ym9keSIpJiYobz0idGFibGUiKSwwPT09bi5pbmRleE9mKCI8b3B0aW9uIikmJihvPSJzZWxlY3QiKTt2YXIgZD1pLmNyZWF0ZUVsZW1lbnQobyk7ZC5pbm5lckhUTUw9bjtmb3IodmFyIHA9MDtwPGQuY2hpbGROb2Rlcy5sZW5ndGg7cCs9MSlzLnB1c2goZC5jaGlsZE5vZGVzW3BdKX1lbHNlIHM9ZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuW2VdO2Zvcih2YXIgYT1bXSxpPXQucXVlcnlTZWxlY3RvckFsbChlKSxzPTA7czxpLmxlbmd0aDtzKz0xKWEucHVzaChpW3NdKTtyZXR1cm4gYX0oZS50cmltKCksdHx8aSl9ZWxzZSBpZihlLm5vZGVUeXBlfHxlPT09YXx8ZT09PWkpcy5wdXNoKGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7aWYoZSBpbnN0YW5jZW9mIGgpcmV0dXJuIGU7cz1lfXJldHVybiBuZXcgaChmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSs9MSktMT09PXQuaW5kZXhPZihlW2FdKSYmdC5wdXNoKGVbYV0pO3JldHVybiB0fShzKSl9bS5mbj1oLnByb3RvdHlwZTt2YXIgZyxiLHcseT17YWRkQ2xhc3M6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxhPTA7YTxlO2ErKyl0W2FdPWFyZ3VtZW50c1thXTt2YXIgaT12KHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiICIpfSkpKTtyZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdDsodD1lLmNsYXNzTGlzdCkuYWRkLmFwcGx5KHQsaSl9KSksdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxhPTA7YTxlO2ErKyl0W2FdPWFyZ3VtZW50c1thXTt2YXIgaT12KHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiICIpfSkpKTtyZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdDsodD1lLmNsYXNzTGlzdCkucmVtb3ZlLmFwcGx5KHQsaSl9KSksdGhpc30saGFzQ2xhc3M6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxhPTA7YTxlO2ErKyl0W2FdPWFyZ3VtZW50c1thXTt2YXIgaT12KHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiICIpfSkpKTtyZXR1cm4gZih0aGlzLChmdW5jdGlvbihlKXtyZXR1cm4gaS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5jb250YWlucyh0KX0pKS5sZW5ndGg+MH0pKS5sZW5ndGg+MH0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxhPTA7YTxlO2ErKyl0W2FdPWFyZ3VtZW50c1thXTt2YXIgaT12KHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiICIpfSkpKTt0aGlzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5jbGFzc0xpc3QudG9nZ2xlKHQpfSkpfSkpfSxhdHRyOmZ1bmN0aW9uKGUsdCl7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gdGhpc1swXT90aGlzWzBdLmdldEF0dHJpYnV0ZShlKTp2b2lkIDA7Zm9yKHZhciBhPTA7YTx0aGlzLmxlbmd0aDthKz0xKWlmKDI9PT1hcmd1bWVudHMubGVuZ3RoKXRoaXNbYV0uc2V0QXR0cmlidXRlKGUsdCk7ZWxzZSBmb3IodmFyIGkgaW4gZSl0aGlzW2FdW2ldPWVbaV0sdGhpc1thXS5zZXRBdHRyaWJ1dGUoaSxlW2ldKTtyZXR1cm4gdGhpc30scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrPTEpdGhpc1t0XS5yZW1vdmVBdHRyaWJ1dGUoZSk7cmV0dXJuIHRoaXN9LHRyYW5zZm9ybTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrPTEpdGhpc1t0XS5zdHlsZS50cmFuc2Zvcm09ZTtyZXR1cm4gdGhpc30sdHJhbnNpdGlvbjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrPTEpdGhpc1t0XS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249InN0cmluZyIhPXR5cGVvZiBlP2UrIm1zIjplO3JldHVybiB0aGlzfSxvbjpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLGE9MDthPGU7YSsrKXRbYV09YXJndW1lbnRzW2FdO3ZhciBpPXRbMF0scz10WzFdLHI9dFsyXSxuPXRbM107ZnVuY3Rpb24gbChlKXt2YXIgdD1lLnRhcmdldDtpZih0KXt2YXIgYT1lLnRhcmdldC5kb203RXZlbnREYXRhfHxbXTtpZihhLmluZGV4T2YoZSk8MCYmYS51bnNoaWZ0KGUpLG0odCkuaXMocykpci5hcHBseSh0LGEpO2Vsc2UgZm9yKHZhciBpPW0odCkucGFyZW50cygpLG49MDtuPGkubGVuZ3RoO24rPTEpbShpW25dKS5pcyhzKSYmci5hcHBseShpW25dLGEpfX1mdW5jdGlvbiBvKGUpe3ZhciB0PWUmJmUudGFyZ2V0JiZlLnRhcmdldC5kb203RXZlbnREYXRhfHxbXTt0LmluZGV4T2YoZSk8MCYmdC51bnNoaWZ0KGUpLHIuYXBwbHkodGhpcyx0KX0iZnVuY3Rpb24iPT10eXBlb2YgdFsxXSYmKGk9dFswXSxyPXRbMV0sbj10WzJdLHM9dm9pZCAwKSxufHwobj0hMSk7Zm9yKHZhciBkLHA9aS5zcGxpdCgiICIpLGM9MDtjPHRoaXMubGVuZ3RoO2MrPTEpe3ZhciB1PXRoaXNbY107aWYocylmb3IoZD0wO2Q8cC5sZW5ndGg7ZCs9MSl7dmFyIGg9cFtkXTt1LmRvbTdMaXZlTGlzdGVuZXJzfHwodS5kb203TGl2ZUxpc3RlbmVycz17fSksdS5kb203TGl2ZUxpc3RlbmVyc1toXXx8KHUuZG9tN0xpdmVMaXN0ZW5lcnNbaF09W10pLHUuZG9tN0xpdmVMaXN0ZW5lcnNbaF0ucHVzaCh7bGlzdGVuZXI6cixwcm94eUxpc3RlbmVyOmx9KSx1LmFkZEV2ZW50TGlzdGVuZXIoaCxsLG4pfWVsc2UgZm9yKGQ9MDtkPHAubGVuZ3RoO2QrPTEpe3ZhciB2PXBbZF07dS5kb203TGlzdGVuZXJzfHwodS5kb203TGlzdGVuZXJzPXt9KSx1LmRvbTdMaXN0ZW5lcnNbdl18fCh1LmRvbTdMaXN0ZW5lcnNbdl09W10pLHUuZG9tN0xpc3RlbmVyc1t2XS5wdXNoKHtsaXN0ZW5lcjpyLHByb3h5TGlzdGVuZXI6b30pLHUuYWRkRXZlbnRMaXN0ZW5lcih2LG8sbil9fXJldHVybiB0aGlzfSxvZmY6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxhPTA7YTxlO2ErKyl0W2FdPWFyZ3VtZW50c1thXTt2YXIgaT10WzBdLHM9dFsxXSxyPXRbMl0sbj10WzNdOyJmdW5jdGlvbiI9PXR5cGVvZiB0WzFdJiYoaT10WzBdLHI9dFsxXSxuPXRbMl0scz12b2lkIDApLG58fChuPSExKTtmb3IodmFyIGw9aS5zcGxpdCgiICIpLG89MDtvPGwubGVuZ3RoO28rPTEpZm9yKHZhciBkPWxbb10scD0wO3A8dGhpcy5sZW5ndGg7cCs9MSl7dmFyIGM9dGhpc1twXSx1PXZvaWQgMDtpZighcyYmYy5kb203TGlzdGVuZXJzP3U9Yy5kb203TGlzdGVuZXJzW2RdOnMmJmMuZG9tN0xpdmVMaXN0ZW5lcnMmJih1PWMuZG9tN0xpdmVMaXN0ZW5lcnNbZF0pLHUmJnUubGVuZ3RoKWZvcih2YXIgaD11Lmxlbmd0aC0xO2g+PTA7aC09MSl7dmFyIHY9dVtoXTtyJiZ2Lmxpc3RlbmVyPT09cnx8ciYmdi5saXN0ZW5lciYmdi5saXN0ZW5lci5kb203cHJveHkmJnYubGlzdGVuZXIuZG9tN3Byb3h5PT09cj8oYy5yZW1vdmVFdmVudExpc3RlbmVyKGQsdi5wcm94eUxpc3RlbmVyLG4pLHUuc3BsaWNlKGgsMSkpOnJ8fChjLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx2LnByb3h5TGlzdGVuZXIsbiksdS5zcGxpY2UoaCwxKSl9fXJldHVybiB0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWwoKSx0PWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkodCksaT0wO2k8dDtpKyspYVtpXT1hcmd1bWVudHNbaV07Zm9yKHZhciBzPWFbMF0uc3BsaXQoIiAiKSxyPWFbMV0sbj0wO248cy5sZW5ndGg7bis9MSlmb3IodmFyIG89c1tuXSxkPTA7ZDx0aGlzLmxlbmd0aDtkKz0xKXt2YXIgcD10aGlzW2RdO2lmKGUuQ3VzdG9tRXZlbnQpe3ZhciBjPW5ldyBlLkN1c3RvbUV2ZW50KG8se2RldGFpbDpyLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pO3AuZG9tN0V2ZW50RGF0YT1hLmZpbHRlcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD4wfSkpLHAuZGlzcGF0Y2hFdmVudChjKSxwLmRvbTdFdmVudERhdGE9W10sZGVsZXRlIHAuZG9tN0V2ZW50RGF0YX19cmV0dXJuIHRoaXN9LHRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZSYmdC5vbigidHJhbnNpdGlvbmVuZCIsKGZ1bmN0aW9uIGEoaSl7aS50YXJnZXQ9PT10aGlzJiYoZS5jYWxsKHRoaXMsaSksdC5vZmYoInRyYW5zaXRpb25lbmQiLGEpKX0pKSx0aGlzfSxvdXRlcldpZHRoOmZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoPjApe2lmKGUpe3ZhciB0PXRoaXMuc3R5bGVzKCk7cmV0dXJuIHRoaXNbMF0ub2Zmc2V0V2lkdGgrcGFyc2VGbG9hdCh0LmdldFByb3BlcnR5VmFsdWUoIm1hcmdpbi1yaWdodCIpKStwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgibWFyZ2luLWxlZnQiKSl9cmV0dXJuIHRoaXNbMF0ub2Zmc2V0V2lkdGh9cmV0dXJuIG51bGx9LG91dGVySGVpZ2h0OmZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoPjApe2lmKGUpe3ZhciB0PXRoaXMuc3R5bGVzKCk7cmV0dXJuIHRoaXNbMF0ub2Zmc2V0SGVpZ2h0K3BhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tdG9wIikpK3BhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJtYXJnaW4tYm90dG9tIikpfXJldHVybiB0aGlzWzBdLm9mZnNldEhlaWdodH1yZXR1cm4gbnVsbH0sc3R5bGVzOmZ1bmN0aW9uKCl7dmFyIGU9bCgpO3JldHVybiB0aGlzWzBdP2UuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzWzBdLG51bGwpOnt9fSxvZmZzZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmxlbmd0aD4wKXt2YXIgZT1sKCksdD1yKCksYT10aGlzWzBdLGk9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXQuYm9keSxuPWEuY2xpZW50VG9wfHxzLmNsaWVudFRvcHx8MCxvPWEuY2xpZW50TGVmdHx8cy5jbGllbnRMZWZ0fHwwLGQ9YT09PWU/ZS5zY3JvbGxZOmEuc2Nyb2xsVG9wLHA9YT09PWU/ZS5zY3JvbGxYOmEuc2Nyb2xsTGVmdDtyZXR1cm57dG9wOmkudG9wK2QtbixsZWZ0OmkubGVmdCtwLW99fXJldHVybiBudWxsfSxjc3M6ZnVuY3Rpb24oZSx0KXt2YXIgYSxpPWwoKTtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXtmb3IoYT0wO2E8dGhpcy5sZW5ndGg7YSs9MSlmb3IodmFyIHMgaW4gZSl0aGlzW2FdLnN0eWxlW3NdPWVbc107cmV0dXJuIHRoaXN9aWYodGhpc1swXSlyZXR1cm4gaS5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1pZigyPT09YXJndW1lbnRzLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBlKXtmb3IoYT0wO2E8dGhpcy5sZW5ndGg7YSs9MSl0aGlzW2FdLnN0eWxlW2VdPXQ7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXN9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/KHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLmFwcGx5KHQsW3QsYV0pfSkpLHRoaXMpOnRoaXN9LGh0bWw6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gdGhpc1swXT90aGlzWzBdLmlubmVySFRNTDpudWxsO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCs9MSl0aGlzW3RdLmlubmVySFRNTD1lO3JldHVybiB0aGlzfSx0ZXh0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXNbMF0/dGhpc1swXS50ZXh0Q29udGVudC50cmltKCk6bnVsbDtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrPTEpdGhpc1t0XS50ZXh0Q29udGVudD1lO3JldHVybiB0aGlzfSxpczpmdW5jdGlvbihlKXt2YXIgdCxhLGk9bCgpLHM9cigpLG49dGhpc1swXTtpZighbnx8dm9pZCAwPT09ZSlyZXR1cm4hMTtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKG4ubWF0Y2hlcylyZXR1cm4gbi5tYXRjaGVzKGUpO2lmKG4ud2Via2l0TWF0Y2hlc1NlbGVjdG9yKXJldHVybiBuLndlYmtpdE1hdGNoZXNTZWxlY3RvcihlKTtpZihuLm1zTWF0Y2hlc1NlbGVjdG9yKXJldHVybiBuLm1zTWF0Y2hlc1NlbGVjdG9yKGUpO2Zvcih0PW0oZSksYT0wO2E8dC5sZW5ndGg7YSs9MSlpZih0W2FdPT09bilyZXR1cm4hMDtyZXR1cm4hMX1pZihlPT09cylyZXR1cm4gbj09PXM7aWYoZT09PWkpcmV0dXJuIG49PT1pO2lmKGUubm9kZVR5cGV8fGUgaW5zdGFuY2VvZiBoKXtmb3IodD1lLm5vZGVUeXBlP1tlXTplLGE9MDthPHQubGVuZ3RoO2ErPTEpaWYodFthXT09PW4pcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuITF9LGluZGV4OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzWzBdO2lmKHQpe2ZvcihlPTA7bnVsbCE9PSh0PXQucHJldmlvdXNTaWJsaW5nKTspMT09PXQubm9kZVR5cGUmJihlKz0xKTtyZXR1cm4gZX19LGVxOmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5sZW5ndGg7aWYoZT50LTEpcmV0dXJuIG0oW10pO2lmKGU8MCl7dmFyIGE9dCtlO3JldHVybiBtKGE8MD9bXTpbdGhpc1thXV0pfXJldHVybiBtKFt0aGlzW2VdXSl9LGFwcGVuZDpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PXIoKSxhPTA7YTxhcmd1bWVudHMubGVuZ3RoO2ErPTEpe2U9YTwwfHxhcmd1bWVudHMubGVuZ3RoPD1hP3ZvaWQgMDphcmd1bWVudHNbYV07Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKz0xKWlmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHM9dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3Iocy5pbm5lckhUTUw9ZTtzLmZpcnN0Q2hpbGQ7KXRoaXNbaV0uYXBwZW5kQ2hpbGQocy5maXJzdENoaWxkKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBoKWZvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9MSl0aGlzW2ldLmFwcGVuZENoaWxkKGVbbl0pO2Vsc2UgdGhpc1tpXS5hcHBlbmRDaGlsZChlKX1yZXR1cm4gdGhpc30scHJlcGVuZDpmdW5jdGlvbihlKXt2YXIgdCxhLGk9cigpO2Zvcih0PTA7dDx0aGlzLmxlbmd0aDt0Kz0xKWlmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHM9aS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3Iocy5pbm5lckhUTUw9ZSxhPXMuY2hpbGROb2Rlcy5sZW5ndGgtMTthPj0wO2EtPTEpdGhpc1t0XS5pbnNlcnRCZWZvcmUocy5jaGlsZE5vZGVzW2FdLHRoaXNbdF0uY2hpbGROb2Rlc1swXSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgaClmb3IoYT0wO2E8ZS5sZW5ndGg7YSs9MSl0aGlzW3RdLmluc2VydEJlZm9yZShlW2FdLHRoaXNbdF0uY2hpbGROb2Rlc1swXSk7ZWxzZSB0aGlzW3RdLmluc2VydEJlZm9yZShlLHRoaXNbdF0uY2hpbGROb2Rlc1swXSk7cmV0dXJuIHRoaXN9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPjA/ZT90aGlzWzBdLm5leHRFbGVtZW50U2libGluZyYmbSh0aGlzWzBdLm5leHRFbGVtZW50U2libGluZykuaXMoZSk/bShbdGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmddKTptKFtdKTp0aGlzWzBdLm5leHRFbGVtZW50U2libGluZz9tKFt0aGlzWzBdLm5leHRFbGVtZW50U2libGluZ10pOm0oW10pOm0oW10pfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLGE9dGhpc1swXTtpZighYSlyZXR1cm4gbShbXSk7Zm9yKDthLm5leHRFbGVtZW50U2libGluZzspe3ZhciBpPWEubmV4dEVsZW1lbnRTaWJsaW5nO2U/bShpKS5pcyhlKSYmdC5wdXNoKGkpOnQucHVzaChpKSxhPWl9cmV0dXJuIG0odCl9LHByZXY6ZnVuY3Rpb24oZSl7aWYodGhpcy5sZW5ndGg+MCl7dmFyIHQ9dGhpc1swXTtyZXR1cm4gZT90LnByZXZpb3VzRWxlbWVudFNpYmxpbmcmJm0odC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKS5pcyhlKT9tKFt0LnByZXZpb3VzRWxlbWVudFNpYmxpbmddKTptKFtdKTp0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc/bShbdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nXSk6bShbXSl9cmV0dXJuIG0oW10pfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLGE9dGhpc1swXTtpZighYSlyZXR1cm4gbShbXSk7Zm9yKDthLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7KXt2YXIgaT1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7ZT9tKGkpLmlzKGUpJiZ0LnB1c2goaSk6dC5wdXNoKGkpLGE9aX1yZXR1cm4gbSh0KX0scGFyZW50OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxhPTA7YTx0aGlzLmxlbmd0aDthKz0xKW51bGwhPT10aGlzW2FdLnBhcmVudE5vZGUmJihlP20odGhpc1thXS5wYXJlbnROb2RlKS5pcyhlKSYmdC5wdXNoKHRoaXNbYV0ucGFyZW50Tm9kZSk6dC5wdXNoKHRoaXNbYV0ucGFyZW50Tm9kZSkpO3JldHVybiBtKHQpfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxhPTA7YTx0aGlzLmxlbmd0aDthKz0xKWZvcih2YXIgaT10aGlzW2FdLnBhcmVudE5vZGU7aTspZT9tKGkpLmlzKGUpJiZ0LnB1c2goaSk6dC5wdXNoKGkpLGk9aS5wYXJlbnROb2RlO3JldHVybiBtKHQpfSxjbG9zZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHZvaWQgMD09PWU/bShbXSk6KHQuaXMoZSl8fCh0PXQucGFyZW50cyhlKS5lcSgwKSksdCl9LGZpbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLGE9MDthPHRoaXMubGVuZ3RoO2ErPTEpZm9yKHZhciBpPXRoaXNbYV0ucXVlcnlTZWxlY3RvckFsbChlKSxzPTA7czxpLmxlbmd0aDtzKz0xKXQucHVzaChpW3NdKTtyZXR1cm4gbSh0KX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLGE9MDthPHRoaXMubGVuZ3RoO2ErPTEpZm9yKHZhciBpPXRoaXNbYV0uY2hpbGRyZW4scz0wO3M8aS5sZW5ndGg7cys9MSllJiYhbShpW3NdKS5pcyhlKXx8dC5wdXNoKGlbc10pO3JldHVybiBtKHQpfSxmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG0oZih0aGlzLGUpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aDtlKz0xKXRoaXNbZV0ucGFyZW50Tm9kZSYmdGhpc1tlXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXNbZV0pO3JldHVybiB0aGlzfX07ZnVuY3Rpb24gRShlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSxzZXRUaW1lb3V0KGUsdCl9ZnVuY3Rpb24geCgpe3JldHVybiBEYXRlLm5vdygpfWZ1bmN0aW9uIFQoZSx0KXt2b2lkIDA9PT10JiYodD0ieCIpO3ZhciBhLGkscyxyPWwoKSxuPXIuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpO3JldHVybiByLldlYktpdENTU01hdHJpeD8oKGk9bi50cmFuc2Zvcm18fG4ud2Via2l0VHJhbnNmb3JtKS5zcGxpdCgiLCIpLmxlbmd0aD42JiYoaT1pLnNwbGl0KCIsICIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgiLCIsIi4iKX0pKS5qb2luKCIsICIpKSxzPW5ldyByLldlYktpdENTU01hdHJpeCgibm9uZSI9PT1pPyIiOmkpKTphPShzPW4uTW96VHJhbnNmb3JtfHxuLk9UcmFuc2Zvcm18fG4uTXNUcmFuc2Zvcm18fG4ubXNUcmFuc2Zvcm18fG4udHJhbnNmb3JtfHxuLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLnJlcGxhY2UoInRyYW5zbGF0ZSgiLCJtYXRyaXgoMSwgMCwgMCwgMSwiKSkudG9TdHJpbmcoKS5zcGxpdCgiLCIpLCJ4Ij09PXQmJihpPXIuV2ViS2l0Q1NTTWF0cml4P3MubTQxOjE2PT09YS5sZW5ndGg/cGFyc2VGbG9hdChhWzEyXSk6cGFyc2VGbG9hdChhWzRdKSksInkiPT09dCYmKGk9ci5XZWJLaXRDU1NNYXRyaXg/cy5tNDI6MTY9PT1hLmxlbmd0aD9wYXJzZUZsb2F0KGFbMTNdKTpwYXJzZUZsb2F0KGFbNV0pKSxpfHwwfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBTKCl7Zm9yKHZhciBlPU9iamVjdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCs9MSl7dmFyIGE9dDwwfHxhcmd1bWVudHMubGVuZ3RoPD10P3ZvaWQgMDphcmd1bWVudHNbdF07aWYobnVsbCE9YSlmb3IodmFyIGk9T2JqZWN0LmtleXMoT2JqZWN0KGEpKSxzPTAscj1pLmxlbmd0aDtzPHI7cys9MSl7dmFyIG49aVtzXSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxuKTt2b2lkIDAhPT1sJiZsLmVudW1lcmFibGUmJihDKGVbbl0pJiZDKGFbbl0pP1MoZVtuXSxhW25dKTohQyhlW25dKSYmQyhhW25dKT8oZVtuXT17fSxTKGVbbl0sYVtuXSkpOmVbbl09YVtuXSl9fXJldHVybiBlfWZ1bmN0aW9uIE0oZSx0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihhKXtDKHRbYV0pJiZPYmplY3Qua2V5cyh0W2FdKS5mb3JFYWNoKChmdW5jdGlvbihpKXsiZnVuY3Rpb24iPT10eXBlb2YgdFthXVtpXSYmKHRbYV1baV09dFthXVtpXS5iaW5kKGUpKX0pKSxlW2FdPXRbYV19KSl9ZnVuY3Rpb24geigpe3JldHVybiBnfHwoZz1mdW5jdGlvbigpe3ZhciBlPWwoKSx0PXIoKTtyZXR1cm57dG91Y2g6ISEoIm9udG91Y2hzdGFydCJpbiBlfHxlLkRvY3VtZW50VG91Y2gmJnQgaW5zdGFuY2VvZiBlLkRvY3VtZW50VG91Y2gpLHBvaW50ZXJFdmVudHM6ISFlLlBvaW50ZXJFdmVudCYmIm1heFRvdWNoUG9pbnRzImluIGUubmF2aWdhdG9yJiZlLm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz49MCxvYnNlcnZlcjoiTXV0YXRpb25PYnNlcnZlciJpbiBlfHwiV2Via2l0TXV0YXRpb25PYnNlcnZlciJpbiBlLHBhc3NpdmVMaXN0ZW5lcjpmdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgYT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO2UuYWRkRXZlbnRMaXN0ZW5lcigidGVzdFBhc3NpdmVMaXN0ZW5lciIsbnVsbCxhKX1jYXRjaChlKXt9cmV0dXJuIHR9KCksZ2VzdHVyZXM6Im9uZ2VzdHVyZXN0YXJ0ImluIGV9fSgpKSxnfWZ1bmN0aW9uIFAoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXt9KSxifHwoYj1mdW5jdGlvbihlKXt2YXIgdD0odm9pZCAwPT09ZT97fTplKS51c2VyQWdlbnQsYT16KCksaT1sKCkscz1pLm5hdmlnYXRvci5wbGF0Zm9ybSxyPXR8fGkubmF2aWdhdG9yLnVzZXJBZ2VudCxuPXtpb3M6ITEsYW5kcm9pZDohMX0sbz1pLnNjcmVlbi53aWR0aCxkPWkuc2NyZWVuLmhlaWdodCxwPXIubWF0Y2goLyhBbmRyb2lkKTs/W1xzXC9dKyhbXGQuXSspPy8pLGM9ci5tYXRjaCgvKGlQYWQpLipPU1xzKFtcZF9dKykvKSx1PXIubWF0Y2goLyhpUG9kKSguKk9TXHMoW1xkX10rKSk/LyksaD0hYyYmci5tYXRjaCgvKGlQaG9uZVxzT1N8aU9TKVxzKFtcZF9dKykvKSx2PSJXaW4zMiI9PT1zLGY9Ik1hY0ludGVsIj09PXM7cmV0dXJuIWMmJmYmJmEudG91Y2gmJlsiMTAyNHgxMzY2IiwiMTM2NngxMDI0IiwiODM0eDExOTQiLCIxMTk0eDgzNCIsIjgzNHgxMTEyIiwiMTExMng4MzQiLCI3Njh4MTAyNCIsIjEwMjR4NzY4IiwiODIweDExODAiLCIxMTgweDgyMCIsIjgxMHgxMDgwIiwiMTA4MHg4MTAiXS5pbmRleE9mKG8rIngiK2QpPj0wJiYoKGM9ci5tYXRjaCgvKFZlcnNpb24pXC8oW1xkLl0rKS8pKXx8KGM9WzAsMSwiMTNfMF8wIl0pLGY9ITEpLHAmJiF2JiYobi5vcz0iYW5kcm9pZCIsbi5hbmRyb2lkPSEwKSwoY3x8aHx8dSkmJihuLm9zPSJpb3MiLG4uaW9zPSEwKSxufShlKSksYn1mdW5jdGlvbiBrKCl7cmV0dXJuIHd8fCh3PWZ1bmN0aW9uKCl7dmFyIGUsdD1sKCk7cmV0dXJue2lzRWRnZTohIXQubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZS9nKSxpc1NhZmFyaTooZT10Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxlLmluZGV4T2YoInNhZmFyaSIpPj0wJiZlLmluZGV4T2YoImNocm9tZSIpPDAmJmUuaW5kZXhPZigiYW5kcm9pZCIpPDApLGlzV2ViVmlldzovKGlQaG9uZXxpUG9kfGlQYWQpLipBcHBsZVdlYktpdCg/IS4qU2FmYXJpKS9pLnRlc3QodC5uYXZpZ2F0b3IudXNlckFnZW50KX19KCkpLHd9T2JqZWN0LmtleXMoeSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bS5mbltlXT15W2VdfSkpO3ZhciBMPXtuYW1lOiJyZXNpemUiLGNyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7UyhlLHtyZXNpemU6e29ic2VydmVyOm51bGwsY3JlYXRlT2JzZXJ2ZXI6ZnVuY3Rpb24oKXtlJiYhZS5kZXN0cm95ZWQmJmUuaW5pdGlhbGl6ZWQmJihlLnJlc2l6ZS5vYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKGZ1bmN0aW9uKHQpe3ZhciBhPWUud2lkdGgsaT1lLmhlaWdodCxzPWEscj1pO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9dC5jb250ZW50Qm94U2l6ZSxpPXQuY29udGVudFJlY3Qsbj10LnRhcmdldDtuJiZuIT09ZS5lbHx8KHM9aT9pLndpZHRoOihhWzBdfHxhKS5pbmxpbmVTaXplLHI9aT9pLmhlaWdodDooYVswXXx8YSkuYmxvY2tTaXplKX0pKSxzPT09YSYmcj09PWl8fGUucmVzaXplLnJlc2l6ZUhhbmRsZXIoKX0pKSxlLnJlc2l6ZS5vYnNlcnZlci5vYnNlcnZlKGUuZWwpKX0scmVtb3ZlT2JzZXJ2ZXI6ZnVuY3Rpb24oKXtlLnJlc2l6ZS5vYnNlcnZlciYmZS5yZXNpemUub2JzZXJ2ZXIudW5vYnNlcnZlJiZlLmVsJiYoZS5yZXNpemUub2JzZXJ2ZXIudW5vYnNlcnZlKGUuZWwpLGUucmVzaXplLm9ic2VydmVyPW51bGwpfSxyZXNpemVIYW5kbGVyOmZ1bmN0aW9uKCl7ZSYmIWUuZGVzdHJveWVkJiZlLmluaXRpYWxpemVkJiYoZS5lbWl0KCJiZWZvcmVSZXNpemUiKSxlLmVtaXQoInJlc2l6ZSIpKX0sb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyOmZ1bmN0aW9uKCl7ZSYmIWUuZGVzdHJveWVkJiZlLmluaXRpYWxpemVkJiZlLmVtaXQoIm9yaWVudGF0aW9uY2hhbmdlIil9fX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXt2YXIgdD1sKCk7ZS5wYXJhbXMucmVzaXplT2JzZXJ2ZXImJnZvaWQgMCE9PWwoKS5SZXNpemVPYnNlcnZlcj9lLnJlc2l6ZS5jcmVhdGVPYnNlcnZlcigpOih0LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZS5yZXNpemUucmVzaXplSGFuZGxlciksdC5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsZS5yZXNpemUub3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9bCgpO2UucmVzaXplLnJlbW92ZU9ic2VydmVyKCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLGUucmVzaXplLnJlc2l6ZUhhbmRsZXIpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLGUucmVzaXplLm9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcil9fX0sJD17YXR0YWNoOmZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBhPWwoKSxpPXRoaXMscz1uZXcoYS5NdXRhdGlvbk9ic2VydmVyfHxhLldlYmtpdE11dGF0aW9uT2JzZXJ2ZXIpKChmdW5jdGlvbihlKXtpZigxIT09ZS5sZW5ndGgpe3ZhciB0PWZ1bmN0aW9uKCl7aS5lbWl0KCJvYnNlcnZlclVwZGF0ZSIsZVswXSl9O2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lP2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpOmEuc2V0VGltZW91dCh0LDApfWVsc2UgaS5lbWl0KCJvYnNlcnZlclVwZGF0ZSIsZVswXSl9KSk7cy5vYnNlcnZlKGUse2F0dHJpYnV0ZXM6dm9pZCAwPT09dC5hdHRyaWJ1dGVzfHx0LmF0dHJpYnV0ZXMsY2hpbGRMaXN0OnZvaWQgMD09PXQuY2hpbGRMaXN0fHx0LmNoaWxkTGlzdCxjaGFyYWN0ZXJEYXRhOnZvaWQgMD09PXQuY2hhcmFjdGVyRGF0YXx8dC5jaGFyYWN0ZXJEYXRhfSksaS5vYnNlcnZlci5vYnNlcnZlcnMucHVzaChzKX0saW5pdDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoZS5zdXBwb3J0Lm9ic2VydmVyJiZlLnBhcmFtcy5vYnNlcnZlcil7aWYoZS5wYXJhbXMub2JzZXJ2ZVBhcmVudHMpZm9yKHZhciB0PWUuJGVsLnBhcmVudHMoKSxhPTA7YTx0Lmxlbmd0aDthKz0xKWUub2JzZXJ2ZXIuYXR0YWNoKHRbYV0pO2Uub2JzZXJ2ZXIuYXR0YWNoKGUuJGVsWzBdLHtjaGlsZExpc3Q6ZS5wYXJhbXMub2JzZXJ2ZVNsaWRlQ2hpbGRyZW59KSxlLm9ic2VydmVyLmF0dGFjaChlLiR3cmFwcGVyRWxbMF0se2F0dHJpYnV0ZXM6ITF9KX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLm9ic2VydmVyLm9ic2VydmVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmRpc2Nvbm5lY3QoKX0pKSx0aGlzLm9ic2VydmVyLm9ic2VydmVycz1bXX19LEk9e25hbWU6Im9ic2VydmVyIixwYXJhbXM6e29ic2VydmVyOiExLG9ic2VydmVQYXJlbnRzOiExLG9ic2VydmVTbGlkZUNoaWxkcmVuOiExfSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse29ic2VydmVyOnQoe30sJCx7b2JzZXJ2ZXJzOltdfSl9KX0sb246e2luaXQ6ZnVuY3Rpb24oZSl7ZS5vYnNlcnZlci5pbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7ZS5vYnNlcnZlci5kZXN0cm95KCl9fX07ZnVuY3Rpb24gTyhlKXt2YXIgdD10aGlzLGE9cigpLGk9bCgpLHM9dC50b3VjaEV2ZW50c0RhdGEsbj10LnBhcmFtcyxvPXQudG91Y2hlcztpZighdC5hbmltYXRpbmd8fCFuLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbil7dmFyIGQ9ZTtkLm9yaWdpbmFsRXZlbnQmJihkPWQub3JpZ2luYWxFdmVudCk7dmFyIHA9bShkLnRhcmdldCk7aWYoIndyYXBwZXIiIT09bi50b3VjaEV2ZW50c1RhcmdldHx8cC5jbG9zZXN0KHQud3JhcHBlckVsKS5sZW5ndGgpaWYocy5pc1RvdWNoRXZlbnQ9InRvdWNoc3RhcnQiPT09ZC50eXBlLHMuaXNUb3VjaEV2ZW50fHwhKCJ3aGljaCJpbiBkKXx8MyE9PWQud2hpY2gpaWYoISghcy5pc1RvdWNoRXZlbnQmJiJidXR0b24iaW4gZCYmZC5idXR0b24+MCkpaWYoIXMuaXNUb3VjaGVkfHwhcy5pc01vdmVkKWlmKCEhbi5ub1N3aXBpbmdDbGFzcyYmIiIhPT1uLm5vU3dpcGluZ0NsYXNzJiZkLnRhcmdldCYmZC50YXJnZXQuc2hhZG93Um9vdCYmZS5wYXRoJiZlLnBhdGhbMF0mJihwPW0oZS5wYXRoWzBdKSksbi5ub1N3aXBpbmcmJnAuY2xvc2VzdChuLm5vU3dpcGluZ1NlbGVjdG9yP24ubm9Td2lwaW5nU2VsZWN0b3I6Ii4iK24ubm9Td2lwaW5nQ2xhc3MpWzBdKXQuYWxsb3dDbGljaz0hMDtlbHNlIGlmKCFuLnN3aXBlSGFuZGxlcnx8cC5jbG9zZXN0KG4uc3dpcGVIYW5kbGVyKVswXSl7by5jdXJyZW50WD0idG91Y2hzdGFydCI9PT1kLnR5cGU/ZC50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYOmQucGFnZVgsby5jdXJyZW50WT0idG91Y2hzdGFydCI9PT1kLnR5cGU/ZC50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZOmQucGFnZVk7dmFyIGM9by5jdXJyZW50WCx1PW8uY3VycmVudFksaD1uLmVkZ2VTd2lwZURldGVjdGlvbnx8bi5pT1NFZGdlU3dpcGVEZXRlY3Rpb24sdj1uLmVkZ2VTd2lwZVRocmVzaG9sZHx8bi5pT1NFZGdlU3dpcGVUaHJlc2hvbGQ7aWYoaCYmKGM8PXZ8fGM+PWkuaW5uZXJXaWR0aC12KSl7aWYoInByZXZlbnQiIT09aClyZXR1cm47ZS5wcmV2ZW50RGVmYXVsdCgpfWlmKFMocyx7aXNUb3VjaGVkOiEwLGlzTW92ZWQ6ITEsYWxsb3dUb3VjaENhbGxiYWNrczohMCxpc1Njcm9sbGluZzp2b2lkIDAsc3RhcnRNb3Zpbmc6dm9pZCAwfSksby5zdGFydFg9YyxvLnN0YXJ0WT11LHMudG91Y2hTdGFydFRpbWU9eCgpLHQuYWxsb3dDbGljaz0hMCx0LnVwZGF0ZVNpemUoKSx0LnN3aXBlRGlyZWN0aW9uPXZvaWQgMCxuLnRocmVzaG9sZD4wJiYocy5hbGxvd1RocmVzaG9sZE1vdmU9ITEpLCJ0b3VjaHN0YXJ0IiE9PWQudHlwZSl7dmFyIGY9ITA7cC5pcyhzLmZvcm1FbGVtZW50cykmJihmPSExKSxhLmFjdGl2ZUVsZW1lbnQmJm0oYS5hY3RpdmVFbGVtZW50KS5pcyhzLmZvcm1FbGVtZW50cykmJmEuYWN0aXZlRWxlbWVudCE9PXBbMF0mJmEuYWN0aXZlRWxlbWVudC5ibHVyKCk7dmFyIGc9ZiYmdC5hbGxvd1RvdWNoTW92ZSYmbi50b3VjaFN0YXJ0UHJldmVudERlZmF1bHQ7IW4udG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQmJiFnfHxwWzBdLmlzQ29udGVudEVkaXRhYmxlfHxkLnByZXZlbnREZWZhdWx0KCl9dC5lbWl0KCJ0b3VjaFN0YXJ0IixkKX19fWZ1bmN0aW9uIEEoZSl7dmFyIHQ9cigpLGE9dGhpcyxpPWEudG91Y2hFdmVudHNEYXRhLHM9YS5wYXJhbXMsbj1hLnRvdWNoZXMsbD1hLnJ0bFRyYW5zbGF0ZSxvPWU7aWYoby5vcmlnaW5hbEV2ZW50JiYobz1vLm9yaWdpbmFsRXZlbnQpLGkuaXNUb3VjaGVkKXtpZighaS5pc1RvdWNoRXZlbnR8fCJ0b3VjaG1vdmUiPT09by50eXBlKXt2YXIgZD0idG91Y2htb3ZlIj09PW8udHlwZSYmby50YXJnZXRUb3VjaGVzJiYoby50YXJnZXRUb3VjaGVzWzBdfHxvLmNoYW5nZWRUb3VjaGVzWzBdKSxwPSJ0b3VjaG1vdmUiPT09by50eXBlP2QucGFnZVg6by5wYWdlWCxjPSJ0b3VjaG1vdmUiPT09by50eXBlP2QucGFnZVk6by5wYWdlWTtpZihvLnByZXZlbnRlZEJ5TmVzdGVkU3dpcGVyKXJldHVybiBuLnN0YXJ0WD1wLHZvaWQobi5zdGFydFk9Yyk7aWYoIWEuYWxsb3dUb3VjaE1vdmUpcmV0dXJuIGEuYWxsb3dDbGljaz0hMSx2b2lkKGkuaXNUb3VjaGVkJiYoUyhuLHtzdGFydFg6cCxzdGFydFk6YyxjdXJyZW50WDpwLGN1cnJlbnRZOmN9KSxpLnRvdWNoU3RhcnRUaW1lPXgoKSkpO2lmKGkuaXNUb3VjaEV2ZW50JiZzLnRvdWNoUmVsZWFzZU9uRWRnZXMmJiFzLmxvb3ApaWYoYS5pc1ZlcnRpY2FsKCkpe2lmKGM8bi5zdGFydFkmJmEudHJhbnNsYXRlPD1hLm1heFRyYW5zbGF0ZSgpfHxjPm4uc3RhcnRZJiZhLnRyYW5zbGF0ZT49YS5taW5UcmFuc2xhdGUoKSlyZXR1cm4gaS5pc1RvdWNoZWQ9ITEsdm9pZChpLmlzTW92ZWQ9ITEpfWVsc2UgaWYocDxuLnN0YXJ0WCYmYS50cmFuc2xhdGU8PWEubWF4VHJhbnNsYXRlKCl8fHA+bi5zdGFydFgmJmEudHJhbnNsYXRlPj1hLm1pblRyYW5zbGF0ZSgpKXJldHVybjtpZihpLmlzVG91Y2hFdmVudCYmdC5hY3RpdmVFbGVtZW50JiZvLnRhcmdldD09PXQuYWN0aXZlRWxlbWVudCYmbShvLnRhcmdldCkuaXMoaS5mb3JtRWxlbWVudHMpKXJldHVybiBpLmlzTW92ZWQ9ITAsdm9pZChhLmFsbG93Q2xpY2s9ITEpO2lmKGkuYWxsb3dUb3VjaENhbGxiYWNrcyYmYS5lbWl0KCJ0b3VjaE1vdmUiLG8pLCEoby50YXJnZXRUb3VjaGVzJiZvLnRhcmdldFRvdWNoZXMubGVuZ3RoPjEpKXtuLmN1cnJlbnRYPXAsbi5jdXJyZW50WT1jO3ZhciB1PW4uY3VycmVudFgtbi5zdGFydFgsaD1uLmN1cnJlbnRZLW4uc3RhcnRZO2lmKCEoYS5wYXJhbXMudGhyZXNob2xkJiZNYXRoLnNxcnQoTWF0aC5wb3codSwyKStNYXRoLnBvdyhoLDIpKTxhLnBhcmFtcy50aHJlc2hvbGQpKXt2YXIgdjtpZih2b2lkIDA9PT1pLmlzU2Nyb2xsaW5nKWEuaXNIb3Jpem9udGFsKCkmJm4uY3VycmVudFk9PT1uLnN0YXJ0WXx8YS5pc1ZlcnRpY2FsKCkmJm4uY3VycmVudFg9PT1uLnN0YXJ0WD9pLmlzU2Nyb2xsaW5nPSExOnUqdStoKmg+PTI1JiYodj0xODAqTWF0aC5hdGFuMihNYXRoLmFicyhoKSxNYXRoLmFicyh1KSkvTWF0aC5QSSxpLmlzU2Nyb2xsaW5nPWEuaXNIb3Jpem9udGFsKCk/dj5zLnRvdWNoQW5nbGU6OTAtdj5zLnRvdWNoQW5nbGUpO2lmKGkuaXNTY3JvbGxpbmcmJmEuZW1pdCgidG91Y2hNb3ZlT3Bwb3NpdGUiLG8pLHZvaWQgMD09PWkuc3RhcnRNb3ZpbmcmJihuLmN1cnJlbnRYPT09bi5zdGFydFgmJm4uY3VycmVudFk9PT1uLnN0YXJ0WXx8KGkuc3RhcnRNb3Zpbmc9ITApKSxpLmlzU2Nyb2xsaW5nKWkuaXNUb3VjaGVkPSExO2Vsc2UgaWYoaS5zdGFydE1vdmluZyl7YS5hbGxvd0NsaWNrPSExLCFzLmNzc01vZGUmJm8uY2FuY2VsYWJsZSYmby5wcmV2ZW50RGVmYXVsdCgpLHMudG91Y2hNb3ZlU3RvcFByb3BhZ2F0aW9uJiYhcy5uZXN0ZWQmJm8uc3RvcFByb3BhZ2F0aW9uKCksaS5pc01vdmVkfHwocy5sb29wJiZhLmxvb3BGaXgoKSxpLnN0YXJ0VHJhbnNsYXRlPWEuZ2V0VHJhbnNsYXRlKCksYS5zZXRUcmFuc2l0aW9uKDApLGEuYW5pbWF0aW5nJiZhLiR3cmFwcGVyRWwudHJpZ2dlcigid2Via2l0VHJhbnNpdGlvbkVuZCB0cmFuc2l0aW9uZW5kIiksaS5hbGxvd01vbWVudHVtQm91bmNlPSExLCFzLmdyYWJDdXJzb3J8fCEwIT09YS5hbGxvd1NsaWRlTmV4dCYmITAhPT1hLmFsbG93U2xpZGVQcmV2fHxhLnNldEdyYWJDdXJzb3IoITApLGEuZW1pdCgic2xpZGVyRmlyc3RNb3ZlIixvKSksYS5lbWl0KCJzbGlkZXJNb3ZlIixvKSxpLmlzTW92ZWQ9ITA7dmFyIGY9YS5pc0hvcml6b250YWwoKT91Omg7bi5kaWZmPWYsZio9cy50b3VjaFJhdGlvLGwmJihmPS1mKSxhLnN3aXBlRGlyZWN0aW9uPWY+MD8icHJldiI6Im5leHQiLGkuY3VycmVudFRyYW5zbGF0ZT1mK2kuc3RhcnRUcmFuc2xhdGU7dmFyIGc9ITAsYj1zLnJlc2lzdGFuY2VSYXRpbztpZihzLnRvdWNoUmVsZWFzZU9uRWRnZXMmJihiPTApLGY+MCYmaS5jdXJyZW50VHJhbnNsYXRlPmEubWluVHJhbnNsYXRlKCk/KGc9ITEscy5yZXNpc3RhbmNlJiYoaS5jdXJyZW50VHJhbnNsYXRlPWEubWluVHJhbnNsYXRlKCktMStNYXRoLnBvdygtYS5taW5UcmFuc2xhdGUoKStpLnN0YXJ0VHJhbnNsYXRlK2YsYikpKTpmPDAmJmkuY3VycmVudFRyYW5zbGF0ZTxhLm1heFRyYW5zbGF0ZSgpJiYoZz0hMSxzLnJlc2lzdGFuY2UmJihpLmN1cnJlbnRUcmFuc2xhdGU9YS5tYXhUcmFuc2xhdGUoKSsxLU1hdGgucG93KGEubWF4VHJhbnNsYXRlKCktaS5zdGFydFRyYW5zbGF0ZS1mLGIpKSksZyYmKG8ucHJldmVudGVkQnlOZXN0ZWRTd2lwZXI9ITApLCFhLmFsbG93U2xpZGVOZXh0JiYibmV4dCI9PT1hLnN3aXBlRGlyZWN0aW9uJiZpLmN1cnJlbnRUcmFuc2xhdGU8aS5zdGFydFRyYW5zbGF0ZSYmKGkuY3VycmVudFRyYW5zbGF0ZT1pLnN0YXJ0VHJhbnNsYXRlKSwhYS5hbGxvd1NsaWRlUHJldiYmInByZXYiPT09YS5zd2lwZURpcmVjdGlvbiYmaS5jdXJyZW50VHJhbnNsYXRlPmkuc3RhcnRUcmFuc2xhdGUmJihpLmN1cnJlbnRUcmFuc2xhdGU9aS5zdGFydFRyYW5zbGF0ZSksYS5hbGxvd1NsaWRlUHJldnx8YS5hbGxvd1NsaWRlTmV4dHx8KGkuY3VycmVudFRyYW5zbGF0ZT1pLnN0YXJ0VHJhbnNsYXRlKSxzLnRocmVzaG9sZD4wKXtpZighKE1hdGguYWJzKGYpPnMudGhyZXNob2xkfHxpLmFsbG93VGhyZXNob2xkTW92ZSkpcmV0dXJuIHZvaWQoaS5jdXJyZW50VHJhbnNsYXRlPWkuc3RhcnRUcmFuc2xhdGUpO2lmKCFpLmFsbG93VGhyZXNob2xkTW92ZSlyZXR1cm4gaS5hbGxvd1RocmVzaG9sZE1vdmU9ITAsbi5zdGFydFg9bi5jdXJyZW50WCxuLnN0YXJ0WT1uLmN1cnJlbnRZLGkuY3VycmVudFRyYW5zbGF0ZT1pLnN0YXJ0VHJhbnNsYXRlLHZvaWQobi5kaWZmPWEuaXNIb3Jpem9udGFsKCk/bi5jdXJyZW50WC1uLnN0YXJ0WDpuLmN1cnJlbnRZLW4uc3RhcnRZKX1zLmZvbGxvd0ZpbmdlciYmIXMuY3NzTW9kZSYmKChzLmZyZWVNb2RlfHxzLndhdGNoU2xpZGVzUHJvZ3Jlc3N8fHMud2F0Y2hTbGlkZXNWaXNpYmlsaXR5KSYmKGEudXBkYXRlQWN0aXZlSW5kZXgoKSxhLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSkscy5mcmVlTW9kZSYmKDA9PT1pLnZlbG9jaXRpZXMubGVuZ3RoJiZpLnZlbG9jaXRpZXMucHVzaCh7cG9zaXRpb246blthLmlzSG9yaXpvbnRhbCgpPyJzdGFydFgiOiJzdGFydFkiXSx0aW1lOmkudG91Y2hTdGFydFRpbWV9KSxpLnZlbG9jaXRpZXMucHVzaCh7cG9zaXRpb246blthLmlzSG9yaXpvbnRhbCgpPyJjdXJyZW50WCI6ImN1cnJlbnRZIl0sdGltZTp4KCl9KSksYS51cGRhdGVQcm9ncmVzcyhpLmN1cnJlbnRUcmFuc2xhdGUpLGEuc2V0VHJhbnNsYXRlKGkuY3VycmVudFRyYW5zbGF0ZSkpfX19fX1lbHNlIGkuc3RhcnRNb3ZpbmcmJmkuaXNTY3JvbGxpbmcmJmEuZW1pdCgidG91Y2hNb3ZlT3Bwb3NpdGUiLG8pfWZ1bmN0aW9uIEQoZSl7dmFyIHQ9dGhpcyxhPXQudG91Y2hFdmVudHNEYXRhLGk9dC5wYXJhbXMscz10LnRvdWNoZXMscj10LnJ0bFRyYW5zbGF0ZSxuPXQuJHdyYXBwZXJFbCxsPXQuc2xpZGVzR3JpZCxvPXQuc25hcEdyaWQsZD1lO2lmKGQub3JpZ2luYWxFdmVudCYmKGQ9ZC5vcmlnaW5hbEV2ZW50KSxhLmFsbG93VG91Y2hDYWxsYmFja3MmJnQuZW1pdCgidG91Y2hFbmQiLGQpLGEuYWxsb3dUb3VjaENhbGxiYWNrcz0hMSwhYS5pc1RvdWNoZWQpcmV0dXJuIGEuaXNNb3ZlZCYmaS5ncmFiQ3Vyc29yJiZ0LnNldEdyYWJDdXJzb3IoITEpLGEuaXNNb3ZlZD0hMSx2b2lkKGEuc3RhcnRNb3Zpbmc9ITEpO2kuZ3JhYkN1cnNvciYmYS5pc01vdmVkJiZhLmlzVG91Y2hlZCYmKCEwPT09dC5hbGxvd1NsaWRlTmV4dHx8ITA9PT10LmFsbG93U2xpZGVQcmV2KSYmdC5zZXRHcmFiQ3Vyc29yKCExKTt2YXIgcCxjPXgoKSx1PWMtYS50b3VjaFN0YXJ0VGltZTtpZih0LmFsbG93Q2xpY2smJih0LnVwZGF0ZUNsaWNrZWRTbGlkZShkKSx0LmVtaXQoInRhcCBjbGljayIsZCksdTwzMDAmJmMtYS5sYXN0Q2xpY2tUaW1lPDMwMCYmdC5lbWl0KCJkb3VibGVUYXAgZG91YmxlQ2xpY2siLGQpKSxhLmxhc3RDbGlja1RpbWU9eCgpLEUoKGZ1bmN0aW9uKCl7dC5kZXN0cm95ZWR8fCh0LmFsbG93Q2xpY2s9ITApfSkpLCFhLmlzVG91Y2hlZHx8IWEuaXNNb3ZlZHx8IXQuc3dpcGVEaXJlY3Rpb258fDA9PT1zLmRpZmZ8fGEuY3VycmVudFRyYW5zbGF0ZT09PWEuc3RhcnRUcmFuc2xhdGUpcmV0dXJuIGEuaXNUb3VjaGVkPSExLGEuaXNNb3ZlZD0hMSx2b2lkKGEuc3RhcnRNb3Zpbmc9ITEpO2lmKGEuaXNUb3VjaGVkPSExLGEuaXNNb3ZlZD0hMSxhLnN0YXJ0TW92aW5nPSExLHA9aS5mb2xsb3dGaW5nZXI/cj90LnRyYW5zbGF0ZTotdC50cmFuc2xhdGU6LWEuY3VycmVudFRyYW5zbGF0ZSwhaS5jc3NNb2RlKWlmKGkuZnJlZU1vZGUpe2lmKHA8LXQubWluVHJhbnNsYXRlKCkpcmV0dXJuIHZvaWQgdC5zbGlkZVRvKHQuYWN0aXZlSW5kZXgpO2lmKHA+LXQubWF4VHJhbnNsYXRlKCkpcmV0dXJuIHZvaWQodC5zbGlkZXMubGVuZ3RoPG8ubGVuZ3RoP3Quc2xpZGVUbyhvLmxlbmd0aC0xKTp0LnNsaWRlVG8odC5zbGlkZXMubGVuZ3RoLTEpKTtpZihpLmZyZWVNb2RlTW9tZW50dW0pe2lmKGEudmVsb2NpdGllcy5sZW5ndGg+MSl7dmFyIGg9YS52ZWxvY2l0aWVzLnBvcCgpLHY9YS52ZWxvY2l0aWVzLnBvcCgpLGY9aC5wb3NpdGlvbi12LnBvc2l0aW9uLG09aC50aW1lLXYudGltZTt0LnZlbG9jaXR5PWYvbSx0LnZlbG9jaXR5Lz0yLE1hdGguYWJzKHQudmVsb2NpdHkpPGkuZnJlZU1vZGVNaW5pbXVtVmVsb2NpdHkmJih0LnZlbG9jaXR5PTApLChtPjE1MHx8eCgpLWgudGltZT4zMDApJiYodC52ZWxvY2l0eT0wKX1lbHNlIHQudmVsb2NpdHk9MDt0LnZlbG9jaXR5Kj1pLmZyZWVNb2RlTW9tZW50dW1WZWxvY2l0eVJhdGlvLGEudmVsb2NpdGllcy5sZW5ndGg9MDt2YXIgZz0xZTMqaS5mcmVlTW9kZU1vbWVudHVtUmF0aW8sYj10LnZlbG9jaXR5Kmcsdz10LnRyYW5zbGF0ZStiO3ImJih3PS13KTt2YXIgeSxULEM9ITEsUz0yMCpNYXRoLmFicyh0LnZlbG9jaXR5KSppLmZyZWVNb2RlTW9tZW50dW1Cb3VuY2VSYXRpbztpZih3PHQubWF4VHJhbnNsYXRlKCkpaS5mcmVlTW9kZU1vbWVudHVtQm91bmNlPyh3K3QubWF4VHJhbnNsYXRlKCk8LVMmJih3PXQubWF4VHJhbnNsYXRlKCktUykseT10Lm1heFRyYW5zbGF0ZSgpLEM9ITAsYS5hbGxvd01vbWVudHVtQm91bmNlPSEwKTp3PXQubWF4VHJhbnNsYXRlKCksaS5sb29wJiZpLmNlbnRlcmVkU2xpZGVzJiYoVD0hMCk7ZWxzZSBpZih3PnQubWluVHJhbnNsYXRlKCkpaS5mcmVlTW9kZU1vbWVudHVtQm91bmNlPyh3LXQubWluVHJhbnNsYXRlKCk+UyYmKHc9dC5taW5UcmFuc2xhdGUoKStTKSx5PXQubWluVHJhbnNsYXRlKCksQz0hMCxhLmFsbG93TW9tZW50dW1Cb3VuY2U9ITApOnc9dC5taW5UcmFuc2xhdGUoKSxpLmxvb3AmJmkuY2VudGVyZWRTbGlkZXMmJihUPSEwKTtlbHNlIGlmKGkuZnJlZU1vZGVTdGlja3kpe2Zvcih2YXIgTSx6PTA7ejxvLmxlbmd0aDt6Kz0xKWlmKG9bel0+LXcpe009ejticmVha313PS0odz1NYXRoLmFicyhvW01dLXcpPE1hdGguYWJzKG9bTS0xXS13KXx8Im5leHQiPT09dC5zd2lwZURpcmVjdGlvbj9vW01dOm9bTS0xXSl9aWYoVCYmdC5vbmNlKCJ0cmFuc2l0aW9uRW5kIiwoZnVuY3Rpb24oKXt0Lmxvb3BGaXgoKX0pKSwwIT09dC52ZWxvY2l0eSl7aWYoZz1yP01hdGguYWJzKCgtdy10LnRyYW5zbGF0ZSkvdC52ZWxvY2l0eSk6TWF0aC5hYnMoKHctdC50cmFuc2xhdGUpL3QudmVsb2NpdHkpLGkuZnJlZU1vZGVTdGlja3kpe3ZhciBQPU1hdGguYWJzKChyPy13OncpLXQudHJhbnNsYXRlKSxrPXQuc2xpZGVzU2l6ZXNHcmlkW3QuYWN0aXZlSW5kZXhdO2c9UDxrP2kuc3BlZWQ6UDwyKms/MS41Kmkuc3BlZWQ6Mi41Kmkuc3BlZWR9fWVsc2UgaWYoaS5mcmVlTW9kZVN0aWNreSlyZXR1cm4gdm9pZCB0LnNsaWRlVG9DbG9zZXN0KCk7aS5mcmVlTW9kZU1vbWVudHVtQm91bmNlJiZDPyh0LnVwZGF0ZVByb2dyZXNzKHkpLHQuc2V0VHJhbnNpdGlvbihnKSx0LnNldFRyYW5zbGF0ZSh3KSx0LnRyYW5zaXRpb25TdGFydCghMCx0LnN3aXBlRGlyZWN0aW9uKSx0LmFuaW1hdGluZz0hMCxuLnRyYW5zaXRpb25FbmQoKGZ1bmN0aW9uKCl7dCYmIXQuZGVzdHJveWVkJiZhLmFsbG93TW9tZW50dW1Cb3VuY2UmJih0LmVtaXQoIm1vbWVudHVtQm91bmNlIiksdC5zZXRUcmFuc2l0aW9uKGkuc3BlZWQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zZXRUcmFuc2xhdGUoeSksbi50cmFuc2l0aW9uRW5kKChmdW5jdGlvbigpe3QmJiF0LmRlc3Ryb3llZCYmdC50cmFuc2l0aW9uRW5kKCl9KSl9KSwwKSl9KSkpOnQudmVsb2NpdHk/KHQudXBkYXRlUHJvZ3Jlc3ModyksdC5zZXRUcmFuc2l0aW9uKGcpLHQuc2V0VHJhbnNsYXRlKHcpLHQudHJhbnNpdGlvblN0YXJ0KCEwLHQuc3dpcGVEaXJlY3Rpb24pLHQuYW5pbWF0aW5nfHwodC5hbmltYXRpbmc9ITAsbi50cmFuc2l0aW9uRW5kKChmdW5jdGlvbigpe3QmJiF0LmRlc3Ryb3llZCYmdC50cmFuc2l0aW9uRW5kKCl9KSkpKToodC5lbWl0KCJfZnJlZU1vZGVOb01vbWVudHVtUmVsZWFzZSIpLHQudXBkYXRlUHJvZ3Jlc3ModykpLHQudXBkYXRlQWN0aXZlSW5kZXgoKSx0LnVwZGF0ZVNsaWRlc0NsYXNzZXMoKX1lbHNle2lmKGkuZnJlZU1vZGVTdGlja3kpcmV0dXJuIHZvaWQgdC5zbGlkZVRvQ2xvc2VzdCgpO2kuZnJlZU1vZGUmJnQuZW1pdCgiX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UiKX0oIWkuZnJlZU1vZGVNb21lbnR1bXx8dT49aS5sb25nU3dpcGVzTXMpJiYodC51cGRhdGVQcm9ncmVzcygpLHQudXBkYXRlQWN0aXZlSW5kZXgoKSx0LnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSl9ZWxzZXtmb3IodmFyIEw9MCwkPXQuc2xpZGVzU2l6ZXNHcmlkWzBdLEk9MDtJPGwubGVuZ3RoO0krPUk8aS5zbGlkZXNQZXJHcm91cFNraXA/MTppLnNsaWRlc1Blckdyb3VwKXt2YXIgTz1JPGkuc2xpZGVzUGVyR3JvdXBTa2lwLTE/MTppLnNsaWRlc1Blckdyb3VwO3ZvaWQgMCE9PWxbSStPXT9wPj1sW0ldJiZwPGxbSStPXSYmKEw9SSwkPWxbSStPXS1sW0ldKTpwPj1sW0ldJiYoTD1JLCQ9bFtsLmxlbmd0aC0xXS1sW2wubGVuZ3RoLTJdKX12YXIgQT0ocC1sW0xdKS8kLEQ9TDxpLnNsaWRlc1Blckdyb3VwU2tpcC0xPzE6aS5zbGlkZXNQZXJHcm91cDtpZih1PmkubG9uZ1N3aXBlc01zKXtpZighaS5sb25nU3dpcGVzKXJldHVybiB2b2lkIHQuc2xpZGVUbyh0LmFjdGl2ZUluZGV4KTsibmV4dCI9PT10LnN3aXBlRGlyZWN0aW9uJiYoQT49aS5sb25nU3dpcGVzUmF0aW8/dC5zbGlkZVRvKEwrRCk6dC5zbGlkZVRvKEwpKSwicHJldiI9PT10LnN3aXBlRGlyZWN0aW9uJiYoQT4xLWkubG9uZ1N3aXBlc1JhdGlvP3Quc2xpZGVUbyhMK0QpOnQuc2xpZGVUbyhMKSl9ZWxzZXtpZighaS5zaG9ydFN3aXBlcylyZXR1cm4gdm9pZCB0LnNsaWRlVG8odC5hY3RpdmVJbmRleCk7dC5uYXZpZ2F0aW9uJiYoZC50YXJnZXQ9PT10Lm5hdmlnYXRpb24ubmV4dEVsfHxkLnRhcmdldD09PXQubmF2aWdhdGlvbi5wcmV2RWwpP2QudGFyZ2V0PT09dC5uYXZpZ2F0aW9uLm5leHRFbD90LnNsaWRlVG8oTCtEKTp0LnNsaWRlVG8oTCk6KCJuZXh0Ij09PXQuc3dpcGVEaXJlY3Rpb24mJnQuc2xpZGVUbyhMK0QpLCJwcmV2Ij09PXQuc3dpcGVEaXJlY3Rpb24mJnQuc2xpZGVUbyhMKSl9fX1mdW5jdGlvbiBOKCl7dmFyIGU9dGhpcyx0PWUucGFyYW1zLGE9ZS5lbDtpZighYXx8MCE9PWEub2Zmc2V0V2lkdGgpe3QuYnJlYWtwb2ludHMmJmUuc2V0QnJlYWtwb2ludCgpO3ZhciBpPWUuYWxsb3dTbGlkZU5leHQscz1lLmFsbG93U2xpZGVQcmV2LHI9ZS5zbmFwR3JpZDtlLmFsbG93U2xpZGVOZXh0PSEwLGUuYWxsb3dTbGlkZVByZXY9ITAsZS51cGRhdGVTaXplKCksZS51cGRhdGVTbGlkZXMoKSxlLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwoImF1dG8iPT09dC5zbGlkZXNQZXJWaWV3fHx0LnNsaWRlc1BlclZpZXc+MSkmJmUuaXNFbmQmJiFlLmlzQmVnaW5uaW5nJiYhZS5wYXJhbXMuY2VudGVyZWRTbGlkZXM/ZS5zbGlkZVRvKGUuc2xpZGVzLmxlbmd0aC0xLDAsITEsITApOmUuc2xpZGVUbyhlLmFjdGl2ZUluZGV4LDAsITEsITApLGUuYXV0b3BsYXkmJmUuYXV0b3BsYXkucnVubmluZyYmZS5hdXRvcGxheS5wYXVzZWQmJmUuYXV0b3BsYXkucnVuKCksZS5hbGxvd1NsaWRlUHJldj1zLGUuYWxsb3dTbGlkZU5leHQ9aSxlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZyIT09ZS5zbmFwR3JpZCYmZS5jaGVja092ZXJmbG93KCl9fWZ1bmN0aW9uIEcoZSl7dmFyIHQ9dGhpczt0LmFsbG93Q2xpY2t8fCh0LnBhcmFtcy5wcmV2ZW50Q2xpY2tzJiZlLnByZXZlbnREZWZhdWx0KCksdC5wYXJhbXMucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uJiZ0LmFuaW1hdGluZyYmKGUuc3RvcFByb3BhZ2F0aW9uKCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSkpfWZ1bmN0aW9uIEIoKXt2YXIgZT10aGlzLHQ9ZS53cmFwcGVyRWwsYT1lLnJ0bFRyYW5zbGF0ZTtlLnByZXZpb3VzVHJhbnNsYXRlPWUudHJhbnNsYXRlLGUuaXNIb3Jpem9udGFsKCk/ZS50cmFuc2xhdGU9YT90LnNjcm9sbFdpZHRoLXQub2Zmc2V0V2lkdGgtdC5zY3JvbGxMZWZ0Oi10LnNjcm9sbExlZnQ6ZS50cmFuc2xhdGU9LXQuc2Nyb2xsVG9wLC0wPT09ZS50cmFuc2xhdGUmJihlLnRyYW5zbGF0ZT0wKSxlLnVwZGF0ZUFjdGl2ZUluZGV4KCksZS51cGRhdGVTbGlkZXNDbGFzc2VzKCk7dmFyIGk9ZS5tYXhUcmFuc2xhdGUoKS1lLm1pblRyYW5zbGF0ZSgpOygwPT09aT8wOihlLnRyYW5zbGF0ZS1lLm1pblRyYW5zbGF0ZSgpKS9pKSE9PWUucHJvZ3Jlc3MmJmUudXBkYXRlUHJvZ3Jlc3MoYT8tZS50cmFuc2xhdGU6ZS50cmFuc2xhdGUpLGUuZW1pdCgic2V0VHJhbnNsYXRlIixlLnRyYW5zbGF0ZSwhMSl9dmFyIEg9ITE7ZnVuY3Rpb24gWCgpe312YXIgWT17aW5pdDohMCxkaXJlY3Rpb246Imhvcml6b250YWwiLHRvdWNoRXZlbnRzVGFyZ2V0OiJjb250YWluZXIiLGluaXRpYWxTbGlkZTowLHNwZWVkOjMwMCxjc3NNb2RlOiExLHVwZGF0ZU9uV2luZG93UmVzaXplOiEwLHJlc2l6ZU9ic2VydmVyOiExLG5lc3RlZDohMSx3aWR0aDpudWxsLGhlaWdodDpudWxsLHByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbjohMSx1c2VyQWdlbnQ6bnVsbCx1cmw6bnVsbCxlZGdlU3dpcGVEZXRlY3Rpb246ITEsZWRnZVN3aXBlVGhyZXNob2xkOjIwLGZyZWVNb2RlOiExLGZyZWVNb2RlTW9tZW50dW06ITAsZnJlZU1vZGVNb21lbnR1bVJhdGlvOjEsZnJlZU1vZGVNb21lbnR1bUJvdW5jZTohMCxmcmVlTW9kZU1vbWVudHVtQm91bmNlUmF0aW86MSxmcmVlTW9kZU1vbWVudHVtVmVsb2NpdHlSYXRpbzoxLGZyZWVNb2RlU3RpY2t5OiExLGZyZWVNb2RlTWluaW11bVZlbG9jaXR5Oi4wMixhdXRvSGVpZ2h0OiExLHNldFdyYXBwZXJTaXplOiExLHZpcnR1YWxUcmFuc2xhdGU6ITEsZWZmZWN0OiJzbGlkZSIsYnJlYWtwb2ludHM6dm9pZCAwLGJyZWFrcG9pbnRzQmFzZToid2luZG93IixzcGFjZUJldHdlZW46MCxzbGlkZXNQZXJWaWV3OjEsc2xpZGVzUGVyQ29sdW1uOjEsc2xpZGVzUGVyQ29sdW1uRmlsbDoiY29sdW1uIixzbGlkZXNQZXJHcm91cDoxLHNsaWRlc1Blckdyb3VwU2tpcDowLGNlbnRlcmVkU2xpZGVzOiExLGNlbnRlcmVkU2xpZGVzQm91bmRzOiExLHNsaWRlc09mZnNldEJlZm9yZTowLHNsaWRlc09mZnNldEFmdGVyOjAsbm9ybWFsaXplU2xpZGVJbmRleDohMCxjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXM6ITEsd2F0Y2hPdmVyZmxvdzohMSxyb3VuZExlbmd0aHM6ITEsdG91Y2hSYXRpbzoxLHRvdWNoQW5nbGU6NDUsc2ltdWxhdGVUb3VjaDohMCxzaG9ydFN3aXBlczohMCxsb25nU3dpcGVzOiEwLGxvbmdTd2lwZXNSYXRpbzouNSxsb25nU3dpcGVzTXM6MzAwLGZvbGxvd0ZpbmdlcjohMCxhbGxvd1RvdWNoTW92ZTohMCx0aHJlc2hvbGQ6MCx0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb246ITEsdG91Y2hTdGFydFByZXZlbnREZWZhdWx0OiEwLHRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0OiExLHRvdWNoUmVsZWFzZU9uRWRnZXM6ITEsdW5pcXVlTmF2RWxlbWVudHM6ITAscmVzaXN0YW5jZTohMCxyZXNpc3RhbmNlUmF0aW86Ljg1LHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ITEsd2F0Y2hTbGlkZXNWaXNpYmlsaXR5OiExLGdyYWJDdXJzb3I6ITEscHJldmVudENsaWNrczohMCxwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb246ITAsc2xpZGVUb0NsaWNrZWRTbGlkZTohMSxwcmVsb2FkSW1hZ2VzOiEwLHVwZGF0ZU9uSW1hZ2VzUmVhZHk6ITAsbG9vcDohMSxsb29wQWRkaXRpb25hbFNsaWRlczowLGxvb3BlZFNsaWRlczpudWxsLGxvb3BGaWxsR3JvdXBXaXRoQmxhbms6ITEsbG9vcFByZXZlbnRzU2xpZGU6ITAsYWxsb3dTbGlkZVByZXY6ITAsYWxsb3dTbGlkZU5leHQ6ITAsc3dpcGVIYW5kbGVyOm51bGwsbm9Td2lwaW5nOiEwLG5vU3dpcGluZ0NsYXNzOiJzd2lwZXItbm8tc3dpcGluZyIsbm9Td2lwaW5nU2VsZWN0b3I6bnVsbCxwYXNzaXZlTGlzdGVuZXJzOiEwLGNvbnRhaW5lck1vZGlmaWVyQ2xhc3M6InN3aXBlci1jb250YWluZXItIixzbGlkZUNsYXNzOiJzd2lwZXItc2xpZGUiLHNsaWRlQmxhbmtDbGFzczoic3dpcGVyLXNsaWRlLWludmlzaWJsZS1ibGFuayIsc2xpZGVBY3RpdmVDbGFzczoic3dpcGVyLXNsaWRlLWFjdGl2ZSIsc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzczoic3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUiLHNsaWRlVmlzaWJsZUNsYXNzOiJzd2lwZXItc2xpZGUtdmlzaWJsZSIsc2xpZGVEdXBsaWNhdGVDbGFzczoic3dpcGVyLXNsaWRlLWR1cGxpY2F0ZSIsc2xpZGVOZXh0Q2xhc3M6InN3aXBlci1zbGlkZS1uZXh0IixzbGlkZUR1cGxpY2F0ZU5leHRDbGFzczoic3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1uZXh0IixzbGlkZVByZXZDbGFzczoic3dpcGVyLXNsaWRlLXByZXYiLHNsaWRlRHVwbGljYXRlUHJldkNsYXNzOiJzd2lwZXItc2xpZGUtZHVwbGljYXRlLXByZXYiLHdyYXBwZXJDbGFzczoic3dpcGVyLXdyYXBwZXIiLHJ1bkNhbGxiYWNrc09uSW5pdDohMCxfZW1pdENsYXNzZXM6ITF9LFI9e21vZHVsYXI6e3VzZVBhcmFtczpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3QubW9kdWxlcyYmT2JqZWN0LmtleXModC5tb2R1bGVzKS5mb3JFYWNoKChmdW5jdGlvbihhKXt2YXIgaT10Lm1vZHVsZXNbYV07aS5wYXJhbXMmJlMoZSxpLnBhcmFtcyl9KSl9LHVzZU1vZHVsZXM6ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0PXRoaXM7dC5tb2R1bGVzJiZPYmplY3Qua2V5cyh0Lm1vZHVsZXMpLmZvckVhY2goKGZ1bmN0aW9uKGEpe3ZhciBpPXQubW9kdWxlc1thXSxzPWVbYV18fHt9O2kub24mJnQub24mJk9iamVjdC5rZXlzKGkub24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3Qub24oZSxpLm9uW2VdKX0pKSxpLmNyZWF0ZSYmaS5jcmVhdGUuYmluZCh0KShzKX0pKX19LGV2ZW50c0VtaXR0ZXI6e29uOmZ1bmN0aW9uKGUsdCxhKXt2YXIgaT10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJldHVybiBpO3ZhciBzPWE/InVuc2hpZnQiOiJwdXNoIjtyZXR1cm4gZS5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuZXZlbnRzTGlzdGVuZXJzW2VdfHwoaS5ldmVudHNMaXN0ZW5lcnNbZV09W10pLGkuZXZlbnRzTGlzdGVuZXJzW2VdW3NdKHQpfSkpLGl9LG9uY2U6ZnVuY3Rpb24oZSx0LGEpe3ZhciBpPXRoaXM7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuIGk7ZnVuY3Rpb24gcygpe2kub2ZmKGUscykscy5fX2VtaXR0ZXJQcm94eSYmZGVsZXRlIHMuX19lbWl0dGVyUHJveHk7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoYSksbj0wO248YTtuKyspcltuXT1hcmd1bWVudHNbbl07dC5hcHBseShpLHIpfXJldHVybiBzLl9fZW1pdHRlclByb3h5PXQsaS5vbihlLHMsYSl9LG9uQW55OmZ1bmN0aW9uKGUsdCl7dmFyIGE9dGhpcztpZigiZnVuY3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gYTt2YXIgaT10PyJ1bnNoaWZ0IjoicHVzaCI7cmV0dXJuIGEuZXZlbnRzQW55TGlzdGVuZXJzLmluZGV4T2YoZSk8MCYmYS5ldmVudHNBbnlMaXN0ZW5lcnNbaV0oZSksYX0sb2ZmQW55OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoIXQuZXZlbnRzQW55TGlzdGVuZXJzKXJldHVybiB0O3ZhciBhPXQuZXZlbnRzQW55TGlzdGVuZXJzLmluZGV4T2YoZSk7cmV0dXJuIGE+PTAmJnQuZXZlbnRzQW55TGlzdGVuZXJzLnNwbGljZShhLDEpLHR9LG9mZjpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXM7cmV0dXJuIGEuZXZlbnRzTGlzdGVuZXJzPyhlLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwPT09dD9hLmV2ZW50c0xpc3RlbmVyc1tlXT1bXTphLmV2ZW50c0xpc3RlbmVyc1tlXSYmYS5ldmVudHNMaXN0ZW5lcnNbZV0uZm9yRWFjaCgoZnVuY3Rpb24oaSxzKXsoaT09PXR8fGkuX19lbWl0dGVyUHJveHkmJmkuX19lbWl0dGVyUHJveHk9PT10KSYmYS5ldmVudHNMaXN0ZW5lcnNbZV0uc3BsaWNlKHMsMSl9KSl9KSksYSk6YX0sZW1pdDpmdW5jdGlvbigpe3ZhciBlLHQsYSxpPXRoaXM7aWYoIWkuZXZlbnRzTGlzdGVuZXJzKXJldHVybiBpO2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHMpLG49MDtuPHM7bisrKXJbbl09YXJndW1lbnRzW25dOyJzdHJpbmciPT10eXBlb2YgclswXXx8QXJyYXkuaXNBcnJheShyWzBdKT8oZT1yWzBdLHQ9ci5zbGljZSgxLHIubGVuZ3RoKSxhPWkpOihlPXJbMF0uZXZlbnRzLHQ9clswXS5kYXRhLGE9clswXS5jb250ZXh0fHxpKSx0LnVuc2hpZnQoYSk7dmFyIGw9QXJyYXkuaXNBcnJheShlKT9lOmUuc3BsaXQoIiAiKTtyZXR1cm4gbC5mb3JFYWNoKChmdW5jdGlvbihlKXtpLmV2ZW50c0FueUxpc3RlbmVycyYmaS5ldmVudHNBbnlMaXN0ZW5lcnMubGVuZ3RoJiZpLmV2ZW50c0FueUxpc3RlbmVycy5mb3JFYWNoKChmdW5jdGlvbihpKXtpLmFwcGx5KGEsW2VdLmNvbmNhdCh0KSl9KSksaS5ldmVudHNMaXN0ZW5lcnMmJmkuZXZlbnRzTGlzdGVuZXJzW2VdJiZpLmV2ZW50c0xpc3RlbmVyc1tlXS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmFwcGx5KGEsdCl9KSl9KSksaX19LHVwZGF0ZTp7dXBkYXRlU2l6ZTpmdW5jdGlvbigpe3ZhciBlLHQsYT10aGlzLGk9YS4kZWw7ZT12b2lkIDAhPT1hLnBhcmFtcy53aWR0aCYmbnVsbCE9PWEucGFyYW1zLndpZHRoP2EucGFyYW1zLndpZHRoOmlbMF0uY2xpZW50V2lkdGgsdD12b2lkIDAhPT1hLnBhcmFtcy5oZWlnaHQmJm51bGwhPT1hLnBhcmFtcy5oZWlnaHQ/YS5wYXJhbXMuaGVpZ2h0OmlbMF0uY2xpZW50SGVpZ2h0LDA9PT1lJiZhLmlzSG9yaXpvbnRhbCgpfHwwPT09dCYmYS5pc1ZlcnRpY2FsKCl8fChlPWUtcGFyc2VJbnQoaS5jc3MoInBhZGRpbmctbGVmdCIpfHwwLDEwKS1wYXJzZUludChpLmNzcygicGFkZGluZy1yaWdodCIpfHwwLDEwKSx0PXQtcGFyc2VJbnQoaS5jc3MoInBhZGRpbmctdG9wIil8fDAsMTApLXBhcnNlSW50KGkuY3NzKCJwYWRkaW5nLWJvdHRvbSIpfHwwLDEwKSxOdW1iZXIuaXNOYU4oZSkmJihlPTApLE51bWJlci5pc05hTih0KSYmKHQ9MCksUyhhLHt3aWR0aDplLGhlaWdodDp0LHNpemU6YS5pc0hvcml6b250YWwoKT9lOnR9KSl9LHVwZGF0ZVNsaWRlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1mdW5jdGlvbih0KXtyZXR1cm4gZS5pc0hvcml6b250YWwoKT90Ont3aWR0aDoiaGVpZ2h0IiwibWFyZ2luLXRvcCI6Im1hcmdpbi1sZWZ0IiwibWFyZ2luLWJvdHRvbSAiOiJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tbGVmdCI6Im1hcmdpbi10b3AiLCJtYXJnaW4tcmlnaHQiOiJtYXJnaW4tYm90dG9tIiwicGFkZGluZy1sZWZ0IjoicGFkZGluZy10b3AiLCJwYWRkaW5nLXJpZ2h0IjoicGFkZGluZy1ib3R0b20iLG1hcmdpblJpZ2h0OiJtYXJnaW5Cb3R0b20ifVt0XX0sYT1mdW5jdGlvbihlLGEpe3JldHVybiBwYXJzZUZsb2F0KGUuZ2V0UHJvcGVydHlWYWx1ZSh0KGEpKXx8MCl9LGk9bCgpLHM9ZS5wYXJhbXMscj1lLiR3cmFwcGVyRWwsbj1lLnNpemUsbz1lLnJ0bFRyYW5zbGF0ZSxkPWUud3JvbmdSVEwscD1lLnZpcnR1YWwmJnMudmlydHVhbC5lbmFibGVkLGM9cD9lLnZpcnR1YWwuc2xpZGVzLmxlbmd0aDplLnNsaWRlcy5sZW5ndGgsdT1yLmNoaWxkcmVuKCIuIitlLnBhcmFtcy5zbGlkZUNsYXNzKSxoPXA/ZS52aXJ0dWFsLnNsaWRlcy5sZW5ndGg6dS5sZW5ndGgsdj1bXSxmPVtdLG09W10sZz1zLnNsaWRlc09mZnNldEJlZm9yZTsiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGc9cy5zbGlkZXNPZmZzZXRCZWZvcmUuY2FsbChlKSk7dmFyIGI9cy5zbGlkZXNPZmZzZXRBZnRlcjsiZnVuY3Rpb24iPT10eXBlb2YgYiYmKGI9cy5zbGlkZXNPZmZzZXRBZnRlci5jYWxsKGUpKTt2YXIgdz1lLnNuYXBHcmlkLmxlbmd0aCx5PWUuc2xpZGVzR3JpZC5sZW5ndGgsRT1zLnNwYWNlQmV0d2Vlbix4PS1nLFQ9MCxDPTA7aWYodm9pZCAwIT09bil7dmFyIE0sejsic3RyaW5nIj09dHlwZW9mIEUmJkUuaW5kZXhPZigiJSIpPj0wJiYoRT1wYXJzZUZsb2F0KEUucmVwbGFjZSgiJSIsIiIpKS8xMDAqbiksZS52aXJ0dWFsU2l6ZT0tRSxvP3UuY3NzKHttYXJnaW5MZWZ0OiIiLG1hcmdpblRvcDoiIn0pOnUuY3NzKHttYXJnaW5SaWdodDoiIixtYXJnaW5Cb3R0b206IiJ9KSxzLnNsaWRlc1BlckNvbHVtbj4xJiYoTT1NYXRoLmZsb29yKGgvcy5zbGlkZXNQZXJDb2x1bW4pPT09aC9lLnBhcmFtcy5zbGlkZXNQZXJDb2x1bW4/aDpNYXRoLmNlaWwoaC9zLnNsaWRlc1BlckNvbHVtbikqcy5zbGlkZXNQZXJDb2x1bW4sImF1dG8iIT09cy5zbGlkZXNQZXJWaWV3JiYicm93Ij09PXMuc2xpZGVzUGVyQ29sdW1uRmlsbCYmKE09TWF0aC5tYXgoTSxzLnNsaWRlc1BlclZpZXcqcy5zbGlkZXNQZXJDb2x1bW4pKSk7Zm9yKHZhciBQLGssTCwkPXMuc2xpZGVzUGVyQ29sdW1uLEk9TS8kLE89TWF0aC5mbG9vcihoL3Muc2xpZGVzUGVyQ29sdW1uKSxBPTA7QTxoO0ErPTEpe3o9MDt2YXIgRD11LmVxKEEpO2lmKHMuc2xpZGVzUGVyQ29sdW1uPjEpe3ZhciBOPXZvaWQgMCxHPXZvaWQgMCxCPXZvaWQgMDtpZigicm93Ij09PXMuc2xpZGVzUGVyQ29sdW1uRmlsbCYmcy5zbGlkZXNQZXJHcm91cD4xKXt2YXIgSD1NYXRoLmZsb29yKEEvKHMuc2xpZGVzUGVyR3JvdXAqcy5zbGlkZXNQZXJDb2x1bW4pKSxYPUEtcy5zbGlkZXNQZXJDb2x1bW4qcy5zbGlkZXNQZXJHcm91cCpILFk9MD09PUg/cy5zbGlkZXNQZXJHcm91cDpNYXRoLm1pbihNYXRoLmNlaWwoKGgtSCokKnMuc2xpZGVzUGVyR3JvdXApLyQpLHMuc2xpZGVzUGVyR3JvdXApO049KEc9WC0oQj1NYXRoLmZsb29yKFgvWSkpKlkrSCpzLnNsaWRlc1Blckdyb3VwKStCKk0vJCxELmNzcyh7Ii13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXAiOk4sIi1tb3otYm94LW9yZGluYWwtZ3JvdXAiOk4sIi1tcy1mbGV4LW9yZGVyIjpOLCItd2Via2l0LW9yZGVyIjpOLG9yZGVyOk59KX1lbHNlImNvbHVtbiI9PT1zLnNsaWRlc1BlckNvbHVtbkZpbGw/KEI9QS0oRz1NYXRoLmZsb29yKEEvJCkpKiQsKEc+T3x8Rz09PU8mJkI9PT0kLTEpJiYoQis9MSk+PSQmJihCPTAsRys9MSkpOkc9QS0oQj1NYXRoLmZsb29yKEEvSSkpKkk7RC5jc3ModCgibWFyZ2luLXRvcCIpLDAhPT1CJiZzLnNwYWNlQmV0d2VlbiYmcy5zcGFjZUJldHdlZW4rInB4Iil9aWYoIm5vbmUiIT09RC5jc3MoImRpc3BsYXkiKSl7aWYoImF1dG8iPT09cy5zbGlkZXNQZXJWaWV3KXt2YXIgUj1pLmdldENvbXB1dGVkU3R5bGUoRFswXSxudWxsKSxWPURbMF0uc3R5bGUudHJhbnNmb3JtLFc9RFswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm07aWYoViYmKERbMF0uc3R5bGUudHJhbnNmb3JtPSJub25lIiksVyYmKERbMF0uc3R5bGUud2Via2l0VHJhbnNmb3JtPSJub25lIikscy5yb3VuZExlbmd0aHMpej1lLmlzSG9yaXpvbnRhbCgpP0Qub3V0ZXJXaWR0aCghMCk6RC5vdXRlckhlaWdodCghMCk7ZWxzZXt2YXIgRj1hKFIsIndpZHRoIikscT1hKFIsInBhZGRpbmctbGVmdCIpLGo9YShSLCJwYWRkaW5nLXJpZ2h0IiksXz1hKFIsIm1hcmdpbi1sZWZ0IiksVT1hKFIsIm1hcmdpbi1yaWdodCIpLEs9Ui5nZXRQcm9wZXJ0eVZhbHVlKFIsImJveC1zaXppbmciKTtpZihLJiYiYm9yZGVyLWJveCI9PT1LKXo9RitfK1U7ZWxzZXt2YXIgWj1EWzBdLEo9Wi5jbGllbnRXaWR0aDt6PUYrcStqK18rVSsoWi5vZmZzZXRXaWR0aC1KKX19ViYmKERbMF0uc3R5bGUudHJhbnNmb3JtPVYpLFcmJihEWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1XKSxzLnJvdW5kTGVuZ3RocyYmKHo9TWF0aC5mbG9vcih6KSl9ZWxzZSB6PShuLShzLnNsaWRlc1BlclZpZXctMSkqRSkvcy5zbGlkZXNQZXJWaWV3LHMucm91bmRMZW5ndGhzJiYoej1NYXRoLmZsb29yKHopKSx1W0FdJiYodVtBXS5zdHlsZVt0KCJ3aWR0aCIpXT16KyJweCIpO3VbQV0mJih1W0FdLnN3aXBlclNsaWRlU2l6ZT16KSxtLnB1c2goeikscy5jZW50ZXJlZFNsaWRlcz8oeD14K3ovMitULzIrRSwwPT09VCYmMCE9PUEmJih4PXgtbi8yLUUpLDA9PT1BJiYoeD14LW4vMi1FKSxNYXRoLmFicyh4KTwuMDAxJiYoeD0wKSxzLnJvdW5kTGVuZ3RocyYmKHg9TWF0aC5mbG9vcih4KSksQyVzLnNsaWRlc1Blckdyb3VwPT0wJiZ2LnB1c2goeCksZi5wdXNoKHgpKToocy5yb3VuZExlbmd0aHMmJih4PU1hdGguZmxvb3IoeCkpLChDLU1hdGgubWluKGUucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCxDKSklZS5wYXJhbXMuc2xpZGVzUGVyR3JvdXA9PTAmJnYucHVzaCh4KSxmLnB1c2goeCkseD14K3orRSksZS52aXJ0dWFsU2l6ZSs9eitFLFQ9eixDKz0xfX1pZihlLnZpcnR1YWxTaXplPU1hdGgubWF4KGUudmlydHVhbFNpemUsbikrYixvJiZkJiYoInNsaWRlIj09PXMuZWZmZWN0fHwiY292ZXJmbG93Ij09PXMuZWZmZWN0KSYmci5jc3Moe3dpZHRoOmUudmlydHVhbFNpemUrcy5zcGFjZUJldHdlZW4rInB4In0pLHMuc2V0V3JhcHBlclNpemUpci5jc3MoKChrPXt9KVt0KCJ3aWR0aCIpXT1lLnZpcnR1YWxTaXplK3Muc3BhY2VCZXR3ZWVuKyJweCIsaykpO2lmKHMuc2xpZGVzUGVyQ29sdW1uPjEpaWYoZS52aXJ0dWFsU2l6ZT0oeitzLnNwYWNlQmV0d2VlbikqTSxlLnZpcnR1YWxTaXplPU1hdGguY2VpbChlLnZpcnR1YWxTaXplL3Muc2xpZGVzUGVyQ29sdW1uKS1zLnNwYWNlQmV0d2VlbixyLmNzcygoKEw9e30pW3QoIndpZHRoIildPWUudmlydHVhbFNpemUrcy5zcGFjZUJldHdlZW4rInB4IixMKSkscy5jZW50ZXJlZFNsaWRlcyl7UD1bXTtmb3IodmFyIFE9MDtRPHYubGVuZ3RoO1ErPTEpe3ZhciBlZT12W1FdO3Mucm91bmRMZW5ndGhzJiYoZWU9TWF0aC5mbG9vcihlZSkpLHZbUV08ZS52aXJ0dWFsU2l6ZSt2WzBdJiZQLnB1c2goZWUpfXY9UH1pZighcy5jZW50ZXJlZFNsaWRlcyl7UD1bXTtmb3IodmFyIHRlPTA7dGU8di5sZW5ndGg7dGUrPTEpe3ZhciBhZT12W3RlXTtzLnJvdW5kTGVuZ3RocyYmKGFlPU1hdGguZmxvb3IoYWUpKSx2W3RlXTw9ZS52aXJ0dWFsU2l6ZS1uJiZQLnB1c2goYWUpfXY9UCxNYXRoLmZsb29yKGUudmlydHVhbFNpemUtbiktTWF0aC5mbG9vcih2W3YubGVuZ3RoLTFdKT4xJiZ2LnB1c2goZS52aXJ0dWFsU2l6ZS1uKX1pZigwPT09di5sZW5ndGgmJih2PVswXSksMCE9PXMuc3BhY2VCZXR3ZWVuKXt2YXIgaWUsc2U9ZS5pc0hvcml6b250YWwoKSYmbz8ibWFyZ2luTGVmdCI6dCgibWFyZ2luUmlnaHQiKTt1LmZpbHRlcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4hcy5jc3NNb2RlfHx0IT09dS5sZW5ndGgtMX0pKS5jc3MoKChpZT17fSlbc2VdPUUrInB4IixpZSkpfWlmKHMuY2VudGVyZWRTbGlkZXMmJnMuY2VudGVyZWRTbGlkZXNCb3VuZHMpe3ZhciByZT0wO20uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmUrPWUrKHMuc3BhY2VCZXR3ZWVuP3Muc3BhY2VCZXR3ZWVuOjApfSkpO3ZhciBuZT0ocmUtPXMuc3BhY2VCZXR3ZWVuKS1uO3Y9di5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LWc6ZT5uZT9uZStiOmV9KSl9aWYocy5jZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXMpe3ZhciBsZT0wO2lmKG0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7bGUrPWUrKHMuc3BhY2VCZXR3ZWVuP3Muc3BhY2VCZXR3ZWVuOjApfSkpLChsZS09cy5zcGFjZUJldHdlZW4pPG4pe3ZhciBvZT0obi1sZSkvMjt2LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7dlt0XT1lLW9lfSkpLGYuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtmW3RdPWUrb2V9KSl9fVMoZSx7c2xpZGVzOnUsc25hcEdyaWQ6dixzbGlkZXNHcmlkOmYsc2xpZGVzU2l6ZXNHcmlkOm19KSxoIT09YyYmZS5lbWl0KCJzbGlkZXNMZW5ndGhDaGFuZ2UiKSx2Lmxlbmd0aCE9PXcmJihlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmNoZWNrT3ZlcmZsb3coKSxlLmVtaXQoInNuYXBHcmlkTGVuZ3RoQ2hhbmdlIikpLGYubGVuZ3RoIT09eSYmZS5lbWl0KCJzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlIiksKHMud2F0Y2hTbGlkZXNQcm9ncmVzc3x8cy53YXRjaFNsaWRlc1Zpc2liaWxpdHkpJiZlLnVwZGF0ZVNsaWRlc09mZnNldCgpfX0sdXBkYXRlQXV0b0hlaWdodDpmdW5jdGlvbihlKXt2YXIgdCxhPXRoaXMsaT1bXSxzPTA7aWYoIm51bWJlciI9PXR5cGVvZiBlP2Euc2V0VHJhbnNpdGlvbihlKTohMD09PWUmJmEuc2V0VHJhbnNpdGlvbihhLnBhcmFtcy5zcGVlZCksImF1dG8iIT09YS5wYXJhbXMuc2xpZGVzUGVyVmlldyYmYS5wYXJhbXMuc2xpZGVzUGVyVmlldz4xKWlmKGEucGFyYW1zLmNlbnRlcmVkU2xpZGVzKWEudmlzaWJsZVNsaWRlcy5lYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZSl9KSk7ZWxzZSBmb3IodD0wO3Q8TWF0aC5jZWlsKGEucGFyYW1zLnNsaWRlc1BlclZpZXcpO3QrPTEpe3ZhciByPWEuYWN0aXZlSW5kZXgrdDtpZihyPmEuc2xpZGVzLmxlbmd0aClicmVhaztpLnB1c2goYS5zbGlkZXMuZXEocilbMF0pfWVsc2UgaS5wdXNoKGEuc2xpZGVzLmVxKGEuYWN0aXZlSW5kZXgpWzBdKTtmb3IodD0wO3Q8aS5sZW5ndGg7dCs9MSlpZih2b2lkIDAhPT1pW3RdKXt2YXIgbj1pW3RdLm9mZnNldEhlaWdodDtzPW4+cz9uOnN9cyYmYS4kd3JhcHBlckVsLmNzcygiaGVpZ2h0IixzKyJweCIpfSx1cGRhdGVTbGlkZXNPZmZzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5zbGlkZXMsdD0wO3Q8ZS5sZW5ndGg7dCs9MSllW3RdLnN3aXBlclNsaWRlT2Zmc2V0PXRoaXMuaXNIb3Jpem9udGFsKCk/ZVt0XS5vZmZzZXRMZWZ0OmVbdF0ub2Zmc2V0VG9wfSx1cGRhdGVTbGlkZXNQcm9ncmVzczpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT10aGlzJiZ0aGlzLnRyYW5zbGF0ZXx8MCk7dmFyIHQ9dGhpcyxhPXQucGFyYW1zLGk9dC5zbGlkZXMscz10LnJ0bFRyYW5zbGF0ZTtpZigwIT09aS5sZW5ndGgpe3ZvaWQgMD09PWlbMF0uc3dpcGVyU2xpZGVPZmZzZXQmJnQudXBkYXRlU2xpZGVzT2Zmc2V0KCk7dmFyIHI9LWU7cyYmKHI9ZSksaS5yZW1vdmVDbGFzcyhhLnNsaWRlVmlzaWJsZUNsYXNzKSx0LnZpc2libGVTbGlkZXNJbmRleGVzPVtdLHQudmlzaWJsZVNsaWRlcz1bXTtmb3IodmFyIG49MDtuPGkubGVuZ3RoO24rPTEpe3ZhciBsPWlbbl0sbz0ocisoYS5jZW50ZXJlZFNsaWRlcz90Lm1pblRyYW5zbGF0ZSgpOjApLWwuc3dpcGVyU2xpZGVPZmZzZXQpLyhsLnN3aXBlclNsaWRlU2l6ZSthLnNwYWNlQmV0d2Vlbik7aWYoYS53YXRjaFNsaWRlc1Zpc2liaWxpdHl8fGEuY2VudGVyZWRTbGlkZXMmJmEuYXV0b0hlaWdodCl7dmFyIGQ9LShyLWwuc3dpcGVyU2xpZGVPZmZzZXQpLHA9ZCt0LnNsaWRlc1NpemVzR3JpZFtuXTsoZD49MCYmZDx0LnNpemUtMXx8cD4xJiZwPD10LnNpemV8fGQ8PTAmJnA+PXQuc2l6ZSkmJih0LnZpc2libGVTbGlkZXMucHVzaChsKSx0LnZpc2libGVTbGlkZXNJbmRleGVzLnB1c2gobiksaS5lcShuKS5hZGRDbGFzcyhhLnNsaWRlVmlzaWJsZUNsYXNzKSl9bC5wcm9ncmVzcz1zPy1vOm99dC52aXNpYmxlU2xpZGVzPW0odC52aXNpYmxlU2xpZGVzKX19LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodm9pZCAwPT09ZSl7dmFyIGE9dC5ydGxUcmFuc2xhdGU/LTE6MTtlPXQmJnQudHJhbnNsYXRlJiZ0LnRyYW5zbGF0ZSphfHwwfXZhciBpPXQucGFyYW1zLHM9dC5tYXhUcmFuc2xhdGUoKS10Lm1pblRyYW5zbGF0ZSgpLHI9dC5wcm9ncmVzcyxuPXQuaXNCZWdpbm5pbmcsbD10LmlzRW5kLG89bixkPWw7MD09PXM/KHI9MCxuPSEwLGw9ITApOihuPShyPShlLXQubWluVHJhbnNsYXRlKCkpL3MpPD0wLGw9cj49MSksUyh0LHtwcm9ncmVzczpyLGlzQmVnaW5uaW5nOm4saXNFbmQ6bH0pLChpLndhdGNoU2xpZGVzUHJvZ3Jlc3N8fGkud2F0Y2hTbGlkZXNWaXNpYmlsaXR5fHxpLmNlbnRlcmVkU2xpZGVzJiZpLmF1dG9IZWlnaHQpJiZ0LnVwZGF0ZVNsaWRlc1Byb2dyZXNzKGUpLG4mJiFvJiZ0LmVtaXQoInJlYWNoQmVnaW5uaW5nIHRvRWRnZSIpLGwmJiFkJiZ0LmVtaXQoInJlYWNoRW5kIHRvRWRnZSIpLChvJiYhbnx8ZCYmIWwpJiZ0LmVtaXQoImZyb21FZGdlIiksdC5lbWl0KCJwcm9ncmVzcyIscil9LHVwZGF0ZVNsaWRlc0NsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMsYT10LnNsaWRlcyxpPXQucGFyYW1zLHM9dC4kd3JhcHBlckVsLHI9dC5hY3RpdmVJbmRleCxuPXQucmVhbEluZGV4LGw9dC52aXJ0dWFsJiZpLnZpcnR1YWwuZW5hYmxlZDthLnJlbW92ZUNsYXNzKGkuc2xpZGVBY3RpdmVDbGFzcysiICIraS5zbGlkZU5leHRDbGFzcysiICIraS5zbGlkZVByZXZDbGFzcysiICIraS5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKyIgIitpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKyIgIitpLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzKSwoZT1sP3QuJHdyYXBwZXJFbC5maW5kKCIuIitpLnNsaWRlQ2xhc3MrJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytyKyciXScpOmEuZXEocikpLmFkZENsYXNzKGkuc2xpZGVBY3RpdmVDbGFzcyksaS5sb29wJiYoZS5oYXNDbGFzcyhpLnNsaWRlRHVwbGljYXRlQ2xhc3MpP3MuY2hpbGRyZW4oIi4iK2kuc2xpZGVDbGFzcysiOm5vdCguIitpLnNsaWRlRHVwbGljYXRlQ2xhc3MrJylbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrbisnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3MpOnMuY2hpbGRyZW4oIi4iK2kuc2xpZGVDbGFzcysiLiIraS5zbGlkZUR1cGxpY2F0ZUNsYXNzKydbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrbisnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3MpKTt2YXIgbz1lLm5leHRBbGwoIi4iK2kuc2xpZGVDbGFzcykuZXEoMCkuYWRkQ2xhc3MoaS5zbGlkZU5leHRDbGFzcyk7aS5sb29wJiYwPT09by5sZW5ndGgmJihvPWEuZXEoMCkpLmFkZENsYXNzKGkuc2xpZGVOZXh0Q2xhc3MpO3ZhciBkPWUucHJldkFsbCgiLiIraS5zbGlkZUNsYXNzKS5lcSgwKS5hZGRDbGFzcyhpLnNsaWRlUHJldkNsYXNzKTtpLmxvb3AmJjA9PT1kLmxlbmd0aCYmKGQ9YS5lcSgtMSkpLmFkZENsYXNzKGkuc2xpZGVQcmV2Q2xhc3MpLGkubG9vcCYmKG8uaGFzQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZUNsYXNzKT9zLmNoaWxkcmVuKCIuIitpLnNsaWRlQ2xhc3MrIjpub3QoLiIraS5zbGlkZUR1cGxpY2F0ZUNsYXNzKycpW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK28uYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSsnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKTpzLmNoaWxkcmVuKCIuIitpLnNsaWRlQ2xhc3MrIi4iK2kuc2xpZGVEdXBsaWNhdGVDbGFzcysnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK28uYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSsnIl0nKS5hZGRDbGFzcyhpLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKSxkLmhhc0NsYXNzKGkuc2xpZGVEdXBsaWNhdGVDbGFzcyk/cy5jaGlsZHJlbigiLiIraS5zbGlkZUNsYXNzKyI6bm90KC4iK2kuc2xpZGVEdXBsaWNhdGVDbGFzcysnKVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytkLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikrJyJdJykuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyk6cy5jaGlsZHJlbigiLiIraS5zbGlkZUNsYXNzKyIuIitpLnNsaWRlRHVwbGljYXRlQ2xhc3MrJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytkLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikrJyJdJykuYWRkQ2xhc3MoaS5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcykpLHQuZW1pdFNsaWRlc0NsYXNzZXMoKX0sdXBkYXRlQWN0aXZlSW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHQsYT10aGlzLGk9YS5ydGxUcmFuc2xhdGU/YS50cmFuc2xhdGU6LWEudHJhbnNsYXRlLHM9YS5zbGlkZXNHcmlkLHI9YS5zbmFwR3JpZCxuPWEucGFyYW1zLGw9YS5hY3RpdmVJbmRleCxvPWEucmVhbEluZGV4LGQ9YS5zbmFwSW5kZXgscD1lO2lmKHZvaWQgMD09PXApe2Zvcih2YXIgYz0wO2M8cy5sZW5ndGg7Yys9MSl2b2lkIDAhPT1zW2MrMV0/aT49c1tjXSYmaTxzW2MrMV0tKHNbYysxXS1zW2NdKS8yP3A9YzppPj1zW2NdJiZpPHNbYysxXSYmKHA9YysxKTppPj1zW2NdJiYocD1jKTtuLm5vcm1hbGl6ZVNsaWRlSW5kZXgmJihwPDB8fHZvaWQgMD09PXApJiYocD0wKX1pZihyLmluZGV4T2YoaSk+PTApdD1yLmluZGV4T2YoaSk7ZWxzZXt2YXIgdT1NYXRoLm1pbihuLnNsaWRlc1Blckdyb3VwU2tpcCxwKTt0PXUrTWF0aC5mbG9vcigocC11KS9uLnNsaWRlc1Blckdyb3VwKX1pZih0Pj1yLmxlbmd0aCYmKHQ9ci5sZW5ndGgtMSkscCE9PWwpe3ZhciBoPXBhcnNlSW50KGEuc2xpZGVzLmVxKHApLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil8fHAsMTApO1MoYSx7c25hcEluZGV4OnQscmVhbEluZGV4OmgscHJldmlvdXNJbmRleDpsLGFjdGl2ZUluZGV4OnB9KSxhLmVtaXQoImFjdGl2ZUluZGV4Q2hhbmdlIiksYS5lbWl0KCJzbmFwSW5kZXhDaGFuZ2UiKSxvIT09aCYmYS5lbWl0KCJyZWFsSW5kZXhDaGFuZ2UiKSwoYS5pbml0aWFsaXplZHx8YS5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSYmYS5lbWl0KCJzbGlkZUNoYW5nZSIpfWVsc2UgdCE9PWQmJihhLnNuYXBJbmRleD10LGEuZW1pdCgic25hcEluZGV4Q2hhbmdlIikpfSx1cGRhdGVDbGlja2VkU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQsYT10aGlzLGk9YS5wYXJhbXMscz1tKGUudGFyZ2V0KS5jbG9zZXN0KCIuIitpLnNsaWRlQ2xhc3MpWzBdLHI9ITE7aWYocylmb3IodmFyIG49MDtuPGEuc2xpZGVzLmxlbmd0aDtuKz0xKWlmKGEuc2xpZGVzW25dPT09cyl7cj0hMCx0PW47YnJlYWt9aWYoIXN8fCFyKXJldHVybiBhLmNsaWNrZWRTbGlkZT12b2lkIDAsdm9pZChhLmNsaWNrZWRJbmRleD12b2lkIDApO2EuY2xpY2tlZFNsaWRlPXMsYS52aXJ0dWFsJiZhLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ/YS5jbGlja2VkSW5kZXg9cGFyc2VJbnQobShzKS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLDEwKTphLmNsaWNrZWRJbmRleD10LGkuc2xpZGVUb0NsaWNrZWRTbGlkZSYmdm9pZCAwIT09YS5jbGlja2VkSW5kZXgmJmEuY2xpY2tlZEluZGV4IT09YS5hY3RpdmVJbmRleCYmYS5zbGlkZVRvQ2xpY2tlZFNsaWRlKCl9fSx0cmFuc2xhdGU6e2dldFRyYW5zbGF0ZTpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT10aGlzLmlzSG9yaXpvbnRhbCgpPyJ4IjoieSIpO3ZhciB0PXRoaXMsYT10LnBhcmFtcyxpPXQucnRsVHJhbnNsYXRlLHM9dC50cmFuc2xhdGUscj10LiR3cmFwcGVyRWw7aWYoYS52aXJ0dWFsVHJhbnNsYXRlKXJldHVybiBpPy1zOnM7aWYoYS5jc3NNb2RlKXJldHVybiBzO3ZhciBuPVQoclswXSxlKTtyZXR1cm4gaSYmKG49LW4pLG58fDB9LHNldFRyYW5zbGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMsaT1hLnJ0bFRyYW5zbGF0ZSxzPWEucGFyYW1zLHI9YS4kd3JhcHBlckVsLG49YS53cmFwcGVyRWwsbD1hLnByb2dyZXNzLG89MCxkPTA7YS5pc0hvcml6b250YWwoKT9vPWk/LWU6ZTpkPWUscy5yb3VuZExlbmd0aHMmJihvPU1hdGguZmxvb3IobyksZD1NYXRoLmZsb29yKGQpKSxzLmNzc01vZGU/blthLmlzSG9yaXpvbnRhbCgpPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIl09YS5pc0hvcml6b250YWwoKT8tbzotZDpzLnZpcnR1YWxUcmFuc2xhdGV8fHIudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK28rInB4LCAiK2QrInB4LCAwcHgpIiksYS5wcmV2aW91c1RyYW5zbGF0ZT1hLnRyYW5zbGF0ZSxhLnRyYW5zbGF0ZT1hLmlzSG9yaXpvbnRhbCgpP286ZDt2YXIgcD1hLm1heFRyYW5zbGF0ZSgpLWEubWluVHJhbnNsYXRlKCk7KDA9PT1wPzA6KGUtYS5taW5UcmFuc2xhdGUoKSkvcCkhPT1sJiZhLnVwZGF0ZVByb2dyZXNzKGUpLGEuZW1pdCgic2V0VHJhbnNsYXRlIixhLnRyYW5zbGF0ZSx0KX0sbWluVHJhbnNsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuLXRoaXMuc25hcEdyaWRbMF19LG1heFRyYW5zbGF0ZTpmdW5jdGlvbigpe3JldHVybi10aGlzLnNuYXBHcmlkW3RoaXMuc25hcEdyaWQubGVuZ3RoLTFdfSx0cmFuc2xhdGVUbzpmdW5jdGlvbihlLHQsYSxpLHMpe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PXQmJih0PXRoaXMucGFyYW1zLnNwZWVkKSx2b2lkIDA9PT1hJiYoYT0hMCksdm9pZCAwPT09aSYmKGk9ITApO3ZhciByPXRoaXMsbj1yLnBhcmFtcyxsPXIud3JhcHBlckVsO2lmKHIuYW5pbWF0aW5nJiZuLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbilyZXR1cm4hMTt2YXIgbyxkPXIubWluVHJhbnNsYXRlKCkscD1yLm1heFRyYW5zbGF0ZSgpO2lmKG89aSYmZT5kP2Q6aSYmZTxwP3A6ZSxyLnVwZGF0ZVByb2dyZXNzKG8pLG4uY3NzTW9kZSl7dmFyIGMsdT1yLmlzSG9yaXpvbnRhbCgpO2lmKDA9PT10KWxbdT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCJdPS1vO2Vsc2UgaWYobC5zY3JvbGxUbylsLnNjcm9sbFRvKCgoYz17fSlbdT8ibGVmdCI6InRvcCJdPS1vLGMuYmVoYXZpb3I9InNtb290aCIsYykpO2Vsc2UgbFt1PyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIl09LW87cmV0dXJuITB9cmV0dXJuIDA9PT10PyhyLnNldFRyYW5zaXRpb24oMCksci5zZXRUcmFuc2xhdGUobyksYSYmKHIuZW1pdCgiYmVmb3JlVHJhbnNpdGlvblN0YXJ0Iix0LHMpLHIuZW1pdCgidHJhbnNpdGlvbkVuZCIpKSk6KHIuc2V0VHJhbnNpdGlvbih0KSxyLnNldFRyYW5zbGF0ZShvKSxhJiYoci5lbWl0KCJiZWZvcmVUcmFuc2l0aW9uU3RhcnQiLHQscyksci5lbWl0KCJ0cmFuc2l0aW9uU3RhcnQiKSksci5hbmltYXRpbmd8fChyLmFuaW1hdGluZz0hMCxyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZHx8KHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGUpe3ImJiFyLmRlc3Ryb3llZCYmZS50YXJnZXQ9PT10aGlzJiYoci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSxyLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpLHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kPW51bGwsZGVsZXRlIHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kLGEmJnIuZW1pdCgidHJhbnNpdGlvbkVuZCIpKX0pLHIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSkpLCEwfX0sdHJhbnNpdGlvbjp7c2V0VHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXM7YS5wYXJhbXMuY3NzTW9kZXx8YS4kd3JhcHBlckVsLnRyYW5zaXRpb24oZSksYS5lbWl0KCJzZXRUcmFuc2l0aW9uIixlLHQpfSx0cmFuc2l0aW9uU3RhcnQ6ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIGE9dGhpcyxpPWEuYWN0aXZlSW5kZXgscz1hLnBhcmFtcyxyPWEucHJldmlvdXNJbmRleDtpZighcy5jc3NNb2RlKXtzLmF1dG9IZWlnaHQmJmEudXBkYXRlQXV0b0hlaWdodCgpO3ZhciBuPXQ7aWYobnx8KG49aT5yPyJuZXh0IjppPHI/InByZXYiOiJyZXNldCIpLGEuZW1pdCgidHJhbnNpdGlvblN0YXJ0IiksZSYmaSE9PXIpe2lmKCJyZXNldCI9PT1uKXJldHVybiB2b2lkIGEuZW1pdCgic2xpZGVSZXNldFRyYW5zaXRpb25TdGFydCIpO2EuZW1pdCgic2xpZGVDaGFuZ2VUcmFuc2l0aW9uU3RhcnQiKSwibmV4dCI9PT1uP2EuZW1pdCgic2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0Iik6YS5lbWl0KCJzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQiKX19fSx0cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciBhPXRoaXMsaT1hLmFjdGl2ZUluZGV4LHM9YS5wcmV2aW91c0luZGV4LHI9YS5wYXJhbXM7aWYoYS5hbmltYXRpbmc9ITEsIXIuY3NzTW9kZSl7YS5zZXRUcmFuc2l0aW9uKDApO3ZhciBuPXQ7aWYobnx8KG49aT5zPyJuZXh0IjppPHM/InByZXYiOiJyZXNldCIpLGEuZW1pdCgidHJhbnNpdGlvbkVuZCIpLGUmJmkhPT1zKXtpZigicmVzZXQiPT09bilyZXR1cm4gdm9pZCBhLmVtaXQoInNsaWRlUmVzZXRUcmFuc2l0aW9uRW5kIik7YS5lbWl0KCJzbGlkZUNoYW5nZVRyYW5zaXRpb25FbmQiKSwibmV4dCI9PT1uP2EuZW1pdCgic2xpZGVOZXh0VHJhbnNpdGlvbkVuZCIpOmEuZW1pdCgic2xpZGVQcmV2VHJhbnNpdGlvbkVuZCIpfX19fSxzbGlkZTp7c2xpZGVUbzpmdW5jdGlvbihlLHQsYSxpKXtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT10JiYodD10aGlzLnBhcmFtcy5zcGVlZCksdm9pZCAwPT09YSYmKGE9ITApLCJudW1iZXIiIT10eXBlb2YgZSYmInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiVGhlICdpbmRleCcgYXJndW1lbnQgY2Fubm90IGhhdmUgdHlwZSBvdGhlciB0aGFuICdudW1iZXInIG9yICdzdHJpbmcnLiBbIit0eXBlb2YgZSsiXSBnaXZlbi4iKTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3ZhciBzPXBhcnNlSW50KGUsMTApO2lmKCFpc0Zpbml0ZShzKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXNzZWQtaW4gJ2luZGV4JyAoc3RyaW5nKSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQgdG8gJ251bWJlcicuIFsiK2UrIl0gZ2l2ZW4uIik7ZT1zfXZhciByPXRoaXMsbj1lO248MCYmKG49MCk7dmFyIGw9ci5wYXJhbXMsbz1yLnNuYXBHcmlkLGQ9ci5zbGlkZXNHcmlkLHA9ci5wcmV2aW91c0luZGV4LGM9ci5hY3RpdmVJbmRleCx1PXIucnRsVHJhbnNsYXRlLGg9ci53cmFwcGVyRWw7aWYoci5hbmltYXRpbmcmJmwucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKXJldHVybiExO3ZhciB2PU1hdGgubWluKHIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCxuKSxmPXYrTWF0aC5mbG9vcigobi12KS9yLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7Zj49by5sZW5ndGgmJihmPW8ubGVuZ3RoLTEpLChjfHxsLmluaXRpYWxTbGlkZXx8MCk9PT0ocHx8MCkmJmEmJnIuZW1pdCgiYmVmb3JlU2xpZGVDaGFuZ2VTdGFydCIpO3ZhciBtLGc9LW9bZl07aWYoci51cGRhdGVQcm9ncmVzcyhnKSxsLm5vcm1hbGl6ZVNsaWRlSW5kZXgpZm9yKHZhciBiPTA7YjxkLmxlbmd0aDtiKz0xKXt2YXIgdz0tTWF0aC5mbG9vcigxMDAqZykseT1NYXRoLmZsb29yKDEwMCpkW2JdKSxFPU1hdGguZmxvb3IoMTAwKmRbYisxXSk7dm9pZCAwIT09ZFtiKzFdP3c+PXkmJnc8RS0oRS15KS8yP249Yjp3Pj15JiZ3PEUmJihuPWIrMSk6dz49eSYmKG49Yil9aWYoci5pbml0aWFsaXplZCYmbiE9PWMpe2lmKCFyLmFsbG93U2xpZGVOZXh0JiZnPHIudHJhbnNsYXRlJiZnPHIubWluVHJhbnNsYXRlKCkpcmV0dXJuITE7aWYoIXIuYWxsb3dTbGlkZVByZXYmJmc+ci50cmFuc2xhdGUmJmc+ci5tYXhUcmFuc2xhdGUoKSYmKGN8fDApIT09bilyZXR1cm4hMX1pZihtPW4+Yz8ibmV4dCI6bjxjPyJwcmV2IjoicmVzZXQiLHUmJi1nPT09ci50cmFuc2xhdGV8fCF1JiZnPT09ci50cmFuc2xhdGUpcmV0dXJuIHIudXBkYXRlQWN0aXZlSW5kZXgobiksbC5hdXRvSGVpZ2h0JiZyLnVwZGF0ZUF1dG9IZWlnaHQoKSxyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwic2xpZGUiIT09bC5lZmZlY3QmJnIuc2V0VHJhbnNsYXRlKGcpLCJyZXNldCIhPT1tJiYoci50cmFuc2l0aW9uU3RhcnQoYSxtKSxyLnRyYW5zaXRpb25FbmQoYSxtKSksITE7aWYobC5jc3NNb2RlKXt2YXIgeCxUPXIuaXNIb3Jpem9udGFsKCksQz0tZztpZih1JiYoQz1oLnNjcm9sbFdpZHRoLWgub2Zmc2V0V2lkdGgtQyksMD09PXQpaFtUPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIl09QztlbHNlIGlmKGguc2Nyb2xsVG8paC5zY3JvbGxUbygoKHg9e30pW1Q/ImxlZnQiOiJ0b3AiXT1DLHguYmVoYXZpb3I9InNtb290aCIseCkpO2Vsc2UgaFtUPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIl09QztyZXR1cm4hMH1yZXR1cm4gMD09PXQ/KHIuc2V0VHJhbnNpdGlvbigwKSxyLnNldFRyYW5zbGF0ZShnKSxyLnVwZGF0ZUFjdGl2ZUluZGV4KG4pLHIudXBkYXRlU2xpZGVzQ2xhc3NlcygpLHIuZW1pdCgiYmVmb3JlVHJhbnNpdGlvblN0YXJ0Iix0LGkpLHIudHJhbnNpdGlvblN0YXJ0KGEsbSksci50cmFuc2l0aW9uRW5kKGEsbSkpOihyLnNldFRyYW5zaXRpb24odCksci5zZXRUcmFuc2xhdGUoZyksci51cGRhdGVBY3RpdmVJbmRleChuKSxyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSxyLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsdCxpKSxyLnRyYW5zaXRpb25TdGFydChhLG0pLHIuYW5pbWF0aW5nfHwoci5hbmltYXRpbmc9ITAsci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZHx8KHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oZSl7ciYmIXIuZGVzdHJveWVkJiZlLnRhcmdldD09PXRoaXMmJihyLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpLHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQ9bnVsbCxkZWxldGUgci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCxyLnRyYW5zaXRpb25FbmQoYSxtKSl9KSxyLiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdFRyYW5zaXRpb25FbmQiLHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpKSksITB9LHNsaWRlVG9Mb29wOmZ1bmN0aW9uKGUsdCxhLGkpe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PXQmJih0PXRoaXMucGFyYW1zLnNwZWVkKSx2b2lkIDA9PT1hJiYoYT0hMCk7dmFyIHM9dGhpcyxyPWU7cmV0dXJuIHMucGFyYW1zLmxvb3AmJihyKz1zLmxvb3BlZFNsaWRlcykscy5zbGlkZVRvKHIsdCxhLGkpfSxzbGlkZU5leHQ6ZnVuY3Rpb24oZSx0LGEpe3ZvaWQgMD09PWUmJihlPXRoaXMucGFyYW1zLnNwZWVkKSx2b2lkIDA9PT10JiYodD0hMCk7dmFyIGk9dGhpcyxzPWkucGFyYW1zLHI9aS5hbmltYXRpbmcsbj1pLmFjdGl2ZUluZGV4PHMuc2xpZGVzUGVyR3JvdXBTa2lwPzE6cy5zbGlkZXNQZXJHcm91cDtpZihzLmxvb3Ape2lmKHImJnMubG9vcFByZXZlbnRzU2xpZGUpcmV0dXJuITE7aS5sb29wRml4KCksaS5fY2xpZW50TGVmdD1pLiR3cmFwcGVyRWxbMF0uY2xpZW50TGVmdH1yZXR1cm4gaS5zbGlkZVRvKGkuYWN0aXZlSW5kZXgrbixlLHQsYSl9LHNsaWRlUHJldjpmdW5jdGlvbihlLHQsYSl7dm9pZCAwPT09ZSYmKGU9dGhpcy5wYXJhbXMuc3BlZWQpLHZvaWQgMD09PXQmJih0PSEwKTt2YXIgaT10aGlzLHM9aS5wYXJhbXMscj1pLmFuaW1hdGluZyxuPWkuc25hcEdyaWQsbD1pLnNsaWRlc0dyaWQsbz1pLnJ0bFRyYW5zbGF0ZTtpZihzLmxvb3Ape2lmKHImJnMubG9vcFByZXZlbnRzU2xpZGUpcmV0dXJuITE7aS5sb29wRml4KCksaS5fY2xpZW50TGVmdD1pLiR3cmFwcGVyRWxbMF0uY2xpZW50TGVmdH1mdW5jdGlvbiBkKGUpe3JldHVybiBlPDA/LU1hdGguZmxvb3IoTWF0aC5hYnMoZSkpOk1hdGguZmxvb3IoZSl9dmFyIHA9ZChvP2kudHJhbnNsYXRlOi1pLnRyYW5zbGF0ZSksYz1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZSl9KSk7bltjLmluZGV4T2YocCldO3ZhciB1LGg9bltjLmluZGV4T2YocCktMV07cmV0dXJuIHZvaWQgMD09PWgmJnMuY3NzTW9kZSYmbi5mb3JFYWNoKChmdW5jdGlvbihlKXshaCYmcD49ZSYmKGg9ZSl9KSksdm9pZCAwIT09aCYmKHU9bC5pbmRleE9mKGgpKTwwJiYodT1pLmFjdGl2ZUluZGV4LTEpLGkuc2xpZGVUbyh1LGUsdCxhKX0sc2xpZGVSZXNldDpmdW5jdGlvbihlLHQsYSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXRoaXMucGFyYW1zLnNwZWVkKSx2b2lkIDA9PT10JiYodD0hMCksdGhpcy5zbGlkZVRvKHRoaXMuYWN0aXZlSW5kZXgsZSx0LGEpfSxzbGlkZVRvQ2xvc2VzdDpmdW5jdGlvbihlLHQsYSxpKXt2b2lkIDA9PT1lJiYoZT10aGlzLnBhcmFtcy5zcGVlZCksdm9pZCAwPT09dCYmKHQ9ITApLHZvaWQgMD09PWkmJihpPS41KTt2YXIgcz10aGlzLHI9cy5hY3RpdmVJbmRleCxuPU1hdGgubWluKHMucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCxyKSxsPW4rTWF0aC5mbG9vcigoci1uKS9zLnBhcmFtcy5zbGlkZXNQZXJHcm91cCksbz1zLnJ0bFRyYW5zbGF0ZT9zLnRyYW5zbGF0ZTotcy50cmFuc2xhdGU7aWYobz49cy5zbmFwR3JpZFtsXSl7dmFyIGQ9cy5zbmFwR3JpZFtsXTtvLWQ+KHMuc25hcEdyaWRbbCsxXS1kKSppJiYocis9cy5wYXJhbXMuc2xpZGVzUGVyR3JvdXApfWVsc2V7dmFyIHA9cy5zbmFwR3JpZFtsLTFdO28tcDw9KHMuc25hcEdyaWRbbF0tcCkqaSYmKHItPXMucGFyYW1zLnNsaWRlc1Blckdyb3VwKX1yZXR1cm4gcj1NYXRoLm1heChyLDApLHI9TWF0aC5taW4ocixzLnNsaWRlc0dyaWQubGVuZ3RoLTEpLHMuc2xpZGVUbyhyLGUsdCxhKX0sc2xpZGVUb0NsaWNrZWRTbGlkZTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxhPXQucGFyYW1zLGk9dC4kd3JhcHBlckVsLHM9ImF1dG8iPT09YS5zbGlkZXNQZXJWaWV3P3Quc2xpZGVzUGVyVmlld0R5bmFtaWMoKTphLnNsaWRlc1BlclZpZXcscj10LmNsaWNrZWRJbmRleDtpZihhLmxvb3Ape2lmKHQuYW5pbWF0aW5nKXJldHVybjtlPXBhcnNlSW50KG0odC5jbGlja2VkU2xpZGUpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksMTApLGEuY2VudGVyZWRTbGlkZXM/cjx0Lmxvb3BlZFNsaWRlcy1zLzJ8fHI+dC5zbGlkZXMubGVuZ3RoLXQubG9vcGVkU2xpZGVzK3MvMj8odC5sb29wRml4KCkscj1pLmNoaWxkcmVuKCIuIithLnNsaWRlQ2xhc3MrJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytlKyciXTpub3QoLicrYS5zbGlkZUR1cGxpY2F0ZUNsYXNzKyIpIikuZXEoMCkuaW5kZXgoKSxFKChmdW5jdGlvbigpe3Quc2xpZGVUbyhyKX0pKSk6dC5zbGlkZVRvKHIpOnI+dC5zbGlkZXMubGVuZ3RoLXM/KHQubG9vcEZpeCgpLHI9aS5jaGlsZHJlbigiLiIrYS5zbGlkZUNsYXNzKydbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrZSsnIl06bm90KC4nK2Euc2xpZGVEdXBsaWNhdGVDbGFzcysiKSIpLmVxKDApLmluZGV4KCksRSgoZnVuY3Rpb24oKXt0LnNsaWRlVG8ocil9KSkpOnQuc2xpZGVUbyhyKX1lbHNlIHQuc2xpZGVUbyhyKX19LGxvb3A6e2xvb3BDcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9cigpLGE9ZS5wYXJhbXMsaT1lLiR3cmFwcGVyRWw7aS5jaGlsZHJlbigiLiIrYS5zbGlkZUNsYXNzKyIuIithLnNsaWRlRHVwbGljYXRlQ2xhc3MpLnJlbW92ZSgpO3ZhciBzPWkuY2hpbGRyZW4oIi4iK2Euc2xpZGVDbGFzcyk7aWYoYS5sb29wRmlsbEdyb3VwV2l0aEJsYW5rKXt2YXIgbj1hLnNsaWRlc1Blckdyb3VwLXMubGVuZ3RoJWEuc2xpZGVzUGVyR3JvdXA7aWYobiE9PWEuc2xpZGVzUGVyR3JvdXApe2Zvcih2YXIgbD0wO2w8bjtsKz0xKXt2YXIgbz1tKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKGEuc2xpZGVDbGFzcysiICIrYS5zbGlkZUJsYW5rQ2xhc3MpO2kuYXBwZW5kKG8pfXM9aS5jaGlsZHJlbigiLiIrYS5zbGlkZUNsYXNzKX19ImF1dG8iIT09YS5zbGlkZXNQZXJWaWV3fHxhLmxvb3BlZFNsaWRlc3x8KGEubG9vcGVkU2xpZGVzPXMubGVuZ3RoKSxlLmxvb3BlZFNsaWRlcz1NYXRoLmNlaWwocGFyc2VGbG9hdChhLmxvb3BlZFNsaWRlc3x8YS5zbGlkZXNQZXJWaWV3LDEwKSksZS5sb29wZWRTbGlkZXMrPWEubG9vcEFkZGl0aW9uYWxTbGlkZXMsZS5sb29wZWRTbGlkZXM+cy5sZW5ndGgmJihlLmxvb3BlZFNsaWRlcz1zLmxlbmd0aCk7dmFyIGQ9W10scD1bXTtzLmVhY2goKGZ1bmN0aW9uKHQsYSl7dmFyIGk9bSh0KTthPGUubG9vcGVkU2xpZGVzJiZwLnB1c2godCksYTxzLmxlbmd0aCYmYT49cy5sZW5ndGgtZS5sb29wZWRTbGlkZXMmJmQucHVzaCh0KSxpLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IixhKX0pKTtmb3IodmFyIGM9MDtjPHAubGVuZ3RoO2MrPTEpaS5hcHBlbmQobShwW2NdLmNsb25lTm9kZSghMCkpLmFkZENsYXNzKGEuc2xpZGVEdXBsaWNhdGVDbGFzcykpO2Zvcih2YXIgdT1kLmxlbmd0aC0xO3U+PTA7dS09MSlpLnByZXBlbmQobShkW3VdLmNsb25lTm9kZSghMCkpLmFkZENsYXNzKGEuc2xpZGVEdXBsaWNhdGVDbGFzcykpfSxsb29wRml4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmVtaXQoImJlZm9yZUxvb3BGaXgiKTt2YXIgdCxhPWUuYWN0aXZlSW5kZXgsaT1lLnNsaWRlcyxzPWUubG9vcGVkU2xpZGVzLHI9ZS5hbGxvd1NsaWRlUHJldixuPWUuYWxsb3dTbGlkZU5leHQsbD1lLnNuYXBHcmlkLG89ZS5ydGxUcmFuc2xhdGU7ZS5hbGxvd1NsaWRlUHJldj0hMCxlLmFsbG93U2xpZGVOZXh0PSEwO3ZhciBkPS1sW2FdLWUuZ2V0VHJhbnNsYXRlKCk7aWYoYTxzKXQ9aS5sZW5ndGgtMypzK2EsdCs9cyxlLnNsaWRlVG8odCwwLCExLCEwKSYmMCE9PWQmJmUuc2V0VHJhbnNsYXRlKChvPy1lLnRyYW5zbGF0ZTplLnRyYW5zbGF0ZSktZCk7ZWxzZSBpZihhPj1pLmxlbmd0aC1zKXt0PS1pLmxlbmd0aCthK3MsdCs9cyxlLnNsaWRlVG8odCwwLCExLCEwKSYmMCE9PWQmJmUuc2V0VHJhbnNsYXRlKChvPy1lLnRyYW5zbGF0ZTplLnRyYW5zbGF0ZSktZCl9ZS5hbGxvd1NsaWRlUHJldj1yLGUuYWxsb3dTbGlkZU5leHQ9bixlLmVtaXQoImxvb3BGaXgiKX0sbG9vcERlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kd3JhcHBlckVsLGE9ZS5wYXJhbXMsaT1lLnNsaWRlczt0LmNoaWxkcmVuKCIuIithLnNsaWRlQ2xhc3MrIi4iK2Euc2xpZGVEdXBsaWNhdGVDbGFzcysiLC4iK2Euc2xpZGVDbGFzcysiLiIrYS5zbGlkZUJsYW5rQ2xhc3MpLnJlbW92ZSgpLGkucmVtb3ZlQXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKX19LGdyYWJDdXJzb3I6e3NldEdyYWJDdXJzb3I6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZighKHQuc3VwcG9ydC50b3VjaHx8IXQucGFyYW1zLnNpbXVsYXRlVG91Y2h8fHQucGFyYW1zLndhdGNoT3ZlcmZsb3cmJnQuaXNMb2NrZWR8fHQucGFyYW1zLmNzc01vZGUpKXt2YXIgYT10LmVsO2Euc3R5bGUuY3Vyc29yPSJtb3ZlIixhLnN0eWxlLmN1cnNvcj1lPyItd2Via2l0LWdyYWJiaW5nIjoiLXdlYmtpdC1ncmFiIixhLnN0eWxlLmN1cnNvcj1lPyItbW96LWdyYWJiaW4iOiItbW96LWdyYWIiLGEuc3R5bGUuY3Vyc29yPWU/ImdyYWJiaW5nIjoiZ3JhYiJ9fSx1bnNldEdyYWJDdXJzb3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2Uuc3VwcG9ydC50b3VjaHx8ZS5wYXJhbXMud2F0Y2hPdmVyZmxvdyYmZS5pc0xvY2tlZHx8ZS5wYXJhbXMuY3NzTW9kZXx8KGUuZWwuc3R5bGUuY3Vyc29yPSIiKX19LG1hbmlwdWxhdGlvbjp7YXBwZW5kU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQuJHdyYXBwZXJFbCxpPXQucGFyYW1zO2lmKGkubG9vcCYmdC5sb29wRGVzdHJveSgpLCJvYmplY3QiPT10eXBlb2YgZSYmImxlbmd0aCJpbiBlKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cys9MSllW3NdJiZhLmFwcGVuZChlW3NdKTtlbHNlIGEuYXBwZW5kKGUpO2kubG9vcCYmdC5sb29wQ3JlYXRlKCksaS5vYnNlcnZlciYmdC5zdXBwb3J0Lm9ic2VydmVyfHx0LnVwZGF0ZSgpfSxwcmVwZW5kU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQucGFyYW1zLGk9dC4kd3JhcHBlckVsLHM9dC5hY3RpdmVJbmRleDthLmxvb3AmJnQubG9vcERlc3Ryb3koKTt2YXIgcj1zKzE7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiYibGVuZ3RoImluIGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9MSllW25dJiZpLnByZXBlbmQoZVtuXSk7cj1zK2UubGVuZ3RofWVsc2UgaS5wcmVwZW5kKGUpO2EubG9vcCYmdC5sb29wQ3JlYXRlKCksYS5vYnNlcnZlciYmdC5zdXBwb3J0Lm9ic2VydmVyfHx0LnVwZGF0ZSgpLHQuc2xpZGVUbyhyLDAsITEpfSxhZGRTbGlkZTpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMsaT1hLiR3cmFwcGVyRWwscz1hLnBhcmFtcyxyPWEuYWN0aXZlSW5kZXg7cy5sb29wJiYoci09YS5sb29wZWRTbGlkZXMsYS5sb29wRGVzdHJveSgpLGEuc2xpZGVzPWkuY2hpbGRyZW4oIi4iK3Muc2xpZGVDbGFzcykpO3ZhciBuPWEuc2xpZGVzLmxlbmd0aDtpZihlPD0wKWEucHJlcGVuZFNsaWRlKHQpO2Vsc2UgaWYoZT49bilhLmFwcGVuZFNsaWRlKHQpO2Vsc2V7Zm9yKHZhciBsPXI+ZT9yKzE6cixvPVtdLGQ9bi0xO2Q+PWU7ZC09MSl7dmFyIHA9YS5zbGlkZXMuZXEoZCk7cC5yZW1vdmUoKSxvLnVuc2hpZnQocCl9aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYibGVuZ3RoImluIHQpe2Zvcih2YXIgYz0wO2M8dC5sZW5ndGg7Yys9MSl0W2NdJiZpLmFwcGVuZCh0W2NdKTtsPXI+ZT9yK3QubGVuZ3RoOnJ9ZWxzZSBpLmFwcGVuZCh0KTtmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrPTEpaS5hcHBlbmQob1t1XSk7cy5sb29wJiZhLmxvb3BDcmVhdGUoKSxzLm9ic2VydmVyJiZhLnN1cHBvcnQub2JzZXJ2ZXJ8fGEudXBkYXRlKCkscy5sb29wP2Euc2xpZGVUbyhsK2EubG9vcGVkU2xpZGVzLDAsITEpOmEuc2xpZGVUbyhsLDAsITEpfX0scmVtb3ZlU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQucGFyYW1zLGk9dC4kd3JhcHBlckVsLHM9dC5hY3RpdmVJbmRleDthLmxvb3AmJihzLT10Lmxvb3BlZFNsaWRlcyx0Lmxvb3BEZXN0cm95KCksdC5zbGlkZXM9aS5jaGlsZHJlbigiLiIrYS5zbGlkZUNsYXNzKSk7dmFyIHIsbj1zO2lmKCJvYmplY3QiPT10eXBlb2YgZSYmImxlbmd0aCJpbiBlKXtmb3IodmFyIGw9MDtsPGUubGVuZ3RoO2wrPTEpcj1lW2xdLHQuc2xpZGVzW3JdJiZ0LnNsaWRlcy5lcShyKS5yZW1vdmUoKSxyPG4mJihuLT0xKTtuPU1hdGgubWF4KG4sMCl9ZWxzZSByPWUsdC5zbGlkZXNbcl0mJnQuc2xpZGVzLmVxKHIpLnJlbW92ZSgpLHI8biYmKG4tPTEpLG49TWF0aC5tYXgobiwwKTthLmxvb3AmJnQubG9vcENyZWF0ZSgpLGEub2JzZXJ2ZXImJnQuc3VwcG9ydC5vYnNlcnZlcnx8dC51cGRhdGUoKSxhLmxvb3A/dC5zbGlkZVRvKG4rdC5sb29wZWRTbGlkZXMsMCwhMSk6dC5zbGlkZVRvKG4sMCwhMSl9LHJlbW92ZUFsbFNsaWRlczpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnNsaWRlcy5sZW5ndGg7dCs9MSllLnB1c2godCk7dGhpcy5yZW1vdmVTbGlkZShlKX19LGV2ZW50czp7YXR0YWNoRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXIoKSxhPWUucGFyYW1zLGk9ZS50b3VjaEV2ZW50cyxzPWUuZWwsbj1lLndyYXBwZXJFbCxsPWUuZGV2aWNlLG89ZS5zdXBwb3J0O2Uub25Ub3VjaFN0YXJ0PU8uYmluZChlKSxlLm9uVG91Y2hNb3ZlPUEuYmluZChlKSxlLm9uVG91Y2hFbmQ9RC5iaW5kKGUpLGEuY3NzTW9kZSYmKGUub25TY3JvbGw9Qi5iaW5kKGUpKSxlLm9uQ2xpY2s9Ry5iaW5kKGUpO3ZhciBkPSEhYS5uZXN0ZWQ7aWYoIW8udG91Y2gmJm8ucG9pbnRlckV2ZW50cylzLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCxlLm9uVG91Y2hTdGFydCwhMSksdC5hZGRFdmVudExpc3RlbmVyKGkubW92ZSxlLm9uVG91Y2hNb3ZlLGQpLHQuYWRkRXZlbnRMaXN0ZW5lcihpLmVuZCxlLm9uVG91Y2hFbmQsITEpO2Vsc2V7aWYoby50b3VjaCl7dmFyIHA9ISgidG91Y2hzdGFydCIhPT1pLnN0YXJ0fHwhby5wYXNzaXZlTGlzdGVuZXJ8fCFhLnBhc3NpdmVMaXN0ZW5lcnMpJiZ7cGFzc2l2ZTohMCxjYXB0dXJlOiExfTtzLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCxlLm9uVG91Y2hTdGFydCxwKSxzLmFkZEV2ZW50TGlzdGVuZXIoaS5tb3ZlLGUub25Ub3VjaE1vdmUsby5wYXNzaXZlTGlzdGVuZXI/e3Bhc3NpdmU6ITEsY2FwdHVyZTpkfTpkKSxzLmFkZEV2ZW50TGlzdGVuZXIoaS5lbmQsZS5vblRvdWNoRW5kLHApLGkuY2FuY2VsJiZzLmFkZEV2ZW50TGlzdGVuZXIoaS5jYW5jZWwsZS5vblRvdWNoRW5kLHApLEh8fCh0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLFgpLEg9ITApfShhLnNpbXVsYXRlVG91Y2gmJiFsLmlvcyYmIWwuYW5kcm9pZHx8YS5zaW11bGF0ZVRvdWNoJiYhby50b3VjaCYmbC5pb3MpJiYocy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGUub25Ub3VjaFN0YXJ0LCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZS5vblRvdWNoTW92ZSxkKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGUub25Ub3VjaEVuZCwhMSkpfShhLnByZXZlbnRDbGlja3N8fGEucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSYmcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZS5vbkNsaWNrLCEwKSxhLmNzc01vZGUmJm4uYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlLm9uU2Nyb2xsKSxhLnVwZGF0ZU9uV2luZG93UmVzaXplP2Uub24obC5pb3N8fGwuYW5kcm9pZD8icmVzaXplIG9yaWVudGF0aW9uY2hhbmdlIG9ic2VydmVyVXBkYXRlIjoicmVzaXplIG9ic2VydmVyVXBkYXRlIixOLCEwKTplLm9uKCJvYnNlcnZlclVwZGF0ZSIsTiwhMCl9LGRldGFjaEV2ZW50czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1yKCksYT1lLnBhcmFtcyxpPWUudG91Y2hFdmVudHMscz1lLmVsLG49ZS53cmFwcGVyRWwsbD1lLmRldmljZSxvPWUuc3VwcG9ydCxkPSEhYS5uZXN0ZWQ7aWYoIW8udG91Y2gmJm8ucG9pbnRlckV2ZW50cylzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS5zdGFydCxlLm9uVG91Y2hTdGFydCwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKGkubW92ZSxlLm9uVG91Y2hNb3ZlLGQpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLmVuZCxlLm9uVG91Y2hFbmQsITEpO2Vsc2V7aWYoby50b3VjaCl7dmFyIHA9ISgib25Ub3VjaFN0YXJ0IiE9PWkuc3RhcnR8fCFvLnBhc3NpdmVMaXN0ZW5lcnx8IWEucGFzc2l2ZUxpc3RlbmVycykmJntwYXNzaXZlOiEwLGNhcHR1cmU6ITF9O3MucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLnN0YXJ0LGUub25Ub3VjaFN0YXJ0LHApLHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLm1vdmUsZS5vblRvdWNoTW92ZSxkKSxzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS5lbmQsZS5vblRvdWNoRW5kLHApLGkuY2FuY2VsJiZzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS5jYW5jZWwsZS5vblRvdWNoRW5kLHApfShhLnNpbXVsYXRlVG91Y2gmJiFsLmlvcyYmIWwuYW5kcm9pZHx8YS5zaW11bGF0ZVRvdWNoJiYhby50b3VjaCYmbC5pb3MpJiYocy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGUub25Ub3VjaFN0YXJ0LCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZS5vblRvdWNoTW92ZSxkKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGUub25Ub3VjaEVuZCwhMSkpfShhLnByZXZlbnRDbGlja3N8fGEucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSYmcy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsZS5vbkNsaWNrLCEwKSxhLmNzc01vZGUmJm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlLm9uU2Nyb2xsKSxlLm9mZihsLmlvc3x8bC5hbmRyb2lkPyJyZXNpemUgb3JpZW50YXRpb25jaGFuZ2Ugb2JzZXJ2ZXJVcGRhdGUiOiJyZXNpemUgb2JzZXJ2ZXJVcGRhdGUiLE4pfX0sYnJlYWtwb2ludHM6e3NldEJyZWFrcG9pbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5hY3RpdmVJbmRleCxhPWUuaW5pdGlhbGl6ZWQsaT1lLmxvb3BlZFNsaWRlcyxzPXZvaWQgMD09PWk/MDppLHI9ZS5wYXJhbXMsbj1lLiRlbCxsPXIuYnJlYWtwb2ludHM7aWYobCYmKCFsfHwwIT09T2JqZWN0LmtleXMobCkubGVuZ3RoKSl7dmFyIG89ZS5nZXRCcmVha3BvaW50KGwsZS5wYXJhbXMuYnJlYWtwb2ludHNCYXNlLGUuZWwpO2lmKG8mJmUuY3VycmVudEJyZWFrcG9pbnQhPT1vKXt2YXIgZD1vIGluIGw/bFtvXTp2b2lkIDA7ZCYmWyJzbGlkZXNQZXJWaWV3Iiwic3BhY2VCZXR3ZWVuIiwic2xpZGVzUGVyR3JvdXAiLCJzbGlkZXNQZXJHcm91cFNraXAiLCJzbGlkZXNQZXJDb2x1bW4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1kW2VdO3ZvaWQgMCE9PXQmJihkW2VdPSJzbGlkZXNQZXJWaWV3IiE9PWV8fCJBVVRPIiE9PXQmJiJhdXRvIiE9PXQ/InNsaWRlc1BlclZpZXciPT09ZT9wYXJzZUZsb2F0KHQpOnBhcnNlSW50KHQsMTApOiJhdXRvIil9KSk7dmFyIHA9ZHx8ZS5vcmlnaW5hbFBhcmFtcyxjPXIuc2xpZGVzUGVyQ29sdW1uPjEsdT1wLnNsaWRlc1BlckNvbHVtbj4xO2MmJiF1PyhuLnJlbW92ZUNsYXNzKHIuY29udGFpbmVyTW9kaWZpZXJDbGFzcysibXVsdGlyb3cgIityLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MrIm11bHRpcm93LWNvbHVtbiIpLGUuZW1pdENvbnRhaW5lckNsYXNzZXMoKSk6IWMmJnUmJihuLmFkZENsYXNzKHIuY29udGFpbmVyTW9kaWZpZXJDbGFzcysibXVsdGlyb3ciKSwiY29sdW1uIj09PXAuc2xpZGVzUGVyQ29sdW1uRmlsbCYmbi5hZGRDbGFzcyhyLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MrIm11bHRpcm93LWNvbHVtbiIpLGUuZW1pdENvbnRhaW5lckNsYXNzZXMoKSk7dmFyIGg9cC5kaXJlY3Rpb24mJnAuZGlyZWN0aW9uIT09ci5kaXJlY3Rpb24sdj1yLmxvb3AmJihwLnNsaWRlc1BlclZpZXchPT1yLnNsaWRlc1BlclZpZXd8fGgpO2gmJmEmJmUuY2hhbmdlRGlyZWN0aW9uKCksUyhlLnBhcmFtcyxwKSxTKGUse2FsbG93VG91Y2hNb3ZlOmUucGFyYW1zLmFsbG93VG91Y2hNb3ZlLGFsbG93U2xpZGVOZXh0OmUucGFyYW1zLmFsbG93U2xpZGVOZXh0LGFsbG93U2xpZGVQcmV2OmUucGFyYW1zLmFsbG93U2xpZGVQcmV2fSksZS5jdXJyZW50QnJlYWtwb2ludD1vLGUuZW1pdCgiX2JlZm9yZUJyZWFrcG9pbnQiLHApLHYmJmEmJihlLmxvb3BEZXN0cm95KCksZS5sb29wQ3JlYXRlKCksZS51cGRhdGVTbGlkZXMoKSxlLnNsaWRlVG8odC1zK2UubG9vcGVkU2xpZGVzLDAsITEpKSxlLmVtaXQoImJyZWFrcG9pbnQiLHApfX19LGdldEJyZWFrcG9pbnQ6ZnVuY3Rpb24oZSx0LGEpe2lmKHZvaWQgMD09PXQmJih0PSJ3aW5kb3ciKSxlJiYoImNvbnRhaW5lciIhPT10fHxhKSl7dmFyIGk9ITEscz1sKCkscj0id2luZG93Ij09PXQ/cy5pbm5lcldpZHRoOmEuY2xpZW50V2lkdGgsbj0id2luZG93Ij09PXQ/cy5pbm5lckhlaWdodDphLmNsaWVudEhlaWdodCxvPU9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYwPT09ZS5pbmRleE9mKCJAIikpe3ZhciB0PXBhcnNlRmxvYXQoZS5zdWJzdHIoMSkpO3JldHVybnt2YWx1ZTpuKnQscG9pbnQ6ZX19cmV0dXJue3ZhbHVlOmUscG9pbnQ6ZX19KSk7by5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBwYXJzZUludChlLnZhbHVlLDEwKS1wYXJzZUludCh0LnZhbHVlLDEwKX0pKTtmb3IodmFyIGQ9MDtkPG8ubGVuZ3RoO2QrPTEpe3ZhciBwPW9bZF0sYz1wLnBvaW50O3AudmFsdWU8PXImJihpPWMpfXJldHVybiBpfHwibWF4In19fSxjaGVja092ZXJmbG93OntjaGVja092ZXJmbG93OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUucGFyYW1zLGE9ZS5pc0xvY2tlZCxpPWUuc2xpZGVzLmxlbmd0aD4wJiZ0LnNsaWRlc09mZnNldEJlZm9yZSt0LnNwYWNlQmV0d2VlbiooZS5zbGlkZXMubGVuZ3RoLTEpK2Uuc2xpZGVzWzBdLm9mZnNldFdpZHRoKmUuc2xpZGVzLmxlbmd0aDt0LnNsaWRlc09mZnNldEJlZm9yZSYmdC5zbGlkZXNPZmZzZXRBZnRlciYmaT9lLmlzTG9ja2VkPWk8PWUuc2l6ZTplLmlzTG9ja2VkPTE9PT1lLnNuYXBHcmlkLmxlbmd0aCxlLmFsbG93U2xpZGVOZXh0PSFlLmlzTG9ja2VkLGUuYWxsb3dTbGlkZVByZXY9IWUuaXNMb2NrZWQsYSE9PWUuaXNMb2NrZWQmJmUuZW1pdChlLmlzTG9ja2VkPyJsb2NrIjoidW5sb2NrIiksYSYmYSE9PWUuaXNMb2NrZWQmJihlLmlzRW5kPSExLGUubmF2aWdhdGlvbiYmZS5uYXZpZ2F0aW9uLnVwZGF0ZSgpKX19LGNsYXNzZXM6e2FkZENsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZSx0LGEsaT10aGlzLHM9aS5jbGFzc05hbWVzLHI9aS5wYXJhbXMsbj1pLnJ0bCxsPWkuJGVsLG89aS5kZXZpY2UsZD1pLnN1cHBvcnQscD0oZT1bImluaXRpYWxpemVkIixyLmRpcmVjdGlvbix7InBvaW50ZXItZXZlbnRzIjpkLnBvaW50ZXJFdmVudHMmJiFkLnRvdWNofSx7ImZyZWUtbW9kZSI6ci5mcmVlTW9kZX0se2F1dG9oZWlnaHQ6ci5hdXRvSGVpZ2h0fSx7cnRsOm59LHttdWx0aXJvdzpyLnNsaWRlc1BlckNvbHVtbj4xfSx7Im11bHRpcm93LWNvbHVtbiI6ci5zbGlkZXNQZXJDb2x1bW4+MSYmImNvbHVtbiI9PT1yLnNsaWRlc1BlckNvbHVtbkZpbGx9LHthbmRyb2lkOm8uYW5kcm9pZH0se2lvczpvLmlvc30seyJjc3MtbW9kZSI6ci5jc3NNb2RlfV0sdD1yLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MsYT1bXSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpeyJvYmplY3QiPT10eXBlb2YgZT9PYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgaT1lWzBdO2VbMV0mJmEucHVzaCh0K2kpfSkpOiJzdHJpbmciPT10eXBlb2YgZSYmYS5wdXNoKHQrZSl9KSksYSk7cy5wdXNoLmFwcGx5KHMscCksbC5hZGRDbGFzcyhbXS5jb25jYXQocykuam9pbigiICIpKSxpLmVtaXRDb250YWluZXJDbGFzc2VzKCl9LHJlbW92ZUNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kZWwsYT1lLmNsYXNzTmFtZXM7dC5yZW1vdmVDbGFzcyhhLmpvaW4oIiAiKSksZS5lbWl0Q29udGFpbmVyQ2xhc3NlcygpfX0saW1hZ2VzOntsb2FkSW1hZ2U6ZnVuY3Rpb24oZSx0LGEsaSxzLHIpe3ZhciBuLG89bCgpO2Z1bmN0aW9uIGQoKXtyJiZyKCl9bShlKS5wYXJlbnQoInBpY3R1cmUiKVswXXx8ZS5jb21wbGV0ZSYmcz9kKCk6dD8oKG49bmV3IG8uSW1hZ2UpLm9ubG9hZD1kLG4ub25lcnJvcj1kLGkmJihuLnNpemVzPWkpLGEmJihuLnNyY3NldD1hKSx0JiYobi5zcmM9dCkpOmQoKX0scHJlbG9hZEltYWdlczpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZnVuY3Rpb24gdCgpe251bGwhPWUmJmUmJiFlLmRlc3Ryb3llZCYmKHZvaWQgMCE9PWUuaW1hZ2VzTG9hZGVkJiYoZS5pbWFnZXNMb2FkZWQrPTEpLGUuaW1hZ2VzTG9hZGVkPT09ZS5pbWFnZXNUb0xvYWQubGVuZ3RoJiYoZS5wYXJhbXMudXBkYXRlT25JbWFnZXNSZWFkeSYmZS51cGRhdGUoKSxlLmVtaXQoImltYWdlc1JlYWR5IikpKX1lLmltYWdlc1RvTG9hZD1lLiRlbC5maW5kKCJpbWciKTtmb3IodmFyIGE9MDthPGUuaW1hZ2VzVG9Mb2FkLmxlbmd0aDthKz0xKXt2YXIgaT1lLmltYWdlc1RvTG9hZFthXTtlLmxvYWRJbWFnZShpLGkuY3VycmVudFNyY3x8aS5nZXRBdHRyaWJ1dGUoInNyYyIpLGkuc3Jjc2V0fHxpLmdldEF0dHJpYnV0ZSgic3Jjc2V0IiksaS5zaXplc3x8aS5nZXRBdHRyaWJ1dGUoInNpemVzIiksITAsdCl9fX19LFY9e30sVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtmb3IodmFyIGUsYSxpPWFyZ3VtZW50cy5sZW5ndGgscz1uZXcgQXJyYXkoaSkscj0wO3I8aTtyKyspc1tyXT1hcmd1bWVudHNbcl07aWYoMT09PXMubGVuZ3RoJiZzWzBdLmNvbnN0cnVjdG9yJiZzWzBdLmNvbnN0cnVjdG9yPT09T2JqZWN0P2E9c1swXTooZT1zWzBdLGE9c1sxXSksYXx8KGE9e30pLGE9Uyh7fSxhKSxlJiYhYS5lbCYmKGEuZWw9ZSksYS5lbCYmbShhLmVsKS5sZW5ndGg+MSl7dmFyIG49W107cmV0dXJuIG0oYS5lbCkuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9Uyh7fSxhLHtlbDplfSk7bi5wdXNoKG5ldyB0KGkpKX0pKSxufXZhciBsPXRoaXM7bC5zdXBwb3J0PXooKSxsLmRldmljZT1QKHt1c2VyQWdlbnQ6YS51c2VyQWdlbnR9KSxsLmJyb3dzZXI9aygpLGwuZXZlbnRzTGlzdGVuZXJzPXt9LGwuZXZlbnRzQW55TGlzdGVuZXJzPVtdLHZvaWQgMD09PWwubW9kdWxlcyYmKGwubW9kdWxlcz17fSksT2JqZWN0LmtleXMobC5tb2R1bGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1sLm1vZHVsZXNbZV07aWYodC5wYXJhbXMpe3ZhciBpPU9iamVjdC5rZXlzKHQucGFyYW1zKVswXSxzPXQucGFyYW1zW2ldO2lmKCJvYmplY3QiIT10eXBlb2Ygc3x8bnVsbD09PXMpcmV0dXJuO2lmKCEoaSBpbiBhKXx8ISgiZW5hYmxlZCJpbiBzKSlyZXR1cm47ITA9PT1hW2ldJiYoYVtpXT17ZW5hYmxlZDohMH0pLCJvYmplY3QiIT10eXBlb2YgYVtpXXx8ImVuYWJsZWQiaW4gYVtpXXx8KGFbaV0uZW5hYmxlZD0hMCksYVtpXXx8KGFbaV09e2VuYWJsZWQ6ITF9KX19KSk7dmFyIG8sZCxwPVMoe30sWSk7cmV0dXJuIGwudXNlUGFyYW1zKHApLGwucGFyYW1zPVMoe30scCxWLGEpLGwub3JpZ2luYWxQYXJhbXM9Uyh7fSxsLnBhcmFtcyksbC5wYXNzZWRQYXJhbXM9Uyh7fSxhKSxsLnBhcmFtcyYmbC5wYXJhbXMub24mJk9iamVjdC5rZXlzKGwucGFyYW1zLm9uKS5mb3JFYWNoKChmdW5jdGlvbihlKXtsLm9uKGUsbC5wYXJhbXMub25bZV0pfSkpLGwucGFyYW1zJiZsLnBhcmFtcy5vbkFueSYmbC5vbkFueShsLnBhcmFtcy5vbkFueSksbC4kPW0sUyhsLHtlbDplLGNsYXNzTmFtZXM6W10sc2xpZGVzOm0oKSxzbGlkZXNHcmlkOltdLHNuYXBHcmlkOltdLHNsaWRlc1NpemVzR3JpZDpbXSxpc0hvcml6b250YWw6ZnVuY3Rpb24oKXtyZXR1cm4iaG9yaXpvbnRhbCI9PT1sLnBhcmFtcy5kaXJlY3Rpb259LGlzVmVydGljYWw6ZnVuY3Rpb24oKXtyZXR1cm4idmVydGljYWwiPT09bC5wYXJhbXMuZGlyZWN0aW9ufSxhY3RpdmVJbmRleDowLHJlYWxJbmRleDowLGlzQmVnaW5uaW5nOiEwLGlzRW5kOiExLHRyYW5zbGF0ZTowLHByZXZpb3VzVHJhbnNsYXRlOjAscHJvZ3Jlc3M6MCx2ZWxvY2l0eTowLGFuaW1hdGluZzohMSxhbGxvd1NsaWRlTmV4dDpsLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCxhbGxvd1NsaWRlUHJldjpsLnBhcmFtcy5hbGxvd1NsaWRlUHJldix0b3VjaEV2ZW50czoobz1bInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIl0sZD1bIm1vdXNlZG93biIsIm1vdXNlbW92ZSIsIm1vdXNldXAiXSxsLnN1cHBvcnQucG9pbnRlckV2ZW50cyYmKGQ9WyJwb2ludGVyZG93biIsInBvaW50ZXJtb3ZlIiwicG9pbnRlcnVwIl0pLGwudG91Y2hFdmVudHNUb3VjaD17c3RhcnQ6b1swXSxtb3ZlOm9bMV0sZW5kOm9bMl0sY2FuY2VsOm9bM119LGwudG91Y2hFdmVudHNEZXNrdG9wPXtzdGFydDpkWzBdLG1vdmU6ZFsxXSxlbmQ6ZFsyXX0sbC5zdXBwb3J0LnRvdWNofHwhbC5wYXJhbXMuc2ltdWxhdGVUb3VjaD9sLnRvdWNoRXZlbnRzVG91Y2g6bC50b3VjaEV2ZW50c0Rlc2t0b3ApLHRvdWNoRXZlbnRzRGF0YTp7aXNUb3VjaGVkOnZvaWQgMCxpc01vdmVkOnZvaWQgMCxhbGxvd1RvdWNoQ2FsbGJhY2tzOnZvaWQgMCx0b3VjaFN0YXJ0VGltZTp2b2lkIDAsaXNTY3JvbGxpbmc6dm9pZCAwLGN1cnJlbnRUcmFuc2xhdGU6dm9pZCAwLHN0YXJ0VHJhbnNsYXRlOnZvaWQgMCxhbGxvd1RocmVzaG9sZE1vdmU6dm9pZCAwLGZvcm1FbGVtZW50czoiaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCB0ZXh0YXJlYSwgYnV0dG9uLCB2aWRlbywgbGFiZWwiLGxhc3RDbGlja1RpbWU6eCgpLGNsaWNrVGltZW91dDp2b2lkIDAsdmVsb2NpdGllczpbXSxhbGxvd01vbWVudHVtQm91bmNlOnZvaWQgMCxpc1RvdWNoRXZlbnQ6dm9pZCAwLHN0YXJ0TW92aW5nOnZvaWQgMH0sYWxsb3dDbGljazohMCxhbGxvd1RvdWNoTW92ZTpsLnBhcmFtcy5hbGxvd1RvdWNoTW92ZSx0b3VjaGVzOntzdGFydFg6MCxzdGFydFk6MCxjdXJyZW50WDowLGN1cnJlbnRZOjAsZGlmZjowfSxpbWFnZXNUb0xvYWQ6W10saW1hZ2VzTG9hZGVkOjB9KSxsLnVzZU1vZHVsZXMoKSxsLmVtaXQoIl9zd2lwZXIiKSxsLnBhcmFtcy5pbml0JiZsLmluaXQoKSxsfXZhciBhLGkscyxyPXQucHJvdG90eXBlO3JldHVybiByLmVtaXRDb250YWluZXJDbGFzc2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlLnBhcmFtcy5fZW1pdENsYXNzZXMmJmUuZWwpe3ZhciB0PWUuZWwuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQuaW5kZXhPZigic3dpcGVyLWNvbnRhaW5lciIpfHwwPT09dC5pbmRleE9mKGUucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpfSkpO2UuZW1pdCgiX2NvbnRhaW5lckNsYXNzZXMiLHQuam9pbigiICIpKX19LHIuZ2V0U2xpZGVDbGFzc2VzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gMD09PWUuaW5kZXhPZigic3dpcGVyLXNsaWRlIil8fDA9PT1lLmluZGV4T2YodC5wYXJhbXMuc2xpZGVDbGFzcyl9KSkuam9pbigiICIpfSxyLmVtaXRTbGlkZXNDbGFzc2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlLnBhcmFtcy5fZW1pdENsYXNzZXMmJmUuZWwpe3ZhciB0PVtdO2Uuc2xpZGVzLmVhY2goKGZ1bmN0aW9uKGEpe3ZhciBpPWUuZ2V0U2xpZGVDbGFzc2VzKGEpO3QucHVzaCh7c2xpZGVFbDphLGNsYXNzTmFtZXM6aX0pLGUuZW1pdCgiX3NsaWRlQ2xhc3MiLGEsaSl9KSksZS5lbWl0KCJfc2xpZGVDbGFzc2VzIix0KX19LHIuc2xpZGVzUGVyVmlld0R5bmFtaWM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5wYXJhbXMsYT1lLnNsaWRlcyxpPWUuc2xpZGVzR3JpZCxzPWUuc2l6ZSxyPWUuYWN0aXZlSW5kZXgsbj0xO2lmKHQuY2VudGVyZWRTbGlkZXMpe2Zvcih2YXIgbCxvPWFbcl0uc3dpcGVyU2xpZGVTaXplLGQ9cisxO2Q8YS5sZW5ndGg7ZCs9MSlhW2RdJiYhbCYmKG4rPTEsKG8rPWFbZF0uc3dpcGVyU2xpZGVTaXplKT5zJiYobD0hMCkpO2Zvcih2YXIgcD1yLTE7cD49MDtwLT0xKWFbcF0mJiFsJiYobis9MSwobys9YVtwXS5zd2lwZXJTbGlkZVNpemUpPnMmJihsPSEwKSl9ZWxzZSBmb3IodmFyIGM9cisxO2M8YS5sZW5ndGg7Yys9MSlpW2NdLWlbcl08cyYmKG4rPTEpO3JldHVybiBufSxyLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoZSYmIWUuZGVzdHJveWVkKXt2YXIgdD1lLnNuYXBHcmlkLGE9ZS5wYXJhbXM7YS5icmVha3BvaW50cyYmZS5zZXRCcmVha3BvaW50KCksZS51cGRhdGVTaXplKCksZS51cGRhdGVTbGlkZXMoKSxlLnVwZGF0ZVByb2dyZXNzKCksZS51cGRhdGVTbGlkZXNDbGFzc2VzKCksZS5wYXJhbXMuZnJlZU1vZGU/KGkoKSxlLnBhcmFtcy5hdXRvSGVpZ2h0JiZlLnVwZGF0ZUF1dG9IZWlnaHQoKSk6KCgiYXV0byI9PT1lLnBhcmFtcy5zbGlkZXNQZXJWaWV3fHxlLnBhcmFtcy5zbGlkZXNQZXJWaWV3PjEpJiZlLmlzRW5kJiYhZS5wYXJhbXMuY2VudGVyZWRTbGlkZXM/ZS5zbGlkZVRvKGUuc2xpZGVzLmxlbmd0aC0xLDAsITEsITApOmUuc2xpZGVUbyhlLmFjdGl2ZUluZGV4LDAsITEsITApKXx8aSgpLGEud2F0Y2hPdmVyZmxvdyYmdCE9PWUuc25hcEdyaWQmJmUuY2hlY2tPdmVyZmxvdygpLGUuZW1pdCgidXBkYXRlIil9ZnVuY3Rpb24gaSgpe3ZhciB0PWUucnRsVHJhbnNsYXRlPy0xKmUudHJhbnNsYXRlOmUudHJhbnNsYXRlLGE9TWF0aC5taW4oTWF0aC5tYXgodCxlLm1heFRyYW5zbGF0ZSgpKSxlLm1pblRyYW5zbGF0ZSgpKTtlLnNldFRyYW5zbGF0ZShhKSxlLnVwZGF0ZUFjdGl2ZUluZGV4KCksZS51cGRhdGVTbGlkZXNDbGFzc2VzKCl9fSxyLmNoYW5nZURpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgYT10aGlzLGk9YS5wYXJhbXMuZGlyZWN0aW9uO3JldHVybiBlfHwoZT0iaG9yaXpvbnRhbCI9PT1pPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwiKSxlPT09aXx8Imhvcml6b250YWwiIT09ZSYmInZlcnRpY2FsIiE9PWV8fChhLiRlbC5yZW1vdmVDbGFzcygiIithLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzK2kpLmFkZENsYXNzKCIiK2EucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MrZSksYS5lbWl0Q29udGFpbmVyQ2xhc3NlcygpLGEucGFyYW1zLmRpcmVjdGlvbj1lLGEuc2xpZGVzLmVhY2goKGZ1bmN0aW9uKHQpeyJ2ZXJ0aWNhbCI9PT1lP3Quc3R5bGUud2lkdGg9IiI6dC5zdHlsZS5oZWlnaHQ9IiJ9KSksYS5lbWl0KCJjaGFuZ2VEaXJlY3Rpb24iKSx0JiZhLnVwZGF0ZSgpKSxhfSxyLm1vdW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5tb3VudGVkKXJldHVybiEwO3ZhciBhLGk9bShlfHx0LnBhcmFtcy5lbCk7cmV0dXJuISEoZT1pWzBdKSYmKGUuc3dpcGVyPXQsZSYmZS5zaGFkb3dSb290JiZlLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcj8oYT1tKGUuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIuIit0LnBhcmFtcy53cmFwcGVyQ2xhc3MpKSkuY2hpbGRyZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2hpbGRyZW4oZSl9OmE9aS5jaGlsZHJlbigiLiIrdC5wYXJhbXMud3JhcHBlckNsYXNzKSxTKHQseyRlbDppLGVsOmUsJHdyYXBwZXJFbDphLHdyYXBwZXJFbDphWzBdLG1vdW50ZWQ6ITAscnRsOiJydGwiPT09ZS5kaXIudG9Mb3dlckNhc2UoKXx8InJ0bCI9PT1pLmNzcygiZGlyZWN0aW9uIikscnRsVHJhbnNsYXRlOiJob3Jpem9udGFsIj09PXQucGFyYW1zLmRpcmVjdGlvbiYmKCJydGwiPT09ZS5kaXIudG9Mb3dlckNhc2UoKXx8InJ0bCI9PT1pLmNzcygiZGlyZWN0aW9uIikpLHdyb25nUlRMOiItd2Via2l0LWJveCI9PT1hLmNzcygiZGlzcGxheSIpfSksITApfSxyLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdC5pbml0aWFsaXplZHx8ITE9PT10Lm1vdW50KGUpfHwodC5lbWl0KCJiZWZvcmVJbml0IiksdC5wYXJhbXMuYnJlYWtwb2ludHMmJnQuc2V0QnJlYWtwb2ludCgpLHQuYWRkQ2xhc3NlcygpLHQucGFyYW1zLmxvb3AmJnQubG9vcENyZWF0ZSgpLHQudXBkYXRlU2l6ZSgpLHQudXBkYXRlU2xpZGVzKCksdC5wYXJhbXMud2F0Y2hPdmVyZmxvdyYmdC5jaGVja092ZXJmbG93KCksdC5wYXJhbXMuZ3JhYkN1cnNvciYmdC5zZXRHcmFiQ3Vyc29yKCksdC5wYXJhbXMucHJlbG9hZEltYWdlcyYmdC5wcmVsb2FkSW1hZ2VzKCksdC5wYXJhbXMubG9vcD90LnNsaWRlVG8odC5wYXJhbXMuaW5pdGlhbFNsaWRlK3QubG9vcGVkU2xpZGVzLDAsdC5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KTp0LnNsaWRlVG8odC5wYXJhbXMuaW5pdGlhbFNsaWRlLDAsdC5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSx0LmF0dGFjaEV2ZW50cygpLHQuaW5pdGlhbGl6ZWQ9ITAsdC5lbWl0KCJpbml0IiksdC5lbWl0KCJhZnRlckluaXQiKSksdH0sci5kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXQmJih0PSEwKTt2YXIgYSxpPXRoaXMscz1pLnBhcmFtcyxyPWkuJGVsLG49aS4kd3JhcHBlckVsLGw9aS5zbGlkZXM7cmV0dXJuIHZvaWQgMD09PWkucGFyYW1zfHxpLmRlc3Ryb3llZHx8KGkuZW1pdCgiYmVmb3JlRGVzdHJveSIpLGkuaW5pdGlhbGl6ZWQ9ITEsaS5kZXRhY2hFdmVudHMoKSxzLmxvb3AmJmkubG9vcERlc3Ryb3koKSx0JiYoaS5yZW1vdmVDbGFzc2VzKCksci5yZW1vdmVBdHRyKCJzdHlsZSIpLG4ucmVtb3ZlQXR0cigic3R5bGUiKSxsJiZsLmxlbmd0aCYmbC5yZW1vdmVDbGFzcyhbcy5zbGlkZVZpc2libGVDbGFzcyxzLnNsaWRlQWN0aXZlQ2xhc3Mscy5zbGlkZU5leHRDbGFzcyxzLnNsaWRlUHJldkNsYXNzXS5qb2luKCIgIikpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSksaS5lbWl0KCJkZXN0cm95IiksT2JqZWN0LmtleXMoaS5ldmVudHNMaXN0ZW5lcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kub2ZmKGUpfSkpLCExIT09ZSYmKGkuJGVsWzBdLnN3aXBlcj1udWxsLGE9aSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0cnl7YVtlXT1udWxsfWNhdGNoKGUpe310cnl7ZGVsZXRlIGFbZV19Y2F0Y2goZSl7fX0pKSksaS5kZXN0cm95ZWQ9ITApLG51bGx9LHQuZXh0ZW5kRGVmYXVsdHM9ZnVuY3Rpb24oZSl7UyhWLGUpfSx0Lmluc3RhbGxNb2R1bGU9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUubW9kdWxlc3x8KHQucHJvdG90eXBlLm1vZHVsZXM9e30pO3ZhciBhPWUubmFtZXx8T2JqZWN0LmtleXModC5wcm90b3R5cGUubW9kdWxlcykubGVuZ3RoKyJfIit4KCk7dC5wcm90b3R5cGUubW9kdWxlc1thXT1lfSx0LnVzZT1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8oZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5pbnN0YWxsTW9kdWxlKGUpfSkpLHQpOih0Lmluc3RhbGxNb2R1bGUoZSksdCl9LGE9dCxzPVt7a2V5OiJleHRlbmRlZERlZmF1bHRzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVn19LHtrZXk6ImRlZmF1bHRzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWX19XSwoaT1udWxsKSYmZShhLnByb3RvdHlwZSxpKSxzJiZlKGEscyksdH0oKTtPYmplY3Qua2V5cyhSKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3Qua2V5cyhSW2VdKS5mb3JFYWNoKChmdW5jdGlvbih0KXtXLnByb3RvdHlwZVt0XT1SW2VdW3RdfSkpfSkpLFcudXNlKFtMLEldKTt2YXIgRj17dXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LnBhcmFtcyxpPWEuc2xpZGVzUGVyVmlldyxzPWEuc2xpZGVzUGVyR3JvdXAscj1hLmNlbnRlcmVkU2xpZGVzLG49dC5wYXJhbXMudmlydHVhbCxsPW4uYWRkU2xpZGVzQmVmb3JlLG89bi5hZGRTbGlkZXNBZnRlcixkPXQudmlydHVhbCxwPWQuZnJvbSxjPWQudG8sdT1kLnNsaWRlcyxoPWQuc2xpZGVzR3JpZCx2PWQucmVuZGVyU2xpZGUsZj1kLm9mZnNldDt0LnVwZGF0ZUFjdGl2ZUluZGV4KCk7dmFyIG0sZyxiLHc9dC5hY3RpdmVJbmRleHx8MDttPXQucnRsVHJhbnNsYXRlPyJyaWdodCI6dC5pc0hvcml6b250YWwoKT8ibGVmdCI6InRvcCIscj8oZz1NYXRoLmZsb29yKGkvMikrcytvLGI9TWF0aC5mbG9vcihpLzIpK3MrbCk6KGc9aSsocy0xKStvLGI9cytsKTt2YXIgeT1NYXRoLm1heCgod3x8MCktYiwwKSxFPU1hdGgubWluKCh3fHwwKStnLHUubGVuZ3RoLTEpLHg9KHQuc2xpZGVzR3JpZFt5XXx8MCktKHQuc2xpZGVzR3JpZFswXXx8MCk7ZnVuY3Rpb24gVCgpe3QudXBkYXRlU2xpZGVzKCksdC51cGRhdGVQcm9ncmVzcygpLHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpLHQubGF6eSYmdC5wYXJhbXMubGF6eS5lbmFibGVkJiZ0LmxhenkubG9hZCgpfWlmKFModC52aXJ0dWFsLHtmcm9tOnksdG86RSxvZmZzZXQ6eCxzbGlkZXNHcmlkOnQuc2xpZGVzR3JpZH0pLHA9PT15JiZjPT09RSYmIWUpcmV0dXJuIHQuc2xpZGVzR3JpZCE9PWgmJnghPT1mJiZ0LnNsaWRlcy5jc3MobSx4KyJweCIpLHZvaWQgdC51cGRhdGVQcm9ncmVzcygpO2lmKHQucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWwpcmV0dXJuIHQucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWwuY2FsbCh0LHtvZmZzZXQ6eCxmcm9tOnksdG86RSxzbGlkZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD15O3Q8PUU7dCs9MSllLnB1c2godVt0XSk7cmV0dXJuIGV9KCl9KSx2b2lkKHQucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWxVcGRhdGUmJlQoKSk7dmFyIEM9W10sTT1bXTtpZihlKXQuJHdyYXBwZXJFbC5maW5kKCIuIit0LnBhcmFtcy5zbGlkZUNsYXNzKS5yZW1vdmUoKTtlbHNlIGZvcih2YXIgej1wO3o8PWM7eis9MSkoejx5fHx6PkUpJiZ0LiR3cmFwcGVyRWwuZmluZCgiLiIrdC5wYXJhbXMuc2xpZGVDbGFzcysnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK3orJyJdJykucmVtb3ZlKCk7Zm9yKHZhciBQPTA7UDx1Lmxlbmd0aDtQKz0xKVA+PXkmJlA8PUUmJih2b2lkIDA9PT1jfHxlP00ucHVzaChQKTooUD5jJiZNLnB1c2goUCksUDxwJiZDLnB1c2goUCkpKTtNLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuJHdyYXBwZXJFbC5hcHBlbmQodih1W2VdLGUpKX0pKSxDLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQtZX0pKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LiR3cmFwcGVyRWwucHJlcGVuZCh2KHVbZV0sZSkpfSkpLHQuJHdyYXBwZXJFbC5jaGlsZHJlbigiLnN3aXBlci1zbGlkZSIpLmNzcyhtLHgrInB4IiksVCgpfSxyZW5kZXJTbGlkZTpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMsaT1hLnBhcmFtcy52aXJ0dWFsO2lmKGkuY2FjaGUmJmEudmlydHVhbC5jYWNoZVt0XSlyZXR1cm4gYS52aXJ0dWFsLmNhY2hlW3RdO3ZhciBzPWkucmVuZGVyU2xpZGU/bShpLnJlbmRlclNsaWRlLmNhbGwoYSxlLHQpKTptKCc8ZGl2IGNsYXNzPSInK2EucGFyYW1zLnNsaWRlQ2xhc3MrJyIgZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrdCsnIj4nK2UrIjwvZGl2PiIpO3JldHVybiBzLmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iil8fHMuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiLHQpLGkuY2FjaGUmJihhLnZpcnR1YWwuY2FjaGVbdF09cyksc30sYXBwZW5kU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUmJiJsZW5ndGgiaW4gZSlmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErPTEpZVthXSYmdC52aXJ0dWFsLnNsaWRlcy5wdXNoKGVbYV0pO2Vsc2UgdC52aXJ0dWFsLnNsaWRlcy5wdXNoKGUpO3QudmlydHVhbC51cGRhdGUoITApfSxwcmVwZW5kU2xpZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQuYWN0aXZlSW5kZXgsaT1hKzEscz0xO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cis9MSllW3JdJiZ0LnZpcnR1YWwuc2xpZGVzLnVuc2hpZnQoZVtyXSk7aT1hK2UubGVuZ3RoLHM9ZS5sZW5ndGh9ZWxzZSB0LnZpcnR1YWwuc2xpZGVzLnVuc2hpZnQoZSk7aWYodC5wYXJhbXMudmlydHVhbC5jYWNoZSl7dmFyIG49dC52aXJ0dWFsLmNhY2hlLGw9e307T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bltlXSxhPXQuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTthJiZ0LmF0dHIoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IixwYXJzZUludChhLDEwKSsxKSxsW3BhcnNlSW50KGUsMTApK3NdPXR9KSksdC52aXJ0dWFsLmNhY2hlPWx9dC52aXJ0dWFsLnVwZGF0ZSghMCksdC5zbGlkZVRvKGksMCl9LHJlbW92ZVNsaWRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYobnVsbCE9ZSl7dmFyIGE9dC5hY3RpdmVJbmRleDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgaT1lLmxlbmd0aC0xO2k+PTA7aS09MSl0LnZpcnR1YWwuc2xpZGVzLnNwbGljZShlW2ldLDEpLHQucGFyYW1zLnZpcnR1YWwuY2FjaGUmJmRlbGV0ZSB0LnZpcnR1YWwuY2FjaGVbZVtpXV0sZVtpXTxhJiYoYS09MSksYT1NYXRoLm1heChhLDApO2Vsc2UgdC52aXJ0dWFsLnNsaWRlcy5zcGxpY2UoZSwxKSx0LnBhcmFtcy52aXJ0dWFsLmNhY2hlJiZkZWxldGUgdC52aXJ0dWFsLmNhY2hlW2VdLGU8YSYmKGEtPTEpLGE9TWF0aC5tYXgoYSwwKTt0LnZpcnR1YWwudXBkYXRlKCEwKSx0LnNsaWRlVG8oYSwwKX19LHJlbW92ZUFsbFNsaWRlczpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS52aXJ0dWFsLnNsaWRlcz1bXSxlLnBhcmFtcy52aXJ0dWFsLmNhY2hlJiYoZS52aXJ0dWFsLmNhY2hlPXt9KSxlLnZpcnR1YWwudXBkYXRlKCEwKSxlLnNsaWRlVG8oMCwwKX19LHE9e25hbWU6InZpcnR1YWwiLHBhcmFtczp7dmlydHVhbDp7ZW5hYmxlZDohMSxzbGlkZXM6W10sY2FjaGU6ITAscmVuZGVyU2xpZGU6bnVsbCxyZW5kZXJFeHRlcm5hbDpudWxsLHJlbmRlckV4dGVybmFsVXBkYXRlOiEwLGFkZFNsaWRlc0JlZm9yZTowLGFkZFNsaWRlc0FmdGVyOjB9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse3ZpcnR1YWw6dCh7fSxGLHtzbGlkZXM6dGhpcy5wYXJhbXMudmlydHVhbC5zbGlkZXMsY2FjaGU6e319KX0pfSxvbjp7YmVmb3JlSW5pdDpmdW5jdGlvbihlKXtpZihlLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpe2UuY2xhc3NOYW1lcy5wdXNoKGUucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MrInZpcnR1YWwiKTt2YXIgdD17d2F0Y2hTbGlkZXNQcm9ncmVzczohMH07UyhlLnBhcmFtcyx0KSxTKGUub3JpZ2luYWxQYXJhbXMsdCksZS5wYXJhbXMuaW5pdGlhbFNsaWRlfHxlLnZpcnR1YWwudXBkYXRlKCl9fSxzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMudmlydHVhbC5lbmFibGVkJiZlLnZpcnR1YWwudXBkYXRlKCl9fX0saj17aGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT1sKCksaT1yKCkscz10LnJ0bFRyYW5zbGF0ZSxuPWU7bi5vcmlnaW5hbEV2ZW50JiYobj1uLm9yaWdpbmFsRXZlbnQpO3ZhciBvPW4ua2V5Q29kZXx8bi5jaGFyQ29kZSxkPXQucGFyYW1zLmtleWJvYXJkLnBhZ2VVcERvd24scD1kJiYzMz09PW8sYz1kJiYzND09PW8sdT0zNz09PW8saD0zOT09PW8sdj0zOD09PW8sZj00MD09PW87aWYoIXQuYWxsb3dTbGlkZU5leHQmJih0LmlzSG9yaXpvbnRhbCgpJiZofHx0LmlzVmVydGljYWwoKSYmZnx8YykpcmV0dXJuITE7aWYoIXQuYWxsb3dTbGlkZVByZXYmJih0LmlzSG9yaXpvbnRhbCgpJiZ1fHx0LmlzVmVydGljYWwoKSYmdnx8cCkpcmV0dXJuITE7aWYoIShuLnNoaWZ0S2V5fHxuLmFsdEtleXx8bi5jdHJsS2V5fHxuLm1ldGFLZXl8fGkuYWN0aXZlRWxlbWVudCYmaS5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lJiYoImlucHV0Ij09PWkuYWN0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfHwidGV4dGFyZWEiPT09aS5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSl7aWYodC5wYXJhbXMua2V5Ym9hcmQub25seUluVmlld3BvcnQmJihwfHxjfHx1fHxofHx2fHxmKSl7dmFyIG09ITE7aWYodC4kZWwucGFyZW50cygiLiIrdC5wYXJhbXMuc2xpZGVDbGFzcykubGVuZ3RoPjAmJjA9PT10LiRlbC5wYXJlbnRzKCIuIit0LnBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzKS5sZW5ndGgpcmV0dXJuO3ZhciBnPWEuaW5uZXJXaWR0aCxiPWEuaW5uZXJIZWlnaHQsdz10LiRlbC5vZmZzZXQoKTtzJiYody5sZWZ0LT10LiRlbFswXS5zY3JvbGxMZWZ0KTtmb3IodmFyIHk9W1t3LmxlZnQsdy50b3BdLFt3LmxlZnQrdC53aWR0aCx3LnRvcF0sW3cubGVmdCx3LnRvcCt0LmhlaWdodF0sW3cubGVmdCt0LndpZHRoLHcudG9wK3QuaGVpZ2h0XV0sRT0wO0U8eS5sZW5ndGg7RSs9MSl7dmFyIHg9eVtFXTtpZih4WzBdPj0wJiZ4WzBdPD1nJiZ4WzFdPj0wJiZ4WzFdPD1iKXtpZigwPT09eFswXSYmMD09PXhbMV0pY29udGludWU7bT0hMH19aWYoIW0pcmV0dXJufXQuaXNIb3Jpem9udGFsKCk/KChwfHxjfHx1fHxoKSYmKG4ucHJldmVudERlZmF1bHQ/bi5wcmV2ZW50RGVmYXVsdCgpOm4ucmV0dXJuVmFsdWU9ITEpLCgoY3x8aCkmJiFzfHwocHx8dSkmJnMpJiZ0LnNsaWRlTmV4dCgpLCgocHx8dSkmJiFzfHwoY3x8aCkmJnMpJiZ0LnNsaWRlUHJldigpKTooKHB8fGN8fHZ8fGYpJiYobi5wcmV2ZW50RGVmYXVsdD9uLnByZXZlbnREZWZhdWx0KCk6bi5yZXR1cm5WYWx1ZT0hMSksKGN8fGYpJiZ0LnNsaWRlTmV4dCgpLChwfHx2KSYmdC5zbGlkZVByZXYoKSksdC5lbWl0KCJrZXlQcmVzcyIsbyl9fSxlbmFibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9cigpO2Uua2V5Ym9hcmQuZW5hYmxlZHx8KG0odCkub24oImtleWRvd24iLGUua2V5Ym9hcmQuaGFuZGxlKSxlLmtleWJvYXJkLmVuYWJsZWQ9ITApfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXIoKTtlLmtleWJvYXJkLmVuYWJsZWQmJihtKHQpLm9mZigia2V5ZG93biIsZS5rZXlib2FyZC5oYW5kbGUpLGUua2V5Ym9hcmQuZW5hYmxlZD0hMSl9fSxfPXtuYW1lOiJrZXlib2FyZCIscGFyYW1zOntrZXlib2FyZDp7ZW5hYmxlZDohMSxvbmx5SW5WaWV3cG9ydDohMCxwYWdlVXBEb3duOiEwfX0sY3JlYXRlOmZ1bmN0aW9uKCl7TSh0aGlzLHtrZXlib2FyZDp0KHtlbmFibGVkOiExfSxqKX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhcmFtcy5rZXlib2FyZC5lbmFibGVkJiZlLmtleWJvYXJkLmVuYWJsZSgpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2Uua2V5Ym9hcmQuZW5hYmxlZCYmZS5rZXlib2FyZC5kaXNhYmxlKCl9fX07dmFyIFU9e2xhc3RTY3JvbGxUaW1lOngoKSxsYXN0RXZlbnRCZWZvcmVTbmFwOnZvaWQgMCxyZWNlbnRXaGVlbEV2ZW50czpbXSxldmVudDpmdW5jdGlvbigpe3JldHVybiBsKCkubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJmaXJlZm94Iik+LTE/IkRPTU1vdXNlU2Nyb2xsIjpmdW5jdGlvbigpe3ZhciBlPXIoKSx0PSJvbndoZWVsIixhPXQgaW4gZTtpZighYSl7dmFyIGk9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnNldEF0dHJpYnV0ZSh0LCJyZXR1cm47IiksYT0iZnVuY3Rpb24iPT10eXBlb2YgaS5vbndoZWVsfXJldHVybiFhJiZlLmltcGxlbWVudGF0aW9uJiZlLmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUmJiEwIT09ZS5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCIiLCIiKSYmKGE9ZS5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVudHMud2hlZWwiLCIzLjAiKSksYX0oKT8id2hlZWwiOiJtb3VzZXdoZWVsIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe3ZhciB0PTAsYT0wLGk9MCxzPTA7cmV0dXJuImRldGFpbCJpbiBlJiYoYT1lLmRldGFpbCksIndoZWVsRGVsdGEiaW4gZSYmKGE9LWUud2hlZWxEZWx0YS8xMjApLCJ3aGVlbERlbHRhWSJpbiBlJiYoYT0tZS53aGVlbERlbHRhWS8xMjApLCJ3aGVlbERlbHRhWCJpbiBlJiYodD0tZS53aGVlbERlbHRhWC8xMjApLCJheGlzImluIGUmJmUuYXhpcz09PWUuSE9SSVpPTlRBTF9BWElTJiYodD1hLGE9MCksaT0xMCp0LHM9MTAqYSwiZGVsdGFZImluIGUmJihzPWUuZGVsdGFZKSwiZGVsdGFYImluIGUmJihpPWUuZGVsdGFYKSxlLnNoaWZ0S2V5JiYhaSYmKGk9cyxzPTApLChpfHxzKSYmZS5kZWx0YU1vZGUmJigxPT09ZS5kZWx0YU1vZGU/KGkqPTQwLHMqPTQwKTooaSo9ODAwLHMqPTgwMCkpLGkmJiF0JiYodD1pPDE/LTE6MSkscyYmIWEmJihhPXM8MT8tMToxKSx7c3Bpblg6dCxzcGluWTphLHBpeGVsWDppLHBpeGVsWTpzfX0saGFuZGxlTW91c2VFbnRlcjpmdW5jdGlvbigpe3RoaXMubW91c2VFbnRlcmVkPSEwfSxoYW5kbGVNb3VzZUxlYXZlOmZ1bmN0aW9uKCl7dGhpcy5tb3VzZUVudGVyZWQ9ITF9LGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdD1lLGE9dGhpcyxpPWEucGFyYW1zLm1vdXNld2hlZWw7YS5wYXJhbXMuY3NzTW9kZSYmdC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBzPWEuJGVsO2lmKCJjb250YWluZXIiIT09YS5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQmJihzPW0oYS5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQpKSwhYS5tb3VzZUVudGVyZWQmJiFzWzBdLmNvbnRhaW5zKHQudGFyZ2V0KSYmIWkucmVsZWFzZU9uRWRnZXMpcmV0dXJuITA7dC5vcmlnaW5hbEV2ZW50JiYodD10Lm9yaWdpbmFsRXZlbnQpO3ZhciByPTAsbj1hLnJ0bFRyYW5zbGF0ZT8tMToxLGw9VS5ub3JtYWxpemUodCk7aWYoaS5mb3JjZVRvQXhpcylpZihhLmlzSG9yaXpvbnRhbCgpKXtpZighKE1hdGguYWJzKGwucGl4ZWxYKT5NYXRoLmFicyhsLnBpeGVsWSkpKXJldHVybiEwO3I9LWwucGl4ZWxYKm59ZWxzZXtpZighKE1hdGguYWJzKGwucGl4ZWxZKT5NYXRoLmFicyhsLnBpeGVsWCkpKXJldHVybiEwO3I9LWwucGl4ZWxZfWVsc2Ugcj1NYXRoLmFicyhsLnBpeGVsWCk+TWF0aC5hYnMobC5waXhlbFkpPy1sLnBpeGVsWCpuOi1sLnBpeGVsWTtpZigwPT09cilyZXR1cm4hMDtpLmludmVydCYmKHI9LXIpO3ZhciBvPWEuZ2V0VHJhbnNsYXRlKCkrcippLnNlbnNpdGl2aXR5O2lmKG8+PWEubWluVHJhbnNsYXRlKCkmJihvPWEubWluVHJhbnNsYXRlKCkpLG88PWEubWF4VHJhbnNsYXRlKCkmJihvPWEubWF4VHJhbnNsYXRlKCkpLCghIWEucGFyYW1zLmxvb3B8fCEobz09PWEubWluVHJhbnNsYXRlKCl8fG89PT1hLm1heFRyYW5zbGF0ZSgpKSkmJmEucGFyYW1zLm5lc3RlZCYmdC5zdG9wUHJvcGFnYXRpb24oKSxhLnBhcmFtcy5mcmVlTW9kZSl7dmFyIGQ9e3RpbWU6eCgpLGRlbHRhOk1hdGguYWJzKHIpLGRpcmVjdGlvbjpNYXRoLnNpZ24ocil9LHA9YS5tb3VzZXdoZWVsLmxhc3RFdmVudEJlZm9yZVNuYXAsYz1wJiZkLnRpbWU8cC50aW1lKzUwMCYmZC5kZWx0YTw9cC5kZWx0YSYmZC5kaXJlY3Rpb249PT1wLmRpcmVjdGlvbjtpZighYyl7YS5tb3VzZXdoZWVsLmxhc3RFdmVudEJlZm9yZVNuYXA9dm9pZCAwLGEucGFyYW1zLmxvb3AmJmEubG9vcEZpeCgpO3ZhciB1PWEuZ2V0VHJhbnNsYXRlKCkrcippLnNlbnNpdGl2aXR5LGg9YS5pc0JlZ2lubmluZyx2PWEuaXNFbmQ7aWYodT49YS5taW5UcmFuc2xhdGUoKSYmKHU9YS5taW5UcmFuc2xhdGUoKSksdTw9YS5tYXhUcmFuc2xhdGUoKSYmKHU9YS5tYXhUcmFuc2xhdGUoKSksYS5zZXRUcmFuc2l0aW9uKDApLGEuc2V0VHJhbnNsYXRlKHUpLGEudXBkYXRlUHJvZ3Jlc3MoKSxhLnVwZGF0ZUFjdGl2ZUluZGV4KCksYS51cGRhdGVTbGlkZXNDbGFzc2VzKCksKCFoJiZhLmlzQmVnaW5uaW5nfHwhdiYmYS5pc0VuZCkmJmEudXBkYXRlU2xpZGVzQ2xhc3NlcygpLGEucGFyYW1zLmZyZWVNb2RlU3RpY2t5KXtjbGVhclRpbWVvdXQoYS5tb3VzZXdoZWVsLnRpbWVvdXQpLGEubW91c2V3aGVlbC50aW1lb3V0PXZvaWQgMDt2YXIgZj1hLm1vdXNld2hlZWwucmVjZW50V2hlZWxFdmVudHM7Zi5sZW5ndGg+PTE1JiZmLnNoaWZ0KCk7dmFyIGc9Zi5sZW5ndGg/ZltmLmxlbmd0aC0xXTp2b2lkIDAsYj1mWzBdO2lmKGYucHVzaChkKSxnJiYoZC5kZWx0YT5nLmRlbHRhfHxkLmRpcmVjdGlvbiE9PWcuZGlyZWN0aW9uKSlmLnNwbGljZSgwKTtlbHNlIGlmKGYubGVuZ3RoPj0xNSYmZC50aW1lLWIudGltZTw1MDAmJmIuZGVsdGEtZC5kZWx0YT49MSYmZC5kZWx0YTw9Nil7dmFyIHc9cj4wPy44Oi4yO2EubW91c2V3aGVlbC5sYXN0RXZlbnRCZWZvcmVTbmFwPWQsZi5zcGxpY2UoMCksYS5tb3VzZXdoZWVsLnRpbWVvdXQ9RSgoZnVuY3Rpb24oKXthLnNsaWRlVG9DbG9zZXN0KGEucGFyYW1zLnNwZWVkLCEwLHZvaWQgMCx3KX0pLDApfWEubW91c2V3aGVlbC50aW1lb3V0fHwoYS5tb3VzZXdoZWVsLnRpbWVvdXQ9RSgoZnVuY3Rpb24oKXthLm1vdXNld2hlZWwubGFzdEV2ZW50QmVmb3JlU25hcD1kLGYuc3BsaWNlKDApLGEuc2xpZGVUb0Nsb3Nlc3QoYS5wYXJhbXMuc3BlZWQsITAsdm9pZCAwLC41KX0pLDUwMCkpfWlmKGN8fGEuZW1pdCgic2Nyb2xsIix0KSxhLnBhcmFtcy5hdXRvcGxheSYmYS5wYXJhbXMuYXV0b3BsYXlEaXNhYmxlT25JbnRlcmFjdGlvbiYmYS5hdXRvcGxheS5zdG9wKCksdT09PWEubWluVHJhbnNsYXRlKCl8fHU9PT1hLm1heFRyYW5zbGF0ZSgpKXJldHVybiEwfX1lbHNle3ZhciB5PXt0aW1lOngoKSxkZWx0YTpNYXRoLmFicyhyKSxkaXJlY3Rpb246TWF0aC5zaWduKHIpLHJhdzplfSxUPWEubW91c2V3aGVlbC5yZWNlbnRXaGVlbEV2ZW50cztULmxlbmd0aD49MiYmVC5zaGlmdCgpO3ZhciBDPVQubGVuZ3RoP1RbVC5sZW5ndGgtMV06dm9pZCAwO2lmKFQucHVzaCh5KSxDPyh5LmRpcmVjdGlvbiE9PUMuZGlyZWN0aW9ufHx5LmRlbHRhPkMuZGVsdGF8fHkudGltZT5DLnRpbWUrMTUwKSYmYS5tb3VzZXdoZWVsLmFuaW1hdGVTbGlkZXIoeSk6YS5tb3VzZXdoZWVsLmFuaW1hdGVTbGlkZXIoeSksYS5tb3VzZXdoZWVsLnJlbGVhc2VTY3JvbGwoeSkpcmV0dXJuITB9cmV0dXJuIHQucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsITF9LGFuaW1hdGVTbGlkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPWwoKTtyZXR1cm4hKHRoaXMucGFyYW1zLm1vdXNld2hlZWwudGhyZXNob2xkRGVsdGEmJmUuZGVsdGE8dGhpcy5wYXJhbXMubW91c2V3aGVlbC50aHJlc2hvbGREZWx0YSkmJighKHRoaXMucGFyYW1zLm1vdXNld2hlZWwudGhyZXNob2xkVGltZSYmeCgpLXQubW91c2V3aGVlbC5sYXN0U2Nyb2xsVGltZTx0aGlzLnBhcmFtcy5tb3VzZXdoZWVsLnRocmVzaG9sZFRpbWUpJiYoZS5kZWx0YT49NiYmeCgpLXQubW91c2V3aGVlbC5sYXN0U2Nyb2xsVGltZTw2MHx8KGUuZGlyZWN0aW9uPDA/dC5pc0VuZCYmIXQucGFyYW1zLmxvb3B8fHQuYW5pbWF0aW5nfHwodC5zbGlkZU5leHQoKSx0LmVtaXQoInNjcm9sbCIsZS5yYXcpKTp0LmlzQmVnaW5uaW5nJiYhdC5wYXJhbXMubG9vcHx8dC5hbmltYXRpbmd8fCh0LnNsaWRlUHJldigpLHQuZW1pdCgic2Nyb2xsIixlLnJhdykpLHQubW91c2V3aGVlbC5sYXN0U2Nyb2xsVGltZT0obmV3IGEuRGF0ZSkuZ2V0VGltZSgpLCExKSkpfSxyZWxlYXNlU2Nyb2xsOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LnBhcmFtcy5tb3VzZXdoZWVsO2lmKGUuZGlyZWN0aW9uPDApe2lmKHQuaXNFbmQmJiF0LnBhcmFtcy5sb29wJiZhLnJlbGVhc2VPbkVkZ2VzKXJldHVybiEwfWVsc2UgaWYodC5pc0JlZ2lubmluZyYmIXQucGFyYW1zLmxvb3AmJmEucmVsZWFzZU9uRWRnZXMpcmV0dXJuITA7cmV0dXJuITF9LGVuYWJsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1VLmV2ZW50KCk7aWYoZS5wYXJhbXMuY3NzTW9kZSlyZXR1cm4gZS53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUubW91c2V3aGVlbC5oYW5kbGUpLCEwO2lmKCF0KXJldHVybiExO2lmKGUubW91c2V3aGVlbC5lbmFibGVkKXJldHVybiExO3ZhciBhPWUuJGVsO3JldHVybiJjb250YWluZXIiIT09ZS5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQmJihhPW0oZS5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQpKSxhLm9uKCJtb3VzZWVudGVyIixlLm1vdXNld2hlZWwuaGFuZGxlTW91c2VFbnRlciksYS5vbigibW91c2VsZWF2ZSIsZS5tb3VzZXdoZWVsLmhhbmRsZU1vdXNlTGVhdmUpLGEub24odCxlLm1vdXNld2hlZWwuaGFuZGxlKSxlLm1vdXNld2hlZWwuZW5hYmxlZD0hMCwhMH0sZGlzYWJsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1VLmV2ZW50KCk7aWYoZS5wYXJhbXMuY3NzTW9kZSlyZXR1cm4gZS53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcih0LGUubW91c2V3aGVlbC5oYW5kbGUpLCEwO2lmKCF0KXJldHVybiExO2lmKCFlLm1vdXNld2hlZWwuZW5hYmxlZClyZXR1cm4hMTt2YXIgYT1lLiRlbDtyZXR1cm4iY29udGFpbmVyIiE9PWUucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2V0JiYoYT1tKGUucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2V0KSksYS5vZmYodCxlLm1vdXNld2hlZWwuaGFuZGxlKSxlLm1vdXNld2hlZWwuZW5hYmxlZD0hMSwhMH19LEs9e3VwZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnBhcmFtcy5uYXZpZ2F0aW9uO2lmKCFlLnBhcmFtcy5sb29wKXt2YXIgYT1lLm5hdmlnYXRpb24saT1hLiRuZXh0RWwscz1hLiRwcmV2RWw7cyYmcy5sZW5ndGg+MCYmKGUuaXNCZWdpbm5pbmc/cy5hZGRDbGFzcyh0LmRpc2FibGVkQ2xhc3MpOnMucmVtb3ZlQ2xhc3ModC5kaXNhYmxlZENsYXNzKSxzW2UucGFyYW1zLndhdGNoT3ZlcmZsb3cmJmUuaXNMb2NrZWQ/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSh0LmxvY2tDbGFzcykpLGkmJmkubGVuZ3RoPjAmJihlLmlzRW5kP2kuYWRkQ2xhc3ModC5kaXNhYmxlZENsYXNzKTppLnJlbW92ZUNsYXNzKHQuZGlzYWJsZWRDbGFzcyksaVtlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmlzTG9ja2VkPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0odC5sb2NrQ2xhc3MpKX19LG9uUHJldkNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZS5wcmV2ZW50RGVmYXVsdCgpLHQuaXNCZWdpbm5pbmcmJiF0LnBhcmFtcy5sb29wfHx0LnNsaWRlUHJldigpfSxvbk5leHRDbGljazpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UucHJldmVudERlZmF1bHQoKSx0LmlzRW5kJiYhdC5wYXJhbXMubG9vcHx8dC5zbGlkZU5leHQoKX0saW5pdDpmdW5jdGlvbigpe3ZhciBlLHQsYT10aGlzLGk9YS5wYXJhbXMubmF2aWdhdGlvbjsoaS5uZXh0RWx8fGkucHJldkVsKSYmKGkubmV4dEVsJiYoZT1tKGkubmV4dEVsKSxhLnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyYmInN0cmluZyI9PXR5cGVvZiBpLm5leHRFbCYmZS5sZW5ndGg+MSYmMT09PWEuJGVsLmZpbmQoaS5uZXh0RWwpLmxlbmd0aCYmKGU9YS4kZWwuZmluZChpLm5leHRFbCkpKSxpLnByZXZFbCYmKHQ9bShpLnByZXZFbCksYS5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMmJiJzdHJpbmciPT10eXBlb2YgaS5wcmV2RWwmJnQubGVuZ3RoPjEmJjE9PT1hLiRlbC5maW5kKGkucHJldkVsKS5sZW5ndGgmJih0PWEuJGVsLmZpbmQoaS5wcmV2RWwpKSksZSYmZS5sZW5ndGg+MCYmZS5vbigiY2xpY2siLGEubmF2aWdhdGlvbi5vbk5leHRDbGljayksdCYmdC5sZW5ndGg+MCYmdC5vbigiY2xpY2siLGEubmF2aWdhdGlvbi5vblByZXZDbGljayksUyhhLm5hdmlnYXRpb24seyRuZXh0RWw6ZSxuZXh0RWw6ZSYmZVswXSwkcHJldkVsOnQscHJldkVsOnQmJnRbMF19KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5uYXZpZ2F0aW9uLGE9dC4kbmV4dEVsLGk9dC4kcHJldkVsO2EmJmEubGVuZ3RoJiYoYS5vZmYoImNsaWNrIixlLm5hdmlnYXRpb24ub25OZXh0Q2xpY2spLGEucmVtb3ZlQ2xhc3MoZS5wYXJhbXMubmF2aWdhdGlvbi5kaXNhYmxlZENsYXNzKSksaSYmaS5sZW5ndGgmJihpLm9mZigiY2xpY2siLGUubmF2aWdhdGlvbi5vblByZXZDbGljayksaS5yZW1vdmVDbGFzcyhlLnBhcmFtcy5uYXZpZ2F0aW9uLmRpc2FibGVkQ2xhc3MpKX19LFo9e3VwZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnJ0bCxhPWUucGFyYW1zLnBhZ2luYXRpb247aWYoYS5lbCYmZS5wYWdpbmF0aW9uLmVsJiZlLnBhZ2luYXRpb24uJGVsJiYwIT09ZS5wYWdpbmF0aW9uLiRlbC5sZW5ndGgpe3ZhciBpLHM9ZS52aXJ0dWFsJiZlLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ/ZS52aXJ0dWFsLnNsaWRlcy5sZW5ndGg6ZS5zbGlkZXMubGVuZ3RoLHI9ZS5wYWdpbmF0aW9uLiRlbCxuPWUucGFyYW1zLmxvb3A/TWF0aC5jZWlsKChzLTIqZS5sb29wZWRTbGlkZXMpL2UucGFyYW1zLnNsaWRlc1Blckdyb3VwKTplLnNuYXBHcmlkLmxlbmd0aDtpZihlLnBhcmFtcy5sb29wPygoaT1NYXRoLmNlaWwoKGUuYWN0aXZlSW5kZXgtZS5sb29wZWRTbGlkZXMpL2UucGFyYW1zLnNsaWRlc1Blckdyb3VwKSk+cy0xLTIqZS5sb29wZWRTbGlkZXMmJihpLT1zLTIqZS5sb29wZWRTbGlkZXMpLGk+bi0xJiYoaS09biksaTwwJiYiYnVsbGV0cyIhPT1lLnBhcmFtcy5wYWdpbmF0aW9uVHlwZSYmKGk9bitpKSk6aT12b2lkIDAhPT1lLnNuYXBJbmRleD9lLnNuYXBJbmRleDplLmFjdGl2ZUluZGV4fHwwLCJidWxsZXRzIj09PWEudHlwZSYmZS5wYWdpbmF0aW9uLmJ1bGxldHMmJmUucGFnaW5hdGlvbi5idWxsZXRzLmxlbmd0aD4wKXt2YXIgbCxvLGQscD1lLnBhZ2luYXRpb24uYnVsbGV0cztpZihhLmR5bmFtaWNCdWxsZXRzJiYoZS5wYWdpbmF0aW9uLmJ1bGxldFNpemU9cC5lcSgwKVtlLmlzSG9yaXpvbnRhbCgpPyJvdXRlcldpZHRoIjoib3V0ZXJIZWlnaHQiXSghMCksci5jc3MoZS5pc0hvcml6b250YWwoKT8id2lkdGgiOiJoZWlnaHQiLGUucGFnaW5hdGlvbi5idWxsZXRTaXplKihhLmR5bmFtaWNNYWluQnVsbGV0cys0KSsicHgiKSxhLmR5bmFtaWNNYWluQnVsbGV0cz4xJiZ2b2lkIDAhPT1lLnByZXZpb3VzSW5kZXgmJihlLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4Kz1pLWUucHJldmlvdXNJbmRleCxlLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4PmEuZHluYW1pY01haW5CdWxsZXRzLTE/ZS5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleD1hLmR5bmFtaWNNYWluQnVsbGV0cy0xOmUucGFnaW5hdGlvbi5keW5hbWljQnVsbGV0SW5kZXg8MCYmKGUucGFnaW5hdGlvbi5keW5hbWljQnVsbGV0SW5kZXg9MCkpLGw9aS1lLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4LGQ9KChvPWwrKE1hdGgubWluKHAubGVuZ3RoLGEuZHluYW1pY01haW5CdWxsZXRzKS0xKSkrbCkvMikscC5yZW1vdmVDbGFzcyhhLmJ1bGxldEFjdGl2ZUNsYXNzKyIgIithLmJ1bGxldEFjdGl2ZUNsYXNzKyItbmV4dCAiK2EuYnVsbGV0QWN0aXZlQ2xhc3MrIi1uZXh0LW5leHQgIithLmJ1bGxldEFjdGl2ZUNsYXNzKyItcHJldiAiK2EuYnVsbGV0QWN0aXZlQ2xhc3MrIi1wcmV2LXByZXYgIithLmJ1bGxldEFjdGl2ZUNsYXNzKyItbWFpbiIpLHIubGVuZ3RoPjEpcC5lYWNoKChmdW5jdGlvbihlKXt2YXIgdD1tKGUpLHM9dC5pbmRleCgpO3M9PT1pJiZ0LmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MpLGEuZHluYW1pY0J1bGxldHMmJihzPj1sJiZzPD1vJiZ0LmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1tYWluIikscz09PWwmJnQucHJldigpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1wcmV2IikucHJldigpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1wcmV2LXByZXYiKSxzPT09byYmdC5uZXh0KCkuYWRkQ2xhc3MoYS5idWxsZXRBY3RpdmVDbGFzcysiLW5leHQiKS5uZXh0KCkuYWRkQ2xhc3MoYS5idWxsZXRBY3RpdmVDbGFzcysiLW5leHQtbmV4dCIpKX0pKTtlbHNle3ZhciBjPXAuZXEoaSksdT1jLmluZGV4KCk7aWYoYy5hZGRDbGFzcyhhLmJ1bGxldEFjdGl2ZUNsYXNzKSxhLmR5bmFtaWNCdWxsZXRzKXtmb3IodmFyIGg9cC5lcShsKSx2PXAuZXEobyksZj1sO2Y8PW87Zis9MSlwLmVxKGYpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1tYWluIik7aWYoZS5wYXJhbXMubG9vcClpZih1Pj1wLmxlbmd0aC1hLmR5bmFtaWNNYWluQnVsbGV0cyl7Zm9yKHZhciBnPWEuZHluYW1pY01haW5CdWxsZXRzO2c+PTA7Zy09MSlwLmVxKHAubGVuZ3RoLWcpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1tYWluIik7cC5lcShwLmxlbmd0aC1hLmR5bmFtaWNNYWluQnVsbGV0cy0xKS5hZGRDbGFzcyhhLmJ1bGxldEFjdGl2ZUNsYXNzKyItcHJldiIpfWVsc2UgaC5wcmV2KCkuYWRkQ2xhc3MoYS5idWxsZXRBY3RpdmVDbGFzcysiLXByZXYiKS5wcmV2KCkuYWRkQ2xhc3MoYS5idWxsZXRBY3RpdmVDbGFzcysiLXByZXYtcHJldiIpLHYubmV4dCgpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1uZXh0IikubmV4dCgpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1uZXh0LW5leHQiKTtlbHNlIGgucHJldigpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1wcmV2IikucHJldigpLmFkZENsYXNzKGEuYnVsbGV0QWN0aXZlQ2xhc3MrIi1wcmV2LXByZXYiKSx2Lm5leHQoKS5hZGRDbGFzcyhhLmJ1bGxldEFjdGl2ZUNsYXNzKyItbmV4dCIpLm5leHQoKS5hZGRDbGFzcyhhLmJ1bGxldEFjdGl2ZUNsYXNzKyItbmV4dC1uZXh0Iil9fWlmKGEuZHluYW1pY0J1bGxldHMpe3ZhciBiPU1hdGgubWluKHAubGVuZ3RoLGEuZHluYW1pY01haW5CdWxsZXRzKzQpLHc9KGUucGFnaW5hdGlvbi5idWxsZXRTaXplKmItZS5wYWdpbmF0aW9uLmJ1bGxldFNpemUpLzItZCplLnBhZ2luYXRpb24uYnVsbGV0U2l6ZSx5PXQ/InJpZ2h0IjoibGVmdCI7cC5jc3MoZS5pc0hvcml6b250YWwoKT95OiJ0b3AiLHcrInB4Iil9fWlmKCJmcmFjdGlvbiI9PT1hLnR5cGUmJihyLmZpbmQoIi4iK2EuY3VycmVudENsYXNzKS50ZXh0KGEuZm9ybWF0RnJhY3Rpb25DdXJyZW50KGkrMSkpLHIuZmluZCgiLiIrYS50b3RhbENsYXNzKS50ZXh0KGEuZm9ybWF0RnJhY3Rpb25Ub3RhbChuKSkpLCJwcm9ncmVzc2JhciI9PT1hLnR5cGUpe3ZhciBFO0U9YS5wcm9ncmVzc2Jhck9wcG9zaXRlP2UuaXNIb3Jpem9udGFsKCk/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCI6ZS5pc0hvcml6b250YWwoKT8iaG9yaXpvbnRhbCI6InZlcnRpY2FsIjt2YXIgeD0oaSsxKS9uLFQ9MSxDPTE7Imhvcml6b250YWwiPT09RT9UPXg6Qz14LHIuZmluZCgiLiIrYS5wcm9ncmVzc2JhckZpbGxDbGFzcykudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGVYKCIrVCsiKSBzY2FsZVkoIitDKyIpIikudHJhbnNpdGlvbihlLnBhcmFtcy5zcGVlZCl9ImN1c3RvbSI9PT1hLnR5cGUmJmEucmVuZGVyQ3VzdG9tPyhyLmh0bWwoYS5yZW5kZXJDdXN0b20oZSxpKzEsbikpLGUuZW1pdCgicGFnaW5hdGlvblJlbmRlciIsclswXSkpOmUuZW1pdCgicGFnaW5hdGlvblVwZGF0ZSIsclswXSkscltlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmlzTG9ja2VkPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oYS5sb2NrQ2xhc3MpfX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUucGFyYW1zLnBhZ2luYXRpb247aWYodC5lbCYmZS5wYWdpbmF0aW9uLmVsJiZlLnBhZ2luYXRpb24uJGVsJiYwIT09ZS5wYWdpbmF0aW9uLiRlbC5sZW5ndGgpe3ZhciBhPWUudmlydHVhbCYmZS5wYXJhbXMudmlydHVhbC5lbmFibGVkP2UudmlydHVhbC5zbGlkZXMubGVuZ3RoOmUuc2xpZGVzLmxlbmd0aCxpPWUucGFnaW5hdGlvbi4kZWwscz0iIjtpZigiYnVsbGV0cyI9PT10LnR5cGUpe3ZhciByPWUucGFyYW1zLmxvb3A/TWF0aC5jZWlsKChhLTIqZS5sb29wZWRTbGlkZXMpL2UucGFyYW1zLnNsaWRlc1Blckdyb3VwKTplLnNuYXBHcmlkLmxlbmd0aDtlLnBhcmFtcy5mcmVlTW9kZSYmIWUucGFyYW1zLmxvb3AmJnI+YSYmKHI9YSk7Zm9yKHZhciBuPTA7bjxyO24rPTEpdC5yZW5kZXJCdWxsZXQ/cys9dC5yZW5kZXJCdWxsZXQuY2FsbChlLG4sdC5idWxsZXRDbGFzcyk6cys9IjwiK3QuYnVsbGV0RWxlbWVudCsnIGNsYXNzPSInK3QuYnVsbGV0Q2xhc3MrJyI+PC8nK3QuYnVsbGV0RWxlbWVudCsiPiI7aS5odG1sKHMpLGUucGFnaW5hdGlvbi5idWxsZXRzPWkuZmluZCgiLiIrdC5idWxsZXRDbGFzcy5yZXBsYWNlKC8gL2csIi4iKSl9ImZyYWN0aW9uIj09PXQudHlwZSYmKHM9dC5yZW5kZXJGcmFjdGlvbj90LnJlbmRlckZyYWN0aW9uLmNhbGwoZSx0LmN1cnJlbnRDbGFzcyx0LnRvdGFsQ2xhc3MpOic8c3BhbiBjbGFzcz0iJyt0LmN1cnJlbnRDbGFzcysnIj48L3NwYW4+IC8gPHNwYW4gY2xhc3M9IicrdC50b3RhbENsYXNzKyciPjwvc3Bhbj4nLGkuaHRtbChzKSksInByb2dyZXNzYmFyIj09PXQudHlwZSYmKHM9dC5yZW5kZXJQcm9ncmVzc2Jhcj90LnJlbmRlclByb2dyZXNzYmFyLmNhbGwoZSx0LnByb2dyZXNzYmFyRmlsbENsYXNzKTonPHNwYW4gY2xhc3M9IicrdC5wcm9ncmVzc2JhckZpbGxDbGFzcysnIj48L3NwYW4+JyxpLmh0bWwocykpLCJjdXN0b20iIT09dC50eXBlJiZlLmVtaXQoInBhZ2luYXRpb25SZW5kZXIiLGUucGFnaW5hdGlvbi4kZWxbMF0pfX0saW5pdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnBhcmFtcy5wYWdpbmF0aW9uO2lmKHQuZWwpe3ZhciBhPW0odC5lbCk7MCE9PWEubGVuZ3RoJiYoZS5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMmJiJzdHJpbmciPT10eXBlb2YgdC5lbCYmYS5sZW5ndGg+MSYmKGE9ZS4kZWwuZmluZCh0LmVsKSksImJ1bGxldHMiPT09dC50eXBlJiZ0LmNsaWNrYWJsZSYmYS5hZGRDbGFzcyh0LmNsaWNrYWJsZUNsYXNzKSxhLmFkZENsYXNzKHQubW9kaWZpZXJDbGFzcyt0LnR5cGUpLCJidWxsZXRzIj09PXQudHlwZSYmdC5keW5hbWljQnVsbGV0cyYmKGEuYWRkQ2xhc3MoIiIrdC5tb2RpZmllckNsYXNzK3QudHlwZSsiLWR5bmFtaWMiKSxlLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4PTAsdC5keW5hbWljTWFpbkJ1bGxldHM8MSYmKHQuZHluYW1pY01haW5CdWxsZXRzPTEpKSwicHJvZ3Jlc3NiYXIiPT09dC50eXBlJiZ0LnByb2dyZXNzYmFyT3Bwb3NpdGUmJmEuYWRkQ2xhc3ModC5wcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3MpLHQuY2xpY2thYmxlJiZhLm9uKCJjbGljayIsIi4iK3QuYnVsbGV0Q2xhc3MucmVwbGFjZSgvIC9nLCIuIiksKGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKTt2YXIgYT1tKHRoaXMpLmluZGV4KCkqZS5wYXJhbXMuc2xpZGVzUGVyR3JvdXA7ZS5wYXJhbXMubG9vcCYmKGErPWUubG9vcGVkU2xpZGVzKSxlLnNsaWRlVG8oYSl9KSksUyhlLnBhZ2luYXRpb24seyRlbDphLGVsOmFbMF19KSl9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUucGFyYW1zLnBhZ2luYXRpb247aWYodC5lbCYmZS5wYWdpbmF0aW9uLmVsJiZlLnBhZ2luYXRpb24uJGVsJiYwIT09ZS5wYWdpbmF0aW9uLiRlbC5sZW5ndGgpe3ZhciBhPWUucGFnaW5hdGlvbi4kZWw7YS5yZW1vdmVDbGFzcyh0LmhpZGRlbkNsYXNzKSxhLnJlbW92ZUNsYXNzKHQubW9kaWZpZXJDbGFzcyt0LnR5cGUpLGUucGFnaW5hdGlvbi5idWxsZXRzJiZlLnBhZ2luYXRpb24uYnVsbGV0cy5yZW1vdmVDbGFzcyh0LmJ1bGxldEFjdGl2ZUNsYXNzKSx0LmNsaWNrYWJsZSYmYS5vZmYoImNsaWNrIiwiLiIrdC5idWxsZXRDbGFzcy5yZXBsYWNlKC8gL2csIi4iKSl9fX0sSj17c2V0VHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlLnBhcmFtcy5zY3JvbGxiYXIuZWwmJmUuc2Nyb2xsYmFyLmVsKXt2YXIgdD1lLnNjcm9sbGJhcixhPWUucnRsVHJhbnNsYXRlLGk9ZS5wcm9ncmVzcyxzPXQuZHJhZ1NpemUscj10LnRyYWNrU2l6ZSxuPXQuJGRyYWdFbCxsPXQuJGVsLG89ZS5wYXJhbXMuc2Nyb2xsYmFyLGQ9cyxwPShyLXMpKmk7YT8ocD0tcCk+MD8oZD1zLXAscD0wKTotcCtzPnImJihkPXIrcCk6cDwwPyhkPXMrcCxwPTApOnArcz5yJiYoZD1yLXApLGUuaXNIb3Jpem9udGFsKCk/KG4udHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK3ArInB4LCAwLCAwKSIpLG5bMF0uc3R5bGUud2lkdGg9ZCsicHgiKToobi50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDBweCwgIitwKyJweCwgMCkiKSxuWzBdLnN0eWxlLmhlaWdodD1kKyJweCIpLG8uaGlkZSYmKGNsZWFyVGltZW91dChlLnNjcm9sbGJhci50aW1lb3V0KSxsWzBdLnN0eWxlLm9wYWNpdHk9MSxlLnNjcm9sbGJhci50aW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bFswXS5zdHlsZS5vcGFjaXR5PTAsbC50cmFuc2l0aW9uKDQwMCl9KSwxZTMpKX19LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0LnBhcmFtcy5zY3JvbGxiYXIuZWwmJnQuc2Nyb2xsYmFyLmVsJiZ0LnNjcm9sbGJhci4kZHJhZ0VsLnRyYW5zaXRpb24oZSl9LHVwZGF0ZVNpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKGUucGFyYW1zLnNjcm9sbGJhci5lbCYmZS5zY3JvbGxiYXIuZWwpe3ZhciB0PWUuc2Nyb2xsYmFyLGE9dC4kZHJhZ0VsLGk9dC4kZWw7YVswXS5zdHlsZS53aWR0aD0iIixhWzBdLnN0eWxlLmhlaWdodD0iIjt2YXIgcyxyPWUuaXNIb3Jpem9udGFsKCk/aVswXS5vZmZzZXRXaWR0aDppWzBdLm9mZnNldEhlaWdodCxuPWUuc2l6ZS9lLnZpcnR1YWxTaXplLGw9biooci9lLnNpemUpO3M9ImF1dG8iPT09ZS5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdTaXplP3IqbjpwYXJzZUludChlLnBhcmFtcy5zY3JvbGxiYXIuZHJhZ1NpemUsMTApLGUuaXNIb3Jpem9udGFsKCk/YVswXS5zdHlsZS53aWR0aD1zKyJweCI6YVswXS5zdHlsZS5oZWlnaHQ9cysicHgiLGlbMF0uc3R5bGUuZGlzcGxheT1uPj0xPyJub25lIjoiIixlLnBhcmFtcy5zY3JvbGxiYXIuaGlkZSYmKGlbMF0uc3R5bGUub3BhY2l0eT0wKSxTKHQse3RyYWNrU2l6ZTpyLGRpdmlkZXI6bixtb3ZlRGl2aWRlcjpsLGRyYWdTaXplOnN9KSx0LiRlbFtlLnBhcmFtcy53YXRjaE92ZXJmbG93JiZlLmlzTG9ja2VkPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZS5wYXJhbXMuc2Nyb2xsYmFyLmxvY2tDbGFzcyl9fSxnZXRQb2ludGVyUG9zaXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/InRvdWNoc3RhcnQiPT09ZS50eXBlfHwidG91Y2htb3ZlIj09PWUudHlwZT9lLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFg6InRvdWNoc3RhcnQiPT09ZS50eXBlfHwidG91Y2htb3ZlIj09PWUudHlwZT9lLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WTplLmNsaWVudFl9LHNldERyYWdQb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgdCxhPXRoaXMsaT1hLnNjcm9sbGJhcixzPWEucnRsVHJhbnNsYXRlLHI9aS4kZWwsbj1pLmRyYWdTaXplLGw9aS50cmFja1NpemUsbz1pLmRyYWdTdGFydFBvczt0PShpLmdldFBvaW50ZXJQb3NpdGlvbihlKS1yLm9mZnNldCgpW2EuaXNIb3Jpem9udGFsKCk/ImxlZnQiOiJ0b3AiXS0obnVsbCE9PW8/bzpuLzIpKS8obC1uKSx0PU1hdGgubWF4KE1hdGgubWluKHQsMSksMCkscyYmKHQ9MS10KTt2YXIgZD1hLm1pblRyYW5zbGF0ZSgpKyhhLm1heFRyYW5zbGF0ZSgpLWEubWluVHJhbnNsYXRlKCkpKnQ7YS51cGRhdGVQcm9ncmVzcyhkKSxhLnNldFRyYW5zbGF0ZShkKSxhLnVwZGF0ZUFjdGl2ZUluZGV4KCksYS51cGRhdGVTbGlkZXNDbGFzc2VzKCl9LG9uRHJhZ1N0YXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LnBhcmFtcy5zY3JvbGxiYXIsaT10LnNjcm9sbGJhcixzPXQuJHdyYXBwZXJFbCxyPWkuJGVsLG49aS4kZHJhZ0VsO3Quc2Nyb2xsYmFyLmlzVG91Y2hlZD0hMCx0LnNjcm9sbGJhci5kcmFnU3RhcnRQb3M9ZS50YXJnZXQ9PT1uWzBdfHxlLnRhcmdldD09PW4/aS5nZXRQb2ludGVyUG9zaXRpb24oZSktZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbdC5pc0hvcml6b250YWwoKT8ibGVmdCI6InRvcCJdOm51bGwsZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkscy50cmFuc2l0aW9uKDEwMCksbi50cmFuc2l0aW9uKDEwMCksaS5zZXREcmFnUG9zaXRpb24oZSksY2xlYXJUaW1lb3V0KHQuc2Nyb2xsYmFyLmRyYWdUaW1lb3V0KSxyLnRyYW5zaXRpb24oMCksYS5oaWRlJiZyLmNzcygib3BhY2l0eSIsMSksdC5wYXJhbXMuY3NzTW9kZSYmdC4kd3JhcHBlckVsLmNzcygic2Nyb2xsLXNuYXAtdHlwZSIsIm5vbmUiKSx0LmVtaXQoInNjcm9sbGJhckRyYWdTdGFydCIsZSl9LG9uRHJhZ01vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQuc2Nyb2xsYmFyLGk9dC4kd3JhcHBlckVsLHM9YS4kZWwscj1hLiRkcmFnRWw7dC5zY3JvbGxiYXIuaXNUb3VjaGVkJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMSxhLnNldERyYWdQb3NpdGlvbihlKSxpLnRyYW5zaXRpb24oMCkscy50cmFuc2l0aW9uKDApLHIudHJhbnNpdGlvbigwKSx0LmVtaXQoInNjcm9sbGJhckRyYWdNb3ZlIixlKSl9LG9uRHJhZ0VuZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dC5wYXJhbXMuc2Nyb2xsYmFyLGk9dC5zY3JvbGxiYXIscz10LiR3cmFwcGVyRWwscj1pLiRlbDt0LnNjcm9sbGJhci5pc1RvdWNoZWQmJih0LnNjcm9sbGJhci5pc1RvdWNoZWQ9ITEsdC5wYXJhbXMuY3NzTW9kZSYmKHQuJHdyYXBwZXJFbC5jc3MoInNjcm9sbC1zbmFwLXR5cGUiLCIiKSxzLnRyYW5zaXRpb24oIiIpKSxhLmhpZGUmJihjbGVhclRpbWVvdXQodC5zY3JvbGxiYXIuZHJhZ1RpbWVvdXQpLHQuc2Nyb2xsYmFyLmRyYWdUaW1lb3V0PUUoKGZ1bmN0aW9uKCl7ci5jc3MoIm9wYWNpdHkiLDApLHIudHJhbnNpdGlvbig0MDApfSksMWUzKSksdC5lbWl0KCJzY3JvbGxiYXJEcmFnRW5kIixlKSxhLnNuYXBPblJlbGVhc2UmJnQuc2xpZGVUb0Nsb3Nlc3QoKSl9LGVuYWJsZURyYWdnYWJsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoZS5wYXJhbXMuc2Nyb2xsYmFyLmVsKXt2YXIgdD1yKCksYT1lLnNjcm9sbGJhcixpPWUudG91Y2hFdmVudHNUb3VjaCxzPWUudG91Y2hFdmVudHNEZXNrdG9wLG49ZS5wYXJhbXMsbD1lLnN1cHBvcnQsbz1hLiRlbFswXSxkPSEoIWwucGFzc2l2ZUxpc3RlbmVyfHwhbi5wYXNzaXZlTGlzdGVuZXJzKSYme3Bhc3NpdmU6ITEsY2FwdHVyZTohMX0scD0hKCFsLnBhc3NpdmVMaXN0ZW5lcnx8IW4ucGFzc2l2ZUxpc3RlbmVycykmJntwYXNzaXZlOiEwLGNhcHR1cmU6ITF9O28mJihsLnRvdWNoPyhvLmFkZEV2ZW50TGlzdGVuZXIoaS5zdGFydCxlLnNjcm9sbGJhci5vbkRyYWdTdGFydCxkKSxvLmFkZEV2ZW50TGlzdGVuZXIoaS5tb3ZlLGUuc2Nyb2xsYmFyLm9uRHJhZ01vdmUsZCksby5hZGRFdmVudExpc3RlbmVyKGkuZW5kLGUuc2Nyb2xsYmFyLm9uRHJhZ0VuZCxwKSk6KG8uYWRkRXZlbnRMaXN0ZW5lcihzLnN0YXJ0LGUuc2Nyb2xsYmFyLm9uRHJhZ1N0YXJ0LGQpLHQuYWRkRXZlbnRMaXN0ZW5lcihzLm1vdmUsZS5zY3JvbGxiYXIub25EcmFnTW92ZSxkKSx0LmFkZEV2ZW50TGlzdGVuZXIocy5lbmQsZS5zY3JvbGxiYXIub25EcmFnRW5kLHApKSl9fSxkaXNhYmxlRHJhZ2dhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihlLnBhcmFtcy5zY3JvbGxiYXIuZWwpe3ZhciB0PXIoKSxhPWUuc2Nyb2xsYmFyLGk9ZS50b3VjaEV2ZW50c1RvdWNoLHM9ZS50b3VjaEV2ZW50c0Rlc2t0b3Asbj1lLnBhcmFtcyxsPWUuc3VwcG9ydCxvPWEuJGVsWzBdLGQ9ISghbC5wYXNzaXZlTGlzdGVuZXJ8fCFuLnBhc3NpdmVMaXN0ZW5lcnMpJiZ7cGFzc2l2ZTohMSxjYXB0dXJlOiExfSxwPSEoIWwucGFzc2l2ZUxpc3RlbmVyfHwhbi5wYXNzaXZlTGlzdGVuZXJzKSYme3Bhc3NpdmU6ITAsY2FwdHVyZTohMX07byYmKGwudG91Y2g/KG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLnN0YXJ0LGUuc2Nyb2xsYmFyLm9uRHJhZ1N0YXJ0LGQpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLm1vdmUsZS5zY3JvbGxiYXIub25EcmFnTW92ZSxkKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS5lbmQsZS5zY3JvbGxiYXIub25EcmFnRW5kLHApKTooby5yZW1vdmVFdmVudExpc3RlbmVyKHMuc3RhcnQsZS5zY3JvbGxiYXIub25EcmFnU3RhcnQsZCksdC5yZW1vdmVFdmVudExpc3RlbmVyKHMubW92ZSxlLnNjcm9sbGJhci5vbkRyYWdNb3ZlLGQpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLmVuZCxlLnNjcm9sbGJhci5vbkRyYWdFbmQscCkpKX19LGluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKGUucGFyYW1zLnNjcm9sbGJhci5lbCl7dmFyIHQ9ZS5zY3JvbGxiYXIsYT1lLiRlbCxpPWUucGFyYW1zLnNjcm9sbGJhcixzPW0oaS5lbCk7ZS5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMmJiJzdHJpbmciPT10eXBlb2YgaS5lbCYmcy5sZW5ndGg+MSYmMT09PWEuZmluZChpLmVsKS5sZW5ndGgmJihzPWEuZmluZChpLmVsKSk7dmFyIHI9cy5maW5kKCIuIitlLnBhcmFtcy5zY3JvbGxiYXIuZHJhZ0NsYXNzKTswPT09ci5sZW5ndGgmJihyPW0oJzxkaXYgY2xhc3M9IicrZS5wYXJhbXMuc2Nyb2xsYmFyLmRyYWdDbGFzcysnIj48L2Rpdj4nKSxzLmFwcGVuZChyKSksUyh0LHskZWw6cyxlbDpzWzBdLCRkcmFnRWw6cixkcmFnRWw6clswXX0pLGkuZHJhZ2dhYmxlJiZ0LmVuYWJsZURyYWdnYWJsZSgpfX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsYmFyLmRpc2FibGVEcmFnZ2FibGUoKX19LFE9e3NldFRyYW5zZm9ybTpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMucnRsLGk9bShlKSxzPWE/LTE6MSxyPWkuYXR0cigiZGF0YS1zd2lwZXItcGFyYWxsYXgiKXx8IjAiLG49aS5hdHRyKCJkYXRhLXN3aXBlci1wYXJhbGxheC14IiksbD1pLmF0dHIoImRhdGEtc3dpcGVyLXBhcmFsbGF4LXkiKSxvPWkuYXR0cigiZGF0YS1zd2lwZXItcGFyYWxsYXgtc2NhbGUiKSxkPWkuYXR0cigiZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eSIpO2lmKG58fGw/KG49bnx8IjAiLGw9bHx8IjAiKTp0aGlzLmlzSG9yaXpvbnRhbCgpPyhuPXIsbD0iMCIpOihsPXIsbj0iMCIpLG49bi5pbmRleE9mKCIlIik+PTA/cGFyc2VJbnQobiwxMCkqdCpzKyIlIjpuKnQqcysicHgiLGw9bC5pbmRleE9mKCIlIik+PTA/cGFyc2VJbnQobCwxMCkqdCsiJSI6bCp0KyJweCIsbnVsbCE9ZCl7dmFyIHA9ZC0oZC0xKSooMS1NYXRoLmFicyh0KSk7aVswXS5zdHlsZS5vcGFjaXR5PXB9aWYobnVsbD09bylpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIituKyIsICIrbCsiLCAwcHgpIik7ZWxzZXt2YXIgYz1vLShvLTEpKigxLU1hdGguYWJzKHQpKTtpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIituKyIsICIrbCsiLCAwcHgpIHNjYWxlKCIrYysiKSIpfX0sc2V0VHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGVsLGE9ZS5zbGlkZXMsaT1lLnByb2dyZXNzLHM9ZS5zbmFwR3JpZDt0LmNoaWxkcmVuKCJbZGF0YS1zd2lwZXItcGFyYWxsYXhdLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgteF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC15XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LW9wYWNpdHldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtc2NhbGVdIikuZWFjaCgoZnVuY3Rpb24odCl7ZS5wYXJhbGxheC5zZXRUcmFuc2Zvcm0odCxpKX0pKSxhLmVhY2goKGZ1bmN0aW9uKHQsYSl7dmFyIHI9dC5wcm9ncmVzcztlLnBhcmFtcy5zbGlkZXNQZXJHcm91cD4xJiYiYXV0byIhPT1lLnBhcmFtcy5zbGlkZXNQZXJWaWV3JiYocis9TWF0aC5jZWlsKGEvMiktaSoocy5sZW5ndGgtMSkpLHI9TWF0aC5taW4oTWF0aC5tYXgociwtMSksMSksbSh0KS5maW5kKCJbZGF0YS1zd2lwZXItcGFyYWxsYXhdLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgteF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC15XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LW9wYWNpdHldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtc2NhbGVdIikuZWFjaCgoZnVuY3Rpb24odCl7ZS5wYXJhbGxheC5zZXRUcmFuc2Zvcm0odCxyKX0pKX0pKX0sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT10aGlzLnBhcmFtcy5zcGVlZCk7dGhpcy4kZWwuZmluZCgiW2RhdGEtc3dpcGVyLXBhcmFsbGF4XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXhdLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgteV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1vcGFjaXR5XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXNjYWxlXSIpLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBhPW0odCksaT1wYXJzZUludChhLmF0dHIoImRhdGEtc3dpcGVyLXBhcmFsbGF4LWR1cmF0aW9uIiksMTApfHxlOzA9PT1lJiYoaT0wKSxhLnRyYW5zaXRpb24oaSl9KSl9fSxlZT17Z2V0RGlzdGFuY2VCZXR3ZWVuVG91Y2hlczpmdW5jdGlvbihlKXtpZihlLnRhcmdldFRvdWNoZXMubGVuZ3RoPDIpcmV0dXJuIDE7dmFyIHQ9ZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYLGE9ZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZLGk9ZS50YXJnZXRUb3VjaGVzWzFdLnBhZ2VYLHM9ZS50YXJnZXRUb3VjaGVzWzFdLnBhZ2VZO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coaS10LDIpK01hdGgucG93KHMtYSwyKSl9LG9uR2VzdHVyZVN0YXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LnN1cHBvcnQsaT10LnBhcmFtcy56b29tLHM9dC56b29tLHI9cy5nZXN0dXJlO2lmKHMuZmFrZUdlc3R1cmVUb3VjaGVkPSExLHMuZmFrZUdlc3R1cmVNb3ZlZD0hMSwhYS5nZXN0dXJlcyl7aWYoInRvdWNoc3RhcnQiIT09ZS50eXBlfHwidG91Y2hzdGFydCI9PT1lLnR5cGUmJmUudGFyZ2V0VG91Y2hlcy5sZW5ndGg8MilyZXR1cm47cy5mYWtlR2VzdHVyZVRvdWNoZWQ9ITAsci5zY2FsZVN0YXJ0PWVlLmdldERpc3RhbmNlQmV0d2VlblRvdWNoZXMoZSl9ci4kc2xpZGVFbCYmci4kc2xpZGVFbC5sZW5ndGh8fChyLiRzbGlkZUVsPW0oZS50YXJnZXQpLmNsb3Nlc3QoIi4iK3QucGFyYW1zLnNsaWRlQ2xhc3MpLDA9PT1yLiRzbGlkZUVsLmxlbmd0aCYmKHIuJHNsaWRlRWw9dC5zbGlkZXMuZXEodC5hY3RpdmVJbmRleCkpLHIuJGltYWdlRWw9ci4kc2xpZGVFbC5maW5kKCJpbWcsIHN2ZywgY2FudmFzLCBwaWN0dXJlLCAuc3dpcGVyLXpvb20tdGFyZ2V0Iiksci4kaW1hZ2VXcmFwRWw9ci4kaW1hZ2VFbC5wYXJlbnQoIi4iK2kuY29udGFpbmVyQ2xhc3MpLHIubWF4UmF0aW89ci4kaW1hZ2VXcmFwRWwuYXR0cigiZGF0YS1zd2lwZXItem9vbSIpfHxpLm1heFJhdGlvLDAhPT1yLiRpbWFnZVdyYXBFbC5sZW5ndGgpPyhyLiRpbWFnZUVsJiZyLiRpbWFnZUVsLnRyYW5zaXRpb24oMCksdC56b29tLmlzU2NhbGluZz0hMCk6ci4kaW1hZ2VFbD12b2lkIDB9LG9uR2VzdHVyZUNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dC5zdXBwb3J0LGk9dC5wYXJhbXMuem9vbSxzPXQuem9vbSxyPXMuZ2VzdHVyZTtpZighYS5nZXN0dXJlcyl7aWYoInRvdWNobW92ZSIhPT1lLnR5cGV8fCJ0b3VjaG1vdmUiPT09ZS50eXBlJiZlLnRhcmdldFRvdWNoZXMubGVuZ3RoPDIpcmV0dXJuO3MuZmFrZUdlc3R1cmVNb3ZlZD0hMCxyLnNjYWxlTW92ZT1lZS5nZXREaXN0YW5jZUJldHdlZW5Ub3VjaGVzKGUpfXIuJGltYWdlRWwmJjAhPT1yLiRpbWFnZUVsLmxlbmd0aD8oYS5nZXN0dXJlcz9zLnNjYWxlPWUuc2NhbGUqcy5jdXJyZW50U2NhbGU6cy5zY2FsZT1yLnNjYWxlTW92ZS9yLnNjYWxlU3RhcnQqcy5jdXJyZW50U2NhbGUscy5zY2FsZT5yLm1heFJhdGlvJiYocy5zY2FsZT1yLm1heFJhdGlvLTErTWF0aC5wb3cocy5zY2FsZS1yLm1heFJhdGlvKzEsLjUpKSxzLnNjYWxlPGkubWluUmF0aW8mJihzLnNjYWxlPWkubWluUmF0aW8rMS1NYXRoLnBvdyhpLm1pblJhdGlvLXMuc2NhbGUrMSwuNSkpLHIuJGltYWdlRWwudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoIitzLnNjYWxlKyIpIikpOiJnZXN0dXJlY2hhbmdlIj09PWUudHlwZSYmcy5vbkdlc3R1cmVTdGFydChlKX0sb25HZXN0dXJlRW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LmRldmljZSxpPXQuc3VwcG9ydCxzPXQucGFyYW1zLnpvb20scj10Lnpvb20sbj1yLmdlc3R1cmU7aWYoIWkuZ2VzdHVyZXMpe2lmKCFyLmZha2VHZXN0dXJlVG91Y2hlZHx8IXIuZmFrZUdlc3R1cmVNb3ZlZClyZXR1cm47aWYoInRvdWNoZW5kIiE9PWUudHlwZXx8InRvdWNoZW5kIj09PWUudHlwZSYmZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg8MiYmIWEuYW5kcm9pZClyZXR1cm47ci5mYWtlR2VzdHVyZVRvdWNoZWQ9ITEsci5mYWtlR2VzdHVyZU1vdmVkPSExfW4uJGltYWdlRWwmJjAhPT1uLiRpbWFnZUVsLmxlbmd0aCYmKHIuc2NhbGU9TWF0aC5tYXgoTWF0aC5taW4oci5zY2FsZSxuLm1heFJhdGlvKSxzLm1pblJhdGlvKSxuLiRpbWFnZUVsLnRyYW5zaXRpb24odC5wYXJhbXMuc3BlZWQpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKCIrci5zY2FsZSsiKSIpLHIuY3VycmVudFNjYWxlPXIuc2NhbGUsci5pc1NjYWxpbmc9ITEsMT09PXIuc2NhbGUmJihuLiRzbGlkZUVsPXZvaWQgMCkpfSxvblRvdWNoU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kZXZpY2UsYT10aGlzLnpvb20saT1hLmdlc3R1cmUscz1hLmltYWdlO2kuJGltYWdlRWwmJjAhPT1pLiRpbWFnZUVsLmxlbmd0aCYmKHMuaXNUb3VjaGVkfHwodC5hbmRyb2lkJiZlLmNhbmNlbGFibGUmJmUucHJldmVudERlZmF1bHQoKSxzLmlzVG91Y2hlZD0hMCxzLnRvdWNoZXNTdGFydC54PSJ0b3VjaHN0YXJ0Ij09PWUudHlwZT9lLnRhcmdldFRvdWNoZXNbMF0ucGFnZVg6ZS5wYWdlWCxzLnRvdWNoZXNTdGFydC55PSJ0b3VjaHN0YXJ0Ij09PWUudHlwZT9lLnRhcmdldFRvdWNoZXNbMF0ucGFnZVk6ZS5wYWdlWSkpfSxvblRvdWNoTW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dC56b29tLGk9YS5nZXN0dXJlLHM9YS5pbWFnZSxyPWEudmVsb2NpdHk7aWYoaS4kaW1hZ2VFbCYmMCE9PWkuJGltYWdlRWwubGVuZ3RoJiYodC5hbGxvd0NsaWNrPSExLHMuaXNUb3VjaGVkJiZpLiRzbGlkZUVsKSl7cy5pc01vdmVkfHwocy53aWR0aD1pLiRpbWFnZUVsWzBdLm9mZnNldFdpZHRoLHMuaGVpZ2h0PWkuJGltYWdlRWxbMF0ub2Zmc2V0SGVpZ2h0LHMuc3RhcnRYPVQoaS4kaW1hZ2VXcmFwRWxbMF0sIngiKXx8MCxzLnN0YXJ0WT1UKGkuJGltYWdlV3JhcEVsWzBdLCJ5Iil8fDAsaS5zbGlkZVdpZHRoPWkuJHNsaWRlRWxbMF0ub2Zmc2V0V2lkdGgsaS5zbGlkZUhlaWdodD1pLiRzbGlkZUVsWzBdLm9mZnNldEhlaWdodCxpLiRpbWFnZVdyYXBFbC50cmFuc2l0aW9uKDApLHQucnRsJiYocy5zdGFydFg9LXMuc3RhcnRYLHMuc3RhcnRZPS1zLnN0YXJ0WSkpO3ZhciBuPXMud2lkdGgqYS5zY2FsZSxsPXMuaGVpZ2h0KmEuc2NhbGU7aWYoIShuPGkuc2xpZGVXaWR0aCYmbDxpLnNsaWRlSGVpZ2h0KSl7aWYocy5taW5YPU1hdGgubWluKGkuc2xpZGVXaWR0aC8yLW4vMiwwKSxzLm1heFg9LXMubWluWCxzLm1pblk9TWF0aC5taW4oaS5zbGlkZUhlaWdodC8yLWwvMiwwKSxzLm1heFk9LXMubWluWSxzLnRvdWNoZXNDdXJyZW50Lng9InRvdWNobW92ZSI9PT1lLnR5cGU/ZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYOmUucGFnZVgscy50b3VjaGVzQ3VycmVudC55PSJ0b3VjaG1vdmUiPT09ZS50eXBlP2UudGFyZ2V0VG91Y2hlc1swXS5wYWdlWTplLnBhZ2VZLCFzLmlzTW92ZWQmJiFhLmlzU2NhbGluZyl7aWYodC5pc0hvcml6b250YWwoKSYmKE1hdGguZmxvb3Iocy5taW5YKT09PU1hdGguZmxvb3Iocy5zdGFydFgpJiZzLnRvdWNoZXNDdXJyZW50Lng8cy50b3VjaGVzU3RhcnQueHx8TWF0aC5mbG9vcihzLm1heFgpPT09TWF0aC5mbG9vcihzLnN0YXJ0WCkmJnMudG91Y2hlc0N1cnJlbnQueD5zLnRvdWNoZXNTdGFydC54KSlyZXR1cm4gdm9pZChzLmlzVG91Y2hlZD0hMSk7aWYoIXQuaXNIb3Jpem9udGFsKCkmJihNYXRoLmZsb29yKHMubWluWSk9PT1NYXRoLmZsb29yKHMuc3RhcnRZKSYmcy50b3VjaGVzQ3VycmVudC55PHMudG91Y2hlc1N0YXJ0Lnl8fE1hdGguZmxvb3Iocy5tYXhZKT09PU1hdGguZmxvb3Iocy5zdGFydFkpJiZzLnRvdWNoZXNDdXJyZW50Lnk+cy50b3VjaGVzU3RhcnQueSkpcmV0dXJuIHZvaWQocy5pc1RvdWNoZWQ9ITEpfWUuY2FuY2VsYWJsZSYmZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkscy5pc01vdmVkPSEwLHMuY3VycmVudFg9cy50b3VjaGVzQ3VycmVudC54LXMudG91Y2hlc1N0YXJ0Lngrcy5zdGFydFgscy5jdXJyZW50WT1zLnRvdWNoZXNDdXJyZW50Lnktcy50b3VjaGVzU3RhcnQueStzLnN0YXJ0WSxzLmN1cnJlbnRYPHMubWluWCYmKHMuY3VycmVudFg9cy5taW5YKzEtTWF0aC5wb3cocy5taW5YLXMuY3VycmVudFgrMSwuOCkpLHMuY3VycmVudFg+cy5tYXhYJiYocy5jdXJyZW50WD1zLm1heFgtMStNYXRoLnBvdyhzLmN1cnJlbnRYLXMubWF4WCsxLC44KSkscy5jdXJyZW50WTxzLm1pblkmJihzLmN1cnJlbnRZPXMubWluWSsxLU1hdGgucG93KHMubWluWS1zLmN1cnJlbnRZKzEsLjgpKSxzLmN1cnJlbnRZPnMubWF4WSYmKHMuY3VycmVudFk9cy5tYXhZLTErTWF0aC5wb3cocy5jdXJyZW50WS1zLm1heFkrMSwuOCkpLHIucHJldlBvc2l0aW9uWHx8KHIucHJldlBvc2l0aW9uWD1zLnRvdWNoZXNDdXJyZW50LngpLHIucHJldlBvc2l0aW9uWXx8KHIucHJldlBvc2l0aW9uWT1zLnRvdWNoZXNDdXJyZW50LnkpLHIucHJldlRpbWV8fChyLnByZXZUaW1lPURhdGUubm93KCkpLHIueD0ocy50b3VjaGVzQ3VycmVudC54LXIucHJldlBvc2l0aW9uWCkvKERhdGUubm93KCktci5wcmV2VGltZSkvMixyLnk9KHMudG91Y2hlc0N1cnJlbnQueS1yLnByZXZQb3NpdGlvblkpLyhEYXRlLm5vdygpLXIucHJldlRpbWUpLzIsTWF0aC5hYnMocy50b3VjaGVzQ3VycmVudC54LXIucHJldlBvc2l0aW9uWCk8MiYmKHIueD0wKSxNYXRoLmFicyhzLnRvdWNoZXNDdXJyZW50Lnktci5wcmV2UG9zaXRpb25ZKTwyJiYoci55PTApLHIucHJldlBvc2l0aW9uWD1zLnRvdWNoZXNDdXJyZW50Lngsci5wcmV2UG9zaXRpb25ZPXMudG91Y2hlc0N1cnJlbnQueSxyLnByZXZUaW1lPURhdGUubm93KCksaS4kaW1hZ2VXcmFwRWwudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK3MuY3VycmVudFgrInB4LCAiK3MuY3VycmVudFkrInB4LDApIil9fX0sb25Ub3VjaEVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuem9vbSx0PWUuZ2VzdHVyZSxhPWUuaW1hZ2UsaT1lLnZlbG9jaXR5O2lmKHQuJGltYWdlRWwmJjAhPT10LiRpbWFnZUVsLmxlbmd0aCl7aWYoIWEuaXNUb3VjaGVkfHwhYS5pc01vdmVkKXJldHVybiBhLmlzVG91Y2hlZD0hMSx2b2lkKGEuaXNNb3ZlZD0hMSk7YS5pc1RvdWNoZWQ9ITEsYS5pc01vdmVkPSExO3ZhciBzPTMwMCxyPTMwMCxuPWkueCpzLGw9YS5jdXJyZW50WCtuLG89aS55KnIsZD1hLmN1cnJlbnRZK287MCE9PWkueCYmKHM9TWF0aC5hYnMoKGwtYS5jdXJyZW50WCkvaS54KSksMCE9PWkueSYmKHI9TWF0aC5hYnMoKGQtYS5jdXJyZW50WSkvaS55KSk7dmFyIHA9TWF0aC5tYXgocyxyKTthLmN1cnJlbnRYPWwsYS5jdXJyZW50WT1kO3ZhciBjPWEud2lkdGgqZS5zY2FsZSx1PWEuaGVpZ2h0KmUuc2NhbGU7YS5taW5YPU1hdGgubWluKHQuc2xpZGVXaWR0aC8yLWMvMiwwKSxhLm1heFg9LWEubWluWCxhLm1pblk9TWF0aC5taW4odC5zbGlkZUhlaWdodC8yLXUvMiwwKSxhLm1heFk9LWEubWluWSxhLmN1cnJlbnRYPU1hdGgubWF4KE1hdGgubWluKGEuY3VycmVudFgsYS5tYXhYKSxhLm1pblgpLGEuY3VycmVudFk9TWF0aC5tYXgoTWF0aC5taW4oYS5jdXJyZW50WSxhLm1heFkpLGEubWluWSksdC4kaW1hZ2VXcmFwRWwudHJhbnNpdGlvbihwKS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKCIrYS5jdXJyZW50WCsicHgsICIrYS5jdXJyZW50WSsicHgsMCkiKX19LG9uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLnpvb20sYT10Lmdlc3R1cmU7YS4kc2xpZGVFbCYmZS5wcmV2aW91c0luZGV4IT09ZS5hY3RpdmVJbmRleCYmKGEuJGltYWdlRWwmJmEuJGltYWdlRWwudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSkiKSxhLiRpbWFnZVdyYXBFbCYmYS4kaW1hZ2VXcmFwRWwudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkiKSx0LnNjYWxlPTEsdC5jdXJyZW50U2NhbGU9MSxhLiRzbGlkZUVsPXZvaWQgMCxhLiRpbWFnZUVsPXZvaWQgMCxhLiRpbWFnZVdyYXBFbD12b2lkIDApfSx0b2dnbGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy56b29tO3Quc2NhbGUmJjEhPT10LnNjYWxlP3Qub3V0KCk6dC5pbihlKX0saW46ZnVuY3Rpb24oZSl7dmFyIHQsYSxpLHMscixuLG8sZCxwLGMsdSxoLHYsZixtLGcsYj10aGlzLHc9bCgpLHk9Yi56b29tLEU9Yi5wYXJhbXMuem9vbSx4PXkuZ2VzdHVyZSxUPXkuaW1hZ2U7KHguJHNsaWRlRWx8fChiLnBhcmFtcy52aXJ0dWFsJiZiLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQmJmIudmlydHVhbD94LiRzbGlkZUVsPWIuJHdyYXBwZXJFbC5jaGlsZHJlbigiLiIrYi5wYXJhbXMuc2xpZGVBY3RpdmVDbGFzcyk6eC4kc2xpZGVFbD1iLnNsaWRlcy5lcShiLmFjdGl2ZUluZGV4KSx4LiRpbWFnZUVsPXguJHNsaWRlRWwuZmluZCgiaW1nLCBzdmcsIGNhbnZhcywgcGljdHVyZSwgLnN3aXBlci16b29tLXRhcmdldCIpLHguJGltYWdlV3JhcEVsPXguJGltYWdlRWwucGFyZW50KCIuIitFLmNvbnRhaW5lckNsYXNzKSkseC4kaW1hZ2VFbCYmMCE9PXguJGltYWdlRWwubGVuZ3RoKSYmKHguJHNsaWRlRWwuYWRkQ2xhc3MoIiIrRS56b29tZWRTbGlkZUNsYXNzKSx2b2lkIDA9PT1ULnRvdWNoZXNTdGFydC54JiZlPyh0PSJ0b3VjaGVuZCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWDplLnBhZ2VYLGE9InRvdWNoZW5kIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZOmUucGFnZVkpOih0PVQudG91Y2hlc1N0YXJ0LngsYT1ULnRvdWNoZXNTdGFydC55KSx5LnNjYWxlPXguJGltYWdlV3JhcEVsLmF0dHIoImRhdGEtc3dpcGVyLXpvb20iKXx8RS5tYXhSYXRpbyx5LmN1cnJlbnRTY2FsZT14LiRpbWFnZVdyYXBFbC5hdHRyKCJkYXRhLXN3aXBlci16b29tIil8fEUubWF4UmF0aW8sZT8obT14LiRzbGlkZUVsWzBdLm9mZnNldFdpZHRoLGc9eC4kc2xpZGVFbFswXS5vZmZzZXRIZWlnaHQsaT14LiRzbGlkZUVsLm9mZnNldCgpLmxlZnQrdy5zY3JvbGxYK20vMi10LHM9eC4kc2xpZGVFbC5vZmZzZXQoKS50b3Ardy5zY3JvbGxZK2cvMi1hLG89eC4kaW1hZ2VFbFswXS5vZmZzZXRXaWR0aCxkPXguJGltYWdlRWxbMF0ub2Zmc2V0SGVpZ2h0LHA9byp5LnNjYWxlLGM9ZCp5LnNjYWxlLHY9LSh1PU1hdGgubWluKG0vMi1wLzIsMCkpLGY9LShoPU1hdGgubWluKGcvMi1jLzIsMCkpLChyPWkqeS5zY2FsZSk8dSYmKHI9dSkscj52JiYocj12KSwobj1zKnkuc2NhbGUpPGgmJihuPWgpLG4+ZiYmKG49ZikpOihyPTAsbj0wKSx4LiRpbWFnZVdyYXBFbC50cmFuc2l0aW9uKDMwMCkudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK3IrInB4LCAiK24rInB4LDApIikseC4kaW1hZ2VFbC50cmFuc2l0aW9uKDMwMCkudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoIit5LnNjYWxlKyIpIikpfSxvdXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS56b29tLGE9ZS5wYXJhbXMuem9vbSxpPXQuZ2VzdHVyZTtpLiRzbGlkZUVsfHwoZS5wYXJhbXMudmlydHVhbCYmZS5wYXJhbXMudmlydHVhbC5lbmFibGVkJiZlLnZpcnR1YWw/aS4kc2xpZGVFbD1lLiR3cmFwcGVyRWwuY2hpbGRyZW4oIi4iK2UucGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MpOmkuJHNsaWRlRWw9ZS5zbGlkZXMuZXEoZS5hY3RpdmVJbmRleCksaS4kaW1hZ2VFbD1pLiRzbGlkZUVsLmZpbmQoImltZywgc3ZnLCBjYW52YXMsIHBpY3R1cmUsIC5zd2lwZXItem9vbS10YXJnZXQiKSxpLiRpbWFnZVdyYXBFbD1pLiRpbWFnZUVsLnBhcmVudCgiLiIrYS5jb250YWluZXJDbGFzcykpLGkuJGltYWdlRWwmJjAhPT1pLiRpbWFnZUVsLmxlbmd0aCYmKHQuc2NhbGU9MSx0LmN1cnJlbnRTY2FsZT0xLGkuJGltYWdlV3JhcEVsLnRyYW5zaXRpb24oMzAwKS50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKDAsMCwwKSIpLGkuJGltYWdlRWwudHJhbnNpdGlvbigzMDApLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpIiksaS4kc2xpZGVFbC5yZW1vdmVDbGFzcygiIithLnpvb21lZFNsaWRlQ2xhc3MpLGkuJHNsaWRlRWw9dm9pZCAwKX0sdG9nZ2xlR2VzdHVyZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQuem9vbSxpPWEuc2xpZGVTZWxlY3RvcixzPWEucGFzc2l2ZUxpc3RlbmVyO3QuJHdyYXBwZXJFbFtlXSgiZ2VzdHVyZXN0YXJ0IixpLGEub25HZXN0dXJlU3RhcnQscyksdC4kd3JhcHBlckVsW2VdKCJnZXN0dXJlY2hhbmdlIixpLGEub25HZXN0dXJlQ2hhbmdlLHMpLHQuJHdyYXBwZXJFbFtlXSgiZ2VzdHVyZWVuZCIsaSxhLm9uR2VzdHVyZUVuZCxzKX0sZW5hYmxlR2VzdHVyZXM6ZnVuY3Rpb24oKXt0aGlzLnpvb20uZ2VzdHVyZXNFbmFibGVkfHwodGhpcy56b29tLmdlc3R1cmVzRW5hYmxlZD0hMCx0aGlzLnpvb20udG9nZ2xlR2VzdHVyZXMoIm9uIikpfSxkaXNhYmxlR2VzdHVyZXM6ZnVuY3Rpb24oKXt0aGlzLnpvb20uZ2VzdHVyZXNFbmFibGVkJiYodGhpcy56b29tLmdlc3R1cmVzRW5hYmxlZD0hMSx0aGlzLnpvb20udG9nZ2xlR2VzdHVyZXMoIm9mZiIpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuc3VwcG9ydCxhPWUuem9vbTtpZighYS5lbmFibGVkKXthLmVuYWJsZWQ9ITA7dmFyIGk9ISgidG91Y2hzdGFydCIhPT1lLnRvdWNoRXZlbnRzLnN0YXJ0fHwhdC5wYXNzaXZlTGlzdGVuZXJ8fCFlLnBhcmFtcy5wYXNzaXZlTGlzdGVuZXJzKSYme3Bhc3NpdmU6ITAsY2FwdHVyZTohMX0scz0hdC5wYXNzaXZlTGlzdGVuZXJ8fHtwYXNzaXZlOiExLGNhcHR1cmU6ITB9LHI9Ii4iK2UucGFyYW1zLnNsaWRlQ2xhc3M7ZS56b29tLnBhc3NpdmVMaXN0ZW5lcj1pLGUuem9vbS5zbGlkZVNlbGVjdG9yPXIsdC5nZXN0dXJlcz8oZS4kd3JhcHBlckVsLm9uKGUudG91Y2hFdmVudHMuc3RhcnQsZS56b29tLmVuYWJsZUdlc3R1cmVzLGkpLGUuJHdyYXBwZXJFbC5vbihlLnRvdWNoRXZlbnRzLmVuZCxlLnpvb20uZGlzYWJsZUdlc3R1cmVzLGkpKToidG91Y2hzdGFydCI9PT1lLnRvdWNoRXZlbnRzLnN0YXJ0JiYoZS4kd3JhcHBlckVsLm9uKGUudG91Y2hFdmVudHMuc3RhcnQscixhLm9uR2VzdHVyZVN0YXJ0LGkpLGUuJHdyYXBwZXJFbC5vbihlLnRvdWNoRXZlbnRzLm1vdmUscixhLm9uR2VzdHVyZUNoYW5nZSxzKSxlLiR3cmFwcGVyRWwub24oZS50b3VjaEV2ZW50cy5lbmQscixhLm9uR2VzdHVyZUVuZCxpKSxlLnRvdWNoRXZlbnRzLmNhbmNlbCYmZS4kd3JhcHBlckVsLm9uKGUudG91Y2hFdmVudHMuY2FuY2VsLHIsYS5vbkdlc3R1cmVFbmQsaSkpLGUuJHdyYXBwZXJFbC5vbihlLnRvdWNoRXZlbnRzLm1vdmUsIi4iK2UucGFyYW1zLnpvb20uY29udGFpbmVyQ2xhc3MsYS5vblRvdWNoTW92ZSxzKX19LGRpc2FibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS56b29tO2lmKHQuZW5hYmxlZCl7dmFyIGE9ZS5zdXBwb3J0O2Uuem9vbS5lbmFibGVkPSExO3ZhciBpPSEoInRvdWNoc3RhcnQiIT09ZS50b3VjaEV2ZW50cy5zdGFydHx8IWEucGFzc2l2ZUxpc3RlbmVyfHwhZS5wYXJhbXMucGFzc2l2ZUxpc3RlbmVycykmJntwYXNzaXZlOiEwLGNhcHR1cmU6ITF9LHM9IWEucGFzc2l2ZUxpc3RlbmVyfHx7cGFzc2l2ZTohMSxjYXB0dXJlOiEwfSxyPSIuIitlLnBhcmFtcy5zbGlkZUNsYXNzO2EuZ2VzdHVyZXM/KGUuJHdyYXBwZXJFbC5vZmYoZS50b3VjaEV2ZW50cy5zdGFydCxlLnpvb20uZW5hYmxlR2VzdHVyZXMsaSksZS4kd3JhcHBlckVsLm9mZihlLnRvdWNoRXZlbnRzLmVuZCxlLnpvb20uZGlzYWJsZUdlc3R1cmVzLGkpKToidG91Y2hzdGFydCI9PT1lLnRvdWNoRXZlbnRzLnN0YXJ0JiYoZS4kd3JhcHBlckVsLm9mZihlLnRvdWNoRXZlbnRzLnN0YXJ0LHIsdC5vbkdlc3R1cmVTdGFydCxpKSxlLiR3cmFwcGVyRWwub2ZmKGUudG91Y2hFdmVudHMubW92ZSxyLHQub25HZXN0dXJlQ2hhbmdlLHMpLGUuJHdyYXBwZXJFbC5vZmYoZS50b3VjaEV2ZW50cy5lbmQscix0Lm9uR2VzdHVyZUVuZCxpKSxlLnRvdWNoRXZlbnRzLmNhbmNlbCYmZS4kd3JhcHBlckVsLm9mZihlLnRvdWNoRXZlbnRzLmNhbmNlbCxyLHQub25HZXN0dXJlRW5kLGkpKSxlLiR3cmFwcGVyRWwub2ZmKGUudG91Y2hFdmVudHMubW92ZSwiLiIrZS5wYXJhbXMuem9vbS5jb250YWluZXJDbGFzcyx0Lm9uVG91Y2hNb3ZlLHMpfX19LHRlPXtsb2FkSW5TbGlkZTpmdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgYT10aGlzLGk9YS5wYXJhbXMubGF6eTtpZih2b2lkIDAhPT1lJiYwIT09YS5zbGlkZXMubGVuZ3RoKXt2YXIgcz1hLnZpcnR1YWwmJmEucGFyYW1zLnZpcnR1YWwuZW5hYmxlZD9hLiR3cmFwcGVyRWwuY2hpbGRyZW4oIi4iK2EucGFyYW1zLnNsaWRlQ2xhc3MrJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytlKyciXScpOmEuc2xpZGVzLmVxKGUpLHI9cy5maW5kKCIuIitpLmVsZW1lbnRDbGFzcysiOm5vdCguIitpLmxvYWRlZENsYXNzKyIpOm5vdCguIitpLmxvYWRpbmdDbGFzcysiKSIpOyFzLmhhc0NsYXNzKGkuZWxlbWVudENsYXNzKXx8cy5oYXNDbGFzcyhpLmxvYWRlZENsYXNzKXx8cy5oYXNDbGFzcyhpLmxvYWRpbmdDbGFzcyl8fHIucHVzaChzWzBdKSwwIT09ci5sZW5ndGgmJnIuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bShlKTtyLmFkZENsYXNzKGkubG9hZGluZ0NsYXNzKTt2YXIgbj1yLmF0dHIoImRhdGEtYmFja2dyb3VuZCIpLGw9ci5hdHRyKCJkYXRhLXNyYyIpLG89ci5hdHRyKCJkYXRhLXNyY3NldCIpLGQ9ci5hdHRyKCJkYXRhLXNpemVzIikscD1yLnBhcmVudCgicGljdHVyZSIpO2EubG9hZEltYWdlKHJbMF0sbHx8bixvLGQsITEsKGZ1bmN0aW9uKCl7aWYobnVsbCE9YSYmYSYmKCFhfHxhLnBhcmFtcykmJiFhLmRlc3Ryb3llZCl7aWYobj8oci5jc3MoImJhY2tncm91bmQtaW1hZ2UiLCd1cmwoIicrbisnIiknKSxyLnJlbW92ZUF0dHIoImRhdGEtYmFja2dyb3VuZCIpKToobyYmKHIuYXR0cigic3Jjc2V0IixvKSxyLnJlbW92ZUF0dHIoImRhdGEtc3Jjc2V0IikpLGQmJihyLmF0dHIoInNpemVzIixkKSxyLnJlbW92ZUF0dHIoImRhdGEtc2l6ZXMiKSkscC5sZW5ndGgmJnAuY2hpbGRyZW4oInNvdXJjZSIpLmVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PW0oZSk7dC5hdHRyKCJkYXRhLXNyY3NldCIpJiYodC5hdHRyKCJzcmNzZXQiLHQuYXR0cigiZGF0YS1zcmNzZXQiKSksdC5yZW1vdmVBdHRyKCJkYXRhLXNyY3NldCIpKX0pKSxsJiYoci5hdHRyKCJzcmMiLGwpLHIucmVtb3ZlQXR0cigiZGF0YS1zcmMiKSkpLHIuYWRkQ2xhc3MoaS5sb2FkZWRDbGFzcykucmVtb3ZlQ2xhc3MoaS5sb2FkaW5nQ2xhc3MpLHMuZmluZCgiLiIraS5wcmVsb2FkZXJDbGFzcykucmVtb3ZlKCksYS5wYXJhbXMubG9vcCYmdCl7dmFyIGU9cy5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpO2lmKHMuaGFzQ2xhc3MoYS5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpe3ZhciBjPWEuJHdyYXBwZXJFbC5jaGlsZHJlbignW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK2UrJyJdOm5vdCguJythLnBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKyIpIik7YS5sYXp5LmxvYWRJblNsaWRlKGMuaW5kZXgoKSwhMSl9ZWxzZXt2YXIgdT1hLiR3cmFwcGVyRWwuY2hpbGRyZW4oIi4iK2EucGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MrJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytlKyciXScpO2EubGF6eS5sb2FkSW5TbGlkZSh1LmluZGV4KCksITEpfX1hLmVtaXQoImxhenlJbWFnZVJlYWR5IixzWzBdLHJbMF0pLGEucGFyYW1zLmF1dG9IZWlnaHQmJmEudXBkYXRlQXV0b0hlaWdodCgpfX0pKSxhLmVtaXQoImxhenlJbWFnZUxvYWQiLHNbMF0sclswXSl9KSl9fSxsb2FkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJHdyYXBwZXJFbCxhPWUucGFyYW1zLGk9ZS5zbGlkZXMscz1lLmFjdGl2ZUluZGV4LHI9ZS52aXJ0dWFsJiZhLnZpcnR1YWwuZW5hYmxlZCxuPWEubGF6eSxsPWEuc2xpZGVzUGVyVmlldztmdW5jdGlvbiBvKGUpe2lmKHIpe2lmKHQuY2hpbGRyZW4oIi4iK2Euc2xpZGVDbGFzcysnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK2UrJyJdJykubGVuZ3RoKXJldHVybiEwfWVsc2UgaWYoaVtlXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBkKGUpe3JldHVybiByP20oZSkuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTptKGUpLmluZGV4KCl9aWYoImF1dG8iPT09bCYmKGw9MCksZS5sYXp5LmluaXRpYWxJbWFnZUxvYWRlZHx8KGUubGF6eS5pbml0aWFsSW1hZ2VMb2FkZWQ9ITApLGUucGFyYW1zLndhdGNoU2xpZGVzVmlzaWJpbGl0eSl0LmNoaWxkcmVuKCIuIithLnNsaWRlVmlzaWJsZUNsYXNzKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgYT1yP20odCkuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKTptKHQpLmluZGV4KCk7ZS5sYXp5LmxvYWRJblNsaWRlKGEpfSkpO2Vsc2UgaWYobD4xKWZvcih2YXIgcD1zO3A8cytsO3ArPTEpbyhwKSYmZS5sYXp5LmxvYWRJblNsaWRlKHApO2Vsc2UgZS5sYXp5LmxvYWRJblNsaWRlKHMpO2lmKG4ubG9hZFByZXZOZXh0KWlmKGw+MXx8bi5sb2FkUHJldk5leHRBbW91bnQmJm4ubG9hZFByZXZOZXh0QW1vdW50PjEpe2Zvcih2YXIgYz1uLmxvYWRQcmV2TmV4dEFtb3VudCx1PWwsaD1NYXRoLm1pbihzK3UrTWF0aC5tYXgoYyx1KSxpLmxlbmd0aCksdj1NYXRoLm1heChzLU1hdGgubWF4KHUsYyksMCksZj1zK2w7ZjxoO2YrPTEpbyhmKSYmZS5sYXp5LmxvYWRJblNsaWRlKGYpO2Zvcih2YXIgZz12O2c8cztnKz0xKW8oZykmJmUubGF6eS5sb2FkSW5TbGlkZShnKX1lbHNle3ZhciBiPXQuY2hpbGRyZW4oIi4iK2Euc2xpZGVOZXh0Q2xhc3MpO2IubGVuZ3RoPjAmJmUubGF6eS5sb2FkSW5TbGlkZShkKGIpKTt2YXIgdz10LmNoaWxkcmVuKCIuIithLnNsaWRlUHJldkNsYXNzKTt3Lmxlbmd0aD4wJiZlLmxhenkubG9hZEluU2xpZGUoZCh3KSl9fSxjaGVja0luVmlld09uTG9hZDpmdW5jdGlvbigpe3ZhciBlPWwoKSx0PXRoaXM7aWYodCYmIXQuZGVzdHJveWVkKXt2YXIgYT10LnBhcmFtcy5sYXp5LnNjcm9sbGluZ0VsZW1lbnQ/bSh0LnBhcmFtcy5sYXp5LnNjcm9sbGluZ0VsZW1lbnQpOm0oZSksaT1hWzBdPT09ZSxzPWk/ZS5pbm5lcldpZHRoOmFbMF0ub2Zmc2V0V2lkdGgscj1pP2UuaW5uZXJIZWlnaHQ6YVswXS5vZmZzZXRIZWlnaHQsbj10LiRlbC5vZmZzZXQoKSxvPSExO3QucnRsVHJhbnNsYXRlJiYobi5sZWZ0LT10LiRlbFswXS5zY3JvbGxMZWZ0KTtmb3IodmFyIGQ9W1tuLmxlZnQsbi50b3BdLFtuLmxlZnQrdC53aWR0aCxuLnRvcF0sW24ubGVmdCxuLnRvcCt0LmhlaWdodF0sW24ubGVmdCt0LndpZHRoLG4udG9wK3QuaGVpZ2h0XV0scD0wO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIGM9ZFtwXTtpZihjWzBdPj0wJiZjWzBdPD1zJiZjWzFdPj0wJiZjWzFdPD1yKXtpZigwPT09Y1swXSYmMD09PWNbMV0pY29udGludWU7bz0hMH19bz8odC5sYXp5LmxvYWQoKSxhLm9mZigic2Nyb2xsIix0LmxhenkuY2hlY2tJblZpZXdPbkxvYWQpKTp0Lmxhenkuc2Nyb2xsSGFuZGxlckF0dGFjaGVkfHwodC5sYXp5LnNjcm9sbEhhbmRsZXJBdHRhY2hlZD0hMCxhLm9uKCJzY3JvbGwiLHQubGF6eS5jaGVja0luVmlld09uTG9hZCkpfX19LGFlPXtMaW5lYXJTcGxpbmU6ZnVuY3Rpb24oZSx0KXt2YXIgYSxpLHMscixuLGw9ZnVuY3Rpb24oZSx0KXtmb3IoaT0tMSxhPWUubGVuZ3RoO2EtaT4xOyllW3M9YStpPj4xXTw9dD9pPXM6YT1zO3JldHVybiBhfTtyZXR1cm4gdGhpcy54PWUsdGhpcy55PXQsdGhpcy5sYXN0SW5kZXg9ZS5sZW5ndGgtMSx0aGlzLmludGVycG9sYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlPyhuPWwodGhpcy54LGUpLHI9bi0xLChlLXRoaXMueFtyXSkqKHRoaXMueVtuXS10aGlzLnlbcl0pLyh0aGlzLnhbbl0tdGhpcy54W3JdKSt0aGlzLnlbcl0pOjB9LHRoaXN9LGdldEludGVycG9sYXRlRnVuY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0LmNvbnRyb2xsZXIuc3BsaW5lfHwodC5jb250cm9sbGVyLnNwbGluZT10LnBhcmFtcy5sb29wP25ldyBhZS5MaW5lYXJTcGxpbmUodC5zbGlkZXNHcmlkLGUuc2xpZGVzR3JpZCk6bmV3IGFlLkxpbmVhclNwbGluZSh0LnNuYXBHcmlkLGUuc25hcEdyaWQpKX0sc2V0VHJhbnNsYXRlOmZ1bmN0aW9uKGUsdCl7dmFyIGEsaSxzPXRoaXMscj1zLmNvbnRyb2xsZXIuY29udHJvbCxuPXMuY29uc3RydWN0b3I7ZnVuY3Rpb24gbChlKXt2YXIgdD1zLnJ0bFRyYW5zbGF0ZT8tcy50cmFuc2xhdGU6cy50cmFuc2xhdGU7InNsaWRlIj09PXMucGFyYW1zLmNvbnRyb2xsZXIuYnkmJihzLmNvbnRyb2xsZXIuZ2V0SW50ZXJwb2xhdGVGdW5jdGlvbihlKSxpPS1zLmNvbnRyb2xsZXIuc3BsaW5lLmludGVycG9sYXRlKC10KSksaSYmImNvbnRhaW5lciIhPT1zLnBhcmFtcy5jb250cm9sbGVyLmJ5fHwoYT0oZS5tYXhUcmFuc2xhdGUoKS1lLm1pblRyYW5zbGF0ZSgpKS8ocy5tYXhUcmFuc2xhdGUoKS1zLm1pblRyYW5zbGF0ZSgpKSxpPSh0LXMubWluVHJhbnNsYXRlKCkpKmErZS5taW5UcmFuc2xhdGUoKSkscy5wYXJhbXMuY29udHJvbGxlci5pbnZlcnNlJiYoaT1lLm1heFRyYW5zbGF0ZSgpLWkpLGUudXBkYXRlUHJvZ3Jlc3MoaSksZS5zZXRUcmFuc2xhdGUoaSxzKSxlLnVwZGF0ZUFjdGl2ZUluZGV4KCksZS51cGRhdGVTbGlkZXNDbGFzc2VzKCl9aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rPTEpcltvXSE9PXQmJnJbb11pbnN0YW5jZW9mIG4mJmwocltvXSk7ZWxzZSByIGluc3RhbmNlb2YgbiYmdCE9PXImJmwocil9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgYSxpPXRoaXMscz1pLmNvbnN0cnVjdG9yLHI9aS5jb250cm9sbGVyLmNvbnRyb2w7ZnVuY3Rpb24gbih0KXt0LnNldFRyYW5zaXRpb24oZSxpKSwwIT09ZSYmKHQudHJhbnNpdGlvblN0YXJ0KCksdC5wYXJhbXMuYXV0b0hlaWdodCYmRSgoZnVuY3Rpb24oKXt0LnVwZGF0ZUF1dG9IZWlnaHQoKX0pKSx0LiR3cmFwcGVyRWwudHJhbnNpdGlvbkVuZCgoZnVuY3Rpb24oKXtyJiYodC5wYXJhbXMubG9vcCYmInNsaWRlIj09PWkucGFyYW1zLmNvbnRyb2xsZXIuYnkmJnQubG9vcEZpeCgpLHQudHJhbnNpdGlvbkVuZCgpKX0pKSl9aWYoQXJyYXkuaXNBcnJheShyKSlmb3IoYT0wO2E8ci5sZW5ndGg7YSs9MSlyW2FdIT09dCYmclthXWluc3RhbmNlb2YgcyYmbihyW2FdKTtlbHNlIHIgaW5zdGFuY2VvZiBzJiZ0IT09ciYmbihyKX19LGllPXtnZXRSYW5kb21OdW1iZXI6ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9MTYpO3JldHVybiJ4Ii5yZXBlYXQoZSkucmVwbGFjZSgveC9nLChmdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKDE2Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KX0pKX0sbWFrZUVsRm9jdXNhYmxlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmF0dHIoInRhYkluZGV4IiwiMCIpLGV9LG1ha2VFbE5vdEZvY3VzYWJsZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5hdHRyKCJ0YWJJbmRleCIsIi0xIiksZX0sYWRkRWxSb2xlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXR0cigicm9sZSIsdCksZX0sYWRkRWxSb2xlRGVzY3JpcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hdHRyKCJhcmlhLXJvbGUtZGVzY3JpcHRpb24iLHQpLGV9LGFkZEVsQ29udHJvbHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hdHRyKCJhcmlhLWNvbnRyb2xzIix0KSxlfSxhZGRFbExhYmVsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXR0cigiYXJpYS1sYWJlbCIsdCksZX0sYWRkRWxJZDpmdW5jdGlvbihlLHQpe3JldHVybiBlLmF0dHIoImlkIix0KSxlfSxhZGRFbExpdmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hdHRyKCJhcmlhLWxpdmUiLHQpLGV9LGRpc2FibGVFbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5hdHRyKCJhcmlhLWRpc2FibGVkIiwhMCksZX0sZW5hYmxlRWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXR0cigiYXJpYS1kaXNhYmxlZCIsITEpLGV9LG9uRW50ZXJPclNwYWNlS2V5OmZ1bmN0aW9uKGUpe2lmKDEzPT09ZS5rZXlDb2RlfHwzMj09PWUua2V5Q29kZSl7dmFyIHQ9dGhpcyxhPXQucGFyYW1zLmExMXksaT1tKGUudGFyZ2V0KTt0Lm5hdmlnYXRpb24mJnQubmF2aWdhdGlvbi4kbmV4dEVsJiZpLmlzKHQubmF2aWdhdGlvbi4kbmV4dEVsKSYmKHQuaXNFbmQmJiF0LnBhcmFtcy5sb29wfHx0LnNsaWRlTmV4dCgpLHQuaXNFbmQ/dC5hMTF5Lm5vdGlmeShhLmxhc3RTbGlkZU1lc3NhZ2UpOnQuYTExeS5ub3RpZnkoYS5uZXh0U2xpZGVNZXNzYWdlKSksdC5uYXZpZ2F0aW9uJiZ0Lm5hdmlnYXRpb24uJHByZXZFbCYmaS5pcyh0Lm5hdmlnYXRpb24uJHByZXZFbCkmJih0LmlzQmVnaW5uaW5nJiYhdC5wYXJhbXMubG9vcHx8dC5zbGlkZVByZXYoKSx0LmlzQmVnaW5uaW5nP3QuYTExeS5ub3RpZnkoYS5maXJzdFNsaWRlTWVzc2FnZSk6dC5hMTF5Lm5vdGlmeShhLnByZXZTbGlkZU1lc3NhZ2UpKSx0LnBhZ2luYXRpb24mJmkuaXMoIi4iK3QucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MucmVwbGFjZSgvIC9nLCIuIikpJiZpWzBdLmNsaWNrKCl9fSxub3RpZnk6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5hMTF5LmxpdmVSZWdpb247MCE9PXQubGVuZ3RoJiYodC5odG1sKCIiKSx0Lmh0bWwoZSkpfSx1cGRhdGVOYXZpZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighZS5wYXJhbXMubG9vcCYmZS5uYXZpZ2F0aW9uKXt2YXIgdD1lLm5hdmlnYXRpb24sYT10LiRuZXh0RWwsaT10LiRwcmV2RWw7aSYmaS5sZW5ndGg+MCYmKGUuaXNCZWdpbm5pbmc/KGUuYTExeS5kaXNhYmxlRWwoaSksZS5hMTF5Lm1ha2VFbE5vdEZvY3VzYWJsZShpKSk6KGUuYTExeS5lbmFibGVFbChpKSxlLmExMXkubWFrZUVsRm9jdXNhYmxlKGkpKSksYSYmYS5sZW5ndGg+MCYmKGUuaXNFbmQ/KGUuYTExeS5kaXNhYmxlRWwoYSksZS5hMTF5Lm1ha2VFbE5vdEZvY3VzYWJsZShhKSk6KGUuYTExeS5lbmFibGVFbChhKSxlLmExMXkubWFrZUVsRm9jdXNhYmxlKGEpKSl9fSx1cGRhdGVQYWdpbmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUucGFyYW1zLmExMXk7ZS5wYWdpbmF0aW9uJiZlLnBhcmFtcy5wYWdpbmF0aW9uLmNsaWNrYWJsZSYmZS5wYWdpbmF0aW9uLmJ1bGxldHMmJmUucGFnaW5hdGlvbi5idWxsZXRzLmxlbmd0aCYmZS5wYWdpbmF0aW9uLmJ1bGxldHMuZWFjaCgoZnVuY3Rpb24oYSl7dmFyIGk9bShhKTtlLmExMXkubWFrZUVsRm9jdXNhYmxlKGkpLGUucGFyYW1zLnBhZ2luYXRpb24ucmVuZGVyQnVsbGV0fHwoZS5hMTF5LmFkZEVsUm9sZShpLCJidXR0b24iKSxlLmExMXkuYWRkRWxMYWJlbChpLHQucGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2UucmVwbGFjZSgvXHtce2luZGV4XH1cfS8saS5pbmRleCgpKzEpKSl9KSl9LGluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5wYXJhbXMuYTExeTtlLiRlbC5hcHBlbmQoZS5hMTF5LmxpdmVSZWdpb24pO3ZhciBhPWUuJGVsO3QuY29udGFpbmVyUm9sZURlc2NyaXB0aW9uTWVzc2FnZSYmZS5hMTF5LmFkZEVsUm9sZURlc2NyaXB0aW9uKGEsdC5jb250YWluZXJSb2xlRGVzY3JpcHRpb25NZXNzYWdlKSx0LmNvbnRhaW5lck1lc3NhZ2UmJmUuYTExeS5hZGRFbExhYmVsKGEsdC5jb250YWluZXJNZXNzYWdlKTt2YXIgaSxzLHIsbj1lLiR3cmFwcGVyRWwsbD1uLmF0dHIoImlkIil8fCJzd2lwZXItd3JhcHBlci0iK2UuYTExeS5nZXRSYW5kb21OdW1iZXIoMTYpO2UuYTExeS5hZGRFbElkKG4sbCksaT1lLnBhcmFtcy5hdXRvcGxheSYmZS5wYXJhbXMuYXV0b3BsYXkuZW5hYmxlZD8ib2ZmIjoicG9saXRlIixlLmExMXkuYWRkRWxMaXZlKG4saSksdC5pdGVtUm9sZURlc2NyaXB0aW9uTWVzc2FnZSYmZS5hMTF5LmFkZEVsUm9sZURlc2NyaXB0aW9uKG0oZS5zbGlkZXMpLHQuaXRlbVJvbGVEZXNjcmlwdGlvbk1lc3NhZ2UpLGUuYTExeS5hZGRFbFJvbGUobShlLnNsaWRlcyksImdyb3VwIiksZS5zbGlkZXMuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9bSh0KTtlLmExMXkuYWRkRWxMYWJlbChhLGEuaW5kZXgoKSsxKyIgLyAiK2Uuc2xpZGVzLmxlbmd0aCl9KSksZS5uYXZpZ2F0aW9uJiZlLm5hdmlnYXRpb24uJG5leHRFbCYmKHM9ZS5uYXZpZ2F0aW9uLiRuZXh0RWwpLGUubmF2aWdhdGlvbiYmZS5uYXZpZ2F0aW9uLiRwcmV2RWwmJihyPWUubmF2aWdhdGlvbi4kcHJldkVsKSxzJiZzLmxlbmd0aCYmKGUuYTExeS5tYWtlRWxGb2N1c2FibGUocyksIkJVVFRPTiIhPT1zWzBdLnRhZ05hbWUmJihlLmExMXkuYWRkRWxSb2xlKHMsImJ1dHRvbiIpLHMub24oImtleWRvd24iLGUuYTExeS5vbkVudGVyT3JTcGFjZUtleSkpLGUuYTExeS5hZGRFbExhYmVsKHMsdC5uZXh0U2xpZGVNZXNzYWdlKSxlLmExMXkuYWRkRWxDb250cm9scyhzLGwpKSxyJiZyLmxlbmd0aCYmKGUuYTExeS5tYWtlRWxGb2N1c2FibGUociksIkJVVFRPTiIhPT1yWzBdLnRhZ05hbWUmJihlLmExMXkuYWRkRWxSb2xlKHIsImJ1dHRvbiIpLHIub24oImtleWRvd24iLGUuYTExeS5vbkVudGVyT3JTcGFjZUtleSkpLGUuYTExeS5hZGRFbExhYmVsKHIsdC5wcmV2U2xpZGVNZXNzYWdlKSxlLmExMXkuYWRkRWxDb250cm9scyhyLGwpKSxlLnBhZ2luYXRpb24mJmUucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlJiZlLnBhZ2luYXRpb24uYnVsbGV0cyYmZS5wYWdpbmF0aW9uLmJ1bGxldHMubGVuZ3RoJiZlLnBhZ2luYXRpb24uJGVsLm9uKCJrZXlkb3duIiwiLiIrZS5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcy5yZXBsYWNlKC8gL2csIi4iKSxlLmExMXkub25FbnRlck9yU3BhY2VLZXkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGUsdCxhPXRoaXM7YS5hMTF5LmxpdmVSZWdpb24mJmEuYTExeS5saXZlUmVnaW9uLmxlbmd0aD4wJiZhLmExMXkubGl2ZVJlZ2lvbi5yZW1vdmUoKSxhLm5hdmlnYXRpb24mJmEubmF2aWdhdGlvbi4kbmV4dEVsJiYoZT1hLm5hdmlnYXRpb24uJG5leHRFbCksYS5uYXZpZ2F0aW9uJiZhLm5hdmlnYXRpb24uJHByZXZFbCYmKHQ9YS5uYXZpZ2F0aW9uLiRwcmV2RWwpLGUmJmUub2ZmKCJrZXlkb3duIixhLmExMXkub25FbnRlck9yU3BhY2VLZXkpLHQmJnQub2ZmKCJrZXlkb3duIixhLmExMXkub25FbnRlck9yU3BhY2VLZXkpLGEucGFnaW5hdGlvbiYmYS5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUmJmEucGFnaW5hdGlvbi5idWxsZXRzJiZhLnBhZ2luYXRpb24uYnVsbGV0cy5sZW5ndGgmJmEucGFnaW5hdGlvbi4kZWwub2ZmKCJrZXlkb3duIiwiLiIrYS5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcy5yZXBsYWNlKC8gL2csIi4iKSxhLmExMXkub25FbnRlck9yU3BhY2VLZXkpfX0sc2U9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9bCgpO2lmKGUucGFyYW1zLmhpc3Rvcnkpe2lmKCF0Lmhpc3Rvcnl8fCF0Lmhpc3RvcnkucHVzaFN0YXRlKXJldHVybiBlLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQ9ITEsdm9pZChlLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkPSEwKTt2YXIgYT1lLmhpc3Rvcnk7YS5pbml0aWFsaXplZD0hMCxhLnBhdGhzPXNlLmdldFBhdGhWYWx1ZXMoZS5wYXJhbXMudXJsKSwoYS5wYXRocy5rZXl8fGEucGF0aHMudmFsdWUpJiYoYS5zY3JvbGxUb1NsaWRlKDAsYS5wYXRocy52YWx1ZSxlLnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQpLGUucGFyYW1zLmhpc3RvcnkucmVwbGFjZVN0YXRlfHx0LmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixlLmhpc3Rvcnkuc2V0SGlzdG9yeVBvcFN0YXRlKSl9fSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9bCgpO3RoaXMucGFyYW1zLmhpc3RvcnkucmVwbGFjZVN0YXRlfHxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0aGlzLmhpc3Rvcnkuc2V0SGlzdG9yeVBvcFN0YXRlKX0sc2V0SGlzdG9yeVBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmhpc3RvcnkucGF0aHM9c2UuZ2V0UGF0aFZhbHVlcyhlLnBhcmFtcy51cmwpLGUuaGlzdG9yeS5zY3JvbGxUb1NsaWRlKGUucGFyYW1zLnNwZWVkLGUuaGlzdG9yeS5wYXRocy52YWx1ZSwhMSl9LGdldFBhdGhWYWx1ZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9bCgpLGE9KGU/bmV3IFVSTChlKTp0LmxvY2F0aW9uKS5wYXRobmFtZS5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIiIhPT1lfSkpLGk9YS5sZW5ndGg7cmV0dXJue2tleTphW2ktMl0sdmFsdWU6YVtpLTFdfX0sc2V0SGlzdG9yeTpmdW5jdGlvbihlLHQpe3ZhciBhPXRoaXMsaT1sKCk7aWYoYS5oaXN0b3J5LmluaXRpYWxpemVkJiZhLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpe3ZhciBzO3M9YS5wYXJhbXMudXJsP25ldyBVUkwoYS5wYXJhbXMudXJsKTppLmxvY2F0aW9uO3ZhciByPWEuc2xpZGVzLmVxKHQpLG49c2Uuc2x1Z2lmeShyLmF0dHIoImRhdGEtaGlzdG9yeSIpKTtzLnBhdGhuYW1lLmluY2x1ZGVzKGUpfHwobj1lKyIvIituKTt2YXIgbz1pLmhpc3Rvcnkuc3RhdGU7byYmby52YWx1ZT09PW58fChhLnBhcmFtcy5oaXN0b3J5LnJlcGxhY2VTdGF0ZT9pLmhpc3RvcnkucHJvcGVydHlJc0VudW1lcmFibGUoe3ZhbHVlOm59LG51bGwsbik6aS5oaXN0b3J5LnByb3BlcnR5SXNFbnVtZXJhYmxlKHt2YWx1ZTpufSxudWxsLG4pKX19LHNsdWdpZnk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiLSIpLnJlcGxhY2UoL1teXHctXSsvZywiIikucmVwbGFjZSgvLS0rL2csIi0iKS5yZXBsYWNlKC9eLSsvLCIiKS5yZXBsYWNlKC8tKyQvLCIiKX0sc2Nyb2xsVG9TbGlkZTpmdW5jdGlvbihlLHQsYSl7dmFyIGk9dGhpcztpZih0KWZvcih2YXIgcz0wLHI9aS5zbGlkZXMubGVuZ3RoO3M8cjtzKz0xKXt2YXIgbj1pLnNsaWRlcy5lcShzKTtpZihzZS5zbHVnaWZ5KG4uYXR0cigiZGF0YS1oaXN0b3J5IikpPT09dCYmIW4uaGFzQ2xhc3MoaS5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpe3ZhciBsPW4uaW5kZXgoKTtpLnNsaWRlVG8obCxlLGEpfX1lbHNlIGkuc2xpZGVUbygwLGUsYSl9fSxyZT17b25IYXNoQ2FuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9cigpO2UuZW1pdCgiaGFzaENoYW5nZSIpO3ZhciBhPXQubG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjIiwiIik7aWYoYSE9PWUuc2xpZGVzLmVxKGUuYWN0aXZlSW5kZXgpLmF0dHIoImRhdGEtaGFzaCIpKXt2YXIgaT1lLiR3cmFwcGVyRWwuY2hpbGRyZW4oIi4iK2UucGFyYW1zLnNsaWRlQ2xhc3MrJ1tkYXRhLWhhc2g9IicrYSsnIl0nKS5pbmRleCgpO2lmKHZvaWQgMD09PWkpcmV0dXJuO2Uuc2xpZGVUbyhpKX19LHNldEhhc2g6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9bCgpLGE9cigpO2lmKGUuaGFzaE5hdmlnYXRpb24uaW5pdGlhbGl6ZWQmJmUucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQpaWYoZS5wYXJhbXMuaGFzaE5hdmlnYXRpb24ucmVwbGFjZVN0YXRlJiZ0Lmhpc3RvcnkmJnQuaGlzdG9yeS5yZXBsYWNlU3RhdGUpdC5oaXN0b3J5LnByb3BlcnR5SXNFbnVtZXJhYmxlKG51bGwsbnVsbCwiIyIrZS5zbGlkZXMuZXEoZS5hY3RpdmVJbmRleCkuYXR0cigiZGF0YS1oYXNoIil8fCIiKSxlLmVtaXQoImhhc2hTZXQiKTtlbHNle3ZhciBpPWUuc2xpZGVzLmVxKGUuYWN0aXZlSW5kZXgpLHM9aS5hdHRyKCJkYXRhLWhhc2giKXx8aS5hdHRyKCJkYXRhLWhpc3RvcnkiKTthLmxvY2F0aW9uLmhhc2g9c3x8IiIsZS5lbWl0KCJoYXNoU2V0Iil9fSxpbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXIoKSxhPWwoKTtpZighKCFlLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkfHxlLnBhcmFtcy5oaXN0b3J5JiZlLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpKXtlLmhhc2hOYXZpZ2F0aW9uLmluaXRpYWxpemVkPSEwO3ZhciBpPXQubG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjIiwiIik7aWYoaSlmb3IodmFyIHM9MCxuPWUuc2xpZGVzLmxlbmd0aDtzPG47cys9MSl7dmFyIG89ZS5zbGlkZXMuZXEocyk7aWYoKG8uYXR0cigiZGF0YS1oYXNoIil8fG8uYXR0cigiZGF0YS1oaXN0b3J5IikpPT09aSYmIW8uaGFzQ2xhc3MoZS5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpe3ZhciBkPW8uaW5kZXgoKTtlLnNsaWRlVG8oZCwwLGUucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwhMCl9fWUucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLndhdGNoU3RhdGUmJm0oYSkub24oImhhc2hjaGFuZ2UiLGUuaGFzaE5hdmlnYXRpb24ub25IYXNoQ2FuZ2UpfX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPWwoKTt0aGlzLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi53YXRjaFN0YXRlJiZtKGUpLm9mZigiaGFzaGNoYW5nZSIsdGhpcy5oYXNoTmF2aWdhdGlvbi5vbkhhc2hDYW5nZSl9fSxuZT17cnVuOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuc2xpZGVzLmVxKGUuYWN0aXZlSW5kZXgpLGE9ZS5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7dC5hdHRyKCJkYXRhLXN3aXBlci1hdXRvcGxheSIpJiYoYT10LmF0dHIoImRhdGEtc3dpcGVyLWF1dG9wbGF5Iil8fGUucGFyYW1zLmF1dG9wbGF5LmRlbGF5KSxjbGVhclRpbWVvdXQoZS5hdXRvcGxheS50aW1lb3V0KSxlLmF1dG9wbGF5LnRpbWVvdXQ9RSgoZnVuY3Rpb24oKXt2YXIgdDtlLnBhcmFtcy5hdXRvcGxheS5yZXZlcnNlRGlyZWN0aW9uP2UucGFyYW1zLmxvb3A/KGUubG9vcEZpeCgpLHQ9ZS5zbGlkZVByZXYoZS5wYXJhbXMuc3BlZWQsITAsITApLGUuZW1pdCgiYXV0b3BsYXkiKSk6ZS5pc0JlZ2lubmluZz9lLnBhcmFtcy5hdXRvcGxheS5zdG9wT25MYXN0U2xpZGU/ZS5hdXRvcGxheS5zdG9wKCk6KHQ9ZS5zbGlkZVRvKGUuc2xpZGVzLmxlbmd0aC0xLGUucGFyYW1zLnNwZWVkLCEwLCEwKSxlLmVtaXQoImF1dG9wbGF5IikpOih0PWUuc2xpZGVQcmV2KGUucGFyYW1zLnNwZWVkLCEwLCEwKSxlLmVtaXQoImF1dG9wbGF5IikpOmUucGFyYW1zLmxvb3A/KGUubG9vcEZpeCgpLHQ9ZS5zbGlkZU5leHQoZS5wYXJhbXMuc3BlZWQsITAsITApLGUuZW1pdCgiYXV0b3BsYXkiKSk6ZS5pc0VuZD9lLnBhcmFtcy5hdXRvcGxheS5zdG9wT25MYXN0U2xpZGU/ZS5hdXRvcGxheS5zdG9wKCk6KHQ9ZS5zbGlkZVRvKDAsZS5wYXJhbXMuc3BlZWQsITAsITApLGUuZW1pdCgiYXV0b3BsYXkiKSk6KHQ9ZS5zbGlkZU5leHQoZS5wYXJhbXMuc3BlZWQsITAsITApLGUuZW1pdCgiYXV0b3BsYXkiKSksKGUucGFyYW1zLmNzc01vZGUmJmUuYXV0b3BsYXkucnVubmluZ3x8ITE9PT10KSYmZS5hdXRvcGxheS5ydW4oKX0pLGEpfSxzdGFydDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUuYXV0b3BsYXkudGltZW91dCYmKCFlLmF1dG9wbGF5LnJ1bm5pbmcmJihlLmF1dG9wbGF5LnJ1bm5pbmc9ITAsZS5lbWl0KCJhdXRvcGxheVN0YXJ0IiksZS5hdXRvcGxheS5ydW4oKSwhMCkpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4hIWUuYXV0b3BsYXkucnVubmluZyYmKHZvaWQgMCE9PWUuYXV0b3BsYXkudGltZW91dCYmKGUuYXV0b3BsYXkudGltZW91dCYmKGNsZWFyVGltZW91dChlLmF1dG9wbGF5LnRpbWVvdXQpLGUuYXV0b3BsYXkudGltZW91dD12b2lkIDApLGUuYXV0b3BsYXkucnVubmluZz0hMSxlLmVtaXQoImF1dG9wbGF5U3RvcCIpLCEwKSl9LHBhdXNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dC5hdXRvcGxheS5ydW5uaW5nJiYodC5hdXRvcGxheS5wYXVzZWR8fCh0LmF1dG9wbGF5LnRpbWVvdXQmJmNsZWFyVGltZW91dCh0LmF1dG9wbGF5LnRpbWVvdXQpLHQuYXV0b3BsYXkucGF1c2VkPSEwLDAhPT1lJiZ0LnBhcmFtcy5hdXRvcGxheS53YWl0Rm9yVHJhbnNpdGlvbj8odC4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHQuYXV0b3BsYXkub25UcmFuc2l0aW9uRW5kKSx0LiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsdC5hdXRvcGxheS5vblRyYW5zaXRpb25FbmQpKToodC5hdXRvcGxheS5wYXVzZWQ9ITEsdC5hdXRvcGxheS5ydW4oKSkpKX0sb25WaXNpYmlsaXR5Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXIoKTsiaGlkZGVuIj09PXQudmlzaWJpbGl0eVN0YXRlJiZlLmF1dG9wbGF5LnJ1bm5pbmcmJmUuYXV0b3BsYXkucGF1c2UoKSwidmlzaWJsZSI9PT10LnZpc2liaWxpdHlTdGF0ZSYmZS5hdXRvcGxheS5wYXVzZWQmJihlLmF1dG9wbGF5LnJ1bigpLGUuYXV0b3BsYXkucGF1c2VkPSExKX0sb25UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dCYmIXQuZGVzdHJveWVkJiZ0LiR3cmFwcGVyRWwmJmUudGFyZ2V0PT09dC4kd3JhcHBlckVsWzBdJiYodC4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHQuYXV0b3BsYXkub25UcmFuc2l0aW9uRW5kKSx0LiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0VHJhbnNpdGlvbkVuZCIsdC5hdXRvcGxheS5vblRyYW5zaXRpb25FbmQpLHQuYXV0b3BsYXkucGF1c2VkPSExLHQuYXV0b3BsYXkucnVubmluZz90LmF1dG9wbGF5LnJ1bigpOnQuYXV0b3BsYXkuc3RvcCgpKX19LGxlPXtzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PWUuc2xpZGVzLGE9MDthPHQubGVuZ3RoO2ErPTEpe3ZhciBpPWUuc2xpZGVzLmVxKGEpLHM9LWlbMF0uc3dpcGVyU2xpZGVPZmZzZXQ7ZS5wYXJhbXMudmlydHVhbFRyYW5zbGF0ZXx8KHMtPWUudHJhbnNsYXRlKTt2YXIgcj0wO2UuaXNIb3Jpem9udGFsKCl8fChyPXMscz0wKTt2YXIgbj1lLnBhcmFtcy5mYWRlRWZmZWN0LmNyb3NzRmFkZT9NYXRoLm1heCgxLU1hdGguYWJzKGlbMF0ucHJvZ3Jlc3MpLDApOjErTWF0aC5taW4oTWF0aC5tYXgoaVswXS5wcm9ncmVzcywtMSksMCk7aS5jc3Moe29wYWNpdHk6bn0pLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIitzKyJweCwgIityKyJweCwgMHB4KSIpfX0sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dC5zbGlkZXMsaT10LiR3cmFwcGVyRWw7aWYoYS50cmFuc2l0aW9uKGUpLHQucGFyYW1zLnZpcnR1YWxUcmFuc2xhdGUmJjAhPT1lKXt2YXIgcz0hMTthLnRyYW5zaXRpb25FbmQoKGZ1bmN0aW9uKCl7aWYoIXMmJnQmJiF0LmRlc3Ryb3llZCl7cz0hMCx0LmFuaW1hdGluZz0hMTtmb3IodmFyIGU9WyJ3ZWJraXRUcmFuc2l0aW9uRW5kIiwidHJhbnNpdGlvbmVuZCJdLGE9MDthPGUubGVuZ3RoO2ErPTEpaS50cmlnZ2VyKGVbYV0pfX0pKX19fSxvZT17c2V0VHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLGE9dC4kZWwsaT10LiR3cmFwcGVyRWwscz10LnNsaWRlcyxyPXQud2lkdGgsbj10LmhlaWdodCxsPXQucnRsVHJhbnNsYXRlLG89dC5zaXplLGQ9dC5icm93c2VyLHA9dC5wYXJhbXMuY3ViZUVmZmVjdCxjPXQuaXNIb3Jpem9udGFsKCksdT10LnZpcnR1YWwmJnQucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCxoPTA7cC5zaGFkb3cmJihjPygwPT09KGU9aS5maW5kKCIuc3dpcGVyLWN1YmUtc2hhZG93IikpLmxlbmd0aCYmKGU9bSgnPGRpdiBjbGFzcz0ic3dpcGVyLWN1YmUtc2hhZG93Ij48L2Rpdj4nKSxpLmFwcGVuZChlKSksZS5jc3Moe2hlaWdodDpyKyJweCJ9KSk6MD09PShlPWEuZmluZCgiLnN3aXBlci1jdWJlLXNoYWRvdyIpKS5sZW5ndGgmJihlPW0oJzxkaXYgY2xhc3M9InN3aXBlci1jdWJlLXNoYWRvdyI+PC9kaXY+JyksYS5hcHBlbmQoZSkpKTtmb3IodmFyIHY9MDt2PHMubGVuZ3RoO3YrPTEpe3ZhciBmPXMuZXEodiksZz12O3UmJihnPXBhcnNlSW50KGYuYXR0cigiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSwxMCkpO3ZhciBiPTkwKmcsdz1NYXRoLmZsb29yKGIvMzYwKTtsJiYoYj0tYix3PU1hdGguZmxvb3IoLWIvMzYwKSk7dmFyIHk9TWF0aC5tYXgoTWF0aC5taW4oZlswXS5wcm9ncmVzcywxKSwtMSksRT0wLHg9MCxUPTA7ZyU0PT0wPyhFPTQqLXcqbyxUPTApOihnLTEpJTQ9PTA/KEU9MCxUPTQqLXcqbyk6KGctMiklND09MD8oRT1vKzQqdypvLFQ9byk6KGctMyklND09MCYmKEU9LW8sVD0zKm8rNCpvKncpLGwmJihFPS1FKSxjfHwoeD1FLEU9MCk7dmFyIEM9InJvdGF0ZVgoIisoYz8wOi1iKSsiZGVnKSByb3RhdGVZKCIrKGM/YjowKSsiZGVnKSB0cmFuc2xhdGUzZCgiK0UrInB4LCAiK3grInB4LCAiK1QrInB4KSI7aWYoeTw9MSYmeT4tMSYmKGg9OTAqZys5MCp5LGwmJihoPTkwKi1nLTkwKnkpKSxmLnRyYW5zZm9ybShDKSxwLnNsaWRlU2hhZG93cyl7dmFyIFM9Yz9mLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKTpmLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCIpLE09Yz9mLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0Iik6Zi5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20iKTswPT09Uy5sZW5ndGgmJihTPW0oJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJysoYz8ibGVmdCI6InRvcCIpKyciPjwvZGl2PicpLGYuYXBwZW5kKFMpKSwwPT09TS5sZW5ndGgmJihNPW0oJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJysoYz8icmlnaHQiOiJib3R0b20iKSsnIj48L2Rpdj4nKSxmLmFwcGVuZChNKSksUy5sZW5ndGgmJihTWzBdLnN0eWxlLm9wYWNpdHk9TWF0aC5tYXgoLXksMCkpLE0ubGVuZ3RoJiYoTVswXS5zdHlsZS5vcGFjaXR5PU1hdGgubWF4KHksMCkpfX1pZihpLmNzcyh7Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiI6IjUwJSA1MCUgLSIrby8yKyJweCIsIi1tb3otdHJhbnNmb3JtLW9yaWdpbiI6IjUwJSA1MCUgLSIrby8yKyJweCIsIi1tcy10cmFuc2Zvcm0tb3JpZ2luIjoiNTAlIDUwJSAtIitvLzIrInB4IiwidHJhbnNmb3JtLW9yaWdpbiI6IjUwJSA1MCUgLSIrby8yKyJweCJ9KSxwLnNoYWRvdylpZihjKWUudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgwcHgsICIrKHIvMitwLnNoYWRvd09mZnNldCkrInB4LCAiKy1yLzIrInB4KSByb3RhdGVYKDkwZGVnKSByb3RhdGVaKDBkZWcpIHNjYWxlKCIrcC5zaGFkb3dTY2FsZSsiKSIpO2Vsc2V7dmFyIHo9TWF0aC5hYnMoaCktOTAqTWF0aC5mbG9vcihNYXRoLmFicyhoKS85MCksUD0xLjUtKE1hdGguc2luKDIqeipNYXRoLlBJLzM2MCkvMitNYXRoLmNvcygyKnoqTWF0aC5QSS8zNjApLzIpLGs9cC5zaGFkb3dTY2FsZSxMPXAuc2hhZG93U2NhbGUvUCwkPXAuc2hhZG93T2Zmc2V0O2UudHJhbnNmb3JtKCJzY2FsZTNkKCIraysiLCAxLCAiK0wrIikgdHJhbnNsYXRlM2QoMHB4LCAiKyhuLzIrJCkrInB4LCAiKy1uLzIvTCsicHgpIHJvdGF0ZVgoLTkwZGVnKSIpfXZhciBJPWQuaXNTYWZhcml8fGQuaXNXZWJWaWV3Py1vLzI6MDtpLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoMHB4LDAsIitJKyJweCkgcm90YXRlWCgiKyh0LmlzSG9yaXpvbnRhbCgpPzA6aCkrImRlZykgcm90YXRlWSgiKyh0LmlzSG9yaXpvbnRhbCgpPy1oOjApKyJkZWcpIil9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQuJGVsO3Quc2xpZGVzLnRyYW5zaXRpb24oZSkuZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikudHJhbnNpdGlvbihlKSx0LnBhcmFtcy5jdWJlRWZmZWN0LnNoYWRvdyYmIXQuaXNIb3Jpem9udGFsKCkmJmEuZmluZCgiLnN3aXBlci1jdWJlLXNoYWRvdyIpLnRyYW5zaXRpb24oZSl9fSxkZT17c2V0VHJhbnNsYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD1lLnNsaWRlcyxhPWUucnRsVHJhbnNsYXRlLGk9MDtpPHQubGVuZ3RoO2krPTEpe3ZhciBzPXQuZXEoaSkscj1zWzBdLnByb2dyZXNzO2UucGFyYW1zLmZsaXBFZmZlY3QubGltaXRSb3RhdGlvbiYmKHI9TWF0aC5tYXgoTWF0aC5taW4oc1swXS5wcm9ncmVzcywxKSwtMSkpO3ZhciBuPS0xODAqcixsPTAsbz0tc1swXS5zd2lwZXJTbGlkZU9mZnNldCxkPTA7aWYoZS5pc0hvcml6b250YWwoKT9hJiYobj0tbik6KGQ9byxvPTAsbD0tbixuPTApLHNbMF0uc3R5bGUuekluZGV4PS1NYXRoLmFicyhNYXRoLnJvdW5kKHIpKSt0Lmxlbmd0aCxlLnBhcmFtcy5mbGlwRWZmZWN0LnNsaWRlU2hhZG93cyl7dmFyIHA9ZS5pc0hvcml6b250YWwoKT9zLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKTpzLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCIpLGM9ZS5pc0hvcml6b250YWwoKT9zLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0Iik6cy5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20iKTswPT09cC5sZW5ndGgmJihwPW0oJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJysoZS5pc0hvcml6b250YWwoKT8ibGVmdCI6InRvcCIpKyciPjwvZGl2PicpLHMuYXBwZW5kKHApKSwwPT09Yy5sZW5ndGgmJihjPW0oJzxkaXYgY2xhc3M9InN3aXBlci1zbGlkZS1zaGFkb3ctJysoZS5pc0hvcml6b250YWwoKT8icmlnaHQiOiJib3R0b20iKSsnIj48L2Rpdj4nKSxzLmFwcGVuZChjKSkscC5sZW5ndGgmJihwWzBdLnN0eWxlLm9wYWNpdHk9TWF0aC5tYXgoLXIsMCkpLGMubGVuZ3RoJiYoY1swXS5zdHlsZS5vcGFjaXR5PU1hdGgubWF4KHIsMCkpfXMudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK28rInB4LCAiK2QrInB4LCAwcHgpIHJvdGF0ZVgoIitsKyJkZWcpIHJvdGF0ZVkoIituKyJkZWcpIil9fSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsYT10LnNsaWRlcyxpPXQuYWN0aXZlSW5kZXgscz10LiR3cmFwcGVyRWw7aWYoYS50cmFuc2l0aW9uKGUpLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCIpLnRyYW5zaXRpb24oZSksdC5wYXJhbXMudmlydHVhbFRyYW5zbGF0ZSYmMCE9PWUpe3ZhciByPSExO2EuZXEoaSkudHJhbnNpdGlvbkVuZCgoZnVuY3Rpb24oKXtpZighciYmdCYmIXQuZGVzdHJveWVkKXtyPSEwLHQuYW5pbWF0aW5nPSExO2Zvcih2YXIgZT1bIndlYmtpdFRyYW5zaXRpb25FbmQiLCJ0cmFuc2l0aW9uZW5kIl0sYT0wO2E8ZS5sZW5ndGg7YSs9MSlzLnRyaWdnZXIoZVthXSl9fSkpfX19LHBlPXtzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PWUud2lkdGgsYT1lLmhlaWdodCxpPWUuc2xpZGVzLHM9ZS5zbGlkZXNTaXplc0dyaWQscj1lLnBhcmFtcy5jb3ZlcmZsb3dFZmZlY3Qsbj1lLmlzSG9yaXpvbnRhbCgpLGw9ZS50cmFuc2xhdGUsbz1uP3QvMi1sOmEvMi1sLGQ9bj9yLnJvdGF0ZTotci5yb3RhdGUscD1yLmRlcHRoLGM9MCx1PWkubGVuZ3RoO2M8dTtjKz0xKXt2YXIgaD1pLmVxKGMpLHY9c1tjXSxmPShvLWhbMF0uc3dpcGVyU2xpZGVPZmZzZXQtdi8yKS92KnIubW9kaWZpZXIsZz1uP2QqZjowLGI9bj8wOmQqZix3PS1wKk1hdGguYWJzKGYpLHk9ci5zdHJldGNoOyJzdHJpbmciPT10eXBlb2YgeSYmLTEhPT15LmluZGV4T2YoIiUiKSYmKHk9cGFyc2VGbG9hdChyLnN0cmV0Y2gpLzEwMCp2KTt2YXIgRT1uPzA6eSpmLHg9bj95KmY6MCxUPTEtKDEtci5zY2FsZSkqTWF0aC5hYnMoZik7TWF0aC5hYnMoeCk8LjAwMSYmKHg9MCksTWF0aC5hYnMoRSk8LjAwMSYmKEU9MCksTWF0aC5hYnModyk8LjAwMSYmKHc9MCksTWF0aC5hYnMoZyk8LjAwMSYmKGc9MCksTWF0aC5hYnMoYik8LjAwMSYmKGI9MCksTWF0aC5hYnMoVCk8LjAwMSYmKFQ9MCk7dmFyIEM9InRyYW5zbGF0ZTNkKCIreCsicHgsIitFKyJweCwiK3crInB4KSAgcm90YXRlWCgiK2IrImRlZykgcm90YXRlWSgiK2crImRlZykgc2NhbGUoIitUKyIpIjtpZihoLnRyYW5zZm9ybShDKSxoWzBdLnN0eWxlLnpJbmRleD0xLU1hdGguYWJzKE1hdGgucm91bmQoZikpLHIuc2xpZGVTaGFkb3dzKXt2YXIgUz1uP2guZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCIpOmguZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIiksTT1uP2guZmluZCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQiKTpoLmZpbmQoIi5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSIpOzA9PT1TLmxlbmd0aCYmKFM9bSgnPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlLXNoYWRvdy0nKyhuPyJsZWZ0IjoidG9wIikrJyI+PC9kaXY+JyksaC5hcHBlbmQoUykpLDA9PT1NLmxlbmd0aCYmKE09bSgnPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlLXNoYWRvdy0nKyhuPyJyaWdodCI6ImJvdHRvbSIpKyciPjwvZGl2PicpLGguYXBwZW5kKE0pKSxTLmxlbmd0aCYmKFNbMF0uc3R5bGUub3BhY2l0eT1mPjA/ZjowKSxNLmxlbmd0aCYmKE1bMF0uc3R5bGUub3BhY2l0eT0tZj4wPy1mOjApfX19LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dGhpcy5zbGlkZXMudHJhbnNpdGlvbihlKS5maW5kKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKS50cmFuc2l0aW9uKGUpfX0sY2U9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS5wYXJhbXMudGh1bWJzO2lmKGUudGh1bWJzLmluaXRpYWxpemVkKXJldHVybiExO2UudGh1bWJzLmluaXRpYWxpemVkPSEwO3ZhciBhPWUuY29uc3RydWN0b3I7cmV0dXJuIHQuc3dpcGVyIGluc3RhbmNlb2YgYT8oZS50aHVtYnMuc3dpcGVyPXQuc3dpcGVyLFMoZS50aHVtYnMuc3dpcGVyLm9yaWdpbmFsUGFyYW1zLHt3YXRjaFNsaWRlc1Byb2dyZXNzOiEwLHNsaWRlVG9DbGlja2VkU2xpZGU6ITF9KSxTKGUudGh1bWJzLnN3aXBlci5wYXJhbXMse3dhdGNoU2xpZGVzUHJvZ3Jlc3M6ITAsc2xpZGVUb0NsaWNrZWRTbGlkZTohMX0pKTpDKHQuc3dpcGVyKSYmKGUudGh1bWJzLnN3aXBlcj1uZXcgYShTKHt9LHQuc3dpcGVyLHt3YXRjaFNsaWRlc1Zpc2liaWxpdHk6ITAsd2F0Y2hTbGlkZXNQcm9ncmVzczohMCxzbGlkZVRvQ2xpY2tlZFNsaWRlOiExfSkpLGUudGh1bWJzLnN3aXBlckNyZWF0ZWQ9ITApLGUudGh1bWJzLnN3aXBlci4kZWwuYWRkQ2xhc3MoZS5wYXJhbXMudGh1bWJzLnRodW1ic0NvbnRhaW5lckNsYXNzKSxlLnRodW1icy5zd2lwZXIub24oInRhcCIsZS50aHVtYnMub25UaHVtYkNsaWNrKSwhMH0sb25UaHVtYkNsaWNrOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUudGh1bWJzLnN3aXBlcjtpZih0KXt2YXIgYT10LmNsaWNrZWRJbmRleCxpPXQuY2xpY2tlZFNsaWRlO2lmKCEoaSYmbShpKS5oYXNDbGFzcyhlLnBhcmFtcy50aHVtYnMuc2xpZGVUaHVtYkFjdGl2ZUNsYXNzKXx8bnVsbD09YSkpe3ZhciBzO2lmKHM9dC5wYXJhbXMubG9vcD9wYXJzZUludChtKHQuY2xpY2tlZFNsaWRlKS5hdHRyKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLDEwKTphLGUucGFyYW1zLmxvb3Ape3ZhciByPWUuYWN0aXZlSW5kZXg7ZS5zbGlkZXMuZXEocikuaGFzQ2xhc3MoZS5wYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykmJihlLmxvb3BGaXgoKSxlLl9jbGllbnRMZWZ0PWUuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0LHI9ZS5hY3RpdmVJbmRleCk7dmFyIG49ZS5zbGlkZXMuZXEocikucHJldkFsbCgnW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSInK3MrJyJdJykuZXEoMCkuaW5kZXgoKSxsPWUuc2xpZGVzLmVxKHIpLm5leHRBbGwoJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJytzKyciXScpLmVxKDApLmluZGV4KCk7cz12b2lkIDA9PT1uP2w6dm9pZCAwPT09bD9uOmwtcjxyLW4/bDpufWUuc2xpZGVUbyhzKX19fSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxhPXQudGh1bWJzLnN3aXBlcjtpZihhKXt2YXIgaT0iYXV0byI9PT1hLnBhcmFtcy5zbGlkZXNQZXJWaWV3P2Euc2xpZGVzUGVyVmlld0R5bmFtaWMoKTphLnBhcmFtcy5zbGlkZXNQZXJWaWV3LHM9dC5wYXJhbXMudGh1bWJzLmF1dG9TY3JvbGxPZmZzZXQscj1zJiYhYS5wYXJhbXMubG9vcDtpZih0LnJlYWxJbmRleCE9PWEucmVhbEluZGV4fHxyKXt2YXIgbixsLG89YS5hY3RpdmVJbmRleDtpZihhLnBhcmFtcy5sb29wKXthLnNsaWRlcy5lcShvKS5oYXNDbGFzcyhhLnBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSYmKGEubG9vcEZpeCgpLGEuX2NsaWVudExlZnQ9YS4kd3JhcHBlckVsWzBdLmNsaWVudExlZnQsbz1hLmFjdGl2ZUluZGV4KTt2YXIgZD1hLnNsaWRlcy5lcShvKS5wcmV2QWxsKCdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrdC5yZWFsSW5kZXgrJyJdJykuZXEoMCkuaW5kZXgoKSxwPWEuc2xpZGVzLmVxKG8pLm5leHRBbGwoJ1tkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJyt0LnJlYWxJbmRleCsnIl0nKS5lcSgwKS5pbmRleCgpO249dm9pZCAwPT09ZD9wOnZvaWQgMD09PXA/ZDpwLW89PW8tZD9vOnAtbzxvLWQ/cDpkLGw9dC5hY3RpdmVJbmRleD50LnByZXZpb3VzSW5kZXg/Im5leHQiOiJwcmV2In1lbHNlIGw9KG49dC5yZWFsSW5kZXgpPnQucHJldmlvdXNJbmRleD8ibmV4dCI6InByZXYiO3ImJihuKz0ibmV4dCI9PT1sP3M6LTEqcyksYS52aXNpYmxlU2xpZGVzSW5kZXhlcyYmYS52aXNpYmxlU2xpZGVzSW5kZXhlcy5pbmRleE9mKG4pPDAmJihhLnBhcmFtcy5jZW50ZXJlZFNsaWRlcz9uPW4+bz9uLU1hdGguZmxvb3IoaS8yKSsxOm4rTWF0aC5mbG9vcihpLzIpLTE6bj5vJiYobj1uLWkrMSksYS5zbGlkZVRvKG4sZT8wOnZvaWQgMCkpfXZhciBjPTEsdT10LnBhcmFtcy50aHVtYnMuc2xpZGVUaHVtYkFjdGl2ZUNsYXNzO2lmKHQucGFyYW1zLnNsaWRlc1BlclZpZXc+MSYmIXQucGFyYW1zLmNlbnRlcmVkU2xpZGVzJiYoYz10LnBhcmFtcy5zbGlkZXNQZXJWaWV3KSx0LnBhcmFtcy50aHVtYnMubXVsdGlwbGVBY3RpdmVUaHVtYnN8fChjPTEpLGM9TWF0aC5mbG9vcihjKSxhLnNsaWRlcy5yZW1vdmVDbGFzcyh1KSxhLnBhcmFtcy5sb29wfHxhLnBhcmFtcy52aXJ0dWFsJiZhLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpZm9yKHZhciBoPTA7aDxjO2grPTEpYS4kd3JhcHBlckVsLmNoaWxkcmVuKCdbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IicrKHQucmVhbEluZGV4K2gpKyciXScpLmFkZENsYXNzKHUpO2Vsc2UgZm9yKHZhciB2PTA7djxjO3YrPTEpYS5zbGlkZXMuZXEodC5yZWFsSW5kZXgrdikuYWRkQ2xhc3ModSl9fX0sdWU9W3EsXyx7bmFtZToibW91c2V3aGVlbCIscGFyYW1zOnttb3VzZXdoZWVsOntlbmFibGVkOiExLHJlbGVhc2VPbkVkZ2VzOiExLGludmVydDohMSxmb3JjZVRvQXhpczohMSxzZW5zaXRpdml0eToxLGV2ZW50c1RhcmdldDoiY29udGFpbmVyIix0aHJlc2hvbGREZWx0YTpudWxsLHRocmVzaG9sZFRpbWU6bnVsbH19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7bW91c2V3aGVlbDp7ZW5hYmxlZDohMSxsYXN0U2Nyb2xsVGltZTp4KCksbGFzdEV2ZW50QmVmb3JlU25hcDp2b2lkIDAscmVjZW50V2hlZWxFdmVudHM6W10sZW5hYmxlOlUuZW5hYmxlLGRpc2FibGU6VS5kaXNhYmxlLGhhbmRsZTpVLmhhbmRsZSxoYW5kbGVNb3VzZUVudGVyOlUuaGFuZGxlTW91c2VFbnRlcixoYW5kbGVNb3VzZUxlYXZlOlUuaGFuZGxlTW91c2VMZWF2ZSxhbmltYXRlU2xpZGVyOlUuYW5pbWF0ZVNsaWRlcixyZWxlYXNlU2Nyb2xsOlUucmVsZWFzZVNjcm9sbH19KX0sb246e2luaXQ6ZnVuY3Rpb24oZSl7IWUucGFyYW1zLm1vdXNld2hlZWwuZW5hYmxlZCYmZS5wYXJhbXMuY3NzTW9kZSYmZS5tb3VzZXdoZWVsLmRpc2FibGUoKSxlLnBhcmFtcy5tb3VzZXdoZWVsLmVuYWJsZWQmJmUubW91c2V3aGVlbC5lbmFibGUoKX0sZGVzdHJveTpmdW5jdGlvbihlKXtlLnBhcmFtcy5jc3NNb2RlJiZlLm1vdXNld2hlZWwuZW5hYmxlKCksZS5tb3VzZXdoZWVsLmVuYWJsZWQmJmUubW91c2V3aGVlbC5kaXNhYmxlKCl9fX0se25hbWU6Im5hdmlnYXRpb24iLHBhcmFtczp7bmF2aWdhdGlvbjp7bmV4dEVsOm51bGwscHJldkVsOm51bGwsaGlkZU9uQ2xpY2s6ITEsZGlzYWJsZWRDbGFzczoic3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCIsaGlkZGVuQ2xhc3M6InN3aXBlci1idXR0b24taGlkZGVuIixsb2NrQ2xhc3M6InN3aXBlci1idXR0b24tbG9jayJ9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse25hdmlnYXRpb246dCh7fSxLKX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLm5hdmlnYXRpb24uaW5pdCgpLGUubmF2aWdhdGlvbi51cGRhdGUoKX0sdG9FZGdlOmZ1bmN0aW9uKGUpe2UubmF2aWdhdGlvbi51cGRhdGUoKX0sZnJvbUVkZ2U6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0aW9uLnVwZGF0ZSgpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2UubmF2aWdhdGlvbi5kZXN0cm95KCl9LGNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIGE9ZS5uYXZpZ2F0aW9uLGk9YS4kbmV4dEVsLHM9YS4kcHJldkVsLHI9dC50YXJnZXQ7aWYoZS5wYXJhbXMubmF2aWdhdGlvbi5oaWRlT25DbGljayYmIW0ocikuaXMocykmJiFtKHIpLmlzKGkpKXtpZihlLnBhZ2luYXRpb24mJmUucGFyYW1zLnBhZ2luYXRpb24mJmUucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlJiYoZS5wYWdpbmF0aW9uLmVsPT09cnx8ZS5wYWdpbmF0aW9uLmVsLmNvbnRhaW5zKHIpKSlyZXR1cm47dmFyIG47aT9uPWkuaGFzQ2xhc3MoZS5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcyk6cyYmKG49cy5oYXNDbGFzcyhlLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKSksITA9PT1uP2UuZW1pdCgibmF2aWdhdGlvblNob3ciKTplLmVtaXQoIm5hdmlnYXRpb25IaWRlIiksaSYmaS50b2dnbGVDbGFzcyhlLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKSxzJiZzLnRvZ2dsZUNsYXNzKGUucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpfX19fSx7bmFtZToicGFnaW5hdGlvbiIscGFyYW1zOntwYWdpbmF0aW9uOntlbDpudWxsLGJ1bGxldEVsZW1lbnQ6InNwYW4iLGNsaWNrYWJsZTohMSxoaWRlT25DbGljazohMSxyZW5kZXJCdWxsZXQ6bnVsbCxyZW5kZXJQcm9ncmVzc2JhcjpudWxsLHJlbmRlckZyYWN0aW9uOm51bGwscmVuZGVyQ3VzdG9tOm51bGwscHJvZ3Jlc3NiYXJPcHBvc2l0ZTohMSx0eXBlOiJidWxsZXRzIixkeW5hbWljQnVsbGV0czohMSxkeW5hbWljTWFpbkJ1bGxldHM6MSxmb3JtYXRGcmFjdGlvbkN1cnJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZvcm1hdEZyYWN0aW9uVG90YWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGJ1bGxldENsYXNzOiJzd2lwZXItcGFnaW5hdGlvbi1idWxsZXQiLGJ1bGxldEFjdGl2ZUNsYXNzOiJzd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIixtb2RpZmllckNsYXNzOiJzd2lwZXItcGFnaW5hdGlvbi0iLGN1cnJlbnRDbGFzczoic3dpcGVyLXBhZ2luYXRpb24tY3VycmVudCIsdG90YWxDbGFzczoic3dpcGVyLXBhZ2luYXRpb24tdG90YWwiLGhpZGRlbkNsYXNzOiJzd2lwZXItcGFnaW5hdGlvbi1oaWRkZW4iLHByb2dyZXNzYmFyRmlsbENsYXNzOiJzd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIixwcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3M6InN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIixjbGlja2FibGVDbGFzczoic3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIixsb2NrQ2xhc3M6InN3aXBlci1wYWdpbmF0aW9uLWxvY2sifX0sY3JlYXRlOmZ1bmN0aW9uKCl7TSh0aGlzLHtwYWdpbmF0aW9uOnQoe2R5bmFtaWNCdWxsZXRJbmRleDowfSxaKX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhZ2luYXRpb24uaW5pdCgpLGUucGFnaW5hdGlvbi5yZW5kZXIoKSxlLnBhZ2luYXRpb24udXBkYXRlKCl9LGFjdGl2ZUluZGV4Q2hhbmdlOmZ1bmN0aW9uKGUpeyhlLnBhcmFtcy5sb29wfHx2b2lkIDA9PT1lLnNuYXBJbmRleCkmJmUucGFnaW5hdGlvbi51cGRhdGUoKX0sc25hcEluZGV4Q2hhbmdlOmZ1bmN0aW9uKGUpe2UucGFyYW1zLmxvb3B8fGUucGFnaW5hdGlvbi51cGRhdGUoKX0sc2xpZGVzTGVuZ3RoQ2hhbmdlOmZ1bmN0aW9uKGUpe2UucGFyYW1zLmxvb3AmJihlLnBhZ2luYXRpb24ucmVuZGVyKCksZS5wYWdpbmF0aW9uLnVwZGF0ZSgpKX0sc25hcEdyaWRMZW5ndGhDaGFuZ2U6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMubG9vcHx8KGUucGFnaW5hdGlvbi5yZW5kZXIoKSxlLnBhZ2luYXRpb24udXBkYXRlKCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe2UucGFnaW5hdGlvbi5kZXN0cm95KCl9LGNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIGE9dC50YXJnZXQ7aWYoZS5wYXJhbXMucGFnaW5hdGlvbi5lbCYmZS5wYXJhbXMucGFnaW5hdGlvbi5oaWRlT25DbGljayYmZS5wYWdpbmF0aW9uLiRlbC5sZW5ndGg+MCYmIW0oYSkuaGFzQ2xhc3MoZS5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpe2lmKGUubmF2aWdhdGlvbiYmKGUubmF2aWdhdGlvbi5uZXh0RWwmJmE9PT1lLm5hdmlnYXRpb24ubmV4dEVsfHxlLm5hdmlnYXRpb24ucHJldkVsJiZhPT09ZS5uYXZpZ2F0aW9uLnByZXZFbCkpcmV0dXJuOyEwPT09ZS5wYWdpbmF0aW9uLiRlbC5oYXNDbGFzcyhlLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGRlbkNsYXNzKT9lLmVtaXQoInBhZ2luYXRpb25TaG93Iik6ZS5lbWl0KCJwYWdpbmF0aW9uSGlkZSIpLGUucGFnaW5hdGlvbi4kZWwudG9nZ2xlQ2xhc3MoZS5wYXJhbXMucGFnaW5hdGlvbi5oaWRkZW5DbGFzcyl9fX19LHtuYW1lOiJzY3JvbGxiYXIiLHBhcmFtczp7c2Nyb2xsYmFyOntlbDpudWxsLGRyYWdTaXplOiJhdXRvIixoaWRlOiExLGRyYWdnYWJsZTohMSxzbmFwT25SZWxlYXNlOiEwLGxvY2tDbGFzczoic3dpcGVyLXNjcm9sbGJhci1sb2NrIixkcmFnQ2xhc3M6InN3aXBlci1zY3JvbGxiYXItZHJhZyJ9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse3Njcm9sbGJhcjp0KHtpc1RvdWNoZWQ6ITEsdGltZW91dDpudWxsLGRyYWdUaW1lb3V0Om51bGx9LEopfSl9LG9uOntpbml0OmZ1bmN0aW9uKGUpe2Uuc2Nyb2xsYmFyLmluaXQoKSxlLnNjcm9sbGJhci51cGRhdGVTaXplKCksZS5zY3JvbGxiYXIuc2V0VHJhbnNsYXRlKCl9LHVwZGF0ZTpmdW5jdGlvbihlKXtlLnNjcm9sbGJhci51cGRhdGVTaXplKCl9LHJlc2l6ZTpmdW5jdGlvbihlKXtlLnNjcm9sbGJhci51cGRhdGVTaXplKCl9LG9ic2VydmVyVXBkYXRlOmZ1bmN0aW9uKGUpe2Uuc2Nyb2xsYmFyLnVwZGF0ZVNpemUoKX0sc2V0VHJhbnNsYXRlOmZ1bmN0aW9uKGUpe2Uuc2Nyb2xsYmFyLnNldFRyYW5zbGF0ZSgpfSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7ZS5zY3JvbGxiYXIuc2V0VHJhbnNpdGlvbih0KX0sZGVzdHJveTpmdW5jdGlvbihlKXtlLnNjcm9sbGJhci5kZXN0cm95KCl9fX0se25hbWU6InBhcmFsbGF4IixwYXJhbXM6e3BhcmFsbGF4OntlbmFibGVkOiExfX0sY3JlYXRlOmZ1bmN0aW9uKCl7TSh0aGlzLHtwYXJhbGxheDp0KHt9LFEpfSl9LG9uOntiZWZvcmVJbml0OmZ1bmN0aW9uKGUpe2UucGFyYW1zLnBhcmFsbGF4LmVuYWJsZWQmJihlLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzPSEwLGUub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcz0hMCl9LGluaXQ6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMucGFyYWxsYXguZW5hYmxlZCYmZS5wYXJhbGxheC5zZXRUcmFuc2xhdGUoKX0sc2V0VHJhbnNsYXRlOmZ1bmN0aW9uKGUpe2UucGFyYW1zLnBhcmFsbGF4LmVuYWJsZWQmJmUucGFyYWxsYXguc2V0VHJhbnNsYXRlKCl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXtlLnBhcmFtcy5wYXJhbGxheC5lbmFibGVkJiZlLnBhcmFsbGF4LnNldFRyYW5zaXRpb24odCl9fX0se25hbWU6Inpvb20iLHBhcmFtczp7em9vbTp7ZW5hYmxlZDohMSxtYXhSYXRpbzozLG1pblJhdGlvOjEsdG9nZ2xlOiEwLGNvbnRhaW5lckNsYXNzOiJzd2lwZXItem9vbS1jb250YWluZXIiLHpvb21lZFNsaWRlQ2xhc3M6InN3aXBlci1zbGlkZS16b29tZWQifX0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztNKGUse3pvb206dCh7ZW5hYmxlZDohMSxzY2FsZToxLGN1cnJlbnRTY2FsZToxLGlzU2NhbGluZzohMSxnZXN0dXJlOnskc2xpZGVFbDp2b2lkIDAsc2xpZGVXaWR0aDp2b2lkIDAsc2xpZGVIZWlnaHQ6dm9pZCAwLCRpbWFnZUVsOnZvaWQgMCwkaW1hZ2VXcmFwRWw6dm9pZCAwLG1heFJhdGlvOjN9LGltYWdlOntpc1RvdWNoZWQ6dm9pZCAwLGlzTW92ZWQ6dm9pZCAwLGN1cnJlbnRYOnZvaWQgMCxjdXJyZW50WTp2b2lkIDAsbWluWDp2b2lkIDAsbWluWTp2b2lkIDAsbWF4WDp2b2lkIDAsbWF4WTp2b2lkIDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsc3RhcnRYOnZvaWQgMCxzdGFydFk6dm9pZCAwLHRvdWNoZXNTdGFydDp7fSx0b3VjaGVzQ3VycmVudDp7fX0sdmVsb2NpdHk6e3g6dm9pZCAwLHk6dm9pZCAwLHByZXZQb3NpdGlvblg6dm9pZCAwLHByZXZQb3NpdGlvblk6dm9pZCAwLHByZXZUaW1lOnZvaWQgMH19LGVlKX0pO3ZhciBhPTE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUuem9vbSwic2NhbGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sc2V0OmZ1bmN0aW9uKHQpe2lmKGEhPT10KXt2YXIgaT1lLnpvb20uZ2VzdHVyZS4kaW1hZ2VFbD9lLnpvb20uZ2VzdHVyZS4kaW1hZ2VFbFswXTp2b2lkIDAscz1lLnpvb20uZ2VzdHVyZS4kc2xpZGVFbD9lLnpvb20uZ2VzdHVyZS4kc2xpZGVFbFswXTp2b2lkIDA7ZS5lbWl0KCJ6b29tQ2hhbmdlIix0LGkscyl9YT10fX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhcmFtcy56b29tLmVuYWJsZWQmJmUuem9vbS5lbmFibGUoKX0sZGVzdHJveTpmdW5jdGlvbihlKXtlLnpvb20uZGlzYWJsZSgpfSx0b3VjaFN0YXJ0OmZ1bmN0aW9uKGUsdCl7ZS56b29tLmVuYWJsZWQmJmUuem9vbS5vblRvdWNoU3RhcnQodCl9LHRvdWNoRW5kOmZ1bmN0aW9uKGUsdCl7ZS56b29tLmVuYWJsZWQmJmUuem9vbS5vblRvdWNoRW5kKHQpfSxkb3VibGVUYXA6ZnVuY3Rpb24oZSx0KXshZS5hbmltYXRpbmcmJmUucGFyYW1zLnpvb20uZW5hYmxlZCYmZS56b29tLmVuYWJsZWQmJmUucGFyYW1zLnpvb20udG9nZ2xlJiZlLnpvb20udG9nZ2xlKHQpfSx0cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUpe2Uuem9vbS5lbmFibGVkJiZlLnBhcmFtcy56b29tLmVuYWJsZWQmJmUuem9vbS5vblRyYW5zaXRpb25FbmQoKX0sc2xpZGVDaGFuZ2U6ZnVuY3Rpb24oZSl7ZS56b29tLmVuYWJsZWQmJmUucGFyYW1zLnpvb20uZW5hYmxlZCYmZS5wYXJhbXMuY3NzTW9kZSYmZS56b29tLm9uVHJhbnNpdGlvbkVuZCgpfX19LHtuYW1lOiJsYXp5IixwYXJhbXM6e2xhenk6e2NoZWNrSW5WaWV3OiExLGVuYWJsZWQ6ITEsbG9hZFByZXZOZXh0OiExLGxvYWRQcmV2TmV4dEFtb3VudDoxLGxvYWRPblRyYW5zaXRpb25TdGFydDohMSxzY3JvbGxpbmdFbGVtZW50OiIiLGVsZW1lbnRDbGFzczoic3dpcGVyLWxhenkiLGxvYWRpbmdDbGFzczoic3dpcGVyLWxhenktbG9hZGluZyIsbG9hZGVkQ2xhc3M6InN3aXBlci1sYXp5LWxvYWRlZCIscHJlbG9hZGVyQ2xhc3M6InN3aXBlci1sYXp5LXByZWxvYWRlciJ9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse2xhenk6dCh7aW5pdGlhbEltYWdlTG9hZGVkOiExfSx0ZSl9KX0sb246e2JlZm9yZUluaXQ6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMubGF6eS5lbmFibGVkJiZlLnBhcmFtcy5wcmVsb2FkSW1hZ2VzJiYoZS5wYXJhbXMucHJlbG9hZEltYWdlcz0hMSl9LGluaXQ6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMubGF6eS5lbmFibGVkJiYhZS5wYXJhbXMubG9vcCYmMD09PWUucGFyYW1zLmluaXRpYWxTbGlkZSYmKGUucGFyYW1zLmxhenkuY2hlY2tJblZpZXc/ZS5sYXp5LmNoZWNrSW5WaWV3T25Mb2FkKCk6ZS5sYXp5LmxvYWQoKSl9LHNjcm9sbDpmdW5jdGlvbihlKXtlLnBhcmFtcy5mcmVlTW9kZSYmIWUucGFyYW1zLmZyZWVNb2RlU3RpY2t5JiZlLmxhenkubG9hZCgpfSwic2Nyb2xsYmFyRHJhZ01vdmUgcmVzaXplIF9mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlIjpmdW5jdGlvbihlKXtlLnBhcmFtcy5sYXp5LmVuYWJsZWQmJmUubGF6eS5sb2FkKCl9LHRyYW5zaXRpb25TdGFydDpmdW5jdGlvbihlKXtlLnBhcmFtcy5sYXp5LmVuYWJsZWQmJihlLnBhcmFtcy5sYXp5LmxvYWRPblRyYW5zaXRpb25TdGFydHx8IWUucGFyYW1zLmxhenkubG9hZE9uVHJhbnNpdGlvblN0YXJ0JiYhZS5sYXp5LmluaXRpYWxJbWFnZUxvYWRlZCkmJmUubGF6eS5sb2FkKCl9LHRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMubGF6eS5lbmFibGVkJiYhZS5wYXJhbXMubGF6eS5sb2FkT25UcmFuc2l0aW9uU3RhcnQmJmUubGF6eS5sb2FkKCl9LHNsaWRlQ2hhbmdlOmZ1bmN0aW9uKGUpe2UucGFyYW1zLmxhenkuZW5hYmxlZCYmZS5wYXJhbXMuY3NzTW9kZSYmZS5sYXp5LmxvYWQoKX19fSx7bmFtZToiY29udHJvbGxlciIscGFyYW1zOntjb250cm9sbGVyOntjb250cm9sOnZvaWQgMCxpbnZlcnNlOiExLGJ5OiJzbGlkZSJ9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse2NvbnRyb2xsZXI6dCh7Y29udHJvbDp0aGlzLnBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2x9LGFlKX0pfSxvbjp7dXBkYXRlOmZ1bmN0aW9uKGUpe2UuY29udHJvbGxlci5jb250cm9sJiZlLmNvbnRyb2xsZXIuc3BsaW5lJiYoZS5jb250cm9sbGVyLnNwbGluZT12b2lkIDAsZGVsZXRlIGUuY29udHJvbGxlci5zcGxpbmUpfSxyZXNpemU6ZnVuY3Rpb24oZSl7ZS5jb250cm9sbGVyLmNvbnRyb2wmJmUuY29udHJvbGxlci5zcGxpbmUmJihlLmNvbnRyb2xsZXIuc3BsaW5lPXZvaWQgMCxkZWxldGUgZS5jb250cm9sbGVyLnNwbGluZSl9LG9ic2VydmVyVXBkYXRlOmZ1bmN0aW9uKGUpe2UuY29udHJvbGxlci5jb250cm9sJiZlLmNvbnRyb2xsZXIuc3BsaW5lJiYoZS5jb250cm9sbGVyLnNwbGluZT12b2lkIDAsZGVsZXRlIGUuY29udHJvbGxlci5zcGxpbmUpfSxzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oZSx0LGEpe2UuY29udHJvbGxlci5jb250cm9sJiZlLmNvbnRyb2xsZXIuc2V0VHJhbnNsYXRlKHQsYSl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0LGEpe2UuY29udHJvbGxlci5jb250cm9sJiZlLmNvbnRyb2xsZXIuc2V0VHJhbnNpdGlvbih0LGEpfX19LHtuYW1lOiJhMTF5IixwYXJhbXM6e2ExMXk6e2VuYWJsZWQ6ITAsbm90aWZpY2F0aW9uQ2xhc3M6InN3aXBlci1ub3RpZmljYXRpb24iLHByZXZTbGlkZU1lc3NhZ2U6IlByZXZpb3VzIHNsaWRlIixuZXh0U2xpZGVNZXNzYWdlOiJOZXh0IHNsaWRlIixmaXJzdFNsaWRlTWVzc2FnZToiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLGxhc3RTbGlkZU1lc3NhZ2U6IlRoaXMgaXMgdGhlIGxhc3Qgc2xpZGUiLHBhZ2luYXRpb25CdWxsZXRNZXNzYWdlOiJHbyB0byBzbGlkZSB7e2luZGV4fX0iLGNvbnRhaW5lck1lc3NhZ2U6bnVsbCxjb250YWluZXJSb2xlRGVzY3JpcHRpb25NZXNzYWdlOm51bGwsaXRlbVJvbGVEZXNjcmlwdGlvbk1lc3NhZ2U6bnVsbH19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7YTExeTp0KHt9LGllLHtsaXZlUmVnaW9uOm0oJzxzcGFuIGNsYXNzPSInK3RoaXMucGFyYW1zLmExMXkubm90aWZpY2F0aW9uQ2xhc3MrJyIgYXJpYS1saXZlPSJhc3NlcnRpdmUiIGFyaWEtYXRvbWljPSJ0cnVlIj48L3NwYW4+Jyl9KX0pfSxvbjp7YWZ0ZXJJbml0OmZ1bmN0aW9uKGUpe2UucGFyYW1zLmExMXkuZW5hYmxlZCYmKGUuYTExeS5pbml0KCksZS5hMTF5LnVwZGF0ZU5hdmlnYXRpb24oKSl9LHRvRWRnZTpmdW5jdGlvbihlKXtlLnBhcmFtcy5hMTF5LmVuYWJsZWQmJmUuYTExeS51cGRhdGVOYXZpZ2F0aW9uKCl9LGZyb21FZGdlOmZ1bmN0aW9uKGUpe2UucGFyYW1zLmExMXkuZW5hYmxlZCYmZS5hMTF5LnVwZGF0ZU5hdmlnYXRpb24oKX0scGFnaW5hdGlvblVwZGF0ZTpmdW5jdGlvbihlKXtlLnBhcmFtcy5hMTF5LmVuYWJsZWQmJmUuYTExeS51cGRhdGVQYWdpbmF0aW9uKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMuYTExeS5lbmFibGVkJiZlLmExMXkuZGVzdHJveSgpfX19LHtuYW1lOiJoaXN0b3J5IixwYXJhbXM6e2hpc3Rvcnk6e2VuYWJsZWQ6ITEscmVwbGFjZVN0YXRlOiExLGtleToic2xpZGVzIn19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7aGlzdG9yeTp0KHt9LHNlKX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQmJmUuaGlzdG9yeS5pbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7ZS5wYXJhbXMuaGlzdG9yeS5lbmFibGVkJiZlLmhpc3RvcnkuZGVzdHJveSgpfSx0cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUpe2UuaGlzdG9yeS5pbml0aWFsaXplZCYmZS5oaXN0b3J5LnNldEhpc3RvcnkoZS5wYXJhbXMuaGlzdG9yeS5rZXksZS5hY3RpdmVJbmRleCl9LHNsaWRlQ2hhbmdlOmZ1bmN0aW9uKGUpe2UuaGlzdG9yeS5pbml0aWFsaXplZCYmZS5wYXJhbXMuY3NzTW9kZSYmZS5oaXN0b3J5LnNldEhpc3RvcnkoZS5wYXJhbXMuaGlzdG9yeS5rZXksZS5hY3RpdmVJbmRleCl9fX0se25hbWU6Imhhc2gtbmF2aWdhdGlvbiIscGFyYW1zOntoYXNoTmF2aWdhdGlvbjp7ZW5hYmxlZDohMSxyZXBsYWNlU3RhdGU6ITEsd2F0Y2hTdGF0ZTohMX19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7aGFzaE5hdmlnYXRpb246dCh7aW5pdGlhbGl6ZWQ6ITF9LHJlKX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkJiZlLmhhc2hOYXZpZ2F0aW9uLmluaXQoKX0sZGVzdHJveTpmdW5jdGlvbihlKXtlLnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkJiZlLmhhc2hOYXZpZ2F0aW9uLmRlc3Ryb3koKX0sdHJhbnNpdGlvbkVuZDpmdW5jdGlvbihlKXtlLmhhc2hOYXZpZ2F0aW9uLmluaXRpYWxpemVkJiZlLmhhc2hOYXZpZ2F0aW9uLnNldEhhc2goKX0sc2xpZGVDaGFuZ2U6ZnVuY3Rpb24oZSl7ZS5oYXNoTmF2aWdhdGlvbi5pbml0aWFsaXplZCYmZS5wYXJhbXMuY3NzTW9kZSYmZS5oYXNoTmF2aWdhdGlvbi5zZXRIYXNoKCl9fX0se25hbWU6ImF1dG9wbGF5IixwYXJhbXM6e2F1dG9wbGF5OntlbmFibGVkOiExLGRlbGF5OjNlMyx3YWl0Rm9yVHJhbnNpdGlvbjohMCxkaXNhYmxlT25JbnRlcmFjdGlvbjohMCxzdG9wT25MYXN0U2xpZGU6ITEscmV2ZXJzZURpcmVjdGlvbjohMX19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7YXV0b3BsYXk6dCh7fSxuZSx7cnVubmluZzohMSxwYXVzZWQ6ITF9KX0pfSxvbjp7aW5pdDpmdW5jdGlvbihlKXtlLnBhcmFtcy5hdXRvcGxheS5lbmFibGVkJiYoZS5hdXRvcGxheS5zdGFydCgpLHIoKS5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixlLmF1dG9wbGF5Lm9uVmlzaWJpbGl0eUNoYW5nZSkpfSxiZWZvcmVUcmFuc2l0aW9uU3RhcnQ6ZnVuY3Rpb24oZSx0LGEpe2UuYXV0b3BsYXkucnVubmluZyYmKGF8fCFlLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbj9lLmF1dG9wbGF5LnBhdXNlKHQpOmUuYXV0b3BsYXkuc3RvcCgpKX0sc2xpZGVyRmlyc3RNb3ZlOmZ1bmN0aW9uKGUpe2UuYXV0b3BsYXkucnVubmluZyYmKGUucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uP2UuYXV0b3BsYXkuc3RvcCgpOmUuYXV0b3BsYXkucGF1c2UoKSl9LHRvdWNoRW5kOmZ1bmN0aW9uKGUpe2UucGFyYW1zLmNzc01vZGUmJmUuYXV0b3BsYXkucGF1c2VkJiYhZS5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24mJmUuYXV0b3BsYXkucnVuKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7ZS5hdXRvcGxheS5ydW5uaW5nJiZlLmF1dG9wbGF5LnN0b3AoKSxyKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZS5hdXRvcGxheS5vblZpc2liaWxpdHlDaGFuZ2UpfX19LHtuYW1lOiJlZmZlY3QtZmFkZSIscGFyYW1zOntmYWRlRWZmZWN0Ontjcm9zc0ZhZGU6ITF9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse2ZhZGVFZmZlY3Q6dCh7fSxsZSl9KX0sb246e2JlZm9yZUluaXQ6ZnVuY3Rpb24oZSl7aWYoImZhZGUiPT09ZS5wYXJhbXMuZWZmZWN0KXtlLmNsYXNzTmFtZXMucHVzaChlLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzKyJmYWRlIik7dmFyIHQ9e3NsaWRlc1BlclZpZXc6MSxzbGlkZXNQZXJDb2x1bW46MSxzbGlkZXNQZXJHcm91cDoxLHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ITAsc3BhY2VCZXR3ZWVuOjAsdmlydHVhbFRyYW5zbGF0ZTohMH07UyhlLnBhcmFtcyx0KSxTKGUub3JpZ2luYWxQYXJhbXMsdCl9fSxzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oZSl7ImZhZGUiPT09ZS5wYXJhbXMuZWZmZWN0JiZlLmZhZGVFZmZlY3Quc2V0VHJhbnNsYXRlKCl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXsiZmFkZSI9PT1lLnBhcmFtcy5lZmZlY3QmJmUuZmFkZUVmZmVjdC5zZXRUcmFuc2l0aW9uKHQpfX19LHtuYW1lOiJlZmZlY3QtY3ViZSIscGFyYW1zOntjdWJlRWZmZWN0OntzbGlkZVNoYWRvd3M6ITAsc2hhZG93OiEwLHNoYWRvd09mZnNldDoyMCxzaGFkb3dTY2FsZTouOTR9fSxjcmVhdGU6ZnVuY3Rpb24oKXtNKHRoaXMse2N1YmVFZmZlY3Q6dCh7fSxvZSl9KX0sb246e2JlZm9yZUluaXQ6ZnVuY3Rpb24oZSl7aWYoImN1YmUiPT09ZS5wYXJhbXMuZWZmZWN0KXtlLmNsYXNzTmFtZXMucHVzaChlLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzKyJjdWJlIiksZS5jbGFzc05hbWVzLnB1c2goZS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcysiM2QiKTt2YXIgdD17c2xpZGVzUGVyVmlldzoxLHNsaWRlc1BlckNvbHVtbjoxLHNsaWRlc1Blckdyb3VwOjEsd2F0Y2hTbGlkZXNQcm9ncmVzczohMCxyZXNpc3RhbmNlUmF0aW86MCxzcGFjZUJldHdlZW46MCxjZW50ZXJlZFNsaWRlczohMSx2aXJ0dWFsVHJhbnNsYXRlOiEwfTtTKGUucGFyYW1zLHQpLFMoZS5vcmlnaW5hbFBhcmFtcyx0KX19LHNldFRyYW5zbGF0ZTpmdW5jdGlvbihlKXsiY3ViZSI9PT1lLnBhcmFtcy5lZmZlY3QmJmUuY3ViZUVmZmVjdC5zZXRUcmFuc2xhdGUoKX0sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpeyJjdWJlIj09PWUucGFyYW1zLmVmZmVjdCYmZS5jdWJlRWZmZWN0LnNldFRyYW5zaXRpb24odCl9fX0se25hbWU6ImVmZmVjdC1mbGlwIixwYXJhbXM6e2ZsaXBFZmZlY3Q6e3NsaWRlU2hhZG93czohMCxsaW1pdFJvdGF0aW9uOiEwfX0sY3JlYXRlOmZ1bmN0aW9uKCl7TSh0aGlzLHtmbGlwRWZmZWN0OnQoe30sZGUpfSl9LG9uOntiZWZvcmVJbml0OmZ1bmN0aW9uKGUpe2lmKCJmbGlwIj09PWUucGFyYW1zLmVmZmVjdCl7ZS5jbGFzc05hbWVzLnB1c2goZS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcysiZmxpcCIpLGUuY2xhc3NOYW1lcy5wdXNoKGUucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MrIjNkIik7dmFyIHQ9e3NsaWRlc1BlclZpZXc6MSxzbGlkZXNQZXJDb2x1bW46MSxzbGlkZXNQZXJHcm91cDoxLHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ITAsc3BhY2VCZXR3ZWVuOjAsdmlydHVhbFRyYW5zbGF0ZTohMH07UyhlLnBhcmFtcyx0KSxTKGUub3JpZ2luYWxQYXJhbXMsdCl9fSxzZXRUcmFuc2xhdGU6ZnVuY3Rpb24oZSl7ImZsaXAiPT09ZS5wYXJhbXMuZWZmZWN0JiZlLmZsaXBFZmZlY3Quc2V0VHJhbnNsYXRlKCl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXsiZmxpcCI9PT1lLnBhcmFtcy5lZmZlY3QmJmUuZmxpcEVmZmVjdC5zZXRUcmFuc2l0aW9uKHQpfX19LHtuYW1lOiJlZmZlY3QtY292ZXJmbG93IixwYXJhbXM6e2NvdmVyZmxvd0VmZmVjdDp7cm90YXRlOjUwLHN0cmV0Y2g6MCxkZXB0aDoxMDAsc2NhbGU6MSxtb2RpZmllcjoxLHNsaWRlU2hhZG93czohMH19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7Y292ZXJmbG93RWZmZWN0OnQoe30scGUpfSl9LG9uOntiZWZvcmVJbml0OmZ1bmN0aW9uKGUpeyJjb3ZlcmZsb3ciPT09ZS5wYXJhbXMuZWZmZWN0JiYoZS5jbGFzc05hbWVzLnB1c2goZS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcysiY292ZXJmbG93IiksZS5jbGFzc05hbWVzLnB1c2goZS5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcysiM2QiKSxlLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzPSEwLGUub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcz0hMCl9LHNldFRyYW5zbGF0ZTpmdW5jdGlvbihlKXsiY292ZXJmbG93Ij09PWUucGFyYW1zLmVmZmVjdCYmZS5jb3ZlcmZsb3dFZmZlY3Quc2V0VHJhbnNsYXRlKCl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXsiY292ZXJmbG93Ij09PWUucGFyYW1zLmVmZmVjdCYmZS5jb3ZlcmZsb3dFZmZlY3Quc2V0VHJhbnNpdGlvbih0KX19fSx7bmFtZToidGh1bWJzIixwYXJhbXM6e3RodW1iczp7c3dpcGVyOm51bGwsbXVsdGlwbGVBY3RpdmVUaHVtYnM6ITAsYXV0b1Njcm9sbE9mZnNldDowLHNsaWRlVGh1bWJBY3RpdmVDbGFzczoic3dpcGVyLXNsaWRlLXRodW1iLWFjdGl2ZSIsdGh1bWJzQ29udGFpbmVyQ2xhc3M6InN3aXBlci1jb250YWluZXItdGh1bWJzIn19LGNyZWF0ZTpmdW5jdGlvbigpe00odGhpcyx7dGh1bWJzOnQoe3N3aXBlcjpudWxsLGluaXRpYWxpemVkOiExfSxjZSl9KX0sb246e2JlZm9yZUluaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJhbXMudGh1bWJzO3QmJnQuc3dpcGVyJiYoZS50aHVtYnMuaW5pdCgpLGUudGh1bWJzLnVwZGF0ZSghMCkpfSxzbGlkZUNoYW5nZTpmdW5jdGlvbihlKXtlLnRodW1icy5zd2lwZXImJmUudGh1bWJzLnVwZGF0ZSgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7ZS50aHVtYnMuc3dpcGVyJiZlLnRodW1icy51cGRhdGUoKX0scmVzaXplOmZ1bmN0aW9uKGUpe2UudGh1bWJzLnN3aXBlciYmZS50aHVtYnMudXBkYXRlKCl9LG9ic2VydmVyVXBkYXRlOmZ1bmN0aW9uKGUpe2UudGh1bWJzLnN3aXBlciYmZS50aHVtYnMudXBkYXRlKCl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgYT1lLnRodW1icy5zd2lwZXI7YSYmYS5zZXRUcmFuc2l0aW9uKHQpfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKGUpe3ZhciB0PWUudGh1bWJzLnN3aXBlcjt0JiZlLnRodW1icy5zd2lwZXJDcmVhdGVkJiZ0JiZ0LmRlc3Ryb3koKX19fV07cmV0dXJuIFcudXNlKHVlKSxXfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1zd2lwZXItYnVuZGxlLm1pbi5qcy5tYXA="}},"time_used":41,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":17,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/css/bootstrap.min.css","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.769Z","timestamp":1785159464769,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/css/bootstrap.min.css HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:44 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 28310\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":232963,"size_decoded":28798,"mime_type":"text/css","magic":"Unicode text, UTF-8 text, with very long lines (65342)","md5":"810bafd44b14c98a05e2cce275948ecf","sha1":"d2b0a3da0046dac271c6bdb790ba78db9d749105","sha256":"5302bb748b72bd2cdc4a149906f08a743202de8aa3c27394d8de2a6c39cf0fd6","sha512":"4abe0fa57ad6a4472287fa0388838744e03883bdb92962d34187f103688cbb71f84cc663de54eb521188832cbaad6f7a756451baafb538b0585518ad87a79cfc","ssdeep":"1536:m9YnIWbn98fhRfvO5wlP7Qi9P3CV98IsYRElV6V6pz600I41r:pnIw98fuV986I6V6pz600I41r","tlshash":"c43482d6f590317d9ca7c1499681fefd8a6fa985cb1209a6f003776807cabd30962dcc","first_seen":"2025-08-12T01:57:04.039399Z","last_seen":"2026-07-27T13:38:47.808496Z","times_seen":28,"resource_available":false,"data":"QGNoYXJzZXQgIlVURi04IjsvKiEKICogQm9vdHN0cmFwICB2NS4zLjIgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMjMgVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKQogKi86cm9vdCxbZGF0YS1icy10aGVtZT1saWdodF17LS1icy1ibHVlOiMwZDZlZmQ7LS1icy1pbmRpZ286IzY2MTBmMjstLWJzLXB1cnBsZTojNmY0MmMxOy0tYnMtcGluazojZDYzMzg0Oy0tYnMtcmVkOiNkYzM1NDU7LS1icy1vcmFuZ2U6I2ZkN2UxNDstLWJzLXllbGxvdzojZmZjMTA3Oy0tYnMtZ3JlZW46IzE5ODc1NDstLWJzLXRlYWw6IzIwYzk5NzstLWJzLWN5YW46IzBkY2FmMDstLWJzLWJsYWNrOiMwMDA7LS1icy13aGl0ZTojZmZmOy0tYnMtZ3JheTojNmM3NTdkOy0tYnMtZ3JheS1kYXJrOiMzNDNhNDA7LS1icy1ncmF5LTEwMDojZjhmOWZhOy0tYnMtZ3JheS0yMDA6I2U5ZWNlZjstLWJzLWdyYXktMzAwOiNkZWUyZTY7LS1icy1ncmF5LTQwMDojY2VkNGRhOy0tYnMtZ3JheS01MDA6I2FkYjViZDstLWJzLWdyYXktNjAwOiM2Yzc1N2Q7LS1icy1ncmF5LTcwMDojNDk1MDU3Oy0tYnMtZ3JheS04MDA6IzM0M2E0MDstLWJzLWdyYXktOTAwOiMyMTI1Mjk7LS1icy1wcmltYXJ5OiMwZDZlZmQ7LS1icy1zZWNvbmRhcnk6IzZjNzU3ZDstLWJzLXN1Y2Nlc3M6IzE5ODc1NDstLWJzLWluZm86IzBkY2FmMDstLWJzLXdhcm5pbmc6I2ZmYzEwNzstLWJzLWRhbmdlcjojZGMzNTQ1Oy0tYnMtbGlnaHQ6I2Y4ZjlmYTstLWJzLWRhcms6IzIxMjUyOTstLWJzLXByaW1hcnktcmdiOjEzLDExMCwyNTM7LS1icy1zZWNvbmRhcnktcmdiOjEwOCwxMTcsMTI1Oy0tYnMtc3VjY2Vzcy1yZ2I6MjUsMTM1LDg0Oy0tYnMtaW5mby1yZ2I6MTMsMjAyLDI0MDstLWJzLXdhcm5pbmctcmdiOjI1NSwxOTMsNzstLWJzLWRhbmdlci1yZ2I6MjIwLDUzLDY5Oy0tYnMtbGlnaHQtcmdiOjI0OCwyNDksMjUwOy0tYnMtZGFyay1yZ2I6MzMsMzcsNDE7LS1icy1wcmltYXJ5LXRleHQtZW1waGFzaXM6IzA1MmM2NTstLWJzLXNlY29uZGFyeS10ZXh0LWVtcGhhc2lzOiMyYjJmMzI7LS1icy1zdWNjZXNzLXRleHQtZW1waGFzaXM6IzBhMzYyMjstLWJzLWluZm8tdGV4dC1lbXBoYXNpczojMDU1MTYwOy0tYnMtd2FybmluZy10ZXh0LWVtcGhhc2lzOiM2NjRkMDM7LS1icy1kYW5nZXItdGV4dC1lbXBoYXNpczojNTgxNTFjOy0tYnMtbGlnaHQtdGV4dC1lbXBoYXNpczojNDk1MDU3Oy0tYnMtZGFyay10ZXh0LWVtcGhhc2lzOiM0OTUwNTc7LS1icy1wcmltYXJ5LWJnLXN1YnRsZTojY2ZlMmZmOy0tYnMtc2Vjb25kYXJ5LWJnLXN1YnRsZTojZTJlM2U1Oy0tYnMtc3VjY2Vzcy1iZy1zdWJ0bGU6I2QxZTdkZDstLWJzLWluZm8tYmctc3VidGxlOiNjZmY0ZmM7LS1icy13YXJuaW5nLWJnLXN1YnRsZTojZmZmM2NkOy0tYnMtZGFuZ2VyLWJnLXN1YnRsZTojZjhkN2RhOy0tYnMtbGlnaHQtYmctc3VidGxlOiNmY2ZjZmQ7LS1icy1kYXJrLWJnLXN1YnRsZTojY2VkNGRhOy0tYnMtcHJpbWFyeS1ib3JkZXItc3VidGxlOiM5ZWM1ZmU7LS1icy1zZWNvbmRhcnktYm9yZGVyLXN1YnRsZTojYzRjOGNiOy0tYnMtc3VjY2Vzcy1ib3JkZXItc3VidGxlOiNhM2NmYmI7LS1icy1pbmZvLWJvcmRlci1zdWJ0bGU6IzllZWFmOTstLWJzLXdhcm5pbmctYm9yZGVyLXN1YnRsZTojZmZlNjljOy0tYnMtZGFuZ2VyLWJvcmRlci1zdWJ0bGU6I2YxYWViNTstLWJzLWxpZ2h0LWJvcmRlci1zdWJ0bGU6I2U5ZWNlZjstLWJzLWRhcmstYm9yZGVyLXN1YnRsZTojYWRiNWJkOy0tYnMtd2hpdGUtcmdiOjI1NSwyNTUsMjU1Oy0tYnMtYmxhY2stcmdiOjAsMCwwOy0tYnMtZm9udC1zYW5zLXNlcmlmOnN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLCJTZWdvZSBVSSIsUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsIk5vdG8gU2FucyIsIkxpYmVyYXRpb24gU2FucyIsQXJpYWwsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiOy0tYnMtZm9udC1tb25vc3BhY2U6U0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlOy0tYnMtZ3JhZGllbnQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSk7LS1icy1ib2R5LWZvbnQtZmFtaWx5OnZhcigtLWJzLWZvbnQtc2Fucy1zZXJpZik7LS1icy1ib2R5LWZvbnQtc2l6ZToxcmVtOy0tYnMtYm9keS1mb250LXdlaWdodDo0MDA7LS1icy1ib2R5LWxpbmUtaGVpZ2h0OjEuNTstLWJzLWJvZHktY29sb3I6IzIxMjUyOTstLWJzLWJvZHktY29sb3ItcmdiOjMzLDM3LDQxOy0tYnMtYm9keS1iZzojZmZmOy0tYnMtYm9keS1iZy1yZ2I6MjU1LDI1NSwyNTU7LS1icy1lbXBoYXNpcy1jb2xvcjojMDAwOy0tYnMtZW1waGFzaXMtY29sb3ItcmdiOjAsMCwwOy0tYnMtc2Vjb25kYXJ5LWNvbG9yOnJnYmEoMzMsIDM3LCA0MSwgMC43NSk7LS1icy1zZWNvbmRhcnktY29sb3ItcmdiOjMzLDM3LDQxOy0tYnMtc2Vjb25kYXJ5LWJnOiNlOWVjZWY7LS1icy1zZWNvbmRhcnktYmctcmdiOjIzMywyMzYsMjM5Oy0tYnMtdGVydGlhcnktY29sb3I6cmdiYSgzMywgMzcsIDQxLCAwLjUpOy0tYnMtdGVydGlhcnktY29sb3ItcmdiOjMzLDM3LDQxOy0tYnMtdGVydGlhcnktYmc6I2Y4ZjlmYTstLWJzLXRlcnRpYXJ5LWJnLXJnYjoyNDgsMjQ5LDI1MDstLWJzLWhlYWRpbmctY29sb3I6aW5oZXJpdDstLWJzLWxpbmstY29sb3I6IzBkNmVmZDstLWJzLWxpbmstY29sb3ItcmdiOjEzLDExMCwyNTM7LS1icy1saW5rLWRlY29yYXRpb246dW5kZXJsaW5lOy0tYnMtbGluay1ob3Zlci1jb2xvcjojMGE1OGNhOy0tYnMtbGluay1ob3Zlci1jb2xvci1yZ2I6MTAsODgsMjAyOy0tYnMtY29kZS1jb2xvcjojZDYzMzg0Oy0tYnMtaGlnaGxpZ2h0LWNvbG9yOiMyMTI1Mjk7LS1icy1oaWdobGlnaHQtYmc6I2ZmZjNjZDstLWJzLWJvcmRlci13aWR0aDoxcHg7LS1icy1ib3JkZXItc3R5bGU6c29saWQ7LS1icy1ib3JkZXItY29sb3I6I2RlZTJlNjstLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudDpyZ2JhKDAsIDAsIDAsIDAuMTc1KTstLWJzLWJvcmRlci1yYWRpdXM6MC4zNzVyZW07LS1icy1ib3JkZXItcmFkaXVzLXNtOjAuMjVyZW07LS1icy1ib3JkZXItcmFkaXVzLWxnOjAuNXJlbTstLWJzLWJvcmRlci1yYWRpdXMteGw6MXJlbTstLWJzLWJvcmRlci1yYWRpdXMteHhsOjJyZW07LS1icy1ib3JkZXItcmFkaXVzLTJ4bDp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXh4bCk7LS1icy1ib3JkZXItcmFkaXVzLXBpbGw6NTByZW07LS1icy1ib3gtc2hhZG93OjAgMC41cmVtIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjE1KTstLWJzLWJveC1zaGFkb3ctc206MCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNzUpOy0tYnMtYm94LXNoYWRvdy1sZzowIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIDAuMTc1KTstLWJzLWJveC1zaGFkb3ctaW5zZXQ6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy0tYnMtZm9jdXMtcmluZy13aWR0aDowLjI1cmVtOy0tYnMtZm9jdXMtcmluZy1vcGFjaXR5OjAuMjU7LS1icy1mb2N1cy1yaW5nLWNvbG9yOnJnYmEoMTMsIDExMCwgMjUzLCAwLjI1KTstLWJzLWZvcm0tdmFsaWQtY29sb3I6IzE5ODc1NDstLWJzLWZvcm0tdmFsaWQtYm9yZGVyLWNvbG9yOiMxOTg3NTQ7LS1icy1mb3JtLWludmFsaWQtY29sb3I6I2RjMzU0NTstLWJzLWZvcm0taW52YWxpZC1ib3JkZXItY29sb3I6I2RjMzU0NX1bZGF0YS1icy10aGVtZT1kYXJrXXtjb2xvci1zY2hlbWU6ZGFyazstLWJzLWJvZHktY29sb3I6I2RlZTJlNjstLWJzLWJvZHktY29sb3ItcmdiOjIyMiwyMjYsMjMwOy0tYnMtYm9keS1iZzojMjEyNTI5Oy0tYnMtYm9keS1iZy1yZ2I6MzMsMzcsNDE7LS1icy1lbXBoYXNpcy1jb2xvcjojZmZmOy0tYnMtZW1waGFzaXMtY29sb3ItcmdiOjI1NSwyNTUsMjU1Oy0tYnMtc2Vjb25kYXJ5LWNvbG9yOnJnYmEoMjIyLCAyMjYsIDIzMCwgMC43NSk7LS1icy1zZWNvbmRhcnktY29sb3ItcmdiOjIyMiwyMjYsMjMwOy0tYnMtc2Vjb25kYXJ5LWJnOiMzNDNhNDA7LS1icy1zZWNvbmRhcnktYmctcmdiOjUyLDU4LDY0Oy0tYnMtdGVydGlhcnktY29sb3I6cmdiYSgyMjIsIDIyNiwgMjMwLCAwLjUpOy0tYnMtdGVydGlhcnktY29sb3ItcmdiOjIyMiwyMjYsMjMwOy0tYnMtdGVydGlhcnktYmc6IzJiMzAzNTstLWJzLXRlcnRpYXJ5LWJnLXJnYjo0Myw0OCw1MzstLWJzLXByaW1hcnktdGV4dC1lbXBoYXNpczojNmVhOGZlOy0tYnMtc2Vjb25kYXJ5LXRleHQtZW1waGFzaXM6I2E3YWNiMTstLWJzLXN1Y2Nlc3MtdGV4dC1lbXBoYXNpczojNzViNzk4Oy0tYnMtaW5mby10ZXh0LWVtcGhhc2lzOiM2ZWRmZjY7LS1icy13YXJuaW5nLXRleHQtZW1waGFzaXM6I2ZmZGE2YTstLWJzLWRhbmdlci10ZXh0LWVtcGhhc2lzOiNlYTg2OGY7LS1icy1saWdodC10ZXh0LWVtcGhhc2lzOiNmOGY5ZmE7LS1icy1kYXJrLXRleHQtZW1waGFzaXM6I2RlZTJlNjstLWJzLXByaW1hcnktYmctc3VidGxlOiMwMzE2MzM7LS1icy1zZWNvbmRhcnktYmctc3VidGxlOiMxNjE3MTk7LS1icy1zdWNjZXNzLWJnLXN1YnRsZTojMDUxYjExOy0tYnMtaW5mby1iZy1zdWJ0bGU6IzAzMjgzMDstLWJzLXdhcm5pbmctYmctc3VidGxlOiMzMzI3MDE7LS1icy1kYW5nZXItYmctc3VidGxlOiMyYzBiMGU7LS1icy1saWdodC1iZy1zdWJ0bGU6IzM0M2E0MDstLWJzLWRhcmstYmctc3VidGxlOiMxYTFkMjA7LS1icy1wcmltYXJ5LWJvcmRlci1zdWJ0bGU6IzA4NDI5ODstLWJzLXNlY29uZGFyeS1ib3JkZXItc3VidGxlOiM0MTQ2NGI7LS1icy1zdWNjZXNzLWJvcmRlci1zdWJ0bGU6IzBmNTEzMjstLWJzLWluZm8tYm9yZGVyLXN1YnRsZTojMDg3OTkwOy0tYnMtd2FybmluZy1ib3JkZXItc3VidGxlOiM5OTc0MDQ7LS1icy1kYW5nZXItYm9yZGVyLXN1YnRsZTojODQyMDI5Oy0tYnMtbGlnaHQtYm9yZGVyLXN1YnRsZTojNDk1MDU3Oy0tYnMtZGFyay1ib3JkZXItc3VidGxlOiMzNDNhNDA7LS1icy1oZWFkaW5nLWNvbG9yOmluaGVyaXQ7LS1icy1saW5rLWNvbG9yOiM2ZWE4ZmU7LS1icy1saW5rLWhvdmVyLWNvbG9yOiM4YmI5ZmU7LS1icy1saW5rLWNvbG9yLXJnYjoxMTAsMTY4LDI1NDstLWJzLWxpbmstaG92ZXItY29sb3ItcmdiOjEzOSwxODUsMjU0Oy0tYnMtY29kZS1jb2xvcjojZTY4NWI1Oy0tYnMtaGlnaGxpZ2h0LWNvbG9yOiNkZWUyZTY7LS1icy1oaWdobGlnaHQtYmc6IzY2NGQwMzstLWJzLWJvcmRlci1jb2xvcjojNDk1MDU3Oy0tYnMtYm9yZGVyLWNvbG9yLXRyYW5zbHVjZW50OnJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7LS1icy1mb3JtLXZhbGlkLWNvbG9yOiM3NWI3OTg7LS1icy1mb3JtLXZhbGlkLWJvcmRlci1jb2xvcjojNzViNzk4Oy0tYnMtZm9ybS1pbnZhbGlkLWNvbG9yOiNlYTg2OGY7LS1icy1mb3JtLWludmFsaWQtYm9yZGVyLWNvbG9yOiNlYTg2OGZ9Kiw6OmFmdGVyLDo6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246bm8tcHJlZmVyZW5jZSl7OnJvb3R7c2Nyb2xsLWJlaGF2aW9yOnNtb290aH19Ym9keXttYXJnaW46MDtmb250LWZhbWlseTp2YXIoLS1icy1ib2R5LWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tYnMtYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWJzLWJvZHktbGluZS1oZWlnaHQpO2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpO3RleHQtYWxpZ246dmFyKC0tYnMtYm9keS10ZXh0LWFsaWduKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ocnttYXJnaW46MXJlbSAwO2NvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Ym9yZGVyLXRvcDp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHNvbGlkO29wYWNpdHk6LjI1fS5oMSwuaDIsLmgzLC5oNCwuaDUsLmg2LGgxLGgyLGgzLGg0LGg1LGg2e21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOi41cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjI7Y29sb3I6dmFyKC0tYnMtaGVhZGluZy1jb2xvcil9LmgxLGgxe2ZvbnQtc2l6ZTpjYWxjKDEuMzc1cmVtICsgMS41dncpfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmgxLGgxe2ZvbnQtc2l6ZToyLjVyZW19fS5oMixoMntmb250LXNpemU6Y2FsYygxLjMyNXJlbSArIC45dncpfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmgyLGgye2ZvbnQtc2l6ZToycmVtfX0uaDMsaDN7Zm9udC1zaXplOmNhbGMoMS4zcmVtICsgLjZ2dyl9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuaDMsaDN7Zm9udC1zaXplOjEuNzVyZW19fS5oNCxoNHtmb250LXNpemU6Y2FsYygxLjI3NXJlbSArIC4zdncpfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7Lmg0LGg0e2ZvbnQtc2l6ZToxLjVyZW19fS5oNSxoNXtmb250LXNpemU6MS4yNXJlbX0uaDYsaDZ7Zm9udC1zaXplOjFyZW19cHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxcmVtfWFiYnJbdGl0bGVdey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7Y3Vyc29yOmhlbHA7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZTt0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZX1hZGRyZXNze21hcmdpbi1ib3R0b206MXJlbTtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDppbmhlcml0fW9sLHVse3BhZGRpbmctbGVmdDoycmVtfWRsLG9sLHVse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFyZW19b2wgb2wsb2wgdWwsdWwgb2wsdWwgdWx7bWFyZ2luLWJvdHRvbTowfWR0e2ZvbnQtd2VpZ2h0OjcwMH1kZHttYXJnaW4tYm90dG9tOi41cmVtO21hcmdpbi1sZWZ0OjB9YmxvY2txdW90ZXttYXJnaW46MCAwIDFyZW19YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfS5zbWFsbCxzbWFsbHtmb250LXNpemU6Ljg3NWVtfS5tYXJrLG1hcmt7cGFkZGluZzouMTg3NWVtO2NvbG9yOnZhcigtLWJzLWhpZ2hsaWdodC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1oaWdobGlnaHQtYmcpfXN1YixzdXB7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi43NWVtO2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX1he2NvbG9yOnJnYmEodmFyKC0tYnMtbGluay1jb2xvci1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmhvdmVyey0tYnMtbGluay1jb2xvci1yZ2I6dmFyKC0tYnMtbGluay1ob3Zlci1jb2xvci1yZ2IpfWE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pLGE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pOmhvdmVye2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6dmFyKC0tYnMtZm9udC1tb25vc3BhY2UpO2ZvbnQtc2l6ZToxZW19cHJle2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbTtvdmVyZmxvdzphdXRvO2ZvbnQtc2l6ZTouODc1ZW19cHJlIGNvZGV7Zm9udC1zaXplOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDt3b3JkLWJyZWFrOm5vcm1hbH1jb2Rle2ZvbnQtc2l6ZTouODc1ZW07Y29sb3I6dmFyKC0tYnMtY29kZS1jb2xvcik7d29yZC13cmFwOmJyZWFrLXdvcmR9YT5jb2Rle2NvbG9yOmluaGVyaXR9a2Jke3BhZGRpbmc6LjE4NzVyZW0gLjM3NXJlbTtmb250LXNpemU6Ljg3NWVtO2NvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7Ym9yZGVyLXJhZGl1czouMjVyZW19a2JkIGtiZHtwYWRkaW5nOjA7Zm9udC1zaXplOjFlbX1maWd1cmV7bWFyZ2luOjAgMCAxcmVtfWltZyxzdmd7dmVydGljYWwtYWxpZ246bWlkZGxlfXRhYmxle2NhcHRpb24tc2lkZTpib3R0b207Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWNhcHRpb257cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1ib3R0b206LjVyZW07Y29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWNvbG9yKTt0ZXh0LWFsaWduOmxlZnR9dGh7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtYWxpZ246LXdlYmtpdC1tYXRjaC1wYXJlbnR9dGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdHJ7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowfWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfWJ1dHRvbntib3JkZXItcmFkaXVzOjB9YnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTowfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfXNlbGVjdHt3b3JkLXdyYXA6bm9ybWFsfXNlbGVjdDpkaXNhYmxlZHtvcGFjaXR5OjF9W2xpc3RdOm5vdChbdHlwZT1kYXRlXSk6bm90KFt0eXBlPWRhdGV0aW1lLWxvY2FsXSk6bm90KFt0eXBlPW1vbnRoXSk6bm90KFt0eXBlPXdlZWtdKTpub3QoW3R5cGU9dGltZV0pOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lIWltcG9ydGFudH1bdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdLGJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufVt0eXBlPWJ1dHRvbl06bm90KDpkaXNhYmxlZCksW3R5cGU9cmVzZXRdOm5vdCg6ZGlzYWJsZWQpLFt0eXBlPXN1Ym1pdF06bm90KDpkaXNhYmxlZCksYnV0dG9uOm5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfTo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyLXN0eWxlOm5vbmV9dGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsfWZpZWxkc2V0e21pbi13aWR0aDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MH1sZWdlbmR7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO3BhZGRpbmc6MDttYXJnaW4tYm90dG9tOi41cmVtO2ZvbnQtc2l6ZTpjYWxjKDEuMjc1cmVtICsgLjN2dyk7bGluZS1oZWlnaHQ6aW5oZXJpdH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe2xlZ2VuZHtmb250LXNpemU6MS41cmVtfX1sZWdlbmQrKntjbGVhcjpsZWZ0fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlciw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZSw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC10ZXh0LDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGR7cGFkZGluZzowfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWNvbG9yLXN3YXRjaC13cmFwcGVye3BhZGRpbmc6MH06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2ZvbnQ6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udDppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259b3V0cHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfWlmcmFtZXtib3JkZXI6MH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtO2N1cnNvcjpwb2ludGVyfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmxlYWR7Zm9udC1zaXplOjEuMjVyZW07Zm9udC13ZWlnaHQ6MzAwfS5kaXNwbGF5LTF7Zm9udC1zaXplOmNhbGMoMS42MjVyZW0gKyA0LjV2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5kaXNwbGF5LTF7Zm9udC1zaXplOjVyZW19fS5kaXNwbGF5LTJ7Zm9udC1zaXplOmNhbGMoMS41NzVyZW0gKyAzLjl2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5kaXNwbGF5LTJ7Zm9udC1zaXplOjQuNXJlbX19LmRpc3BsYXktM3tmb250LXNpemU6Y2FsYygxLjUyNXJlbSArIDMuM3Z3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmRpc3BsYXktM3tmb250LXNpemU6NHJlbX19LmRpc3BsYXktNHtmb250LXNpemU6Y2FsYygxLjQ3NXJlbSArIDIuN3Z3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmRpc3BsYXktNHtmb250LXNpemU6My41cmVtfX0uZGlzcGxheS01e2ZvbnQtc2l6ZTpjYWxjKDEuNDI1cmVtICsgMi4xdncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuZGlzcGxheS01e2ZvbnQtc2l6ZTozcmVtfX0uZGlzcGxheS02e2ZvbnQtc2l6ZTpjYWxjKDEuMzc1cmVtICsgMS41dncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuZGlzcGxheS02e2ZvbnQtc2l6ZToyLjVyZW19fS5saXN0LXVuc3R5bGVke3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1pbmxpbmV7cGFkZGluZy1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZS1pdGVte2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0Oi41cmVtfS5pbml0aWFsaXNte2ZvbnQtc2l6ZTouODc1ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5ibG9ja3F1b3Rle21hcmdpbi1ib3R0b206MXJlbTtmb250LXNpemU6MS4yNXJlbX0uYmxvY2txdW90ZT46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmJsb2NrcXVvdGUtZm9vdGVye21hcmdpbi10b3A6LTFyZW07bWFyZ2luLWJvdHRvbToxcmVtO2ZvbnQtc2l6ZTouODc1ZW07Y29sb3I6IzZjNzU3ZH0uYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZXtjb250ZW50OiLigJTCoCJ9LmltZy1mbHVpZHttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uaW1nLXRodW1ibmFpbHtwYWRkaW5nOi4yNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JvcmRlcjp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uZmlndXJle2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5maWd1cmUtaW1ne21hcmdpbi1ib3R0b206LjVyZW07bGluZS1oZWlnaHQ6MX0uZmlndXJlLWNhcHRpb257Zm9udC1zaXplOi44NzVlbTtjb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpfS5jb250YWluZXIsLmNvbnRhaW5lci1mbHVpZCwuY29udGFpbmVyLWxnLC5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbSwuY29udGFpbmVyLXhsLC5jb250YWluZXIteHhsey0tYnMtZ3V0dGVyLXg6MS41cmVtOy0tYnMtZ3V0dGVyLXk6MDt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAuNSk7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tYnMtZ3V0dGVyLXgpICogLjUpO21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jb250YWluZXIsLmNvbnRhaW5lci1zbXttYXgtd2lkdGg6NTQwcHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY29udGFpbmVyLC5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbXttYXgtd2lkdGg6NzIwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29udGFpbmVyLC5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNte21heC13aWR0aDo5NjBweH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY29udGFpbmVyLC5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNtLC5jb250YWluZXIteGx7bWF4LXdpZHRoOjExNDBweH19QG1lZGlhIChtaW4td2lkdGg6MTQwMHB4KXsuY29udGFpbmVyLC5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNtLC5jb250YWluZXIteGwsLmNvbnRhaW5lci14eGx7bWF4LXdpZHRoOjEzMjBweH19OnJvb3R7LS1icy1icmVha3BvaW50LXhzOjA7LS1icy1icmVha3BvaW50LXNtOjU3NnB4Oy0tYnMtYnJlYWtwb2ludC1tZDo3NjhweDstLWJzLWJyZWFrcG9pbnQtbGc6OTkycHg7LS1icy1icmVha3BvaW50LXhsOjEyMDBweDstLWJzLWJyZWFrcG9pbnQteHhsOjE0MDBweH0ucm93ey0tYnMtZ3V0dGVyLXg6MS41cmVtOy0tYnMtZ3V0dGVyLXk6MDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDpjYWxjKC0xICogdmFyKC0tYnMtZ3V0dGVyLXkpKTttYXJnaW4tcmlnaHQ6Y2FsYygtLjUgKiB2YXIoLS1icy1ndXR0ZXIteCkpO21hcmdpbi1sZWZ0OmNhbGMoLS41ICogdmFyKC0tYnMtZ3V0dGVyLXgpKX0ucm93Pip7ZmxleC1zaHJpbms6MDt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAuNSk7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tYnMtZ3V0dGVyLXgpICogLjUpO21hcmdpbi10b3A6dmFyKC0tYnMtZ3V0dGVyLXkpfS5jb2x7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5yb3ctY29scy00Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LnJvdy1jb2xzLTU+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjIwJX0ucm93LWNvbHMtNj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy0wLC5neC0wey0tYnMtZ3V0dGVyLXg6MH0uZy0wLC5neS0wey0tYnMtZ3V0dGVyLXk6MH0uZy0xLC5neC0xey0tYnMtZ3V0dGVyLXg6MC4yNXJlbX0uZy0xLC5neS0xey0tYnMtZ3V0dGVyLXk6MC4yNXJlbX0uZy0yLC5neC0yey0tYnMtZ3V0dGVyLXg6MC41cmVtfS5nLTIsLmd5LTJ7LS1icy1ndXR0ZXIteTowLjVyZW19LmctMywuZ3gtM3stLWJzLWd1dHRlci14OjFyZW19LmctMywuZ3ktM3stLWJzLWd1dHRlci15OjFyZW19LmctNCwuZ3gtNHstLWJzLWd1dHRlci14OjEuNXJlbX0uZy00LC5neS00ey0tYnMtZ3V0dGVyLXk6MS41cmVtfS5nLTUsLmd4LTV7LS1icy1ndXR0ZXIteDozcmVtfS5nLTUsLmd5LTV7LS1icy1ndXR0ZXIteTozcmVtfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY29sLXNte2ZsZXg6MSAwIDAlfS5yb3ctY29scy1zbS1hdXRvPip7ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5yb3ctY29scy1zbS0xPip7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5yb3ctY29scy1zbS0yPip7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LnJvdy1jb2xzLXNtLTM+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjMzLjMzMzMzMzMzJX0ucm93LWNvbHMtc20tND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1zbS01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLXNtLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXNtLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5jb2wtc20tMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtc20tMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXNtLTN7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LmNvbC1zbS00e2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wtc20tNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXNtLTZ7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LmNvbC1zbS03e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wtc20tOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXNtLTl7ZmxleDowIDAgYXV0bzt3aWR0aDo3NSV9LmNvbC1zbS0xMHtmbGV4OjAgMCBhdXRvO3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXNtLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wtc20tMTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5vZmZzZXQtc20tMHttYXJnaW4tbGVmdDowfS5vZmZzZXQtc20tMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXNtLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5vZmZzZXQtc20tM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC1zbS00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXNtLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC1zbS03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXNtLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5vZmZzZXQtc20tOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC1zbS0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC1zbS0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9Lmctc20tMCwuZ3gtc20tMHstLWJzLWd1dHRlci14OjB9Lmctc20tMCwuZ3ktc20tMHstLWJzLWd1dHRlci15OjB9Lmctc20tMSwuZ3gtc20tMXstLWJzLWd1dHRlci14OjAuMjVyZW19Lmctc20tMSwuZ3ktc20tMXstLWJzLWd1dHRlci15OjAuMjVyZW19Lmctc20tMiwuZ3gtc20tMnstLWJzLWd1dHRlci14OjAuNXJlbX0uZy1zbS0yLC5neS1zbS0yey0tYnMtZ3V0dGVyLXk6MC41cmVtfS5nLXNtLTMsLmd4LXNtLTN7LS1icy1ndXR0ZXIteDoxcmVtfS5nLXNtLTMsLmd5LXNtLTN7LS1icy1ndXR0ZXIteToxcmVtfS5nLXNtLTQsLmd4LXNtLTR7LS1icy1ndXR0ZXIteDoxLjVyZW19Lmctc20tNCwuZ3ktc20tNHstLWJzLWd1dHRlci15OjEuNXJlbX0uZy1zbS01LC5neC1zbS01ey0tYnMtZ3V0dGVyLXg6M3JlbX0uZy1zbS01LC5neS1zbS01ey0tYnMtZ3V0dGVyLXk6M3JlbX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb2wtbWR7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLW1kLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLW1kLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLW1kLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMtbWQtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5yb3ctY29scy1tZC00Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LnJvdy1jb2xzLW1kLTU+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjIwJX0ucm93LWNvbHMtbWQtNj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbWQtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1tZC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1tZC0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbWQtM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLW1kLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1tZC01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtbWQtNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLW1kLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1tZC04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtbWQtOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLW1kLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbWQtMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1tZC0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1tZC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1tZC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtbWQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1tZC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LW1kLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1tZC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LW1kLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LW1kLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1tZC0wLC5neC1tZC0wey0tYnMtZ3V0dGVyLXg6MH0uZy1tZC0wLC5neS1tZC0wey0tYnMtZ3V0dGVyLXk6MH0uZy1tZC0xLC5neC1tZC0xey0tYnMtZ3V0dGVyLXg6MC4yNXJlbX0uZy1tZC0xLC5neS1tZC0xey0tYnMtZ3V0dGVyLXk6MC4yNXJlbX0uZy1tZC0yLC5neC1tZC0yey0tYnMtZ3V0dGVyLXg6MC41cmVtfS5nLW1kLTIsLmd5LW1kLTJ7LS1icy1ndXR0ZXIteTowLjVyZW19LmctbWQtMywuZ3gtbWQtM3stLWJzLWd1dHRlci14OjFyZW19LmctbWQtMywuZ3ktbWQtM3stLWJzLWd1dHRlci15OjFyZW19LmctbWQtNCwuZ3gtbWQtNHstLWJzLWd1dHRlci14OjEuNXJlbX0uZy1tZC00LC5neS1tZC00ey0tYnMtZ3V0dGVyLXk6MS41cmVtfS5nLW1kLTUsLmd4LW1kLTV7LS1icy1ndXR0ZXIteDozcmVtfS5nLW1kLTUsLmd5LW1kLTV7LS1icy1ndXR0ZXIteTozcmVtfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNvbC1sZ3tmbGV4OjEgMCAwJX0ucm93LWNvbHMtbGctYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtbGctMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtbGctMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1sZy0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LnJvdy1jb2xzLWxnLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMtbGctNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy1sZy02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1sZy1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30uY29sLWxnLTF7ZmxleDowIDAgYXV0bzt3aWR0aDo4LjMzMzMzMzMzJX0uY29sLWxnLTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1sZy0ze2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5jb2wtbGctNHtmbGV4OjAgMCBhdXRvO3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLWxnLTV7ZmxleDowIDAgYXV0bzt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1sZy02e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5jb2wtbGctN3tmbGV4OjAgMCBhdXRvO3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLWxnLTh7ZmxleDowIDAgYXV0bzt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1sZy05e2ZsZXg6MCAwIGF1dG87d2lkdGg6NzUlfS5jb2wtbGctMTB7ZmxleDowIDAgYXV0bzt3aWR0aDo4My4zMzMzMzMzMyV9LmNvbC1sZy0xMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLWxnLTEye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ub2Zmc2V0LWxnLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LWxnLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMyV9Lm9mZnNldC1sZy0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0ub2Zmc2V0LWxnLTN7bWFyZ2luLWxlZnQ6MjUlfS5vZmZzZXQtbGctNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMyV9Lm9mZnNldC1sZy01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0ub2Zmc2V0LWxnLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtbGctN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMyV9Lm9mZnNldC1sZy04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0ub2Zmc2V0LWxnLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtbGctMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMlfS5vZmZzZXQtbGctMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5nLWxnLTAsLmd4LWxnLTB7LS1icy1ndXR0ZXIteDowfS5nLWxnLTAsLmd5LWxnLTB7LS1icy1ndXR0ZXIteTowfS5nLWxnLTEsLmd4LWxnLTF7LS1icy1ndXR0ZXIteDowLjI1cmVtfS5nLWxnLTEsLmd5LWxnLTF7LS1icy1ndXR0ZXIteTowLjI1cmVtfS5nLWxnLTIsLmd4LWxnLTJ7LS1icy1ndXR0ZXIteDowLjVyZW19LmctbGctMiwuZ3ktbGctMnstLWJzLWd1dHRlci15OjAuNXJlbX0uZy1sZy0zLC5neC1sZy0zey0tYnMtZ3V0dGVyLXg6MXJlbX0uZy1sZy0zLC5neS1sZy0zey0tYnMtZ3V0dGVyLXk6MXJlbX0uZy1sZy00LC5neC1sZy00ey0tYnMtZ3V0dGVyLXg6MS41cmVtfS5nLWxnLTQsLmd5LWxnLTR7LS1icy1ndXR0ZXIteToxLjVyZW19LmctbGctNSwuZ3gtbGctNXstLWJzLWd1dHRlci14OjNyZW19LmctbGctNSwuZ3ktbGctNXstLWJzLWd1dHRlci15OjNyZW19fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNvbC14bHtmbGV4OjEgMCAwJX0ucm93LWNvbHMteGwtYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMteGwtMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMteGwtMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy14bC0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LnJvdy1jb2xzLXhsLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMteGwtNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy14bC02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC14bC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30uY29sLXhsLTF7ZmxleDowIDAgYXV0bzt3aWR0aDo4LjMzMzMzMzMzJX0uY29sLXhsLTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC14bC0ze2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5jb2wteGwtNHtmbGV4OjAgMCBhdXRvO3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLXhsLTV7ZmxleDowIDAgYXV0bzt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC14bC02e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5jb2wteGwtN3tmbGV4OjAgMCBhdXRvO3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLXhsLTh7ZmxleDowIDAgYXV0bzt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC14bC05e2ZsZXg6MCAwIGF1dG87d2lkdGg6NzUlfS5jb2wteGwtMTB7ZmxleDowIDAgYXV0bzt3aWR0aDo4My4zMzMzMzMzMyV9LmNvbC14bC0xMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLXhsLTEye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ub2Zmc2V0LXhsLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LXhsLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMyV9Lm9mZnNldC14bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0ub2Zmc2V0LXhsLTN7bWFyZ2luLWxlZnQ6MjUlfS5vZmZzZXQteGwtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMyV9Lm9mZnNldC14bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0ub2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQteGwtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMyV9Lm9mZnNldC14bC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0ub2Zmc2V0LXhsLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQteGwtMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMlfS5vZmZzZXQteGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5nLXhsLTAsLmd4LXhsLTB7LS1icy1ndXR0ZXIteDowfS5nLXhsLTAsLmd5LXhsLTB7LS1icy1ndXR0ZXIteTowfS5nLXhsLTEsLmd4LXhsLTF7LS1icy1ndXR0ZXIteDowLjI1cmVtfS5nLXhsLTEsLmd5LXhsLTF7LS1icy1ndXR0ZXIteTowLjI1cmVtfS5nLXhsLTIsLmd4LXhsLTJ7LS1icy1ndXR0ZXIteDowLjVyZW19LmcteGwtMiwuZ3kteGwtMnstLWJzLWd1dHRlci15OjAuNXJlbX0uZy14bC0zLC5neC14bC0zey0tYnMtZ3V0dGVyLXg6MXJlbX0uZy14bC0zLC5neS14bC0zey0tYnMtZ3V0dGVyLXk6MXJlbX0uZy14bC00LC5neC14bC00ey0tYnMtZ3V0dGVyLXg6MS41cmVtfS5nLXhsLTQsLmd5LXhsLTR7LS1icy1ndXR0ZXIteToxLjVyZW19LmcteGwtNSwuZ3gteGwtNXstLWJzLWd1dHRlci14OjNyZW19LmcteGwtNSwuZ3kteGwtNXstLWJzLWd1dHRlci15OjNyZW19fUBtZWRpYSAobWluLXdpZHRoOjE0MDBweCl7LmNvbC14eGx7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLXh4bC1hdXRvPip7ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5yb3ctY29scy14eGwtMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMteHhsLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMteHhsLTM+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjMzLjMzMzMzMzMzJX0ucm93LWNvbHMteHhsLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMteHhsLTU+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjIwJX0ucm93LWNvbHMteHhsLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXh4bC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30uY29sLXh4bC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC14eGwtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXh4bC0ze2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5jb2wteHhsLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC14eGwtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXh4bC02e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5jb2wteHhsLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC14eGwtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXh4bC05e2ZsZXg6MCAwIGF1dG87d2lkdGg6NzUlfS5jb2wteHhsLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wteHhsLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteHhsLTEye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ub2Zmc2V0LXh4bC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC14eGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXh4bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXh4bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXh4bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC14eGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5nLXh4bC0wLC5neC14eGwtMHstLWJzLWd1dHRlci14OjB9LmcteHhsLTAsLmd5LXh4bC0wey0tYnMtZ3V0dGVyLXk6MH0uZy14eGwtMSwuZ3gteHhsLTF7LS1icy1ndXR0ZXIteDowLjI1cmVtfS5nLXh4bC0xLC5neS14eGwtMXstLWJzLWd1dHRlci15OjAuMjVyZW19LmcteHhsLTIsLmd4LXh4bC0yey0tYnMtZ3V0dGVyLXg6MC41cmVtfS5nLXh4bC0yLC5neS14eGwtMnstLWJzLWd1dHRlci15OjAuNXJlbX0uZy14eGwtMywuZ3gteHhsLTN7LS1icy1ndXR0ZXIteDoxcmVtfS5nLXh4bC0zLC5neS14eGwtM3stLWJzLWd1dHRlci15OjFyZW19LmcteHhsLTQsLmd4LXh4bC00ey0tYnMtZ3V0dGVyLXg6MS41cmVtfS5nLXh4bC00LC5neS14eGwtNHstLWJzLWd1dHRlci15OjEuNXJlbX0uZy14eGwtNSwuZ3gteHhsLTV7LS1icy1ndXR0ZXIteDozcmVtfS5nLXh4bC01LC5neS14eGwtNXstLWJzLWd1dHRlci15OjNyZW19fS50YWJsZXstLWJzLXRhYmxlLWNvbG9yLXR5cGU6aW5pdGlhbDstLWJzLXRhYmxlLWJnLXR5cGU6aW5pdGlhbDstLWJzLXRhYmxlLWNvbG9yLXN0YXRlOmluaXRpYWw7LS1icy10YWJsZS1iZy1zdGF0ZTppbml0aWFsOy0tYnMtdGFibGUtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtdGFibGUtYmc6dmFyKC0tYnMtYm9keS1iZyk7LS1icy10YWJsZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtYm9yZGVyLWNvbG9yKTstLWJzLXRhYmxlLWFjY2VudC1iZzp0cmFuc3BhcmVudDstLWJzLXRhYmxlLXN0cmlwZWQtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtdGFibGUtc3RyaXBlZC1iZzpyZ2JhKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksIDAuMDUpOy0tYnMtdGFibGUtYWN0aXZlLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTstLWJzLXRhYmxlLWFjdGl2ZS1iZzpyZ2JhKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksIDAuMSk7LS1icy10YWJsZS1ob3Zlci1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy10YWJsZS1ob3Zlci1iZzpyZ2JhKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksIDAuMDc1KTt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MXJlbTt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXRhYmxlLWJvcmRlci1jb2xvcil9LnRhYmxlPjpub3QoY2FwdGlvbik+Kj4qe3BhZGRpbmc6LjVyZW0gLjVyZW07Y29sb3I6dmFyKC0tYnMtdGFibGUtY29sb3Itc3RhdGUsdmFyKC0tYnMtdGFibGUtY29sb3ItdHlwZSx2YXIoLS1icy10YWJsZS1jb2xvcikpKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXRhYmxlLWJnKTtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWJzLWJvcmRlci13aWR0aCk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCA5OTk5cHggdmFyKC0tYnMtdGFibGUtYmctc3RhdGUsdmFyKC0tYnMtdGFibGUtYmctdHlwZSx2YXIoLS1icy10YWJsZS1hY2NlbnQtYmcpKSl9LnRhYmxlPnRib2R5e3ZlcnRpY2FsLWFsaWduOmluaGVyaXR9LnRhYmxlPnRoZWFke3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0udGFibGUtZ3JvdXAtZGl2aWRlcntib3JkZXItdG9wOmNhbGModmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAqIDIpIHNvbGlkIGN1cnJlbnRjb2xvcn0uY2FwdGlvbi10b3B7Y2FwdGlvbi1zaWRlOnRvcH0udGFibGUtc20+Om5vdChjYXB0aW9uKT4qPip7cGFkZGluZzouMjVyZW0gLjI1cmVtfS50YWJsZS1ib3JkZXJlZD46bm90KGNhcHRpb24pPip7Ym9yZGVyLXdpZHRoOnZhcigtLWJzLWJvcmRlci13aWR0aCkgMH0udGFibGUtYm9yZGVyZWQ+Om5vdChjYXB0aW9uKT4qPip7Ym9yZGVyLXdpZHRoOjAgdmFyKC0tYnMtYm9yZGVyLXdpZHRoKX0udGFibGUtYm9yZGVybGVzcz46bm90KGNhcHRpb24pPio+Kntib3JkZXItYm90dG9tLXdpZHRoOjB9LnRhYmxlLWJvcmRlcmxlc3M+Om5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3Atd2lkdGg6MH0udGFibGUtc3RyaXBlZD50Ym9keT50cjpudGgtb2YtdHlwZShvZGQpPip7LS1icy10YWJsZS1jb2xvci10eXBlOnZhcigtLWJzLXRhYmxlLXN0cmlwZWQtY29sb3IpOy0tYnMtdGFibGUtYmctdHlwZTp2YXIoLS1icy10YWJsZS1zdHJpcGVkLWJnKX0udGFibGUtc3RyaXBlZC1jb2x1bW5zPjpub3QoY2FwdGlvbik+dHI+Om50aC1jaGlsZCgybil7LS1icy10YWJsZS1jb2xvci10eXBlOnZhcigtLWJzLXRhYmxlLXN0cmlwZWQtY29sb3IpOy0tYnMtdGFibGUtYmctdHlwZTp2YXIoLS1icy10YWJsZS1zdHJpcGVkLWJnKX0udGFibGUtYWN0aXZley0tYnMtdGFibGUtY29sb3Itc3RhdGU6dmFyKC0tYnMtdGFibGUtYWN0aXZlLWNvbG9yKTstLWJzLXRhYmxlLWJnLXN0YXRlOnZhcigtLWJzLXRhYmxlLWFjdGl2ZS1iZyl9LnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPip7LS1icy10YWJsZS1jb2xvci1zdGF0ZTp2YXIoLS1icy10YWJsZS1ob3Zlci1jb2xvcik7LS1icy10YWJsZS1iZy1zdGF0ZTp2YXIoLS1icy10YWJsZS1ob3Zlci1iZyl9LnRhYmxlLXByaW1hcnl7LS1icy10YWJsZS1jb2xvcjojMDAwOy0tYnMtdGFibGUtYmc6I2NmZTJmZjstLWJzLXRhYmxlLWJvcmRlci1jb2xvcjojYTZiNWNjOy0tYnMtdGFibGUtc3RyaXBlZC1iZzojYzVkN2YyOy0tYnMtdGFibGUtc3RyaXBlZC1jb2xvcjojMDAwOy0tYnMtdGFibGUtYWN0aXZlLWJnOiNiYWNiZTY7LS1icy10YWJsZS1hY3RpdmUtY29sb3I6IzAwMDstLWJzLXRhYmxlLWhvdmVyLWJnOiNiZmQxZWM7LS1icy10YWJsZS1ob3Zlci1jb2xvcjojMDAwO2NvbG9yOnZhcigtLWJzLXRhYmxlLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tYnMtdGFibGUtYm9yZGVyLWNvbG9yKX0udGFibGUtc2Vjb25kYXJ5ey0tYnMtdGFibGUtY29sb3I6IzAwMDstLWJzLXRhYmxlLWJnOiNlMmUzZTU7LS1icy10YWJsZS1ib3JkZXItY29sb3I6I2I1YjZiNzstLWJzLXRhYmxlLXN0cmlwZWQtYmc6I2Q3ZDhkYTstLWJzLXRhYmxlLXN0cmlwZWQtY29sb3I6IzAwMDstLWJzLXRhYmxlLWFjdGl2ZS1iZzojY2JjY2NlOy0tYnMtdGFibGUtYWN0aXZlLWNvbG9yOiMwMDA7LS1icy10YWJsZS1ob3Zlci1iZzojZDFkMmQ0Oy0tYnMtdGFibGUtaG92ZXItY29sb3I6IzAwMDtjb2xvcjp2YXIoLS1icy10YWJsZS1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXRhYmxlLWJvcmRlci1jb2xvcil9LnRhYmxlLXN1Y2Nlc3N7LS1icy10YWJsZS1jb2xvcjojMDAwOy0tYnMtdGFibGUtYmc6I2QxZTdkZDstLWJzLXRhYmxlLWJvcmRlci1jb2xvcjojYTdiOWIxOy0tYnMtdGFibGUtc3RyaXBlZC1iZzojYzdkYmQyOy0tYnMtdGFibGUtc3RyaXBlZC1jb2xvcjojMDAwOy0tYnMtdGFibGUtYWN0aXZlLWJnOiNiY2QwYzc7LS1icy10YWJsZS1hY3RpdmUtY29sb3I6IzAwMDstLWJzLXRhYmxlLWhvdmVyLWJnOiNjMWQ2Y2M7LS1icy10YWJsZS1ob3Zlci1jb2xvcjojMDAwO2NvbG9yOnZhcigtLWJzLXRhYmxlLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tYnMtdGFibGUtYm9yZGVyLWNvbG9yKX0udGFibGUtaW5mb3stLWJzLXRhYmxlLWNvbG9yOiMwMDA7LS1icy10YWJsZS1iZzojY2ZmNGZjOy0tYnMtdGFibGUtYm9yZGVyLWNvbG9yOiNhNmMzY2E7LS1icy10YWJsZS1zdHJpcGVkLWJnOiNjNWU4ZWY7LS1icy10YWJsZS1zdHJpcGVkLWNvbG9yOiMwMDA7LS1icy10YWJsZS1hY3RpdmUtYmc6I2JhZGNlMzstLWJzLXRhYmxlLWFjdGl2ZS1jb2xvcjojMDAwOy0tYnMtdGFibGUtaG92ZXItYmc6I2JmZTJlOTstLWJzLXRhYmxlLWhvdmVyLWNvbG9yOiMwMDA7Y29sb3I6dmFyKC0tYnMtdGFibGUtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1icy10YWJsZS1ib3JkZXItY29sb3IpfS50YWJsZS13YXJuaW5ney0tYnMtdGFibGUtY29sb3I6IzAwMDstLWJzLXRhYmxlLWJnOiNmZmYzY2Q7LS1icy10YWJsZS1ib3JkZXItY29sb3I6I2NjYzJhNDstLWJzLXRhYmxlLXN0cmlwZWQtYmc6I2YyZTdjMzstLWJzLXRhYmxlLXN0cmlwZWQtY29sb3I6IzAwMDstLWJzLXRhYmxlLWFjdGl2ZS1iZzojZTZkYmI5Oy0tYnMtdGFibGUtYWN0aXZlLWNvbG9yOiMwMDA7LS1icy10YWJsZS1ob3Zlci1iZzojZWNlMWJlOy0tYnMtdGFibGUtaG92ZXItY29sb3I6IzAwMDtjb2xvcjp2YXIoLS1icy10YWJsZS1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXRhYmxlLWJvcmRlci1jb2xvcil9LnRhYmxlLWRhbmdlcnstLWJzLXRhYmxlLWNvbG9yOiMwMDA7LS1icy10YWJsZS1iZzojZjhkN2RhOy0tYnMtdGFibGUtYm9yZGVyLWNvbG9yOiNjNmFjYWU7LS1icy10YWJsZS1zdHJpcGVkLWJnOiNlY2NjY2Y7LS1icy10YWJsZS1zdHJpcGVkLWNvbG9yOiMwMDA7LS1icy10YWJsZS1hY3RpdmUtYmc6I2RmYzJjNDstLWJzLXRhYmxlLWFjdGl2ZS1jb2xvcjojMDAwOy0tYnMtdGFibGUtaG92ZXItYmc6I2U1YzdjYTstLWJzLXRhYmxlLWhvdmVyLWNvbG9yOiMwMDA7Y29sb3I6dmFyKC0tYnMtdGFibGUtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1icy10YWJsZS1ib3JkZXItY29sb3IpfS50YWJsZS1saWdodHstLWJzLXRhYmxlLWNvbG9yOiMwMDA7LS1icy10YWJsZS1iZzojZjhmOWZhOy0tYnMtdGFibGUtYm9yZGVyLWNvbG9yOiNjNmM3Yzg7LS1icy10YWJsZS1zdHJpcGVkLWJnOiNlY2VkZWU7LS1icy10YWJsZS1zdHJpcGVkLWNvbG9yOiMwMDA7LS1icy10YWJsZS1hY3RpdmUtYmc6I2RmZTBlMTstLWJzLXRhYmxlLWFjdGl2ZS1jb2xvcjojMDAwOy0tYnMtdGFibGUtaG92ZXItYmc6I2U1ZTZlNzstLWJzLXRhYmxlLWhvdmVyLWNvbG9yOiMwMDA7Y29sb3I6dmFyKC0tYnMtdGFibGUtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1icy10YWJsZS1ib3JkZXItY29sb3IpfS50YWJsZS1kYXJrey0tYnMtdGFibGUtY29sb3I6I2ZmZjstLWJzLXRhYmxlLWJnOiMyMTI1Mjk7LS1icy10YWJsZS1ib3JkZXItY29sb3I6IzRkNTE1NDstLWJzLXRhYmxlLXN0cmlwZWQtYmc6IzJjMzAzNDstLWJzLXRhYmxlLXN0cmlwZWQtY29sb3I6I2ZmZjstLWJzLXRhYmxlLWFjdGl2ZS1iZzojMzczYjNlOy0tYnMtdGFibGUtYWN0aXZlLWNvbG9yOiNmZmY7LS1icy10YWJsZS1ob3Zlci1iZzojMzIzNTM5Oy0tYnMtdGFibGUtaG92ZXItY29sb3I6I2ZmZjtjb2xvcjp2YXIoLS1icy10YWJsZS1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXRhYmxlLWJvcmRlci1jb2xvcil9LnRhYmxlLXJlc3BvbnNpdmV7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofUBtZWRpYSAobWF4LXdpZHRoOjU3NS45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS1zbXtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS1tZHtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9fUBtZWRpYSAobWF4LXdpZHRoOjk5MS45OHB4KXsudGFibGUtcmVzcG9uc2l2ZS1sZ3tvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9fUBtZWRpYSAobWF4LXdpZHRoOjExOTkuOThweCl7LnRhYmxlLXJlc3BvbnNpdmUteGx7b3ZlcmZsb3cteDphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofX1AbWVkaWEgKG1heC13aWR0aDoxMzk5Ljk4cHgpey50YWJsZS1yZXNwb25zaXZlLXh4bHtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9fS5mb3JtLWxhYmVse21hcmdpbi1ib3R0b206LjVyZW19LmNvbC1mb3JtLWxhYmVse3BhZGRpbmctdG9wOmNhbGMoLjM3NXJlbSArIHZhcigtLWJzLWJvcmRlci13aWR0aCkpO3BhZGRpbmctYm90dG9tOmNhbGMoLjM3NXJlbSArIHZhcigtLWJzLWJvcmRlci13aWR0aCkpO21hcmdpbi1ib3R0b206MDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjV9LmNvbC1mb3JtLWxhYmVsLWxne3BhZGRpbmctdG9wOmNhbGMoLjVyZW0gKyB2YXIoLS1icy1ib3JkZXItd2lkdGgpKTtwYWRkaW5nLWJvdHRvbTpjYWxjKC41cmVtICsgdmFyKC0tYnMtYm9yZGVyLXdpZHRoKSk7Zm9udC1zaXplOjEuMjVyZW19LmNvbC1mb3JtLWxhYmVsLXNte3BhZGRpbmctdG9wOmNhbGMoLjI1cmVtICsgdmFyKC0tYnMtYm9yZGVyLXdpZHRoKSk7cGFkZGluZy1ib3R0b206Y2FsYyguMjVyZW0gKyB2YXIoLS1icy1ib3JkZXItd2lkdGgpKTtmb250LXNpemU6Ljg3NXJlbX0uZm9ybS10ZXh0e21hcmdpbi10b3A6LjI1cmVtO2ZvbnQtc2l6ZTouODc1ZW07Y29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWNvbG9yKX0uZm9ybS1jb250cm9se2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOi4zNzVyZW0gLjc1cmVtO2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYm9keS1iZyk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuZm9ybS1jb250cm9se3RyYW5zaXRpb246bm9uZX19LmZvcm0tY29udHJvbFt0eXBlPWZpbGVde292ZXJmbG93OmhpZGRlbn0uZm9ybS1jb250cm9sW3R5cGU9ZmlsZV06bm90KDpkaXNhYmxlZCk6bm90KFtyZWFkb25seV0pe2N1cnNvcjpwb2ludGVyfS5mb3JtLWNvbnRyb2w6Zm9jdXN7Y29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1ib2R5LWJnKTtib3JkZXItY29sb3I6Izg2YjdmZTtvdXRsaW5lOjA7Ym94LXNoYWRvdzowIDAgMCAuMjVyZW0gcmdiYSgxMywxMTAsMjUzLC4yNSl9LmZvcm0tY29udHJvbDo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVle21pbi13aWR0aDo4NXB4O2hlaWdodDoxLjVlbTttYXJnaW46MH0uZm9ybS1jb250cm9sOjotd2Via2l0LWRhdGV0aW1lLWVkaXR7ZGlzcGxheTpibG9jaztwYWRkaW5nOjB9LmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpO29wYWNpdHk6MX0uZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpO29wYWNpdHk6MX0uZm9ybS1jb250cm9sOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnKTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257cGFkZGluZzouMzc1cmVtIC43NXJlbTttYXJnaW46LS4zNzVyZW0gLS43NXJlbTstd2Via2l0LW1hcmdpbi1lbmQ6Ljc1cmVtO21hcmdpbi1pbmxpbmUtZW5kOi43NXJlbTtjb2xvcjp2YXIoLS1icy1ib2R5LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXRlcnRpYXJ5LWJnKTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1jb2xvcjppbmhlcml0O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MDtib3JkZXItaW5saW5lLWVuZC13aWR0aDp2YXIoLS1icy1ib3JkZXItd2lkdGgpO2JvcmRlci1yYWRpdXM6MDstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0fS5mb3JtLWNvbnRyb2w6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue3BhZGRpbmc6LjM3NXJlbSAuNzVyZW07bWFyZ2luOi0uMzc1cmVtIC0uNzVyZW07LXdlYmtpdC1tYXJnaW4tZW5kOi43NXJlbTttYXJnaW4taW5saW5lLWVuZDouNzVyZW07Y29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy10ZXJ0aWFyeS1iZyk7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItY29sb3I6aW5oZXJpdDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTtib3JkZXItcmFkaXVzOjA7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmZvcm0tY29udHJvbDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5mb3JtLWNvbnRyb2w6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue3RyYW5zaXRpb246bm9uZX19LmZvcm0tY29udHJvbDpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoW3JlYWRvbmx5XSk6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnKX0uZm9ybS1jb250cm9sOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbcmVhZG9ubHldKTo6ZmlsZS1zZWxlY3Rvci1idXR0b257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktYmcpfS5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOi4zNzVyZW0gMDttYXJnaW4tYm90dG9tOjA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOnNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDp2YXIoLS1icy1ib3JkZXItd2lkdGgpIDB9LmZvcm0tY29udHJvbC1wbGFpbnRleHQ6Zm9jdXN7b3V0bGluZTowfS5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZywuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc217cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5mb3JtLWNvbnRyb2wtc217bWluLWhlaWdodDpjYWxjKDEuNWVtICsgLjVyZW0gKyBjYWxjKHZhcigtLWJzLWJvcmRlci13aWR0aCkgKiAyKSk7cGFkZGluZzouMjVyZW0gLjVyZW07Zm9udC1zaXplOi44NzVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXNtKX0uZm9ybS1jb250cm9sLXNtOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntwYWRkaW5nOi4yNXJlbSAuNXJlbTttYXJnaW46LS4yNXJlbSAtLjVyZW07LXdlYmtpdC1tYXJnaW4tZW5kOi41cmVtO21hcmdpbi1pbmxpbmUtZW5kOi41cmVtfS5mb3JtLWNvbnRyb2wtc206OmZpbGUtc2VsZWN0b3ItYnV0dG9ue3BhZGRpbmc6LjI1cmVtIC41cmVtO21hcmdpbjotLjI1cmVtIC0uNXJlbTstd2Via2l0LW1hcmdpbi1lbmQ6LjVyZW07bWFyZ2luLWlubGluZS1lbmQ6LjVyZW19LmZvcm0tY29udHJvbC1sZ3ttaW4taGVpZ2h0OmNhbGMoMS41ZW0gKyAxcmVtICsgY2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogMikpO3BhZGRpbmc6LjVyZW0gMXJlbTtmb250LXNpemU6MS4yNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpfS5mb3JtLWNvbnRyb2wtbGc6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue3BhZGRpbmc6LjVyZW0gMXJlbTttYXJnaW46LS41cmVtIC0xcmVtOy13ZWJraXQtbWFyZ2luLWVuZDoxcmVtO21hcmdpbi1pbmxpbmUtZW5kOjFyZW19LmZvcm0tY29udHJvbC1sZzo6ZmlsZS1zZWxlY3Rvci1idXR0b257cGFkZGluZzouNXJlbSAxcmVtO21hcmdpbjotLjVyZW0gLTFyZW07LXdlYmtpdC1tYXJnaW4tZW5kOjFyZW07bWFyZ2luLWlubGluZS1lbmQ6MXJlbX10ZXh0YXJlYS5mb3JtLWNvbnRyb2x7bWluLWhlaWdodDpjYWxjKDEuNWVtICsgLjc1cmVtICsgY2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogMikpfXRleHRhcmVhLmZvcm0tY29udHJvbC1zbXttaW4taGVpZ2h0OmNhbGMoMS41ZW0gKyAuNXJlbSArIGNhbGModmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAqIDIpKX10ZXh0YXJlYS5mb3JtLWNvbnRyb2wtbGd7bWluLWhlaWdodDpjYWxjKDEuNWVtICsgMXJlbSArIGNhbGModmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAqIDIpKX0uZm9ybS1jb250cm9sLWNvbG9ye3dpZHRoOjNyZW07aGVpZ2h0OmNhbGMoMS41ZW0gKyAuNzVyZW0gKyBjYWxjKHZhcigtLWJzLWJvcmRlci13aWR0aCkgKiAyKSk7cGFkZGluZzouMzc1cmVtfS5mb3JtLWNvbnRyb2wtY29sb3I6bm90KDpkaXNhYmxlZCk6bm90KFtyZWFkb25seV0pe2N1cnNvcjpwb2ludGVyfS5mb3JtLWNvbnRyb2wtY29sb3I6Oi1tb3otY29sb3Itc3dhdGNoe2JvcmRlcjowIWltcG9ydGFudDtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpfS5mb3JtLWNvbnRyb2wtY29sb3I6Oi13ZWJraXQtY29sb3Itc3dhdGNoe2JvcmRlcjowIWltcG9ydGFudDtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpfS5mb3JtLWNvbnRyb2wtY29sb3IuZm9ybS1jb250cm9sLXNte2hlaWdodDpjYWxjKDEuNWVtICsgLjVyZW0gKyBjYWxjKHZhcigtLWJzLWJvcmRlci13aWR0aCkgKiAyKSl9LmZvcm0tY29udHJvbC1jb2xvci5mb3JtLWNvbnRyb2wtbGd7aGVpZ2h0OmNhbGMoMS41ZW0gKyAxcmVtICsgY2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogMikpfS5mb3JtLXNlbGVjdHstLWJzLWZvcm0tc2VsZWN0LWJnLWltZzp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnJTNlJTNjcGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyUyMzM0M2E0MCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzInIGQ9J20yIDUgNiA2IDYtNicvJTNlJTNjL3N2ZyUzZSIpO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOi4zNzVyZW0gMi4yNXJlbSAuMzc1cmVtIC43NXJlbTtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JhY2tncm91bmQtaW1hZ2U6dmFyKC0tYnMtZm9ybS1zZWxlY3QtYmctaW1nKSx2YXIoLS1icy1mb3JtLXNlbGVjdC1iZy1pY29uLG5vbmUpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC43NXJlbSBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjE2cHggMTJweDtib3JkZXI6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cyk7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmZvcm0tc2VsZWN0e3RyYW5zaXRpb246bm9uZX19LmZvcm0tc2VsZWN0OmZvY3Vze2JvcmRlci1jb2xvcjojODZiN2ZlO291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAwIC4yNXJlbSByZ2JhKDEzLDExMCwyNTMsLjI1KX0uZm9ybS1zZWxlY3RbbXVsdGlwbGVdLC5mb3JtLXNlbGVjdFtzaXplXTpub3QoW3NpemU9IjEiXSl7cGFkZGluZy1yaWdodDouNzVyZW07YmFja2dyb3VuZC1pbWFnZTpub25lfS5mb3JtLXNlbGVjdDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1iZyl9LmZvcm0tc2VsZWN0Oi1tb3otZm9jdXNyaW5ne2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93OjAgMCAwIHZhcigtLWJzLWJvZHktY29sb3IpfS5mb3JtLXNlbGVjdC1zbXtwYWRkaW5nLXRvcDouMjVyZW07cGFkZGluZy1ib3R0b206LjI1cmVtO3BhZGRpbmctbGVmdDouNXJlbTtmb250LXNpemU6Ljg3NXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtc20pfS5mb3JtLXNlbGVjdC1sZ3twYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLWJvdHRvbTouNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbTtmb250LXNpemU6MS4yNXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpfVtkYXRhLWJzLXRoZW1lPWRhcmtdIC5mb3JtLXNlbGVjdHstLWJzLWZvcm0tc2VsZWN0LWJnLWltZzp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnJTNlJTNjcGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyUyM2RlZTJlNicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzInIGQ9J20yIDUgNiA2IDYtNicvJTNlJTNjL3N2ZyUzZSIpfS5mb3JtLWNoZWNre2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoxLjVyZW07cGFkZGluZy1sZWZ0OjEuNWVtO21hcmdpbi1ib3R0b206LjEyNXJlbX0uZm9ybS1jaGVjayAuZm9ybS1jaGVjay1pbnB1dHtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0Oi0xLjVlbX0uZm9ybS1jaGVjay1yZXZlcnNle3BhZGRpbmctcmlnaHQ6MS41ZW07cGFkZGluZy1sZWZ0OjA7dGV4dC1hbGlnbjpyaWdodH0uZm9ybS1jaGVjay1yZXZlcnNlIC5mb3JtLWNoZWNrLWlucHV0e2Zsb2F0OnJpZ2h0O21hcmdpbi1yaWdodDotMS41ZW07bWFyZ2luLWxlZnQ6MH0uZm9ybS1jaGVjay1pbnB1dHstLWJzLWZvcm0tY2hlY2stYmc6dmFyKC0tYnMtYm9keS1iZyk7ZmxleC1zaHJpbms6MDt3aWR0aDoxZW07aGVpZ2h0OjFlbTttYXJnaW4tdG9wOi4yNWVtO3ZlcnRpY2FsLWFsaWduOnRvcDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1mb3JtLWNoZWNrLWJnKTtiYWNrZ3JvdW5kLWltYWdlOnZhcigtLWJzLWZvcm0tY2hlY2stYmctaW1hZ2UpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjtib3JkZXI6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpOy13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdDtwcmludC1jb2xvci1hZGp1c3Q6ZXhhY3R9LmZvcm0tY2hlY2staW5wdXRbdHlwZT1jaGVja2JveF17Ym9yZGVyLXJhZGl1czouMjVlbX0uZm9ybS1jaGVjay1pbnB1dFt0eXBlPXJhZGlvXXtib3JkZXItcmFkaXVzOjUwJX0uZm9ybS1jaGVjay1pbnB1dDphY3RpdmV7ZmlsdGVyOmJyaWdodG5lc3MoOTAlKX0uZm9ybS1jaGVjay1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6Izg2YjdmZTtvdXRsaW5lOjA7Ym94LXNoYWRvdzowIDAgMCAuMjVyZW0gcmdiYSgxMywxMTAsMjUzLC4yNSl9LmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwZDZlZmQ7Ym9yZGVyLWNvbG9yOiMwZDZlZmR9LmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZFt0eXBlPWNoZWNrYm94XXstLWJzLWZvcm0tY2hlY2stYmctaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJyUzZSUzY3BhdGggZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNmZmYnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdtNiAxMCAzIDMgNi02Jy8lM2UlM2Mvc3ZnJTNlIil9LmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZFt0eXBlPXJhZGlvXXstLWJzLWZvcm0tY2hlY2stYmctaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPScyJyBmaWxsPSclMjNmZmYnLyUzZSUzYy9zdmclM2UiKX0uZm9ybS1jaGVjay1pbnB1dFt0eXBlPWNoZWNrYm94XTppbmRldGVybWluYXRle2JhY2tncm91bmQtY29sb3I6IzBkNmVmZDtib3JkZXItY29sb3I6IzBkNmVmZDstLWJzLWZvcm0tY2hlY2stYmctaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJyUzZSUzY3BhdGggZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNmZmYnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdNNiAxMGg4Jy8lM2UlM2Mvc3ZnJTNlIil9LmZvcm0tY2hlY2staW5wdXQ6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtmaWx0ZXI6bm9uZTtvcGFjaXR5Oi41fS5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkfi5mb3JtLWNoZWNrLWxhYmVsLC5mb3JtLWNoZWNrLWlucHV0W2Rpc2FibGVkXX4uZm9ybS1jaGVjay1sYWJlbHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi41fS5mb3JtLXN3aXRjaHtwYWRkaW5nLWxlZnQ6Mi41ZW19LmZvcm0tc3dpdGNoIC5mb3JtLWNoZWNrLWlucHV0ey0tYnMtZm9ybS1zd2l0Y2gtYmc6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPSczJyBmaWxsPSdyZ2JhJTI4MCwgMCwgMCwgMC4yNSUyOScvJTNlJTNjL3N2ZyUzZSIpO3dpZHRoOjJlbTttYXJnaW4tbGVmdDotMi41ZW07YmFja2dyb3VuZC1pbWFnZTp2YXIoLS1icy1mb3JtLXN3aXRjaC1iZyk7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjtib3JkZXItcmFkaXVzOjJlbTt0cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjE1cyBlYXNlLWluLW91dH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuZm9ybS1zd2l0Y2ggLmZvcm0tY2hlY2staW5wdXR7dHJhbnNpdGlvbjpub25lfX0uZm9ybS1zd2l0Y2ggLmZvcm0tY2hlY2staW5wdXQ6Zm9jdXN7LS1icy1mb3JtLXN3aXRjaC1iZzp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNlJTNjY2lyY2xlIHI9JzMnIGZpbGw9JyUyMzg2YjdmZScvJTNlJTNjL3N2ZyUzZSIpfS5mb3JtLXN3aXRjaCAuZm9ybS1jaGVjay1pbnB1dDpjaGVja2Vke2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgY2VudGVyOy0tYnMtZm9ybS1zd2l0Y2gtYmc6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPSczJyBmaWxsPSclMjNmZmYnLyUzZSUzYy9zdmclM2UiKX0uZm9ybS1zd2l0Y2guZm9ybS1jaGVjay1yZXZlcnNle3BhZGRpbmctcmlnaHQ6Mi41ZW07cGFkZGluZy1sZWZ0OjB9LmZvcm0tc3dpdGNoLmZvcm0tY2hlY2stcmV2ZXJzZSAuZm9ybS1jaGVjay1pbnB1dHttYXJnaW4tcmlnaHQ6LTIuNWVtO21hcmdpbi1sZWZ0OjB9LmZvcm0tY2hlY2staW5saW5le2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxcmVtfS5idG4tY2hlY2t7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAsMCwwLDApO3BvaW50ZXItZXZlbnRzOm5vbmV9LmJ0bi1jaGVjazpkaXNhYmxlZCsuYnRuLC5idG4tY2hlY2tbZGlzYWJsZWRdKy5idG57cG9pbnRlci1ldmVudHM6bm9uZTtmaWx0ZXI6bm9uZTtvcGFjaXR5Oi42NX1bZGF0YS1icy10aGVtZT1kYXJrXSAuZm9ybS1zd2l0Y2ggLmZvcm0tY2hlY2staW5wdXQ6bm90KDpjaGVja2VkKTpub3QoOmZvY3VzKXstLWJzLWZvcm0tc3dpdGNoLWJnOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCclM2UlM2NjaXJjbGUgcj0nMycgZmlsbD0ncmdiYSUyODI1NSwgMjU1LCAyNTUsIDAuMjUlMjknLyUzZSUzYy9zdmclM2UiKX0uZm9ybS1yYW5nZXt3aWR0aDoxMDAlO2hlaWdodDoxLjVyZW07cGFkZGluZzowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5mb3JtLXJhbmdlOmZvY3Vze291dGxpbmU6MH0uZm9ybS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAuMjVyZW0gcmdiYSgxMywxMTAsMjUzLC4yNSl9LmZvcm0tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWJ7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAuMjVyZW0gcmdiYSgxMywxMTAsMjUzLC4yNSl9LmZvcm0tcmFuZ2U6Oi1tb3otZm9jdXMtb3V0ZXJ7Ym9yZGVyOjB9LmZvcm0tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1ie3dpZHRoOjFyZW07aGVpZ2h0OjFyZW07bWFyZ2luLXRvcDotLjI1cmVtOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMwZDZlZmQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxcmVtOy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuZm9ybS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfX0uZm9ybS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6I2I2ZDRmZX0uZm9ybS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7d2lkdGg6MTAwJTtoZWlnaHQ6LjVyZW07Y29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktYmcpO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjFyZW19LmZvcm0tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWJ7d2lkdGg6MXJlbTtoZWlnaHQ6MXJlbTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMGQ2ZWZkO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MXJlbTstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmZvcm0tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWJ7LW1vei10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfX0uZm9ybS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojYjZkNGZlfS5mb3JtLXJhbmdlOjotbW96LXJhbmdlLXRyYWNre3dpZHRoOjEwMCU7aGVpZ2h0Oi41cmVtO2NvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxcmVtfS5mb3JtLXJhbmdlOmRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9LmZvcm0tcmFuZ2U6ZGlzYWJsZWQ6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWNvbG9yKX0uZm9ybS1yYW5nZTpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1jb2xvcil9LmZvcm0tZmxvYXRpbmd7cG9zaXRpb246cmVsYXRpdmV9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbCwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dCwuZm9ybS1mbG9hdGluZz4uZm9ybS1zZWxlY3R7aGVpZ2h0OmNhbGMoMy41cmVtICsgY2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogMikpO21pbi1oZWlnaHQ6Y2FsYygzLjVyZW0gKyBjYWxjKHZhcigtLWJzLWJvcmRlci13aWR0aCkgKiAyKSk7bGluZS1oZWlnaHQ6MS4yNX0uZm9ybS1mbG9hdGluZz5sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ei1pbmRleDoyO2hlaWdodDoxMDAlO3BhZGRpbmc6MXJlbSAuNzVyZW07b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXI6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOm9wYWNpdHkgLjFzIGVhc2UtaW4tb3V0LHRyYW5zZm9ybSAuMXMgZWFzZS1pbi1vdXR9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmZvcm0tZmxvYXRpbmc+bGFiZWx7dHJhbnNpdGlvbjpub25lfX0uZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLC5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0e3BhZGRpbmc6MXJlbSAuNzVyZW19LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbC1wbGFpbnRleHQ6Oi1tb3otcGxhY2Vob2xkZXIsLmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudH0uZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dDo6cGxhY2Vob2xkZXIsLmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnR9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbC1wbGFpbnRleHQ6bm90KDotbW96LXBsYWNlaG9sZGVyLXNob3duKSwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sOm5vdCg6LW1vei1wbGFjZWhvbGRlci1zaG93bil7cGFkZGluZy10b3A6MS42MjVyZW07cGFkZGluZy1ib3R0b206LjYyNXJlbX0uZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dDpmb2N1cywuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dDpub3QoOnBsYWNlaG9sZGVyLXNob3duKSwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sOmZvY3VzLC5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2w6bm90KDpwbGFjZWhvbGRlci1zaG93bil7cGFkZGluZy10b3A6MS42MjVyZW07cGFkZGluZy1ib3R0b206LjYyNXJlbX0uZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dDotd2Via2l0LWF1dG9maWxsLC5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbHtwYWRkaW5nLXRvcDoxLjYyNXJlbTtwYWRkaW5nLWJvdHRvbTouNjI1cmVtfS5mb3JtLWZsb2F0aW5nPi5mb3JtLXNlbGVjdHtwYWRkaW5nLXRvcDoxLjYyNXJlbTtwYWRkaW5nLWJvdHRvbTouNjI1cmVtfS5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2w6bm90KDotbW96LXBsYWNlaG9sZGVyLXNob3duKX5sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLWJzLWJvZHktY29sb3ItcmdiKSwuNjUpO3RyYW5zZm9ybTpzY2FsZSguODUpIHRyYW5zbGF0ZVkoLS41cmVtKSB0cmFuc2xhdGVYKC4xNXJlbSl9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbC1wbGFpbnRleHR+bGFiZWwsLmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDpmb2N1c35sYWJlbCwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pfmxhYmVsLC5mb3JtLWZsb2F0aW5nPi5mb3JtLXNlbGVjdH5sYWJlbHtjb2xvcjpyZ2JhKHZhcigtLWJzLWJvZHktY29sb3ItcmdiKSwuNjUpO3RyYW5zZm9ybTpzY2FsZSguODUpIHRyYW5zbGF0ZVkoLS41cmVtKSB0cmFuc2xhdGVYKC4xNXJlbSl9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDpub3QoOi1tb3otcGxhY2Vob2xkZXItc2hvd24pfmxhYmVsOjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxcmVtIDAuMzc1cmVtO3otaW5kZXg6LTE7aGVpZ2h0OjEuNWVtO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1ib2R5LWJnKTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpfS5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0fmxhYmVsOjphZnRlciwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sOmZvY3VzfmxhYmVsOjphZnRlciwuZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pfmxhYmVsOjphZnRlciwuZm9ybS1mbG9hdGluZz4uZm9ybS1zZWxlY3R+bGFiZWw6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjFyZW0gMC4zNzVyZW07ei1pbmRleDotMTtoZWlnaHQ6MS41ZW07Y29udGVudDoiIjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cyl9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDotd2Via2l0LWF1dG9maWxsfmxhYmVse2NvbG9yOnJnYmEodmFyKC0tYnMtYm9keS1jb2xvci1yZ2IpLC42NSk7dHJhbnNmb3JtOnNjYWxlKC44NSkgdHJhbnNsYXRlWSgtLjVyZW0pIHRyYW5zbGF0ZVgoLjE1cmVtKX0uZm9ybS1mbG9hdGluZz4uZm9ybS1jb250cm9sLXBsYWludGV4dH5sYWJlbHtib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAwfS5mb3JtLWZsb2F0aW5nPi5mb3JtLWNvbnRyb2w6ZGlzYWJsZWR+bGFiZWwsLmZvcm0tZmxvYXRpbmc+OmRpc2FibGVkfmxhYmVse2NvbG9yOiM2Yzc1N2R9LmZvcm0tZmxvYXRpbmc+LmZvcm0tY29udHJvbDpkaXNhYmxlZH5sYWJlbDo6YWZ0ZXIsLmZvcm0tZmxvYXRpbmc+OmRpc2FibGVkfmxhYmVsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1iZyl9LmlucHV0LWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpzdHJldGNoO3dpZHRoOjEwMCV9LmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwPi5mb3JtLWZsb2F0aW5nLC5pbnB1dC1ncm91cD4uZm9ybS1zZWxlY3R7cG9zaXRpb246cmVsYXRpdmU7ZmxleDoxIDEgYXV0bzt3aWR0aDoxJTttaW4td2lkdGg6MH0uaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbDpmb2N1cywuaW5wdXQtZ3JvdXA+LmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluLC5pbnB1dC1ncm91cD4uZm9ybS1zZWxlY3Q6Zm9jdXN7ei1pbmRleDo1fS5pbnB1dC1ncm91cCAuYnRue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mn0uaW5wdXQtZ3JvdXAgLmJ0bjpmb2N1c3t6LWluZGV4OjV9LmlucHV0LWdyb3VwLXRleHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOi4zNzVyZW0gLjc1cmVtO2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtdGVydGlhcnktYmcpO2JvcmRlcjp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKX0uaW5wdXQtZ3JvdXAtbGc+LmJ0biwuaW5wdXQtZ3JvdXAtbGc+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtbGc+LmZvcm0tc2VsZWN0LC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtdGV4dHtwYWRkaW5nOi41cmVtIDFyZW07Zm9udC1zaXplOjEuMjVyZW07Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKX0uaW5wdXQtZ3JvdXAtc20+LmJ0biwuaW5wdXQtZ3JvdXAtc20+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtc20+LmZvcm0tc2VsZWN0LC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtdGV4dHtwYWRkaW5nOi4yNXJlbSAuNXJlbTtmb250LXNpemU6Ljg3NXJlbTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtc20pfS5pbnB1dC1ncm91cC1sZz4uZm9ybS1zZWxlY3QsLmlucHV0LWdyb3VwLXNtPi5mb3JtLXNlbGVjdHtwYWRkaW5nLXJpZ2h0OjNyZW19LmlucHV0LWdyb3VwOm5vdCguaGFzLXZhbGlkYXRpb24pPi5kcm9wZG93bi10b2dnbGU6bnRoLWxhc3QtY2hpbGQobiszKSwuaW5wdXQtZ3JvdXA6bm90KC5oYXMtdmFsaWRhdGlvbik+LmZvcm0tZmxvYXRpbmc6bm90KDpsYXN0LWNoaWxkKT4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cDpub3QoLmhhcy12YWxpZGF0aW9uKT4uZm9ybS1mbG9hdGluZzpub3QoOmxhc3QtY2hpbGQpPi5mb3JtLXNlbGVjdCwuaW5wdXQtZ3JvdXA6bm90KC5oYXMtdmFsaWRhdGlvbik+Om5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpOm5vdCguZHJvcGRvd24tbWVudSk6bm90KC5mb3JtLWZsb2F0aW5nKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmlucHV0LWdyb3VwLmhhcy12YWxpZGF0aW9uPi5kcm9wZG93bi10b2dnbGU6bnRoLWxhc3QtY2hpbGQobis0KSwuaW5wdXQtZ3JvdXAuaGFzLXZhbGlkYXRpb24+LmZvcm0tZmxvYXRpbmc6bnRoLWxhc3QtY2hpbGQobiszKT4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC5oYXMtdmFsaWRhdGlvbj4uZm9ybS1mbG9hdGluZzpudGgtbGFzdC1jaGlsZChuKzMpPi5mb3JtLXNlbGVjdCwuaW5wdXQtZ3JvdXAuaGFzLXZhbGlkYXRpb24+Om50aC1sYXN0LWNoaWxkKG4rMyk6bm90KC5kcm9wZG93bi10b2dnbGUpOm5vdCguZHJvcGRvd24tbWVudSk6bm90KC5mb3JtLWZsb2F0aW5nKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmlucHV0LWdyb3VwPjpub3QoOmZpcnN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLW1lbnUpOm5vdCgudmFsaWQtdG9vbHRpcCk6bm90KC52YWxpZC1mZWVkYmFjayk6bm90KC5pbnZhbGlkLXRvb2x0aXApOm5vdCguaW52YWxpZC1mZWVkYmFjayl7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogLTEpO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmlucHV0LWdyb3VwPi5mb3JtLWZsb2F0aW5nOm5vdCg6Zmlyc3QtY2hpbGQpPi5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwPi5mb3JtLWZsb2F0aW5nOm5vdCg6Zmlyc3QtY2hpbGQpPi5mb3JtLXNlbGVjdHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS52YWxpZC1mZWVkYmFja3tkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi4yNXJlbTtmb250LXNpemU6Ljg3NWVtO2NvbG9yOnZhcigtLWJzLWZvcm0tdmFsaWQtY29sb3IpfS52YWxpZC10b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO3otaW5kZXg6NTtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzouMjVyZW0gLjVyZW07bWFyZ2luLXRvcDouMXJlbTtmb250LXNpemU6Ljg3NXJlbTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc3VjY2Vzcyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKX0uaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLC5pcy12YWxpZH4udmFsaWQtdG9vbHRpcCwud2FzLXZhbGlkYXRlZCA6dmFsaWR+LnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIDp2YWxpZH4udmFsaWQtdG9vbHRpcHtkaXNwbGF5OmJsb2NrfS5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZHtib3JkZXItY29sb3I6dmFyKC0tYnMtZm9ybS12YWxpZC1ib3JkZXItY29sb3IpO3BhZGRpbmctcmlnaHQ6Y2FsYygxLjVlbSArIC43NXJlbSk7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzMTk4NzU0JyBkPSdNMi4zIDYuNzMuNiA0LjUzYy0uNC0xLjA0LjQ2LTEuNCAxLjEtLjhsMS4xIDEuNCAzLjQtMy44Yy42LS42MyAxLjYtLjI3IDEuMi43bC00IDQuNmMtLjQzLjUtLjguNC0xLjEuMXonLyUzZSUzYy9zdmclM2UiKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBjYWxjKC4zNzVlbSArIC4xODc1cmVtKSBjZW50ZXI7YmFja2dyb3VuZC1zaXplOmNhbGMoLjc1ZW0gKyAuMzc1cmVtKSBjYWxjKC43NWVtICsgLjM3NXJlbSl9LmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1icy1mb3JtLXZhbGlkLWJvcmRlci1jb2xvcik7Ym94LXNoYWRvdzowIDAgMCAuMjVyZW0gcmdiYSh2YXIoLS1icy1zdWNjZXNzLXJnYiksLjI1KX0ud2FzLXZhbGlkYXRlZCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2w6dmFsaWQsdGV4dGFyZWEuZm9ybS1jb250cm9sLmlzLXZhbGlke3BhZGRpbmctcmlnaHQ6Y2FsYygxLjVlbSArIC43NXJlbSk7YmFja2dyb3VuZC1wb3NpdGlvbjp0b3AgY2FsYyguMzc1ZW0gKyAuMTg3NXJlbSkgcmlnaHQgY2FsYyguMzc1ZW0gKyAuMTg3NXJlbSl9LmZvcm0tc2VsZWN0LmlzLXZhbGlkLC53YXMtdmFsaWRhdGVkIC5mb3JtLXNlbGVjdDp2YWxpZHtib3JkZXItY29sb3I6dmFyKC0tYnMtZm9ybS12YWxpZC1ib3JkZXItY29sb3IpfS5mb3JtLXNlbGVjdC5pcy12YWxpZDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLmZvcm0tc2VsZWN0LmlzLXZhbGlkOm5vdChbbXVsdGlwbGVdKVtzaXplPSIxIl0sLndhcy12YWxpZGF0ZWQgLmZvcm0tc2VsZWN0OnZhbGlkOm5vdChbbXVsdGlwbGVdKTpub3QoW3NpemVdKSwud2FzLXZhbGlkYXRlZCAuZm9ybS1zZWxlY3Q6dmFsaWQ6bm90KFttdWx0aXBsZV0pW3NpemU9IjEiXXstLWJzLWZvcm0tc2VsZWN0LWJnLWljb246dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGZpbGw9JyUyMzE5ODc1NCcgZD0nTTIuMyA2LjczLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlIik7cGFkZGluZy1yaWdodDo0LjEyNXJlbTtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC43NXJlbSBjZW50ZXIsY2VudGVyIHJpZ2h0IDIuMjVyZW07YmFja2dyb3VuZC1zaXplOjE2cHggMTJweCxjYWxjKC43NWVtICsgLjM3NXJlbSkgY2FsYyguNzVlbSArIC4zNzVyZW0pfS5mb3JtLXNlbGVjdC5pcy12YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuZm9ybS1zZWxlY3Q6dmFsaWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWZvcm0tdmFsaWQtYm9yZGVyLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIC4yNXJlbSByZ2JhKHZhcigtLWJzLXN1Y2Nlc3MtcmdiKSwuMjUpfS5mb3JtLWNvbnRyb2wtY29sb3IuaXMtdmFsaWQsLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1jb2xvcjp2YWxpZHt3aWR0aDpjYWxjKDNyZW0gKyBjYWxjKDEuNWVtICsgLjc1cmVtKSl9LmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQsLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWR7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWZvcm0tdmFsaWQtYm9yZGVyLWNvbG9yKX0uZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZDpjaGVja2VkLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkOmNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1mb3JtLXZhbGlkLWNvbG9yKX0uZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZDpmb2N1c3tib3gtc2hhZG93OjAgMCAwIC4yNXJlbSByZ2JhKHZhcigtLWJzLXN1Y2Nlc3MtcmdiKSwuMjUpfS5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkfi5mb3JtLWNoZWNrLWxhYmVsLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkfi5mb3JtLWNoZWNrLWxhYmVse2NvbG9yOnZhcigtLWJzLWZvcm0tdmFsaWQtY29sb3IpfS5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dH4udmFsaWQtZmVlZGJhY2t7bWFyZ2luLWxlZnQ6LjVlbX0uaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbDpub3QoOmZvY3VzKS5pcy12YWxpZCwuaW5wdXQtZ3JvdXA+LmZvcm0tZmxvYXRpbmc6bm90KDpmb2N1cy13aXRoaW4pLmlzLXZhbGlkLC5pbnB1dC1ncm91cD4uZm9ybS1zZWxlY3Q6bm90KDpmb2N1cykuaXMtdmFsaWQsLndhcy12YWxpZGF0ZWQgLmlucHV0LWdyb3VwPi5mb3JtLWNvbnRyb2w6bm90KDpmb2N1cyk6dmFsaWQsLndhcy12YWxpZGF0ZWQgLmlucHV0LWdyb3VwPi5mb3JtLWZsb2F0aW5nOm5vdCg6Zm9jdXMtd2l0aGluKTp2YWxpZCwud2FzLXZhbGlkYXRlZCAuaW5wdXQtZ3JvdXA+LmZvcm0tc2VsZWN0Om5vdCg6Zm9jdXMpOnZhbGlke3otaW5kZXg6M30uaW52YWxpZC1mZWVkYmFja3tkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi4yNXJlbTtmb250LXNpemU6Ljg3NWVtO2NvbG9yOnZhcigtLWJzLWZvcm0taW52YWxpZC1jb2xvcil9LmludmFsaWQtdG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTt6LWluZGV4OjU7ZGlzcGxheTpub25lO21heC13aWR0aDoxMDAlO3BhZGRpbmc6LjI1cmVtIC41cmVtO21hcmdpbi10b3A6LjFyZW07Zm9udC1zaXplOi44NzVyZW07Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWRhbmdlcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKX0uaXMtaW52YWxpZH4uaW52YWxpZC1mZWVkYmFjaywuaXMtaW52YWxpZH4uaW52YWxpZC10b29sdGlwLC53YXMtdmFsaWRhdGVkIDppbnZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLC53YXMtdmFsaWRhdGVkIDppbnZhbGlkfi5pbnZhbGlkLXRvb2x0aXB7ZGlzcGxheTpibG9ja30uZm9ybS1jb250cm9sLmlzLWludmFsaWQsLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlke2JvcmRlci1jb2xvcjp2YXIoLS1icy1mb3JtLWludmFsaWQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nLXJpZ2h0OmNhbGMoMS41ZW0gKyAuNzVyZW0pO2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZGMzNTQ1JyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2RjMzU0NScgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgY2FsYyguMzc1ZW0gKyAuMTg3NXJlbSkgY2VudGVyO2JhY2tncm91bmQtc2l6ZTpjYWxjKC43NWVtICsgLjM3NXJlbSkgY2FsYyguNzVlbSArIC4zNzVyZW0pfS5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZDpmb2N1cywud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWZvcm0taW52YWxpZC1ib3JkZXItY29sb3IpO2JveC1zaGFkb3c6MCAwIDAgLjI1cmVtIHJnYmEodmFyKC0tYnMtZGFuZ2VyLXJnYiksLjI1KX0ud2FzLXZhbGlkYXRlZCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2w6aW52YWxpZCx0ZXh0YXJlYS5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZHtwYWRkaW5nLXJpZ2h0OmNhbGMoMS41ZW0gKyAuNzVyZW0pO2JhY2tncm91bmQtcG9zaXRpb246dG9wIGNhbGMoLjM3NWVtICsgLjE4NzVyZW0pIHJpZ2h0IGNhbGMoLjM3NWVtICsgLjE4NzVyZW0pfS5mb3JtLXNlbGVjdC5pcy1pbnZhbGlkLC53YXMtdmFsaWRhdGVkIC5mb3JtLXNlbGVjdDppbnZhbGlke2JvcmRlci1jb2xvcjp2YXIoLS1icy1mb3JtLWludmFsaWQtYm9yZGVyLWNvbG9yKX0uZm9ybS1zZWxlY3QuaXMtaW52YWxpZDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLmZvcm0tc2VsZWN0LmlzLWludmFsaWQ6bm90KFttdWx0aXBsZV0pW3NpemU9IjEiXSwud2FzLXZhbGlkYXRlZCAuZm9ybS1zZWxlY3Q6aW52YWxpZDpub3QoW211bHRpcGxlXSk6bm90KFtzaXplXSksLndhcy12YWxpZGF0ZWQgLmZvcm0tc2VsZWN0OmludmFsaWQ6bm90KFttdWx0aXBsZV0pW3NpemU9IjEiXXstLWJzLWZvcm0tc2VsZWN0LWJnLWljb246dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZGMzNTQ1JyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2RjMzU0NScgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlIik7cGFkZGluZy1yaWdodDo0LjEyNXJlbTtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC43NXJlbSBjZW50ZXIsY2VudGVyIHJpZ2h0IDIuMjVyZW07YmFja2dyb3VuZC1zaXplOjE2cHggMTJweCxjYWxjKC43NWVtICsgLjM3NXJlbSkgY2FsYyguNzVlbSArIC4zNzVyZW0pfS5mb3JtLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzLC53YXMtdmFsaWRhdGVkIC5mb3JtLXNlbGVjdDppbnZhbGlkOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1icy1mb3JtLWludmFsaWQtYm9yZGVyLWNvbG9yKTtib3gtc2hhZG93OjAgMCAwIC4yNXJlbSByZ2JhKHZhcigtLWJzLWRhbmdlci1yZ2IpLC4yNSl9LmZvcm0tY29udHJvbC1jb2xvci5pcy1pbnZhbGlkLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtY29sb3I6aW52YWxpZHt3aWR0aDpjYWxjKDNyZW0gKyBjYWxjKDEuNWVtICsgLjc1cmVtKSl9LmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCwud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlke2JvcmRlci1jb2xvcjp2YXIoLS1icy1mb3JtLWludmFsaWQtYm9yZGVyLWNvbG9yKX0uZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkOmNoZWNrZWQsLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZDpjaGVja2Vke2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtZm9ybS1pbnZhbGlkLWNvbG9yKX0uZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzLC53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQ6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAuMjVyZW0gcmdiYSh2YXIoLS1icy1kYW5nZXItcmdiKSwuMjUpfS5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWR+LmZvcm0tY2hlY2stbGFiZWwsLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZH4uZm9ybS1jaGVjay1sYWJlbHtjb2xvcjp2YXIoLS1icy1mb3JtLWludmFsaWQtY29sb3IpfS5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dH4uaW52YWxpZC1mZWVkYmFja3ttYXJnaW4tbGVmdDouNWVtfS5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9sOm5vdCg6Zm9jdXMpLmlzLWludmFsaWQsLmlucHV0LWdyb3VwPi5mb3JtLWZsb2F0aW5nOm5vdCg6Zm9jdXMtd2l0aGluKS5pcy1pbnZhbGlkLC5pbnB1dC1ncm91cD4uZm9ybS1zZWxlY3Q6bm90KDpmb2N1cykuaXMtaW52YWxpZCwud2FzLXZhbGlkYXRlZCAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbDpub3QoOmZvY3VzKTppbnZhbGlkLC53YXMtdmFsaWRhdGVkIC5pbnB1dC1ncm91cD4uZm9ybS1mbG9hdGluZzpub3QoOmZvY3VzLXdpdGhpbik6aW52YWxpZCwud2FzLXZhbGlkYXRlZCAuaW5wdXQtZ3JvdXA+LmZvcm0tc2VsZWN0Om5vdCg6Zm9jdXMpOmludmFsaWR7ei1pbmRleDo0fS5idG57LS1icy1idG4tcGFkZGluZy14OjAuNzVyZW07LS1icy1idG4tcGFkZGluZy15OjAuMzc1cmVtOy0tYnMtYnRuLWZvbnQtZmFtaWx5OiA7LS1icy1idG4tZm9udC1zaXplOjFyZW07LS1icy1idG4tZm9udC13ZWlnaHQ6NDAwOy0tYnMtYnRuLWxpbmUtaGVpZ2h0OjEuNTstLWJzLWJ0bi1jb2xvcjp2YXIoLS1icy1ib2R5LWNvbG9yKTstLWJzLWJ0bi1iZzp0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLWJ0bi1ib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LS1icy1idG4tYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LS1icy1idG4tYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy0tYnMtYnRuLWRpc2FibGVkLW9wYWNpdHk6MC42NTstLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93OjAgMCAwIDAuMjVyZW0gcmdiYSh2YXIoLS1icy1idG4tZm9jdXMtc2hhZG93LXJnYiksIC41KTtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOnZhcigtLWJzLWJ0bi1wYWRkaW5nLXkpIHZhcigtLWJzLWJ0bi1wYWRkaW5nLXgpO2ZvbnQtZmFtaWx5OnZhcigtLWJzLWJ0bi1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLWJzLWJ0bi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLWJ0bi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tYnMtYnRuLWxpbmUtaGVpZ2h0KTtjb2xvcjp2YXIoLS1icy1idG4tY29sb3IpO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Ym9yZGVyOnZhcigtLWJzLWJ0bi1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLWJ0bi1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYnRuLWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWJnKTt0cmFuc2l0aW9uOmNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuYnRue3RyYW5zaXRpb246bm9uZX19LmJ0bjpob3Zlcntjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcil9LmJ0bi1jaGVjaysuYnRuOmhvdmVye2NvbG9yOnZhcigtLWJzLWJ0bi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4tYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1icy1idG4tYm9yZGVyLWNvbG9yKX0uYnRuOmZvY3VzLXZpc2libGV7Y29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJ0bi1ob3Zlci1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3IpO291dGxpbmU6MDtib3gtc2hhZG93OnZhcigtLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93KX0uYnRuLWNoZWNrOmZvY3VzLXZpc2libGUrLmJ0bntib3JkZXItY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcik7b3V0bGluZTowO2JveC1zaGFkb3c6dmFyKC0tYnMtYnRuLWZvY3VzLWJveC1zaGFkb3cpfS5idG4tY2hlY2s6Y2hlY2tlZCsuYnRuLC5idG4uYWN0aXZlLC5idG4uc2hvdywuYnRuOmZpcnN0LWNoaWxkOmFjdGl2ZSw6bm90KC5idG4tY2hlY2spKy5idG46YWN0aXZle2NvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWFjdGl2ZS1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uYnRuLWNoZWNrOmNoZWNrZWQrLmJ0bjpmb2N1cy12aXNpYmxlLC5idG4uYWN0aXZlOmZvY3VzLXZpc2libGUsLmJ0bi5zaG93OmZvY3VzLXZpc2libGUsLmJ0bjpmaXJzdC1jaGlsZDphY3RpdmU6Zm9jdXMtdmlzaWJsZSw6bm90KC5idG4tY2hlY2spKy5idG46YWN0aXZlOmZvY3VzLXZpc2libGV7Ym94LXNoYWRvdzp2YXIoLS1icy1idG4tZm9jdXMtYm94LXNoYWRvdyl9LmJ0bi5kaXNhYmxlZCwuYnRuOmRpc2FibGVkLGZpZWxkc2V0OmRpc2FibGVkIC5idG57Y29sb3I6dmFyKC0tYnMtYnRuLWRpc2FibGVkLWNvbG9yKTtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWRpc2FibGVkLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcik7b3BhY2l0eTp2YXIoLS1icy1idG4tZGlzYWJsZWQtb3BhY2l0eSl9LmJ0bi1wcmltYXJ5ey0tYnMtYnRuLWNvbG9yOiNmZmY7LS1icy1idG4tYmc6IzBkNmVmZDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1jb2xvcjojZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiMwYjVlZDc7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiMwYTU4Y2E7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjo0OSwxMzIsMjUzOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojMGE1OGNhOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzBhNTNiZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiMwZDZlZmQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiMwZDZlZmR9LmJ0bi1zZWNvbmRhcnl7LS1icy1idG4tY29sb3I6I2ZmZjstLWJzLWJ0bi1iZzojNmM3NTdkOy0tYnMtYnRuLWJvcmRlci1jb2xvcjojNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiNmZmY7LS1icy1idG4taG92ZXItYmc6IzVjNjM2YTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IzU2NWU2NDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOjEzMCwxMzgsMTQ1Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojNTY1ZTY0Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzUxNTg1ZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiM2Yzc1N2R9LmJ0bi1zdWNjZXNzey0tYnMtYnRuLWNvbG9yOiNmZmY7LS1icy1idG4tYmc6IzE5ODc1NDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IzE5ODc1NDstLWJzLWJ0bi1ob3Zlci1jb2xvcjojZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiMxNTczNDc7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiMxNDZjNDM7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjo2MCwxNTMsMTEwOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojMTQ2YzQzOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzEzNjUzZjstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiMxOTg3NTQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiMxOTg3NTR9LmJ0bi1pbmZvey0tYnMtYnRuLWNvbG9yOiMwMDA7LS1icy1idG4tYmc6IzBkY2FmMDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IzBkY2FmMDstLWJzLWJ0bi1ob3Zlci1jb2xvcjojMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiMzMWQyZjI7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiMyNWNmZjI7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjoxMSwxNzIsMjA0Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzojM2RkNWYzOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzI1Y2ZmMjstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojMDAwOy0tYnMtYnRuLWRpc2FibGVkLWJnOiMwZGNhZjA7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiMwZGNhZjB9LmJ0bi13YXJuaW5ney0tYnMtYnRuLWNvbG9yOiMwMDA7LS1icy1idG4tYmc6I2ZmYzEwNzstLWJzLWJ0bi1ib3JkZXItY29sb3I6I2ZmYzEwNzstLWJzLWJ0bi1ob3Zlci1jb2xvcjojMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiNmZmNhMmM7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiNmZmM3MjA7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjoyMTcsMTY0LDY7LS1icy1idG4tYWN0aXZlLWNvbG9yOiMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiNmZmNkMzk7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjojZmZjNzIwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiMwMDA7LS1icy1idG4tZGlzYWJsZWQtYmc6I2ZmYzEwNzstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6I2ZmYzEwN30uYnRuLWRhbmdlcnstLWJzLWJ0bi1jb2xvcjojZmZmOy0tYnMtYnRuLWJnOiNkYzM1NDU7LS1icy1idG4tYm9yZGVyLWNvbG9yOiNkYzM1NDU7LS1icy1idG4taG92ZXItY29sb3I6I2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzojYmIyZDNiOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojYjAyYTM3Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MjI1LDgzLDk3Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojYjAyYTM3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6I2E1MjgzNDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiNkYzM1NDU7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiNkYzM1NDV9LmJ0bi1saWdodHstLWJzLWJ0bi1jb2xvcjojMDAwOy0tYnMtYnRuLWJnOiNmOGY5ZmE7LS1icy1idG4tYm9yZGVyLWNvbG9yOiNmOGY5ZmE7LS1icy1idG4taG92ZXItY29sb3I6IzAwMDstLWJzLWJ0bi1ob3Zlci1iZzojZDNkNGQ1Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojYzZjN2M4Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MjExLDIxMiwyMTM7LS1icy1idG4tYWN0aXZlLWNvbG9yOiMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiNjNmM3Yzg7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjojYmFiYmJjOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiMwMDA7LS1icy1idG4tZGlzYWJsZWQtYmc6I2Y4ZjlmYTstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6I2Y4ZjlmYX0uYnRuLWRhcmt7LS1icy1idG4tY29sb3I6I2ZmZjstLWJzLWJ0bi1iZzojMjEyNTI5Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjojMjEyNTI5Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiNmZmY7LS1icy1idG4taG92ZXItYmc6IzQyNDY0OTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IzM3M2IzZTstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOjY2LDcwLDczOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojNGQ1MTU0Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzM3M2IzZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiMyMTI1Mjk7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiMyMTI1Mjl9LmJ0bi1vdXRsaW5lLXByaW1hcnl7LS1icy1idG4tY29sb3I6IzBkNmVmZDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1jb2xvcjojZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiMwZDZlZmQ7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiMwZDZlZmQ7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjoxMywxMTAsMjUzOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojMGQ2ZWZkOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzBkNmVmZDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojMGQ2ZWZkOy0tYnMtYnRuLWRpc2FibGVkLWJnOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjojMGQ2ZWZkOy0tYnMtZ3JhZGllbnQ6bm9uZX0uYnRuLW91dGxpbmUtc2Vjb25kYXJ5ey0tYnMtYnRuLWNvbG9yOiM2Yzc1N2Q7LS1icy1idG4tYm9yZGVyLWNvbG9yOiM2Yzc1N2Q7LS1icy1idG4taG92ZXItY29sb3I6I2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzojNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojNmM3NTdkOy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MTA4LDExNywxMjU7LS1icy1idG4tYWN0aXZlLWNvbG9yOiNmZmY7LS1icy1idG4tYWN0aXZlLWJnOiM2Yzc1N2Q7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjojNmM3NTdkOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYmc6dHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiM2Yzc1N2Q7LS1icy1ncmFkaWVudDpub25lfS5idG4tb3V0bGluZS1zdWNjZXNzey0tYnMtYnRuLWNvbG9yOiMxOTg3NTQ7LS1icy1idG4tYm9yZGVyLWNvbG9yOiMxOTg3NTQ7LS1icy1idG4taG92ZXItY29sb3I6I2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzojMTk4NzU0Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojMTk4NzU0Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MjUsMTM1LDg0Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojMTk4NzU0Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6IzE5ODc1NDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojMTk4NzU0Oy0tYnMtYnRuLWRpc2FibGVkLWJnOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjojMTk4NzU0Oy0tYnMtZ3JhZGllbnQ6bm9uZX0uYnRuLW91dGxpbmUtaW5mb3stLWJzLWJ0bi1jb2xvcjojMGRjYWYwOy0tYnMtYnRuLWJvcmRlci1jb2xvcjojMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiMwMDA7LS1icy1idG4taG92ZXItYmc6IzBkY2FmMDstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IzBkY2FmMDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOjEzLDIwMiwyNDA7LS1icy1idG4tYWN0aXZlLWNvbG9yOiMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiMwZGNhZjA7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjojMGRjYWYwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiMwZGNhZjA7LS1icy1idG4tZGlzYWJsZWQtYmc6dHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiMwZGNhZjA7LS1icy1ncmFkaWVudDpub25lfS5idG4tb3V0bGluZS13YXJuaW5ney0tYnMtYnRuLWNvbG9yOiNmZmMxMDc7LS1icy1idG4tYm9yZGVyLWNvbG9yOiNmZmMxMDc7LS1icy1idG4taG92ZXItY29sb3I6IzAwMDstLWJzLWJ0bi1ob3Zlci1iZzojZmZjMTA3Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojZmZjMTA3Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MjU1LDE5Myw3Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzojZmZjMTA3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6I2ZmYzEwNzstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZmZjMTA3Oy0tYnMtYnRuLWRpc2FibGVkLWJnOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjojZmZjMTA3Oy0tYnMtZ3JhZGllbnQ6bm9uZX0uYnRuLW91dGxpbmUtZGFuZ2Vyey0tYnMtYnRuLWNvbG9yOiNkYzM1NDU7LS1icy1idG4tYm9yZGVyLWNvbG9yOiNkYzM1NDU7LS1icy1idG4taG92ZXItY29sb3I6I2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzojZGMzNTQ1Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjojZGMzNTQ1Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6MjIwLDUzLDY5Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzojZGMzNTQ1Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6I2RjMzU0NTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjojZGMzNTQ1Oy0tYnMtYnRuLWRpc2FibGVkLWJnOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjojZGMzNTQ1Oy0tYnMtZ3JhZGllbnQ6bm9uZX0uYnRuLW91dGxpbmUtbGlnaHR7LS1icy1idG4tY29sb3I6I2Y4ZjlmYTstLWJzLWJ0bi1ib3JkZXItY29sb3I6I2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1jb2xvcjojMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiNmOGY5ZmE7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiNmOGY5ZmE7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjoyNDgsMjQ5LDI1MDstLWJzLWJ0bi1hY3RpdmUtY29sb3I6IzAwMDstLWJzLWJ0bi1hY3RpdmUtYmc6I2Y4ZjlmYTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiNmOGY5ZmE7LS1icy1idG4tYWN0aXZlLXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6I2Y4ZjlmYTstLWJzLWJ0bi1kaXNhYmxlZC1iZzp0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6I2Y4ZjlmYTstLWJzLWdyYWRpZW50Om5vbmV9LmJ0bi1vdXRsaW5lLWRhcmt7LS1icy1idG4tY29sb3I6IzIxMjUyOTstLWJzLWJ0bi1ib3JkZXItY29sb3I6IzIxMjUyOTstLWJzLWJ0bi1ob3Zlci1jb2xvcjojZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiMyMTI1Mjk7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiMyMTI1Mjk7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjozMywzNyw0MTstLWJzLWJ0bi1hY3RpdmUtY29sb3I6I2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6IzIxMjUyOTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiMyMTI1Mjk7LS1icy1idG4tYWN0aXZlLXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6IzIxMjUyOTstLWJzLWJ0bi1kaXNhYmxlZC1iZzp0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6IzIxMjUyOTstLWJzLWdyYWRpZW50Om5vbmV9LmJ0bi1saW5rey0tYnMtYnRuLWZvbnQtd2VpZ2h0OjQwMDstLWJzLWJ0bi1jb2xvcjp2YXIoLS1icy1saW5rLWNvbG9yKTstLWJzLWJ0bi1iZzp0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LS1icy1idG4taG92ZXItY29sb3I6dmFyKC0tYnMtbGluay1ob3Zlci1jb2xvcik7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1saW5rLWhvdmVyLWNvbG9yKTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50Oy0tYnMtYnRuLWJveC1zaGFkb3c6MCAwIDAgIzAwMDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOjQ5LDEzMiwyNTM7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uYnRuLWxpbms6Zm9jdXMtdmlzaWJsZXtjb2xvcjp2YXIoLS1icy1idG4tY29sb3IpfS5idG4tbGluazpob3Zlcntjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpfS5idG4tZ3JvdXAtbGc+LmJ0biwuYnRuLWxney0tYnMtYnRuLXBhZGRpbmcteTowLjVyZW07LS1icy1idG4tcGFkZGluZy14OjFyZW07LS1icy1idG4tZm9udC1zaXplOjEuMjVyZW07LS1icy1idG4tYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKX0uYnRuLWdyb3VwLXNtPi5idG4sLmJ0bi1zbXstLWJzLWJ0bi1wYWRkaW5nLXk6MC4yNXJlbTstLWJzLWJ0bi1wYWRkaW5nLXg6MC41cmVtOy0tYnMtYnRuLWZvbnQtc2l6ZTowLjg3NXJlbTstLWJzLWJ0bi1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtc20pfS5mYWRle3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuZmFkZXt0cmFuc2l0aW9uOm5vbmV9fS5mYWRlOm5vdCguc2hvdyl7b3BhY2l0eTowfS5jb2xsYXBzZTpub3QoLnNob3cpe2Rpc3BsYXk6bm9uZX0uY29sbGFwc2luZ3toZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpoZWlnaHQgLjM1cyBlYXNlfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5jb2xsYXBzaW5ne3RyYW5zaXRpb246bm9uZX19LmNvbGxhcHNpbmcuY29sbGFwc2UtaG9yaXpvbnRhbHt3aWR0aDowO2hlaWdodDphdXRvO3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5jb2xsYXBzaW5nLmNvbGxhcHNlLWhvcml6b250YWx7dHJhbnNpdGlvbjpub25lfX0uZHJvcGRvd24sLmRyb3Bkb3duLWNlbnRlciwuZHJvcGVuZCwuZHJvcHN0YXJ0LC5kcm9wdXAsLmRyb3B1cC1jZW50ZXJ7cG9zaXRpb246cmVsYXRpdmV9LmRyb3Bkb3duLXRvZ2dsZXt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6LjI1NWVtO3ZlcnRpY2FsLWFsaWduOi4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6LjNlbSBzb2xpZDtib3JkZXItcmlnaHQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjA7Ym9yZGVyLWxlZnQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlcnttYXJnaW4tbGVmdDowfS5kcm9wZG93bi1tZW51ey0tYnMtZHJvcGRvd24temluZGV4OjEwMDA7LS1icy1kcm9wZG93bi1taW4td2lkdGg6MTByZW07LS1icy1kcm9wZG93bi1wYWRkaW5nLXg6MDstLWJzLWRyb3Bkb3duLXBhZGRpbmcteTowLjVyZW07LS1icy1kcm9wZG93bi1zcGFjZXI6MC4xMjVyZW07LS1icy1kcm9wZG93bi1mb250LXNpemU6MXJlbTstLWJzLWRyb3Bkb3duLWNvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpOy0tYnMtZHJvcGRvd24tYmc6dmFyKC0tYnMtYm9keS1iZyk7LS1icy1kcm9wZG93bi1ib3JkZXItY29sb3I6dmFyKC0tYnMtYm9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KTstLWJzLWRyb3Bkb3duLWJvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cyk7LS1icy1kcm9wZG93bi1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLWRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1icy1ib3JkZXItcmFkaXVzKSAtIHZhcigtLWJzLWJvcmRlci13aWR0aCkpOy0tYnMtZHJvcGRvd24tZGl2aWRlci1iZzp2YXIoLS1icy1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpOy0tYnMtZHJvcGRvd24tZGl2aWRlci1tYXJnaW4teTowLjVyZW07LS1icy1kcm9wZG93bi1ib3gtc2hhZG93OnZhcigtLWJzLWJveC1zaGFkb3cpOy0tYnMtZHJvcGRvd24tbGluay1jb2xvcjp2YXIoLS1icy1ib2R5LWNvbG9yKTstLWJzLWRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7LS1icy1kcm9wZG93bi1saW5rLWhvdmVyLWJnOnZhcigtLWJzLXRlcnRpYXJ5LWJnKTstLWJzLWRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiNmZmY7LS1icy1kcm9wZG93bi1saW5rLWFjdGl2ZS1iZzojMGQ2ZWZkOy0tYnMtZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjp2YXIoLS1icy10ZXJ0aWFyeS1jb2xvcik7LS1icy1kcm9wZG93bi1pdGVtLXBhZGRpbmcteDoxcmVtOy0tYnMtZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6MC4yNXJlbTstLWJzLWRyb3Bkb3duLWhlYWRlci1jb2xvcjojNmM3NTdkOy0tYnMtZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteDoxcmVtOy0tYnMtZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteTowLjVyZW07cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDp2YXIoLS1icy1kcm9wZG93bi16aW5kZXgpO2Rpc3BsYXk6bm9uZTttaW4td2lkdGg6dmFyKC0tYnMtZHJvcGRvd24tbWluLXdpZHRoKTtwYWRkaW5nOnZhcigtLWJzLWRyb3Bkb3duLXBhZGRpbmcteSkgdmFyKC0tYnMtZHJvcGRvd24tcGFkZGluZy14KTttYXJnaW46MDtmb250LXNpemU6dmFyKC0tYnMtZHJvcGRvd24tZm9udC1zaXplKTtjb2xvcjp2YXIoLS1icy1kcm9wZG93bi1jb2xvcik7dGV4dC1hbGlnbjpsZWZ0O2xpc3Qtc3R5bGU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWRyb3Bkb3duLWJnKTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOnZhcigtLWJzLWRyb3Bkb3duLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtZHJvcGRvd24tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWRyb3Bkb3duLWJvcmRlci1yYWRpdXMpfS5kcm9wZG93bi1tZW51W2RhdGEtYnMtcG9wcGVyXXt0b3A6MTAwJTtsZWZ0OjA7bWFyZ2luLXRvcDp2YXIoLS1icy1kcm9wZG93bi1zcGFjZXIpfS5kcm9wZG93bi1tZW51LXN0YXJ0ey0tYnMtcG9zaXRpb246c3RhcnR9LmRyb3Bkb3duLW1lbnUtc3RhcnRbZGF0YS1icy1wb3BwZXJde3JpZ2h0OmF1dG87bGVmdDowfS5kcm9wZG93bi1tZW51LWVuZHstLWJzLXBvc2l0aW9uOmVuZH0uZHJvcGRvd24tbWVudS1lbmRbZGF0YS1icy1wb3BwZXJde3JpZ2h0OjA7bGVmdDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuZHJvcGRvd24tbWVudS1zbS1zdGFydHstLWJzLXBvc2l0aW9uOnN0YXJ0fS5kcm9wZG93bi1tZW51LXNtLXN0YXJ0W2RhdGEtYnMtcG9wcGVyXXtyaWdodDphdXRvO2xlZnQ6MH0uZHJvcGRvd24tbWVudS1zbS1lbmR7LS1icy1wb3NpdGlvbjplbmR9LmRyb3Bkb3duLW1lbnUtc20tZW5kW2RhdGEtYnMtcG9wcGVyXXtyaWdodDowO2xlZnQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5kcm9wZG93bi1tZW51LW1kLXN0YXJ0ey0tYnMtcG9zaXRpb246c3RhcnR9LmRyb3Bkb3duLW1lbnUtbWQtc3RhcnRbZGF0YS1icy1wb3BwZXJde3JpZ2h0OmF1dG87bGVmdDowfS5kcm9wZG93bi1tZW51LW1kLWVuZHstLWJzLXBvc2l0aW9uOmVuZH0uZHJvcGRvd24tbWVudS1tZC1lbmRbZGF0YS1icy1wb3BwZXJde3JpZ2h0OjA7bGVmdDphdXRvfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmRyb3Bkb3duLW1lbnUtbGctc3RhcnR7LS1icy1wb3NpdGlvbjpzdGFydH0uZHJvcGRvd24tbWVudS1sZy1zdGFydFtkYXRhLWJzLXBvcHBlcl17cmlnaHQ6YXV0bztsZWZ0OjB9LmRyb3Bkb3duLW1lbnUtbGctZW5key0tYnMtcG9zaXRpb246ZW5kfS5kcm9wZG93bi1tZW51LWxnLWVuZFtkYXRhLWJzLXBvcHBlcl17cmlnaHQ6MDtsZWZ0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmRyb3Bkb3duLW1lbnUteGwtc3RhcnR7LS1icy1wb3NpdGlvbjpzdGFydH0uZHJvcGRvd24tbWVudS14bC1zdGFydFtkYXRhLWJzLXBvcHBlcl17cmlnaHQ6YXV0bztsZWZ0OjB9LmRyb3Bkb3duLW1lbnUteGwtZW5key0tYnMtcG9zaXRpb246ZW5kfS5kcm9wZG93bi1tZW51LXhsLWVuZFtkYXRhLWJzLXBvcHBlcl17cmlnaHQ6MDtsZWZ0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjE0MDBweCl7LmRyb3Bkb3duLW1lbnUteHhsLXN0YXJ0ey0tYnMtcG9zaXRpb246c3RhcnR9LmRyb3Bkb3duLW1lbnUteHhsLXN0YXJ0W2RhdGEtYnMtcG9wcGVyXXtyaWdodDphdXRvO2xlZnQ6MH0uZHJvcGRvd24tbWVudS14eGwtZW5key0tYnMtcG9zaXRpb246ZW5kfS5kcm9wZG93bi1tZW51LXh4bC1lbmRbZGF0YS1icy1wb3BwZXJde3JpZ2h0OjA7bGVmdDphdXRvfX0uZHJvcHVwIC5kcm9wZG93bi1tZW51W2RhdGEtYnMtcG9wcGVyXXt0b3A6YXV0bztib3R0b206MTAwJTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTp2YXIoLS1icy1kcm9wZG93bi1zcGFjZXIpfS5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6LjI1NWVtO3ZlcnRpY2FsLWFsaWduOi4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6MDtib3JkZXItcmlnaHQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4zZW0gc29saWQ7Ym9yZGVyLWxlZnQ6LjNlbSBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVye21hcmdpbi1sZWZ0OjB9LmRyb3BlbmQgLmRyb3Bkb3duLW1lbnVbZGF0YS1icy1wb3BwZXJde3RvcDowO3JpZ2h0OmF1dG87bGVmdDoxMDAlO21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDp2YXIoLS1icy1kcm9wZG93bi1zcGFjZXIpfS5kcm9wZW5kIC5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0Oi4yNTVlbTt2ZXJ0aWNhbC1hbGlnbjouMjU1ZW07Y29udGVudDoiIjtib3JkZXItdG9wOi4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjA7Ym9yZGVyLWJvdHRvbTouM2VtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0Oi4zZW0gc29saWR9LmRyb3BlbmQgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6MH0uZHJvcGVuZCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlcnt2ZXJ0aWNhbC1hbGlnbjowfS5kcm9wc3RhcnQgLmRyb3Bkb3duLW1lbnVbZGF0YS1icy1wb3BwZXJde3RvcDowO3JpZ2h0OjEwMCU7bGVmdDphdXRvO21hcmdpbi10b3A6MDttYXJnaW4tcmlnaHQ6dmFyKC0tYnMtZHJvcGRvd24tc3BhY2VyKX0uZHJvcHN0YXJ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0Oi4yNTVlbTt2ZXJ0aWNhbC1hbGlnbjouMjU1ZW07Y29udGVudDoiIn0uZHJvcHN0YXJ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVye2Rpc3BsYXk6bm9uZX0uZHJvcHN0YXJ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6LjI1NWVtO3ZlcnRpY2FsLWFsaWduOi4yNTVlbTtjb250ZW50OiIiO2JvcmRlci10b3A6LjNlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6LjNlbSBzb2xpZDtib3JkZXItYm90dG9tOi4zZW0gc29saWQgdHJhbnNwYXJlbnR9LmRyb3BzdGFydCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlcnttYXJnaW4tbGVmdDowfS5kcm9wc3RhcnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3Jle3ZlcnRpY2FsLWFsaWduOjB9LmRyb3Bkb3duLWRpdmlkZXJ7aGVpZ2h0OjA7bWFyZ2luOnZhcigtLWJzLWRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXkpIDA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJzLWRyb3Bkb3duLWRpdmlkZXItYmcpO29wYWNpdHk6MX0uZHJvcGRvd24taXRlbXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzp2YXIoLS1icy1kcm9wZG93bi1pdGVtLXBhZGRpbmcteSkgdmFyKC0tYnMtZHJvcGRvd24taXRlbS1wYWRkaW5nLXgpO2NsZWFyOmJvdGg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLWJzLWRyb3Bkb3duLWxpbmstY29sb3IpO3RleHQtYWxpZ246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLWJzLWRyb3Bkb3duLWl0ZW0tYm9yZGVyLXJhZGl1cywwKX0uZHJvcGRvd24taXRlbTpmb2N1cywuZHJvcGRvd24taXRlbTpob3Zlcntjb2xvcjp2YXIoLS1icy1kcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWRyb3Bkb3duLWxpbmstaG92ZXItYmcpfS5kcm9wZG93bi1pdGVtLmFjdGl2ZSwuZHJvcGRvd24taXRlbTphY3RpdmV7Y29sb3I6dmFyKC0tYnMtZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtZHJvcGRvd24tbGluay1hY3RpdmUtYmcpfS5kcm9wZG93bi1pdGVtLmRpc2FibGVkLC5kcm9wZG93bi1pdGVtOmRpc2FibGVke2NvbG9yOnZhcigtLWJzLWRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3IpO3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uZHJvcGRvd24tbWVudS5zaG93e2Rpc3BsYXk6YmxvY2t9LmRyb3Bkb3duLWhlYWRlcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6dmFyKC0tYnMtZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteSkgdmFyKC0tYnMtZHJvcGRvd24taGVhZGVyLXBhZGRpbmcteCk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTouODc1cmVtO2NvbG9yOnZhcigtLWJzLWRyb3Bkb3duLWhlYWRlci1jb2xvcik7d2hpdGUtc3BhY2U6bm93cmFwfS5kcm9wZG93bi1pdGVtLXRleHR7ZGlzcGxheTpibG9jaztwYWRkaW5nOnZhcigtLWJzLWRyb3Bkb3duLWl0ZW0tcGFkZGluZy15KSB2YXIoLS1icy1kcm9wZG93bi1pdGVtLXBhZGRpbmcteCk7Y29sb3I6dmFyKC0tYnMtZHJvcGRvd24tbGluay1jb2xvcil9LmRyb3Bkb3duLW1lbnUtZGFya3stLWJzLWRyb3Bkb3duLWNvbG9yOiNkZWUyZTY7LS1icy1kcm9wZG93bi1iZzojMzQzYTQwOy0tYnMtZHJvcGRvd24tYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1kcm9wZG93bi1ib3gtc2hhZG93OiA7LS1icy1kcm9wZG93bi1saW5rLWNvbG9yOiNkZWUyZTY7LS1icy1kcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiNmZmY7LS1icy1kcm9wZG93bi1kaXZpZGVyLWJnOnZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1kcm9wZG93bi1saW5rLWhvdmVyLWJnOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7LS1icy1kcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtZHJvcGRvd24tbGluay1hY3RpdmUtYmc6IzBkNmVmZDstLWJzLWRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6I2FkYjViZDstLWJzLWRyb3Bkb3duLWhlYWRlci1jb2xvcjojYWRiNWJkfS5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4sLmJ0bi1ncm91cD4uYnRue3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6MSAxIGF1dG99LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWNoZWNrOmNoZWNrZWQrLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tY2hlY2s6Zm9jdXMrLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4uYWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZvY3VzLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG4tY2hlY2s6Y2hlY2tlZCsuYnRuLC5idG4tZ3JvdXA+LmJ0bi1jaGVjazpmb2N1cysuYnRuLC5idG4tZ3JvdXA+LmJ0bi5hY3RpdmUsLmJ0bi1ncm91cD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwPi5idG46Zm9jdXMsLmJ0bi1ncm91cD4uYnRuOmhvdmVye3otaW5kZXg6MX0uYnRuLXRvb2xiYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXB7d2lkdGg6YXV0b30uYnRuLWdyb3Vwe2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cyl9LmJ0bi1ncm91cD4uYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXA+Om5vdCguYnRuLWNoZWNrOmZpcnN0LWNoaWxkKSsuYnRue21hcmdpbi1sZWZ0OmNhbGModmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAqIC0xKX0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXA+LmJ0bi5kcm9wZG93bi10b2dnbGUtc3BsaXQ6Zmlyc3QtY2hpbGQsLmJ0bi1ncm91cD4uYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk+LmJ0biwuYnRuLWdyb3VwPi5idG46bnRoLWNoaWxkKG4rMyksLmJ0bi1ncm91cD46bm90KC5idG4tY2hlY2spKy5idG57Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZHJvcGRvd24tdG9nZ2xlLXNwbGl0e3BhZGRpbmctcmlnaHQ6LjU2MjVyZW07cGFkZGluZy1sZWZ0Oi41NjI1cmVtfS5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLC5kcm9wZW5kIC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLC5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXJ7bWFyZ2luLWxlZnQ6MH0uZHJvcHN0YXJ0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmJlZm9yZXttYXJnaW4tcmlnaHQ6MH0uYnRuLWdyb3VwLXNtPi5idG4rLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwuYnRuLXNtKy5kcm9wZG93bi10b2dnbGUtc3BsaXR7cGFkZGluZy1yaWdodDouMzc1cmVtO3BhZGRpbmctbGVmdDouMzc1cmVtfS5idG4tZ3JvdXAtbGc+LmJ0bisuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LC5idG4tbGcrLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdHtwYWRkaW5nLXJpZ2h0Oi43NXJlbTtwYWRkaW5nLWxlZnQ6Ljc1cmVtfS5idG4tZ3JvdXAtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4sLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3Vwe3dpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tdG9wOmNhbGModmFyKC0tYnMtYm9yZGVyLXdpZHRoKSAqIC0xKX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG5+LmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubmF2ey0tYnMtbmF2LWxpbmstcGFkZGluZy14OjFyZW07LS1icy1uYXYtbGluay1wYWRkaW5nLXk6MC41cmVtOy0tYnMtbmF2LWxpbmstZm9udC13ZWlnaHQ6IDstLWJzLW5hdi1saW5rLWNvbG9yOnZhcigtLWJzLWxpbmstY29sb3IpOy0tYnMtbmF2LWxpbmstaG92ZXItY29sb3I6dmFyKC0tYnMtbGluay1ob3Zlci1jb2xvcik7LS1icy1uYXYtbGluay1kaXNhYmxlZC1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXYtbGlua3tkaXNwbGF5OmJsb2NrO3BhZGRpbmc6dmFyKC0tYnMtbmF2LWxpbmstcGFkZGluZy15KSB2YXIoLS1icy1uYXYtbGluay1wYWRkaW5nLXgpO2ZvbnQtc2l6ZTp2YXIoLS1icy1uYXYtbGluay1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLW5hdi1saW5rLWZvbnQtd2VpZ2h0KTtjb2xvcjp2YXIoLS1icy1uYXYtbGluay1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dH1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsubmF2LWxpbmt7dHJhbnNpdGlvbjpub25lfX0ubmF2LWxpbms6Zm9jdXMsLm5hdi1saW5rOmhvdmVye2NvbG9yOnZhcigtLWJzLW5hdi1saW5rLWhvdmVyLWNvbG9yKX0ubmF2LWxpbms6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjA7Ym94LXNoYWRvdzowIDAgMCAuMjVyZW0gcmdiYSgxMywxMTAsMjUzLC4yNSl9Lm5hdi1saW5rLmRpc2FibGVkLC5uYXYtbGluazpkaXNhYmxlZHtjb2xvcjp2YXIoLS1icy1uYXYtbGluay1kaXNhYmxlZC1jb2xvcik7cG9pbnRlci1ldmVudHM6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubmF2LXRhYnN7LS1icy1uYXYtdGFicy1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLW5hdi10YWJzLWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3IpOy0tYnMtbmF2LXRhYnMtYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLW5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1iZykgdmFyKC0tYnMtc2Vjb25kYXJ5LWJnKSB2YXIoLS1icy1ib3JkZXItY29sb3IpOy0tYnMtbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6dmFyKC0tYnMtYm9keS1iZyk7LS1icy1uYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtYm9yZGVyLWNvbG9yKSB2YXIoLS1icy1ib3JkZXItY29sb3IpIHZhcigtLWJzLWJvZHktYmcpO2JvcmRlci1ib3R0b206dmFyKC0tYnMtbmF2LXRhYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1uYXYtdGFicy1ib3JkZXItY29sb3IpfS5uYXYtdGFicyAubmF2LWxpbmt7bWFyZ2luLWJvdHRvbTpjYWxjKC0xICogdmFyKC0tYnMtbmF2LXRhYnMtYm9yZGVyLXdpZHRoKSk7Ym9yZGVyOnZhcigtLWJzLW5hdi10YWJzLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1uYXYtdGFicy1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1uYXYtdGFicy1ib3JkZXItcmFkaXVzKX0ubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzLC5uYXYtdGFicyAubmF2LWxpbms6aG92ZXJ7aXNvbGF0aW9uOmlzb2xhdGU7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLW5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yKX0ubmF2LXRhYnMgLm5hdi1pdGVtLnNob3cgLm5hdi1saW5rLC5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZle2NvbG9yOnZhcigtLWJzLW5hdi10YWJzLWxpbmstYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLW5hdi10YWJzLWxpbmstYWN0aXZlLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yKX0ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnV7bWFyZ2luLXRvcDpjYWxjKC0xICogdmFyKC0tYnMtbmF2LXRhYnMtYm9yZGVyLXdpZHRoKSk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lm5hdi1waWxsc3stLWJzLW5hdi1waWxscy1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpOy0tYnMtbmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yOiNmZmY7LS1icy1uYXYtcGlsbHMtbGluay1hY3RpdmUtYmc6IzBkNmVmZH0ubmF2LXBpbGxzIC5uYXYtbGlua3tib3JkZXItcmFkaXVzOnZhcigtLWJzLW5hdi1waWxscy1ib3JkZXItcmFkaXVzKX0ubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsLm5hdi1waWxscyAuc2hvdz4ubmF2LWxpbmt7Y29sb3I6dmFyKC0tYnMtbmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLW5hdi1waWxscy1saW5rLWFjdGl2ZS1iZyl9Lm5hdi11bmRlcmxpbmV7LS1icy1uYXYtdW5kZXJsaW5lLWdhcDoxcmVtOy0tYnMtbmF2LXVuZGVybGluZS1ib3JkZXItd2lkdGg6MC4xMjVyZW07LS1icy1uYXYtdW5kZXJsaW5lLWxpbmstYWN0aXZlLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTtnYXA6dmFyKC0tYnMtbmF2LXVuZGVybGluZS1nYXApfS5uYXYtdW5kZXJsaW5lIC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjA7Ym9yZGVyLWJvdHRvbTp2YXIoLS1icy1uYXYtdW5kZXJsaW5lLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnR9Lm5hdi11bmRlcmxpbmUgLm5hdi1saW5rOmZvY3VzLC5uYXYtdW5kZXJsaW5lIC5uYXYtbGluazpob3Zlcntib3JkZXItYm90dG9tLWNvbG9yOmN1cnJlbnRjb2xvcn0ubmF2LXVuZGVybGluZSAubmF2LWxpbmsuYWN0aXZlLC5uYXYtdW5kZXJsaW5lIC5zaG93Pi5uYXYtbGlua3tmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYnMtbmF2LXVuZGVybGluZS1saW5rLWFjdGl2ZS1jb2xvcik7Ym9yZGVyLWJvdHRvbS1jb2xvcjpjdXJyZW50Y29sb3J9Lm5hdi1maWxsIC5uYXYtaXRlbSwubmF2LWZpbGw+Lm5hdi1saW5re2ZsZXg6MSAxIGF1dG87dGV4dC1hbGlnbjpjZW50ZXJ9Lm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtLC5uYXYtanVzdGlmaWVkPi5uYXYtbGlua3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7dGV4dC1hbGlnbjpjZW50ZXJ9Lm5hdi1maWxsIC5uYXYtaXRlbSAubmF2LWxpbmssLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIC5uYXYtbGlua3t3aWR0aDoxMDAlfS50YWItY29udGVudD4udGFiLXBhbmV7ZGlzcGxheTpub25lfS50YWItY29udGVudD4uYWN0aXZle2Rpc3BsYXk6YmxvY2t9Lm5hdmJhcnstLWJzLW5hdmJhci1wYWRkaW5nLXg6MDstLWJzLW5hdmJhci1wYWRkaW5nLXk6MC41cmVtOy0tYnMtbmF2YmFyLWNvbG9yOnJnYmEodmFyKC0tYnMtZW1waGFzaXMtY29sb3ItcmdiKSwgMC42NSk7LS1icy1uYXZiYXItaG92ZXItY29sb3I6cmdiYSh2YXIoLS1icy1lbXBoYXNpcy1jb2xvci1yZ2IpLCAwLjgpOy0tYnMtbmF2YmFyLWRpc2FibGVkLWNvbG9yOnJnYmEodmFyKC0tYnMtZW1waGFzaXMtY29sb3ItcmdiKSwgMC4zKTstLWJzLW5hdmJhci1hY3RpdmUtY29sb3I6cmdiYSh2YXIoLS1icy1lbXBoYXNpcy1jb2xvci1yZ2IpLCAxKTstLWJzLW5hdmJhci1icmFuZC1wYWRkaW5nLXk6MC4zMTI1cmVtOy0tYnMtbmF2YmFyLWJyYW5kLW1hcmdpbi1lbmQ6MXJlbTstLWJzLW5hdmJhci1icmFuZC1mb250LXNpemU6MS4yNXJlbTstLWJzLW5hdmJhci1icmFuZC1jb2xvcjpyZ2JhKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksIDEpOy0tYnMtbmF2YmFyLWJyYW5kLWhvdmVyLWNvbG9yOnJnYmEodmFyKC0tYnMtZW1waGFzaXMtY29sb3ItcmdiKSwgMSk7LS1icy1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14OjAuNXJlbTstLWJzLW5hdmJhci10b2dnbGVyLXBhZGRpbmcteTowLjI1cmVtOy0tYnMtbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14OjAuNzVyZW07LS1icy1uYXZiYXItdG9nZ2xlci1mb250LXNpemU6MS4yNXJlbTstLWJzLW5hdmJhci10b2dnbGVyLWljb24tYmc6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMwIDMwJyUzZSUzY3BhdGggc3Ryb2tlPSdyZ2JhJTI4MzMsIDM3LCA0MSwgMC43NSUyOScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzZSUzYy9zdmclM2UiKTstLWJzLW5hdmJhci10b2dnbGVyLWJvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksIDAuMTUpOy0tYnMtbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoOjAuMjVyZW07LS1icy1uYXZiYXItdG9nZ2xlci10cmFuc2l0aW9uOmJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOnZhcigtLWJzLW5hdmJhci1wYWRkaW5nLXkpIHZhcigtLWJzLW5hdmJhci1wYWRkaW5nLXgpfS5uYXZiYXI+LmNvbnRhaW5lciwubmF2YmFyPi5jb250YWluZXItZmx1aWQsLm5hdmJhcj4uY29udGFpbmVyLWxnLC5uYXZiYXI+LmNvbnRhaW5lci1tZCwubmF2YmFyPi5jb250YWluZXItc20sLm5hdmJhcj4uY29udGFpbmVyLXhsLC5uYXZiYXI+LmNvbnRhaW5lci14eGx7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDppbmhlcml0O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ubmF2YmFyLWJyYW5ke3BhZGRpbmctdG9wOnZhcigtLWJzLW5hdmJhci1icmFuZC1wYWRkaW5nLXkpO3BhZGRpbmctYm90dG9tOnZhcigtLWJzLW5hdmJhci1icmFuZC1wYWRkaW5nLXkpO21hcmdpbi1yaWdodDp2YXIoLS1icy1uYXZiYXItYnJhbmQtbWFyZ2luLWVuZCk7Zm9udC1zaXplOnZhcigtLWJzLW5hdmJhci1icmFuZC1mb250LXNpemUpO2NvbG9yOnZhcigtLWJzLW5hdmJhci1icmFuZC1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwfS5uYXZiYXItYnJhbmQ6Zm9jdXMsLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjp2YXIoLS1icy1uYXZiYXItYnJhbmQtaG92ZXItY29sb3IpfS5uYXZiYXItbmF2ey0tYnMtbmF2LWxpbmstcGFkZGluZy14OjA7LS1icy1uYXYtbGluay1wYWRkaW5nLXk6MC41cmVtOy0tYnMtbmF2LWxpbmstZm9udC13ZWlnaHQ6IDstLWJzLW5hdi1saW5rLWNvbG9yOnZhcigtLWJzLW5hdmJhci1jb2xvcik7LS1icy1uYXYtbGluay1ob3Zlci1jb2xvcjp2YXIoLS1icy1uYXZiYXItaG92ZXItY29sb3IpOy0tYnMtbmF2LWxpbmstZGlzYWJsZWQtY29sb3I6dmFyKC0tYnMtbmF2YmFyLWRpc2FibGVkLWNvbG9yKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtsaXN0LXN0eWxlOm5vbmV9Lm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvd3tjb2xvcjp2YXIoLS1icy1uYXZiYXItYWN0aXZlLWNvbG9yKX0ubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjpzdGF0aWN9Lm5hdmJhci10ZXh0e3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtO2NvbG9yOnZhcigtLWJzLW5hdmJhci1jb2xvcil9Lm5hdmJhci10ZXh0IGEsLm5hdmJhci10ZXh0IGE6Zm9jdXMsLm5hdmJhci10ZXh0IGE6aG92ZXJ7Y29sb3I6dmFyKC0tYnMtbmF2YmFyLWFjdGl2ZS1jb2xvcil9Lm5hdmJhci1jb2xsYXBzZXtmbGV4LWJhc2lzOjEwMCU7ZmxleC1ncm93OjE7YWxpZ24taXRlbXM6Y2VudGVyfS5uYXZiYXItdG9nZ2xlcntwYWRkaW5nOnZhcigtLWJzLW5hdmJhci10b2dnbGVyLXBhZGRpbmcteSkgdmFyKC0tYnMtbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14KTtmb250LXNpemU6dmFyKC0tYnMtbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplKTtsaW5lLWhlaWdodDoxO2NvbG9yOnZhcigtLWJzLW5hdmJhci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1uYXZiYXItdG9nZ2xlci1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1cyk7dHJhbnNpdGlvbjp2YXIoLS1icy1uYXZiYXItdG9nZ2xlci10cmFuc2l0aW9uKX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsubmF2YmFyLXRvZ2dsZXJ7dHJhbnNpdGlvbjpub25lfX0ubmF2YmFyLXRvZ2dsZXI6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm5hdmJhci10b2dnbGVyOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAwIHZhcigtLWJzLW5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoKX0ubmF2YmFyLXRvZ2dsZXItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxLjVlbTtoZWlnaHQ6MS41ZW07dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtaW1hZ2U6dmFyKC0tYnMtbmF2YmFyLXRvZ2dsZXItaWNvbi1iZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyO2JhY2tncm91bmQtc2l6ZToxMDAlfS5uYXZiYXItbmF2LXNjcm9sbHttYXgtaGVpZ2h0OnZhcigtLWJzLXNjcm9sbC1oZWlnaHQsNzV2aCk7b3ZlcmZsb3cteTphdXRvfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsubmF2YmFyLWV4cGFuZC1zbXtmbGV4LXdyYXA6bm93cmFwO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2e2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmt7cGFkZGluZy1yaWdodDp2YXIoLS1icy1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KTtwYWRkaW5nLWxlZnQ6dmFyKC0tYnMtbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCl9Lm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYtc2Nyb2xse292ZXJmbG93OnZpc2libGV9Lm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kLXNtIC5vZmZjYW52YXN7cG9zaXRpb246c3RhdGljO3otaW5kZXg6YXV0bztmbGV4LWdyb3c6MTt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246bm9uZX0ubmF2YmFyLWV4cGFuZC1zbSAub2ZmY2FudmFzIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ubmF2YmFyLWV4cGFuZC1zbSAub2ZmY2FudmFzIC5vZmZjYW52YXMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7cGFkZGluZzowO292ZXJmbG93LXk6dmlzaWJsZX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItZXhwYW5kLW1ke2ZsZXgtd3JhcDpub3dyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXZ7ZmxleC1kaXJlY3Rpb246cm93fS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlfS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OnZhcigtLWJzLW5hdmJhci1uYXYtbGluay1wYWRkaW5nLXgpO3BhZGRpbmctbGVmdDp2YXIoLS1icy1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KX0ubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdi1zY3JvbGx7b3ZlcmZsb3c6dmlzaWJsZX0ubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLWNvbGxhcHNle2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1iYXNpczphdXRvfS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQtbWQgLm9mZmNhbnZhc3twb3NpdGlvbjpzdGF0aWM7ei1pbmRleDphdXRvO2ZsZXgtZ3JvdzoxO3dpZHRoOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDt2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDt0cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lfS5uYXZiYXItZXhwYW5kLW1kIC5vZmZjYW52YXMgLm9mZmNhbnZhcy1oZWFkZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kLW1kIC5vZmZjYW52YXMgLm9mZmNhbnZhcy1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MDtwYWRkaW5nOjA7b3ZlcmZsb3cteTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm5hdmJhci1leHBhbmQtbGd7ZmxleC13cmFwOm5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdntmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6dmFyKC0tYnMtbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCk7cGFkZGluZy1sZWZ0OnZhcigtLWJzLW5hdmJhci1uYXYtbGluay1wYWRkaW5nLXgpfS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2LXNjcm9sbHtvdmVyZmxvdzp2aXNpYmxlfS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWJhc2lzOmF1dG99Lm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVye2Rpc3BsYXk6bm9uZX0ubmF2YmFyLWV4cGFuZC1sZyAub2ZmY2FudmFze3Bvc2l0aW9uOnN0YXRpYzt6LWluZGV4OmF1dG87ZmxleC1ncm93OjE7d2lkdGg6YXV0byFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O3RyYW5zZm9ybTpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmV9Lm5hdmJhci1leHBhbmQtbGcgLm9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWRlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQtbGcgLm9mZmNhbnZhcyAub2ZmY2FudmFzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO3BhZGRpbmc6MDtvdmVyZmxvdy15OnZpc2libGV9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7Lm5hdmJhci1leHBhbmQteGx7ZmxleC13cmFwOm5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdntmbGV4LWRpcmVjdGlvbjpyb3d9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLm5hdi1saW5re3BhZGRpbmctcmlnaHQ6dmFyKC0tYnMtbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCk7cGFkZGluZy1sZWZ0OnZhcigtLWJzLW5hdmJhci1uYXYtbGluay1wYWRkaW5nLXgpfS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2LXNjcm9sbHtvdmVyZmxvdzp2aXNpYmxlfS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWJhc2lzOmF1dG99Lm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVye2Rpc3BsYXk6bm9uZX0ubmF2YmFyLWV4cGFuZC14bCAub2ZmY2FudmFze3Bvc2l0aW9uOnN0YXRpYzt6LWluZGV4OmF1dG87ZmxleC1ncm93OjE7d2lkdGg6YXV0byFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O3Zpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O3RyYW5zZm9ybTpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmV9Lm5hdmJhci1leHBhbmQteGwgLm9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWRlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQteGwgLm9mZmNhbnZhcyAub2ZmY2FudmFzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO3BhZGRpbmc6MDtvdmVyZmxvdy15OnZpc2libGV9fUBtZWRpYSAobWluLXdpZHRoOjE0MDBweCl7Lm5hdmJhci1leHBhbmQteHhse2ZsZXgtd3JhcDpub3dyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItbmF2e2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZC14eGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9Lm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItbmF2IC5uYXYtbGlua3twYWRkaW5nLXJpZ2h0OnZhcigtLWJzLW5hdmJhci1uYXYtbGluay1wYWRkaW5nLXgpO3BhZGRpbmctbGVmdDp2YXIoLS1icy1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KX0ubmF2YmFyLWV4cGFuZC14eGwgLm5hdmJhci1uYXYtc2Nyb2xse292ZXJmbG93OnZpc2libGV9Lm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItY29sbGFwc2V7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWJhc2lzOmF1dG99Lm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItdG9nZ2xlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQteHhsIC5vZmZjYW52YXN7cG9zaXRpb246c3RhdGljO3otaW5kZXg6YXV0bztmbGV4LWdyb3c6MTt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246bm9uZX0ubmF2YmFyLWV4cGFuZC14eGwgLm9mZmNhbnZhcyAub2ZmY2FudmFzLWhlYWRlcntkaXNwbGF5Om5vbmV9Lm5hdmJhci1leHBhbmQteHhsIC5vZmZjYW52YXMgLm9mZmNhbnZhcy1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MDtwYWRkaW5nOjA7b3ZlcmZsb3cteTp2aXNpYmxlfX0ubmF2YmFyLWV4cGFuZHtmbGV4LXdyYXA6bm93cmFwO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2e2ZsZXgtZGlyZWN0aW9uOnJvd30ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmt7cGFkZGluZy1yaWdodDp2YXIoLS1icy1uYXZiYXItbmF2LWxpbmstcGFkZGluZy14KTtwYWRkaW5nLWxlZnQ6dmFyKC0tYnMtbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteCl9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYtc2Nyb2xse292ZXJmbG93OnZpc2libGV9Lm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtYmFzaXM6YXV0b30ubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXJ7ZGlzcGxheTpub25lfS5uYXZiYXItZXhwYW5kIC5vZmZjYW52YXN7cG9zaXRpb246c3RhdGljO3otaW5kZXg6YXV0bztmbGV4LWdyb3c6MTt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246bm9uZX0ubmF2YmFyLWV4cGFuZCAub2ZmY2FudmFzIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ubmF2YmFyLWV4cGFuZCAub2ZmY2FudmFzIC5vZmZjYW52YXMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7cGFkZGluZzowO292ZXJmbG93LXk6dmlzaWJsZX0ubmF2YmFyLWRhcmssLm5hdmJhcltkYXRhLWJzLXRoZW1lPWRhcmtdey0tYnMtbmF2YmFyLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSk7LS1icy1uYXZiYXItaG92ZXItY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTstLWJzLW5hdmJhci1kaXNhYmxlZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOy0tYnMtbmF2YmFyLWFjdGl2ZS1jb2xvcjojZmZmOy0tYnMtbmF2YmFyLWJyYW5kLWNvbG9yOiNmZmY7LS1icy1uYXZiYXItYnJhbmQtaG92ZXItY29sb3I6I2ZmZjstLWJzLW5hdmJhci10b2dnbGVyLWJvcmRlci1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7LS1icy1uYXZiYXItdG9nZ2xlci1pY29uLWJnOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMCAzMCclM2UlM2NwYXRoIHN0cm9rZT0ncmdiYSUyODI1NSwgMjU1LCAyNTUsIDAuNTUlMjknIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM2UlM2Mvc3ZnJTNlIil9W2RhdGEtYnMtdGhlbWU9ZGFya10gLm5hdmJhci10b2dnbGVyLWljb257LS1icy1uYXZiYXItdG9nZ2xlci1pY29uLWJnOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMCAzMCclM2UlM2NwYXRoIHN0cm9rZT0ncmdiYSUyODI1NSwgMjU1LCAyNTUsIDAuNTUlMjknIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM2UlM2Mvc3ZnJTNlIil9LmNhcmR7LS1icy1jYXJkLXNwYWNlci15OjFyZW07LS1icy1jYXJkLXNwYWNlci14OjFyZW07LS1icy1jYXJkLXRpdGxlLXNwYWNlci15OjAuNXJlbTstLWJzLWNhcmQtdGl0bGUtY29sb3I6IDstLWJzLWNhcmQtc3VidGl0bGUtY29sb3I6IDstLWJzLWNhcmQtYm9yZGVyLXdpZHRoOnZhcigtLWJzLWJvcmRlci13aWR0aCk7LS1icy1jYXJkLWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpOy0tYnMtY2FyZC1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpOy0tYnMtY2FyZC1ib3gtc2hhZG93OiA7LS1icy1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1icy1ib3JkZXItcmFkaXVzKSAtICh2YXIoLS1icy1ib3JkZXItd2lkdGgpKSk7LS1icy1jYXJkLWNhcC1wYWRkaW5nLXk6MC41cmVtOy0tYnMtY2FyZC1jYXAtcGFkZGluZy14OjFyZW07LS1icy1jYXJkLWNhcC1iZzpyZ2JhKHZhcigtLWJzLWJvZHktY29sb3ItcmdiKSwgMC4wMyk7LS1icy1jYXJkLWNhcC1jb2xvcjogOy0tYnMtY2FyZC1oZWlnaHQ6IDstLWJzLWNhcmQtY29sb3I6IDstLWJzLWNhcmQtYmc6dmFyKC0tYnMtYm9keS1iZyk7LS1icy1jYXJkLWltZy1vdmVybGF5LXBhZGRpbmc6MXJlbTstLWJzLWNhcmQtZ3JvdXAtbWFyZ2luOjAuNzVyZW07cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MDtoZWlnaHQ6dmFyKC0tYnMtY2FyZC1oZWlnaHQpO2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpO3dvcmQtd3JhcDpicmVhay13b3JkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtY2FyZC1iZyk7YmFja2dyb3VuZC1jbGlwOmJvcmRlci1ib3g7Ym9yZGVyOnZhcigtLWJzLWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1jYXJkLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1jYXJkLWJvcmRlci1yYWRpdXMpfS5jYXJkPmhye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9LmNhcmQ+Lmxpc3QtZ3JvdXB7Ym9yZGVyLXRvcDppbmhlcml0O2JvcmRlci1ib3R0b206aW5oZXJpdH0uY2FyZD4ubGlzdC1ncm91cDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyl9LmNhcmQ+Lmxpc3QtZ3JvdXA6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyl9LmNhcmQ+LmNhcmQtaGVhZGVyKy5saXN0LWdyb3VwLC5jYXJkPi5saXN0LWdyb3VwKy5jYXJkLWZvb3Rlcntib3JkZXItdG9wOjB9LmNhcmQtYm9keXtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tYnMtY2FyZC1zcGFjZXIteSkgdmFyKC0tYnMtY2FyZC1zcGFjZXIteCk7Y29sb3I6dmFyKC0tYnMtY2FyZC1jb2xvcil9LmNhcmQtdGl0bGV7bWFyZ2luLWJvdHRvbTp2YXIoLS1icy1jYXJkLXRpdGxlLXNwYWNlci15KTtjb2xvcjp2YXIoLS1icy1jYXJkLXRpdGxlLWNvbG9yKX0uY2FyZC1zdWJ0aXRsZXttYXJnaW4tdG9wOmNhbGMoLS41ICogdmFyKC0tYnMtY2FyZC10aXRsZS1zcGFjZXIteSkpO21hcmdpbi1ib3R0b206MDtjb2xvcjp2YXIoLS1icy1jYXJkLXN1YnRpdGxlLWNvbG9yKX0uY2FyZC10ZXh0Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jYXJkLWxpbmsrLmNhcmQtbGlua3ttYXJnaW4tbGVmdDp2YXIoLS1icy1jYXJkLXNwYWNlci14KX0uY2FyZC1oZWFkZXJ7cGFkZGluZzp2YXIoLS1icy1jYXJkLWNhcC1wYWRkaW5nLXkpIHZhcigtLWJzLWNhcmQtY2FwLXBhZGRpbmcteCk7bWFyZ2luLWJvdHRvbTowO2NvbG9yOnZhcigtLWJzLWNhcmQtY2FwLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWNhcmQtY2FwLWJnKTtib3JkZXItYm90dG9tOnZhcigtLWJzLWNhcmQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1jYXJkLWJvcmRlci1jb2xvcil9LmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKSB2YXIoLS1icy1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpIDAgMH0uY2FyZC1mb290ZXJ7cGFkZGluZzp2YXIoLS1icy1jYXJkLWNhcC1wYWRkaW5nLXkpIHZhcigtLWJzLWNhcmQtY2FwLXBhZGRpbmcteCk7Y29sb3I6dmFyKC0tYnMtY2FyZC1jYXAtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtY2FyZC1jYXAtYmcpO2JvcmRlci10b3A6dmFyKC0tYnMtY2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLWNhcmQtYm9yZGVyLWNvbG9yKX0uY2FyZC1mb290ZXI6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1icy1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpIHZhcigtLWJzLWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyl9LmNhcmQtaGVhZGVyLXRhYnN7bWFyZ2luLXJpZ2h0OmNhbGMoLS41ICogdmFyKC0tYnMtY2FyZC1jYXAtcGFkZGluZy14KSk7bWFyZ2luLWJvdHRvbTpjYWxjKC0xICogdmFyKC0tYnMtY2FyZC1jYXAtcGFkZGluZy15KSk7bWFyZ2luLWxlZnQ6Y2FsYygtLjUgKiB2YXIoLS1icy1jYXJkLWNhcC1wYWRkaW5nLXgpKTtib3JkZXItYm90dG9tOjB9LmNhcmQtaGVhZGVyLXRhYnMgLm5hdi1saW5rLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWNhcmQtYmcpO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tYnMtY2FyZC1iZyl9LmNhcmQtaGVhZGVyLXBpbGxze21hcmdpbi1yaWdodDpjYWxjKC0uNSAqIHZhcigtLWJzLWNhcmQtY2FwLXBhZGRpbmcteCkpO21hcmdpbi1sZWZ0OmNhbGMoLS41ICogdmFyKC0tYnMtY2FyZC1jYXAtcGFkZGluZy14KSl9LmNhcmQtaW1nLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7cGFkZGluZzp2YXIoLS1icy1jYXJkLWltZy1vdmVybGF5LXBhZGRpbmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKX0uY2FyZC1pbWcsLmNhcmQtaW1nLWJvdHRvbSwuY2FyZC1pbWctdG9we3dpZHRoOjEwMCV9LmNhcmQtaW1nLC5jYXJkLWltZy10b3B7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1jYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyl9LmNhcmQtaW1nLC5jYXJkLWltZy1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyl9LmNhcmQtZ3JvdXA+LmNhcmR7bWFyZ2luLWJvdHRvbTp2YXIoLS1icy1jYXJkLWdyb3VwLW1hcmdpbil9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jYXJkLWdyb3Vwe2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXB9LmNhcmQtZ3JvdXA+LmNhcmR7ZmxleDoxIDAgMCU7bWFyZ2luLWJvdHRvbTowfS5jYXJkLWdyb3VwPi5jYXJkKy5jYXJke21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWxlZnQ6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWhlYWRlciwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWltZy10b3B7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWZvb3RlciwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWltZy1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5jYXJkLWdyb3VwPi5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpIC5jYXJkLWhlYWRlciwuY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKSAuY2FyZC1pbWctdG9we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uY2FyZC1ncm91cD4uY2FyZDpub3QoOmZpcnN0LWNoaWxkKSAuY2FyZC1mb290ZXIsLmNhcmQtZ3JvdXA+LmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9fS5hY2NvcmRpb257LS1icy1hY2NvcmRpb24tY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7LS1icy1hY2NvcmRpb24tYmc6dmFyKC0tYnMtYm9keS1iZyk7LS1icy1hY2NvcmRpb24tdHJhbnNpdGlvbjpjb2xvciAwLjE1cyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0LGJvcmRlci1yYWRpdXMgMC4xNXMgZWFzZTstLWJzLWFjY29yZGlvbi1ib3JkZXItY29sb3I6dmFyKC0tYnMtYm9yZGVyLWNvbG9yKTstLWJzLWFjY29yZGlvbi1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpOy0tYnMtYWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1icy1ib3JkZXItcmFkaXVzKSAtICh2YXIoLS1icy1ib3JkZXItd2lkdGgpKSk7LS1icy1hY2NvcmRpb24tYnRuLXBhZGRpbmcteDoxLjI1cmVtOy0tYnMtYWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXk6MXJlbTstLWJzLWFjY29yZGlvbi1idG4tY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7LS1icy1hY2NvcmRpb24tYnRuLWJnOnZhcigtLWJzLWFjY29yZGlvbi1iZyk7LS1icy1hY2NvcmRpb24tYnRuLWljb246dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMyMTI1MjknJTNlJTNjcGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHonLyUzZSUzYy9zdmclM2UiKTstLWJzLWFjY29yZGlvbi1idG4taWNvbi13aWR0aDoxLjI1cmVtOy0tYnMtYWNjb3JkaW9uLWJ0bi1pY29uLXRyYW5zZm9ybTpyb3RhdGUoLTE4MGRlZyk7LS1icy1hY2NvcmRpb24tYnRuLWljb24tdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4ycyBlYXNlLWluLW91dDstLWJzLWFjY29yZGlvbi1idG4tYWN0aXZlLWljb246dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMwNTJjNjUnJTNlJTNjcGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHonLyUzZSUzYy9zdmclM2UiKTstLWJzLWFjY29yZGlvbi1idG4tZm9jdXMtYm9yZGVyLWNvbG9yOiM4NmI3ZmU7LS1icy1hY2NvcmRpb24tYnRuLWZvY3VzLWJveC1zaGFkb3c6MCAwIDAgMC4yNXJlbSByZ2JhKDEzLCAxMTAsIDI1MywgMC4yNSk7LS1icy1hY2NvcmRpb24tYm9keS1wYWRkaW5nLXg6MS4yNXJlbTstLWJzLWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteToxcmVtOy0tYnMtYWNjb3JkaW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1wcmltYXJ5LXRleHQtZW1waGFzaXMpOy0tYnMtYWNjb3JkaW9uLWFjdGl2ZS1iZzp2YXIoLS1icy1wcmltYXJ5LWJnLXN1YnRsZSl9LmFjY29yZGlvbi1idXR0b257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1wYWRkaW5nLXkpIHZhcigtLWJzLWFjY29yZGlvbi1idG4tcGFkZGluZy14KTtmb250LXNpemU6MXJlbTtjb2xvcjp2YXIoLS1icy1hY2NvcmRpb24tYnRuLWNvbG9yKTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1hY2NvcmRpb24tYnRuLWJnKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7b3ZlcmZsb3ctYW5jaG9yOm5vbmU7dHJhbnNpdGlvbjp2YXIoLS1icy1hY2NvcmRpb24tdHJhbnNpdGlvbil9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmFjY29yZGlvbi1idXR0b257dHJhbnNpdGlvbjpub25lfX0uYWNjb3JkaW9uLWJ1dHRvbjpub3QoLmNvbGxhcHNlZCl7Y29sb3I6dmFyKC0tYnMtYWNjb3JkaW9uLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1hY2NvcmRpb24tYWN0aXZlLWJnKTtib3gtc2hhZG93Omluc2V0IDAgY2FsYygtMSAqIHZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItd2lkdGgpKSAwIHZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItY29sb3IpfS5hY2NvcmRpb24tYnV0dG9uOm5vdCguY29sbGFwc2VkKTo6YWZ0ZXJ7YmFja2dyb3VuZC1pbWFnZTp2YXIoLS1icy1hY2NvcmRpb24tYnRuLWFjdGl2ZS1pY29uKTt0cmFuc2Zvcm06dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1pY29uLXRyYW5zZm9ybSl9LmFjY29yZGlvbi1idXR0b246OmFmdGVye2ZsZXgtc2hyaW5rOjA7d2lkdGg6dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTtoZWlnaHQ6dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTttYXJnaW4tbGVmdDphdXRvO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1pbWFnZTp2YXIoLS1icy1hY2NvcmRpb24tYnRuLWljb24pO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1pY29uLXdpZHRoKTt0cmFuc2l0aW9uOnZhcigtLWJzLWFjY29yZGlvbi1idG4taWNvbi10cmFuc2l0aW9uKX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuYWNjb3JkaW9uLWJ1dHRvbjo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfX0uYWNjb3JkaW9uLWJ1dHRvbjpob3Zlcnt6LWluZGV4OjJ9LmFjY29yZGlvbi1idXR0b246Zm9jdXN7ei1pbmRleDozO2JvcmRlci1jb2xvcjp2YXIoLS1icy1hY2NvcmRpb24tYnRuLWZvY3VzLWJvcmRlci1jb2xvcik7b3V0bGluZTowO2JveC1zaGFkb3c6dmFyKC0tYnMtYWNjb3JkaW9uLWJ0bi1mb2N1cy1ib3gtc2hhZG93KX0uYWNjb3JkaW9uLWhlYWRlcnttYXJnaW4tYm90dG9tOjB9LmFjY29yZGlvbi1pdGVte2NvbG9yOnZhcigtLWJzLWFjY29yZGlvbi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1hY2NvcmRpb24tYmcpO2JvcmRlcjp2YXIoLS1icy1hY2NvcmRpb24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1hY2NvcmRpb24tYm9yZGVyLWNvbG9yKX0uYWNjb3JkaW9uLWl0ZW06Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cyl9LmFjY29yZGlvbi1pdGVtOmZpcnN0LW9mLXR5cGUgLmFjY29yZGlvbi1idXR0b257Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1hY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXMpfS5hY2NvcmRpb24taXRlbTpub3QoOmZpcnN0LW9mLXR5cGUpe2JvcmRlci10b3A6MH0uYWNjb3JkaW9uLWl0ZW06bGFzdC1vZi10eXBle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKX0uYWNjb3JkaW9uLWl0ZW06bGFzdC1vZi10eXBlIC5hY2NvcmRpb24tYnV0dG9uLmNvbGxhcHNlZHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1hY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1hY2NvcmRpb24taW5uZXItYm9yZGVyLXJhZGl1cyl9LmFjY29yZGlvbi1pdGVtOmxhc3Qtb2YtdHlwZSAuYWNjb3JkaW9uLWNvbGxhcHNle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKX0uYWNjb3JkaW9uLWJvZHl7cGFkZGluZzp2YXIoLS1icy1hY2NvcmRpb24tYm9keS1wYWRkaW5nLXkpIHZhcigtLWJzLWFjY29yZGlvbi1ib2R5LXBhZGRpbmcteCl9LmFjY29yZGlvbi1mbHVzaCAuYWNjb3JkaW9uLWNvbGxhcHNle2JvcmRlci13aWR0aDowfS5hY2NvcmRpb24tZmx1c2ggLmFjY29yZGlvbi1pdGVte2JvcmRlci1yaWdodDowO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJhZGl1czowfS5hY2NvcmRpb24tZmx1c2ggLmFjY29yZGlvbi1pdGVtOmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0uYWNjb3JkaW9uLWZsdXNoIC5hY2NvcmRpb24taXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0uYWNjb3JkaW9uLWZsdXNoIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWJ1dHRvbiwuYWNjb3JkaW9uLWZsdXNoIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWJ1dHRvbi5jb2xsYXBzZWR7Ym9yZGVyLXJhZGl1czowfVtkYXRhLWJzLXRoZW1lPWRhcmtdIC5hY2NvcmRpb24tYnV0dG9uOjphZnRlcnstLWJzLWFjY29yZGlvbi1idG4taWNvbjp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyUyMzZlYThmZSclM2UlM2NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgZD0nTTEuNjQ2IDQuNjQ2YS41LjUgMCAwIDEgLjcwOCAwTDggMTAuMjkzbDUuNjQ2LTUuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDggMGwtNi02YS41LjUgMCAwIDEgMC0uNzA4eicvJTNlJTNjL3N2ZyUzZSIpOy0tYnMtYWNjb3JkaW9uLWJ0bi1hY3RpdmUtaWNvbjp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyUyMzZlYThmZSclM2UlM2NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgZD0nTTEuNjQ2IDQuNjQ2YS41LjUgMCAwIDEgLjcwOCAwTDggMTAuMjkzbDUuNjQ2LTUuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDggMGwtNi02YS41LjUgMCAwIDEgMC0uNzA4eicvJTNlJTNjL3N2ZyUzZSIpfS5icmVhZGNydW1iey0tYnMtYnJlYWRjcnVtYi1wYWRkaW5nLXg6MDstLWJzLWJyZWFkY3J1bWItcGFkZGluZy15OjA7LS1icy1icmVhZGNydW1iLW1hcmdpbi1ib3R0b206MXJlbTstLWJzLWJyZWFkY3J1bWItYmc6IDstLWJzLWJyZWFkY3J1bWItYm9yZGVyLXJhZGl1czogOy0tYnMtYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1jb2xvcik7LS1icy1icmVhZGNydW1iLWl0ZW0tcGFkZGluZy14OjAuNXJlbTstLWJzLWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWNvbG9yKTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7cGFkZGluZzp2YXIoLS1icy1icmVhZGNydW1iLXBhZGRpbmcteSkgdmFyKC0tYnMtYnJlYWRjcnVtYi1wYWRkaW5nLXgpO21hcmdpbi1ib3R0b206dmFyKC0tYnMtYnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tKTtmb250LXNpemU6dmFyKC0tYnMtYnJlYWRjcnVtYi1mb250LXNpemUpO2xpc3Qtc3R5bGU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJyZWFkY3J1bWItYmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKX0uYnJlYWRjcnVtYi1pdGVtKy5icmVhZGNydW1iLWl0ZW17cGFkZGluZy1sZWZ0OnZhcigtLWJzLWJyZWFkY3J1bWItaXRlbS1wYWRkaW5nLXgpfS5icmVhZGNydW1iLWl0ZW0rLmJyZWFkY3J1bWItaXRlbTo6YmVmb3Jle2Zsb2F0OmxlZnQ7cGFkZGluZy1yaWdodDp2YXIoLS1icy1icmVhZGNydW1iLWl0ZW0tcGFkZGluZy14KTtjb2xvcjp2YXIoLS1icy1icmVhZGNydW1iLWRpdmlkZXItY29sb3IpO2NvbnRlbnQ6dmFyKC0tYnMtYnJlYWRjcnVtYi1kaXZpZGVyLCAiLi4vLi4vaW5kZXguaHRtbCIpfS5icmVhZGNydW1iLWl0ZW0uYWN0aXZle2NvbG9yOnZhcigtLWJzLWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3IpfS5wYWdpbmF0aW9uey0tYnMtcGFnaW5hdGlvbi1wYWRkaW5nLXg6MC43NXJlbTstLWJzLXBhZ2luYXRpb24tcGFkZGluZy15OjAuMzc1cmVtOy0tYnMtcGFnaW5hdGlvbi1mb250LXNpemU6MXJlbTstLWJzLXBhZ2luYXRpb24tY29sb3I6dmFyKC0tYnMtbGluay1jb2xvcik7LS1icy1wYWdpbmF0aW9uLWJnOnZhcigtLWJzLWJvZHktYmcpOy0tYnMtcGFnaW5hdGlvbi1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLXBhZ2luYXRpb24tYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvcik7LS1icy1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cyk7LS1icy1wYWdpbmF0aW9uLWhvdmVyLWNvbG9yOnZhcigtLWJzLWxpbmstaG92ZXItY29sb3IpOy0tYnMtcGFnaW5hdGlvbi1ob3Zlci1iZzp2YXIoLS1icy10ZXJ0aWFyeS1iZyk7LS1icy1wYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3IpOy0tYnMtcGFnaW5hdGlvbi1mb2N1cy1jb2xvcjp2YXIoLS1icy1saW5rLWhvdmVyLWNvbG9yKTstLWJzLXBhZ2luYXRpb24tZm9jdXMtYmc6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnKTstLWJzLXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzowIDAgMCAwLjI1cmVtIHJnYmEoMTMsIDExMCwgMjUzLCAwLjI1KTstLWJzLXBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiNmZmY7LS1icy1wYWdpbmF0aW9uLWFjdGl2ZS1iZzojMGQ2ZWZkOy0tYnMtcGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yOiMwZDZlZmQ7LS1icy1wYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1jb2xvcik7LS1icy1wYWdpbmF0aW9uLWRpc2FibGVkLWJnOnZhcigtLWJzLXNlY29uZGFyeS1iZyk7LS1icy1wYWdpbmF0aW9uLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3IpO2Rpc3BsYXk6ZmxleDtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9LnBhZ2UtbGlua3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6dmFyKC0tYnMtcGFnaW5hdGlvbi1wYWRkaW5nLXkpIHZhcigtLWJzLXBhZ2luYXRpb24tcGFkZGluZy14KTtmb250LXNpemU6dmFyKC0tYnMtcGFnaW5hdGlvbi1mb250LXNpemUpO2NvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24tY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcGFnaW5hdGlvbi1iZyk7Ym9yZGVyOnZhcigtLWJzLXBhZ2luYXRpb24tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1wYWdpbmF0aW9uLWJvcmRlci1jb2xvcik7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXR9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnBhZ2UtbGlua3t0cmFuc2l0aW9uOm5vbmV9fS5wYWdlLWxpbms6aG92ZXJ7ei1pbmRleDoyO2NvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24taG92ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcGFnaW5hdGlvbi1ob3Zlci1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yKX0ucGFnZS1saW5rOmZvY3Vze3otaW5kZXg6Mztjb2xvcjp2YXIoLS1icy1wYWdpbmF0aW9uLWZvY3VzLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24tZm9jdXMtYmcpO291dGxpbmU6MDtib3gtc2hhZG93OnZhcigtLWJzLXBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdyl9LmFjdGl2ZT4ucGFnZS1saW5rLC5wYWdlLWxpbmsuYWN0aXZle3otaW5kZXg6Mztjb2xvcjp2YXIoLS1icy1wYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1wYWdpbmF0aW9uLWFjdGl2ZS1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcil9LmRpc2FibGVkPi5wYWdlLWxpbmssLnBhZ2UtbGluay5kaXNhYmxlZHtjb2xvcjp2YXIoLS1icy1wYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yKTtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcGFnaW5hdGlvbi1kaXNhYmxlZC1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0ucGFnZS1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpIC5wYWdlLWxpbmt7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1icy1ib3JkZXItd2lkdGgpICogLTEpfS5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGlua3tib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1wYWdpbmF0aW9uLWJvcmRlci1yYWRpdXMpfS5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5re2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLXBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzKX0ucGFnaW5hdGlvbi1sZ3stLWJzLXBhZ2luYXRpb24tcGFkZGluZy14OjEuNXJlbTstLWJzLXBhZ2luYXRpb24tcGFkZGluZy15OjAuNzVyZW07LS1icy1wYWdpbmF0aW9uLWZvbnQtc2l6ZToxLjI1cmVtOy0tYnMtcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpfS5wYWdpbmF0aW9uLXNtey0tYnMtcGFnaW5hdGlvbi1wYWRkaW5nLXg6MC41cmVtOy0tYnMtcGFnaW5hdGlvbi1wYWRkaW5nLXk6MC4yNXJlbTstLWJzLXBhZ2luYXRpb24tZm9udC1zaXplOjAuODc1cmVtOy0tYnMtcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtc20pfS5iYWRnZXstLWJzLWJhZGdlLXBhZGRpbmcteDowLjY1ZW07LS1icy1iYWRnZS1wYWRkaW5nLXk6MC4zNWVtOy0tYnMtYmFkZ2UtZm9udC1zaXplOjAuNzVlbTstLWJzLWJhZGdlLWZvbnQtd2VpZ2h0OjcwMDstLWJzLWJhZGdlLWNvbG9yOiNmZmY7LS1icy1iYWRnZS1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6dmFyKC0tYnMtYmFkZ2UtcGFkZGluZy15KSB2YXIoLS1icy1iYWRnZS1wYWRkaW5nLXgpO2ZvbnQtc2l6ZTp2YXIoLS1icy1iYWRnZS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLWJhZGdlLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDoxO2NvbG9yOnZhcigtLWJzLWJhZGdlLWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1iYWRnZS1ib3JkZXItcmFkaXVzKX0uYmFkZ2U6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5hbGVydHstLWJzLWFsZXJ0LWJnOnRyYW5zcGFyZW50Oy0tYnMtYWxlcnQtcGFkZGluZy14OjFyZW07LS1icy1hbGVydC1wYWRkaW5nLXk6MXJlbTstLWJzLWFsZXJ0LW1hcmdpbi1ib3R0b206MXJlbTstLWJzLWFsZXJ0LWNvbG9yOmluaGVyaXQ7LS1icy1hbGVydC1ib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7LS1icy1hbGVydC1ib3JkZXI6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1hbGVydC1ib3JkZXItY29sb3IpOy0tYnMtYWxlcnQtYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLWFsZXJ0LWxpbmstY29sb3I6aW5oZXJpdDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOnZhcigtLWJzLWFsZXJ0LXBhZGRpbmcteSkgdmFyKC0tYnMtYWxlcnQtcGFkZGluZy14KTttYXJnaW4tYm90dG9tOnZhcigtLWJzLWFsZXJ0LW1hcmdpbi1ib3R0b20pO2NvbG9yOnZhcigtLWJzLWFsZXJ0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWFsZXJ0LWJnKTtib3JkZXI6dmFyKC0tYnMtYWxlcnQtYm9yZGVyKTtib3JkZXItcmFkaXVzOnZhcigtLWJzLWFsZXJ0LWJvcmRlci1yYWRpdXMpfS5hbGVydC1oZWFkaW5ne2NvbG9yOmluaGVyaXR9LmFsZXJ0LWxpbmt7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWJzLWFsZXJ0LWxpbmstY29sb3IpfS5hbGVydC1kaXNtaXNzaWJsZXtwYWRkaW5nLXJpZ2h0OjNyZW19LmFsZXJ0LWRpc21pc3NpYmxlIC5idG4tY2xvc2V7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDt6LWluZGV4OjI7cGFkZGluZzoxLjI1cmVtIDFyZW19LmFsZXJ0LXByaW1hcnl7LS1icy1hbGVydC1jb2xvcjp2YXIoLS1icy1wcmltYXJ5LXRleHQtZW1waGFzaXMpOy0tYnMtYWxlcnQtYmc6dmFyKC0tYnMtcHJpbWFyeS1iZy1zdWJ0bGUpOy0tYnMtYWxlcnQtYm9yZGVyLWNvbG9yOnZhcigtLWJzLXByaW1hcnktYm9yZGVyLXN1YnRsZSk7LS1icy1hbGVydC1saW5rLWNvbG9yOnZhcigtLWJzLXByaW1hcnktdGV4dC1lbXBoYXNpcyl9LmFsZXJ0LXNlY29uZGFyeXstLWJzLWFsZXJ0LWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLXNlY29uZGFyeS1iZy1zdWJ0bGUpOy0tYnMtYWxlcnQtYm9yZGVyLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1ib3JkZXItc3VidGxlKTstLWJzLWFsZXJ0LWxpbmstY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LXRleHQtZW1waGFzaXMpfS5hbGVydC1zdWNjZXNzey0tYnMtYWxlcnQtY29sb3I6dmFyKC0tYnMtc3VjY2Vzcy10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLXN1Y2Nlc3MtYmctc3VidGxlKTstLWJzLWFsZXJ0LWJvcmRlci1jb2xvcjp2YXIoLS1icy1zdWNjZXNzLWJvcmRlci1zdWJ0bGUpOy0tYnMtYWxlcnQtbGluay1jb2xvcjp2YXIoLS1icy1zdWNjZXNzLXRleHQtZW1waGFzaXMpfS5hbGVydC1pbmZvey0tYnMtYWxlcnQtY29sb3I6dmFyKC0tYnMtaW5mby10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLWluZm8tYmctc3VidGxlKTstLWJzLWFsZXJ0LWJvcmRlci1jb2xvcjp2YXIoLS1icy1pbmZvLWJvcmRlci1zdWJ0bGUpOy0tYnMtYWxlcnQtbGluay1jb2xvcjp2YXIoLS1icy1pbmZvLXRleHQtZW1waGFzaXMpfS5hbGVydC13YXJuaW5ney0tYnMtYWxlcnQtY29sb3I6dmFyKC0tYnMtd2FybmluZy10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLXdhcm5pbmctYmctc3VidGxlKTstLWJzLWFsZXJ0LWJvcmRlci1jb2xvcjp2YXIoLS1icy13YXJuaW5nLWJvcmRlci1zdWJ0bGUpOy0tYnMtYWxlcnQtbGluay1jb2xvcjp2YXIoLS1icy13YXJuaW5nLXRleHQtZW1waGFzaXMpfS5hbGVydC1kYW5nZXJ7LS1icy1hbGVydC1jb2xvcjp2YXIoLS1icy1kYW5nZXItdGV4dC1lbXBoYXNpcyk7LS1icy1hbGVydC1iZzp2YXIoLS1icy1kYW5nZXItYmctc3VidGxlKTstLWJzLWFsZXJ0LWJvcmRlci1jb2xvcjp2YXIoLS1icy1kYW5nZXItYm9yZGVyLXN1YnRsZSk7LS1icy1hbGVydC1saW5rLWNvbG9yOnZhcigtLWJzLWRhbmdlci10ZXh0LWVtcGhhc2lzKX0uYWxlcnQtbGlnaHR7LS1icy1hbGVydC1jb2xvcjp2YXIoLS1icy1saWdodC10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLWxpZ2h0LWJnLXN1YnRsZSk7LS1icy1hbGVydC1ib3JkZXItY29sb3I6dmFyKC0tYnMtbGlnaHQtYm9yZGVyLXN1YnRsZSk7LS1icy1hbGVydC1saW5rLWNvbG9yOnZhcigtLWJzLWxpZ2h0LXRleHQtZW1waGFzaXMpfS5hbGVydC1kYXJrey0tYnMtYWxlcnQtY29sb3I6dmFyKC0tYnMtZGFyay10ZXh0LWVtcGhhc2lzKTstLWJzLWFsZXJ0LWJnOnZhcigtLWJzLWRhcmstYmctc3VidGxlKTstLWJzLWFsZXJ0LWJvcmRlci1jb2xvcjp2YXIoLS1icy1kYXJrLWJvcmRlci1zdWJ0bGUpOy0tYnMtYWxlcnQtbGluay1jb2xvcjp2YXIoLS1icy1kYXJrLXRleHQtZW1waGFzaXMpfUBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7MCV7YmFja2dyb3VuZC1wb3NpdGlvbi14OjFyZW19fS5wcm9ncmVzcywucHJvZ3Jlc3Mtc3RhY2tlZHstLWJzLXByb2dyZXNzLWhlaWdodDoxcmVtOy0tYnMtcHJvZ3Jlc3MtZm9udC1zaXplOjAuNzVyZW07LS1icy1wcm9ncmVzcy1iZzp2YXIoLS1icy1zZWNvbmRhcnktYmcpOy0tYnMtcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLXByb2dyZXNzLWJveC1zaGFkb3c6dmFyKC0tYnMtYm94LXNoYWRvdy1pbnNldCk7LS1icy1wcm9ncmVzcy1iYXItY29sb3I6I2ZmZjstLWJzLXByb2dyZXNzLWJhci1iZzojMGQ2ZWZkOy0tYnMtcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246d2lkdGggMC42cyBlYXNlO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6dmFyKC0tYnMtcHJvZ3Jlc3MtaGVpZ2h0KTtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOnZhcigtLWJzLXByb2dyZXNzLWZvbnQtc2l6ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1wcm9ncmVzcy1iZyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1wcm9ncmVzcy1ib3JkZXItcmFkaXVzKX0ucHJvZ3Jlc3MtYmFye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYnMtcHJvZ3Jlc3MtYmFyLWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1wcm9ncmVzcy1iYXItYmcpO3RyYW5zaXRpb246dmFyKC0tYnMtcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb24pfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5wcm9ncmVzcy1iYXJ7dHJhbnNpdGlvbjpub25lfX0ucHJvZ3Jlc3MtYmFyLXN0cmlwZWR7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtc2l6ZTp2YXIoLS1icy1wcm9ncmVzcy1oZWlnaHQpIHZhcigtLWJzLXByb2dyZXNzLWhlaWdodCl9LnByb2dyZXNzLXN0YWNrZWQ+LnByb2dyZXNze292ZXJmbG93OnZpc2libGV9LnByb2dyZXNzLXN0YWNrZWQ+LnByb2dyZXNzPi5wcm9ncmVzcy1iYXJ7d2lkdGg6MTAwJX0ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVke2FuaW1hdGlvbjoxcyBsaW5lYXIgaW5maW5pdGUgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnByb2dyZXNzLWJhci1hbmltYXRlZHthbmltYXRpb246bm9uZX19Lmxpc3QtZ3JvdXB7LS1icy1saXN0LWdyb3VwLWNvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpOy0tYnMtbGlzdC1ncm91cC1iZzp2YXIoLS1icy1ib2R5LWJnKTstLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvcik7LS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aDp2YXIoLS1icy1ib3JkZXItd2lkdGgpOy0tYnMtbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpOy0tYnMtbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDoxcmVtOy0tYnMtbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteTowLjVyZW07LS1icy1saXN0LWdyb3VwLWFjdGlvbi1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItYmc6dmFyKC0tYnMtdGVydGlhcnktYmcpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOnZhcigtLWJzLXNlY29uZGFyeS1iZyk7LS1icy1saXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1jb2xvcik7LS1icy1saXN0LWdyb3VwLWRpc2FibGVkLWJnOnZhcigtLWJzLWJvZHktYmcpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6I2ZmZjstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWJnOiMwZDZlZmQ7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6IzBkNmVmZDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtib3JkZXItcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyl9Lmxpc3QtZ3JvdXAtbnVtYmVyZWR7bGlzdC1zdHlsZS10eXBlOm5vbmU7Y291bnRlci1yZXNldDpzZWN0aW9ufS5saXN0LWdyb3VwLW51bWJlcmVkPi5saXN0LWdyb3VwLWl0ZW06OmJlZm9yZXtjb250ZW50OmNvdW50ZXJzKHNlY3Rpb24sICIuIikgIi4gIjtjb3VudGVyLWluY3JlbWVudDpzZWN0aW9ufS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9ue3dpZHRoOjEwMCU7Y29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1hY3Rpb24tY29sb3IpO3RleHQtYWxpZ246aW5oZXJpdH0ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cywubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3Zlcnt6LWluZGV4OjE7Y29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItYmcpfS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZXtjb2xvcjp2YXIoLS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnKX0ubGlzdC1ncm91cC1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzp2YXIoLS1icy1saXN0LWdyb3VwLWl0ZW0tcGFkZGluZy15KSB2YXIoLS1icy1saXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14KTtjb2xvcjp2YXIoLS1icy1saXN0LWdyb3VwLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWxpc3QtZ3JvdXAtYmcpO2JvcmRlcjp2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItY29sb3IpfS5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czppbmhlcml0O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmluaGVyaXR9Lmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOmluaGVyaXQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czppbmhlcml0fS5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZHtjb2xvcjp2YXIoLS1icy1saXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yKTtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1kaXNhYmxlZC1iZyl9Lmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7ei1pbmRleDoyO2NvbG9yOnZhcigtLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yKX0ubGlzdC1ncm91cC1pdGVtKy5saXN0LWdyb3VwLWl0ZW17Ym9yZGVyLXRvcC13aWR0aDowfS5saXN0LWdyb3VwLWl0ZW0rLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLXRvcDpjYWxjKC0xICogdmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpKTtib3JkZXItdG9wLXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKX0ubGlzdC1ncm91cC1ob3Jpem9udGFse2ZsZXgtZGlyZWN0aW9uOnJvd30ubGlzdC1ncm91cC1ob3Jpem9udGFsPi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsPi5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsPi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle21hcmdpbi10b3A6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsPi5saXN0LWdyb3VwLWl0ZW0rLmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItdG9wLXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKTtib3JkZXItbGVmdC13aWR0aDowfS5saXN0LWdyb3VwLWhvcml6b250YWw+Lmxpc3QtZ3JvdXAtaXRlbSsubGlzdC1ncm91cC1pdGVtLmFjdGl2ZXttYXJnaW4tbGVmdDpjYWxjKC0xICogdmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpKTtib3JkZXItbGVmdC13aWR0aDp2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCl9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5saXN0LWdyb3VwLWhvcml6b250YWwtc217ZmxleC1kaXJlY3Rpb246cm93fS5saXN0LWdyb3VwLWhvcml6b250YWwtc20+Lmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtc20+Lmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtc20+Lmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLXRvcDowfS5saXN0LWdyb3VwLWhvcml6b250YWwtc20+Lmxpc3QtZ3JvdXAtaXRlbSsubGlzdC1ncm91cC1pdGVte2JvcmRlci10b3Atd2lkdGg6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO2JvcmRlci1sZWZ0LXdpZHRoOjB9Lmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbT4ubGlzdC1ncm91cC1pdGVtKy5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle21hcmdpbi1sZWZ0OmNhbGMoLTEgKiB2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCkpO2JvcmRlci1sZWZ0LXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5saXN0LWdyb3VwLWhvcml6b250YWwtbWR7ZmxleC1kaXJlY3Rpb246cm93fS5saXN0LWdyb3VwLWhvcml6b250YWwtbWQ+Lmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbWQ+Lmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbWQ+Lmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLXRvcDowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbWQ+Lmxpc3QtZ3JvdXAtaXRlbSsubGlzdC1ncm91cC1pdGVte2JvcmRlci10b3Atd2lkdGg6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO2JvcmRlci1sZWZ0LXdpZHRoOjB9Lmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZD4ubGlzdC1ncm91cC1pdGVtKy5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle21hcmdpbi1sZWZ0OmNhbGMoLTEgKiB2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCkpO2JvcmRlci1sZWZ0LXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKX19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5saXN0LWdyb3VwLWhvcml6b250YWwtbGd7ZmxleC1kaXJlY3Rpb246cm93fS5saXN0LWdyb3VwLWhvcml6b250YWwtbGc+Lmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbGc+Lmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbGc+Lmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLXRvcDowfS5saXN0LWdyb3VwLWhvcml6b250YWwtbGc+Lmxpc3QtZ3JvdXAtaXRlbSsubGlzdC1ncm91cC1pdGVte2JvcmRlci10b3Atd2lkdGg6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpO2JvcmRlci1sZWZ0LXdpZHRoOjB9Lmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1sZz4ubGlzdC1ncm91cC1pdGVtKy5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle21hcmdpbi1sZWZ0OmNhbGMoLTEgKiB2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCkpO2JvcmRlci1sZWZ0LXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKX19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsubGlzdC1ncm91cC1ob3Jpem9udGFsLXhse2ZsZXgtZGlyZWN0aW9uOnJvd30ubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsPi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsPi5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsPi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZle21hcmdpbi10b3A6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsPi5saXN0LWdyb3VwLWl0ZW0rLmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItdG9wLXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKTtib3JkZXItbGVmdC13aWR0aDowfS5saXN0LWdyb3VwLWhvcml6b250YWwteGw+Lmxpc3QtZ3JvdXAtaXRlbSsubGlzdC1ncm91cC1pdGVtLmFjdGl2ZXttYXJnaW4tbGVmdDpjYWxjKC0xICogdmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpKTtib3JkZXItbGVmdC13aWR0aDp2YXIoLS1icy1saXN0LWdyb3VwLWJvcmRlci13aWR0aCl9fUBtZWRpYSAobWluLXdpZHRoOjE0MDBweCl7Lmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14eGx7ZmxleC1kaXJlY3Rpb246cm93fS5saXN0LWdyb3VwLWhvcml6b250YWwteHhsPi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubGlzdC1ncm91cC1ob3Jpem9udGFsLXh4bD4ubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14eGw+Lmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLXRvcDowfS5saXN0LWdyb3VwLWhvcml6b250YWwteHhsPi5saXN0LWdyb3VwLWl0ZW0rLmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItdG9wLXdpZHRoOnZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKTtib3JkZXItbGVmdC13aWR0aDowfS5saXN0LWdyb3VwLWhvcml6b250YWwteHhsPi5saXN0LWdyb3VwLWl0ZW0rLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmV7bWFyZ2luLWxlZnQ6Y2FsYygtMSAqIHZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKSk7Ym9yZGVyLWxlZnQtd2lkdGg6dmFyKC0tYnMtbGlzdC1ncm91cC1ib3JkZXItd2lkdGgpfX0ubGlzdC1ncm91cC1mbHVzaHtib3JkZXItcmFkaXVzOjB9Lmxpc3QtZ3JvdXAtZmx1c2g+Lmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItd2lkdGg6MCAwIHZhcigtLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoKX0ubGlzdC1ncm91cC1mbHVzaD4ubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeXstLWJzLWxpc3QtZ3JvdXAtY29sb3I6dmFyKC0tYnMtcHJpbWFyeS10ZXh0LWVtcGhhc2lzKTstLWJzLWxpc3QtZ3JvdXAtYmc6dmFyKC0tYnMtcHJpbWFyeS1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1ib3JkZXItY29sb3I6dmFyKC0tYnMtcHJpbWFyeS1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnOnZhcigtLWJzLXByaW1hcnktYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOnZhcigtLWJzLXByaW1hcnktYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1wcmltYXJ5LWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1iZzp2YXIoLS1icy1wcmltYXJ5LXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOnZhcigtLWJzLXByaW1hcnktdGV4dC1lbXBoYXNpcyl9Lmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnl7LS1icy1saXN0LWdyb3VwLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS10ZXh0LWVtcGhhc2lzKTstLWJzLWxpc3QtZ3JvdXAtYmc6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWJvcmRlci1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1iZzp2YXIoLS1icy1zZWNvbmRhcnktYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOnZhcigtLWJzLXNlY29uZGFyeS1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYmc6dmFyKC0tYnMtc2Vjb25kYXJ5LXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOnZhcigtLWJzLXNlY29uZGFyeS10ZXh0LWVtcGhhc2lzKX0ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3N7LS1icy1saXN0LWdyb3VwLWNvbG9yOnZhcigtLWJzLXN1Y2Nlc3MtdGV4dC1lbXBoYXNpcyk7LS1icy1saXN0LWdyb3VwLWJnOnZhcigtLWJzLXN1Y2Nlc3MtYmctc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOnZhcigtLWJzLXN1Y2Nlc3MtYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1iZzp2YXIoLS1icy1zdWNjZXNzLWJvcmRlci1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZzp2YXIoLS1icy1zdWNjZXNzLWJvcmRlci1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6dmFyKC0tYnMtc3VjY2Vzcy1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYmc6dmFyKC0tYnMtc3VjY2Vzcy10ZXh0LWVtcGhhc2lzKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjp2YXIoLS1icy1zdWNjZXNzLXRleHQtZW1waGFzaXMpfS5saXN0LWdyb3VwLWl0ZW0taW5mb3stLWJzLWxpc3QtZ3JvdXAtY29sb3I6dmFyKC0tYnMtaW5mby10ZXh0LWVtcGhhc2lzKTstLWJzLWxpc3QtZ3JvdXAtYmc6dmFyKC0tYnMtaW5mby1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1ib3JkZXItY29sb3I6dmFyKC0tYnMtaW5mby1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnOnZhcigtLWJzLWluZm8tYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnOnZhcigtLWJzLWluZm8tYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1pbmZvLWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1iZzp2YXIoLS1icy1pbmZvLXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOnZhcigtLWJzLWluZm8tdGV4dC1lbXBoYXNpcyl9Lmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5ney0tYnMtbGlzdC1ncm91cC1jb2xvcjp2YXIoLS1icy13YXJuaW5nLXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1iZzp2YXIoLS1icy13YXJuaW5nLWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWJvcmRlci1jb2xvcjp2YXIoLS1icy13YXJuaW5nLWJvcmRlci1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItYmc6dmFyKC0tYnMtd2FybmluZy1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6dmFyKC0tYnMtd2FybmluZy1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOnZhcigtLWJzLXdhcm5pbmctYmctc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWJnOnZhcigtLWJzLXdhcm5pbmctdGV4dC1lbXBoYXNpcyk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtd2FybmluZy10ZXh0LWVtcGhhc2lzKX0ubGlzdC1ncm91cC1pdGVtLWRhbmdlcnstLWJzLWxpc3QtZ3JvdXAtY29sb3I6dmFyKC0tYnMtZGFuZ2VyLXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1iZzp2YXIoLS1icy1kYW5nZXItYmctc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOnZhcigtLWJzLWRhbmdlci1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOnZhcigtLWJzLWVtcGhhc2lzLWNvbG9yKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWJnOnZhcigtLWJzLWRhbmdlci1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6dmFyKC0tYnMtZGFuZ2VyLWJvcmRlci1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6dmFyKC0tYnMtZGFuZ2VyLWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1iZzp2YXIoLS1icy1kYW5nZXItdGV4dC1lbXBoYXNpcyk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtZGFuZ2VyLXRleHQtZW1waGFzaXMpfS5saXN0LWdyb3VwLWl0ZW0tbGlnaHR7LS1icy1saXN0LWdyb3VwLWNvbG9yOnZhcigtLWJzLWxpZ2h0LXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1iZzp2YXIoLS1icy1saWdodC1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1ib3JkZXItY29sb3I6dmFyKC0tYnMtbGlnaHQtYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1iZzp2YXIoLS1icy1saWdodC1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6dmFyKC0tYnMtbGlnaHQtYm9yZGVyLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1saWdodC1iZy1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3RpdmUtYmc6dmFyKC0tYnMtbGlnaHQtdGV4dC1lbXBoYXNpcyk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtbGlnaHQtdGV4dC1lbXBoYXNpcyl9Lmxpc3QtZ3JvdXAtaXRlbS1kYXJrey0tYnMtbGlzdC1ncm91cC1jb2xvcjp2YXIoLS1icy1kYXJrLXRleHQtZW1waGFzaXMpOy0tYnMtbGlzdC1ncm91cC1iZzp2YXIoLS1icy1kYXJrLWJnLXN1YnRsZSk7LS1icy1saXN0LWdyb3VwLWJvcmRlci1jb2xvcjp2YXIoLS1icy1kYXJrLWJvcmRlci1zdWJ0bGUpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtbGlzdC1ncm91cC1hY3Rpb24taG92ZXItYmc6dmFyKC0tYnMtZGFyay1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcik7LS1icy1saXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6dmFyKC0tYnMtZGFyay1ib3JkZXItc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOnZhcigtLWJzLWRhcmstYmctc3VidGxlKTstLWJzLWxpc3QtZ3JvdXAtYWN0aXZlLWJnOnZhcigtLWJzLWRhcmstdGV4dC1lbXBoYXNpcyk7LS1icy1saXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6dmFyKC0tYnMtZGFyay10ZXh0LWVtcGhhc2lzKX0uYnRuLWNsb3Nley0tYnMtYnRuLWNsb3NlLWNvbG9yOiMwMDA7LS1icy1idG4tY2xvc2UtYmc6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMwMDAnJTNlJTNjcGF0aCBkPSdNLjI5My4yOTNhMSAxIDAgMCAxIDEuNDE0IDBMOCA2LjU4NiAxNC4yOTMuMjkzYTEgMSAwIDEgMSAxLjQxNCAxLjQxNEw5LjQxNCA4bDYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNCAxLjQxNEw4IDkuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTRMNi41ODYgOCAuMjkzIDEuNzA3YTEgMSAwIDAgMSAwLTEuNDE0eicvJTNlJTNjL3N2ZyUzZSIpOy0tYnMtYnRuLWNsb3NlLW9wYWNpdHk6MC41Oy0tYnMtYnRuLWNsb3NlLWhvdmVyLW9wYWNpdHk6MC43NTstLWJzLWJ0bi1jbG9zZS1mb2N1cy1zaGFkb3c6MCAwIDAgMC4yNXJlbSByZ2JhKDEzLCAxMTAsIDI1MywgMC4yNSk7LS1icy1idG4tY2xvc2UtZm9jdXMtb3BhY2l0eToxOy0tYnMtYnRuLWNsb3NlLWRpc2FibGVkLW9wYWNpdHk6MC4yNTstLWJzLWJ0bi1jbG9zZS13aGl0ZS1maWx0ZXI6aW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDAlKSBicmlnaHRuZXNzKDIwMCUpO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MWVtO2hlaWdodDoxZW07cGFkZGluZzouMjVlbSAuMjVlbTtjb2xvcjp2YXIoLS1icy1idG4tY2xvc2UtY29sb3IpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgdmFyKC0tYnMtYnRuLWNsb3NlLWJnKSBjZW50ZXIvMWVtIGF1dG8gbm8tcmVwZWF0O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6LjM3NXJlbTtvcGFjaXR5OnZhcigtLWJzLWJ0bi1jbG9zZS1vcGFjaXR5KX0uYnRuLWNsb3NlOmhvdmVye2NvbG9yOnZhcigtLWJzLWJ0bi1jbG9zZS1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3BhY2l0eTp2YXIoLS1icy1idG4tY2xvc2UtaG92ZXItb3BhY2l0eSl9LmJ0bi1jbG9zZTpmb2N1c3tvdXRsaW5lOjA7Ym94LXNoYWRvdzp2YXIoLS1icy1idG4tY2xvc2UtZm9jdXMtc2hhZG93KTtvcGFjaXR5OnZhcigtLWJzLWJ0bi1jbG9zZS1mb2N1cy1vcGFjaXR5KX0uYnRuLWNsb3NlLmRpc2FibGVkLC5idG4tY2xvc2U6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7b3BhY2l0eTp2YXIoLS1icy1idG4tY2xvc2UtZGlzYWJsZWQtb3BhY2l0eSl9LmJ0bi1jbG9zZS13aGl0ZXtmaWx0ZXI6dmFyKC0tYnMtYnRuLWNsb3NlLXdoaXRlLWZpbHRlcil9W2RhdGEtYnMtdGhlbWU9ZGFya10gLmJ0bi1jbG9zZXtmaWx0ZXI6dmFyKC0tYnMtYnRuLWNsb3NlLXdoaXRlLWZpbHRlcil9LnRvYXN0ey0tYnMtdG9hc3QtemluZGV4OjEwOTA7LS1icy10b2FzdC1wYWRkaW5nLXg6MC43NXJlbTstLWJzLXRvYXN0LXBhZGRpbmcteTowLjVyZW07LS1icy10b2FzdC1zcGFjaW5nOjEuNXJlbTstLWJzLXRvYXN0LW1heC13aWR0aDozNTBweDstLWJzLXRvYXN0LWZvbnQtc2l6ZTowLjg3NXJlbTstLWJzLXRvYXN0LWNvbG9yOiA7LS1icy10b2FzdC1iZzpyZ2JhKHZhcigtLWJzLWJvZHktYmctcmdiKSwgMC44NSk7LS1icy10b2FzdC1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLXRvYXN0LWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpOy0tYnMtdG9hc3QtYm9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKTstLWJzLXRvYXN0LWJveC1zaGFkb3c6dmFyKC0tYnMtYm94LXNoYWRvdyk7LS1icy10b2FzdC1oZWFkZXItY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWNvbG9yKTstLWJzLXRvYXN0LWhlYWRlci1iZzpyZ2JhKHZhcigtLWJzLWJvZHktYmctcmdiKSwgMC44NSk7LS1icy10b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7d2lkdGg6dmFyKC0tYnMtdG9hc3QtbWF4LXdpZHRoKTttYXgtd2lkdGg6MTAwJTtmb250LXNpemU6dmFyKC0tYnMtdG9hc3QtZm9udC1zaXplKTtjb2xvcjp2YXIoLS1icy10b2FzdC1jb2xvcik7cG9pbnRlci1ldmVudHM6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXRvYXN0LWJnKTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOnZhcigtLWJzLXRvYXN0LWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtdG9hc3QtYm9yZGVyLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLWJzLXRvYXN0LWJveC1zaGFkb3cpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtdG9hc3QtYm9yZGVyLXJhZGl1cyl9LnRvYXN0LnNob3dpbmd7b3BhY2l0eTowfS50b2FzdDpub3QoLnNob3cpe2Rpc3BsYXk6bm9uZX0udG9hc3QtY29udGFpbmVyey0tYnMtdG9hc3QtemluZGV4OjEwOTA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDp2YXIoLS1icy10b2FzdC16aW5kZXgpO3dpZHRoOi13ZWJraXQtbWF4LWNvbnRlbnQ7d2lkdGg6LW1vei1tYXgtY29udGVudDt3aWR0aDptYXgtY29udGVudDttYXgtd2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lfS50b2FzdC1jb250YWluZXI+Om5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbTp2YXIoLS1icy10b2FzdC1zcGFjaW5nKX0udG9hc3QtaGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzp2YXIoLS1icy10b2FzdC1wYWRkaW5nLXkpIHZhcigtLWJzLXRvYXN0LXBhZGRpbmcteCk7Y29sb3I6dmFyKC0tYnMtdG9hc3QtaGVhZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXRvYXN0LWhlYWRlci1iZyk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlci1ib3R0b206dmFyKC0tYnMtdG9hc3QtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy10b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tYnMtdG9hc3QtYm9yZGVyLXJhZGl1cykgLSB2YXIoLS1icy10b2FzdC1ib3JkZXItd2lkdGgpKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLWJzLXRvYXN0LWJvcmRlci1yYWRpdXMpIC0gdmFyKC0tYnMtdG9hc3QtYm9yZGVyLXdpZHRoKSl9LnRvYXN0LWhlYWRlciAuYnRuLWNsb3Nle21hcmdpbi1yaWdodDpjYWxjKC0uNSAqIHZhcigtLWJzLXRvYXN0LXBhZGRpbmcteCkpO21hcmdpbi1sZWZ0OnZhcigtLWJzLXRvYXN0LXBhZGRpbmcteCl9LnRvYXN0LWJvZHl7cGFkZGluZzp2YXIoLS1icy10b2FzdC1wYWRkaW5nLXgpO3dvcmQtd3JhcDpicmVhay13b3JkfS5tb2RhbHstLWJzLW1vZGFsLXppbmRleDoxMDU1Oy0tYnMtbW9kYWwtd2lkdGg6NTAwcHg7LS1icy1tb2RhbC1wYWRkaW5nOjFyZW07LS1icy1tb2RhbC1tYXJnaW46MC41cmVtOy0tYnMtbW9kYWwtY29sb3I6IDstLWJzLW1vZGFsLWJnOnZhcigtLWJzLWJvZHktYmcpOy0tYnMtbW9kYWwtYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1tb2RhbC1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLW1vZGFsLWJvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1sZyk7LS1icy1tb2RhbC1ib3gtc2hhZG93OnZhcigtLWJzLWJveC1zaGFkb3ctc20pOy0tYnMtbW9kYWwtaW5uZXItYm9yZGVyLXJhZGl1czpjYWxjKHZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpIC0gKHZhcigtLWJzLWJvcmRlci13aWR0aCkpKTstLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXg6MXJlbTstLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXk6MXJlbTstLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nOjFyZW0gMXJlbTstLWJzLW1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6dmFyKC0tYnMtYm9yZGVyLWNvbG9yKTstLWJzLW1vZGFsLWhlYWRlci1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OjEuNTstLWJzLW1vZGFsLWZvb3Rlci1nYXA6MC41cmVtOy0tYnMtbW9kYWwtZm9vdGVyLWJnOiA7LS1icy1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvcik7LS1icy1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOnZhcigtLWJzLWJvcmRlci13aWR0aCk7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3otaW5kZXg6dmFyKC0tYnMtbW9kYWwtemluZGV4KTtkaXNwbGF5Om5vbmU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87b3V0bGluZTowfS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6YXV0bzttYXJnaW46dmFyKC0tYnMtbW9kYWwtbWFyZ2luKTtwb2ludGVyLWV2ZW50czpub25lfS5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2d7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtNTBweCl9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7Lm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZ3t0cmFuc2l0aW9uOm5vbmV9fS5tb2RhbC5zaG93IC5tb2RhbC1kaWFsb2d7dHJhbnNmb3JtOm5vbmV9Lm1vZGFsLm1vZGFsLXN0YXRpYyAubW9kYWwtZGlhbG9ne3RyYW5zZm9ybTpzY2FsZSgxLjAyKX0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGV7aGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWJzLW1vZGFsLW1hcmdpbikgKiAyKX0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWNvbnRlbnR7bWF4LWhlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfS5tb2RhbC1kaWFsb2ctY2VudGVyZWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWJzLW1vZGFsLW1hcmdpbikgKiAyKX0ubW9kYWwtY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCU7Y29sb3I6dmFyKC0tYnMtbW9kYWwtY29sb3IpO3BvaW50ZXItZXZlbnRzOmF1dG87YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1tb2RhbC1iZyk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjp2YXIoLS1icy1tb2RhbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW1vZGFsLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1tb2RhbC1ib3JkZXItcmFkaXVzKTtvdXRsaW5lOjB9Lm1vZGFsLWJhY2tkcm9wey0tYnMtYmFja2Ryb3AtemluZGV4OjEwNTA7LS1icy1iYWNrZHJvcC1iZzojMDAwOy0tYnMtYmFja2Ryb3Atb3BhY2l0eTowLjU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3otaW5kZXg6dmFyKC0tYnMtYmFja2Ryb3AtemluZGV4KTt3aWR0aDoxMDB2dztoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1iYWNrZHJvcC1iZyl9Lm1vZGFsLWJhY2tkcm9wLmZhZGV7b3BhY2l0eTowfS5tb2RhbC1iYWNrZHJvcC5zaG93e29wYWNpdHk6dmFyKC0tYnMtYmFja2Ryb3Atb3BhY2l0eSl9Lm1vZGFsLWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleC1zaHJpbms6MDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzp2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1icy1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1tb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpfS5tb2RhbC1oZWFkZXIgLmJ0bi1jbG9zZXtwYWRkaW5nOmNhbGModmFyKC0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmcteSkgKiAuNSkgY2FsYyh2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy14KSAqIC41KTttYXJnaW46Y2FsYygtLjUgKiB2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15KSkgY2FsYygtLjUgKiB2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy14KSkgY2FsYygtLjUgKiB2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15KSkgYXV0b30ubW9kYWwtdGl0bGV7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OnZhcigtLWJzLW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0KX0ubW9kYWwtYm9keXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tYnMtbW9kYWwtcGFkZGluZyl9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6Y2FsYyh2YXIoLS1icy1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLWJzLW1vZGFsLWZvb3Rlci1nYXApICogLjUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbW9kYWwtZm9vdGVyLWJnKTtib3JkZXItdG9wOnZhcigtLWJzLW1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtbW9kYWwtaW5uZXItYm9yZGVyLXJhZGl1cyl9Lm1vZGFsLWZvb3Rlcj4qe21hcmdpbjpjYWxjKHZhcigtLWJzLW1vZGFsLWZvb3Rlci1nYXApICogLjUpfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsubW9kYWx7LS1icy1tb2RhbC1tYXJnaW46MS43NXJlbTstLWJzLW1vZGFsLWJveC1zaGFkb3c6dmFyKC0tYnMtYm94LXNoYWRvdyl9Lm1vZGFsLWRpYWxvZ3ttYXgtd2lkdGg6dmFyKC0tYnMtbW9kYWwtd2lkdGgpO21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99Lm1vZGFsLXNtey0tYnMtbW9kYWwtd2lkdGg6MzAwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsubW9kYWwtbGcsLm1vZGFsLXhsey0tYnMtbW9kYWwtd2lkdGg6ODAwcHh9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7Lm1vZGFsLXhsey0tYnMtbW9kYWwtd2lkdGg6MTE0MHB4fX0ubW9kYWwtZnVsbHNjcmVlbnt3aWR0aDoxMDB2dzttYXgtd2lkdGg6bm9uZTtoZWlnaHQ6MTAwJTttYXJnaW46MH0ubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLWZvb3RlciwubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtaGVhZGVye2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLXNtLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93biAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93biAubW9kYWwtZm9vdGVyLC5tb2RhbC1mdWxsc2NyZWVuLXNtLWRvd24gLm1vZGFsLWhlYWRlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93biAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KXsubW9kYWwtZnVsbHNjcmVlbi1tZC1kb3due3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd24gLm1vZGFsLWZvb3RlciwubW9kYWwtZnVsbHNjcmVlbi1tZC1kb3duIC5tb2RhbC1oZWFkZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX1AbWVkaWEgKG1heC13aWR0aDo5OTEuOThweCl7Lm1vZGFsLWZ1bGxzY3JlZW4tbGctZG93bnt3aWR0aDoxMDB2dzttYXgtd2lkdGg6bm9uZTtoZWlnaHQ6MTAwJTttYXJnaW46MH0ubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIC5tb2RhbC1mb290ZXIsLm1vZGFsLWZ1bGxzY3JlZW4tbGctZG93biAubW9kYWwtaGVhZGVye2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b319QG1lZGlhIChtYXgtd2lkdGg6MTE5OS45OHB4KXsubW9kYWwtZnVsbHNjcmVlbi14bC1kb3due3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd24gLm1vZGFsLWZvb3RlciwubW9kYWwtZnVsbHNjcmVlbi14bC1kb3duIC5tb2RhbC1oZWFkZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX1AbWVkaWEgKG1heC13aWR0aDoxMzk5Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3due3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3duIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi14eGwtZG93biAubW9kYWwtZm9vdGVyLC5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3duIC5tb2RhbC1oZWFkZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3duIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b319LnRvb2x0aXB7LS1icy10b29sdGlwLXppbmRleDoxMDgwOy0tYnMtdG9vbHRpcC1tYXgtd2lkdGg6MjAwcHg7LS1icy10b29sdGlwLXBhZGRpbmcteDowLjVyZW07LS1icy10b29sdGlwLXBhZGRpbmcteTowLjI1cmVtOy0tYnMtdG9vbHRpcC1tYXJnaW46IDstLWJzLXRvb2x0aXAtZm9udC1zaXplOjAuODc1cmVtOy0tYnMtdG9vbHRpcC1jb2xvcjp2YXIoLS1icy1ib2R5LWJnKTstLWJzLXRvb2x0aXAtYmc6dmFyKC0tYnMtZW1waGFzaXMtY29sb3IpOy0tYnMtdG9vbHRpcC1ib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpOy0tYnMtdG9vbHRpcC1vcGFjaXR5OjAuOTstLWJzLXRvb2x0aXAtYXJyb3ctd2lkdGg6MC44cmVtOy0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQ6MC40cmVtO3otaW5kZXg6dmFyKC0tYnMtdG9vbHRpcC16aW5kZXgpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOnZhcigtLWJzLXRvb2x0aXAtbWFyZ2luKTtmb250LWZhbWlseTp2YXIoLS1icy1mb250LXNhbnMtc2VyaWYpO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjU7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lO2xldHRlci1zcGFjaW5nOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbDt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDtsaW5lLWJyZWFrOmF1dG87Zm9udC1zaXplOnZhcigtLWJzLXRvb2x0aXAtZm9udC1zaXplKTt3b3JkLXdyYXA6YnJlYWstd29yZDtvcGFjaXR5OjB9LnRvb2x0aXAuc2hvd3tvcGFjaXR5OnZhcigtLWJzLXRvb2x0aXAtb3BhY2l0eSl9LnRvb2x0aXAgLnRvb2x0aXAtYXJyb3d7ZGlzcGxheTpibG9jazt3aWR0aDp2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKTtoZWlnaHQ6dmFyKC0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQpfS50b29sdGlwIC50b29sdGlwLWFycm93OjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5icy10b29sdGlwLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdIC50b29sdGlwLWFycm93LC5icy10b29sdGlwLXRvcCAudG9vbHRpcC1hcnJvd3tib3R0b206Y2FsYygtMSAqIHZhcigtLWJzLXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSl9LmJzLXRvb2x0aXAtYXV0b1tkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnRvb2x0aXAtYXJyb3c6OmJlZm9yZSwuYnMtdG9vbHRpcC10b3AgLnRvb2x0aXAtYXJyb3c6OmJlZm9yZXt0b3A6LTFweDtib3JkZXItd2lkdGg6dmFyKC0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQpIGNhbGModmFyKC0tYnMtdG9vbHRpcC1hcnJvdy13aWR0aCkgKiAuNSkgMDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWJzLXRvb2x0aXAtYmcpfS5icy10b29sdGlwLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0gLnRvb2x0aXAtYXJyb3csLmJzLXRvb2x0aXAtZW5kIC50b29sdGlwLWFycm93e2xlZnQ6Y2FsYygtMSAqIHZhcigtLWJzLXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSk7d2lkdGg6dmFyKC0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQpO2hlaWdodDp2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKX0uYnMtdG9vbHRpcC1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdIC50b29sdGlwLWFycm93OjpiZWZvcmUsLmJzLXRvb2x0aXAtZW5kIC50b29sdGlwLWFycm93OjpiZWZvcmV7cmlnaHQ6LTFweDtib3JkZXItd2lkdGg6Y2FsYyh2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS1icy10b29sdGlwLWFycm93LWhlaWdodCkgY2FsYyh2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSAwO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1icy10b29sdGlwLWJnKX0uYnMtdG9vbHRpcC1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudG9vbHRpcC1hcnJvdywuYnMtdG9vbHRpcC1ib3R0b20gLnRvb2x0aXAtYXJyb3d7dG9wOmNhbGMoLTEgKiB2YXIoLS1icy10b29sdGlwLWFycm93LWhlaWdodCkpfS5icy10b29sdGlwLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC50b29sdGlwLWFycm93OjpiZWZvcmUsLmJzLXRvb2x0aXAtYm90dG9tIC50b29sdGlwLWFycm93OjpiZWZvcmV7Ym90dG9tOi0xcHg7Ym9yZGVyLXdpZHRoOjAgY2FsYyh2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS1icy10b29sdGlwLWFycm93LWhlaWdodCk7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1icy10b29sdGlwLWJnKX0uYnMtdG9vbHRpcC1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnRvb2x0aXAtYXJyb3csLmJzLXRvb2x0aXAtc3RhcnQgLnRvb2x0aXAtYXJyb3d7cmlnaHQ6Y2FsYygtMSAqIHZhcigtLWJzLXRvb2x0aXAtYXJyb3ctaGVpZ2h0KSk7d2lkdGg6dmFyKC0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQpO2hlaWdodDp2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKX0uYnMtdG9vbHRpcC1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnRvb2x0aXAtYXJyb3c6OmJlZm9yZSwuYnMtdG9vbHRpcC1zdGFydCAudG9vbHRpcC1hcnJvdzo6YmVmb3Jle2xlZnQ6LTFweDtib3JkZXItd2lkdGg6Y2FsYyh2YXIoLS1icy10b29sdGlwLWFycm93LXdpZHRoKSAqIC41KSAwIGNhbGModmFyKC0tYnMtdG9vbHRpcC1hcnJvdy13aWR0aCkgKiAuNSkgdmFyKC0tYnMtdG9vbHRpcC1hcnJvdy1oZWlnaHQpO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWJzLXRvb2x0aXAtYmcpfS50b29sdGlwLWlubmVye21heC13aWR0aDp2YXIoLS1icy10b29sdGlwLW1heC13aWR0aCk7cGFkZGluZzp2YXIoLS1icy10b29sdGlwLXBhZGRpbmcteSkgdmFyKC0tYnMtdG9vbHRpcC1wYWRkaW5nLXgpO2NvbG9yOnZhcigtLWJzLXRvb2x0aXAtY29sb3IpO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtdG9vbHRpcC1iZyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy10b29sdGlwLWJvcmRlci1yYWRpdXMpfS5wb3BvdmVyey0tYnMtcG9wb3Zlci16aW5kZXg6MTA3MDstLWJzLXBvcG92ZXItbWF4LXdpZHRoOjI3NnB4Oy0tYnMtcG9wb3Zlci1mb250LXNpemU6MC44NzVyZW07LS1icy1wb3BvdmVyLWJnOnZhcigtLWJzLWJvZHktYmcpOy0tYnMtcG9wb3Zlci1ib3JkZXItd2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTstLWJzLXBvcG92ZXItYm9yZGVyLWNvbG9yOnZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1wb3BvdmVyLWJvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1sZyk7LS1icy1wb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKSAtIHZhcigtLWJzLWJvcmRlci13aWR0aCkpOy0tYnMtcG9wb3Zlci1ib3gtc2hhZG93OnZhcigtLWJzLWJveC1zaGFkb3cpOy0tYnMtcG9wb3Zlci1oZWFkZXItcGFkZGluZy14OjFyZW07LS1icy1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6MC41cmVtOy0tYnMtcG9wb3Zlci1oZWFkZXItZm9udC1zaXplOjFyZW07LS1icy1wb3BvdmVyLWhlYWRlci1jb2xvcjppbmhlcml0Oy0tYnMtcG9wb3Zlci1oZWFkZXItYmc6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnKTstLWJzLXBvcG92ZXItYm9keS1wYWRkaW5nLXg6MXJlbTstLWJzLXBvcG92ZXItYm9keS1wYWRkaW5nLXk6MXJlbTstLWJzLXBvcG92ZXItYm9keS1jb2xvcjp2YXIoLS1icy1ib2R5LWNvbG9yKTstLWJzLXBvcG92ZXItYXJyb3ctd2lkdGg6MXJlbTstLWJzLXBvcG92ZXItYXJyb3ctaGVpZ2h0OjAuNXJlbTstLWJzLXBvcG92ZXItYXJyb3ctYm9yZGVyOnZhcigtLWJzLXBvcG92ZXItYm9yZGVyLWNvbG9yKTt6LWluZGV4OnZhcigtLWJzLXBvcG92ZXItemluZGV4KTtkaXNwbGF5OmJsb2NrO21heC13aWR0aDp2YXIoLS1icy1wb3BvdmVyLW1heC13aWR0aCk7Zm9udC1mYW1pbHk6dmFyKC0tYnMtZm9udC1zYW5zLXNlcmlmKTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41O3RleHQtYWxpZ246bGVmdDt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTtsZXR0ZXItc3BhY2luZzpub3JtYWw7d29yZC1icmVhazpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7bGluZS1icmVhazphdXRvO2ZvbnQtc2l6ZTp2YXIoLS1icy1wb3BvdmVyLWZvbnQtc2l6ZSk7d29yZC13cmFwOmJyZWFrLXdvcmQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1wb3BvdmVyLWJnKTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7Ym9yZGVyOnZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1wb3BvdmVyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1wb3BvdmVyLWJvcmRlci1yYWRpdXMpfS5wb3BvdmVyIC5wb3BvdmVyLWFycm93e2Rpc3BsYXk6YmxvY2s7d2lkdGg6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy13aWR0aCk7aGVpZ2h0OnZhcigtLWJzLXBvcG92ZXItYXJyb3ctaGVpZ2h0KX0ucG9wb3ZlciAucG9wb3Zlci1hcnJvdzo6YWZ0ZXIsLnBvcG92ZXIgLnBvcG92ZXItYXJyb3c6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiI7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MH0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXT4ucG9wb3Zlci1hcnJvdywuYnMtcG9wb3Zlci10b3A+LnBvcG92ZXItYXJyb3d7Ym90dG9tOmNhbGMoLTEgKiAodmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKSl9LmJzLXBvcG92ZXItYXV0b1tkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0+LnBvcG92ZXItYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdPi5wb3BvdmVyLWFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItdG9wPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci10b3A+LnBvcG92ZXItYXJyb3c6OmJlZm9yZXtib3JkZXItd2lkdGg6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1oZWlnaHQpIGNhbGModmFyKC0tYnMtcG9wb3Zlci1hcnJvdy13aWR0aCkgKiAuNSkgMH0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXT4ucG9wb3Zlci1hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLXRvcD4ucG9wb3Zlci1hcnJvdzo6YmVmb3Jle2JvdHRvbTowO2JvcmRlci10b3AtY29sb3I6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1ib3JkZXIpfS5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci10b3A+LnBvcG92ZXItYXJyb3c6OmFmdGVye2JvdHRvbTp2YXIoLS1icy1wb3BvdmVyLWJvcmRlci13aWR0aCk7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1icy1wb3BvdmVyLWJnKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdPi5wb3BvdmVyLWFycm93LC5icy1wb3BvdmVyLWVuZD4ucG9wb3Zlci1hcnJvd3tsZWZ0OmNhbGMoLTEgKiAodmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKSk7d2lkdGg6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1oZWlnaHQpO2hlaWdodDp2YXIoLS1icy1wb3BvdmVyLWFycm93LXdpZHRoKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdPi5wb3BvdmVyLWFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItZW5kPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci1lbmQ+LnBvcG92ZXItYXJyb3c6OmJlZm9yZXtib3JkZXItd2lkdGg6Y2FsYyh2YXIoLS1icy1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSB2YXIoLS1icy1wb3BvdmVyLWFycm93LWhlaWdodCkgY2FsYyh2YXIoLS1icy1wb3BvdmVyLWFycm93LXdpZHRoKSAqIC41KSAwfS5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0+LnBvcG92ZXItYXJyb3c6OmJlZm9yZSwuYnMtcG9wb3Zlci1lbmQ+LnBvcG92ZXItYXJyb3c6OmJlZm9yZXtsZWZ0OjA7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWJzLXBvcG92ZXItYXJyb3ctYm9yZGVyKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci1lbmQ+LnBvcG92ZXItYXJyb3c6OmFmdGVye2xlZnQ6dmFyKC0tYnMtcG9wb3Zlci1ib3JkZXItd2lkdGgpO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1icy1wb3BvdmVyLWJnKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXT4ucG9wb3Zlci1hcnJvdywuYnMtcG9wb3Zlci1ib3R0b20+LnBvcG92ZXItYXJyb3d7dG9wOmNhbGMoLTEgKiAodmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1oZWlnaHQpKSAtIHZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKSl9LmJzLXBvcG92ZXItYXV0b1tkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0+LnBvcG92ZXItYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dPi5wb3BvdmVyLWFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItYm90dG9tPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci1ib3R0b20+LnBvcG92ZXItYXJyb3c6OmJlZm9yZXtib3JkZXItd2lkdGg6MCBjYWxjKHZhcigtLWJzLXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIHZhcigtLWJzLXBvcG92ZXItYXJyb3ctaGVpZ2h0KX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXT4ucG9wb3Zlci1hcnJvdzo6YmVmb3JlLC5icy1wb3BvdmVyLWJvdHRvbT4ucG9wb3Zlci1hcnJvdzo6YmVmb3Jle3RvcDowO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1ib3JkZXIpfS5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dPi5wb3BvdmVyLWFycm93OjphZnRlciwuYnMtcG9wb3Zlci1ib3R0b20+LnBvcG92ZXItYXJyb3c6OmFmdGVye3RvcDp2YXIoLS1icy1wb3BvdmVyLWJvcmRlci13aWR0aCk7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1icy1wb3BvdmVyLWJnKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwuYnMtcG9wb3Zlci1ib3R0b20gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDo1MCU7ZGlzcGxheTpibG9jazt3aWR0aDp2YXIoLS1icy1wb3BvdmVyLWFycm93LXdpZHRoKTttYXJnaW4tbGVmdDpjYWxjKC0uNSAqIHZhcigtLWJzLXBvcG92ZXItYXJyb3ctd2lkdGgpKTtjb250ZW50OiIiO2JvcmRlci1ib3R0b206dmFyKC0tYnMtcG9wb3Zlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLXBvcG92ZXItaGVhZGVyLWJnKX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0+LnBvcG92ZXItYXJyb3csLmJzLXBvcG92ZXItc3RhcnQ+LnBvcG92ZXItYXJyb3d7cmlnaHQ6Y2FsYygtMSAqICh2YXIoLS1icy1wb3BvdmVyLWFycm93LWhlaWdodCkpIC0gdmFyKC0tYnMtcG9wb3Zlci1ib3JkZXItd2lkdGgpKTt3aWR0aDp2YXIoLS1icy1wb3BvdmVyLWFycm93LWhlaWdodCk7aGVpZ2h0OnZhcigtLWJzLXBvcG92ZXItYXJyb3ctd2lkdGgpfS5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1sZWZ0XT4ucG9wb3Zlci1hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItYXV0b1tkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdPi5wb3BvdmVyLWFycm93OjpiZWZvcmUsLmJzLXBvcG92ZXItc3RhcnQ+LnBvcG92ZXItYXJyb3c6OmFmdGVyLC5icy1wb3BvdmVyLXN0YXJ0Pi5wb3BvdmVyLWFycm93OjpiZWZvcmV7Ym9yZGVyLXdpZHRoOmNhbGModmFyKC0tYnMtcG9wb3Zlci1hcnJvdy13aWR0aCkgKiAuNSkgMCBjYWxjKHZhcigtLWJzLXBvcG92ZXItYXJyb3ctd2lkdGgpICogLjUpIHZhcigtLWJzLXBvcG92ZXItYXJyb3ctaGVpZ2h0KX0uYnMtcG9wb3Zlci1hdXRvW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0+LnBvcG92ZXItYXJyb3c6OmJlZm9yZSwuYnMtcG9wb3Zlci1zdGFydD4ucG9wb3Zlci1hcnJvdzo6YmVmb3Jle3JpZ2h0OjA7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tYnMtcG9wb3Zlci1hcnJvdy1ib3JkZXIpfS5icy1wb3BvdmVyLWF1dG9bZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1sZWZ0XT4ucG9wb3Zlci1hcnJvdzo6YWZ0ZXIsLmJzLXBvcG92ZXItc3RhcnQ+LnBvcG92ZXItYXJyb3c6OmFmdGVye3JpZ2h0OnZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKTtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1icy1wb3BvdmVyLWJnKX0ucG9wb3Zlci1oZWFkZXJ7cGFkZGluZzp2YXIoLS1icy1wb3BvdmVyLWhlYWRlci1wYWRkaW5nLXkpIHZhcigtLWJzLXBvcG92ZXItaGVhZGVyLXBhZGRpbmcteCk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTp2YXIoLS1icy1wb3BvdmVyLWhlYWRlci1mb250LXNpemUpO2NvbG9yOnZhcigtLWJzLXBvcG92ZXItaGVhZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXBvcG92ZXItaGVhZGVyLWJnKTtib3JkZXItYm90dG9tOnZhcigtLWJzLXBvcG92ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1wb3BvdmVyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1wb3BvdmVyLWlubmVyLWJvcmRlci1yYWRpdXMpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLXBvcG92ZXItaW5uZXItYm9yZGVyLXJhZGl1cyl9LnBvcG92ZXItaGVhZGVyOmVtcHR5e2Rpc3BsYXk6bm9uZX0ucG9wb3Zlci1ib2R5e3BhZGRpbmc6dmFyKC0tYnMtcG9wb3Zlci1ib2R5LXBhZGRpbmcteSkgdmFyKC0tYnMtcG9wb3Zlci1ib2R5LXBhZGRpbmcteCk7Y29sb3I6dmFyKC0tYnMtcG9wb3Zlci1ib2R5LWNvbG9yKX0uY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmV9LmNhcm91c2VsLnBvaW50ZXItZXZlbnR7dG91Y2gtYWN0aW9uOnBhbi15fS5jYXJvdXNlbC1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0uY2Fyb3VzZWwtaW5uZXI6OmFmdGVye2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aDtjb250ZW50OiIifS5jYXJvdXNlbC1pdGVte3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O3dpZHRoOjEwMCU7bWFyZ2luLXJpZ2h0Oi0xMDAlOy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0fUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5jYXJvdXNlbC1pdGVte3RyYW5zaXRpb246bm9uZX19LmNhcm91c2VsLWl0ZW0tbmV4dCwuY2Fyb3VzZWwtaXRlbS1wcmV2LC5jYXJvdXNlbC1pdGVtLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1lbmQsLmNhcm91c2VsLWl0ZW0tbmV4dDpub3QoLmNhcm91c2VsLWl0ZW0tc3RhcnQpe3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfS5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1zdGFydCwuY2Fyb3VzZWwtaXRlbS1wcmV2Om5vdCguY2Fyb3VzZWwtaXRlbS1lbmQpe3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKX0uY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbXtvcGFjaXR5OjA7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zZm9ybTpub25lfS5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1zdGFydCwuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tZW5kLC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZXt6LWluZGV4OjE7b3BhY2l0eToxfS5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1lbmQsLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXN0YXJ0e3otaW5kZXg6MDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDBzIC42c31AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tZW5kLC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1zdGFydHt0cmFuc2l0aW9uOm5vbmV9fS5jYXJvdXNlbC1jb250cm9sLW5leHQsLmNhcm91c2VsLWNvbnRyb2wtcHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDt6LWluZGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjE1JTtwYWRkaW5nOjA7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtvcGFjaXR5Oi41O3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGVhc2V9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmNhcm91c2VsLWNvbnRyb2wtbmV4dCwuY2Fyb3VzZWwtY29udHJvbC1wcmV2e3RyYW5zaXRpb246bm9uZX19LmNhcm91c2VsLWNvbnRyb2wtbmV4dDpmb2N1cywuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLC5jYXJvdXNlbC1jb250cm9sLXByZXY6Zm9jdXMsLmNhcm91c2VsLWNvbnRyb2wtcHJldjpob3Zlcntjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MDtvcGFjaXR5Oi45fS5jYXJvdXNlbC1jb250cm9sLXByZXZ7bGVmdDowfS5jYXJvdXNlbC1jb250cm9sLW5leHR7cmlnaHQ6MH0uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24sLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjJyZW07aGVpZ2h0OjJyZW07YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjNmZmYnJTNlJTNjcGF0aCBkPSdNMTEuMzU0IDEuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDUuNzA3IDhsNS42NDcgNS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNi02YS41LjUgMCAwIDEgMC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDggMHonLyUzZSUzYy9zdmclM2UiKX0uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyUyM2ZmZiclM2UlM2NwYXRoIGQ9J000LjY0NiAxLjY0NmEuNS41IDAgMCAxIC43MDggMGw2IDZhLjUuNSAwIDAgMSAwIC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDgtLjcwOEwxMC4yOTMgOCA0LjY0NiAyLjM1NGEuNS41IDAgMCAxIDAtLjcwOHonLyUzZSUzYy9zdmclM2UiKX0uY2Fyb3VzZWwtaW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowO21hcmdpbi1yaWdodDoxNSU7bWFyZ2luLWJvdHRvbToxcmVtO21hcmdpbi1sZWZ0OjE1JX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBbZGF0YS1icy10YXJnZXRde2JveC1zaXppbmc6Y29udGVudC1ib3g7ZmxleDowIDEgYXV0bzt3aWR0aDozMHB4O2hlaWdodDozcHg7cGFkZGluZzowO21hcmdpbi1yaWdodDozcHg7bWFyZ2luLWxlZnQ6M3B4O3RleHQtaW5kZW50Oi05OTlweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjowO2JvcmRlci10b3A6MTBweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjEwcHggc29saWQgdHJhbnNwYXJlbnQ7b3BhY2l0eTouNTt0cmFuc2l0aW9uOm9wYWNpdHkgLjZzIGVhc2V9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmNhcm91c2VsLWluZGljYXRvcnMgW2RhdGEtYnMtdGFyZ2V0XXt0cmFuc2l0aW9uOm5vbmV9fS5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmV7b3BhY2l0eToxfS5jYXJvdXNlbC1jYXB0aW9ue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE1JTtib3R0b206MS4yNXJlbTtsZWZ0OjE1JTtwYWRkaW5nLXRvcDoxLjI1cmVtO3BhZGRpbmctYm90dG9tOjEuMjVyZW07Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0uY2Fyb3VzZWwtZGFyayAuY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24sLmNhcm91c2VsLWRhcmsgLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29ue2ZpbHRlcjppbnZlcnQoMSkgZ3JheXNjYWxlKDEwMCl9LmNhcm91c2VsLWRhcmsgLmNhcm91c2VsLWluZGljYXRvcnMgW2RhdGEtYnMtdGFyZ2V0XXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmNhcm91c2VsLWRhcmsgLmNhcm91c2VsLWNhcHRpb257Y29sb3I6IzAwMH1bZGF0YS1icy10aGVtZT1kYXJrXSAuY2Fyb3VzZWwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLFtkYXRhLWJzLXRoZW1lPWRhcmtdIC5jYXJvdXNlbCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sW2RhdGEtYnMtdGhlbWU9ZGFya10uY2Fyb3VzZWwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLFtkYXRhLWJzLXRoZW1lPWRhcmtdLmNhcm91c2VsIC5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbntmaWx0ZXI6aW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDApfVtkYXRhLWJzLXRoZW1lPWRhcmtdIC5jYXJvdXNlbCAuY2Fyb3VzZWwtaW5kaWNhdG9ycyBbZGF0YS1icy10YXJnZXRdLFtkYXRhLWJzLXRoZW1lPWRhcmtdLmNhcm91c2VsIC5jYXJvdXNlbC1pbmRpY2F0b3JzIFtkYXRhLWJzLXRhcmdldF17YmFja2dyb3VuZC1jb2xvcjojMDAwfVtkYXRhLWJzLXRoZW1lPWRhcmtdIC5jYXJvdXNlbCAuY2Fyb3VzZWwtY2FwdGlvbixbZGF0YS1icy10aGVtZT1kYXJrXS5jYXJvdXNlbCAuY2Fyb3VzZWwtY2FwdGlvbntjb2xvcjojMDAwfS5zcGlubmVyLWJvcmRlciwuc3Bpbm5lci1ncm93e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOnZhcigtLWJzLXNwaW5uZXItd2lkdGgpO2hlaWdodDp2YXIoLS1icy1zcGlubmVyLWhlaWdodCk7dmVydGljYWwtYWxpZ246dmFyKC0tYnMtc3Bpbm5lci12ZXJ0aWNhbC1hbGlnbik7Ym9yZGVyLXJhZGl1czo1MCU7YW5pbWF0aW9uOnZhcigtLWJzLXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkKSBsaW5lYXIgaW5maW5pdGUgdmFyKC0tYnMtc3Bpbm5lci1hbmltYXRpb24tbmFtZSl9QGtleWZyYW1lcyBzcGlubmVyLWJvcmRlcnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5zcGlubmVyLWJvcmRlcnstLWJzLXNwaW5uZXItd2lkdGg6MnJlbTstLWJzLXNwaW5uZXItaGVpZ2h0OjJyZW07LS1icy1zcGlubmVyLXZlcnRpY2FsLWFsaWduOi0wLjEyNWVtOy0tYnMtc3Bpbm5lci1ib3JkZXItd2lkdGg6MC4yNWVtOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6MC43NXM7LS1icy1zcGlubmVyLWFuaW1hdGlvbi1uYW1lOnNwaW5uZXItYm9yZGVyO2JvcmRlcjp2YXIoLS1icy1zcGlubmVyLWJvcmRlci13aWR0aCkgc29saWQgY3VycmVudGNvbG9yO2JvcmRlci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uc3Bpbm5lci1ib3JkZXItc217LS1icy1zcGlubmVyLXdpZHRoOjFyZW07LS1icy1zcGlubmVyLWhlaWdodDoxcmVtOy0tYnMtc3Bpbm5lci1ib3JkZXItd2lkdGg6MC4yZW19QGtleWZyYW1lcyBzcGlubmVyLWdyb3d7MCV7dHJhbnNmb3JtOnNjYWxlKDApfTUwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmV9fS5zcGlubmVyLWdyb3d7LS1icy1zcGlubmVyLXdpZHRoOjJyZW07LS1icy1zcGlubmVyLWhlaWdodDoycmVtOy0tYnMtc3Bpbm5lci12ZXJ0aWNhbC1hbGlnbjotMC4xMjVlbTstLWJzLXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOjAuNzVzOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tbmFtZTpzcGlubmVyLWdyb3c7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Y29sb3I7b3BhY2l0eTowfS5zcGlubmVyLWdyb3ctc217LS1icy1zcGlubmVyLXdpZHRoOjFyZW07LS1icy1zcGlubmVyLWhlaWdodDoxcmVtfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5zcGlubmVyLWJvcmRlciwuc3Bpbm5lci1ncm93ey0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6MS41c319Lm9mZmNhbnZhcywub2ZmY2FudmFzLWxnLC5vZmZjYW52YXMtbWQsLm9mZmNhbnZhcy1zbSwub2ZmY2FudmFzLXhsLC5vZmZjYW52YXMteHhsey0tYnMtb2ZmY2FudmFzLXppbmRleDoxMDQ1Oy0tYnMtb2ZmY2FudmFzLXdpZHRoOjQwMHB4Oy0tYnMtb2ZmY2FudmFzLWhlaWdodDozMHZoOy0tYnMtb2ZmY2FudmFzLXBhZGRpbmcteDoxcmVtOy0tYnMtb2ZmY2FudmFzLXBhZGRpbmcteToxcmVtOy0tYnMtb2ZmY2FudmFzLWNvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpOy0tYnMtb2ZmY2FudmFzLWJnOnZhcigtLWJzLWJvZHktYmcpOy0tYnMtb2ZmY2FudmFzLWJvcmRlci13aWR0aDp2YXIoLS1icy1ib3JkZXItd2lkdGgpOy0tYnMtb2ZmY2FudmFzLWJvcmRlci1jb2xvcjp2YXIoLS1icy1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpOy0tYnMtb2ZmY2FudmFzLWJveC1zaGFkb3c6dmFyKC0tYnMtYm94LXNoYWRvdy1zbSk7LS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDstLWJzLW9mZmNhbnZhcy10aXRsZS1saW5lLWhlaWdodDoxLjV9QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey5vZmZjYW52YXMtc217cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjA7ei1pbmRleDp2YXIoLS1icy1vZmZjYW52YXMtemluZGV4KTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW9mZmNhbnZhcy1jb2xvcik7dmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjA7dHJhbnNpdGlvbjp2YXIoLS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbil9fUBtZWRpYSAobWF4LXdpZHRoOjU3NS45OHB4KSBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsub2ZmY2FudmFzLXNte3RyYW5zaXRpb246bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NTc1Ljk4cHgpey5vZmZjYW52YXMtc20ub2ZmY2FudmFzLXN0YXJ0e3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1yaWdodDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9Lm9mZmNhbnZhcy1zbS5vZmZjYW52YXMtZW5ke3RvcDowO3JpZ2h0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItbGVmdDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0ub2ZmY2FudmFzLXNtLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLXNtLm9mZmNhbnZhcy1ib3R0b217cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItdG9wOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5vZmZjYW52YXMtc20uc2hvdzpub3QoLmhpZGluZyksLm9mZmNhbnZhcy1zbS5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMtc20uaGlkaW5nLC5vZmZjYW52YXMtc20uc2hvdywub2ZmY2FudmFzLXNtLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7Lm9mZmNhbnZhcy1zbXstLWJzLW9mZmNhbnZhcy1oZWlnaHQ6YXV0bzstLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGg6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0ub2ZmY2FudmFzLXNtIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ub2ZmY2FudmFzLXNtIC5vZmZjYW52YXMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7cGFkZGluZzowO292ZXJmbG93LXk6dmlzaWJsZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6NzY3Ljk4cHgpey5vZmZjYW52YXMtbWR7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjA7ei1pbmRleDp2YXIoLS1icy1vZmZjYW52YXMtemluZGV4KTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW9mZmNhbnZhcy1jb2xvcik7dmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjA7dHJhbnNpdGlvbjp2YXIoLS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbil9fUBtZWRpYSAobWF4LXdpZHRoOjc2Ny45OHB4KSBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsub2ZmY2FudmFzLW1ke3RyYW5zaXRpb246bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NzY3Ljk4cHgpey5vZmZjYW52YXMtbWQub2ZmY2FudmFzLXN0YXJ0e3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1yaWdodDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9Lm9mZmNhbnZhcy1tZC5vZmZjYW52YXMtZW5ke3RvcDowO3JpZ2h0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItbGVmdDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0ub2ZmY2FudmFzLW1kLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLW1kLm9mZmNhbnZhcy1ib3R0b217cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItdG9wOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5vZmZjYW52YXMtbWQuc2hvdzpub3QoLmhpZGluZyksLm9mZmNhbnZhcy1tZC5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMtbWQuaGlkaW5nLC5vZmZjYW52YXMtbWQuc2hvdywub2ZmY2FudmFzLW1kLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm9mZmNhbnZhcy1tZHstLWJzLW9mZmNhbnZhcy1oZWlnaHQ6YXV0bzstLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGg6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0ub2ZmY2FudmFzLW1kIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ub2ZmY2FudmFzLW1kIC5vZmZjYW52YXMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7cGFkZGluZzowO292ZXJmbG93LXk6dmlzaWJsZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6OTkxLjk4cHgpey5vZmZjYW52YXMtbGd7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjA7ei1pbmRleDp2YXIoLS1icy1vZmZjYW52YXMtemluZGV4KTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW9mZmNhbnZhcy1jb2xvcik7dmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjA7dHJhbnNpdGlvbjp2YXIoLS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbil9fUBtZWRpYSAobWF4LXdpZHRoOjk5MS45OHB4KSBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsub2ZmY2FudmFzLWxne3RyYW5zaXRpb246bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6OTkxLjk4cHgpey5vZmZjYW52YXMtbGcub2ZmY2FudmFzLXN0YXJ0e3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1yaWdodDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9Lm9mZmNhbnZhcy1sZy5vZmZjYW52YXMtZW5ke3RvcDowO3JpZ2h0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItbGVmdDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0ub2ZmY2FudmFzLWxnLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLWxnLm9mZmNhbnZhcy1ib3R0b217cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItdG9wOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5vZmZjYW52YXMtbGcuc2hvdzpub3QoLmhpZGluZyksLm9mZmNhbnZhcy1sZy5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMtbGcuaGlkaW5nLC5vZmZjYW52YXMtbGcuc2hvdywub2ZmY2FudmFzLWxnLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7Lm9mZmNhbnZhcy1sZ3stLWJzLW9mZmNhbnZhcy1oZWlnaHQ6YXV0bzstLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGg6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0ub2ZmY2FudmFzLWxnIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ub2ZmY2FudmFzLWxnIC5vZmZjYW52YXMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjA7cGFkZGluZzowO292ZXJmbG93LXk6dmlzaWJsZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6MTE5OS45OHB4KXsub2ZmY2FudmFzLXhse3Bvc2l0aW9uOmZpeGVkO2JvdHRvbTowO3otaW5kZXg6dmFyKC0tYnMtb2ZmY2FudmFzLXppbmRleCk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJTtjb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtY29sb3IpO3Zpc2liaWxpdHk6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtb2ZmY2FudmFzLWJnKTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7b3V0bGluZTowO3RyYW5zaXRpb246dmFyKC0tYnMtb2ZmY2FudmFzLXRyYW5zaXRpb24pfX1AbWVkaWEgKG1heC13aWR0aDoxMTk5Ljk4cHgpIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5vZmZjYW52YXMteGx7dHJhbnNpdGlvbjpub25lfX1AbWVkaWEgKG1heC13aWR0aDoxMTk5Ljk4cHgpey5vZmZjYW52YXMteGwub2ZmY2FudmFzLXN0YXJ0e3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1yaWdodDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9Lm9mZmNhbnZhcy14bC5vZmZjYW52YXMtZW5ke3RvcDowO3JpZ2h0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItbGVmdDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0ub2ZmY2FudmFzLXhsLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLXhsLm9mZmNhbnZhcy1ib3R0b217cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItdG9wOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5vZmZjYW52YXMteGwuc2hvdzpub3QoLmhpZGluZyksLm9mZmNhbnZhcy14bC5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMteGwuaGlkaW5nLC5vZmZjYW52YXMteGwuc2hvdywub2ZmY2FudmFzLXhsLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5vZmZjYW52YXMteGx7LS1icy1vZmZjYW52YXMtaGVpZ2h0OmF1dG87LS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9Lm9mZmNhbnZhcy14bCAub2ZmY2FudmFzLWhlYWRlcntkaXNwbGF5Om5vbmV9Lm9mZmNhbnZhcy14bCAub2ZmY2FudmFzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO3BhZGRpbmc6MDtvdmVyZmxvdy15OnZpc2libGU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjEzOTkuOThweCl7Lm9mZmNhbnZhcy14eGx7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjA7ei1pbmRleDp2YXIoLS1icy1vZmZjYW52YXMtemluZGV4KTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW9mZmNhbnZhcy1jb2xvcik7dmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjA7dHJhbnNpdGlvbjp2YXIoLS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbil9fUBtZWRpYSAobWF4LXdpZHRoOjEzOTkuOThweCkgYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7Lm9mZmNhbnZhcy14eGx7dHJhbnNpdGlvbjpub25lfX1AbWVkaWEgKG1heC13aWR0aDoxMzk5Ljk4cHgpey5vZmZjYW52YXMteHhsLm9mZmNhbnZhcy1zdGFydHt0b3A6MDtsZWZ0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItcmlnaHQ6dmFyKC0tYnMtb2ZmY2FudmFzLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtb2ZmY2FudmFzLWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfS5vZmZjYW52YXMteHhsLm9mZmNhbnZhcy1lbmR7dG9wOjA7cmlnaHQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1sZWZ0OnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpfS5vZmZjYW52YXMteHhsLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLXh4bC5vZmZjYW52YXMtYm90dG9te3JpZ2h0OjA7bGVmdDowO2hlaWdodDp2YXIoLS1icy1vZmZjYW52YXMtaGVpZ2h0KTttYXgtaGVpZ2h0OjEwMCU7Ym9yZGVyLXRvcDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKX0ub2ZmY2FudmFzLXh4bC5zaG93Om5vdCguaGlkaW5nKSwub2ZmY2FudmFzLXh4bC5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMteHhsLmhpZGluZywub2ZmY2FudmFzLXh4bC5zaG93LC5vZmZjYW52YXMteHhsLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfX1AbWVkaWEgKG1pbi13aWR0aDoxNDAwcHgpey5vZmZjYW52YXMteHhsey0tYnMtb2ZmY2FudmFzLWhlaWdodDphdXRvOy0tYnMtb2ZmY2FudmFzLWJvcmRlci13aWR0aDowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS5vZmZjYW52YXMteHhsIC5vZmZjYW52YXMtaGVhZGVye2Rpc3BsYXk6bm9uZX0ub2ZmY2FudmFzLXh4bCAub2ZmY2FudmFzLWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO3BhZGRpbmc6MDtvdmVyZmxvdy15OnZpc2libGU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9fS5vZmZjYW52YXN7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjA7ei1pbmRleDp2YXIoLS1icy1vZmZjYW52YXMtemluZGV4KTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW9mZmNhbnZhcy1jb2xvcik7dmlzaWJpbGl0eTpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1vZmZjYW52YXMtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtvdXRsaW5lOjA7dHJhbnNpdGlvbjp2YXIoLS1icy1vZmZjYW52YXMtdHJhbnNpdGlvbil9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7Lm9mZmNhbnZhc3t0cmFuc2l0aW9uOm5vbmV9fS5vZmZjYW52YXMub2ZmY2FudmFzLXN0YXJ0e3RvcDowO2xlZnQ6MDt3aWR0aDp2YXIoLS1icy1vZmZjYW52YXMtd2lkdGgpO2JvcmRlci1yaWdodDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSl9Lm9mZmNhbnZhcy5vZmZjYW52YXMtZW5ke3RvcDowO3JpZ2h0OjA7d2lkdGg6dmFyKC0tYnMtb2ZmY2FudmFzLXdpZHRoKTtib3JkZXItbGVmdDp2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1vZmZjYW52YXMtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKX0ub2ZmY2FudmFzLm9mZmNhbnZhcy10b3B7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItYm90dG9tOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ub2ZmY2FudmFzLm9mZmNhbnZhcy1ib3R0b217cmlnaHQ6MDtsZWZ0OjA7aGVpZ2h0OnZhcigtLWJzLW9mZmNhbnZhcy1oZWlnaHQpO21heC1oZWlnaHQ6MTAwJTtib3JkZXItdG9wOnZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJzLW9mZmNhbnZhcy1ib3JkZXItY29sb3IpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfS5vZmZjYW52YXMuc2hvdzpub3QoLmhpZGluZyksLm9mZmNhbnZhcy5zaG93aW5ne3RyYW5zZm9ybTpub25lfS5vZmZjYW52YXMuaGlkaW5nLC5vZmZjYW52YXMuc2hvdywub2ZmY2FudmFzLnNob3dpbmd7dmlzaWJpbGl0eTp2aXNpYmxlfS5vZmZjYW52YXMtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3otaW5kZXg6MTA0MDt3aWR0aDoxMDB2dztoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5vZmZjYW52YXMtYmFja2Ryb3AuZmFkZXtvcGFjaXR5OjB9Lm9mZmNhbnZhcy1iYWNrZHJvcC5zaG93e29wYWNpdHk6LjV9Lm9mZmNhbnZhcy1oZWFkZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOnZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXkpIHZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXgpfS5vZmZjYW52YXMtaGVhZGVyIC5idG4tY2xvc2V7cGFkZGluZzpjYWxjKHZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXkpICogLjUpIGNhbGModmFyKC0tYnMtb2ZmY2FudmFzLXBhZGRpbmcteCkgKiAuNSk7bWFyZ2luLXRvcDpjYWxjKC0uNSAqIHZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXkpKTttYXJnaW4tcmlnaHQ6Y2FsYygtLjUgKiB2YXIoLS1icy1vZmZjYW52YXMtcGFkZGluZy14KSk7bWFyZ2luLWJvdHRvbTpjYWxjKC0uNSAqIHZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXkpKX0ub2ZmY2FudmFzLXRpdGxle21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDp2YXIoLS1icy1vZmZjYW52YXMtdGl0bGUtbGluZS1oZWlnaHQpfS5vZmZjYW52YXMtYm9keXtmbGV4LWdyb3c6MTtwYWRkaW5nOnZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXkpIHZhcigtLWJzLW9mZmNhbnZhcy1wYWRkaW5nLXgpO292ZXJmbG93LXk6YXV0b30ucGxhY2Vob2xkZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLWhlaWdodDoxZW07dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjp3YWl0O2JhY2tncm91bmQtY29sb3I6Y3VycmVudGNvbG9yO29wYWNpdHk6LjV9LnBsYWNlaG9sZGVyLmJ0bjo6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiJ9LnBsYWNlaG9sZGVyLXhze21pbi1oZWlnaHQ6LjZlbX0ucGxhY2Vob2xkZXItc217bWluLWhlaWdodDouOGVtfS5wbGFjZWhvbGRlci1sZ3ttaW4taGVpZ2h0OjEuMmVtfS5wbGFjZWhvbGRlci1nbG93IC5wbGFjZWhvbGRlcnthbmltYXRpb246cGxhY2Vob2xkZXItZ2xvdyAycyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyLWdsb3d7NTAle29wYWNpdHk6LjJ9fS5wbGFjZWhvbGRlci13YXZley13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTMwZGVnLCMwMDAgNTUlLHJnYmEoMCwwLDAsMC44KSA3NSUsIzAwMCA5NSUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDEzMGRlZywjMDAwIDU1JSxyZ2JhKDAsMCwwLDAuOCkgNzUlLCMwMDAgOTUlKTstd2Via2l0LW1hc2stc2l6ZToyMDAlIDEwMCU7bWFzay1zaXplOjIwMCUgMTAwJTthbmltYXRpb246cGxhY2Vob2xkZXItd2F2ZSAycyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBwbGFjZWhvbGRlci13YXZlezEwMCV7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOi0yMDAlIDAlO21hc2stcG9zaXRpb246LTIwMCUgMCV9fS5jbGVhcmZpeDo6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjbGVhcjpib3RoO2NvbnRlbnQ6IiJ9LnRleHQtYmctcHJpbWFyeXtjb2xvcjojZmZmIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOlJHQkEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHksMSkpIWltcG9ydGFudH0udGV4dC1iZy1zZWNvbmRhcnl7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjpSR0JBKHZhcigtLWJzLXNlY29uZGFyeS1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHksMSkpIWltcG9ydGFudH0udGV4dC1iZy1zdWNjZXNze2NvbG9yOiNmZmYhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6UkdCQSh2YXIoLS1icy1zdWNjZXNzLXJnYiksdmFyKC0tYnMtYmctb3BhY2l0eSwxKSkhaW1wb3J0YW50fS50ZXh0LWJnLWluZm97Y29sb3I6IzAwMCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjpSR0JBKHZhcigtLWJzLWluZm8tcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5LDEpKSFpbXBvcnRhbnR9LnRleHQtYmctd2FybmluZ3tjb2xvcjojMDAwIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOlJHQkEodmFyKC0tYnMtd2FybmluZy1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHksMSkpIWltcG9ydGFudH0udGV4dC1iZy1kYW5nZXJ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjpSR0JBKHZhcigtLWJzLWRhbmdlci1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHksMSkpIWltcG9ydGFudH0udGV4dC1iZy1saWdodHtjb2xvcjojMDAwIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOlJHQkEodmFyKC0tYnMtbGlnaHQtcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5LDEpKSFpbXBvcnRhbnR9LnRleHQtYmctZGFya3tjb2xvcjojZmZmIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOlJHQkEodmFyKC0tYnMtZGFyay1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1wcmltYXJ5e2NvbG9yOlJHQkEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1wcmltYXJ5LXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLXByaW1hcnk6Zm9jdXMsLmxpbmstcHJpbWFyeTpob3Zlcntjb2xvcjpSR0JBKDEwLDg4LDIwMix2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDEwLDg4LDIwMix2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoMTAsODgsMjAyLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1zZWNvbmRhcnl7Y29sb3I6UkdCQSh2YXIoLS1icy1zZWNvbmRhcnktcmdiKSx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLXNlY29uZGFyeS1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1zZWNvbmRhcnktcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnR9Lmxpbmstc2Vjb25kYXJ5OmZvY3VzLC5saW5rLXNlY29uZGFyeTpob3Zlcntjb2xvcjpSR0JBKDg2LDk0LDEwMCx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDg2LDk0LDEwMCx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoODYsOTQsMTAwLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1zdWNjZXNze2NvbG9yOlJHQkEodmFyKC0tYnMtc3VjY2Vzcy1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEodmFyKC0tYnMtc3VjY2Vzcy1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1zdWNjZXNzLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLXN1Y2Nlc3M6Zm9jdXMsLmxpbmstc3VjY2Vzczpob3Zlcntjb2xvcjpSR0JBKDIwLDEwOCw2Nyx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDIwLDEwOCw2Nyx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoMjAsMTA4LDY3LHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1pbmZve2NvbG9yOlJHQkEodmFyKC0tYnMtaW5mby1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEodmFyKC0tYnMtaW5mby1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1pbmZvLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLWluZm86Zm9jdXMsLmxpbmstaW5mbzpob3Zlcntjb2xvcjpSR0JBKDYxLDIxMywyNDMsdmFyKC0tYnMtbGluay1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSg2MSwyMTMsMjQzLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSg2MSwyMTMsMjQzLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay13YXJuaW5ne2NvbG9yOlJHQkEodmFyKC0tYnMtd2FybmluZy1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEodmFyKC0tYnMtd2FybmluZy1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy13YXJuaW5nLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLXdhcm5pbmc6Zm9jdXMsLmxpbmstd2FybmluZzpob3Zlcntjb2xvcjpSR0JBKDI1NSwyMDUsNTcsdmFyKC0tYnMtbGluay1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSgyNTUsMjA1LDU3LHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSgyNTUsMjA1LDU3LHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1kYW5nZXJ7Y29sb3I6UkdCQSh2YXIoLS1icy1kYW5nZXItcmdiKSx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLWRhbmdlci1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1kYW5nZXItcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnR9LmxpbmstZGFuZ2VyOmZvY3VzLC5saW5rLWRhbmdlcjpob3Zlcntjb2xvcjpSR0JBKDE3Niw0Miw1NSx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDE3Niw0Miw1NSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoMTc2LDQyLDU1LHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1saWdodHtjb2xvcjpSR0JBKHZhcigtLWJzLWxpZ2h0LXJnYiksdmFyKC0tYnMtbGluay1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1saWdodC1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1saWdodC1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1saWdodDpmb2N1cywubGluay1saWdodDpob3Zlcntjb2xvcjpSR0JBKDI0OSwyNTAsMjUxLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoMjQ5LDI1MCwyNTEsdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDI0OSwyNTAsMjUxLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1kYXJre2NvbG9yOlJHQkEodmFyKC0tYnMtZGFyay1yZ2IpLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEodmFyKC0tYnMtZGFyay1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6UkdCQSh2YXIoLS1icy1kYXJrLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLWRhcms6Zm9jdXMsLmxpbmstZGFyazpob3Zlcntjb2xvcjpSR0JBKDI2LDMwLDMzLHZhcigtLWJzLWxpbmstb3BhY2l0eSwxKSkhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOlJHQkEoMjYsMzAsMzMsdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKDI2LDMwLDMzLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay1ib2R5LWVtcGhhc2lze2NvbG9yOlJHQkEodmFyKC0tYnMtZW1waGFzaXMtY29sb3ItcmdiKSx2YXIoLS1icy1saW5rLW9wYWNpdHksMSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwxKSkhaW1wb3J0YW50fS5saW5rLWJvZHktZW1waGFzaXM6Zm9jdXMsLmxpbmstYm9keS1lbXBoYXNpczpob3Zlcntjb2xvcjpSR0JBKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay1vcGFjaXR5LC43NSkpIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwwLjc1KSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpSR0JBKHZhcigtLWJzLWVtcGhhc2lzLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSwwLjc1KSkhaW1wb3J0YW50fS5mb2N1cy1yaW5nOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OnZhcigtLWJzLWZvY3VzLXJpbmcteCwwKSB2YXIoLS1icy1mb2N1cy1yaW5nLXksMCkgdmFyKC0tYnMtZm9jdXMtcmluZy1ibHVyLDApIHZhcigtLWJzLWZvY3VzLXJpbmctd2lkdGgpIHZhcigtLWJzLWZvY3VzLXJpbmctY29sb3IpfS5pY29uLWxpbmt7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6LjM3NXJlbTthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1saW5rLWNvbG9yLXJnYiksdmFyKC0tYnMtbGluay1vcGFjaXR5LDAuNSkpO3RleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWxpbmstY29sb3ItcmdiKSx2YXIoLS1icy1saW5rLW9wYWNpdHksMC41KSk7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjAuMjVlbTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5pY29uLWxpbms+LmJpe2ZsZXgtc2hyaW5rOjA7d2lkdGg6MWVtO2hlaWdodDoxZW07ZmlsbDpjdXJyZW50Y29sb3I7dHJhbnNpdGlvbjouMnMgZWFzZS1pbi1vdXQgdHJhbnNmb3JtfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5pY29uLWxpbms+LmJpe3RyYW5zaXRpb246bm9uZX19Lmljb24tbGluay1ob3Zlcjpmb2N1cy12aXNpYmxlPi5iaSwuaWNvbi1saW5rLWhvdmVyOmhvdmVyPi5iaXt0cmFuc2Zvcm06dmFyKC0tYnMtaWNvbi1saW5rLXRyYW5zZm9ybSx0cmFuc2xhdGUzZCguMjVlbSwwLDApKX0ucmF0aW97cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ucmF0aW86OmJlZm9yZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmctdG9wOnZhcigtLWJzLWFzcGVjdC1yYXRpbyk7Y29udGVudDoiIn0ucmF0aW8+Kntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0ucmF0aW8tMXgxey0tYnMtYXNwZWN0LXJhdGlvOjEwMCV9LnJhdGlvLTR4M3stLWJzLWFzcGVjdC1yYXRpbzo3NSV9LnJhdGlvLTE2eDl7LS1icy1hc3BlY3QtcmF0aW86NTYuMjUlfS5yYXRpby0yMXg5ey0tYnMtYXNwZWN0LXJhdGlvOjQyLjg1NzE0Mjg1NzElfS5maXhlZC10b3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDMwfS5maXhlZC1ib3R0b217cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDMwfS5zdGlja3ktdG9we3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMjB9LnN0aWNreS1ib3R0b217cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JvdHRvbTowO3otaW5kZXg6MTAyMH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LnN0aWNreS1zbS10b3B7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAyMH0uc3RpY2t5LXNtLWJvdHRvbXtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7Ym90dG9tOjA7ei1pbmRleDoxMDIwfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LnN0aWNreS1tZC10b3B7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAyMH0uc3RpY2t5LW1kLWJvdHRvbXtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7Ym90dG9tOjA7ei1pbmRleDoxMDIwfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LnN0aWNreS1sZy10b3B7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAyMH0uc3RpY2t5LWxnLWJvdHRvbXtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3k7Ym90dG9tOjA7ei1pbmRleDoxMDIwfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5zdGlja3kteGwtdG9we3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMjB9LnN0aWNreS14bC1ib3R0b217cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JvdHRvbTowO3otaW5kZXg6MTAyMH19QG1lZGlhIChtaW4td2lkdGg6MTQwMHB4KXsuc3RpY2t5LXh4bC10b3B7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAyMH0uc3RpY2t5LXh4bC1ib3R0b217cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JvdHRvbTowO3otaW5kZXg6MTAyMH19LmhzdGFja3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOnN0cmV0Y2h9LnZzdGFja3tkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24tc2VsZjpzdHJldGNofS52aXN1YWxseS1oaWRkZW4sLnZpc3VhbGx5LWhpZGRlbi1mb2N1c2FibGU6bm90KDpmb2N1cyk6bm90KDpmb2N1cy13aXRoaW4pe3dpZHRoOjFweCFpbXBvcnRhbnQ7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDttYXJnaW46LTFweCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtjbGlwOnJlY3QoMCwwLDAsMCkhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50fS52aXN1YWxseS1oaWRkZW4tZm9jdXNhYmxlOm5vdCg6Zm9jdXMpOm5vdCg6Zm9jdXMtd2l0aGluKTpub3QoY2FwdGlvbiksLnZpc3VhbGx5LWhpZGRlbjpub3QoY2FwdGlvbil7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fS5zdHJldGNoZWQtbGluazo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxO2NvbnRlbnQ6IiJ9LnRleHQtdHJ1bmNhdGV7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS52cntkaXNwbGF5OmlubGluZS1ibG9jazthbGlnbi1zZWxmOnN0cmV0Y2g7d2lkdGg6dmFyKC0tYnMtYm9yZGVyLXdpZHRoKTttaW4taGVpZ2h0OjFlbTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRjb2xvcjtvcGFjaXR5Oi4yNX0uYWxpZ24tYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi10b3B7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZSFpbXBvcnRhbnR9LmFsaWduLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fS5hbGlnbi10ZXh0LWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbSFpbXBvcnRhbnR9LmFsaWduLXRleHQtdG9we3ZlcnRpY2FsLWFsaWduOnRleHQtdG9wIWltcG9ydGFudH0uZmxvYXQtc3RhcnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmZsb2F0LWVuZHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmZsb2F0LW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9Lm9iamVjdC1maXQtY29udGFpbnstby1vYmplY3QtZml0OmNvbnRhaW4haW1wb3J0YW50O29iamVjdC1maXQ6Y29udGFpbiFpbXBvcnRhbnR9Lm9iamVjdC1maXQtY292ZXJ7LW8tb2JqZWN0LWZpdDpjb3ZlciFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlciFpbXBvcnRhbnR9Lm9iamVjdC1maXQtZmlsbHstby1vYmplY3QtZml0OmZpbGwhaW1wb3J0YW50O29iamVjdC1maXQ6ZmlsbCFpbXBvcnRhbnR9Lm9iamVjdC1maXQtc2NhbGV7LW8tb2JqZWN0LWZpdDpzY2FsZS1kb3duIWltcG9ydGFudDtvYmplY3QtZml0OnNjYWxlLWRvd24haW1wb3J0YW50fS5vYmplY3QtZml0LW5vbmV7LW8tb2JqZWN0LWZpdDpub25lIWltcG9ydGFudDtvYmplY3QtZml0Om5vbmUhaW1wb3J0YW50fS5vcGFjaXR5LTB7b3BhY2l0eTowIWltcG9ydGFudH0ub3BhY2l0eS0yNXtvcGFjaXR5Oi4yNSFpbXBvcnRhbnR9Lm9wYWNpdHktNTB7b3BhY2l0eTouNSFpbXBvcnRhbnR9Lm9wYWNpdHktNzV7b3BhY2l0eTouNzUhaW1wb3J0YW50fS5vcGFjaXR5LTEwMHtvcGFjaXR5OjEhaW1wb3J0YW50fS5vdmVyZmxvdy1hdXRve292ZXJmbG93OmF1dG8haW1wb3J0YW50fS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0ub3ZlcmZsb3ctdmlzaWJsZXtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0ub3ZlcmZsb3ctc2Nyb2xse292ZXJmbG93OnNjcm9sbCFpbXBvcnRhbnR9Lm92ZXJmbG93LXgtYXV0b3tvdmVyZmxvdy14OmF1dG8haW1wb3J0YW50fS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbiFpbXBvcnRhbnR9Lm92ZXJmbG93LXgtdmlzaWJsZXtvdmVyZmxvdy14OnZpc2libGUhaW1wb3J0YW50fS5vdmVyZmxvdy14LXNjcm9sbHtvdmVyZmxvdy14OnNjcm9sbCFpbXBvcnRhbnR9Lm92ZXJmbG93LXktYXV0b3tvdmVyZmxvdy15OmF1dG8haW1wb3J0YW50fS5vdmVyZmxvdy15LWhpZGRlbntvdmVyZmxvdy15OmhpZGRlbiFpbXBvcnRhbnR9Lm92ZXJmbG93LXktdmlzaWJsZXtvdmVyZmxvdy15OnZpc2libGUhaW1wb3J0YW50fS5vdmVyZmxvdy15LXNjcm9sbHtvdmVyZmxvdy15OnNjcm9sbCFpbXBvcnRhbnR9LmQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLWdyaWR7ZGlzcGxheTpncmlkIWltcG9ydGFudH0uZC1pbmxpbmUtZ3JpZHtkaXNwbGF5OmlubGluZS1ncmlkIWltcG9ydGFudH0uZC10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC10YWJsZS1yb3d7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fS5kLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5zaGFkb3d7Ym94LXNoYWRvdzp2YXIoLS1icy1ib3gtc2hhZG93KSFpbXBvcnRhbnR9LnNoYWRvdy1zbXtib3gtc2hhZG93OnZhcigtLWJzLWJveC1zaGFkb3ctc20pIWltcG9ydGFudH0uc2hhZG93LWxne2JveC1zaGFkb3c6dmFyKC0tYnMtYm94LXNoYWRvdy1sZykhaW1wb3J0YW50fS5zaGFkb3ctbm9uZXtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fS5mb2N1cy1yaW5nLXByaW1hcnl7LS1icy1mb2N1cy1yaW5nLWNvbG9yOnJnYmEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLCB2YXIoLS1icy1mb2N1cy1yaW5nLW9wYWNpdHkpKX0uZm9jdXMtcmluZy1zZWNvbmRhcnl7LS1icy1mb2N1cy1yaW5nLWNvbG9yOnJnYmEodmFyKC0tYnMtc2Vjb25kYXJ5LXJnYiksIHZhcigtLWJzLWZvY3VzLXJpbmctb3BhY2l0eSkpfS5mb2N1cy1yaW5nLXN1Y2Nlc3N7LS1icy1mb2N1cy1yaW5nLWNvbG9yOnJnYmEodmFyKC0tYnMtc3VjY2Vzcy1yZ2IpLCB2YXIoLS1icy1mb2N1cy1yaW5nLW9wYWNpdHkpKX0uZm9jdXMtcmluZy1pbmZvey0tYnMtZm9jdXMtcmluZy1jb2xvcjpyZ2JhKHZhcigtLWJzLWluZm8tcmdiKSwgdmFyKC0tYnMtZm9jdXMtcmluZy1vcGFjaXR5KSl9LmZvY3VzLXJpbmctd2FybmluZ3stLWJzLWZvY3VzLXJpbmctY29sb3I6cmdiYSh2YXIoLS1icy13YXJuaW5nLXJnYiksIHZhcigtLWJzLWZvY3VzLXJpbmctb3BhY2l0eSkpfS5mb2N1cy1yaW5nLWRhbmdlcnstLWJzLWZvY3VzLXJpbmctY29sb3I6cmdiYSh2YXIoLS1icy1kYW5nZXItcmdiKSwgdmFyKC0tYnMtZm9jdXMtcmluZy1vcGFjaXR5KSl9LmZvY3VzLXJpbmctbGlnaHR7LS1icy1mb2N1cy1yaW5nLWNvbG9yOnJnYmEodmFyKC0tYnMtbGlnaHQtcmdiKSwgdmFyKC0tYnMtZm9jdXMtcmluZy1vcGFjaXR5KSl9LmZvY3VzLXJpbmctZGFya3stLWJzLWZvY3VzLXJpbmctY29sb3I6cmdiYSh2YXIoLS1icy1kYXJrLXJnYiksIHZhcigtLWJzLWZvY3VzLXJpbmctb3BhY2l0eSkpfS5wb3NpdGlvbi1zdGF0aWN7cG9zaXRpb246c3RhdGljIWltcG9ydGFudH0ucG9zaXRpb24tcmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50fS5wb3NpdGlvbi1hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnR9LnBvc2l0aW9uLWZpeGVke3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudH0ucG9zaXRpb24tc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5IWltcG9ydGFudDtwb3NpdGlvbjpzdGlja3khaW1wb3J0YW50fS50b3AtMHt0b3A6MCFpbXBvcnRhbnR9LnRvcC01MHt0b3A6NTAlIWltcG9ydGFudH0udG9wLTEwMHt0b3A6MTAwJSFpbXBvcnRhbnR9LmJvdHRvbS0we2JvdHRvbTowIWltcG9ydGFudH0uYm90dG9tLTUwe2JvdHRvbTo1MCUhaW1wb3J0YW50fS5ib3R0b20tMTAwe2JvdHRvbToxMDAlIWltcG9ydGFudH0uc3RhcnQtMHtsZWZ0OjAhaW1wb3J0YW50fS5zdGFydC01MHtsZWZ0OjUwJSFpbXBvcnRhbnR9LnN0YXJ0LTEwMHtsZWZ0OjEwMCUhaW1wb3J0YW50fS5lbmQtMHtyaWdodDowIWltcG9ydGFudH0uZW5kLTUwe3JpZ2h0OjUwJSFpbXBvcnRhbnR9LmVuZC0xMDB7cmlnaHQ6MTAwJSFpbXBvcnRhbnR9LnRyYW5zbGF0ZS1taWRkbGV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIWltcG9ydGFudH0udHJhbnNsYXRlLW1pZGRsZS14e3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIWltcG9ydGFudH0udHJhbnNsYXRlLW1pZGRsZS15e3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIWltcG9ydGFudH0uYm9yZGVye2JvcmRlcjp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHZhcigtLWJzLWJvcmRlci1zdHlsZSkgdmFyKC0tYnMtYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnR9LmJvcmRlci0we2JvcmRlcjowIWltcG9ydGFudH0uYm9yZGVyLXRvcHtib3JkZXItdG9wOnZhcigtLWJzLWJvcmRlci13aWR0aCkgdmFyKC0tYnMtYm9yZGVyLXN0eWxlKSB2YXIoLS1icy1ib3JkZXItY29sb3IpIWltcG9ydGFudH0uYm9yZGVyLXRvcC0we2JvcmRlci10b3A6MCFpbXBvcnRhbnR9LmJvcmRlci1lbmR7Ym9yZGVyLXJpZ2h0OnZhcigtLWJzLWJvcmRlci13aWR0aCkgdmFyKC0tYnMtYm9yZGVyLXN0eWxlKSB2YXIoLS1icy1ib3JkZXItY29sb3IpIWltcG9ydGFudH0uYm9yZGVyLWVuZC0we2JvcmRlci1yaWdodDowIWltcG9ydGFudH0uYm9yZGVyLWJvdHRvbXtib3JkZXItYm90dG9tOnZhcigtLWJzLWJvcmRlci13aWR0aCkgdmFyKC0tYnMtYm9yZGVyLXN0eWxlKSB2YXIoLS1icy1ib3JkZXItY29sb3IpIWltcG9ydGFudH0uYm9yZGVyLWJvdHRvbS0we2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnR9LmJvcmRlci1zdGFydHtib3JkZXItbGVmdDp2YXIoLS1icy1ib3JkZXItd2lkdGgpIHZhcigtLWJzLWJvcmRlci1zdHlsZSkgdmFyKC0tYnMtYm9yZGVyLWNvbG9yKSFpbXBvcnRhbnR9LmJvcmRlci1zdGFydC0we2JvcmRlci1sZWZ0OjAhaW1wb3J0YW50fS5ib3JkZXItcHJpbWFyeXstLWJzLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLHZhcigtLWJzLWJvcmRlci1vcGFjaXR5KSkhaW1wb3J0YW50fS5ib3JkZXItc2Vjb25kYXJ5ey0tYnMtYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS1icy1zZWNvbmRhcnktcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLXN1Y2Nlc3N7LS1icy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLXN1Y2Nlc3MtcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLWluZm97LS1icy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLWluZm8tcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLXdhcm5pbmd7LS1icy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLXdhcm5pbmctcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLWRhbmdlcnstLWJzLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tYnMtZGFuZ2VyLXJnYiksdmFyKC0tYnMtYm9yZGVyLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJvcmRlci1saWdodHstLWJzLWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYmEodmFyKC0tYnMtbGlnaHQtcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLWRhcmt7LS1icy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhcmstcmdiKSx2YXIoLS1icy1ib3JkZXItb3BhY2l0eSkpIWltcG9ydGFudH0uYm9yZGVyLWJsYWNrey0tYnMtYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiYSh2YXIoLS1icy1ibGFjay1yZ2IpLHZhcigtLWJzLWJvcmRlci1vcGFjaXR5KSkhaW1wb3J0YW50fS5ib3JkZXItd2hpdGV7LS1icy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2JhKHZhcigtLWJzLXdoaXRlLXJnYiksdmFyKC0tYnMtYm9yZGVyLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJvcmRlci1wcmltYXJ5LXN1YnRsZXtib3JkZXItY29sb3I6dmFyKC0tYnMtcHJpbWFyeS1ib3JkZXItc3VidGxlKSFpbXBvcnRhbnR9LmJvcmRlci1zZWNvbmRhcnktc3VidGxle2JvcmRlci1jb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItc3VjY2Vzcy1zdWJ0bGV7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXN1Y2Nlc3MtYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItaW5mby1zdWJ0bGV7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWluZm8tYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItd2FybmluZy1zdWJ0bGV7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLXdhcm5pbmctYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItZGFuZ2VyLXN1YnRsZXtib3JkZXItY29sb3I6dmFyKC0tYnMtZGFuZ2VyLWJvcmRlci1zdWJ0bGUpIWltcG9ydGFudH0uYm9yZGVyLWxpZ2h0LXN1YnRsZXtib3JkZXItY29sb3I6dmFyKC0tYnMtbGlnaHQtYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItZGFyay1zdWJ0bGV7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWRhcmstYm9yZGVyLXN1YnRsZSkhaW1wb3J0YW50fS5ib3JkZXItMXtib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudH0uYm9yZGVyLTJ7Ym9yZGVyLXdpZHRoOjJweCFpbXBvcnRhbnR9LmJvcmRlci0ze2JvcmRlci13aWR0aDozcHghaW1wb3J0YW50fS5ib3JkZXItNHtib3JkZXItd2lkdGg6NHB4IWltcG9ydGFudH0uYm9yZGVyLTV7Ym9yZGVyLXdpZHRoOjVweCFpbXBvcnRhbnR9LmJvcmRlci1vcGFjaXR5LTEwey0tYnMtYm9yZGVyLW9wYWNpdHk6MC4xfS5ib3JkZXItb3BhY2l0eS0yNXstLWJzLWJvcmRlci1vcGFjaXR5OjAuMjV9LmJvcmRlci1vcGFjaXR5LTUwey0tYnMtYm9yZGVyLW9wYWNpdHk6MC41fS5ib3JkZXItb3BhY2l0eS03NXstLWJzLWJvcmRlci1vcGFjaXR5OjAuNzV9LmJvcmRlci1vcGFjaXR5LTEwMHstLWJzLWJvcmRlci1vcGFjaXR5OjF9LnctMjV7d2lkdGg6MjUlIWltcG9ydGFudH0udy01MHt3aWR0aDo1MCUhaW1wb3J0YW50fS53LTc1e3dpZHRoOjc1JSFpbXBvcnRhbnR9LnctMTAwe3dpZHRoOjEwMCUhaW1wb3J0YW50fS53LWF1dG97d2lkdGg6YXV0byFpbXBvcnRhbnR9Lm13LTEwMHttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9LnZ3LTEwMHt3aWR0aDoxMDB2dyFpbXBvcnRhbnR9Lm1pbi12dy0xMDB7bWluLXdpZHRoOjEwMHZ3IWltcG9ydGFudH0uaC0yNXtoZWlnaHQ6MjUlIWltcG9ydGFudH0uaC01MHtoZWlnaHQ6NTAlIWltcG9ydGFudH0uaC03NXtoZWlnaHQ6NzUlIWltcG9ydGFudH0uaC0xMDB7aGVpZ2h0OjEwMCUhaW1wb3J0YW50fS5oLWF1dG97aGVpZ2h0OmF1dG8haW1wb3J0YW50fS5taC0xMDB7bWF4LWhlaWdodDoxMDAlIWltcG9ydGFudH0udmgtMTAwe2hlaWdodDoxMDB2aCFpbXBvcnRhbnR9Lm1pbi12aC0xMDB7bWluLWhlaWdodDoxMDB2aCFpbXBvcnRhbnR9LmZsZXgtZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmZsZXgtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uZmxleC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uZmxleC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWV2ZW5seXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5IWltcG9ydGFudH0uYWxpZ24taXRlbXMtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYtYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fS5vcmRlci1maXJzdHtvcmRlcjotMSFpbXBvcnRhbnR9Lm9yZGVyLTB7b3JkZXI6MCFpbXBvcnRhbnR9Lm9yZGVyLTF7b3JkZXI6MSFpbXBvcnRhbnR9Lm9yZGVyLTJ7b3JkZXI6MiFpbXBvcnRhbnR9Lm9yZGVyLTN7b3JkZXI6MyFpbXBvcnRhbnR9Lm9yZGVyLTR7b3JkZXI6NCFpbXBvcnRhbnR9Lm9yZGVyLTV7b3JkZXI6NSFpbXBvcnRhbnR9Lm9yZGVyLWxhc3R7b3JkZXI6NiFpbXBvcnRhbnR9Lm0tMHttYXJnaW46MCFpbXBvcnRhbnR9Lm0tMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubS0ye21hcmdpbjouNXJlbSFpbXBvcnRhbnR9Lm0tM3ttYXJnaW46MXJlbSFpbXBvcnRhbnR9Lm0tNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubS01e21hcmdpbjozcmVtIWltcG9ydGFudH0ubS1hdXRve21hcmdpbjphdXRvIWltcG9ydGFudH0ubXgtMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm14LTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ubXgtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXgtM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm14LTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ubXgtNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm14LWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5teS0we21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubXktMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5teS0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5teS0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxcmVtIWltcG9ydGFudH0ubXktNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5teS01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubXktYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm10LTB7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ubXQtMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm10LTJ7bWFyZ2luLXRvcDouNXJlbSFpbXBvcnRhbnR9Lm10LTN7bWFyZ2luLXRvcDoxcmVtIWltcG9ydGFudH0ubXQtNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm10LTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXQtYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS5tZS0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWUtMXttYXJnaW4tcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ubWUtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tZS0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWUtNHttYXJnaW4tcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ubWUtNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1lLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1iLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tYi0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tYi0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1iLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tYi01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1iLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubXMtMHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ubXMtMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tcy0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXMtM3ttYXJnaW4tbGVmdDoxcmVtIWltcG9ydGFudH0ubXMtNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tcy01e21hcmdpbi1sZWZ0OjNyZW0haW1wb3J0YW50fS5tcy1hdXRve21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5wLTB7cGFkZGluZzowIWltcG9ydGFudH0ucC0xe3BhZGRpbmc6LjI1cmVtIWltcG9ydGFudH0ucC0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wLTN7cGFkZGluZzoxcmVtIWltcG9ydGFudH0ucC00e3BhZGRpbmc6MS41cmVtIWltcG9ydGFudH0ucC01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB4LTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnB4LTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5weC0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnB4LTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnB4LTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5weC01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5weS0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5weS0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucHktMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5weS0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5weS00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucHktNXtwYWRkaW5nLXRvcDozcmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHQtMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ucHQtMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50fS5wdC0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHQtM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudH0ucHQtNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50fS5wdC01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wZS0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBlLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wZS0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5wZS0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBlLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wZS01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBiLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGItMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBiLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBiLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGItNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHMtMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnBzLTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnBzLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucHMtM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnBzLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnBzLTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5nYXAtMHtnYXA6MCFpbXBvcnRhbnR9LmdhcC0xe2dhcDouMjVyZW0haW1wb3J0YW50fS5nYXAtMntnYXA6LjVyZW0haW1wb3J0YW50fS5nYXAtM3tnYXA6MXJlbSFpbXBvcnRhbnR9LmdhcC00e2dhcDoxLjVyZW0haW1wb3J0YW50fS5nYXAtNXtnYXA6M3JlbSFpbXBvcnRhbnR9LnJvdy1nYXAtMHtyb3ctZ2FwOjAhaW1wb3J0YW50fS5yb3ctZ2FwLTF7cm93LWdhcDouMjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLTJ7cm93LWdhcDouNXJlbSFpbXBvcnRhbnR9LnJvdy1nYXAtM3tyb3ctZ2FwOjFyZW0haW1wb3J0YW50fS5yb3ctZ2FwLTR7cm93LWdhcDoxLjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLTV7cm93LWdhcDozcmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC0wey1tb3otY29sdW1uLWdhcDowIWltcG9ydGFudDtjb2x1bW4tZ2FwOjAhaW1wb3J0YW50fS5jb2x1bW4tZ2FwLTF7LW1vei1jb2x1bW4tZ2FwOjAuMjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjI1cmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC0yey1tb3otY29sdW1uLWdhcDowLjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLTN7LW1vei1jb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6MXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtNHstbW96LWNvbHVtbi1nYXA6MS41cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtNXstbW96LWNvbHVtbi1nYXA6M3JlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDozcmVtIWltcG9ydGFudH0uZm9udC1tb25vc3BhY2V7Zm9udC1mYW1pbHk6dmFyKC0tYnMtZm9udC1tb25vc3BhY2UpIWltcG9ydGFudH0uZnMtMXtmb250LXNpemU6Y2FsYygxLjM3NXJlbSArIDEuNXZ3KSFpbXBvcnRhbnR9LmZzLTJ7Zm9udC1zaXplOmNhbGMoMS4zMjVyZW0gKyAuOXZ3KSFpbXBvcnRhbnR9LmZzLTN7Zm9udC1zaXplOmNhbGMoMS4zcmVtICsgLjZ2dykhaW1wb3J0YW50fS5mcy00e2ZvbnQtc2l6ZTpjYWxjKDEuMjc1cmVtICsgLjN2dykhaW1wb3J0YW50fS5mcy01e2ZvbnQtc2l6ZToxLjI1cmVtIWltcG9ydGFudH0uZnMtNntmb250LXNpemU6MXJlbSFpbXBvcnRhbnR9LmZzdC1pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50fS5mc3Qtbm9ybWFse2ZvbnQtc3R5bGU6bm9ybWFsIWltcG9ydGFudH0uZnctbGlnaHRlcntmb250LXdlaWdodDpsaWdodGVyIWltcG9ydGFudH0uZnctbGlnaHR7Zm9udC13ZWlnaHQ6MzAwIWltcG9ydGFudH0uZnctbm9ybWFse2ZvbnQtd2VpZ2h0OjQwMCFpbXBvcnRhbnR9LmZ3LW1lZGl1bXtmb250LXdlaWdodDo1MDAhaW1wb3J0YW50fS5mdy1zZW1pYm9sZHtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50fS5mdy1ib2xke2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnR9LmZ3LWJvbGRlcntmb250LXdlaWdodDpib2xkZXIhaW1wb3J0YW50fS5saC0xe2xpbmUtaGVpZ2h0OjEhaW1wb3J0YW50fS5saC1zbXtsaW5lLWhlaWdodDoxLjI1IWltcG9ydGFudH0ubGgtYmFzZXtsaW5lLWhlaWdodDoxLjUhaW1wb3J0YW50fS5saC1sZ3tsaW5lLWhlaWdodDoyIWltcG9ydGFudH0udGV4dC1zdGFydHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LWVuZHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fS50ZXh0LWRlY29yYXRpb24tbm9uZXt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9LnRleHQtZGVjb3JhdGlvbi11bmRlcmxpbmV7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnR9LnRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2h7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaCFpbXBvcnRhbnR9LnRleHQtbG93ZXJjYXNle3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSFpbXBvcnRhbnR9LnRleHQtdXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSFpbXBvcnRhbnR9LnRleHQtY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplIWltcG9ydGFudH0udGV4dC13cmFwe3doaXRlLXNwYWNlOm5vcm1hbCFpbXBvcnRhbnR9LnRleHQtbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnR9LnRleHQtYnJlYWt7d29yZC13cmFwOmJyZWFrLXdvcmQhaW1wb3J0YW50O3dvcmQtYnJlYWs6YnJlYWstd29yZCFpbXBvcnRhbnR9LnRleHQtcHJpbWFyeXstLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEodmFyKC0tYnMtcHJpbWFyeS1yZ2IpLHZhcigtLWJzLXRleHQtb3BhY2l0eSkpIWltcG9ydGFudH0udGV4dC1zZWNvbmRhcnl7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2JhKHZhcigtLWJzLXNlY29uZGFyeS1yZ2IpLHZhcigtLWJzLXRleHQtb3BhY2l0eSkpIWltcG9ydGFudH0udGV4dC1zdWNjZXNzey0tYnMtdGV4dC1vcGFjaXR5OjE7Y29sb3I6cmdiYSh2YXIoLS1icy1zdWNjZXNzLXJnYiksdmFyKC0tYnMtdGV4dC1vcGFjaXR5KSkhaW1wb3J0YW50fS50ZXh0LWluZm97LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2JhKHZhcigtLWJzLWluZm8tcmdiKSx2YXIoLS1icy10ZXh0LW9wYWNpdHkpKSFpbXBvcnRhbnR9LnRleHQtd2FybmluZ3stLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEodmFyKC0tYnMtd2FybmluZy1yZ2IpLHZhcigtLWJzLXRleHQtb3BhY2l0eSkpIWltcG9ydGFudH0udGV4dC1kYW5nZXJ7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2JhKHZhcigtLWJzLWRhbmdlci1yZ2IpLHZhcigtLWJzLXRleHQtb3BhY2l0eSkpIWltcG9ydGFudH0udGV4dC1saWdodHstLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEodmFyKC0tYnMtbGlnaHQtcmdiKSx2YXIoLS1icy10ZXh0LW9wYWNpdHkpKSFpbXBvcnRhbnR9LnRleHQtZGFya3stLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEodmFyKC0tYnMtZGFyay1yZ2IpLHZhcigtLWJzLXRleHQtb3BhY2l0eSkpIWltcG9ydGFudH0udGV4dC1ibGFja3stLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEodmFyKC0tYnMtYmxhY2stcmdiKSx2YXIoLS1icy10ZXh0LW9wYWNpdHkpKSFpbXBvcnRhbnR9LnRleHQtd2hpdGV7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2JhKHZhcigtLWJzLXdoaXRlLXJnYiksdmFyKC0tYnMtdGV4dC1vcGFjaXR5KSkhaW1wb3J0YW50fS50ZXh0LWJvZHl7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjpyZ2JhKHZhcigtLWJzLWJvZHktY29sb3ItcmdiKSx2YXIoLS1icy10ZXh0LW9wYWNpdHkpKSFpbXBvcnRhbnR9LnRleHQtbXV0ZWR7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjp2YXIoLS1icy1zZWNvbmRhcnktY29sb3IpIWltcG9ydGFudH0udGV4dC1ibGFjay01MHstLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEoMCwwLDAsLjUpIWltcG9ydGFudH0udGV4dC13aGl0ZS01MHstLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpIWltcG9ydGFudH0udGV4dC1ib2R5LXNlY29uZGFyeXstLWJzLXRleHQtb3BhY2l0eToxO2NvbG9yOnZhcigtLWJzLXNlY29uZGFyeS1jb2xvcikhaW1wb3J0YW50fS50ZXh0LWJvZHktdGVydGlhcnl7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjp2YXIoLS1icy10ZXJ0aWFyeS1jb2xvcikhaW1wb3J0YW50fS50ZXh0LWJvZHktZW1waGFzaXN7LS1icy10ZXh0LW9wYWNpdHk6MTtjb2xvcjp2YXIoLS1icy1lbXBoYXNpcy1jb2xvcikhaW1wb3J0YW50fS50ZXh0LXJlc2V0ey0tYnMtdGV4dC1vcGFjaXR5OjE7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnR9LnRleHQtb3BhY2l0eS0yNXstLWJzLXRleHQtb3BhY2l0eTowLjI1fS50ZXh0LW9wYWNpdHktNTB7LS1icy10ZXh0LW9wYWNpdHk6MC41fS50ZXh0LW9wYWNpdHktNzV7LS1icy10ZXh0LW9wYWNpdHk6MC43NX0udGV4dC1vcGFjaXR5LTEwMHstLWJzLXRleHQtb3BhY2l0eToxfS50ZXh0LXByaW1hcnktZW1waGFzaXN7Y29sb3I6dmFyKC0tYnMtcHJpbWFyeS10ZXh0LWVtcGhhc2lzKSFpbXBvcnRhbnR9LnRleHQtc2Vjb25kYXJ5LWVtcGhhc2lze2NvbG9yOnZhcigtLWJzLXNlY29uZGFyeS10ZXh0LWVtcGhhc2lzKSFpbXBvcnRhbnR9LnRleHQtc3VjY2Vzcy1lbXBoYXNpc3tjb2xvcjp2YXIoLS1icy1zdWNjZXNzLXRleHQtZW1waGFzaXMpIWltcG9ydGFudH0udGV4dC1pbmZvLWVtcGhhc2lze2NvbG9yOnZhcigtLWJzLWluZm8tdGV4dC1lbXBoYXNpcykhaW1wb3J0YW50fS50ZXh0LXdhcm5pbmctZW1waGFzaXN7Y29sb3I6dmFyKC0tYnMtd2FybmluZy10ZXh0LWVtcGhhc2lzKSFpbXBvcnRhbnR9LnRleHQtZGFuZ2VyLWVtcGhhc2lze2NvbG9yOnZhcigtLWJzLWRhbmdlci10ZXh0LWVtcGhhc2lzKSFpbXBvcnRhbnR9LnRleHQtbGlnaHQtZW1waGFzaXN7Y29sb3I6dmFyKC0tYnMtbGlnaHQtdGV4dC1lbXBoYXNpcykhaW1wb3J0YW50fS50ZXh0LWRhcmstZW1waGFzaXN7Y29sb3I6dmFyKC0tYnMtZGFyay10ZXh0LWVtcGhhc2lzKSFpbXBvcnRhbnR9Lmxpbmstb3BhY2l0eS0xMHstLWJzLWxpbmstb3BhY2l0eTowLjF9Lmxpbmstb3BhY2l0eS0xMC1ob3Zlcjpob3ZlcnstLWJzLWxpbmstb3BhY2l0eTowLjF9Lmxpbmstb3BhY2l0eS0yNXstLWJzLWxpbmstb3BhY2l0eTowLjI1fS5saW5rLW9wYWNpdHktMjUtaG92ZXI6aG92ZXJ7LS1icy1saW5rLW9wYWNpdHk6MC4yNX0ubGluay1vcGFjaXR5LTUwey0tYnMtbGluay1vcGFjaXR5OjAuNX0ubGluay1vcGFjaXR5LTUwLWhvdmVyOmhvdmVyey0tYnMtbGluay1vcGFjaXR5OjAuNX0ubGluay1vcGFjaXR5LTc1ey0tYnMtbGluay1vcGFjaXR5OjAuNzV9Lmxpbmstb3BhY2l0eS03NS1ob3Zlcjpob3ZlcnstLWJzLWxpbmstb3BhY2l0eTowLjc1fS5saW5rLW9wYWNpdHktMTAwey0tYnMtbGluay1vcGFjaXR5OjF9Lmxpbmstb3BhY2l0eS0xMDAtaG92ZXI6aG92ZXJ7LS1icy1saW5rLW9wYWNpdHk6MX0ubGluay1vZmZzZXQtMXt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6MC4xMjVlbSFpbXBvcnRhbnR9Lmxpbmstb2Zmc2V0LTEtaG92ZXI6aG92ZXJ7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjAuMTI1ZW0haW1wb3J0YW50fS5saW5rLW9mZnNldC0ye3RleHQtdW5kZXJsaW5lLW9mZnNldDowLjI1ZW0haW1wb3J0YW50fS5saW5rLW9mZnNldC0yLWhvdmVyOmhvdmVye3RleHQtdW5kZXJsaW5lLW9mZnNldDowLjI1ZW0haW1wb3J0YW50fS5saW5rLW9mZnNldC0ze3RleHQtdW5kZXJsaW5lLW9mZnNldDowLjM3NWVtIWltcG9ydGFudH0ubGluay1vZmZzZXQtMy1ob3Zlcjpob3Zlcnt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6MC4zNzVlbSFpbXBvcnRhbnR9LmxpbmstdW5kZXJsaW5lLXByaW1hcnl7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjE7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1wcmltYXJ5LXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1wcmltYXJ5LXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudH0ubGluay11bmRlcmxpbmUtc2Vjb25kYXJ5ey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eToxOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOnJnYmEodmFyKC0tYnMtc2Vjb25kYXJ5LXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1zZWNvbmRhcnktcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50fS5saW5rLXVuZGVybGluZS1zdWNjZXNzey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eToxOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOnJnYmEodmFyKC0tYnMtc3VjY2Vzcy1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHkpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOnJnYmEodmFyKC0tYnMtc3VjY2Vzcy1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmxpbmstdW5kZXJsaW5lLWluZm97LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjE7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1pbmZvLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1pbmZvLXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudH0ubGluay11bmRlcmxpbmUtd2FybmluZ3stLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLXdhcm5pbmctcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLXdhcm5pbmctcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50fS5saW5rLXVuZGVybGluZS1kYW5nZXJ7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjE7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6cmdiYSh2YXIoLS1icy1kYW5nZXItcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhbmdlci1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmxpbmstdW5kZXJsaW5lLWxpZ2h0ey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eToxOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOnJnYmEodmFyKC0tYnMtbGlnaHQtcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWxpZ2h0LXJnYiksdmFyKC0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eSkpIWltcG9ydGFudH0ubGluay11bmRlcmxpbmUtZGFya3stLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhcmstcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhcmstcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5KSkhaW1wb3J0YW50fS5saW5rLXVuZGVybGluZXstLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpyZ2JhKHZhcigtLWJzLWxpbmstY29sb3ItcmdiKSx2YXIoLS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5LDEpKSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOnJnYmEodmFyKC0tYnMtbGluay1jb2xvci1yZ2IpLHZhcigtLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHksMSkpIWltcG9ydGFudH0ubGluay11bmRlcmxpbmUtb3BhY2l0eS0wey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eTowfS5saW5rLXVuZGVybGluZS1vcGFjaXR5LTAtaG92ZXI6aG92ZXJ7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjB9LmxpbmstdW5kZXJsaW5lLW9wYWNpdHktMTB7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjAuMX0ubGluay11bmRlcmxpbmUtb3BhY2l0eS0xMC1ob3Zlcjpob3ZlcnstLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MC4xfS5saW5rLXVuZGVybGluZS1vcGFjaXR5LTI1ey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eTowLjI1fS5saW5rLXVuZGVybGluZS1vcGFjaXR5LTI1LWhvdmVyOmhvdmVyey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eTowLjI1fS5saW5rLXVuZGVybGluZS1vcGFjaXR5LTUwey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eTowLjV9LmxpbmstdW5kZXJsaW5lLW9wYWNpdHktNTAtaG92ZXI6aG92ZXJ7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjAuNX0ubGluay11bmRlcmxpbmUtb3BhY2l0eS03NXstLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MC43NX0ubGluay11bmRlcmxpbmUtb3BhY2l0eS03NS1ob3Zlcjpob3ZlcnstLWJzLWxpbmstdW5kZXJsaW5lLW9wYWNpdHk6MC43NX0ubGluay11bmRlcmxpbmUtb3BhY2l0eS0xMDB7LS1icy1saW5rLXVuZGVybGluZS1vcGFjaXR5OjF9LmxpbmstdW5kZXJsaW5lLW9wYWNpdHktMTAwLWhvdmVyOmhvdmVyey0tYnMtbGluay11bmRlcmxpbmUtb3BhY2l0eToxfS5iZy1wcmltYXJ5ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1wcmltYXJ5LXJnYiksdmFyKC0tYnMtYmctb3BhY2l0eSkpIWltcG9ydGFudH0uYmctc2Vjb25kYXJ5ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1zZWNvbmRhcnktcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy1zdWNjZXNzey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1zdWNjZXNzLXJnYiksdmFyKC0tYnMtYmctb3BhY2l0eSkpIWltcG9ydGFudH0uYmctaW5mb3stLWJzLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEodmFyKC0tYnMtaW5mby1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJnLXdhcm5pbmd7LS1icy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKHZhcigtLWJzLXdhcm5pbmctcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy1kYW5nZXJ7LS1icy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhbmdlci1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJnLWxpZ2h0ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1saWdodC1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJnLWRhcmt7LS1icy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKHZhcigtLWJzLWRhcmstcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy1ibGFja3stLWJzLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEodmFyKC0tYnMtYmxhY2stcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy13aGl0ZXstLWJzLWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEodmFyKC0tYnMtd2hpdGUtcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy1ib2R5ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1ib2R5LWJnLXJnYiksdmFyKC0tYnMtYmctb3BhY2l0eSkpIWltcG9ydGFudH0uYmctdHJhbnNwYXJlbnR7LS1icy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmJnLWJvZHktc2Vjb25kYXJ5ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy1zZWNvbmRhcnktYmctcmdiKSx2YXIoLS1icy1iZy1vcGFjaXR5KSkhaW1wb3J0YW50fS5iZy1ib2R5LXRlcnRpYXJ5ey0tYnMtYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiYSh2YXIoLS1icy10ZXJ0aWFyeS1iZy1yZ2IpLHZhcigtLWJzLWJnLW9wYWNpdHkpKSFpbXBvcnRhbnR9LmJnLW9wYWNpdHktMTB7LS1icy1iZy1vcGFjaXR5OjAuMX0uYmctb3BhY2l0eS0yNXstLWJzLWJnLW9wYWNpdHk6MC4yNX0uYmctb3BhY2l0eS01MHstLWJzLWJnLW9wYWNpdHk6MC41fS5iZy1vcGFjaXR5LTc1ey0tYnMtYmctb3BhY2l0eTowLjc1fS5iZy1vcGFjaXR5LTEwMHstLWJzLWJnLW9wYWNpdHk6MX0uYmctcHJpbWFyeS1zdWJ0bGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1wcmltYXJ5LWJnLXN1YnRsZSkhaW1wb3J0YW50fS5iZy1zZWNvbmRhcnktc3VidGxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtc2Vjb25kYXJ5LWJnLXN1YnRsZSkhaW1wb3J0YW50fS5iZy1zdWNjZXNzLXN1YnRsZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLXN1Y2Nlc3MtYmctc3VidGxlKSFpbXBvcnRhbnR9LmJnLWluZm8tc3VidGxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtaW5mby1iZy1zdWJ0bGUpIWltcG9ydGFudH0uYmctd2FybmluZy1zdWJ0bGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy13YXJuaW5nLWJnLXN1YnRsZSkhaW1wb3J0YW50fS5iZy1kYW5nZXItc3VidGxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtZGFuZ2VyLWJnLXN1YnRsZSkhaW1wb3J0YW50fS5iZy1saWdodC1zdWJ0bGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1saWdodC1iZy1zdWJ0bGUpIWltcG9ydGFudH0uYmctZGFyay1zdWJ0bGV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1kYXJrLWJnLXN1YnRsZSkhaW1wb3J0YW50fS5iZy1ncmFkaWVudHtiYWNrZ3JvdW5kLWltYWdlOnZhcigtLWJzLWdyYWRpZW50KSFpbXBvcnRhbnR9LnVzZXItc2VsZWN0LWFsbHstd2Via2l0LXVzZXItc2VsZWN0OmFsbCFpbXBvcnRhbnQ7LW1vei11c2VyLXNlbGVjdDphbGwhaW1wb3J0YW50O3VzZXItc2VsZWN0OmFsbCFpbXBvcnRhbnR9LnVzZXItc2VsZWN0LWF1dG97LXdlYmtpdC11c2VyLXNlbGVjdDphdXRvIWltcG9ydGFudDstbW96LXVzZXItc2VsZWN0OmF1dG8haW1wb3J0YW50O3VzZXItc2VsZWN0OmF1dG8haW1wb3J0YW50fS51c2VyLXNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7LW1vei11c2VyLXNlbGVjdDpub25lIWltcG9ydGFudDt1c2VyLXNlbGVjdDpub25lIWltcG9ydGFudH0ucGUtbm9uZXtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudH0ucGUtYXV0b3twb2ludGVyLWV2ZW50czphdXRvIWltcG9ydGFudH0ucm91bmRlZHtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudH0ucm91bmRlZC0we2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9LnJvdW5kZWQtMXtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtc20pIWltcG9ydGFudH0ucm91bmRlZC0ye2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50fS5yb3VuZGVkLTN7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKSFpbXBvcnRhbnR9LnJvdW5kZWQtNHtib3JkZXItcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMteGwpIWltcG9ydGFudH0ucm91bmRlZC01e2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14eGwpIWltcG9ydGFudH0ucm91bmRlZC1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCUhaW1wb3J0YW50fS5yb3VuZGVkLXBpbGx7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudH0ucm91bmRlZC10b3B7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKSFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50fS5yb3VuZGVkLXRvcC0we2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCFpbXBvcnRhbnR9LnJvdW5kZWQtdG9wLTF7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXNtKSFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50fS5yb3VuZGVkLXRvcC0ye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudH0ucm91bmRlZC10b3AtM3tib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpIWltcG9ydGFudDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKSFpbXBvcnRhbnR9LnJvdW5kZWQtdG9wLTR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXhsKSFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50fS5yb3VuZGVkLXRvcC01e2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14eGwpIWltcG9ydGFudDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXh4bCkhaW1wb3J0YW50fS5yb3VuZGVkLXRvcC1jaXJjbGV7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo1MCUhaW1wb3J0YW50O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjUwJSFpbXBvcnRhbnR9LnJvdW5kZWQtdG9wLXBpbGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudH0ucm91bmRlZC1lbmR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudH0ucm91bmRlZC1lbmQtMHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowIWltcG9ydGFudDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowIWltcG9ydGFudH0ucm91bmRlZC1lbmQtMXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXNtKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50fS5yb3VuZGVkLWVuZC0ye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKSFpbXBvcnRhbnR9LnJvdW5kZWQtZW5kLTN7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1sZykhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpIWltcG9ydGFudH0ucm91bmRlZC1lbmQtNHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXhsKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50fS5yb3VuZGVkLWVuZC01e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMteHhsKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14eGwpIWltcG9ydGFudH0ucm91bmRlZC1lbmQtY2lyY2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjUwJSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NTAlIWltcG9ydGFudH0ucm91bmRlZC1lbmQtcGlsbHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudH0ucm91bmRlZC1ib3R0b217Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cykhaW1wb3J0YW50fS5yb3VuZGVkLWJvdHRvbS0we2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjAhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCFpbXBvcnRhbnR9LnJvdW5kZWQtYm90dG9tLTF7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50fS5yb3VuZGVkLWJvdHRvbS0ye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudH0ucm91bmRlZC1ib3R0b20tM3tib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLWxnKSFpbXBvcnRhbnR9LnJvdW5kZWQtYm90dG9tLTR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50fS5yb3VuZGVkLWJvdHRvbS01e2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMteHhsKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXh4bCkhaW1wb3J0YW50fS5yb3VuZGVkLWJvdHRvbS1jaXJjbGV7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NTAlIWltcG9ydGFudDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjUwJSFpbXBvcnRhbnR9LnJvdW5kZWQtYm90dG9tLXBpbGx7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1waWxsKSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudH0ucm91bmRlZC1zdGFydHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMpIWltcG9ydGFudH0ucm91bmRlZC1zdGFydC0we2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowIWltcG9ydGFudH0ucm91bmRlZC1zdGFydC0xe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1zbSkhaW1wb3J0YW50fS5yb3VuZGVkLXN0YXJ0LTJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKSFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzKSFpbXBvcnRhbnR9LnJvdW5kZWQtc3RhcnQtM3tib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpIWltcG9ydGFudDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOnZhcigtLWJzLWJvcmRlci1yYWRpdXMtbGcpIWltcG9ydGFudH0ucm91bmRlZC1zdGFydC00e2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14bCkhaW1wb3J0YW50fS5yb3VuZGVkLXN0YXJ0LTV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXh4bCkhaW1wb3J0YW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy14eGwpIWltcG9ydGFudH0ucm91bmRlZC1zdGFydC1jaXJjbGV7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo1MCUhaW1wb3J0YW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NTAlIWltcG9ydGFudH0ucm91bmRlZC1zdGFydC1waWxse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tYnMtYm9yZGVyLXJhZGl1cy1waWxsKSFpbXBvcnRhbnQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1ib3JkZXItcmFkaXVzLXBpbGwpIWltcG9ydGFudH0udmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50fS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS56LW4xe3otaW5kZXg6LTEhaW1wb3J0YW50fS56LTB7ei1pbmRleDowIWltcG9ydGFudH0uei0xe3otaW5kZXg6MSFpbXBvcnRhbnR9LnotMnt6LWluZGV4OjIhaW1wb3J0YW50fS56LTN7ei1pbmRleDozIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmZsb2F0LXNtLXN0YXJ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC1zbS1lbmR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5mbG9hdC1zbS1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fS5vYmplY3QtZml0LXNtLWNvbnRhaW57LW8tb2JqZWN0LWZpdDpjb250YWluIWltcG9ydGFudDtvYmplY3QtZml0OmNvbnRhaW4haW1wb3J0YW50fS5vYmplY3QtZml0LXNtLWNvdmVyey1vLW9iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50O29iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50fS5vYmplY3QtZml0LXNtLWZpbGx7LW8tb2JqZWN0LWZpdDpmaWxsIWltcG9ydGFudDtvYmplY3QtZml0OmZpbGwhaW1wb3J0YW50fS5vYmplY3QtZml0LXNtLXNjYWxley1vLW9iamVjdC1maXQ6c2NhbGUtZG93biFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpzY2FsZS1kb3duIWltcG9ydGFudH0ub2JqZWN0LWZpdC1zbS1ub25ley1vLW9iamVjdC1maXQ6bm9uZSFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpub25lIWltcG9ydGFudH0uZC1zbS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLXNtLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtc20tYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtc20tZ3JpZHtkaXNwbGF5OmdyaWQhaW1wb3J0YW50fS5kLXNtLWlubGluZS1ncmlke2Rpc3BsYXk6aW5saW5lLWdyaWQhaW1wb3J0YW50fS5kLXNtLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLXNtLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9LmQtc20tdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLXNtLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1zbS1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uZC1zbS1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmZsZXgtc20tZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC1zbS1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtc20tY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LXNtLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmZsZXgtc20tZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uZmxleC1zbS1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uZmxleC1zbS1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uZmxleC1zbS13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC1zbS1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtc20td3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtc20tZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1zbS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXNtLWV2ZW5seXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5IWltcG9ydGFudH0uYWxpZ24taXRlbXMtc20tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXNtLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXNtLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtc20tYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1zbS1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXNtLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYtc20tc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fS5vcmRlci1zbS1maXJzdHtvcmRlcjotMSFpbXBvcnRhbnR9Lm9yZGVyLXNtLTB7b3JkZXI6MCFpbXBvcnRhbnR9Lm9yZGVyLXNtLTF7b3JkZXI6MSFpbXBvcnRhbnR9Lm9yZGVyLXNtLTJ7b3JkZXI6MiFpbXBvcnRhbnR9Lm9yZGVyLXNtLTN7b3JkZXI6MyFpbXBvcnRhbnR9Lm9yZGVyLXNtLTR7b3JkZXI6NCFpbXBvcnRhbnR9Lm9yZGVyLXNtLTV7b3JkZXI6NSFpbXBvcnRhbnR9Lm9yZGVyLXNtLWxhc3R7b3JkZXI6NiFpbXBvcnRhbnR9Lm0tc20tMHttYXJnaW46MCFpbXBvcnRhbnR9Lm0tc20tMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubS1zbS0ye21hcmdpbjouNXJlbSFpbXBvcnRhbnR9Lm0tc20tM3ttYXJnaW46MXJlbSFpbXBvcnRhbnR9Lm0tc20tNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubS1zbS01e21hcmdpbjozcmVtIWltcG9ydGFudH0ubS1zbS1hdXRve21hcmdpbjphdXRvIWltcG9ydGFudH0ubXgtc20tMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm14LXNtLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ubXgtc20tMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXgtc20tM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm14LXNtLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ubXgtc20tNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm14LXNtLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5teS1zbS0we21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubXktc20tMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5teS1zbS0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5teS1zbS0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxcmVtIWltcG9ydGFudH0ubXktc20tNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5teS1zbS01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubXktc20tYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm10LXNtLTB7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ubXQtc20tMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm10LXNtLTJ7bWFyZ2luLXRvcDouNXJlbSFpbXBvcnRhbnR9Lm10LXNtLTN7bWFyZ2luLXRvcDoxcmVtIWltcG9ydGFudH0ubXQtc20tNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm10LXNtLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXQtc20tYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS5tZS1zbS0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWUtc20tMXttYXJnaW4tcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ubWUtc20tMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tZS1zbS0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWUtc20tNHttYXJnaW4tcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ubWUtc20tNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1lLXNtLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi1zbS0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1iLXNtLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tYi1zbS0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tYi1zbS0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1iLXNtLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tYi1zbS01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1iLXNtLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubXMtc20tMHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ubXMtc20tMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tcy1zbS0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXMtc20tM3ttYXJnaW4tbGVmdDoxcmVtIWltcG9ydGFudH0ubXMtc20tNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tcy1zbS01e21hcmdpbi1sZWZ0OjNyZW0haW1wb3J0YW50fS5tcy1zbS1hdXRve21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5wLXNtLTB7cGFkZGluZzowIWltcG9ydGFudH0ucC1zbS0xe3BhZGRpbmc6LjI1cmVtIWltcG9ydGFudH0ucC1zbS0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wLXNtLTN7cGFkZGluZzoxcmVtIWltcG9ydGFudH0ucC1zbS00e3BhZGRpbmc6MS41cmVtIWltcG9ydGFudH0ucC1zbS01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB4LXNtLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnB4LXNtLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5weC1zbS0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnB4LXNtLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnB4LXNtLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5weC1zbS01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5weS1zbS0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5weS1zbS0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucHktc20tMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5weS1zbS0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5weS1zbS00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucHktc20tNXtwYWRkaW5nLXRvcDozcmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHQtc20tMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ucHQtc20tMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50fS5wdC1zbS0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHQtc20tM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudH0ucHQtc20tNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50fS5wdC1zbS01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wZS1zbS0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBlLXNtLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wZS1zbS0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5wZS1zbS0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBlLXNtLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wZS1zbS01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLXNtLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBiLXNtLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGItc20tMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBiLXNtLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBiLXNtLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGItc20tNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHMtc20tMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnBzLXNtLTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnBzLXNtLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucHMtc20tM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnBzLXNtLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnBzLXNtLTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5nYXAtc20tMHtnYXA6MCFpbXBvcnRhbnR9LmdhcC1zbS0xe2dhcDouMjVyZW0haW1wb3J0YW50fS5nYXAtc20tMntnYXA6LjVyZW0haW1wb3J0YW50fS5nYXAtc20tM3tnYXA6MXJlbSFpbXBvcnRhbnR9LmdhcC1zbS00e2dhcDoxLjVyZW0haW1wb3J0YW50fS5nYXAtc20tNXtnYXA6M3JlbSFpbXBvcnRhbnR9LnJvdy1nYXAtc20tMHtyb3ctZ2FwOjAhaW1wb3J0YW50fS5yb3ctZ2FwLXNtLTF7cm93LWdhcDouMjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXNtLTJ7cm93LWdhcDouNXJlbSFpbXBvcnRhbnR9LnJvdy1nYXAtc20tM3tyb3ctZ2FwOjFyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXNtLTR7cm93LWdhcDoxLjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXNtLTV7cm93LWdhcDozcmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1zbS0wey1tb3otY29sdW1uLWdhcDowIWltcG9ydGFudDtjb2x1bW4tZ2FwOjAhaW1wb3J0YW50fS5jb2x1bW4tZ2FwLXNtLTF7LW1vei1jb2x1bW4tZ2FwOjAuMjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjI1cmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1zbS0yey1tb3otY29sdW1uLWdhcDowLjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLXNtLTN7LW1vei1jb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6MXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtc20tNHstbW96LWNvbHVtbi1nYXA6MS41cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtc20tNXstbW96LWNvbHVtbi1nYXA6M3JlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDozcmVtIWltcG9ydGFudH0udGV4dC1zbS1zdGFydHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LXNtLWVuZHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1zbS1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmZsb2F0LW1kLXN0YXJ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC1tZC1lbmR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5mbG9hdC1tZC1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fS5vYmplY3QtZml0LW1kLWNvbnRhaW57LW8tb2JqZWN0LWZpdDpjb250YWluIWltcG9ydGFudDtvYmplY3QtZml0OmNvbnRhaW4haW1wb3J0YW50fS5vYmplY3QtZml0LW1kLWNvdmVyey1vLW9iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50O29iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50fS5vYmplY3QtZml0LW1kLWZpbGx7LW8tb2JqZWN0LWZpdDpmaWxsIWltcG9ydGFudDtvYmplY3QtZml0OmZpbGwhaW1wb3J0YW50fS5vYmplY3QtZml0LW1kLXNjYWxley1vLW9iamVjdC1maXQ6c2NhbGUtZG93biFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpzY2FsZS1kb3duIWltcG9ydGFudH0ub2JqZWN0LWZpdC1tZC1ub25ley1vLW9iamVjdC1maXQ6bm9uZSFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpub25lIWltcG9ydGFudH0uZC1tZC1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbWQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtbWQtZ3JpZHtkaXNwbGF5OmdyaWQhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ncmlke2Rpc3BsYXk6aW5saW5lLWdyaWQhaW1wb3J0YW50fS5kLW1kLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLW1kLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9LmQtbWQtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLW1kLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1tZC1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uZC1tZC1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmZsZXgtbWQtZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uZmxleC1tZC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC1tZC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC1tZC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtbWQtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LW1kLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmZsZXgtbWQtZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uZmxleC1tZC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uZmxleC1tZC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uZmxleC1tZC13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC1tZC1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtbWQtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbWQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LW1kLWV2ZW5seXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5IWltcG9ydGFudH0uYWxpZ24taXRlbXMtbWQtc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLW1kLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbWQtYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1tZC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLW1kLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLW1kLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbWQtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fS5vcmRlci1tZC1maXJzdHtvcmRlcjotMSFpbXBvcnRhbnR9Lm9yZGVyLW1kLTB7b3JkZXI6MCFpbXBvcnRhbnR9Lm9yZGVyLW1kLTF7b3JkZXI6MSFpbXBvcnRhbnR9Lm9yZGVyLW1kLTJ7b3JkZXI6MiFpbXBvcnRhbnR9Lm9yZGVyLW1kLTN7b3JkZXI6MyFpbXBvcnRhbnR9Lm9yZGVyLW1kLTR7b3JkZXI6NCFpbXBvcnRhbnR9Lm9yZGVyLW1kLTV7b3JkZXI6NSFpbXBvcnRhbnR9Lm9yZGVyLW1kLWxhc3R7b3JkZXI6NiFpbXBvcnRhbnR9Lm0tbWQtMHttYXJnaW46MCFpbXBvcnRhbnR9Lm0tbWQtMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubS1tZC0ye21hcmdpbjouNXJlbSFpbXBvcnRhbnR9Lm0tbWQtM3ttYXJnaW46MXJlbSFpbXBvcnRhbnR9Lm0tbWQtNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubS1tZC01e21hcmdpbjozcmVtIWltcG9ydGFudH0ubS1tZC1hdXRve21hcmdpbjphdXRvIWltcG9ydGFudH0ubXgtbWQtMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm14LW1kLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ubXgtbWQtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXgtbWQtM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm14LW1kLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ubXgtbWQtNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm14LW1kLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5teS1tZC0we21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubXktbWQtMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5teS1tZC0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5teS1tZC0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxcmVtIWltcG9ydGFudH0ubXktbWQtNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5teS1tZC01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubXktbWQtYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm10LW1kLTB7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ubXQtbWQtMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm10LW1kLTJ7bWFyZ2luLXRvcDouNXJlbSFpbXBvcnRhbnR9Lm10LW1kLTN7bWFyZ2luLXRvcDoxcmVtIWltcG9ydGFudH0ubXQtbWQtNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm10LW1kLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXQtbWQtYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS5tZS1tZC0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWUtbWQtMXttYXJnaW4tcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ubWUtbWQtMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tZS1tZC0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWUtbWQtNHttYXJnaW4tcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ubWUtbWQtNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1lLW1kLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi1tZC0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1iLW1kLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tYi1tZC0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tYi1tZC0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1iLW1kLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tYi1tZC01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1iLW1kLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubXMtbWQtMHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ubXMtbWQtMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tcy1tZC0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXMtbWQtM3ttYXJnaW4tbGVmdDoxcmVtIWltcG9ydGFudH0ubXMtbWQtNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tcy1tZC01e21hcmdpbi1sZWZ0OjNyZW0haW1wb3J0YW50fS5tcy1tZC1hdXRve21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5wLW1kLTB7cGFkZGluZzowIWltcG9ydGFudH0ucC1tZC0xe3BhZGRpbmc6LjI1cmVtIWltcG9ydGFudH0ucC1tZC0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wLW1kLTN7cGFkZGluZzoxcmVtIWltcG9ydGFudH0ucC1tZC00e3BhZGRpbmc6MS41cmVtIWltcG9ydGFudH0ucC1tZC01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB4LW1kLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnB4LW1kLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5weC1tZC0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnB4LW1kLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnB4LW1kLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5weC1tZC01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5weS1tZC0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5weS1tZC0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucHktbWQtMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5weS1tZC0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5weS1tZC00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucHktbWQtNXtwYWRkaW5nLXRvcDozcmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHQtbWQtMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ucHQtbWQtMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50fS5wdC1tZC0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHQtbWQtM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudH0ucHQtbWQtNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50fS5wdC1tZC01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wZS1tZC0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBlLW1kLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wZS1tZC0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5wZS1tZC0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBlLW1kLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wZS1tZC01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLW1kLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBiLW1kLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGItbWQtMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBiLW1kLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBiLW1kLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGItbWQtNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHMtbWQtMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnBzLW1kLTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnBzLW1kLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucHMtbWQtM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnBzLW1kLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnBzLW1kLTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5nYXAtbWQtMHtnYXA6MCFpbXBvcnRhbnR9LmdhcC1tZC0xe2dhcDouMjVyZW0haW1wb3J0YW50fS5nYXAtbWQtMntnYXA6LjVyZW0haW1wb3J0YW50fS5nYXAtbWQtM3tnYXA6MXJlbSFpbXBvcnRhbnR9LmdhcC1tZC00e2dhcDoxLjVyZW0haW1wb3J0YW50fS5nYXAtbWQtNXtnYXA6M3JlbSFpbXBvcnRhbnR9LnJvdy1nYXAtbWQtMHtyb3ctZ2FwOjAhaW1wb3J0YW50fS5yb3ctZ2FwLW1kLTF7cm93LWdhcDouMjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLW1kLTJ7cm93LWdhcDouNXJlbSFpbXBvcnRhbnR9LnJvdy1nYXAtbWQtM3tyb3ctZ2FwOjFyZW0haW1wb3J0YW50fS5yb3ctZ2FwLW1kLTR7cm93LWdhcDoxLjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLW1kLTV7cm93LWdhcDozcmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1tZC0wey1tb3otY29sdW1uLWdhcDowIWltcG9ydGFudDtjb2x1bW4tZ2FwOjAhaW1wb3J0YW50fS5jb2x1bW4tZ2FwLW1kLTF7LW1vei1jb2x1bW4tZ2FwOjAuMjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjI1cmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1tZC0yey1tb3otY29sdW1uLWdhcDowLjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLW1kLTN7LW1vei1jb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6MXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtbWQtNHstbW96LWNvbHVtbi1nYXA6MS41cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtbWQtNXstbW96LWNvbHVtbi1nYXA6M3JlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDozcmVtIWltcG9ydGFudH0udGV4dC1tZC1zdGFydHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LW1kLWVuZHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1tZC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmZsb2F0LWxnLXN0YXJ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC1sZy1lbmR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5mbG9hdC1sZy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fS5vYmplY3QtZml0LWxnLWNvbnRhaW57LW8tb2JqZWN0LWZpdDpjb250YWluIWltcG9ydGFudDtvYmplY3QtZml0OmNvbnRhaW4haW1wb3J0YW50fS5vYmplY3QtZml0LWxnLWNvdmVyey1vLW9iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50O29iamVjdC1maXQ6Y292ZXIhaW1wb3J0YW50fS5vYmplY3QtZml0LWxnLWZpbGx7LW8tb2JqZWN0LWZpdDpmaWxsIWltcG9ydGFudDtvYmplY3QtZml0OmZpbGwhaW1wb3J0YW50fS5vYmplY3QtZml0LWxnLXNjYWxley1vLW9iamVjdC1maXQ6c2NhbGUtZG93biFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpzY2FsZS1kb3duIWltcG9ydGFudH0ub2JqZWN0LWZpdC1sZy1ub25ley1vLW9iamVjdC1maXQ6bm9uZSFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpub25lIWltcG9ydGFudH0uZC1sZy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5kLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbGctYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtbGctZ3JpZHtkaXNwbGF5OmdyaWQhaW1wb3J0YW50fS5kLWxnLWlubGluZS1ncmlke2Rpc3BsYXk6aW5saW5lLWdyaWQhaW1wb3J0YW50fS5kLWxnLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLWxnLXRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9LmQtbGctdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLWxnLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1sZy1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uZC1sZy1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmZsZXgtbGctZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudH0uZmxleC1sZy1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uZmxleC1sZy1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC1sZy1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgtbGctY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LWxnLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmZsZXgtbGctZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uZmxleC1sZy1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uZmxleC1sZy1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uZmxleC1sZy13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uZmxleC1sZy1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmZsZXgtbGctd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LWxnLWV2ZW5seXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5IWltcG9ydGFudH0uYWxpZ24taXRlbXMtbGctc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy1sZy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQtbGctYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uYWxpZ24tY29udGVudC1sZy1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLWxnLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmFsaWduLXNlbGYtbGctc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fS5vcmRlci1sZy1maXJzdHtvcmRlcjotMSFpbXBvcnRhbnR9Lm9yZGVyLWxnLTB7b3JkZXI6MCFpbXBvcnRhbnR9Lm9yZGVyLWxnLTF7b3JkZXI6MSFpbXBvcnRhbnR9Lm9yZGVyLWxnLTJ7b3JkZXI6MiFpbXBvcnRhbnR9Lm9yZGVyLWxnLTN7b3JkZXI6MyFpbXBvcnRhbnR9Lm9yZGVyLWxnLTR7b3JkZXI6NCFpbXBvcnRhbnR9Lm9yZGVyLWxnLTV7b3JkZXI6NSFpbXBvcnRhbnR9Lm9yZGVyLWxnLWxhc3R7b3JkZXI6NiFpbXBvcnRhbnR9Lm0tbGctMHttYXJnaW46MCFpbXBvcnRhbnR9Lm0tbGctMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubS1sZy0ye21hcmdpbjouNXJlbSFpbXBvcnRhbnR9Lm0tbGctM3ttYXJnaW46MXJlbSFpbXBvcnRhbnR9Lm0tbGctNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubS1sZy01e21hcmdpbjozcmVtIWltcG9ydGFudH0ubS1sZy1hdXRve21hcmdpbjphdXRvIWltcG9ydGFudH0ubXgtbGctMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm14LWxnLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ubXgtbGctMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXgtbGctM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm14LWxnLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ubXgtbGctNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6M3JlbSFpbXBvcnRhbnR9Lm14LWxnLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5teS1sZy0we21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH0ubXktbGctMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5teS1sZy0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5teS1sZy0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxcmVtIWltcG9ydGFudH0ubXktbGctNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5teS1sZy01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubXktbGctYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm10LWxnLTB7bWFyZ2luLXRvcDowIWltcG9ydGFudH0ubXQtbGctMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm10LWxnLTJ7bWFyZ2luLXRvcDouNXJlbSFpbXBvcnRhbnR9Lm10LWxnLTN7bWFyZ2luLXRvcDoxcmVtIWltcG9ydGFudH0ubXQtbGctNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm10LWxnLTV7bWFyZ2luLXRvcDozcmVtIWltcG9ydGFudH0ubXQtbGctYXV0b3ttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fS5tZS1sZy0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWUtbGctMXttYXJnaW4tcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ubWUtbGctMnttYXJnaW4tcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5tZS1sZy0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWUtbGctNHttYXJnaW4tcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ubWUtbGctNXttYXJnaW4tcmlnaHQ6M3JlbSFpbXBvcnRhbnR9Lm1lLWxnLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi1sZy0we21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm1iLWxnLTF7bWFyZ2luLWJvdHRvbTouMjVyZW0haW1wb3J0YW50fS5tYi1sZy0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tYi1sZy0ze21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm1iLWxnLTR7bWFyZ2luLWJvdHRvbToxLjVyZW0haW1wb3J0YW50fS5tYi1sZy01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1iLWxnLWF1dG97bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH0ubXMtbGctMHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ubXMtbGctMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tcy1sZy0ye21hcmdpbi1sZWZ0Oi41cmVtIWltcG9ydGFudH0ubXMtbGctM3ttYXJnaW4tbGVmdDoxcmVtIWltcG9ydGFudH0ubXMtbGctNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tcy1sZy01e21hcmdpbi1sZWZ0OjNyZW0haW1wb3J0YW50fS5tcy1sZy1hdXRve21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5wLWxnLTB7cGFkZGluZzowIWltcG9ydGFudH0ucC1sZy0xe3BhZGRpbmc6LjI1cmVtIWltcG9ydGFudH0ucC1sZy0ye3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5wLWxnLTN7cGFkZGluZzoxcmVtIWltcG9ydGFudH0ucC1sZy00e3BhZGRpbmc6MS41cmVtIWltcG9ydGFudH0ucC1sZy01e3BhZGRpbmc6M3JlbSFpbXBvcnRhbnR9LnB4LWxnLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnB4LWxnLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5weC1sZy0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnB4LWxnLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnB4LWxnLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5weC1sZy01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5weS1sZy0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5weS1sZy0xe3BhZGRpbmctdG9wOi4yNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucHktbGctMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5weS1sZy0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5weS1sZy00e3BhZGRpbmctdG9wOjEuNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucHktbGctNXtwYWRkaW5nLXRvcDozcmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHQtbGctMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ucHQtbGctMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50fS5wdC1sZy0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudH0ucHQtbGctM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudH0ucHQtbGctNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50fS5wdC1sZy01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50fS5wZS1sZy0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBlLWxnLTF7cGFkZGluZy1yaWdodDouMjVyZW0haW1wb3J0YW50fS5wZS1sZy0ye3BhZGRpbmctcmlnaHQ6LjVyZW0haW1wb3J0YW50fS5wZS1sZy0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBlLWxnLTR7cGFkZGluZy1yaWdodDoxLjVyZW0haW1wb3J0YW50fS5wZS1sZy01e3BhZGRpbmctcmlnaHQ6M3JlbSFpbXBvcnRhbnR9LnBiLWxnLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBiLWxnLTF7cGFkZGluZy1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ucGItbGctMntwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnBiLWxnLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBiLWxnLTR7cGFkZGluZy1ib3R0b206MS41cmVtIWltcG9ydGFudH0ucGItbGctNXtwYWRkaW5nLWJvdHRvbTozcmVtIWltcG9ydGFudH0ucHMtbGctMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnBzLWxnLTF7cGFkZGluZy1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9LnBzLWxnLTJ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucHMtbGctM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnBzLWxnLTR7cGFkZGluZy1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9LnBzLWxnLTV7cGFkZGluZy1sZWZ0OjNyZW0haW1wb3J0YW50fS5nYXAtbGctMHtnYXA6MCFpbXBvcnRhbnR9LmdhcC1sZy0xe2dhcDouMjVyZW0haW1wb3J0YW50fS5nYXAtbGctMntnYXA6LjVyZW0haW1wb3J0YW50fS5nYXAtbGctM3tnYXA6MXJlbSFpbXBvcnRhbnR9LmdhcC1sZy00e2dhcDoxLjVyZW0haW1wb3J0YW50fS5nYXAtbGctNXtnYXA6M3JlbSFpbXBvcnRhbnR9LnJvdy1nYXAtbGctMHtyb3ctZ2FwOjAhaW1wb3J0YW50fS5yb3ctZ2FwLWxnLTF7cm93LWdhcDouMjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLWxnLTJ7cm93LWdhcDouNXJlbSFpbXBvcnRhbnR9LnJvdy1nYXAtbGctM3tyb3ctZ2FwOjFyZW0haW1wb3J0YW50fS5yb3ctZ2FwLWxnLTR7cm93LWdhcDoxLjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLWxnLTV7cm93LWdhcDozcmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1sZy0wey1tb3otY29sdW1uLWdhcDowIWltcG9ydGFudDtjb2x1bW4tZ2FwOjAhaW1wb3J0YW50fS5jb2x1bW4tZ2FwLWxnLTF7LW1vei1jb2x1bW4tZ2FwOjAuMjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjI1cmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC1sZy0yey1tb3otY29sdW1uLWdhcDowLjVyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6LjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLWxnLTN7LW1vei1jb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6MXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtbGctNHstbW96LWNvbHVtbi1nYXA6MS41cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAtbGctNXstbW96LWNvbHVtbi1nYXA6M3JlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDozcmVtIWltcG9ydGFudH0udGV4dC1sZy1zdGFydHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LWxnLWVuZHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0udGV4dC1sZy1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5mbG9hdC14bC1zdGFydHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uZmxvYXQteGwtZW5ke2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uZmxvYXQteGwtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH0ub2JqZWN0LWZpdC14bC1jb250YWluey1vLW9iamVjdC1maXQ6Y29udGFpbiFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb250YWluIWltcG9ydGFudH0ub2JqZWN0LWZpdC14bC1jb3Zlcnstby1vYmplY3QtZml0OmNvdmVyIWltcG9ydGFudDtvYmplY3QtZml0OmNvdmVyIWltcG9ydGFudH0ub2JqZWN0LWZpdC14bC1maWxsey1vLW9iamVjdC1maXQ6ZmlsbCFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpmaWxsIWltcG9ydGFudH0ub2JqZWN0LWZpdC14bC1zY2FsZXstby1vYmplY3QtZml0OnNjYWxlLWRvd24haW1wb3J0YW50O29iamVjdC1maXQ6c2NhbGUtZG93biFpbXBvcnRhbnR9Lm9iamVjdC1maXQteGwtbm9uZXstby1vYmplY3QtZml0Om5vbmUhaW1wb3J0YW50O29iamVjdC1maXQ6bm9uZSFpbXBvcnRhbnR9LmQteGwtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC14bC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLXhsLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLXhsLWdyaWR7ZGlzcGxheTpncmlkIWltcG9ydGFudH0uZC14bC1pbmxpbmUtZ3JpZHtkaXNwbGF5OmlubGluZS1ncmlkIWltcG9ydGFudH0uZC14bC10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC14bC10YWJsZS1yb3d7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fS5kLXhsLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC14bC1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQteGwtaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmQteGwtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5mbGV4LXhsLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmZsZXgteGwtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmZsZXgteGwtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmZsZXgteGwtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LXhsLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uZmxleC14bC1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5mbGV4LXhsLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmZsZXgteGwtc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmZsZXgteGwtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmZsZXgteGwtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmZsZXgteGwtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5mbGV4LXhsLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXhsLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14bC1ldmVubHl7anVzdGlmeS1jb250ZW50OnNwYWNlLWV2ZW5seSFpbXBvcnRhbnR9LmFsaWduLWl0ZW1zLXhsLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14bC1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14bC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uYWxpZ24taXRlbXMteGwtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14bC1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXhsLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaHthbGlnbi1jb250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLWVuZHthbGlnbi1zZWxmOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24tc2VsZi14bC1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXhsLXN0cmV0Y2h7YWxpZ24tc2VsZjpzdHJldGNoIWltcG9ydGFudH0ub3JkZXIteGwtZmlyc3R7b3JkZXI6LTEhaW1wb3J0YW50fS5vcmRlci14bC0we29yZGVyOjAhaW1wb3J0YW50fS5vcmRlci14bC0xe29yZGVyOjEhaW1wb3J0YW50fS5vcmRlci14bC0ye29yZGVyOjIhaW1wb3J0YW50fS5vcmRlci14bC0ze29yZGVyOjMhaW1wb3J0YW50fS5vcmRlci14bC00e29yZGVyOjQhaW1wb3J0YW50fS5vcmRlci14bC01e29yZGVyOjUhaW1wb3J0YW50fS5vcmRlci14bC1sYXN0e29yZGVyOjYhaW1wb3J0YW50fS5tLXhsLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tLXhsLTF7bWFyZ2luOi4yNXJlbSFpbXBvcnRhbnR9Lm0teGwtMnttYXJnaW46LjVyZW0haW1wb3J0YW50fS5tLXhsLTN7bWFyZ2luOjFyZW0haW1wb3J0YW50fS5tLXhsLTR7bWFyZ2luOjEuNXJlbSFpbXBvcnRhbnR9Lm0teGwtNXttYXJnaW46M3JlbSFpbXBvcnRhbnR9Lm0teGwtYXV0b3ttYXJnaW46YXV0byFpbXBvcnRhbnR9Lm14LXhsLTB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS5teC14bC0xe21hcmdpbi1yaWdodDouMjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9Lm14LXhsLTJ7bWFyZ2luLXJpZ2h0Oi41cmVtIWltcG9ydGFudDttYXJnaW4tbGVmdDouNXJlbSFpbXBvcnRhbnR9Lm14LXhsLTN7bWFyZ2luLXJpZ2h0OjFyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0OjFyZW0haW1wb3J0YW50fS5teC14bC00e21hcmdpbi1yaWdodDoxLjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9Lm14LXhsLTV7bWFyZ2luLXJpZ2h0OjNyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0OjNyZW0haW1wb3J0YW50fS5teC14bC1hdXRve21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudDttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH0ubXkteGwtMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm15LXhsLTF7bWFyZ2luLXRvcDouMjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ubXkteGwtMnttYXJnaW4tdG9wOi41cmVtIWltcG9ydGFudDttYXJnaW4tYm90dG9tOi41cmVtIWltcG9ydGFudH0ubXkteGwtM3ttYXJnaW4tdG9wOjFyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm15LXhsLTR7bWFyZ2luLXRvcDoxLjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206MS41cmVtIWltcG9ydGFudH0ubXkteGwtNXttYXJnaW4tdG9wOjNyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm15LXhsLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudDttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fS5tdC14bC0we21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm10LXhsLTF7bWFyZ2luLXRvcDouMjVyZW0haW1wb3J0YW50fS5tdC14bC0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50fS5tdC14bC0ze21hcmdpbi10b3A6MXJlbSFpbXBvcnRhbnR9Lm10LXhsLTR7bWFyZ2luLXRvcDoxLjVyZW0haW1wb3J0YW50fS5tdC14bC01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnR9Lm10LXhsLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH0ubWUteGwtMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9Lm1lLXhsLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9Lm1lLXhsLTJ7bWFyZ2luLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0ubWUteGwtM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnR9Lm1lLXhsLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9Lm1lLXhsLTV7bWFyZ2luLXJpZ2h0OjNyZW0haW1wb3J0YW50fS5tZS14bC1hdXRve21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH0ubWIteGwtMHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tYi14bC0xe21hcmdpbi1ib3R0b206LjI1cmVtIWltcG9ydGFudH0ubWIteGwtMnttYXJnaW4tYm90dG9tOi41cmVtIWltcG9ydGFudH0ubWIteGwtM3ttYXJnaW4tYm90dG9tOjFyZW0haW1wb3J0YW50fS5tYi14bC00e21hcmdpbi1ib3R0b206MS41cmVtIWltcG9ydGFudH0ubWIteGwtNXttYXJnaW4tYm90dG9tOjNyZW0haW1wb3J0YW50fS5tYi14bC1hdXRve21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm1zLXhsLTB7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm1zLXhsLTF7bWFyZ2luLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ubXMteGwtMnttYXJnaW4tbGVmdDouNXJlbSFpbXBvcnRhbnR9Lm1zLXhsLTN7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm1zLXhsLTR7bWFyZ2luLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ubXMteGwtNXttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ubXMteGwtYXV0b3ttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH0ucC14bC0we3BhZGRpbmc6MCFpbXBvcnRhbnR9LnAteGwtMXtwYWRkaW5nOi4yNXJlbSFpbXBvcnRhbnR9LnAteGwtMntwYWRkaW5nOi41cmVtIWltcG9ydGFudH0ucC14bC0ze3BhZGRpbmc6MXJlbSFpbXBvcnRhbnR9LnAteGwtNHtwYWRkaW5nOjEuNXJlbSFpbXBvcnRhbnR9LnAteGwtNXtwYWRkaW5nOjNyZW0haW1wb3J0YW50fS5weC14bC0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fS5weC14bC0xe3BhZGRpbmctcmlnaHQ6LjI1cmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ucHgteGwtMntwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5weC14bC0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjFyZW0haW1wb3J0YW50fS5weC14bC00e3BhZGRpbmctcmlnaHQ6MS41cmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ucHgteGwtNXtwYWRkaW5nLXJpZ2h0OjNyZW0haW1wb3J0YW50O3BhZGRpbmctbGVmdDozcmVtIWltcG9ydGFudH0ucHkteGwtMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH0ucHkteGwtMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnB5LXhsLTJ7cGFkZGluZy10b3A6LjVyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOi41cmVtIWltcG9ydGFudH0ucHkteGwtM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbToxcmVtIWltcG9ydGFudH0ucHkteGwtNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnB5LXhsLTV7cGFkZGluZy10b3A6M3JlbSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206M3JlbSFpbXBvcnRhbnR9LnB0LXhsLTB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9LnB0LXhsLTF7cGFkZGluZy10b3A6LjI1cmVtIWltcG9ydGFudH0ucHQteGwtMntwYWRkaW5nLXRvcDouNXJlbSFpbXBvcnRhbnR9LnB0LXhsLTN7cGFkZGluZy10b3A6MXJlbSFpbXBvcnRhbnR9LnB0LXhsLTR7cGFkZGluZy10b3A6MS41cmVtIWltcG9ydGFudH0ucHQteGwtNXtwYWRkaW5nLXRvcDozcmVtIWltcG9ydGFudH0ucGUteGwtMHtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fS5wZS14bC0xe3BhZGRpbmctcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ucGUteGwtMntwYWRkaW5nLXJpZ2h0Oi41cmVtIWltcG9ydGFudH0ucGUteGwtM3twYWRkaW5nLXJpZ2h0OjFyZW0haW1wb3J0YW50fS5wZS14bC00e3BhZGRpbmctcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ucGUteGwtNXtwYWRkaW5nLXJpZ2h0OjNyZW0haW1wb3J0YW50fS5wYi14bC0we3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5wYi14bC0xe3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnBiLXhsLTJ7cGFkZGluZy1ib3R0b206LjVyZW0haW1wb3J0YW50fS5wYi14bC0ze3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5wYi14bC00e3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnBiLXhsLTV7cGFkZGluZy1ib3R0b206M3JlbSFpbXBvcnRhbnR9LnBzLXhsLTB7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fS5wcy14bC0xe3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5wcy14bC0ye3BhZGRpbmctbGVmdDouNXJlbSFpbXBvcnRhbnR9LnBzLXhsLTN7cGFkZGluZy1sZWZ0OjFyZW0haW1wb3J0YW50fS5wcy14bC00e3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5wcy14bC01e3BhZGRpbmctbGVmdDozcmVtIWltcG9ydGFudH0uZ2FwLXhsLTB7Z2FwOjAhaW1wb3J0YW50fS5nYXAteGwtMXtnYXA6LjI1cmVtIWltcG9ydGFudH0uZ2FwLXhsLTJ7Z2FwOi41cmVtIWltcG9ydGFudH0uZ2FwLXhsLTN7Z2FwOjFyZW0haW1wb3J0YW50fS5nYXAteGwtNHtnYXA6MS41cmVtIWltcG9ydGFudH0uZ2FwLXhsLTV7Z2FwOjNyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXhsLTB7cm93LWdhcDowIWltcG9ydGFudH0ucm93LWdhcC14bC0xe3Jvdy1nYXA6LjI1cmVtIWltcG9ydGFudH0ucm93LWdhcC14bC0ye3Jvdy1nYXA6LjVyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXhsLTN7cm93LWdhcDoxcmVtIWltcG9ydGFudH0ucm93LWdhcC14bC00e3Jvdy1nYXA6MS41cmVtIWltcG9ydGFudH0ucm93LWdhcC14bC01e3Jvdy1nYXA6M3JlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAteGwtMHstbW96LWNvbHVtbi1nYXA6MCFpbXBvcnRhbnQ7Y29sdW1uLWdhcDowIWltcG9ydGFudH0uY29sdW1uLWdhcC14bC0xey1tb3otY29sdW1uLWdhcDowLjI1cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOi4yNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAteGwtMnstbW96LWNvbHVtbi1nYXA6MC41cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOi41cmVtIWltcG9ydGFudH0uY29sdW1uLWdhcC14bC0zey1tb3otY29sdW1uLWdhcDoxcmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLXhsLTR7LW1vei1jb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDoxLjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLXhsLTV7LW1vei1jb2x1bW4tZ2FwOjNyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6M3JlbSFpbXBvcnRhbnR9LnRleHQteGwtc3RhcnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0udGV4dC14bC1lbmR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnRleHQteGwtY2VudGVye3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTQwMHB4KXsuZmxvYXQteHhsLXN0YXJ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5mbG9hdC14eGwtZW5ke2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uZmxvYXQteHhsLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9Lm9iamVjdC1maXQteHhsLWNvbnRhaW57LW8tb2JqZWN0LWZpdDpjb250YWluIWltcG9ydGFudDtvYmplY3QtZml0OmNvbnRhaW4haW1wb3J0YW50fS5vYmplY3QtZml0LXh4bC1jb3Zlcnstby1vYmplY3QtZml0OmNvdmVyIWltcG9ydGFudDtvYmplY3QtZml0OmNvdmVyIWltcG9ydGFudH0ub2JqZWN0LWZpdC14eGwtZmlsbHstby1vYmplY3QtZml0OmZpbGwhaW1wb3J0YW50O29iamVjdC1maXQ6ZmlsbCFpbXBvcnRhbnR9Lm9iamVjdC1maXQteHhsLXNjYWxley1vLW9iamVjdC1maXQ6c2NhbGUtZG93biFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpzY2FsZS1kb3duIWltcG9ydGFudH0ub2JqZWN0LWZpdC14eGwtbm9uZXstby1vYmplY3QtZml0Om5vbmUhaW1wb3J0YW50O29iamVjdC1maXQ6bm9uZSFpbXBvcnRhbnR9LmQteHhsLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQteHhsLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQteHhsLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLXh4bC1ncmlke2Rpc3BsYXk6Z3JpZCFpbXBvcnRhbnR9LmQteHhsLWlubGluZS1ncmlke2Rpc3BsYXk6aW5saW5lLWdyaWQhaW1wb3J0YW50fS5kLXh4bC10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0uZC14eGwtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH0uZC14eGwtdGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLXh4bC1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQteHhsLWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5kLXh4bC1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmZsZXgteHhsLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmZsZXgteHhsLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5mbGV4LXh4bC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudH0uZmxleC14eGwtcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5mbGV4LXh4bC1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmZsZXgteHhsLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmZsZXgteHhsLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmZsZXgteHhsLXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5mbGV4LXh4bC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uZmxleC14eGwtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmZsZXgteHhsLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uZmxleC14eGwtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQteHhsLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXh4bC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXh4bC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14eGwtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9Lmp1c3RpZnktY29udGVudC14eGwtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5qdXN0aWZ5LWNvbnRlbnQteHhsLWV2ZW5seXtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5IWltcG9ydGFudH0uYWxpZ24taXRlbXMteHhsLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14eGwtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uYWxpZ24taXRlbXMteHhsLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14eGwtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1pdGVtcy14eGwtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tY29udGVudC14eGwtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uYWxpZ24tY29udGVudC14eGwtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXh4bC1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5hbGlnbi1jb250ZW50LXh4bC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteHhsLWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmFsaWduLWNvbnRlbnQteHhsLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uYWxpZ24tc2VsZi14eGwtYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5hbGlnbi1zZWxmLXh4bC1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXh4bC1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmFsaWduLXNlbGYteHhsLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmFsaWduLXNlbGYteHhsLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5hbGlnbi1zZWxmLXh4bC1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9Lm9yZGVyLXh4bC1maXJzdHtvcmRlcjotMSFpbXBvcnRhbnR9Lm9yZGVyLXh4bC0we29yZGVyOjAhaW1wb3J0YW50fS5vcmRlci14eGwtMXtvcmRlcjoxIWltcG9ydGFudH0ub3JkZXIteHhsLTJ7b3JkZXI6MiFpbXBvcnRhbnR9Lm9yZGVyLXh4bC0ze29yZGVyOjMhaW1wb3J0YW50fS5vcmRlci14eGwtNHtvcmRlcjo0IWltcG9ydGFudH0ub3JkZXIteHhsLTV7b3JkZXI6NSFpbXBvcnRhbnR9Lm9yZGVyLXh4bC1sYXN0e29yZGVyOjYhaW1wb3J0YW50fS5tLXh4bC0we21hcmdpbjowIWltcG9ydGFudH0ubS14eGwtMXttYXJnaW46LjI1cmVtIWltcG9ydGFudH0ubS14eGwtMnttYXJnaW46LjVyZW0haW1wb3J0YW50fS5tLXh4bC0ze21hcmdpbjoxcmVtIWltcG9ydGFudH0ubS14eGwtNHttYXJnaW46MS41cmVtIWltcG9ydGFudH0ubS14eGwtNXttYXJnaW46M3JlbSFpbXBvcnRhbnR9Lm0teHhsLWF1dG97bWFyZ2luOmF1dG8haW1wb3J0YW50fS5teC14eGwtMHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm14LXh4bC0xe21hcmdpbi1yaWdodDouMjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0Oi4yNXJlbSFpbXBvcnRhbnR9Lm14LXh4bC0ye21hcmdpbi1yaWdodDouNXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5teC14eGwtM3ttYXJnaW4tcmlnaHQ6MXJlbSFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MXJlbSFpbXBvcnRhbnR9Lm14LXh4bC00e21hcmdpbi1yaWdodDoxLjVyZW0haW1wb3J0YW50O21hcmdpbi1sZWZ0OjEuNXJlbSFpbXBvcnRhbnR9Lm14LXh4bC01e21hcmdpbi1yaWdodDozcmVtIWltcG9ydGFudDttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ubXgteHhsLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50O21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fS5teS14eGwtMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9Lm15LXh4bC0xe21hcmdpbi10b3A6LjI1cmVtIWltcG9ydGFudDttYXJnaW4tYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9Lm15LXh4bC0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5teS14eGwtM3ttYXJnaW4tdG9wOjFyZW0haW1wb3J0YW50O21hcmdpbi1ib3R0b206MXJlbSFpbXBvcnRhbnR9Lm15LXh4bC00e21hcmdpbi10b3A6MS41cmVtIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9Lm15LXh4bC01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozcmVtIWltcG9ydGFudH0ubXkteHhsLWF1dG97bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudDttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fS5tdC14eGwtMHttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5tdC14eGwtMXttYXJnaW4tdG9wOi4yNXJlbSFpbXBvcnRhbnR9Lm10LXh4bC0ye21hcmdpbi10b3A6LjVyZW0haW1wb3J0YW50fS5tdC14eGwtM3ttYXJnaW4tdG9wOjFyZW0haW1wb3J0YW50fS5tdC14eGwtNHttYXJnaW4tdG9wOjEuNXJlbSFpbXBvcnRhbnR9Lm10LXh4bC01e21hcmdpbi10b3A6M3JlbSFpbXBvcnRhbnR9Lm10LXh4bC1hdXRve21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9Lm1lLXh4bC0we21hcmdpbi1yaWdodDowIWltcG9ydGFudH0ubWUteHhsLTF7bWFyZ2luLXJpZ2h0Oi4yNXJlbSFpbXBvcnRhbnR9Lm1lLXh4bC0ye21hcmdpbi1yaWdodDouNXJlbSFpbXBvcnRhbnR9Lm1lLXh4bC0ze21hcmdpbi1yaWdodDoxcmVtIWltcG9ydGFudH0ubWUteHhsLTR7bWFyZ2luLXJpZ2h0OjEuNXJlbSFpbXBvcnRhbnR9Lm1lLXh4bC01e21hcmdpbi1yaWdodDozcmVtIWltcG9ydGFudH0ubWUteHhsLWF1dG97bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fS5tYi14eGwtMHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tYi14eGwtMXttYXJnaW4tYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9Lm1iLXh4bC0ye21hcmdpbi1ib3R0b206LjVyZW0haW1wb3J0YW50fS5tYi14eGwtM3ttYXJnaW4tYm90dG9tOjFyZW0haW1wb3J0YW50fS5tYi14eGwtNHttYXJnaW4tYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9Lm1iLXh4bC01e21hcmdpbi1ib3R0b206M3JlbSFpbXBvcnRhbnR9Lm1iLXh4bC1hdXRve21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9Lm1zLXh4bC0we21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fS5tcy14eGwtMXttYXJnaW4tbGVmdDouMjVyZW0haW1wb3J0YW50fS5tcy14eGwtMnttYXJnaW4tbGVmdDouNXJlbSFpbXBvcnRhbnR9Lm1zLXh4bC0ze21hcmdpbi1sZWZ0OjFyZW0haW1wb3J0YW50fS5tcy14eGwtNHttYXJnaW4tbGVmdDoxLjVyZW0haW1wb3J0YW50fS5tcy14eGwtNXttYXJnaW4tbGVmdDozcmVtIWltcG9ydGFudH0ubXMteHhsLWF1dG97bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9LnAteHhsLTB7cGFkZGluZzowIWltcG9ydGFudH0ucC14eGwtMXtwYWRkaW5nOi4yNXJlbSFpbXBvcnRhbnR9LnAteHhsLTJ7cGFkZGluZzouNXJlbSFpbXBvcnRhbnR9LnAteHhsLTN7cGFkZGluZzoxcmVtIWltcG9ydGFudH0ucC14eGwtNHtwYWRkaW5nOjEuNXJlbSFpbXBvcnRhbnR9LnAteHhsLTV7cGFkZGluZzozcmVtIWltcG9ydGFudH0ucHgteHhsLTB7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnB4LXh4bC0xe3BhZGRpbmctcmlnaHQ6LjI1cmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6LjI1cmVtIWltcG9ydGFudH0ucHgteHhsLTJ7cGFkZGluZy1yaWdodDouNXJlbSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0Oi41cmVtIWltcG9ydGFudH0ucHgteHhsLTN7cGFkZGluZy1yaWdodDoxcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnB4LXh4bC00e3BhZGRpbmctcmlnaHQ6MS41cmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MS41cmVtIWltcG9ydGFudH0ucHgteHhsLTV7cGFkZGluZy1yaWdodDozcmVtIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6M3JlbSFpbXBvcnRhbnR9LnB5LXh4bC0we3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fS5weS14eGwtMXtwYWRkaW5nLXRvcDouMjVyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnB5LXh4bC0ye3BhZGRpbmctdG9wOi41cmVtIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTouNXJlbSFpbXBvcnRhbnR9LnB5LXh4bC0ze3BhZGRpbmctdG9wOjFyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjFyZW0haW1wb3J0YW50fS5weS14eGwtNHtwYWRkaW5nLXRvcDoxLjVyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnB5LXh4bC01e3BhZGRpbmctdG9wOjNyZW0haW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjNyZW0haW1wb3J0YW50fS5wdC14eGwtMHtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ucHQteHhsLTF7cGFkZGluZy10b3A6LjI1cmVtIWltcG9ydGFudH0ucHQteHhsLTJ7cGFkZGluZy10b3A6LjVyZW0haW1wb3J0YW50fS5wdC14eGwtM3twYWRkaW5nLXRvcDoxcmVtIWltcG9ydGFudH0ucHQteHhsLTR7cGFkZGluZy10b3A6MS41cmVtIWltcG9ydGFudH0ucHQteHhsLTV7cGFkZGluZy10b3A6M3JlbSFpbXBvcnRhbnR9LnBlLXh4bC0we3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9LnBlLXh4bC0xe3BhZGRpbmctcmlnaHQ6LjI1cmVtIWltcG9ydGFudH0ucGUteHhsLTJ7cGFkZGluZy1yaWdodDouNXJlbSFpbXBvcnRhbnR9LnBlLXh4bC0ze3BhZGRpbmctcmlnaHQ6MXJlbSFpbXBvcnRhbnR9LnBlLXh4bC00e3BhZGRpbmctcmlnaHQ6MS41cmVtIWltcG9ydGFudH0ucGUteHhsLTV7cGFkZGluZy1yaWdodDozcmVtIWltcG9ydGFudH0ucGIteHhsLTB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LnBiLXh4bC0xe3BhZGRpbmctYm90dG9tOi4yNXJlbSFpbXBvcnRhbnR9LnBiLXh4bC0ye3BhZGRpbmctYm90dG9tOi41cmVtIWltcG9ydGFudH0ucGIteHhsLTN7cGFkZGluZy1ib3R0b206MXJlbSFpbXBvcnRhbnR9LnBiLXh4bC00e3BhZGRpbmctYm90dG9tOjEuNXJlbSFpbXBvcnRhbnR9LnBiLXh4bC01e3BhZGRpbmctYm90dG9tOjNyZW0haW1wb3J0YW50fS5wcy14eGwtMHtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9LnBzLXh4bC0xe3BhZGRpbmctbGVmdDouMjVyZW0haW1wb3J0YW50fS5wcy14eGwtMntwYWRkaW5nLWxlZnQ6LjVyZW0haW1wb3J0YW50fS5wcy14eGwtM3twYWRkaW5nLWxlZnQ6MXJlbSFpbXBvcnRhbnR9LnBzLXh4bC00e3BhZGRpbmctbGVmdDoxLjVyZW0haW1wb3J0YW50fS5wcy14eGwtNXtwYWRkaW5nLWxlZnQ6M3JlbSFpbXBvcnRhbnR9LmdhcC14eGwtMHtnYXA6MCFpbXBvcnRhbnR9LmdhcC14eGwtMXtnYXA6LjI1cmVtIWltcG9ydGFudH0uZ2FwLXh4bC0ye2dhcDouNXJlbSFpbXBvcnRhbnR9LmdhcC14eGwtM3tnYXA6MXJlbSFpbXBvcnRhbnR9LmdhcC14eGwtNHtnYXA6MS41cmVtIWltcG9ydGFudH0uZ2FwLXh4bC01e2dhcDozcmVtIWltcG9ydGFudH0ucm93LWdhcC14eGwtMHtyb3ctZ2FwOjAhaW1wb3J0YW50fS5yb3ctZ2FwLXh4bC0xe3Jvdy1nYXA6LjI1cmVtIWltcG9ydGFudH0ucm93LWdhcC14eGwtMntyb3ctZ2FwOi41cmVtIWltcG9ydGFudH0ucm93LWdhcC14eGwtM3tyb3ctZ2FwOjFyZW0haW1wb3J0YW50fS5yb3ctZ2FwLXh4bC00e3Jvdy1nYXA6MS41cmVtIWltcG9ydGFudH0ucm93LWdhcC14eGwtNXtyb3ctZ2FwOjNyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLXh4bC0wey1tb3otY29sdW1uLWdhcDowIWltcG9ydGFudDtjb2x1bW4tZ2FwOjAhaW1wb3J0YW50fS5jb2x1bW4tZ2FwLXh4bC0xey1tb3otY29sdW1uLWdhcDowLjI1cmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOi4yNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAteHhsLTJ7LW1vei1jb2x1bW4tZ2FwOjAuNXJlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDouNXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAteHhsLTN7LW1vei1jb2x1bW4tZ2FwOjFyZW0haW1wb3J0YW50O2NvbHVtbi1nYXA6MXJlbSFpbXBvcnRhbnR9LmNvbHVtbi1nYXAteHhsLTR7LW1vei1jb2x1bW4tZ2FwOjEuNXJlbSFpbXBvcnRhbnQ7Y29sdW1uLWdhcDoxLjVyZW0haW1wb3J0YW50fS5jb2x1bW4tZ2FwLXh4bC01ey1tb3otY29sdW1uLWdhcDozcmVtIWltcG9ydGFudDtjb2x1bW4tZ2FwOjNyZW0haW1wb3J0YW50fS50ZXh0LXh4bC1zdGFydHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LXh4bC1lbmR7dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9LnRleHQteHhsLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmZzLTF7Zm9udC1zaXplOjIuNXJlbSFpbXBvcnRhbnR9LmZzLTJ7Zm9udC1zaXplOjJyZW0haW1wb3J0YW50fS5mcy0ze2ZvbnQtc2l6ZToxLjc1cmVtIWltcG9ydGFudH0uZnMtNHtmb250LXNpemU6MS41cmVtIWltcG9ydGFudH19QG1lZGlhIHByaW50ey5kLXByaW50LWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtcHJpbnQtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1wcmludC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1wcmludC1ncmlke2Rpc3BsYXk6Z3JpZCFpbXBvcnRhbnR9LmQtcHJpbnQtaW5saW5lLWdyaWR7ZGlzcGxheTppbmxpbmUtZ3JpZCFpbXBvcnRhbnR9LmQtcHJpbnQtdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtcHJpbnQtdGFibGUtcm93e2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH0uZC1wcmludC10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtcHJpbnQtZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLXByaW50LWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5kLXByaW50LW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH19Ci8qIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5taW4uY3NzLm1hcCAqLw=="}},"time_used":40,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":22,"receive":18,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testi_avatar03.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.074Z","timestamp":1785159465074,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testi_avatar03.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 16720\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":16720,"size_decoded":16986,"mime_type":"image/png","magic":"PNG image data, 169 x 169, 8-bit colormap, non-interlaced","md5":"4a065e864c1201d851d20e919840135e","sha1":"8634dfe929488b8b23634c7362691fe65162c91c","sha256":"68c3407fdaf43c342fb0ce1c8ab117b73cf9ac89666cb4c2d8c6995e4fdfc80c","sha512":"f477f5fd1b8e78a65451ce9fc651d0053b1442a8c55ccae8e22648119042aba988a7685945e234e9a0c57d4a1b7fcb78b356dc8858bf996bda40f1bc28369cde","ssdeep":"384:k/RctwklUJaUl6LkWDB70tXY14bZO9T7cjdWJNjS:2cthlUJ1GxGLZ1eNjS","tlshash":"d972e110521ebe95e3537c2847d4e8384ea30653e1f09a4d83b61bee778132de5c4e47","first_seen":"2025-08-04T11:51:21.529149Z","last_seen":"2026-07-27T13:38:47.792051Z","times_seen":9,"resource_available":false,"data":"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"}},"time_used":75,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":71,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/fonts/fa-solid-900.woff","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.563Z","timestamp":1785159465563,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/fonts/fa-solid-900.woff HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/assets1/css/fontawesome-all.min.css\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: font/woff\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 78268\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":78268,"size_decoded":78534,"mime_type":"font/woff","magic":"Web Open Font Format (Version 2), TrueType, length 78268, version 331.-31196","md5":"d824df7eb2e268626a2dd9a6a741ac4e","sha1":"0ccb2c814a7e4ca12c4778821633809cb0361eaa","sha256":"9834b82ad26e2a37583d22676a12dd2eb0fe7c80356a2114d0db1aa8b3899537","sha512":"a84e13f216ea95146af285af98aef0b464cd962440e161a1c602ca2178a179e04ae4ed2a2f98d5b2eb165480ec6920e0e88de77d5f1eb7f11ed772b092daf865","ssdeep":"1536:AOhrLFyv3lzKb1hkG8l0o4HXWj2uwgcdSJSls7ZahNpUFl8a/KdDe8Y7fN5O:AOhfMv3ILc0Dm3wA4LpKKdO7a","tlshash":"c97312aba6cd77ac88dd14565f0043533afdfb35ab27864349eca2e01a300677b5712b","first_seen":"2023-04-05T13:28:45Z","last_seen":"2026-08-04T05:29:29.359846Z","times_seen":57168,"resource_available":false,"data":"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"}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.080Z","timestamp":1785159465080,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3550\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3550,"size_decoded":3815,"mime_type":"image/png","magic":"PNG image data, 95 x 89, 8-bit/color RGBA, non-interlaced","md5":"1c08b659687ce4df827c1ba9087d87b6","sha1":"4f6cd21d7236e0dd44cd9a8d35eba2e469aa0d9a","sha256":"1d505da4c5468af6fc350c5da7d64f751f3299d38f15d77dabbd126dafe02903","sha512":"bd62f32edfdee10d5dfb98e6370a91f08a7972590fa2371ea969fc1226137ec535fd775d7e046a48c8d0cd9c6501e9b0283659927f92695bfedabd7f0aec9529","ssdeep":"","tlshash":"e0715bfb3bb64866073e8981bf1c28b3153b30e221a6ea2f1d44585459318f83a0c2c8","first_seen":"2025-10-13T02:30:07.352998Z","last_seen":"2026-07-27T13:38:47.760529Z","times_seen":11,"resource_available":false,"data":"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"}},"time_used":69,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":61,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T13:37:44.166Z","timestamp":1785159464166,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nx-powered-by: PHP/5.6.40\r\nset-cookie: CameFrom=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure\nPHPSESSID=k0hpffuk6d9e8qvudfejajquh7; path=/; domain=wealthgridasset.com; HttpOnly; secure\r\nexpires: Thu, 19 Nov 1981 08:52:00 GMT\r\ncache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\npragma: no-cache\r\ncontent-type: text/html; charset=UTF-8\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:5.6.40","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"WOW","description":"Reveal CSS animation as you scroll down a page.","website":"https://www.delac.io/WOW","common_platform_enumeration":"","icon":"","categories":["JavaScript frameworks","Web frameworks","JavaScript graphics"]},{"name":"Moment.js","description":"Moment.js is a free and open-source JavaScript library that removes the need to use the native JavaScript Date object directly.","website":"https://momentjs.com","common_platform_enumeration":"cpe:2.3:a:momentjs:moment:*:*:*:*:*:*:*:*","icon":"Moment.js.svg","categories":["JavaScript libraries"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Magnific Popup","description":"Magnific Popup is a responsive lightbox \u0026 dialog script with focus on performance and providing best experience for user with any device.","website":"https://dimsemenov.com/plugins/magnific-popup/","common_platform_enumeration":"","icon":"Magnific Popup.png","categories":["JavaScript libraries"]},{"name":"jQuery:3.6.0","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"jQuery CDN","description":"jQuery CDN is a way to include jQuery in your website without actually downloading and keeping it your website's folder.","website":"https://code.jquery.com/","common_platform_enumeration":"","icon":"jQuery.svg","categories":["CDN"]}],"data":{"size":94453,"size_decoded":20022,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text","md5":"4927133974fe87a199efb92cb9a28f4d","sha1":"346774181df763885321ccb51c96bd046db4a68e","sha256":"0eaf0b4f6d2067f8b7cff7fdfd6e89dc6ee0dd03d26294c7a994162fdca83020","sha512":"1cbfe2d6de59b54dcd079b9bb6ca4e6285b971e001966b3754cfed38a1d38844ca2fefc9bd99714f82baa7b5e65dff7d573f5a4d8cec96c8861eaccf137075c1","ssdeep":"1536:Ri5viVzD7vUif/5TkGwGQG+Gaz5zJ6DAKnf1U/Sg2t:Ri5aVzD7odXV7CfcU","tlshash":"2d93b2a414f0416b00c7e69aaf3aaf0a6f86e553e92a864472fc8fd85fc3cc5dd07558","first_seen":"2026-07-27T13:38:30.867337Z","last_seen":"2026-07-27T13:38:30.867337Z","times_seen":1,"resource_available":false,"data":"CjwhZG9jdHlwZSBodG1sPgo8aHRtbCBjbGFzcz0ibm8tanMiIGxhbmc9ImVuIj4KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCIgLz4KPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IngtdWEtY29tcGF0aWJsZSIgY29udGVudD0iaWU9ZWRnZSI+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9hcGV4YS1odG1sLWRlbW8ubmV0bGlmeS5hcHAvIiAvPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IldlYWx0aCBHcmlkIEFzc2V0cyB8IFJlZ3VsYXRlZCBTbWFydCBUcmFkaW5nIj4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJXZWFsdGggR3JpZCBBc3NldHMgaXMgYSBtb2Rlcm4gY29weSB0cmFkaW5nIGFuZCBpbnZlc3RtZW50IG9uIGZpbmFuY2lhbCBtYXJrZXRzIGZvciBib3RoIOKAlCBiZWdpbm5lcnMgYW5kIHByb2Zlc3Npb25hbHMuIExlYXJuIGNvbnZlbmllbnRseSBhbmQgaW52ZXN0IHdpc2VseSEiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJhc3NldHMxL2ltZy9mYXZpY29uLnBuZyI+CiAgICA8IS0tIFBsYWNlIGZhdmljb24uaWNvIGluIHRoZSByb290IGRpcmVjdG9yeSAtLT4KICAgIDwhLS0gQ1NTIGhlcmUgLS0+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0czEvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzMS9jc3MvYW5pbWF0ZS5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlImFzc2V0czEvY3NzL21hZ25pZmljLXBvcHVwLmNzcyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImFzc2V0czEvY3NzL2ZvbnRhd2Vzb21lLWFsbC5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzMS9jc3MvZmxhdGljb24uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzMS9jc3Mvb2RvbWV0ZXIuY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzMS9jc3Mvc3dpcGVyLWJ1bmRsZS5jc3MiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMxL2Nzcy9hb3MuY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYXNzZXRzMS9jc3MvZGVmYXVsdC5jc3MiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMxL2Nzcy9tYWluLmNzcyI+CgogICAgPHN0eWxlPgogICAgICAgICNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQgc2VsZWN0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgcGFkZGluZzogNHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICB9CgogICAgICAgICNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQgLmdvb2ctbG9nby1saW5rIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmdvb2ctdGUtZ2FkZ2V0IHsKICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQsCiAgICAgICAgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmxpbmssCiAgICAgICAgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOnZpc2l0ZWQsCiAgICAgICAgLlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkOmhvdmVyLAogICAgICAgIC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDphY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICAvKiBmb250LXNpemU6IDEycHg7ICovCiAgICAgICAgICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqLwogICAgICAgICAgICAvKiBjb2xvcjogIzQ0NDsgKi8KICAgICAgICAgICAgLyogdGV4dC1kZWNvcmF0aW9uOiBub25lOyAqLwogICAgICAgIH0KCiAgICAgICAgLnRyYW5zcGFyZW50LW92ZXJsYXkgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAudHJhbnNwYXJlbnQtb3ZlcmxheTo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTgwMDAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlX19ib3ggaSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNTBweDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlX19ib3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZV9fY29udGVudCBoMyB7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5PgogICAgPCEtLVByZWxvYWRlci0tCiAgICA8ZGl2IGlkPSJwcmVsb2FkZXIiPgogICAgICAgIDxkaXYgaWQ9ImxvYWRlciIgY2xhc3M9ImxvYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvYWRlci1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGVyLWljb24iPjxpbWcgc3JjPSJhc3NldHMxL2ltZy9sb2dvL3ByZWxvYWRlci5wbmciIGFsdD0iUHJlbG9hZGVyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4tLT4KICAgIDxkaXYgaWQ9Imdvb2dsZV90cmFuc2xhdGVfZWxlbWVudCI+PC9kaXY+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgZnVuY3Rpb24gZ29vZ2xlVHJhbnNsYXRlRWxlbWVudEluaXQoKSB7CiAgICAgICAgICAgIG5ldyBnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQoewogICAgICAgICAgICAgICAgcGFnZUxhbmd1YWdlOiAnZW4nLAogICAgICAgICAgICAgICAgbGF5b3V0OiBnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQuSW5saW5lTGF5b3V0LlZFUlRJQ0FMLAogICAgICAgICAgICAgICAgYXV0b0Rpc3BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9UcmFuc2xhdGlvbjogdHJ1ZSwKICAgICAgICAgICAgICAgIGdhVHJhY2s6IHRydWUsCiAgICAgICAgICAgICAgICBnYUlkOiAnVUEtWFhYWFhYWC1YJwogICAgICAgICAgICB9LCAnZ29vZ2xlX3RyYW5zbGF0ZV9lbGVtZW50Jyk7CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIKICAgICAgICBzcmM9Ii4uL3RyYW5zbGF0ZS5nb29nbGUuY29tL3RyYW5zbGF0ZV9hL2VsZW1lbnRhMGQ4LmpzP2NiPWdvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0Ij48L3NjcmlwdD4KICAgIDwhLS1QcmVsb2FkZXItZW5kIC0tPgogICAgPCEtLSBTY3JvbGwtdG9wIC0tPgogICAgPCEtLTxidXR0b24gY2xhc3M9InNjcm9sbF9fdG9wIHNjcm9sbC10by10YXJnZXQiIGRhdGEtdGFyZ2V0PSJodG1sIj4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWFuZ2xlLXVwIj48L2k+CiAgICA8L2J1dHRvbj4tLT4KICAgIDwhLS0gU2Nyb2xsLXRvcC1lbmQtLT4KICAgIDwhLS0gaGVhZGVyLWFyZWEgLS0+CiAgICA8aGVhZGVyPgogICAgICAgIDxkaXYgaWQ9ImhlYWRlci1maXhlZC1oZWlnaHQiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRnLWhlYWRlcl9fdG9wIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGN1c3RvbS1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idGctaGVhZGVyX190b3AtaW5mbyBsZWZ0LXNpZGUgbGlzdC13cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmxhdGljb24tcGluIj48L2k+MTY3LTE2OSBHcmVhdCAxIERlcndlbnQgQnVzaW5lc3MgQ2VudHJlLCBDbGFya2UgU3RyZWV0LCBEZXJieSwgRW5nbGFuZCwgREUxIDJCVTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRnLWhlYWRlcl9fdG9wLXJpZ2h0IGxpc3Qtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZsYXRpY29uLWVudmVsb3BlIj48L2k+PGEgaHJlZj0ibWFpbHRvOgpzdXBwb3J0QHdlYWx0aGdyaWRhc3NldC5jb20iPnN1cHBvcnRAd2VhbHRoZ3JpZGFzc2V0LmNvbTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9InN0aWNreS1oZWFkZXIiIGNsYXNzPSJ0Zy1oZWFkZXJfX2FyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgY3VzdG9tLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRnbWVudV9fd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0Z21lbnVfX25hdiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9J2luZGV4LnBocCc+PGltZyBzcmM9ImFzc2V0czEvaW1nL2xvZ28vbG9nby5wbmciIGFsdD0iTG9nbyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRnbWVudV9fbmF2YmFyLXdyYXAgdGdtZW51X19tYWluLW1lbnUgZC1ub25lIGQtbGctZmxleCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImN1cnJlbnQtbWVudS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5waHAiPkhvbWU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YT1jdXN0JnBhZ2U9YWJvdXQiPkFib3V0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtLWhhcy1jaGlsZHJlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+U2VydmljZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJzdWItbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2E9Y3VzdCZwYWdlPW9pbCI+T2lsICYgR2FzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvP2E9Y3VzdCZwYWdlPXJlYWwtZXN0YXRlIj5SZWFsIEVzdGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLz9hPWN1c3QmcGFnZT1hZ3JvIj5BZ3JvIEZhcm1pbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvP2E9Y3VzdCZwYWdlPXBsYW5zIj5QcmljaW5nPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvP2E9Y3VzdCZwYWdlPWZhcSI+RkFRczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLz9hPWN1c3QmcGFnZT10ZXJtcyI+VGVybXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YT1jdXN0JnBhZ2U9bGVnYWwiPkxlZ2FsIFBhZ2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YT1zdXBwb3J0Ij5Db250YWN0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudS1pdGVtLWhhcy1jaGlsZHJlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+QWNjb3VudDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InN1Yi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/YT1sb2dpbiI+TG9naW48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8/YT1zaWdudXAiPlNpZ251cDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vYmlsZS1uYXYtdG9nZ2xlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTggMTgiIGZpbGw9Im5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMCAyQzAgMC44OTU0MzEgMC44OTU0MzEgMCAyIDBDMy4xMDQ1NyAwIDQgMC44OTU0MzEgNCAyQzQgMy4xMDQ1NyAzLjEwNDU3IDQgMiA0QzAuODk1NDMxIDQgMCAzLjEwNDU3IDAgMloiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iY3VycmVudGNvbG9yIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMCA5QzAgNy44OTU0MyAwLjg5NTQzMSA3IDIgN0MzLjEwNDU3IDcgNCA3Ljg5NTQzIDQgOUM0IDEwLjEwNDYgMy4xMDQ1NyAxMSAyIDExQzAuODk1NDMxIDExIDAgMTAuMTA0NiAwIDlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRjb2xvciIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTAgMTZDMCAxNC44OTU0IDAuODk1NDMxIDE0IDIgMTRDMy4xMDQ1NyAxNCA0IDE0Ljg5NTQgNCAxNkM0IDE3LjEwNDYgMy4xMDQ1NyAxOCAyIDE4QzAuODk1NDMxIDE4IDAgMTcuMTA0NiAwIDE2WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik03IDJDNyAwLjg5NTQzMSA3Ljg5NTQzIDAgOSAwQzEwLjEwNDYgMCAxMSAwLjg5NTQzMSAxMSAyQzExIDMuMTA0NTcgMTAuMTA0NiA0IDkgNEM3Ljg5NTQzIDQgNyAzLjEwNDU3IDcgMloiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iY3VycmVudGNvbG9yIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNNyA5QzcgNy44OTU0MyA3Ljg5NTQzIDcgOSA3QzEwLjEwNDYgNyAxMSA3Ljg5NTQzIDExIDlDMTEgMTAuMTA0NiAxMC4xMDQ2IDExIDkgMTFDNy44OTU0MyAxMSA3IDEwLjEwNDYgNyA5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik03IDE2QzcgMTQuODk1NCA3Ljg5NTQzIDE0IDkgMTRDMTAuMTA0NiAxNCAxMSAxNC44OTU0IDExIDE2QzExIDE3LjEwNDYgMTAuMTA0NiAxOCA5IDE4QzcuODk1NDMgMTggNyAxNy4xMDQ2IDcgMTZaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRjb2xvciIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE0IDJDMTQgMC44OTU0MzEgMTQuODk1NCAwIDE2IDBDMTcuMTA0NiAwIDE4IDAuODk1NDMxIDE4IDJDMTggMy4xMDQ1NyAxNy4xMDQ2IDQgMTYgNEMxNC44OTU0IDQgMTQgMy4xMDQ1NyAxNCAyWiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xNCA5QzE0IDcuODk1NDMgMTQuODk1NCA3IDE2IDdDMTcuMTA0NiA3IDE4IDcuODk1NDMgMTggOUMxOCAxMC4xMDQ2IDE3LjEwNDYgMTEgMTYgMTFDMTQuODk1NCAxMSAxNCAxMC4xMDQ2IDE0IDlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRjb2xvciIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE0IDE2QzE0IDE0Ljg5NTQgMTQuODk1NCAxNCAxNiAxNEMxNy4xMDQ2IDE0IDE4IDE0Ljg5NTQgMTggMTZDMTggMTcuMTA0NiAxNy4xMDQ2IDE4IDE2IDE4QzE0Ljg5NTQgMTggMTQgMTcuMTA0NiAxNCAxNloiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iY3VycmVudGNvbG9yIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNb2JpbGUgTWVudSAgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRnbW9iaWxlX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9InRnbW9iaWxlX19tZW51LWJveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtYnRuIj48aSBjbGFzcz0iZmFzIGZhLXRpbWVzIj48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWxvZ28iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSdpbmRleC0yLmh0bWwnPjxpbWcgc3JjPSJhc3NldHMxL2ltZy9sb2dvL2xvZ28ucG5nIiBhbHQ9IkxvZ28iPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0Z21vYmlsZV9fc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIjIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2lkIiB2YWx1ZT0iMTc4NTE1OTQ2NDk5NTEiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fdG9rZW4iIHZhbHVlPSIyYjJiYTFmYjJhN2I4YTg0OTMwM2ZjMjhiNjk0NDI4NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBoZXJlLi4uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+PGkgY2xhc3M9ImZhcyBmYS1zZWFyY2giPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRnbW9iaWxlX19tZW51LW91dGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUhlcmUgTWVudSBXaWxsIENvbWUgQXV0b21hdGljYWxseSBWaWEgSmF2YXNjcmlwdCAvIFNhbWUgTWVudSBhcyBpbiBIZWFkZXItLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0Z21vYmlsZV9fbWVudS1ib3R0b20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXdyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJtYWlsdG86CnN1cHBvcnRAd2VhbHRoZ3JpZGFzc2V0LmNvbSI+c3VwcG9ydEB3ZWFsdGhncmlkYXNzZXQuY29tPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic29jaWFsLWxpbmtzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC13cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj48aSBjbGFzcz0iZmFiIGZhLWZhY2Vib29rLWYiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj48aSBjbGFzcz0iZmFiIGZhLXR3aXR0ZXIiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj48aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSI+PC9pPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRnbW9iaWxlX19tZW51LWJhY2tkcm9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgTW9iaWxlIE1lbnUgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPCEtLSBvZmZDYW52YXMtbWVudSAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJvZmZDYW52YXNfX2luZm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvZmZDYW52YXNfX2Nsb3NlLWljb24gbWVudS1jbG9zZSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uPjxpIGNsYXNzPSJmYXIgZmEtd2luZG93LWNsb3NlIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvZmZDYW52YXNfX2xvZ28gbWItMzAiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0naW5kZXgtMi5odG1sJz48aW1nIHNyYz0iYXNzZXRzMS9pbWcvbG9nby9sb2dvLnBuZyIgYWx0PSJMb2dvIj48L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvZmZDYW52YXNfX3NpZGUtaW5mbyBtYi0zMCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWxpc3QgbWItMzAiPgogICAgICAgICAgICAgICAgICAgIDxoND5PZmZpY2UgQWRkcmVzczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHA+MTY3LTE2OSBHcmVhdCBQb3J0bGFuZCBTdHJlZXQsIEZpZnRoIEZsb29yLCBMb25kb24sIEVuZ2xhbmQsIFcxVyA1UEY8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtbGlzdCBtYi0zMCI+CiAgICAgICAgICAgICAgICAgICAgPGg0PkVtYWlsIEFkZHJlc3M8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Im1haWx0bzoKc3VwcG9ydEB3ZWFsdGhncmlkYXNzZXQuY29tIj5zdXBwb3J0QHdlYWx0aGdyaWRhc3NldC5jb208L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im9mZkNhbnZhc19fb3Zlcmx5Ij48L2Rpdj4KICAgICAgICA8IS0tIG9mZkNhbnZhcy1tZW51LWVuZCAtLT4KICAgIDwvaGVhZGVyPgogICAgCgogICAgPCEtLSBoZWFkZXItYXJlYS1lbmQgLS0+CiAgICA8dGl0bGU+V2VhbHRoIEdyaWQgQXNzZXRzPC90aXRsZT4KICAgIDwhLS0gbWFpbi1hcmVhIC0tPgogICAgPG1haW4gY2xhc3M9ImZpeCI+CiAgICAgICAgPCEtLSBzbGlkZXItYXJlYSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2xpZGVyX19hcmVhIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLWNvbnRhaW5lciBzbGlkZXJfX2FjdGl2ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIHNsaWRlcl9fc2luZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyX19iZyIgZGF0YS1iYWNrZ3JvdW5kPSJhc3NldHMxL2ltZy9zbGlkZXIvc2xpZGVyX2JnMDEuanBnIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXJfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1Yi10aXRsZSI+V2UgQXJlIEV4cGVydCBJbiBUaGlzIEZpZWxkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+VHJhbnNmb3JtaW5nIERyZWFtcyBpbnRvIEZpbmFuY2lhbCBSZWFsaXR5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPldlYWx0aCBHcmlkIEFzc2V0cyBidWlsZHMgeW91ciBkcmVhbSB3aXRoIGEgcGFzc2lvbmF0ZSB0ZWFtIGFuZCBpbm5vdmF0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ2llcywgdHVybmluZyB5b3VyIHZpc2lvbiBpbnRvIGEgdGFuZ2libGUgcmVhbGl0eS4gWW91ciBhc3BpcmF0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvdXIgaW5zcGlyYXRpb24uIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4nIGhyZWY9Jy8/YT1jdXN0JnBhZ2U9YWJvdXQnPkxlYXJuIE1vcmU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXJfX3NoYXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9zbGlkZXIvc2xpZGVyX3NoYXBlMDEucG5nIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvc2xpZGVyL3NsaWRlcl9zaGFwZTAyLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUgc2xpZGVyX19zaW5nbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXJfX2JnIiBkYXRhLWJhY2tncm91bmQ9ImFzc2V0czEvaW1nL3NsaWRlci9zbGlkZXJfYmcwMi5qcGciPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlcl9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ViLXRpdGxlIj5FbXBvd2VyaW5nIFlvdXIgRmluYW5jaWFsIEZ1dHVyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPkV4Y2VsbGVuY2UgaW4gQ2F0ZXJpbmcgdG8geW91ciBGaW5hbmNpYWwgbmVlZHM8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2VhbHRoIEdyaWQgQXNzZXRzIGhlbHAgeW91IGdyb3cgeW91ciBmaW5hbmNpYWwgZnV0dXJlIHdpdGggZXhwZXJ0IGd1aWRhbmNlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgc29sdXRpb25zLiBPdXIgY29tbWl0bWVudCBpcyB0byBzZWUgeW91ciBpbnZlc3RtZW50cyB0aHJpdmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciB3ZWFsdGggZXhwYW5kLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4nIGhyZWY9Jy8/YT1zaWdudXAnPkdldCBTdGFydGVkPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyX19zaGFwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvc2xpZGVyL3NsaWRlcl9zaGFwZTAxLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL3NsaWRlci9zbGlkZXJfc2hhcGUwMi5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwhLS0gc2xpZGVyLWFyZWEtZW5kIC0tPgogICAgICAgIDwhLS0gZmVhdHVyZXMtYXJlYSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZmVhdHVyZXNfX2FyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgcC0wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzX19pdGVtLXdyYXAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBnLTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlc19faXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXNfX2ljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmxhdGljb24tZmluYW5jaWFsLXByb2ZpdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaHJlZj0nc2VydmljZXMtZGV0YWlscy5odG1sJz5GaW5hbmNpYWwgUGxhbm5pbmc8L2E+PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2VhbHRoIEdyaWQgQXNzZXRzIG1hbmFnZXMgeW91ciBmaW5hbmNlcyBzeXN0ZW1hdGljYWxseSB0byBhY2hpZXZlIGdvYWxzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXNfX2l0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzX19pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZsYXRpY29uLWxpZ2h0LWJ1bGIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlc19fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGhyZWY9J3NlcnZpY2VzLWRldGFpbHMuaHRtbCc+U3RyYXRlZ2ljIElkZWE8L2E+PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2VhbHRoIEdyaWQgQXNzZXRzIGhhcyB2aXNpb25hcnkgcGxhbiBmb3IgY29tcGV0aXRpdmUgYWR2YW50YWdlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTMgY29sLW1kLTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXNfX2l0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzX19pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZsYXRpY29uLXRhcmdldCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaHJlZj0nc2VydmljZXMtZGV0YWlscy5odG1sJz5GaW5hbmNpYWwgR29hbDwvYT48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XZWFsdGggR3JpZCBBc3NldHMgaGFzIHRhcmdldGVkIG9iamVjdGl2ZSBmb3IgeW91ciBmaW5hbmNpYWwgYWNoaWV2ZW1lbnQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctMyBjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlc19faXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXNfX2ljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmxhdGljb24tcHJvZml0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXNfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj48YSBocmVmPSdzZXJ2aWNlcy1kZXRhaWxzLmh0bWwnPkZpbmFuY2lhbCBHcm93dGg8L2E+PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+V2VhbHRoIEdyaWQgQXNzZXRzIHByb3ZpZGVzIGV4cGFuc2lvbiBvciBpbXByb3ZlbWVudCBvZiBmaW5hbmNpYWwgcmVzb3VyY2VzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPCEtLSBmZWF0dXJlcy1hcmVhLWVuZCAtLT4KICAgICAgICA8IS0tIGFib3V0LWFyZWEgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFib3V0X19hcmVhLXR3byBhYm91dF9fYmciIGRhdGEtYmFja2dyb3VuZD0iYXNzZXRzMS9pbWcvYmcvYWJvdXRfYmcuaHRtbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy02IGNvbC1tZC04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJvdXRfX2ltZy13cmFwLXR3byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2gyX2Fib3V0X2ltZy5qcGciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2gyX2Fib3V0X2ltZ19zaGFwZS5wbmciIGFsdD0iIiBjbGFzcz0iYWxsdHVjaHRvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlX19ib3gtdHdvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlX19zaGFwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgODIgMjk1IiBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik03MC43Njg1IDI2MC40NzlDNzcuNjQwNSAyNTcuMTI3IDgyIDI1MC4xNSA4MiAyNDIuNTAzTDgyIDQ0LjgyMDVDODIgMzYuNTAzMiA3Ni44NTI0IDI5LjA1NCA2OS4wNzI0IDI2LjExMjhMLTMuNTE3ODRlLTA2IDkuNzc4NGUtMDdMMCAyOTVMNzAuNzY4NSAyNjAuNDc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJjdXJyZW50Y29sb3IiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cGVyaWVuY2VfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj5PdmVyIGEgRGVjYWRlPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WWVhcnMgT2YgPGJyPiBFeHBlcmllbmNlczwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFib3V0X19jb250ZW50LXR3byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIG1iLTIwIHRnLWhlYWRpbmctc3ViaGVhZGluZyBhbmltYXRpb24tc3R5bGUzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ViLXRpdGxlIj5BYm91dCBPdXIgQ29tcGFueTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIHRnLWVsZW1lbnQtdGl0bGUiPldlJ3JlIGhlcmUgdG8gYXNzaXN0IHlvdSBvbiB5b3VyIGZpbmFuY2lhbCBqb3VybmV5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkF0IFdlYWx0aCBHcmlkIEFzc2V0cywgd2UncmUgZGVkaWNhdGVkIHRvIG1heGltaXppbmcgaW52ZXN0b3JzJyBjYXBpdGFsLiBPdXIgc2Vhc29uZWQgdGVhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcGxveXMgYSBzdHJhdGVnaWMgYXBwcm9hY2gsIHByaW9yaXRpemluZyByb2J1c3QsIHJpc2stYWRqdXN0ZWQgcmV0dXJucy4gV2UgZGVwbG95IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRpY3Vsb3VzIGludmVzdG1lbnQgc3RyYXRlZ3kgYWNyb3NzIHNlY3RvcnMsIHRhcmdldGluZyBzdXBlcmlvciByZXR1cm5zIGFuZCB0YXBwaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byByZWxpYWJsZSBpbmNvbWUgZnJvbSBzdG9jayBtYXJrZXRzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFib3V0X19jb250ZW50LWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYm91dF9fbGlzdC1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZsYXRpY29uLWFycm93LWJ1dHRvbiI+PC9pPjEwMCUgZmluYW5jaWFsIEdyb3d0aDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZsYXRpY29uLWFycm93LWJ1dHRvbiI+PC9pPk91ciB0cmFjayByZWNvcmQgc3BlYWtzIGZvciBvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxpYWJpbGl0eS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmbGF0aWNvbi1hcnJvdy1idXR0b24iPjwvaT5PdXIgZ2xvYmFsIGluc2lnaHRzIGV4cGFuZCB5b3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYW5jaWFsIG9wcG9ydHVuaXRpZXMuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmxhdGljb24tYXJyb3ctYnV0dG9uIj48L2k+V2Ugc3RhbmQgb3V0IGJ5IGNyYWZ0aW5nIGZpbmFuY2lhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbHV0aW9ucy48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYm91dC1ib3R0b20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLXR3bycgaHJlZj0nLz9hPWN1c3QmcGFnZT1hYm91dCc+TGVhcm4gTW9yZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJvdXRfX3NoYXBlLXdyYXAtdHdvIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pbWFnZXMvaDJfYWJvdXRfc2hhcGUwMS5wbmciIGFsdD0iIgogICAgICAgICAgICAgICAgICAgIGRhdGEtcGFyYWxsYXg9J3sieCIgOiAtODAgLCAieSIgOiA4MCAsICJyb3RhdGVaIjo4MH0nPgogICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy9oMl9hYm91dF9zaGFwZTAyLnBuZyIgYWx0PSIiIGRhdGEtcGFyYWxsYXg9J3sieSIgOiAxMDAgfSc+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2gyX2Fib3V0X3NoYXBlMDMucG5nIiBhbHQ9IiIgZGF0YS1hb3M9ImZhZGUtbGVmdCIgZGF0YS1hb3MtZGVsYXk9IjQwMCI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8IS0tIGFib3V0LWFyZWEtZW5kIC0tPgogICAgICAgIDwhLS0gc2VydmljZXMtYXJlYSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2VydmljZXMtYXJlYSBzZXJ2aWNlcy1iZyIgZGF0YS1iYWNrZ3JvdW5kPSJhc3NldHMxL2ltZy9iZy9zZXJ2aWNlc19iZy5odG1sIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteGwtNiBjb2wtbGctOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUgdGV4dC1jZW50ZXIgbWItNDAgdGctaGVhZGluZy1zdWJoZWFkaW5nIGFuaW1hdGlvbi1zdHlsZTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1Yi10aXRsZSI+T1VSIFNFUlZJQ0VTPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSB0Zy1lbGVtZW50LXRpdGxlIj5PcHBvcnR1bml0aWVzIHRvIEV4cGxvcmU8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtaXRlbS13cmFwIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14bC0zIGNvbC1sZy00IGNvbC1tZC02IGNvbC1zbS04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzLWl0ZW0gc2hpbmUtYW5pbWF0ZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlcy10aHVtYiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdzaGluZS1hbmltYXRlJyBocmVmPScvP2E9Y3VzdCZwYWdlPW9pbCc+PGltZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iYXNzZXRzMS9pbWcvc2VydmljZXMvc2VydmljZXNfaW1nMDEuanBnIiBhbHQ9IiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmbGF0aWNvbi1wcm9maXQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGhyZWY9Jy8/YT1jdXN0JnBhZ2U9b2lsJz5PaWwgJiBHYXM8L2E+PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlIG9pbCBhbmQgZ2FzIGluZHVzdHJ5IGlzIHZpdGFsIGZvciBtZWV0aW5nIGdsb2JhbCBlbmVyZ3kgZGVtYW5kcywgcG93ZXJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydGF0aW9uIGFuZCBpbmR1c3RyeS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4nIGhyZWY9Jy8/YT1jdXN0JnBhZ2U9b2lsJz5SZWFkIE1vcmU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14bC0zIGNvbC1sZy00IGNvbC1tZC02IGNvbC1zbS04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzLWl0ZW0gc2hpbmUtYW5pbWF0ZS1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlcy10aHVtYiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdzaGluZS1hbmltYXRlJyBocmVmPScvP2E9Y3VzdCZwYWdlPXJlYWwtZXN0YXRlJz48aW1nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSJhc3NldHMxL2ltZy9zZXJ2aWNlcy9zZXJ2aWNlc19pbWcwMi5qcGciIGFsdD0iIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZsYXRpY29uLWludmVzdG1lbnQtMSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaHJlZj0nLz9hPWN1c3QmcGFnZT1yZWFsLWVzdGF0ZSc+UmVhbCBFc3RhdGU8L2E+PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UmVhbCBlc3RhdGUgaW52ZXN0bWVudCBvZmZlcnMgYSB0YW5naWJsZSBwYXRoIHRvIHdlYWx0aCBhY2N1bXVsYXRpb24sIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgc2VydmluZyBhcyBib3RoIGhvbWVzIGFuZCB2YWx1YWJsZSBhc3NldHMxLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9J2J0bicgaHJlZj0nLz9hPWN1c3QmcGFnZT1yZWFsLWVzdGF0ZSc+UmVhZCBNb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteGwtMyBjb2wtbGctNCBjb2wtbWQtNiBjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlcy1pdGVtIHNoaW5lLWFuaW1hdGUtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtdGh1bWIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nc2hpbmUtYW5pbWF0ZScgaHJlZj0nLz9hPWN1c3QmcGFnZT1hZ3JvJz48aW1nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSJhc3NldHMxL2ltZy9zZXJ2aWNlcy9zZXJ2aWNlc19pbWcwMy5qcGciIGFsdD0iIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXMtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZsYXRpY29uLXBpZS1jaGFydCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaHJlZj0nYWdyby0yLmh0bWwnPkFncm8gRmFybWluZzwvYT48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5BZ3JvIGZhcm1pbmcgc3VwcG9ydHMgZm9vZCBwcm9kdWN0aW9uIGFuZCBub3VyaXNoZXMgY29tbXVuaXRpZXMgd2l0aCBmcmVzaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZSwgZm9ybWluZyB0aGUgYmFzaXMgb2YgZ2xvYmFsIGFncmljdWx0dXJlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9J2J0bicgaHJlZj0nLz9hPWN1c3QmcGFnZT1hZ3JvJz5SZWFkIE1vcmU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwhLS0gc2VydmljZXMtYXJlYS1lbmQgLS0+CiAgICAgICAgPCEtLSBwcmljaW5nLWFyZWEgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InByaWNpbmdfX2FyZWEgcHJpY2luZ19fYmciIGRhdGEtYmFja2dyb3VuZD0iYXNzZXRzMS9pbWcvYmcvcHJpY2luZ19iZy5odG1sIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteGwtNSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUgdGV4dC1jZW50ZXIgbWItMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1Yi10aXRsZSI+RmxleGlibGUgUHJpY2luZyBQbGFuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+V2XigJl2ZSBPZmZlcmVkIFRoZSBCZXN0IFByaWNpbmcgRm9yIFlvdTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19pdGVtLXdyYXAiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX3RhYiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmljaW5nX190YWItYnRuIG1vbnRobHlfdGFiX3RpdGxlIj5QcmljaW5nPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2luZ19fdGFiLXN3aXRjaGVyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19ib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2hlYWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5TdGFuZGFyZCBQbGFuPC9oNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0icHJpY2UgbW9udGhseV9wcmljZSI+IDEwJSA8YnI+PHNwYW4+QWZ0ZXIgMjQgSG91cnM8L3NwYW4+PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXdyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZG90LWNpcmNsZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbiBEZXBvc2l0IC0gJDIwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWRvdC1jaXJjbGUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggRGVwb3NpdCAtICQ1LDAwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaWNvbi9jaGVja19pY29uLnN2ZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEFQUjogMTAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pY29uL2NoZWNrX2ljb24uc3ZnIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSUgUmVmZXJyYWwgQ29tbWlzc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaWNvbi9jaGVja19pY29uLnN2ZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LzcgU3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19idG4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvP2E9c2lnbnVwIiBjbGFzcz0iYnRuIj5HZXQgdGhpcyBwbGFuIE5vdzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTQgY29sLW1kLTYgY29sLXNtLTgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZ19fYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19oZWFkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJ0aXRsZSI+TWVkaXVtIFBsYW48L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX3ByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcmljZSBtb250aGx5X3ByaWNlIj4gMjAlIDxicj48c3Bhbj5BZnRlciAyNCBIb3Vyczwvc3Bhbj48L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1kb3QtY2lyY2xlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluIERlcG9zaXQgLSAkMiwwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1kb3QtY2lyY2xlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4IERlcG9zaXQgLSAkMTUsMDAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pY29uL2NoZWNrX2ljb24uc3ZnIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgQVBSOiAyMCUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ljb24vY2hlY2tfaWNvbi5zdmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1JSBSZWZlcnJhbCBDb21taXNzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pY29uL2NoZWNrX2ljb24uc3ZnIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQvNyBTdXBwb3J0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2J0biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YT1zaWdudXAiIGNsYXNzPSJidG4iPkdldCB0aGlzIHBsYW4gTm93PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19ib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2hlYWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5Qcm9mZXNzaW9uYWwgUGxhbjwvaDU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZ19fcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InByaWNlIG1vbnRobHlfcHJpY2UiPiAzNSUgPGJyPjxzcGFuPkFmdGVyIDI0IEhvdXJzPC9zcGFuPjwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZ19fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC13cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWRvdC1jaXJjbGUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW4gRGVwb3NpdCAtICQxNiwwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1kb3QtY2lyY2xlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4IERlcG9zaXQgLSAkVW5saW1pdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pY29uL2NoZWNrX2ljb24uc3ZnIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgQVBSOiAzNSUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ljb24vY2hlY2tfaWNvbi5zdmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1JSBSZWZlcnJhbCBDb21taXNzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pY29uL2NoZWNrX2ljb24uc3ZnIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQvNyBTdXBwb3J0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2J0biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YT1zaWdudXAiIGNsYXNzPSJidG4iPkdldCB0aGlzIHBsYW4gTm93PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgo8IS0tCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1sZy00IGNvbC1tZC02IGNvbC1zbS04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZ19faGVhZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0idGl0bGUiPlVsdGltYXRlIHBsYW48L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX3ByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJwcmljZSBtb250aGx5X3ByaWNlIj4gNy41JSA8YnI+PHNwYW4+RGFpbHkgZm9yIDMwIERheXM8L3NwYW4+PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nX19saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXdyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZG90LWNpcmNsZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbiBEZXBvc2l0IC0gJDUwLDAwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWRvdC1jaXJjbGUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggRGVwb3NpdCAtICRObyBMaW1pdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaWNvbi9jaGVja19pY29uLnN2ZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEFQUjogMjI1JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaWNvbi9jaGVja19pY29uLnN2ZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUlIFJlZmVycmFsIENvbW1pc3Npb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ljb24vY2hlY2tfaWNvbi5zdmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC83IFN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZ19fYnRuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLz9hPXNpZ251cCIgY2xhc3M9ImJ0biI+R2V0IHRoaXMgcGxhbiBOb3c8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+LS0+CgoKCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmdfX3NoYXBlLXdyYXAiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy9wcmljaW5nX3NoYXBlMDEucG5nIiBhbHQ9IiIgZGF0YS1hb3M9ImZhZGUtcmlnaHQiIGRhdGEtYW9zLWRlbGF5PSI0MDAiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy9wcmljaW5nX3NoYXBlMDIucG5nIiBhbHQ9IiIgZGF0YS1hb3M9ImZhZGUtbGVmdCIgZGF0YS1hb3MtZGVsYXk9IjQwMCI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8IS0tIHByaWNpbmctYXJlYS1lbmQgLS0+CiAgICAgICAgPCEtLSBjaG9vc2UtYXJlYSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iY2hvb3NlX19hcmVhLXR3byI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNob29zZV9fYmciIGRhdGEtYmFja2dyb3VuZD0iYXNzZXRzMS9pbWcvYmcvY2hvb3NlX2JnLmpwZyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWVuZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTggY29sLW1kLTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hvb3NlX19jb250ZW50LXR3byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIG1iLTIwIHRnLWhlYWRpbmctc3ViaGVhZGluZyBhbmltYXRpb24tc3R5bGUzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3ViLXRpdGxlIj5XaHkgQ2hvb3NlIFVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUgdGctZWxlbWVudC10aXRsZSI+V2hlcmUgeW91ciBmaW5hbmNpYWwgZHJlYW1zIGJlY29tZSByZWFsaXR5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+T3VyIHBsZWRnZSB0byBxdWFsaXR5IGFuZCByZWxpYWJpbGl0eSBpcyBldmlkZW50IGluIGV2ZXJ5IGZhY2V0IG9mIG91ciBvcGVyYXRpb25zLiBXaXRoIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFzb25lZCB0ZWFtIGF0IHRoZSBoZWxtLCB3ZSBjb25zaXN0ZW50bHkgYWNoaWV2ZSBwZXJmb3JtYW5jZSB0aGF0IHN0YW5kcyBvdXQuIFRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWRlcHRuZXNzIG9mIG91ciBleHBlcnRzLCB3ZSBtZXRpY3Vsb3VzbHkgbmF2aWdhdGUgaW52ZXN0bWVudCBhcmVuYXMsIGVuc3VyaW5nIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIGF2ZW51ZSBpcyBjaG9zZW4gcHJ1ZGVudGx5IGFuZCBhbGlnbmVkIHdpdGggb3VyIHN0cmluZ2VudCBxdWFsaXR5IGNyaXRlcmlhLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNob29zZV9fdGFiIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBuYXYtdGFicyIgaWQ9Im15VGFiIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJuYXYtaXRlbSIgcm9sZT0icHJlc2VudGF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1saW5rIGFjdGl2ZSIgaWQ9ImdvYWwtdGFiIiBkYXRhLWJzLXRvZ2dsZT0idGFiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYnMtdGFyZ2V0PSIjZ29hbC10YWItcGFuZSIgdHlwZT0iYnV0dG9uIiByb2xlPSJ0YWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz0iZ29hbC10YWItcGFuZSIgYXJpYS1zZWxlY3RlZD0idHJ1ZSI+Rm9jdXMgT24gR29hbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiIGlkPSJteVRhYkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZSBmYWRlIHNob3cgYWN0aXZlIiBpZD0iZ29hbC10YWItcGFuZSIgcm9sZT0idGFicGFuZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9ImdvYWwtdGFiIiB0YWJpbmRleD0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjaG9vc2VfX3RhYi1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5DaG9vc2UgdXMgZm9yIGEgaG9saXN0aWMgYXBwcm9hY2ggdG8gZmluYW5jaWFsIHN1Y2Nlc3MsIHdpdGggdW53YXZlcmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRtZW50IGFuZCBpbnRlZ3JpdHkgYXQgZXZlcnkgc3RlcC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXdyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhcyBmYS1jaGVjayI+PC9pPlRyYW5zcGFyZW5jeTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmFzIGZhLWNoZWNrIj48L2k+U3VzdGFpbmFiaWxpdHk8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhcyBmYS1jaGVjayI+PC9pPlJpc2sgQW5hbHlzaXM8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhcyBmYS1jaGVjayI+PC9pPkNlcnRpZmllZCBDb21wYW55PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcGVyYXRpbmdfX2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZ2xvYmUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+U2N1bHB0aW5nIFlvdXIgRmluYW5jaWFsIFN1Y2Nlc3MgSm91cm5leTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hvb3NlX19zaGFwZS13cmFwLXR3byI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2gyX2Nob29zZV9zaGFwZTAxLnBuZyIgYWx0PSIiCiAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJhbGxheD0neyJ4IiA6IC04MCAsICJ5IiA6IDgwICwgInJvdGF0ZVoiOjgwfSc+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2gyX2Nob29zZV9zaGFwZTAyLnBuZyIgYWx0PSIiIGRhdGEtYW9zPSJmYWRlLWxlZnQiIGRhdGEtYW9zLWRlbGF5PSI0MDAiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPCEtLSBjaG9vc2UtYXJlYS10d28gLS0+CiAgICAgICAgPCEtLSBicmFuZC1hcmVhIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWFyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLWNvbnRhaW5lciBicmFuZC1hY3RpdmUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlci13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwMS5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwMi5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwMy5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwNC5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwNS5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwNi5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJyYW5kLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9icmFuZC9icmFuZF9pbWcwMy5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8IS0tIGJyYW5kLWFyZWEgLS0+CiAgICAgICAgPCEtLSBjb25zdWx0aW5nLWFyZWEgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImNvbnN1bHRpbmctYXJlYSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnN1bHRpbmctaW5uZXItd3JhcCBzaGluZS1hbmltYXRlLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uc3VsdGluZy1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj40MCs8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5GaW5hbmNpYWwgPGJyPiBJbnN0cnVtZW50czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+VHJ1c3RlZCAsIEhhcHB5ICYgU2F0aXNmaWVkIENsaWVudHM8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XZSBBcmUgUmVhZHkgdG8gQnVpbGQgWW91ciBEcmVhbSBUZWxsIFVzIE1vcmUgQWJvdXQgWW91ciBHb2FsczwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uc3VsdGluZy1pbWcgc2hpbmUtYW5pbWF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy9jb25zdWx0aW5nX2ltZy5qcGciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29uc3VsdGluZy1zaGFwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy9jb25zdWx0aW5nX3NoYXBlLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8IS0tIGNvbnN1bHRpbmctYXJlYS1lbmQgLS0+CiAgICAgICAgPCEtLSB0ZXN0aW1vbmlhbC1hcmVhIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0ZXN0aW1vbmlhbC1hcmVhIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYgb3JkZXItMCBvcmRlci1sZy0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLWNvbnRhaW5lciB0ZXN0aW1vbmlhbC1hY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlci1zbGlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+SXNhYmVsbGEgUm9zc2k8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08c3Bhbj5DRU8sIFdlYWx0aCBHcmlkIEFzc2V0cyBBZ2VuY3k8L3NwYW4+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsX19yYXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7igJwgSSB1c2VkIHRvIGZlZWwgb3ZlcndoZWxtZWQgdHJ5aW5nIHRvIG1hbmFnZSBteSBmaW5hbmNlcyBhbmQgbWFrZSB0aGUgcmlnaHQgaW52ZXN0bWVudCBkZWNpc2lvbnMuIFRoZXJlIHdhcyBhbHdheXMgdGhhdCBmZWFyIG9mIG1ha2luZyB0aGUgd3JvbmcgbW92ZS4gQnV0IGV2ZXJ5dGhpbmcgY2hhbmdlZCB3aGVuIEkgc3RhcnRlZCB3b3JraW5nIHdpdGggV2VhbHRoIEdyaWQgQXNzZXRzIEFnZW5jeS7igJ08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiI+PGkgY2xhc3M9ImZhcyBmYS1xdW90ZS1yaWdodCI+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlci1zbGlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+TXIuRGFuaWVsIFNtaXRoPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHNwYW4+Q0VPLCBXZWFsdGggR3JpZCBBc3NldHMgQWdlbmN5PC9zcGFuPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbF9fcmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVzdGltb25pYWwtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+4oCcQmVmb3JlIEkgZm91bmQgV2VhbHRoIEdyaWQgQXNzZXRzIEFnZW5jeSwgSSBzdHJ1Z2dsZWQgdG8gbWFrZSBzZW5zZSBvZiB3aGVyZSBhbmQgaG93IHRvIGdyb3cgbXkgaW52ZXN0bWVudHMuIEV2ZXJ5dGhpbmcgZmVsdCB1bmNlcnRhaW4uIEJ1dCBmcm9tIG15IGZpcnN0IGludGVyYWN0aW9uIHdpdGggdGhlaXIgdGVhbSwgdGhhdCBjaGFuZ2VkIGNvbXBsZXRlbHku4oCdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24iPjxpIGNsYXNzPSJmYXMgZmEtcXVvdGUtcmlnaHQiPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPkFsZXhhbmRyYSBWb2xrb3Y8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08c3Bhbj5DRU8sIFdlYWx0aCBHcmlkIEFzc2V0cyBBZ2VuY3k8L3NwYW4+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsX19yYXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7igJxJ4oCZdmUgd29ya2VkIHdpdGggYSBmZXcgYXNzZXQgbWFuYWdlcnMgYmVmb3JlLCBidXQgbm9uZSBoYXZlIG1hdGNoZWQgdGhlIGxldmVsIG9mIGNsYXJpdHkgYW5kIGNvbnNpc3RlbmN5IEnigJl2ZSBleHBlcmllbmNlZCB3aXRoIFdlYWx0aCBHcmlkIEFzc2V0cyBBZ2VuY3ku4oCdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24iPjxpIGNsYXNzPSJmYXMgZmEtcXVvdGUtcmlnaHQiPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPk1yLlJvYmV5IEFsZXg8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08c3Bhbj5DRU8sIFdlYWx0aCBHcmlkIEFzc2V0cyBBZ2VuY3k8L3NwYW4+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsX19yYXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7igJwgV2VhbHRoIEdyaWQgQXNzZXRzIEFnZW5jeSBoYXMgYmVlbiBhIGdhbWUtY2hhbmdlciBmb3IgbXkgZmluYW5jaWFsIGdyb3d0aC4gVGhlaXIgdGVhbSBjb21iaW5lcyBkZWVwIG1hcmtldCBpbnNpZ2h0IHdpdGggYSBnZW51aW5lIGNvbW1pdG1lbnQgdG8gY2xpZW50IHN1Y2Nlc3MuIEZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLCBJIGZlbHQgZ3VpZGVkLCBpbmZvcm1lZCwgYW5kIGNvbmZpZGVudCBpbiBldmVyeSBkZWNpc2lvbi7igJ08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiI+PGkgY2xhc3M9ImZhcyBmYS1xdW90ZS1yaWdodCI+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1zbGlkZXItZG90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlciB0ZXN0aW1vbmlhbC1uYXYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlci13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+PGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy90ZXN0aV9hdmF0YXIwMS5wbmciIGFsdD0iIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN3aXBlci1zbGlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uPjxpbWcgc3JjPSJhc3NldHMxL2ltZy9pbWFnZXMvdGVzdGlfYXZhdGFyMDIucG5nIiBhbHQ9IiI+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzd2lwZXItc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbj48aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL3Rlc3RpX2F2YXRhcjAzLnBuZyIgYWx0PSIiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3dpcGVyLXNsaWRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24+PGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy90ZXN0aV9hdmF0YXIwNC5wbmciIGFsdD0iIj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYgY29sLW1kLTgiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0aW1vbmlhbC1pbWctd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL3Rlc3RpbW9uaWFsX2ltZy5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1zaGFwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy90ZXN0aW1vbmlhbF9zaGFwZTAxLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pbWFnZXMvdGVzdGltb25pYWxfc2hhcGUwMi5wbmciIGFsdD0iIiBjbGFzcz0iYWxsdHVjaHRvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pbWFnZXMvdGVzdGltb25pYWxfc2hhcGUwMy5wbmciIGFsdD0iIiBkYXRhLXBhcmFsbGF4PSd7InkiIDogODAgfSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy90ZXN0aW1vbmlhbF9zaGFwZTA0LnBuZyIgYWx0PSIiIGNsYXNzPSJyaWdodFRvTGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlc3RpbW9uaWFsLXNoYXBlLXdyYXAiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0czEvaW1nL2ltYWdlcy90ZXN0aW1vbmlhbF9zaGFwZTA1LnBuZyIgYWx0PSIiIGRhdGEtYW9zPSJmYWRlLXVwIiBkYXRhLWFvcy1kZWxheT0iNDAwIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMxL2ltZy9pbWFnZXMvdGVzdGltb25pYWxfc2hhcGUwNi5wbmciIGFsdD0iIiBkYXRhLWFvcz0iZmFkZS1sZWZ0IiBkYXRhLWFvcy1kZWxheT0iNDAwIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwhLS0gdGVzdGltb25pYWwtYXJlYS1lbmQgLS0+CiAgICAgICAgPCEtLSBjYWxsLWJhY2stYXJlYSAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iY2FsbC1iYWNrLWFyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbGctNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGwtYmFjay1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUgd2hpdGUtdGl0bGUgbWItMTAgdGctaGVhZGluZy1zdWJoZWFkaW5nIGFuaW1hdGlvbi1zdHlsZTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUgdGctZWxlbWVudC10aXRsZSI+UmVxdWVzdCBBIENhbGwgQmFjazwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzMS9pbWcvaW1hZ2VzL2NhbGxfYmFja19zaGFwZS5wbmciIGFsdD0iIiBkYXRhLWFvcz0iZmFkZS1yaWdodCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hb3MtZGVsYXk9IjQwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxsLWJhY2stZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiMiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1faWQiIHZhbHVlPSIxNzg1MTU5NDY0OTk1MSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9ybV90b2tlbiIgdmFsdWU9IjJiMmJhMWZiMmE3YjhhODQ5MzAzZmMyOGI2OTQ0Mjg0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdycCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJOYW1lICoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdycCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iRS1tYWlsICoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdycCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGxhY2Vob2xkZXI9IlBob25lICoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biI+U2VuZCBOb3c8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8IS0tIGNhbGwtYmFjay1hcmVhLWVuZCAtLT4KICAgIDwvbWFpbj4KICAgIAogICAgCiA8Zm9vdGVyPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl9fYXJlYS10d28iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfX3RvcC10d28iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteGwtNCBjb2wtbGctNSBjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItd2lkZ2V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfX2NvbnRlbnQtdHdvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZnctbG9nbyBtYi0yNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSdpbmRleC5waHAnPjxpbWcgc3JjPSJhc3NldHMxL2ltZy9sb2dvL3dfbG9nby5wbmciIGFsdD0iIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaHJvdWdoIHRoZSB1dGlsaXphdGlvbiBvZiB0aGVzZSBhdHRyaWJ1dGVzLCBvdXIgaW52ZXN0bWVudCBwbGF0Zm9ybSBpcyBkZXNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZW5hYmxlIHlvdSB0byBpbmNyZWFzZSB5b3VyIGluY29tZSBhbmQgcmVhbGl6ZSB5b3VyIGZpbmFuY2lhbCBnb2Fscy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1pbmZvLWxpc3QgZm9vdGVyLWluZm8tdHdvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14bC0yIGNvbC1sZy0zIGNvbC1zbS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci13aWRnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0iZnctdGl0bGUiPlF1aWNrIExpbmtzPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGluay1saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXdyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9J2luZGV4LnBocCc+SG9tZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Jy8/YT1jdXN0JnBhZ2U9YWJvdXQnPkFib3V0IHVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0nLz9hPWZhcSc+RkFRczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Jy8/YT1zdXBwb3J0Jz5Db250YWN0IFVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14bC0zIGNvbC1sZy00IGNvbC1zbS02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci13aWRnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0iZnctdGl0bGUiPkVtYWlsPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItaW5mby1saXN0IGZvb3Rlci1pbmZvLXR3byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC13cmFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ibWFpbHRvOgpzdXBwb3J0QHdlYWx0aGdyaWRhc3NldC5jb20iPnN1cHBvcnRAd2VhbHRoZ3JpZGFzc2V0LmNvbTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteGwtMyBjb2wtbGctNCBjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItd2lkZ2V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9ImZ3LXRpdGxlIj5PZmZpY2UgQWRkcmVzczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWluZm8tbGlzdCBmb290ZXItaW5mby10d28iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmbGF0aWNvbi1waW4iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+MSBEZXJ3ZW50IEJ1c2luZXNzIENlbnRyZSwgQ2xhcmtlIFN0cmVldCwgRGVyYnksIEVuZ2xhbmQsIERFMSAyQlUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX19ib3R0b20tdHdvIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLWxnLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvcHlyaWdodC10ZXh0LXR3byI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IMKpIDxhIGhyZWY9J2hvbWUtMi5odG1sJz5XZWFsdGggR3JpZCBBc3NldHM8L2E+IHwgQWxsIFJpZ2h0IFJlc2VydmVkPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9mb290ZXI+CiAgICA8IS0tIGZvb3Rlci1hcmVhLWVuZCAtLT4KICAgIDwhLS0gSlMgaGVyZSAtLT4KICAgIDxzY3JpcHQgZGF0YS1jZmFzeW5jPSJmYWxzZSIgc3JjPSJjZG4tY2dpL3NjcmlwdHMvNWM1ZGQ3MjgvY2xvdWRmbGFyZS1zdGF0aWMvZW1haWwtZGVjb2RlLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy92ZW5kb3IvanF1ZXJ5LTMuNi4wLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy9qcXVlcnkubWFnbmlmaWMtcG9wdXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMxL2pzL2pxdWVyeS5vZG9tZXRlci5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0czEvanMvanF1ZXJ5LmFwcGVhci5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy9nc2FwLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMxL2pzL1Njcm9sbFRyaWdnZXIuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0czEvanMvU3BsaXRUZXh0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMxL2pzL2dzYXAtYW5pbWF0aW9uLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMxL2pzL2pxdWVyeS5wYXJhbGxheFNjcm9sbC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0czEvanMvc3dpcGVyLWJ1bmRsZS5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy9hamF4LWZvcm0uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0czEvanMvd293Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzMS9qcy9hb3MuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0czEvanMvbWFpbi5qcyI+PC9zY3JpcHQ+CgogICAKICAgCiAgIAogICAgPCEtLSBHVHJhbnNsYXRlIFdyYXBwZXIgLS0+CjxkaXYgY2xhc3M9Imd0cmFuc2xhdGVfd3JhcHBlciI+PC9kaXY+Cgo8IS0tIEdUcmFuc2xhdGUgQ29uZmlndXJhdGlvbiAtLT4KPHNjcmlwdD4KICAgIHdpbmRvdy5ndHJhbnNsYXRlU2V0dGluZ3MgPSB7CiAgICAgICAgZGVmYXVsdF9sYW5ndWFnZTogImVuIiwKICAgICAgICB3cmFwcGVyX3NlbGVjdG9yOiAiLmd0cmFuc2xhdGVfd3JhcHBlciIsCiAgICAgICAgc3dpdGNoZXJfdHlwZTogImZsb2F0IiwKICAgICAgICBmbG9hdF9wb3NpdGlvbjogInJpZ2h0IiwKICAgICAgICBmbG9hdF9zd2l0Y2hlcl9vcGVuX2RpcmVjdGlvbjogImF1dG8iLAogICAgICAgIGFsdF9mbGFnczogeyAiZW4iOiAidXNhIiB9LAogICAgICAgIGxhbmd1YWdlczogWwoiYWYiLCJzcSIsImFtIiwiYXIiLCJoeSIsImF6IiwiZXUiLCJiZSIsImJuIiwiYnMiLCJiZyIsImNhIiwiY2ViIiwibnkiLAoiemgtQ04iLCJ6aC1UVyIsImNvIiwiaHIiLCJjcyIsImRhIiwibmwiLCJlbiIsImVvIiwiZXQiLCJ0bCIsImZpIiwiZnIiLAoiZnkiLCJnbCIsImthIiwiZGUiLCJlbCIsImd1IiwiaHQiLCJoYSIsImhhdyIsIml3IiwiaGkiLCJobW4iLCJodSIsImlzIiwKImlnIiwiaWQiLCJnYSIsIml0IiwiamEiLCJqdyIsImtuIiwia2siLCJrbSIsImtvIiwia3UiLCJreSIsImxvIiwibGEiLAoibHYiLCJsdCIsImxiIiwibWsiLCJtZyIsIm1zIiwibWwiLCJtdCIsIm1pIiwibXIiLCJtbiIsIm15IiwibmUiLCJubyIsCiJwcyIsImZhIiwicGwiLCJwdCIsInBhIiwicm8iLCJydSIsInNtIiwiZ2QiLCJzciIsInN0Iiwic24iLCJzZCIsInNpIiwKInNrIiwic2wiLCJzbyIsImVzIiwic3UiLCJzdyIsInN2IiwidGciLCJ0YSIsInRlIiwidGgiLCJ0ciIsInVrIiwidXIiLAoidXoiLCJ2aSIsImN5IiwieGgiLCJ5aSIsInlvIiwienUiCl0KICAgIH07Cjwvc2NyaXB0PgoKPCEtLSBMb2FkIEdUcmFuc2xhdGUgU2NyaXB0IC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uZ3RyYW5zbGF0ZS5uZXQvd2lkZ2V0cy9sYXRlc3QvZmxvYXQuanMiIGRlZmVyPjwvc2NyaXB0PgoKICAgIAogICAgCiAgICAKICAgIAogICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9kYXNoMi9qcy9saWIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9kYXNoMi9qcy9saWIvbW9tZW50Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9kYXNoMi9qcy9saWIvanF1ZXJ5LmRhdGVyYW5nZXBpY2tlci5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90ZW1wbGF0ZXMvYmFzaWMvZGFzaDIvanMvbGliL3Rvb2x0aXBzdGVyLmJ1bmRsZS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90ZW1wbGF0ZXMvYmFzaWMvZGFzaDIvanMvbGliL2FwZXhjaGFydHMubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdGVtcGxhdGVzL2Jhc2ljL2Rhc2gyL2pzL2xpYi9zY3JvbGwtbG9jay5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImFzc2V0cy90ZW1wbGF0ZXMvYmFzaWMvZGFzaDIvanMvbGliL3N3aXBlci1idW5kbGUubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9ImFzc2V0cy90ZW1wbGF0ZXMvYmFzaWMvZGFzaDIvanMvbGliL2pxdWVyeS5tYWduaWZpYy1wb3B1cC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9kYXNoMi9qcy9jaGFydHMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9kYXNoMi9qcy9kZW1vLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9ImFzc2V0cy90ZW1wbGF0ZXMvYmFzaWMvZGFzaDIvanMvYXBwLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0zLjQuMS5taW4uanMiPjwvc2NyaXB0PgoKIDwhLS0tIFN2Z3MgLS0tLT4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjxzdmcgd2lkdGg9IjAiIGhlaWdodD0iMCI+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLWFycm93LWRvd24iPgo8cGF0aCBkPSJNMy41NSA3LjkyYS43NS43NSAwIDAgMSAuOTc3LS4wNzNsLjA4NC4wNzMgNi41MiA2LjUyYy40NDUuNDQ1IDEuMTU5LjQ3NSAxLjY0LjA4OWwuMDk5LS4wODkgNi41Mi02LjUyYS43NS43NSAwIDAgMSAxLjEzMy45NzdsLS4wNzMuMDg0LTYuNTIgNi41MmMtMS4wMTkgMS4wMTktMi42NTQgMS4wNjEtMy43MjQuMTI3bC0uMTM2LS4xMjctNi41Mi02LjUyYS43NS43NSAwIDAgMSAwLTEuMDYxeiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tYXJyb3ctbGVmdCI+CjxwYXRoIGQ9Ik0xMC4xIDUuNGEuNzUuNzUgMCAwIDEgLjA3My45NzdsLS4wNzMuMDg0LTQuNzg5IDQuNzlIMjAuNWEuNzUuNzUgMCAwIDEgLjEwMiAxLjQ5M2wtLjEwMi4wMDdINS4zMTFsNC43ODkgNC43OWEuNzUuNzUgMCAwIDEgLjA3My45NzdsLS4wNzMuMDg0YS43NS43NSAwIDAgMS0uOTc3LjA3M0w5LjA0IDE4LjZsLTYuMDctNi4wN2EuNzUuNzUgMCAwIDEtLjA3My0uOTc3bC4wNzMtLjA4NEw5LjA0IDUuNGEuNzUuNzUgMCAwIDEgMS4wNjEgMHoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLWFycm93LW5leHQiPgo8cGF0aCBkPSJNOS4wOTYgMjAuNTU2YS45LjkgMCAwIDEtMS4zNi0xLjE3MmwuMDg3LS4xMDEgNi41Mi02LjUyYy4zODQtLjM4NC40MTYtLjk5Ni4wOTYtMS40MTdsLS4wOTYtLjExLTYuNTItNi41MmEuOS45IDAgMCAxIDEuMTcyLTEuMzZsLjEwMS4wODcgNi41MiA2LjUyYzEuMDcgMS4wNzEgMS4xMTkgMi43ODYuMTQ2IDMuOTE2bC0uMTQ2LjE1Ny02LjUyIDYuNTJ6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1hcnJvdy1wcmV2Ij4KPHBhdGggZD0iTTE0LjkyMSAzLjQ0NGEuOS45IDAgMCAxIDEuMzYgMS4xNzJsLS4wODcuMTAxLTYuNTIgNi41MmMtLjM4NC4zODQtLjQxNi45OTYtLjA5NiAxLjQxN2wuMDk2LjExIDYuNTIgNi41MmEuOS45IDAgMCAxLTEuMTcyIDEuMzZsLS4xMDEtLjA4Ny02LjUyLTYuNTJjLTEuMDctMS4wNzEtMS4xMTktMi43ODYtLjE0Ni0zLjkxNmwuMTQ2LS4xNTcgNi41Mi02LjUyeiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tYXJyb3ctc3dhcCI+CjxwYXRoIGQ9Ik04LjMwMSAyMS4yMTRsLTUuMDItNS4wMWExIDEgMCAwIDEgMS4zMDEtMS41MTJsLjExMi4wOTcgMy4zMTQgMy4zMDYuMDAxLTE0LjU4OGExIDEgMCAwIDEgMS45OTEtLjEzNmwuMDA5LjEzNnYxN2wtLjAwMi4wNC0uMDAyLjAzMi4wMDMtLjA3MmMwIC4xODItLjA0OS4zNTMtLjEzNC41LS4xMTIuMTg2LS4yNjUuMzI0LS40NDguNDA5bC0uMDI4LjAxMmEuOC44IDAgMCAxLS4wODUuMDMybC0uMTA0LjAyNy0uMDQuMDA3YS43NS43NSAwIDAgMS0uMDc0LjAxbC0uMDQuMDAyLS4wNDcuMDAyLS4wMzQtLjAwMS0uMDMxLS4wMDIuMDY1LjAwMmExLjAxIDEuMDEgMCAwIDEtLjE0OC0uMDExbC0uMDM3LS4wMDYtLjA3Mi0uMDE2LS4wNDUtLjAxMy0uMDYtLjAyMS0uMDU2LS4wMjQtLjA0Ny0uMDIzLS4wNDYtLjAyNi0uMDU2LS4wMzYtLjAzLS4wMjEtLjAxMy0uMDFjLS4wMzItLjAyNS0uMDYzLS4wNTEtLjA5Mi0uMDhsLS4wMDctLjAwN3ptNi42ODYtMTguNzA3aC4wMjNsLjA0OC4wMDItLjA3Mi0uMDAzYTEuMDEgMS4wMSAwIDAgMSAuMTQ5LjAxMWwuMDMxLjAwNS4wNzkuMDE4LjAzNi4wMS4wNzEuMDI1LjA0Ny4wMi4wNDYuMDIzLjA1Mi4wMjkuMDU1LjAzNS4wMjguMDIuMDEzLjAxYy4wMzMuMDI1LjA2NC4wNTIuMDkzLjA4MWwuMDA2LjAwNiA1LjAyIDUuMDFhMSAxIDAgMCAxLTEuMzAxIDEuNTEybC0uMTEyLS4wOTctMy4zMTQtMy4zMDd2MTQuNTg5YTEgMSAwIDAgMS0xLjk5MS4xMzZsLS4wMDktLjEzNnYtMTctLjAxOGwuMDA0LS4wNy0uMDA0LjA4OGExLjAxIDEuMDEgMCAwIDEgLjAxMS0uMTUxbC4wMDgtLjA0Ny4wMTctLjA3My4wMTEtLjAzNi4wMjQtLjA2Ni4wMjItLjA1LjAyNi0uMDUyLjAyNy0uMDQ4LjA0OC0uMDcuMDE4LS4wMjNhMS4wMSAxLjAxIDAgMCAxIC4xNjktLjE2OWwtLjA4OS4wNzljLjAzOC0uMDM4LjA3OC0uMDcyLjEyLS4xMDNsLjA2Mi0uMDQyLjA0NC0uMDI2LjA1Ny0uMDI5LjA0OC0uMDIxLjA1Ny0uMDIxLjA1Ni0uMDE3LjA1Ny0uMDE0LjA0OS0uMDA5LjA2Ni0uMDA4LjA1OS0uMDA0LjAzMy0uMDAxeiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tYXJyb3ctdGhpY2stZG93biI+CjxwYXRoIGQ9Ik0xMi4wMDIgMi4yMTFjLjY1MSAwIDEuMTg5LjQ4NCAxLjI3NCAxLjExMWwuMDEyLjE3NC0uMDAxIDEzLjg5NiAzLjg3Ni0zLjg3NWMuNDU2LS40NTYgMS4xNzEtLjQ5OCAxLjY3NC0uMTI0bC4xNDQuMTI0Yy40NTYuNDU2LjQ5OCAxLjE3MS4xMjQgMS42NzRsLS4xMjQuMTQ0LTYuMDcgNi4wN2MtLjQ1Ni40NTYtMS4xNzEuNDk4LTEuNjc0LjEyNGwtLjE0NC0uMTI0LTYuMDctNi4wN2MtLjUwMi0uNTAyLS41MDItMS4zMTYgMC0xLjgxOC40NTYtLjQ1NiAxLjE3MS0uNDk4IDEuNjc0LS4xMjRsLjE0NC4xMjQgMy44NzUgMy44NzRWMy40OTdjMC0uNzEuNTc2LTEuMjg2IDEuMjg2LTEuMjg2eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tYXJyb3ctdGhpY2stcmlnaHQiPgo8cGF0aCBkPSJNMTUuMTkyIDQuODk4bC4xNDQuMTI0IDYuMDcgNi4wN2MuNDU2LjQ1Ni40OTggMS4xNzEuMTI0IDEuNjc0bC0uMTI0LjE0NC02LjA3IDYuMDdjLS41MDIuNTAyLTEuMzE2LjUwMi0xLjgxOCAwLS40NTYtLjQ1Ni0uNDk4LTEuMTcxLS4xMjUtMS42NzRsLjEyNC0uMTQ0IDMuODc1LTMuODc2LTEzLjg5Ni4wMDFjLS43MSAwLTEuMjg2LS41NzYtMS4yODYtMS4yODYgMC0uNjUxLjQ4NC0xLjE4OSAxLjExMS0xLjI3NGwuMTc0LS4wMTJoMTMuODk1bC0zLjg3NC0zLjg3NWMtLjQ1Ni0uNDU2LS40OTgtMS4xNzEtLjEyNC0xLjY3NGwuMTI0LS4xNDRjLjQ1Ni0uNDU2IDEuMTcxLS40OTggMS42NzQtLjEyNHoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLWJ1cmdlciI+CjxwYXRoIGQ9Ik0yMSA2LjE3NWEuODIuODIgMCAwIDEgLjgxOC44MTguODIuODIgMCAwIDEtLjcwNy44MTFMMjEgNy44MTFIM2EuODIuODIgMCAwIDEtLjgxOC0uODE4LjgyLjgyIDAgMCAxIC43MDctLjgxMUwzIDYuMTc1aDE4em0wIDVhLjgyLjgyIDAgMCAxIC44MTguODE4LjgyLjgyIDAgMCAxLS43MDcuODExbC0uMTExLjAwN0gzYS44Mi44MiAwIDAgMS0uODE4LS44MTguODIuODIgMCAwIDEgLjcwNy0uODExTDMgMTEuMTc1aDE4em0wIDVhLjgyLjgyIDAgMCAxIC44MTguODE4LjgyLjgyIDAgMCAxLS43MDcuODExbC0uMTExLjAwN0gzYS44Mi44MiAwIDAgMS0uODE4LS44MTguODIuODIgMCAwIDEgLjcwNy0uODExTDMgMTYuMTc1aDE4eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tY2FsZW5kYXIiPgo8cGF0aCBkPSJNMTYgMS4yNWEuNzUuNzUgMCAwIDEgLjc0My42NDhMMTYuNzUgMmwuMDAxLjc4MWMzLjE4My4yNjcgNC45MTEgMi4yNjkgNC45OTYgNS40NzFsLjAwMy4yNDhWMTdjMCAzLjUxMS0xLjkwOSA1LjY0OS01LjQ5MSA1Ljc0N0wxNiAyMi43NUg4Yy0zLjY2MSAwLTUuNjU2LTIuMDU2LTUuNzQ3LTUuNTAyTDIuMjUgMTdWOC41YzAtMy4zNDcgMS43MzUtNS40NDYgNS01LjcyVjJhLjc1Ljc1IDAgMCAxIDEuNDkzLS4xMDJMOC43NSAydi43NWg2LjVWMmEuNzUuNzUgMCAwIDEgLjc1LS43NXptNC4yNSA4LjU4OUgzLjc1VjE3YzAgMi43MDggMS4yNzcgNC4xNjMgMy45OTkgNC4yNDZMOCAyMS4yNWg4YzIuODA5IDAgNC4xNjktMS4zNzUgNC4yNDYtNC4wMDdMMjAuMjUgMTdWOS44Mzl6TTE1LjcwNCAxNS43YTEgMSAwIDAgMSAuMTE3IDEuOTkzbC0uMTE3LjAwN2MtLjU2MSAwLTEuMDA5LS40NDgtMS4wMDktMWExIDEgMCAwIDEgLjg4My0uOTkzbC4xMjYtLjAwN3ptLTMuNjk5IDBhMSAxIDAgMCAxIC4xMTcgMS45OTNsLS4xMTcuMDA3Yy0uNTYxIDAtMS4wMDktLjQ0OC0xLjAwOS0xYTEgMSAwIDAgMSAuODgzLS45OTNsLjEyNi0uMDA3em0tMy43MDEgMGExIDEgMCAwIDEgLjExNyAxLjk5M2wtLjExNy4wMDdjLS41NjEgMC0xLjAwOS0uNDQ4LTEuMDA5LTFhMSAxIDAgMCAxIC44ODMtLjk5M2wuMTI2LS4wMDd6bTcuNC0zYTEgMSAwIDAgMSAuMTE3IDEuOTkzbC0uMTE3LjAwN2MtLjU2MSAwLTEuMDA5LS40NDgtMS4wMDktMWExIDEgMCAwIDEgLjg4My0uOTkzbC4xMjYtLjAwN3ptLTMuNjk5IDBhMSAxIDAgMCAxIC4xMTcgMS45OTNsLS4xMTcuMDA3Yy0uNTYxIDAtMS4wMDktLjQ0OC0xLjAwOS0xYTEgMSAwIDAgMSAuODgzLS45OTNsLjEyNi0uMDA3em0tMy43MDEgMGExIDEgMCAwIDEgLjExNyAxLjk5M2wtLjExNy4wMDdjLS41NjEgMC0xLjAwOS0uNDQ4LTEuMDA5LTFhMSAxIDAgMCAxIC44ODMtLjk5M2wuMTI2LS4wMDd6bTYuOTQ3LTguNDVoLTYuNVY1YS43NS43NSAwIDAgMS0xLjQ5My4xMDJMNy4yNSA1di0uNzE0Yy0yLjMwMy4yMzItMy40MjcgMS41ODYtMy40OTcgMy45NzJsLS4wMDIuMDgxaDE2LjQ5NWwtLjAwMS0uMDgyYy0uMDctMi4zODYtMS4xOTQtMy43MzktMy40OTYtMy45NzFMMTYuNzUgNWEuNzUuNzUgMCAwIDEtMS40OTMuMTAyTDE1LjI1IDV2LS43NXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLWNoZWNrLWNpcmNsZSI+CjxwYXRoIGQ9Ik0xMiAyQTEwLjAyIDEwLjAyIDAgMCAwIDIgMTJhMTAuMDIgMTAuMDIgMCAwIDAgMTAgMTAgMTAuMDIgMTAuMDIgMCAwIDAgMTAtMTBBMTAuMDIgMTAuMDIgMCAwIDAgMTIgMnptNC43OCA3LjdsLTUuNjcgNS42N2EuNzUuNzUgMCAwIDEtMS4wNiAwbC0yLjgzLTIuODNjLS4yOS0uMjktLjI5LS43NyAwLTEuMDZzLjc3LS4yOSAxLjA2IDBsMi4zIDIuMyA1LjE0LTUuMTRjLjI5LS4yOS43Ny0uMjkgMS4wNiAwcy4yOS43NiAwIDEuMDZ6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1jbG9zZSI+CjxwYXRoIGQ9Ik01LjQ0NyA0LjM5N2wuMDg0LjA3M0wxMiAxMC45MzhsNi40NjktNi40NjhhLjc1Ljc1IDAgMCAxIDEuMTMzLjk3N2wtLjA3My4wODQtNi40NjggNi40NjkgNi40NjkgNi40N2EuNzUuNzUgMCAwIDEtLjk3NyAxLjEzM2wtLjA4NC0uMDczTDEyIDEzLjA2bC02LjQ3IDYuNDY5YS43NS43NSAwIDAgMS0xLjEzMy0uOTc3bC4wNzMtLjA4NCA2LjQ2OS02LjQ3TDQuNDcxIDUuNTNhLjc1Ljc1IDAgMCAxIC45NzctMS4xMzN6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1kb2xsYXItY2lyY2xlIj4KPHBhdGggZD0iTTEyIDEuMjVjNS45MzcgMCAxMC43NSA0LjgxMyAxMC43NSAxMC43NVMxNy45MzcgMjIuNzUgMTIgMjIuNzUgMS4yNSAxNy45MzcgMS4yNSAxMiA2LjA2MyAxLjI1IDEyIDEuMjV6bTAgMS41YTkuMjUgOS4yNSAwIDEgMCAwIDE4LjUgOS4yNSA5LjI1IDAgMSAwIDAtMTguNXptMCAyLjVhLjc1Ljc1IDAgMCAxIC43NDMuNjQ4TDEyLjc1IDZ2LjU4OWwuMzcyLjAwMWMxLjY1MiAwIDIuOTcgMS4zODMgMi45NyAzLjA4YS43NS43NSAwIDEgMS0xLjUgMGMwLS44MzUtLjU5MS0xLjUwMi0xLjMzNy0xLjU3NGwtLjEzMy0uMDA2LS4zNzItLjAwMXYzLjM3NWwxLjUyMi41MjljMS4yMS40MjkgMS44MTkgMS4yMDYgMS44MTkgMi42MzcgMCAxLjQ3LTEuMTExIDIuNjg3LTIuNTI1IDIuNzc1bC0uMTY1LjAwNS0uNjUyLS4wMDFWMThhLjc1Ljc1IDAgMCAxLTEuNDkzLjEwMkwxMS4yNSAxOHYtLjU5MWwtLjM1OC4wMDFjLTEuNjUyIDAtMi45Ny0xLjM4My0yLjk3LTMuMDhhLjc1Ljc1IDAgMCAxIDEuNDkzLS4xMDJsLjAwNy4xMDJjMCAuODM1LjU5MSAxLjUwMiAxLjMzNyAxLjU3NGwuMTMzLjAwNi4zNTgtLjAwMVYxMi41M2wtMS41MDktLjUyM2MtMS4yMS0uNDI5LTEuODE5LTEuMjA2LTEuODE5LTIuNjM3IDAtMS40NyAxLjExMS0yLjY4NyAyLjUyNS0yLjc3NWwuMTY1LS4wMDUuNjM4LS4wMDFWNmEuNzUuNzUgMCAwIDEgLjc1LS43NXptLjc1IDcuODAydjIuODU3bC42NTIuMDAxYy42NDggMCAxLjE5LS41NjcgMS4xOS0xLjI4cy0uMTYtLjk2NC0uNjk1LTEuMTc2bC0uMTIxLS4wNDUtMS4wMjYtLjM1NnptLTEuNS00Ljk2M2wtLjYzOC4wMDFjLS42NDggMC0xLjE5LjU2Ny0xLjE5IDEuMjhzLjE2Ljk2NC42OTUgMS4xNzZsLjEyMS4wNDUgMS4wMTIuMzUyVjguMDg5eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tZHJvcCI+CjxwYXRoIGQ9Ik0xOC43NCA5LjA1Yy44MiAxLjUxIDEuMzcgMy4xNSAxLjM2IDQuODYgMCA0LjQ2LTMuNjMgOC4wOS04LjEgOC4wOWE4LjA2IDguMDYgMCAwIDEtNC44MS0xLjU4Yy0uNDktLjM2LS41My0xLjA4LS4xLTEuNTFMMTcuMTYgOC44NGMuNDctLjQ3IDEuMjYtLjM3IDEuNTguMjF6bS03LjM1OC02Ljg0MWExLjAxIDEuMDEgMCAwIDEgMS4wNjktLjEwMWgwbC4wNDEuMDI0LjExNC4wNzVBMjYuNjcgMjYuNjcgMCAwIDEgMTYuNjQgNi4wNGMuMzQxLjQwMS4zMTkgMS4wMDEtLjA1IDEuMzdoMEw2LjMxIDE3LjY5Yy0uNDM5LjQzOS0xLjE1LjM4NS0xLjUyNi0uMTI4aDBsLS4wNjEtLjEwNEE4LjEzIDguMTMgMCAwIDEgMy45IDEzLjloMGwuMDA1LS4zMjNjLjA4My0yLjM2NiAxLjE3My00LjczOCAzLjAxNS03LjA0OSAxLjM0My0xLjY4NSAyLjkxNi0zLjE0IDQuNDYxLTQuMzJ6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1leWUiPgo8cGF0aCBkPSJNMTEuOTk1IDIuOThjMy43ODcgMCA3LjMxMiAyLjIwNiA5Ljc0MiA2LjAyNiAxLjA1NyAxLjY1NiAxLjA1NyA0LjM0MS4wMDEgNS45OTYtMi40MzEgMy44MjItNS45NTUgNi4wMjctOS43NDMgNi4wMjdzLTcuMzEyLTIuMjA2LTkuNzQyLTYuMDI2Yy0xLjA1Ny0xLjY1Ni0xLjA1Ny00LjM0MS0uMDAxLTUuOTk2QzQuNjgzIDUuMTg2IDguMjA4IDIuOTggMTEuOTk1IDIuOTh6bTAgMS41Yy0zLjIzOSAwLTYuMzA2IDEuOTE5LTguNDc4IDUuMzM0LS43NDMgMS4xNjQtLjc0MyAzLjIxOS4wMDEgNC4zODQgMi4xNzEgMy40MTMgNS4yMzggNS4zMzMgOC40NzcgNS4zMzNzNi4zMDYtMS45MTkgOC40NzgtNS4zMzRjLjc0My0xLjE2NC43NDMtMy4yMTktLjAwMS00LjM4NC0yLjE3MS0zLjQxMy01LjIzOC01LjMzMy04LjQ3Ny01LjMzM3ptMCAzLjJjMi4zOTQgMCA0LjMzIDEuOTM2IDQuMzMgNC4zM3MtMS45MzYgNC4zMy00LjMzIDQuMzMtNC4zMy0xLjkzNi00LjMzLTQuMzMgMS45MzYtNC4zMyA0LjMzLTQuMzN6bTAgMS41Yy0xLjU2NiAwLTIuODMgMS4yNjQtMi44MyAyLjgzczEuMjY0IDIuODMgMi44MyAyLjgzIDIuODMtMS4yNjQgMi44My0yLjgzLTEuMjY0LTIuODMtMi44My0yLjgzeiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tZXllLWZpbGwiPgo8cGF0aCBkPSJNMTEuOTkyIDMuNDMyYzMuNTYgMCA2Ljk0IDIuMDkgOS4yNSA1LjcyIDEgMS41NyAxIDQuMTMgMCA1LjY5LTEuMTYgMS44Mi0yLjU4IDMuMjUtNC4xNiA0LjIzLTEuNTguOTctMy4zMSAxLjQ5LTUuMDkgMS40OS0zLjU2IDAtNi45NC0yLjA4LTkuMjUtNS43Mi0xLTEuNTctMS00LjEyIDAtNS42OSAxLjE2LTEuODIgMi41OC0zLjI1IDQuMTYtNC4yMyAxLjU4LS45NyAzLjMxLTEuNDkgNS4wOS0xLjQ5em0wIDQuNTNjLTIuMjQgMC00LjA0IDEuODEtNC4wNCA0LjA0czEuOCA0LjA0IDQuMDQgNC4wNCA0LjA0LTEuODEgNC4wNC00LjA0LTEuOC00LjA0LTQuMDQtNC4wNHptMCAxLjE3OWMxLjU3IDAgMi44NiAxLjI5IDIuODYgMi44NnMtMS4yOSAyLjg1LTIuODYgMi44NS0yLjg1LTEuMjgtMi44NS0yLjg1YzAtMS41OCAxLjI4LTIuODYgMi44NS0yLjg2eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tZXllLXNsYXNoIj4KPHBhdGggZD0iTTIuNTMgMjIuNTNhLjc1Ljc1IDAgMCAxLTEuMTMzLS45NzdsLjA3My0uMDg0IDMuMzctMy4zNzItLjA4LS4wNzJjLS45MjYtLjg1NS0xLjc3MS0xLjg3NC0yLjUwMi0zLjAyMi0xLjA1Ny0xLjY1Ni0xLjA1Ny00LjM0MS0uMDAxLTUuOTk2QzQuNjg4IDUuMTg2IDguMjEzIDIuOTggMTIgMi45OGMyLjEwNSAwIDQuMTU3LjY4NyA1Ljk4MSAxLjk3OGwzLjQ4OS0zLjQ4OWEuNzUuNzUgMCAwIDEgMS4xMzMuOTc3bC0uMDczLjA4NC0yMCAyMHpNMjAuNjM0IDcuNDZjLjQxMi41MTIuNzgxIDEuMDIxIDEuMTA4IDEuNTM3IDEuMDU3IDEuNjU2IDEuMDU3IDQuMzQxLjAwMSA1Ljk5Ni0yLjQzMSAzLjgyMi01Ljk1NSA2LjAyNy05Ljc0MyA2LjAyNy0xLjMxNCAwLTIuNjIzLS4yNzMtMy44NzEtLjc5OWEuNzUuNzUgMCAwIDEgLjU4Mi0xLjM4MmMxLjA2Ny40NDkgMi4xNzguNjgxIDMuMjg5LjY4MSAzLjIzOSAwIDYuMzA2LTEuOTE5IDguNDc4LTUuMzM0Ljc0My0xLjE2NC43NDMtMy4yMTktLjAwMS00LjM4NS0uMjk3LS40NjctLjYzMy0uOTMxLTEuMDExLTEuNDAyYS43NS43NSAwIDAgMSAxLjE2OS0uOTR6TTEyIDQuNDhjLTMuMjM5IDAtNi4zMDYgMS45MTktOC40NzggNS4zMzQtLjc0MyAxLjE2NC0uNzQzIDMuMjE5IDAgNC4zODQuNjk3IDEuMDkzIDEuNTAyIDIuMDUzIDIuMzggMi44NDFsMi41NTItMi41NTRBNC4zIDQuMyAwIDAgMSA3LjY3IDEyYzAtMi4zOTQgMS45MzYtNC4zMyA0LjMzLTQuMzNhNC4zIDQuMyAwIDAgMSAyLjQ4NC43ODVsMi40MTgtMi40MThDMTUuMzgyIDUuMDE1IDEzLjcwNiA0LjQ4IDEyIDQuNDh6bTMuNTQ1IDcuNDcxbC4xMDEuMDEyYS43NS43NSAwIDAgMSAuNjAyLjg3NGMtLjMxNiAxLjcxNi0xLjcwNiAzLjEwNS0zLjQyMiAzLjQyMmEuNzUuNzUgMCAxIDEtLjI3Mi0xLjQ3NWMxLjEwNC0uMjA0IDIuMDE1LTEuMTE0IDIuMjE4LTIuMjE4YS43NS43NSAwIDAgMSAuNzcyLS42MTN6TTEyIDkuMTdjLTEuNTY2IDAtMi44MyAxLjI2NC0yLjgzIDIuODMgMCAuNDg1LjEyMS45NDguMzQ2IDEuMzU3aDBsLjAyNS4wNCAzLjg1Ni0zLjg1Ni0uMDQtLjAyNWMtLjM1MS0uMTkzLS43NDEtLjMxLTEuMTUtLjMzOWgweiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tZXhwb3J0Ij4KPHBhdGggZD0iTTIwIDExLjI4YS43NS43NSAwIDAgMSAuNzUuNzVjMCA1LjAzNy0zLjUyNyA4Ljc1LTguNzUgOC43NXMtOC43NS0zLjcxMy04Ljc1LTguNzVhLjc1Ljc1IDAgMSAxIDEuNSAwYzAgNC4yMjUgMi44NzMgNy4yNSA3LjI1IDcuMjVzNy4yNS0zLjAyNSA3LjI1LTcuMjVhLjc1Ljc1IDAgMCAxIC43NS0uNzV6bS03LjY3NC03LjkxM2wuMDg0LjA3M0wxNC45NyA2YS43NS43NSAwIDAgMS0uOTc3IDEuMTMzbC0uMDg0LS4wNzMtMS4yOC0xLjI4LjAwMSA4LjQyOWEuNzUuNzUgMCAwIDEtMS40OTMuMTAybC0uMDA3LS4xMDItLjAwMS04LjQyN0w5Ljg1IDcuMDZhLjc1Ljc1IDAgMCAxLS45NzcuMDczbC0uMDg0LS4wNzNhLjc1Ljc1IDAgMCAxLS4wNzMtLjk3N0w4Ljc4OSA2bDIuNTYtMi41NmEuNzUuNzUgMCAwIDEgLjk3Ny0uMDczIj48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1maWx0ZXIiPgo8cGF0aCBkPSJNMTguNiAxLjM1YzEuNTE0IDAgMi43NSAxLjIzNiAyLjc1IDIuNzVoMHYyLjJjMCAuOTU5LS41NDMgMi4xNTQtMS4yNTMgMi44NjJoMGwtNC4zMTcgMy44MTRjLS40MDIuMzM1LS43MyAxLjEwOS0uNzMgMS43MjRoMFYxOWMwIC44NjktLjU0MSAxLjkwOS0xLjI0NCAyLjMzMWgwbC0xLjQxMi45MDhjLTEuODE2IDEuMTE4LTQuMjQzLS4xNy00LjI0My0yLjMzOWgwdi01LjNjMC0uNDY3LS4yOTYtMS4yMDctLjU5NC0xLjU4M2gwbC0zLjkyLTQuMTI4QzMuMDcgOC4yNDQgMi42NSA3LjI1MyAyLjY1IDYuNWgwVjQuMmMwLTEuNTkzIDEuMjE1LTIuODUgMi43NS0yLjg1aDB6bTAgMS41aC03LjI1NGwtNC41MTIgNy4yMyAxLjg1MiAxLjk1MmMuNDk1LjYxOS44OTMgMS41NjIuOTU2IDIuMzU2bC4wMDkuMjEzdjUuM2MwIC45NzYgMS4xMjUgMS41NzMgMS45NDQgMS4wNjloMGwxLjQyLS45MTJjLjI1My0uMTUyLjUzNi0uNjk1LjUzNi0xLjA1N2gwdi00LjNjMC0xLjA0Mi41MDktMi4yNDIgMS4yNTMtMi44NjJoMEwxOS4wNyA4LjA3Yy40MDctLjQwNy43OC0xLjIyOC43OC0xLjc3aDBWNC4xYzAtLjY4Ni0uNTY0LTEuMjUtMS4yNS0xLjI1aDB6bS05LjAyMyAwSDUuNGMtLjY5NSAwLTEuMjUuNTc0LTEuMjUgMS4zNWgwdjIuM2MwIC4zOTcuMzE5IDEuMTA4LjY5NCAxLjQ4M2gwbC45MjMuOTcyIDMuODEtNi4xMDZ6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi1pbmZvLWNpcmNsZSI+CjxwYXRoIGQ9Ik0xMiAxYzYuMDUyIDAgMTEgNC45NDggMTEgMTFzLTQuOTQ4IDExLTExIDExUzEgMTguMDUyIDEgMTIgNS45NDggMSAxMiAxem0wIDJjLTQuOTQ4IDAtOSA0LjA1Mi05IDlzNC4wNTIgOSA5IDkgOS00LjA1MiA5LTktNC4wNTItOS05LTl6bS4wMDQgMTEuNjY3Yy43MzYgMCAxLjMzMy41OTcgMS4zMzMgMS4zMzMgMCAuNjg0LS41MTUgMS4yNDctMS4xNzggMS4zMjRsLS4xNTUuMDA5Yy0uNzQ1IDAtMS4zNDItLjU5Ny0xLjM0Mi0xLjMzMyAwLS42ODQuNTE1LTEuMjQ3IDEuMTc4LTEuMzI0bC4xNjQtLjAwOXpNMTIgN2ExIDEgMCAwIDEgLjk5MS44NjRMMTMgOHY1YTEgMSAwIDAgMS0xLjk5MS4xMzZMMTEgMTNWOGExIDEgMCAwIDEgMS0xeiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tbGlrZSI+CjxwYXRoIGQ9Ik0xNC4wMTggMi4wNDNjMS4yMDcuNDAyIDIuMDA3IDEuNjc4IDEuODM0IDIuODY2bC0uMDMuMTYxLS40OTkgMy4xOWMtLjAyNy4xODkuMDU2LjMxMS4xOTUuMzM4bC4wNjMuMDA2aDRjMS45NTcgMCAzLjIwNCAxLjYxMSAyLjY2OCAzLjQxNWwtMi40NCA3LjQxN2MtLjM2MyAxLjQ1Mi0xLjgzMyAyLjU3NS0zLjMzOSAyLjY2M2wtLjE4OC4wMDVoLTMuOGMtLjgxMiAwLTEuNzQ2LS4yNDktMi4yNDQtLjY1M2wtLjExNS0uMTA0LTIuMjA1LTEuNzA3Yy0uMzY5LjkyMi0xLjIxNiAxLjM2NC0yLjUzNiAxLjM2NGgwLTFjLTEuODMxIDAtMi43NS0uODQ5LTIuNzUtMi42NWgwdi05LjhjMC0xLjgwMS45MTktMi42NSAyLjc1LTIuNjVoMCAxYzEuNDEgMCAyLjI3OS41MDMgMi42MDQgMS41NThsMi45NzItNC40MjNjLjYxNC0uOTIyIDEuOTk0LTEuMzk2IDMuMDYxLS45OTV6TTEyLjI3IDMuNzg4bC0uMDY3LjA4Ni00LjA3MyA2LjA2djcuOTc2bDIuOTgxIDIuMzE1Yy4xNzUuMTc1LjczNC4zNDYgMS4yMjUuMzc2bC4xNDUuMDA1aDMuOGEyLjMgMi4zIDAgMCAwIDIuMDQ0LTEuNDRsLjA0NC0uMTQ1IDIuNDA2LTcuMzE4Yy4zMDUtLjg1NC0uMTQ5LTEuNTMxLTEuMDU1LTEuNTkzbC0uMTM5LS4wMDVoLTRjLTEuMDM2IDAtMS44MzEtLjg1MS0xLjc1Ny0xLjkxOWwuMDE2LS4xNDcuNTA5LTMuMjQ3Yy4xMTQtLjUxNC0uMjYtMS4xNDQtLjgzMS0xLjMzNS0uMzkzLS4xNDctLjk3Mi4wMjgtMS4yNDcuMzMxek01LjM4IDcuNDA1aC0xYy0xLjAyOCAwLTEuMjUuMjA1LTEuMjUgMS4xNWgwbC4wMDIgOS45MzZjLjAyMi44MjkuMjcyIDEuMDE0IDEuMjQ4IDEuMDE0aDBsMS4xNDgtLjAwMmMuOTAxLS4wMjEgMS4xMDItLjI1MSAxLjEwMi0xLjE0OGgwdi05LjhjMC0uOTQ1LS4yMjItMS4xNS0xLjI1LTEuMTVoMHoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLWxpa2UtZmlsbCI+CjxwYXRoIGQ9Ik0xNC4wMTggMi4wNDNjMS4yMDcuNDAyIDIuMDA3IDEuNjc4IDEuODM0IDIuODY2bC0uMDMuMTYxLS40OTkgMy4xOWMtLjAyNy4xODkuMDU2LjMxMS4xOTUuMzM4bC4wNjMuMDA2aDRjMS45NTcgMCAzLjIwNCAxLjYxMSAyLjY2OCAzLjQxNWwtMi40NCA3LjQxN2MtLjM2MyAxLjQ1Mi0xLjgzMyAyLjU3NS0zLjMzOSAyLjY2M2wtLjE4OC4wMDVoLTMuOGMtLjgxMiAwLTEuNzQ2LS4yNDktMi4yNDQtLjY1M2wtLjExNS0uMTA0LTIuMjA1LTEuNzA3Yy0uMzQ3Ljg2OC0xLjExOCAxLjMxMS0yLjMwOCAxLjM2bC0uMjI4LjAwNWgtMWMtMS43NjMgMC0yLjY4MS0uNzg3LTIuNzQ2LTIuNDU0bC0uMDA0LS4xOTZ2LTkuOGMwLTEuNzM1Ljg1My0yLjU4NiAyLjU1LTIuNjQ3bC4yLS4wMDNoMWMxLjQxIDAgMi4yNzkuNTAzIDIuNjA0IDEuNTU4bDIuOTcyLTQuNDIzYy42MTQtLjkyMiAxLjk5NC0xLjM5NiAzLjA2MS0uOTk1eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tbG9nb3V0Ij4KPHBhdGggZD0iTTEwIDNhMSAxIDAgMSAxIDAgMmwtLjY0OS4wMDMtLjU5MS4wMTEtLjM2My4wMTQtLjMzOS4wMjEtLjMxNS4wMjktLjI5My4wMzhjLTEuNDU3LjIyLTIuMDUyLjg0NS0yLjI5MiAyLjU4OGwtLjA0Mi4zNTEtLjAzNC4zODEtLjAyNy40MTEtLjAyMS40NDItLjAyMS43MjQtLjAwOC41MjYtLjAwNi44NTV2MS4yMTJsLjAwNi44NTUuMDA4LjUyNi4wMjEuNzI0LjAyMS40NDIuMDI3LjQxMS4wMzQuMzgxLjA0Mi4zNTFjLjI0IDEuNzQzLjgzNSAyLjM2OCAyLjI5MiAyLjU4OGwuMjkzLjAzOC4zMTUuMDI5LjMzOS4wMjEuMzYzLjAxNC41OTEuMDExTDEwIDE5YTEgMSAwIDEgMSAwIDJsLS41MTktLjAwNC0uNDkzLS4wMTEtLjQ2OC0uMDItLjQ0NC0uMDI5LS4yMTMtLjAxOC0uNDA4LS4wNDVjLTIuNjQ2LS4zMzMtMy43NzItMS40MTEtNC4yMDktNC4yNGwtLjA2LS40MzgtLjAyNy0uMjI5LS4wNDYtLjQ3OC0uMDItLjI1LS4wMzMtLjUyMS0uMDI1LS41NS0uMDE4LS41OC0uMDA2LS4zMDItLjAxLS45NTIuMDAyLS45OTIuMDA4LS42MjcuMDE1LS41OTYuMDIyLS41NjUuMDE0LS4yNzEuMDMzLS41MjEuMDQyLS40OTIuMDUxLS40NjUuMDYtLjQzOGMuNDM3LTIuODI5IDEuNTYzLTMuOTA3IDQuMjA5LTQuMjRsLjQwOC0uMDQ1LjQzMi0uMDM0LjQ1Ni0uMDI0LjQ4LS4wMTYuNTA2LS4wMDdMMTAgM3ptNi42MTMgNC4yMWwuMDk0LjA4MyA0IDRjLjAyOC4wMjguMDU1LjA1OS4wOC4wOWwtLjA4LS4wOWExLjAxIDEuMDEgMCAwIDEgLjA5Ny4xMTJsLjA1LjA3NS4wMjEuMDM3LjAzMi4wNjMuMDE5LjA0My4wMjQuMDY3LjAxNi4wNTQuMDEzLjA1My4wMS4wNTYuMDA3LjA2MS4wMDMuMDU1VjEydi4wMzNsLS4wMDMuMDUyTDIxIDEyYTEuMDEgMS4wMSAwIDAgMS0uMDExLjE0OWwtLjAxLjA1Ni0uMDEyLjA1My0uMDE2LjA1NC0uMDI0LjA2Ni0uMDE5LjA0My0uMDMyLjA2My0uMDIxLjAzNi0uMDUuMDc0LS4wMTMuMDE4LS4wODMuMDk0LTQgNGExIDEgMCAwIDEtMS40OTctMS4zMmwuMDgzLS4wOTRMMTcuNTg1IDEzSDlhMSAxIDAgMCAxLS4xMTctMS45OTNMOSAxMWg4LjU4NWwtMi4yOTItMi4yOTNhMSAxIDAgMCAxLS4wODMtMS4zMmwuMDgzLS4wOTRhMSAxIDAgMCAxIDEuMzItLjA4M3oiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLW5vdGlmaWNhdGlvbiI+CjxwYXRoIGQ9Ik0xMi4wMjYgMS4xOWMxLjAxMyAwIDEuOTIzLjU1NCAyLjM5NiAxLjQxMyAyLjUzOS45NzEgNC4zNTMgMy40MzYgNC4zNTMgNi4zMDhoMHYyLjg5YzAgLjQ2OC4yMiAxLjI3LjQ1MyAxLjY3M2gwbDEuMTUxIDEuOTExYy45MDYgMS41MTEuMTggMy40NzctMS40ODUgNC4wMjdhMjEuNzEgMjEuNzEgMCAwIDEtMy4zMDguODIzIDMuNzYgMy43NiAwIDAgMS0zLjU1OSAyLjU3NSAzLjc2IDMuNzYgMCAwIDEtMi42NS0xLjFjLS40MTQtLjQxNC0uNzI1LS45Mi0uOTA5LTEuNDczYTIxLjggMjEuOCAwIDAgMS0zLjMyMS0uODI2Yy0xLjc1NS0uNTk0LTIuNDM4LTIuNDM4LTEuNDgyLTQuMDI3aDBsMS4xNDgtMS45MDdjLjI0My0uNDA3LjQ2NC0xLjIwNS40NjQtMS42NzZoMFY4LjkxYzAtMi44ODIgMS44MTEtNS4zNDUgNC4zNTYtNi4zMTIuNDc0LS44NTUgMS4zODMtMS40MDggMi4zOTQtMS40MDh6bTEuNzU5IDE5LjI2OGwtLjA4NS4wMDdjLTEuMTQyLjA4OS0yLjI5LjA4Ny0zLjQzMi0uMDA2LjA1MS4wNjYuMTA4LjEzLjE2OS4xOTFhMi4yNiAyLjI2IDAgMCAwIDEuNTkuNjYgMi4yNSAyLjI1IDAgMCAwIDEuNzU5LS44NTJ6bS0uOTYyLTE2LjcxNGMtLjg1NS0uMTA3LTEuNjcyLS4wNDctMi40MzguMTc2bC4wNDktLjAxNGMtMi4xMi42NzUtMy42NTkgMi42NjItMy42NTkgNS4wMDRoMHYyLjg5YTUuNTEgNS41MSAwIDAgMS0uNjc3IDIuNDQ3aDBsLTEuMTUgMS45MWMtLjQ2MS43NjYtLjE3MyAxLjU0NS42NzUgMS44MzIgNC4xNTYgMS4zODggOC42MzkgMS4zODggMTIuNzk3LS4wMDEuNzU0LS4yNDkgMS4wODUtMS4xNDUuNjczLTEuODMxaDBsLTEuMTU3LTEuOTIyYTUuNjQgNS42NCAwIDAgMS0uNjYtMi40MzVoMFY4LjkxYzAtMi4zNS0xLjU2OC00LjM1NC0zLjcwOC01LjAxNy0uMjU0LS4wNy0uNS0uMTE5LS43NDQtLjE0OXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXByZWZlcmVuY2VzIj4KPHBhdGggZD0iTTE1Ljk5MiAxLjA5MmMzLjYxNSAwIDQuODQ1IDEuMTUgNC44OTggNC42NTdsLjAwMi4yNDMuMDAxIDEuMDY3YzEuMzMzLjQyOCAxLjk0MyAxLjQ4NSAxLjk5NSAzLjI2NmwuMDA0LjI1N3Y4LjU2YzAgMi41NDktMS4wNCAzLjY3NC0zLjQ5MSAzLjc0NmwtLjI1OS4wMDRoLTQuMjhjLTEuOTU0IDAtMy4wNzEtLjYxMS0zLjUxOS0ybC0yLjMxOS4wMDEtLjAzMi4wMDEtLjAzMy0uMDAzLTMuMDE4LjAwMWEuOS45IDAgMCAxLS4xMjItMS43OTJsLjEyMi0uMDA4IDIuMTUtLjAwMXYtMi40OTlINS45OTJjLTMuNjE1IDAtNC44NDUtMS4xNS00Ljg5OC00LjY1N2wtLjAwMi0uMDI4LjAwMS0uMDI4LS4wMDEtLjE4NnYtNS43YzAtMy42MTUgMS4xNS00Ljg0NSA0LjY1Ny00Ljg5OGwuMjQzLS4wMDJoMTB6bTMuMTUgNy41NGgtNC4yODFsLS4yOTguMDA0LS4wNTIuMDAyLS4xNi4wMDgtLjEyMS4wMDloMGwtLjExNS4wMTItLjAzOS4wMDUtLjAxMy4wMDIuMDA0LS4wMDEtLjAwNy4wMDEtLjAwNS4wMDFoLS4wMDFsLS4wMzQuMDA1LjAyNC0uMDA0LS4wMjYuMDA0LS4wNTYuMDA5LjAzMS0uMDA1LS4wNTIuMDA4LjAyMS0uMDAzLS4wMjIuMDAzLS4wNDguMDFoMGwuMDM4LS4wMDgtLjAzNi4wMDdoMGwtLjA1Mi4wMTEuMDUtLjAxLS4xMDMuMDIzLjAzOS0uMDEtLjA0Ny4wMTEtLjAwOC4wMDItLjAyNS4wMDcuMDEtLjAwMy4wMTUtLjAwNC4wMDctLjAwMi0uMDA4LjAwMy0uMDE0LjAwMy0uMDI5LjAwOC4wMDMtLjAwMS0uMDA0LjAwMi0uMDA5LjAwMi0uMDQ1LjAxNGgwbC0uMDI4LjAwOS0uMDE1LjAwNi0uMDA4LjAwMi0uMDA0LjAwMy0uMDM0LjAxM2gwbC0uMDIuMDA4LjAwNi0uMDAyLS4wNDEuMDE4aDBsLjAxLS4wMDUtLjA0OS4wMjRoMGwtLjA0My4wMjMuMDI0LS4wMTMtLjAyMy4wMTNoMGwtLjAzNC4wMjEuMDI5LS4wMTktLjA2OS4wNDUuMDM1LS4wMjNjLS4xNDEuMDkxLS4yNDQuMjEzLS4zMi4zNzRsLS4wMDMuMDA0LS4wMDcuMDE3LS4wMS4wMjIuMDEtLjAyMi0uMDI4LjA3Yy0uMDI0LjA2My0uMDQ0LjEzMi0uMDYuMjA3aDBsLS4wMDcuMDI5aDBsLS4wMDYuMDI3LjAwNy0uMDI4LS4wMDYuMDI5aDBsLS4wMDYuMDI5LS4wMDMuMDE5aDBsLS4wMDUuMDI2LS4wMDEuMDA2LS4wMDQuMDI4aDBsLS4wMDMuMDE3LS4wMDQuMDMzaDAtLjAwMWwtLjAwMi4wMTItLjAwNC4wMzMtLjAwMS4wMS0uMDAyLjAxNy0uMDA3LjA3NWgwbC0uMDE3LjI0NS0uMDA3LjI0My0uMDAyIDguNzQxLjAwNi4zNjkuMDIxLjMyMWMuMS45OTMuNTAxIDEuMjM3IDEuNzMxIDEuMjU4bDQuNDcxLjAwMmMxLjQ0NiAwIDEuODU3LS4yMzggMS45MzUtMS40MTRsLjAxNC0uMzQ1LjAwMi04Ljc1MWMwLTEuNDMzLS4yNDYtMS43ODMtMS4yMDctMS45MDZsLS4yNTMtLjAyNS0uNDg5LS4wMTl6bS0yLjE0MSA1LjMzYy43NDEgMCAxLjQ0My4yNjggMS45OTguNzQ3YTMuMSAzLjEgMCAwIDEgLjk2NyAxLjYyNSAzLjAxIDMuMDEgMCAwIDEgLjA3NS42NjhjMCAxLjY3Ny0xLjM2MyAzLjA0LTMuMDQgMy4wNC0uMjk5IDAtLjU4OS0uMDQzLS44NjItLjEyNGwtLjE2Mi0uMDUzYTMuMDIgMy4wMiAwIDAgMS0uMzEyLS4xMzJsLS4xNDktLjA3OGEzLjA2IDMuMDYgMCAwIDEtLjg4Ny0uNzUybC0uMTAxLS4xMzNhMy4wMyAzLjAzIDAgMCAxLS41NjctMS43NjcgMy4wMiAzLjAyIDAgMCAxIC4wNDctLjUyOGMuMDg2LS40ODcuMjkxLS45NDYuNTk0LTEuMzM2YTMuMDQgMy4wNCAwIDAgMSAyLjQtMS4xNzd6bS01Ljg5IDIuNjMxaC0xLjIydjIuNDk5aDEuMjJ2LTIuNDk5em01Ljg5LS44MzFjLS4zODYgMC0uNzQ0LjE4MS0uOTguNDgzYTEuMjQgMS4yNCAwIDAgMC0uMTkyLjM1NCAxLjIzIDEuMjMgMCAwIDAtLjA2OS40MDNjMCAuNjgzLjU1NyAxLjI0IDEuMjQgMS4yNHMxLjI0LS41NTcgMS4yNC0xLjI0YzAtLjEzOC0uMDI0LS4yNzQtLjA2OS0uNDAzYTEuMjkgMS4yOSAwIDAgMC0uMzYtLjUzNmMtLjE4NS0uMTYtLjQxNC0uMjYyLS42NjEtLjI5MmwtLjE1LS4wMDloMHptLTUuODktMi45NjlsLTguMTgzLjAwMmMuMTIzIDEuNDczLjYxMSAxLjg5IDIuMTkzIDEuOTc4bC4xOS4wMDkuNDQyLjAxaDUuMzU4di0xLjk5OXptNS44OS0zLjExbC4xNDcuMDA1YTEuOTcgMS45NyAwIDAgMS0uMTQ3IDMuOTM1IDEuOTcgMS45NyAwIDEgMSAwLTMuOTR6bS0uNzctNi43ODlINS43NTNsLS40NDIuMDFjLTEuODE3LjA2OS0yLjMwMi40OTUtMi4zOTggMi4yMThsLS4wMDkuMTktLjAxLjQ0MnY1LjIzOWg4LjIxOGwuMDAxLS40MWMwLTIuNTQ5IDEuMDQtMy42NzQgMy40OTEtMy43NDZsLjI1OS0uMDA0aDQuMjN2LS44NGwtLjAwNS0uNDY2LS4wMTYtLjQxOGMtLjA5NC0xLjY1LS41NTItMi4xMDMtMi4yMDktMi4xOTVsLS4xODktLjAwOS0uNDQyLS4wMXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXJhbmdlIj4KPHBhdGggZD0iTTIyIDUuNzVhLjc1Ljc1IDAgMCAxIC4xMDIgMS40OTNMMjIgNy4yNWgtNmEuNzUuNzUgMCAwIDEtLjEwMi0xLjQ5M0wxNiA1Ljc1aDZ6bS0xMi0zLjVhNC4yNSA0LjI1IDAgMSAxIDAgOC41IDQuMjUgNC4yNSAwIDAgMS00LjE4NC0zLjQ5OUwyIDcuMjVhLjc1Ljc1IDAgMCAxLS4xMDItMS40OTNMMiA1Ljc1aDMuODE2QTQuMjUgNC4yNSAwIDAgMSAxMCAyLjI1em0wIDEuNWEyLjc1IDIuNzUgMCAxIDAgMCA1LjUgMi43NSAyLjc1IDAgMSAwIDAtNS41em00IDkuNWE0LjI1IDQuMjUgMCAwIDEgNC4xODQgMy41SDIyYS43NS43NSAwIDAgMSAuMTAyIDEuNDkzTDIyIDE4LjI1bC0zLjgxNi4wMDFBNC4yNSA0LjI1IDAgMCAxIDkuNzUgMTcuNSA0LjI1IDQuMjUgMCAwIDEgMTQgMTMuMjV6bTAgMS41YTIuNzUgMi43NSAwIDEgMCAwIDUuNSAyLjc1IDIuNzUgMCAxIDAgMC01LjV6bS02IDJhLjc1Ljc1IDAgMCAxIC4xMDIgMS40OTNMOCAxOC4yNUgyYS43NS43NSAwIDAgMS0uMTAyLTEuNDkzTDIgMTYuNzVoNnoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXJlY2VpdmUiPgo8cGF0aCBkPSJNMTQuNSAyLjc1YS43NS43NSAwIDAgMSAuMTAyIDEuNDkzbC0uMTAyLjAwNy04LjI3NS4wMDEtLjQxNC4wMDgtLjM4MS4wMTctLjE3OS4wMTMtLjMzNC4wMzRjLTEuNTkzLjItMi4wNjIuODczLTIuMTUxIDIuNzVsLS4wMTMuMzkyLS4wMDMuMjA4LS4wMDEuMDc3SDE0LjVhLjc1Ljc1IDAgMCAxIC4xMDIgMS40OTNsLS4xMDIuMDA3SDIuNzVsLjAwMSA3LjA3Mi4wMDMuMjA4LjAxMy4zOTIuMDIzLjM2LjAzNC4zMjljLjE4MiAxLjQxNC43NTMgMS45MzEgMi4yNTMgMi4wODRsLjM0OS4wMjguMTg2LjAxLjM5Ny4wMTMuNDMxLjAwNCAxMS4zMzUtLjAwMS40MDUtLjAwOC4xOS0uMDA3LjM1OC0uMDIyLjMyOC0uMDMyYzEuNTE1LS4xODQgMi4wMjYtLjc4NSAyLjE1Ni0yLjQxOWwuMDIyLS4zNTMuMDEyLS4zODQuMDA0LS40MTV2LTIuMDhhLjc1Ljc1IDAgMCAxIDEuNDkzLS4xMDJsLjAwNy4xMDJ2Mi4wOGMwIDMuODQzLTEuMTc2IDUuMDg3LTQuOTQxIDUuMTM4bC0uMjQ5LjAwMkg2LjQ0Yy0zLjg3OCAwLTUuMTM3LTEuMTYzLTUuMTg4LTQuODkzbC0uMDAyLS4yNDdWNy44OWMwLTMuODQzIDEuMTc2LTUuMDg3IDQuOTQxLTUuMTM4bC4yNDktLjAwMmg4LjA2em0tNi41IDEzYS43NS43NSAwIDAgMSAuMTAyIDEuNDkzTDggMTcuMjVINmEuNzUuNzUgMCAwIDEtLjEwMi0xLjQ5M0w2IDE1Ljc1aDJ6bTYuNSAwYS43NS43NSAwIDAgMSAuMTAyIDEuNDkzbC0uMTAyLjAwN2gtNGEuNzUuNzUgMCAwIDEtLjEwMi0xLjQ5M2wuMTAyLS4wMDdoNHptNS41LTEzYS43NS43NSAwIDAgMSAuNzQzLjY0OGwuMDA3LjEwMnY0LjE4OGwuNzItLjcxOGEuNzUuNzUgMCAwIDEgLjk3Ny0uMDczbC4wODQuMDczYS43NS43NSAwIDAgMSAuMDczLjk3N2wtLjA3My4wODQtMiAyLS4wNzMuMDYzLS4wMzguMDI5aDBjLS4xNjMuMTEzLS4zNS4xNDgtLjUyNy4xMjFsLS4wMTQtLjAwMy0uMDM3LS4wMDctLjA1Ni0uMDE1LS4wNTEtLjAxNy0uMDU0LS4wMjMtLjAzOC0uMDE5YS43Ni43NiAwIDAgMS0uMTg3LS4xNDFMMTcuNDcgOC4wM2EuNzUuNzUgMCAwIDEgLjk3Ny0xLjEzM2wuMDg0LjA3My43Mi43MTlWMy41YS43NS43NSAwIDAgMSAuNzUtLjc1eiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tc2VhcmNoIj4KPHBhdGggZD0iTTIwLjQ0NiAxOS4zOTdsLjA4NC4wNzMgMiAyYS43NS43NSAwIDAgMS0uOTc3IDEuMTMzbC0uMDg0LS4wNzMtMi0yYS43NS43NSAwIDAgMSAuOTc3LTEuMTMzek0xMS41IDEuMjVjNS42NjEgMCAxMC4yNSA0LjU4OSAxMC4yNSAxMC4yNVMxNy4xNjEgMjEuNzUgMTEuNSAyMS43NSAxLjI1IDE3LjE2MSAxLjI1IDExLjUgNS44MzkgMS4yNSAxMS41IDEuMjV6bTAgMS41YTguNzUgOC43NSAwIDEgMCAwIDE3LjUgOC43NSA4Ljc1IDAgMSAwIDAtMTcuNXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXNlY3VyaXR5Ij4KPHBhdGggZD0iTTExLjk5MiAxLjA5MmM0Ljg1MSAwIDYuODEyIDIuMzAxIDYuODk3IDYuNjA0bC4wMDMuMjk2LjAwMSAxLjIxM2MyLjkyOC4zOTcgMy45NDggMS45MjEgMy45OTcgNS41MDlsLjAwMi4yOHYyYzAgNC40MDktMS4zNDggNS44NDQtNS42MzkgNS44OThsLS4yNjEuMDAyLTEwLjI5NS0uMDAyYy00LjE3Ni0uMDYxLTUuNTQ5LTEuNDQzLTUuNjAzLTUuNjMybC0uMDAyLS4yNjZ2LTJjMC0zLjc4OS45OTYtNS4zODEgMy45OTgtNS43ODlsLjAwMS0xLjIxM2MwLTQuNDk0IDEuOTM4LTYuOSA2LjktNi45em01IDkuODAybC0xMC4yNTcuMDAxLS4xMjUuMDAxaDBsLS4xMjIuMDAyLS40NjIuMDE1LS4xMDkuMDA2aDBsLS4xMDcuMDA3LS40MDMuMDM1Yy0xLjY2Mi4xODItMi4yNjcuNzg3LTIuNDQ4IDIuNDQ4bC0uMDE5LjE5Ni0uMDI4LjQyMi0uMDE1LjQ2Mi0uMDA0LjI0N2gwbC0uMDAxLjI1Ny4wMDEgMi4yNTcuMDEuNDk1LjAxLjIzMWgwbC4wMTMuMjIxLjAzNy40MTFjLjIwNyAxLjgyNS45MzYgMi4zNiAzLjA0OCAyLjQ2NGwuMjIzLjAwOS40OTQuMDExaDEwLjUyMWwuNDk1LS4wMS4yMzEtLjAxaDBsLjIyMS0uMDEzLjQxMS0uMDM3YzEuNzYtLjIgMi4zMi0uODg1IDIuNDUyLTIuODI3bC4wMTItLjIxMy4wMTYtLjQ3My4wMDQtLjI1M2gwbC4wMDEtLjI2NC0uMDAxLTIuMjU3LS4wMS0uNDgzLS4wMjEtLjQ0MmMtLjEzLTEuOTY5LS42OTMtMi42NTUtMi40ODMtMi44NTFsLS4xOTYtLjAxOS0uNDIyLS4wMjgtLjQ2Mi0uMDE1LS41MDQtLjAwNXptLTUgMS42OTlhMy40IDMuNCAwIDEgMSAwIDYuOCAzLjQgMy40IDAgMCAxIDAtNi44em0wIDEuOGExLjYgMS42IDAgMSAwIDAgMy4yIDEuNiAxLjYgMCAxIDAgMC0zLjJ6bTAtMTEuNTAxYy0zLjc3IDAtNS4wMzQgMS40NDYtNS4wOTcgNC44MjJsLS4wMDMuMjc4LS4wMDEgMS4xMDJoLjEwMSAxMC4xIDBWNy45OTJjMC0zLjU3NS0xLjIyOS01LjEtNS4xLTUuMXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXNlbmQiPgo8cGF0aCBkPSJNMTUuNjU1IDIuNzc3YzQuMzk0LTEuNDY1IDcuMDI0IDEuMTY5IDUuNTY5IDUuNTY3aDBsLTIuODMgOC40OTFjLTIuMTI4IDYuMzk0LTYuMjE2IDYuMzk0LTguMzQzIDBoMGwtLjcyMy0yLjE2NS0yLjE2Mi0uNzJDLjg2IDExLjg1Mi43NzMgNy44NTkgNi45MDMgNS42OTdoMGwuMjYzLS4wOXpNMTkuOCA3Ljg3M2MxLjA2Ny0zLjIyNy0uNDUtNC43NDctMy42NzEtMy42NzNoMEw3LjQwMSA3LjExMWwtLjQ1NS4xNjYtLjQyNC4xNjhjLTMuNjA0IDEuNDk2LTMuNTM1IDMuMjc0LjIwNyA0Ljc1M2gwbC40MzkuMTY2LjQ3MS4xNjNoMGwxLjkwNC42MzUuMDM4LS4wNDQgMy41OC0zLjU5YS43NS43NSAwIDAgMSAxLjEzNS45NzVsLS4wNzMuMDg0LTMuNTA0IDMuNTEzLjgzNSAyLjUuMDQxLjExNy4wNDEuMTE1LjE2Ni40MzljMS40MjMgMy42MDEgMy4xMjkgMy44MDEgNC41ODQuNmgwbC4xNy0uMzkyLjQxMy0xLjExOGgweiI+PC9wYXRoPgo8L3N5bWJvbD4KPHN5bWJvbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imljb24tdHJhbnNmZXIiPgo8cGF0aCBkPSJNMTQuNSAyLjc1MmEuNzUuNzUgMCAwIDEgLjEwMiAxLjQ5M2wtLjEwMi4wMDdINi4yMjVsLS40MTQuMDA4LS4zODEuMDE3LS4xNzkuMDEzLS4zMzQuMDM0Yy0xLjU5My4yLTIuMDYyLjg3My0yLjE1MSAyLjc1bC0uMDEzLjM5Mi0uMDAzLjIwOC0uMDAxLjA3NiAxMS43NS4wMDFhLjc1Ljc1IDAgMCAxIC4xMDIgMS40OTNsLS4xMDIuMDA3LTExLjc1LS4wMDEuMDAxIDcuMDcyLjAwMy4yMDguMDEzLjM5Mi4wMjMuMzYuMDM0LjMyOWMuMTgyIDEuNDE0Ljc1MyAxLjkzMSAyLjI1MyAyLjA4NGwuMzQ5LjAyOC4xODYuMDEuMzk3LjAxMy40MzEuMDA0IDExLjMzNS0uMDAxLjQwNS0uMDA4LjE5LS4wMDcuMzU4LS4wMjIuMzI4LS4wMzJjMS41MTUtLjE4NCAyLjAyNi0uNzg1IDIuMTU2LTIuNDE5bC4wMjItLjM1My4wMTItLjM4NC4wMDQtLjQxNXYtMi4wOGEuNzUuNzUgMCAwIDEgMS40OTMtLjEwMmwuMDA3LjEwMnYyLjA4YzAgMy44NDMtMS4xNzYgNS4wODctNC45NDEgNS4xMzhsLS4yNDkuMDAySDYuNDRjLTMuODc4IDAtNS4xMzctMS4xNjMtNS4xODgtNC44OTNsLS4wMDItLjI0N3YtOC4yMmMwLTMuODQzIDEuMTc2LTUuMDg3IDQuOTQxLTUuMTM4bC4yNDktLjAwMmg4LjA2em0tNi41IDEzYS43NS43NSAwIDAgMSAuMTAyIDEuNDkzTDggMTcuMjUySDZhLjc1Ljc1IDAgMCAxLS4xMDItMS40OTNMNiAxNS43NTJoMnptNi41IDBhLjc1Ljc1IDAgMCAxIC4xMDIgMS40OTNsLS4xMDIuMDA3aC00YS43NS43NSAwIDAgMS0uMTAyLTEuNDkzbC4xMDItLjAwN2g0em01Ljg2Ni0xMi45MDZsLjA3MS4wNDcuMDkzLjA3OSAyIDJhLjc1Ljc1IDAgMCAxLS45NzcgMS4xMzNsLS4wODQtLjA3My0uNzItLjcxOXY0LjE4OWEuNzUuNzUgMCAwIDEtLjY0OC43NDNsLS4xMDIuMDA3YS43NS43NSAwIDAgMS0uNzQzLS42NDhsLS4wMDctLjEwMlY1LjMxMWwtLjcyLjcyMWEuNzUuNzUgMCAwIDEtMS4xMzMtLjk3N2wuMDczLS4wODQgMS45ODItMS45ODNhLjc2Ljc2IDAgMCAxIC4xODktLjE0NGwuMDMyLS4wMTYuMDU0LS4wMjQuMDU0LS4wMTkuMDQxLS4wMTEuMDQyLS4wMDljLjAyNi0uMDA1LjA1Mi0uMDA5LjA3OS0uMDExYS43My43MyAwIDAgMSAuNDI0LjA5M3oiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXRyYXNoIj4KPHBhdGggZD0iTTIxLjA2OCA1LjIyOGwtNC44NC0uMzd2LS4wMWwtLjIyLTEuM2MtLjE1LS45Mi0uMzctMi4zLTIuNzEtMi4zaC0yLjYyYy0yLjMzIDAtMi41NSAxLjMyLTIuNzEgMi4yOWwtLjIxIDEuMjgtMi43OS4yMS0yLjA0LjJhLjc1Ljc1IDAgMCAwLS42OC44MmMuMDQuNDEuNC43MS44Mi42N2wyLjA0LS4yYzUuMjQtLjUyIDEwLjUyLS4zMiAxNS44Mi4yMWguMDhhLjc2Ljc2IDAgMCAwIC43NS0uNjhjLjAzLS40MS0uMjctLjc4LS42OS0uODJ6bS0xLjg0IDIuOTA5Yy0uMjQtLjI1LS41Ny0uMzktLjkxLS4zOUg1LjY3N2MtLjM0IDAtLjY4LjE0LS45MS4zOWExLjI5IDEuMjkgMCAwIDAtLjM0Ljk0bC42MiAxMC4yNmMuMTEgMS41Mi4yNSAzLjQyIDMuNzQgMy40Mmg2LjQyYzMuNDkgMCAzLjYzLTEuODkgMy43NC0zLjQybC42Mi0xMC4yNWMuMDItLjM2LS4xMS0uNy0uMzQtLjk1em0tNS41NyA5LjYxaC0zLjMzYy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzVoMy4zM2MuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzV6bS44NC00aC01Yy0uNDEgMC0uNzUtLjM0LS43NS0uNzVzLjM0LS43NS43NS0uNzVoNWMuNDEgMCAuNzUuMzQuNzUuNzVzLS4zNC43NS0uNzUuNzV6Ij48L3BhdGg+Cjwvc3ltYm9sPgo8c3ltYm9sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaWNvbi10cmFzaC1zdHJva2UiPgo8cGF0aCBkPSJNMTMuMzEgMS4yNWMxLjc4MiAwIDIuMzk5LjYzMiAyLjY3OCAyLjExM2wuMjUyIDEuNDgyLjAwMi4wMjQgNC44MzIuMzY2YS43NS43NSAwIDEgMS0uMTQ4IDEuNDkzTDEwLjk4IDYuMjNsLTQuODg4LjIwNi0uOTc4LjA5MS0yLjA0LjJhLjc1Ljc1IDAgMCAxLS4yNDctMS40NzZsLjEwMS0uMDE3IDIuMDM4LS4yIDIuOC0uMjE3LjIxNi0xLjI4MmMuMjY0LTEuNTcuODEtMi4yMzYgMi41MDgtMi4yODNsLjIwMS0uMDAzaDIuNjJ6bS4xNDQgMS41MDFoLTIuOTAzbC0uMjUyLjAwNmMtLjUyOS4wMjUtLjY2MS4xNC0uNzY5LjY0NmwtLjA0Ni4yNDItLjE4NyAxLjExIDEuNjgzLS4wMjQgMy43My4wNy0uMjE2LTEuMjczLS4wNDYtLjIxNWMtLjEwNS0uNDE3LS4yNi0uNTI4LS43NDUtLjU1NWwtLjI0OS0uMDA3ek01Ljg4NSA4Ljk5MWwuMDEzLjEwMS42NSAxMC4wNjYuMDI3LjM0NWMuMTIxIDEuMzUzLjM3MSAxLjY4MyAxLjY5MiAxLjczOGwuMzM4LjAwOGg2Ljc5MWwuMzM4LS4wMDhjMS4xNjItLjA0OSAxLjQ5NS0uMzEgMS42NDEtMS4yOTJsLjAzNi0uMjg2LjAyOS0uMzI0LjAxMy0uMTc3LjY1LTEwLjA3YS43NS43NSAwIDAgMSAxLjQ5Ny0uMDA1di4xMDJsLS42NSAxMC4wNzQtLjAzNi40MThjLS4yMjUgMi4xNDktLjk5MSAzLjAxNy0zLjQ2NSAzLjA2N2wtLjIzNy4wMDJIOC43OWMtMi41ODIgMC0zLjQxOS0uODAyLTMuNjgtMi44NzVsLS4wNDItLjQwNC0uMDE3LS4yMTMtLjY1LTEwLjA3YS43NS43NSAwIDAgMSAxLjQ4My0uMTk4em03Ljc3NSA2Ljc1OWEuNzUuNzUgMCAwIDEgLjEwMiAxLjQ5M2wtLjEwMi4wMDdoLTMuMzNhLjc1Ljc1IDAgMCAxLS4xMDItMS40OTNsLjEwMi0uMDA3aDMuMzN6bS44NC00YS43NS43NSAwIDAgMSAuMTAyIDEuNDkzbC0uMTAyLjAwN2gtNWEuNzUuNzUgMCAwIDEtLjEwMi0xLjQ5M2wuMTAyLS4wMDdoNXoiPjwvcGF0aD4KPC9zeW1ib2w+CjxzeW1ib2wgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpY29uLXVzZXIiPgo8cGF0aCBkPSJNMTEuOTk3IDEuMDkyYTUuOSA1LjkgMCAwIDAgMCAxMS44IDUuOSA1LjkgMCAwIDAgMC0xMS44em0wIDEuOGE0LjEgNC4xIDAgMCAxIDAgOC4yIDQuMSA0LjEgMCAwIDEgMC04LjJ6bS4wMDEgMTEuMjAxYzUuMjA0IDAgOS40OSAzLjQ5IDkuNDkgNy45YS45LjkgMCAxIDEtMS44IDBjMC0zLjMyNS0zLjQwOC02LjEtNy42OS02LjFzLTcuNjkgMi43NzUtNy42OSA2LjFhLjkuOSAwIDAgMS0xLjggMGMwLTQuNDEgNC4yODYtNy45IDkuNDktNy45eiI+PC9wYXRoPgo8L3N5bWJvbD4KPC9zdmc+Cgp7bGl0ZXJhbH0gICAgCiAgPHNjcmlwdD4KICAgCiAgICB2YXIgX2xpbmsgPSAnLmhlYWRlcl9fbGluaywgLnBhZ2VfX2xpbmsnLAogICAgICAgIF9jdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWYsCiAgICAgICAgZmlsZU5hbWUgPSBfY3VycmVudFVSTC5zdWJzdHJpbmcoMCwgX2N1cnJlbnRVUkwuaW5kZXhPZigiIyIpID09IC0xID8gX2N1cnJlbnRVUkwubGVuZ3RoIDogX2N1cnJlbnRVUkwuaW5kZXhPZigiIyIpKSwKICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5pbmRleE9mKCI/IikgPT0gLTEgPyBmaWxlTmFtZS5sZW5ndGggOiBmaWxlTmFtZS5pbmRleE9mKCI/IikpOwoKICAgICQoX2xpbmspLmVhY2goZnVuY3Rpb24gKCkgewogICAgICB2YXIgc2VsZiA9ICQodGhpcyksCiAgICAgICAgICBfc2VsZl9saW5rID0gc2VsZi5hdHRyKCdocmVmJyk7CgogICAgICBpZiAoZmlsZU5hbWUubWF0Y2goX3NlbGZfbGluaykpIHsKICAgICAgICBzZWxmLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoJ2FjdGl2ZSAnKS5wYXJlbnRzKCkuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygiYWN0aXZlICIpOwogICAgICB9IGVsc2UgewogICAgICAgIHNlbGYuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygnYWN0aXZlICcpLnBhcmVudHMoKS5jbG9zZXN0KCJsaTpub3QoLmN1cnJlbnQtcGFnZSkiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7CiAgICAgIH0KICAgIH0pOwogIAogIDwvc2NyaXB0Pgp7L2xpdGVyYWx9CgogICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdGVtcGxhdGVzL2Jhc2ljL2Fzc2V0cy9qcy9idW5kbGUuanM/dmVyPTMuMC4zIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJhc3NldHMvdGVtcGxhdGVzL2Jhc2ljL2Fzc2V0cy9qcy9zY3JpcHRzLmpzP3Zlcj0zLjAuMyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iYXNzZXRzL3RlbXBsYXRlcy9iYXNpYy9hc3NldHMvanMvY2hhcnRzL2dkLWRlZmF1bHQuanM/dmVyPTMuMC4zIj48L3NjcmlwdD4KIAogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJhc3NldHMvZ2xvYmFsL2Nzcy9pemlUb2FzdC5taW4uY3NzIj4KPHNjcmlwdCBzcmM9ImFzc2V0cy9nbG9iYWwvanMvaXppVG9hc3QubWluLmpzIj48L3NjcmlwdD4KCgoKe2xpdGVyYWx9ICAgIAoKPHNjcmlwdD4KICAgICJ1c2Ugc3RyaWN0IjsKICAgIGZ1bmN0aW9uIG5vdGlmeShzdGF0dXMsbWVzc2FnZSkgewogICAgICAgIGl6aVRvYXN0W3N0YXR1c10oewogICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLAogICAgICAgICAgICBwb3NpdGlvbjogInRvcFJpZ2h0IgogICAgICAgIH0pOwogICAgfQo8L3NjcmlwdD4KCgogICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgJChmdW5jdGlvbigpIHsKICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICAgICAgJCgnI2RhdGF0YWJsZTEnKS5EYXRhVGFibGUoewogICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7CiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLAogICAgICAgICAgICAgICAgICAgIHNTZWFyY2g6ICcnLAogICAgICAgICAgICAgICAgICAgIGxlbmd0aE1lbnU6ICdfTUVOVV8gaXRlbXMvcGFnZScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2RhdGF0YWJsZTInKS5EYXRhVGFibGUoewogICAgICAgICAgICAgICAgYkxlbmd0aENoYW5nZTogZmFsc2UsCiAgICAgICAgICAgICAgICBzZWFyY2hpbmc6IGZhbHNlLAogICAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIFNlbGVjdDIKICAgICAgICAgICAgJCgnLmRhdGFUYWJsZXNfbGVuZ3RoIHNlbGVjdCcpLnNlbGVjdDIoewogICAgICAgICAgICAgICAgbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6IEluZmluaXR5CiAgICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKCiAgICAgICAgZnVuY3Rpb24gaGlkZV9lbGVtZW50KHgpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih4KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc2hvd19lbGVtZW50KHgpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih4KS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdldF9vcHRpb25zKHksIHZhbCwgeCkgewogICAgICAgICAgICBzaG93X2VsZW1lbnQoJyNsb2FkZXInKTsKICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgIHVybDogJ2luY2x1ZGVzL2FqYXgucGhwJywKICAgICAgICAgICAgICAgIGRhdGE6IHkgKyAnPScgKyB2YWwsCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJCh4KS5odG1sKGRhdGEpOwogICAgICAgICAgICAgICAgICAgIGhpZGVfZWxlbWVudCgnI2xvYWRlcicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNvcHlfcmVmKGRhdGEsIGJ0bikgewogICAgICAgICAgICB2YXIgY29weVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkYXRhKTsKICAgICAgICAgICAgY29weVRleHQuc2VsZWN0KCk7CiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iik7CiAgICAgICAgICAgICQoYnRuKS5hZGRDbGFzcygnYnRuLXN1Y2Nlc3MnKTsKICAgICAgICAgICAgJChidG4pLmh0bWwoJ0NvcGllZCA8aSBjbGFzcz0iZmEgZmEtY2hlY2siPjwvaT4nKTsKCiAgICAgICAgfQoKICAgIDwvc2NyaXB0PgoKCgp7L2xpdGVyYWx9IAoKCjwvYm9keT4KCgo8IS0tIFNtYXJ0c3VwcCBMaXZlIENoYXQgc2NyaXB0IC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBfc21hcnRzdXBwID0gX3NtYXJ0c3VwcCB8fCB7fTsKX3NtYXJ0c3VwcC5rZXkgPSAnMTE1YWY0M2M5Y2MyOWNlYmIwMDk1YWNlMDNjNGI5OWNjOWEwMmVlNyc7CndpbmRvdy5zbWFydHN1cHB8fChmdW5jdGlvbihkKSB7CiAgdmFyIHMsYyxvPXNtYXJ0c3VwcD1mdW5jdGlvbigpeyBvLl8ucHVzaChhcmd1bWVudHMpfTtvLl89W107CiAgcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtjPWQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgYy50eXBlPSd0ZXh0L2phdmFzY3JpcHQnO2MuY2hhcnNldD0ndXRmLTgnO2MuYXN5bmM9dHJ1ZTsKICBjLnNyYz0naHR0cHM6Ly93d3cuc21hcnRzdXBwY2hhdC5jb20vbG9hZGVyLmpzPyc7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLHMpOwp9KShkb2N1bWVudCk7Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+UG93ZXJlZCBieSA8YSBocmVmPSJodHRwczovL3d3dy5zbWFydHN1cHAuY29tIiB0YXJnZXQ9Il9ibGFuayI+U21hcnRzdXBwPC9hPjwvbm9zY3JpcHQ+CgoKPC9odG1sPgo="}},"time_used":429,"timings":{"blocked":-1,"dns":62,"connect":19,"send":0,"wait":323,"receive":0,"ssl":24},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/swiper-bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.018Z","timestamp":1785159465018,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/swiper-bundle.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 43339\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":223949,"size_decoded":43577,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (624)","md5":"ce4262a841844ecbf3108087e5ab3597","sha1":"963eacf88cfb728b976266b5f0f4d6b84bafee27","sha256":"a927b5d0830d4810e940faf62c14abc76b651cd513ae72a502f9898ff1654b30","sha512":"5045c13524590b8a45232b90299fb480db77618bbdeaa12703cc8459500b93da33a97865b2d969b9821bc2e71d71a12840848cbe367cf5ca16046b51449d46f4","ssdeep":"3072:mFpfqT7CHtLkFIUEED5GqdBuOtyj9Gmcjc:mFpRW/c","tlshash":"0524710a52f129384293b12e4b9fc520b37a900b7a49eca83e5c49585f5d83c57f9ff9","first_seen":"2026-07-27T07:42:30.741599Z","last_seen":"2026-07-27T13:38:47.784423Z","times_seen":3,"resource_available":true,"data":"LyoqCiAqIFN3aXBlciA5LjAuNQogKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9ucwogKiBodHRwczovL3N3aXBlcmpzLmNvbQogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDIzIFZsYWRpbWlyIEtoYXJsYW1waWRpCiAqCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZQogKgogKiBSZWxlYXNlZCBvbjogRmVicnVhcnkgMTMsIDIwMjMKICovCgohIGZ1bmN0aW9uKGUsIHQpIHsKICAgICJvYmplY3QiID09IHR5cGVvZiBleHBvcnRzICYmICJ1bmRlZmluZWQiICE9IHR5cGVvZiBtb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA9IHQoKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKHQpIDogKGUgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZ2xvYmFsVGhpcyA/IGdsb2JhbFRoaXMgOiBlIHx8IHNlbGYpLlN3aXBlciA9IHQoKQp9KHRoaXMsIChmdW5jdGlvbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBlKGUpIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gZSAmJiAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAiY29uc3RydWN0b3IiIGluIGUgJiYgZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0CiAgICB9CgogICAgZnVuY3Rpb24gdChzLCBhKSB7CiAgICAgICAgdm9pZCAwID09PSBzICYmIChzID0ge30pLCB2b2lkIDAgPT09IGEgJiYgKGEgPSB7fSksIE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGkgPT4gewogICAgICAgICAgICB2b2lkIDAgPT09IHNbaV0gPyBzW2ldID0gYVtpXSA6IGUoYVtpXSkgJiYgZShzW2ldKSAmJiBPYmplY3Qua2V5cyhhW2ldKS5sZW5ndGggPiAwICYmIHQoc1tpXSwgYVtpXSkKICAgICAgICB9KSkKICAgIH0KICAgIGNvbnN0IHMgPSB7CiAgICAgICAgYm9keToge30sCiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigpIHt9LAogICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7fSwKICAgICAgICBhY3RpdmVFbGVtZW50OiB7CiAgICAgICAgICAgIGJsdXIoKSB7fSwKICAgICAgICAgICAgbm9kZU5hbWU6ICIiCiAgICAgICAgfSwKICAgICAgICBxdWVyeVNlbGVjdG9yOiAoKSA9PiBudWxsLAogICAgICAgIHF1ZXJ5U2VsZWN0b3JBbGw6ICgpID0+IFtdLAogICAgICAgIGdldEVsZW1lbnRCeUlkOiAoKSA9PiBudWxsLAogICAgICAgIGNyZWF0ZUV2ZW50OiAoKSA9PiAoewogICAgICAgICAgICBpbml0RXZlbnQoKSB7fQogICAgICAgIH0pLAogICAgICAgIGNyZWF0ZUVsZW1lbnQ6ICgpID0+ICh7CiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgY2hpbGROb2RlczogW10sCiAgICAgICAgICAgIHN0eWxlOiB7fSwKICAgICAgICAgICAgc2V0QXR0cmlidXRlKCkge30sCiAgICAgICAgICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lOiAoKSA9PiBbXQogICAgICAgIH0pLAogICAgICAgIGNyZWF0ZUVsZW1lbnROUzogKCkgPT4gKHt9KSwKICAgICAgICBpbXBvcnROb2RlOiAoKSA9PiBudWxsLAogICAgICAgIGxvY2F0aW9uOiB7CiAgICAgICAgICAgIGhhc2g6ICIiLAogICAgICAgICAgICBob3N0OiAiIiwKICAgICAgICAgICAgaG9zdG5hbWU6ICIiLAogICAgICAgICAgICBocmVmOiAiIiwKICAgICAgICAgICAgb3JpZ2luOiAiIiwKICAgICAgICAgICAgcGF0aG5hbWU6ICIiLAogICAgICAgICAgICBwcm90b2NvbDogIiIsCiAgICAgICAgICAgIHNlYXJjaDogIiIKICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIGEoKSB7CiAgICAgICAgY29uc3QgZSA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCA/IGRvY3VtZW50IDoge307CiAgICAgICAgcmV0dXJuIHQoZSwgcyksIGUKICAgIH0KICAgIGNvbnN0IGkgPSB7CiAgICAgICAgZG9jdW1lbnQ6IHMsCiAgICAgICAgbmF2aWdhdG9yOiB7CiAgICAgICAgICAgIHVzZXJBZ2VudDogIiIKICAgICAgICB9LAogICAgICAgIGxvY2F0aW9uOiB7CiAgICAgICAgICAgIGhhc2g6ICIiLAogICAgICAgICAgICBob3N0OiAiIiwKICAgICAgICAgICAgaG9zdG5hbWU6ICIiLAogICAgICAgICAgICBocmVmOiAiIiwKICAgICAgICAgICAgb3JpZ2luOiAiIiwKICAgICAgICAgICAgcGF0aG5hbWU6ICIiLAogICAgICAgICAgICBwcm90b2NvbDogIiIsCiAgICAgICAgICAgIHNlYXJjaDogIiIKICAgICAgICB9LAogICAgICAgIGhpc3Rvcnk6IHsKICAgICAgICAgICAgcmVwbGFjZVN0YXRlKCkge30sCiAgICAgICAgICAgIHB1c2hTdGF0ZSgpIHt9LAogICAgICAgICAgICBnbygpIHt9LAogICAgICAgICAgICBiYWNrKCkge30KICAgICAgICB9LAogICAgICAgIEN1c3RvbUV2ZW50OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7fSwKICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKCkge30sCiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZTogKCkgPT4gKHsKICAgICAgICAgICAgZ2V0UHJvcGVydHlWYWx1ZTogKCkgPT4gIiIKICAgICAgICB9KSwKICAgICAgICBJbWFnZSgpIHt9LAogICAgICAgIERhdGUoKSB7fSwKICAgICAgICBzY3JlZW46IHt9LAogICAgICAgIHNldFRpbWVvdXQoKSB7fSwKICAgICAgICBjbGVhclRpbWVvdXQoKSB7fSwKICAgICAgICBtYXRjaE1lZGlhOiAoKSA9PiAoe30pLAogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZTogZSA9PiAidW5kZWZpbmVkIiA9PSB0eXBlb2Ygc2V0VGltZW91dCA/IChlKCksIG51bGwpIDogc2V0VGltZW91dChlLCAwKSwKICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShlKSB7CiAgICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBzZXRUaW1lb3V0ICYmIGNsZWFyVGltZW91dChlKQogICAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gcigpIHsKICAgICAgICBjb25zdCBlID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHt9OwogICAgICAgIHJldHVybiB0KGUsIGkpLCBlCiAgICB9CgogICAgZnVuY3Rpb24gbihlLCB0KSB7CiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCAmJiAodCA9IDApLCBzZXRUaW1lb3V0KGUsIHQpCiAgICB9CgogICAgZnVuY3Rpb24gbCgpIHsKICAgICAgICByZXR1cm4gRGF0ZS5ub3coKQogICAgfQoKICAgIGZ1bmN0aW9uIG8oZSwgdCkgewogICAgICAgIHZvaWQgMCA9PT0gdCAmJiAodCA9ICJ4Iik7CiAgICAgICAgY29uc3QgcyA9IHIoKTsKICAgICAgICBsZXQgYSwgaSwgbjsKICAgICAgICBjb25zdCBsID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjb25zdCB0ID0gcigpOwogICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgcmV0dXJuIHQuZ2V0Q29tcHV0ZWRTdHlsZSAmJiAocyA9IHQuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKSksICFzICYmIGUuY3VycmVudFN0eWxlICYmIChzID0gZS5jdXJyZW50U3R5bGUpLCBzIHx8IChzID0gZS5zdHlsZSksIHMKICAgICAgICB9KGUpOwogICAgICAgIHJldHVybiBzLldlYktpdENTU01hdHJpeCA/IChpID0gbC50cmFuc2Zvcm0gfHwgbC53ZWJraXRUcmFuc2Zvcm0sIGkuc3BsaXQoIiwiKS5sZW5ndGggPiA2ICYmIChpID0gaS5zcGxpdCgiLCAiKS5tYXAoKGUgPT4gZS5yZXBsYWNlKCIsIiwgIi4iKSkpLmpvaW4oIiwgIikpLCBuID0gbmV3IHMuV2ViS2l0Q1NTTWF0cml4KCJub25lIiA9PT0gaSA/ICIiIDogaSkpIDogKG4gPSBsLk1velRyYW5zZm9ybSB8fCBsLk9UcmFuc2Zvcm0gfHwgbC5Nc1RyYW5zZm9ybSB8fCBsLm1zVHJhbnNmb3JtIHx8IGwudHJhbnNmb3JtIHx8IGwuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikucmVwbGFjZSgidHJhbnNsYXRlKCIsICJtYXRyaXgoMSwgMCwgMCwgMSwiKSwgYSA9IG4udG9TdHJpbmcoKS5zcGxpdCgiLCIpKSwgIngiID09PSB0ICYmIChpID0gcy5XZWJLaXRDU1NNYXRyaXggPyBuLm00MSA6IDE2ID09PSBhLmxlbmd0aCA/IHBhcnNlRmxvYXQoYVsxMl0pIDogcGFyc2VGbG9hdChhWzRdKSksICJ5IiA9PT0gdCAmJiAoaSA9IHMuV2ViS2l0Q1NTTWF0cml4ID8gbi5tNDIgOiAxNiA9PT0gYS5sZW5ndGggPyBwYXJzZUZsb2F0KGFbMTNdKSA6IHBhcnNlRmxvYXQoYVs1XSkpLCBpIHx8IDAKICAgIH0KCiAgICBmdW5jdGlvbiBkKGUpIHsKICAgICAgICByZXR1cm4gIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSAmJiBlLmNvbnN0cnVjdG9yICYmICJPYmplY3QiID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwgLTEpCiAgICB9CgogICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgcmV0dXJuICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgdm9pZCAwICE9PSB3aW5kb3cuSFRNTEVsZW1lbnQgPyBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgOiBlICYmICgxID09PSBlLm5vZGVUeXBlIHx8IDExID09PSBlLm5vZGVUeXBlKQogICAgfQoKICAgIGZ1bmN0aW9uIHAoKSB7CiAgICAgICAgY29uc3QgZSA9IE9iamVjdChhcmd1bWVudHMubGVuZ3RoIDw9IDAgPyB2b2lkIDAgOiBhcmd1bWVudHNbMF0pLAogICAgICAgICAgICB0ID0gWyJfX3Byb3RvX18iLCAiY29uc3RydWN0b3IiLCAicHJvdG90eXBlIl07CiAgICAgICAgZm9yIChsZXQgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzICs9IDEpIHsKICAgICAgICAgICAgY29uc3QgYSA9IHMgPCAwIHx8IGFyZ3VtZW50cy5sZW5ndGggPD0gcyA/IHZvaWQgMCA6IGFyZ3VtZW50c1tzXTsKICAgICAgICAgICAgaWYgKG51bGwgIT0gYSAmJiAhYyhhKSkgewogICAgICAgICAgICAgICAgY29uc3QgcyA9IE9iamVjdC5rZXlzKE9iamVjdChhKSkuZmlsdGVyKChlID0+IHQuaW5kZXhPZihlKSA8IDApKTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwLCBpID0gcy5sZW5ndGg7IHQgPCBpOyB0ICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gc1t0XSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSwgaSk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSByICYmIHIuZW51bWVyYWJsZSAmJiAoZChlW2ldKSAmJiBkKGFbaV0pID8gYVtpXS5fX3N3aXBlcl9fID8gZVtpXSA9IGFbaV0gOiBwKGVbaV0sIGFbaV0pIDogIWQoZVtpXSkgJiYgZChhW2ldKSA/IChlW2ldID0ge30sIGFbaV0uX19zd2lwZXJfXyA/IGVbaV0gPSBhW2ldIDogcChlW2ldLCBhW2ldKSkgOiBlW2ldID0gYVtpXSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZQogICAgfQoKICAgIGZ1bmN0aW9uIHUoZSwgdCwgcykgewogICAgICAgIGUuc3R5bGUuc2V0UHJvcGVydHkodCwgcykKICAgIH0KCiAgICBmdW5jdGlvbiBtKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIHRhcmdldFBvc2l0aW9uOiBzLAogICAgICAgICAgICBzaWRlOiBhCiAgICAgICAgfSA9IGU7CiAgICAgICAgY29uc3QgaSA9IHIoKSwKICAgICAgICAgICAgbiA9IC10LnRyYW5zbGF0ZTsKICAgICAgICBsZXQgbCwgbyA9IG51bGw7CiAgICAgICAgY29uc3QgZCA9IHQucGFyYW1zLnNwZWVkOwogICAgICAgIHQud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlID0gIm5vbmUiLCBpLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHQuY3NzTW9kZUZyYW1lSUQpOwogICAgICAgIGNvbnN0IGMgPSBzID4gbiA/ICJuZXh0IiA6ICJwcmV2IiwKICAgICAgICAgICAgcCA9IChlLCB0KSA9PiAibmV4dCIgPT09IGMgJiYgZSA+PSB0IHx8ICJwcmV2IiA9PT0gYyAmJiBlIDw9IHQsCiAgICAgICAgICAgIHUgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICBsID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksIG51bGwgPT09IG8gJiYgKG8gPSBsKTsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBNYXRoLm1heChNYXRoLm1pbigobCAtIG8pIC8gZCwgMSksIDApLAogICAgICAgICAgICAgICAgICAgIHIgPSAuNSAtIE1hdGguY29zKGUgKiBNYXRoLlBJKSAvIDI7CiAgICAgICAgICAgICAgICBsZXQgYyA9IG4gKyByICogKHMgLSBuKTsKICAgICAgICAgICAgICAgIGlmIChwKGMsIHMpICYmIChjID0gcyksIHQud3JhcHBlckVsLnNjcm9sbFRvKHsKICAgICAgICAgICAgICAgICAgICAgICAgW2FdOiBjCiAgICAgICAgICAgICAgICAgICAgfSksIHAoYywgcykpIHJldHVybiB0LndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iLCB0LndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICIiLCBzZXRUaW1lb3V0KCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdC53cmFwcGVyRWwuc3R5bGUub3ZlcmZsb3cgPSAiIiwgdC53cmFwcGVyRWwuc2Nyb2xsVG8oewogICAgICAgICAgICAgICAgICAgICAgICBbYV06IGMKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkpLCB2b2lkIGkuY2FuY2VsQW5pbWF0aW9uRnJhbWUodC5jc3NNb2RlRnJhbWVJRCk7CiAgICAgICAgICAgICAgICB0LmNzc01vZGVGcmFtZUlEID0gaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodSkKICAgICAgICAgICAgfTsKICAgICAgICB1KCkKICAgIH0KCiAgICBmdW5jdGlvbiBoKGUpIHsKICAgICAgICByZXR1cm4gZS5xdWVyeVNlbGVjdG9yKCIuc3dpcGVyLXNsaWRlLXRyYW5zZm9ybSIpIHx8IGUuc2hhZG93RWwgJiYgZS5zaGFkb3dFbC5xdWVyeVNlbGVjdG9yKCIuc3dpcGVyLXNsaWRlLXRyYW5zZm9ybSIpIHx8IGUKICAgIH0KCiAgICBmdW5jdGlvbiBmKGUsIHQpIHsKICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gIiIpLCBbLi4uZS5jaGlsZHJlbl0uZmlsdGVyKChlID0+IGUubWF0Y2hlcyh0KSkpCiAgICB9CgogICAgZnVuY3Rpb24gZyhlLCB0KSB7CiAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gW10pOwogICAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpOwogICAgICAgIHJldHVybiBzLmNsYXNzTGlzdC5hZGQoLi4uQXJyYXkuaXNBcnJheSh0KSA/IHQgOiBbdF0pLCBzCiAgICB9CgogICAgZnVuY3Rpb24gdihlKSB7CiAgICAgICAgY29uc3QgdCA9IHIoKSwKICAgICAgICAgICAgcyA9IGEoKSwKICAgICAgICAgICAgaSA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCiAgICAgICAgICAgIG4gPSBzLmJvZHksCiAgICAgICAgICAgIGwgPSBlLmNsaWVudFRvcCB8fCBuLmNsaWVudFRvcCB8fCAwLAogICAgICAgICAgICBvID0gZS5jbGllbnRMZWZ0IHx8IG4uY2xpZW50TGVmdCB8fCAwLAogICAgICAgICAgICBkID0gZSA9PT0gdCA/IHQuc2Nyb2xsWSA6IGUuc2Nyb2xsVG9wLAogICAgICAgICAgICBjID0gZSA9PT0gdCA/IHQuc2Nyb2xsWCA6IGUuc2Nyb2xsTGVmdDsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB0b3A6IGkudG9wICsgZCAtIGwsCiAgICAgICAgICAgIGxlZnQ6IGkubGVmdCArIGMgLSBvCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHcoZSwgdCkgewogICAgICAgIHJldHVybiByKCkuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpCiAgICB9CgogICAgZnVuY3Rpb24gYihlKSB7CiAgICAgICAgbGV0IHQsIHMgPSBlOwogICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgIGZvciAodCA9IDA7IG51bGwgIT09IChzID0gcy5wcmV2aW91c1NpYmxpbmcpOykgMSA9PT0gcy5ub2RlVHlwZSAmJiAodCArPSAxKTsKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24geShlLCB0KSB7CiAgICAgICAgY29uc3QgcyA9IFtdOwogICAgICAgIGxldCBhID0gZS5wYXJlbnRFbGVtZW50OwogICAgICAgIGZvciAoOyBhOykgdCA/IGEubWF0Y2hlcyh0KSAmJiBzLnB1c2goYSkgOiBzLnB1c2goYSksIGEgPSBhLnBhcmVudEVsZW1lbnQ7CiAgICAgICAgcmV0dXJuIHMKICAgIH0KCiAgICBmdW5jdGlvbiBFKGUsIHQpIHsKICAgICAgICB0ICYmIGUuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIChmdW5jdGlvbiBzKGEpIHsKICAgICAgICAgICAgYS50YXJnZXQgPT09IGUgJiYgKHQuY2FsbChlLCBhKSwgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgcykpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24geChlLCB0LCBzKSB7CiAgICAgICAgY29uc3QgYSA9IHIoKTsKICAgICAgICByZXR1cm4gcyA/IGVbIndpZHRoIiA9PT0gdCA/ICJvZmZzZXRXaWR0aCIgOiAib2Zmc2V0SGVpZ2h0Il0gKyBwYXJzZUZsb2F0KGEuZ2V0Q29tcHV0ZWRTdHlsZShlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0aCIgPT09IHQgPyAibWFyZ2luLXJpZ2h0IiA6ICJtYXJnaW4tdG9wIikpICsgcGFyc2VGbG9hdChhLmdldENvbXB1dGVkU3R5bGUoZSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiID09PSB0ID8gIm1hcmdpbi1sZWZ0IiA6ICJtYXJnaW4tYm90dG9tIikpIDogZS5vZmZzZXRXaWR0aAogICAgfQogICAgbGV0IFMsIFQsIE07CgogICAgZnVuY3Rpb24gQygpIHsKICAgICAgICByZXR1cm4gUyB8fCAoUyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb25zdCBlID0gcigpLAogICAgICAgICAgICAgICAgdCA9IGEoKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHNtb290aFNjcm9sbDogdC5kb2N1bWVudEVsZW1lbnQgJiYgInNjcm9sbEJlaGF2aW9yIiBpbiB0LmRvY3VtZW50RWxlbWVudC5zdHlsZSwKICAgICAgICAgICAgICAgIHRvdWNoOiAhISgib250b3VjaHN0YXJ0IiBpbiBlIHx8IGUuRG9jdW1lbnRUb3VjaCAmJiB0IGluc3RhbmNlb2YgZS5Eb2N1bWVudFRvdWNoKQogICAgICAgICAgICB9CiAgICAgICAgfSgpKSwgUwogICAgfQoKICAgIGZ1bmN0aW9uIFAoZSkgewogICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSB7fSksIFQgfHwgKFQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHQKICAgICAgICAgICAgfSA9IHZvaWQgMCA9PT0gZSA/IHt9IDogZTsKICAgICAgICAgICAgY29uc3QgcyA9IEMoKSwKICAgICAgICAgICAgICAgIGEgPSByKCksCiAgICAgICAgICAgICAgICBpID0gYS5uYXZpZ2F0b3IucGxhdGZvcm0sCiAgICAgICAgICAgICAgICBuID0gdCB8fCBhLm5hdmlnYXRvci51c2VyQWdlbnQsCiAgICAgICAgICAgICAgICBsID0gewogICAgICAgICAgICAgICAgICAgIGlvczogITEsCiAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvID0gYS5zY3JlZW4ud2lkdGgsCiAgICAgICAgICAgICAgICBkID0gYS5zY3JlZW4uaGVpZ2h0LAogICAgICAgICAgICAgICAgYyA9IG4ubWF0Y2goLyhBbmRyb2lkKTs/W1xzXC9dKyhbXGQuXSspPy8pOwogICAgICAgICAgICBsZXQgcCA9IG4ubWF0Y2goLyhpUGFkKS4qT1NccyhbXGRfXSspLyk7CiAgICAgICAgICAgIGNvbnN0IHUgPSBuLm1hdGNoKC8oaVBvZCkoLipPU1xzKFtcZF9dKykpPy8pLAogICAgICAgICAgICAgICAgbSA9ICFwICYmIG4ubWF0Y2goLyhpUGhvbmVcc09TfGlPUylccyhbXGRfXSspLyksCiAgICAgICAgICAgICAgICBoID0gIldpbjMyIiA9PT0gaTsKICAgICAgICAgICAgbGV0IGYgPSAiTWFjSW50ZWwiID09PSBpOwogICAgICAgICAgICByZXR1cm4gIXAgJiYgZiAmJiBzLnRvdWNoICYmIFsiMTAyNHgxMzY2IiwgIjEzNjZ4MTAyNCIsICI4MzR4MTE5NCIsICIxMTk0eDgzNCIsICI4MzR4MTExMiIsICIxMTEyeDgzNCIsICI3Njh4MTAyNCIsICIxMDI0eDc2OCIsICI4MjB4MTE4MCIsICIxMTgweDgyMCIsICI4MTB4MTA4MCIsICIxMDgweDgxMCJdLmluZGV4T2YoYCR7b314JHtkfWApID49IDAgJiYgKHAgPSBuLm1hdGNoKC8oVmVyc2lvbilcLyhbXGQuXSspLyksIHAgfHwgKHAgPSBbMCwgMSwgIjEzXzBfMCJdKSwgZiA9ICExKSwgYyAmJiAhaCAmJiAobC5vcyA9ICJhbmRyb2lkIiwgbC5hbmRyb2lkID0gITApLCAocCB8fCBtIHx8IHUpICYmIChsLm9zID0gImlvcyIsIGwuaW9zID0gITApLCBsCiAgICAgICAgfShlKSksIFQKICAgIH0KCiAgICBmdW5jdGlvbiBMKCkgewogICAgICAgIHJldHVybiBNIHx8IChNID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSByKCk7CiAgICAgICAgICAgIGxldCB0ID0gITE7CgogICAgICAgICAgICBmdW5jdGlvbiBzKCkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGUubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHQuaW5kZXhPZigic2FmYXJpIikgPj0gMCAmJiB0LmluZGV4T2YoImNocm9tZSIpIDwgMCAmJiB0LmluZGV4T2YoImFuZHJvaWQiKSA8IDAKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocygpKSB7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKGUubmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgICAgICAgICAgICAgICBpZiAocy5pbmNsdWRlcygiVmVyc2lvbi8iKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IFtlLCBhXSA9IHMuc3BsaXQoIlZlcnNpb24vIilbMV0uc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpLm1hcCgoZSA9PiBOdW1iZXIoZSkpKTsKICAgICAgICAgICAgICAgICAgICB0ID0gZSA8IDE2IHx8IDE2ID09PSBlICYmIGEgPCAyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGlzU2FmYXJpOiB0IHx8IHMoKSwKICAgICAgICAgICAgICAgIG5lZWRQZXJzcGVjdGl2ZUZpeDogdCwKICAgICAgICAgICAgICAgIGlzV2ViVmlldzogLyhpUGhvbmV8aVBvZHxpUGFkKS4qQXBwbGVXZWJLaXQoPyEuKlNhZmFyaSkvaS50ZXN0KGUubmF2aWdhdG9yLnVzZXJBZ2VudCkKICAgICAgICAgICAgfQogICAgICAgIH0oKSksIE0KICAgIH0KICAgIHZhciBBID0gewogICAgICAgIG9uKGUsIHQsIHMpIHsKICAgICAgICAgICAgY29uc3QgYSA9IHRoaXM7CiAgICAgICAgICAgIGlmICghYS5ldmVudHNMaXN0ZW5lcnMgfHwgYS5kZXN0cm95ZWQpIHJldHVybiBhOwogICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgdCkgcmV0dXJuIGE7CiAgICAgICAgICAgIGNvbnN0IGkgPSBzID8gInVuc2hpZnQiIDogInB1c2giOwogICAgICAgICAgICByZXR1cm4gZS5zcGxpdCgiICIpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgYS5ldmVudHNMaXN0ZW5lcnNbZV0gfHwgKGEuZXZlbnRzTGlzdGVuZXJzW2VdID0gW10pLCBhLmV2ZW50c0xpc3RlbmVyc1tlXVtpXSh0KQogICAgICAgICAgICB9KSksIGEKICAgICAgICB9LAogICAgICAgIG9uY2UoZSwgdCwgcykgewogICAgICAgICAgICBjb25zdCBhID0gdGhpczsKICAgICAgICAgICAgaWYgKCFhLmV2ZW50c0xpc3RlbmVycyB8fCBhLmRlc3Ryb3llZCkgcmV0dXJuIGE7CiAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiB0KSByZXR1cm4gYTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGkoKSB7CiAgICAgICAgICAgICAgICBhLm9mZihlLCBpKSwgaS5fX2VtaXR0ZXJQcm94eSAmJiBkZWxldGUgaS5fX2VtaXR0ZXJQcm94eTsKICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gbmV3IEFycmF5KHMpLCBuID0gMDsgbiA8IHM7IG4rKykgcltuXSA9IGFyZ3VtZW50c1tuXTsKICAgICAgICAgICAgICAgIHQuYXBwbHkoYSwgcikKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaS5fX2VtaXR0ZXJQcm94eSA9IHQsIGEub24oZSwgaSwgcykKICAgICAgICB9LAogICAgICAgIG9uQW55KGUsIHQpIHsKICAgICAgICAgICAgY29uc3QgcyA9IHRoaXM7CiAgICAgICAgICAgIGlmICghcy5ldmVudHNMaXN0ZW5lcnMgfHwgcy5kZXN0cm95ZWQpIHJldHVybiBzOwogICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSkgcmV0dXJuIHM7CiAgICAgICAgICAgIGNvbnN0IGEgPSB0ID8gInVuc2hpZnQiIDogInB1c2giOwogICAgICAgICAgICByZXR1cm4gcy5ldmVudHNBbnlMaXN0ZW5lcnMuaW5kZXhPZihlKSA8IDAgJiYgcy5ldmVudHNBbnlMaXN0ZW5lcnNbYV0oZSksIHMKICAgICAgICB9LAogICAgICAgIG9mZkFueShlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzOwogICAgICAgICAgICBpZiAoIXQuZXZlbnRzTGlzdGVuZXJzIHx8IHQuZGVzdHJveWVkKSByZXR1cm4gdDsKICAgICAgICAgICAgaWYgKCF0LmV2ZW50c0FueUxpc3RlbmVycykgcmV0dXJuIHQ7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGUpOwogICAgICAgICAgICByZXR1cm4gcyA+PSAwICYmIHQuZXZlbnRzQW55TGlzdGVuZXJzLnNwbGljZShzLCAxKSwgdAogICAgICAgIH0sCiAgICAgICAgb2ZmKGUsIHQpIHsKICAgICAgICAgICAgY29uc3QgcyA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiAhcy5ldmVudHNMaXN0ZW5lcnMgfHwgcy5kZXN0cm95ZWQgPyBzIDogcy5ldmVudHNMaXN0ZW5lcnMgPyAoZS5zcGxpdCgiICIpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ID8gcy5ldmVudHNMaXN0ZW5lcnNbZV0gPSBbXSA6IHMuZXZlbnRzTGlzdGVuZXJzW2VdICYmIHMuZXZlbnRzTGlzdGVuZXJzW2VdLmZvckVhY2goKChhLCBpKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgKGEgPT09IHQgfHwgYS5fX2VtaXR0ZXJQcm94eSAmJiBhLl9fZW1pdHRlclByb3h5ID09PSB0KSAmJiBzLmV2ZW50c0xpc3RlbmVyc1tlXS5zcGxpY2UoaSwgMSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSksIHMpIDogcwogICAgICAgIH0sCiAgICAgICAgZW1pdCgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHRoaXM7CiAgICAgICAgICAgIGlmICghZS5ldmVudHNMaXN0ZW5lcnMgfHwgZS5kZXN0cm95ZWQpIHJldHVybiBlOwogICAgICAgICAgICBpZiAoIWUuZXZlbnRzTGlzdGVuZXJzKSByZXR1cm4gZTsKICAgICAgICAgICAgbGV0IHQsIHMsIGE7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gbmV3IEFycmF5KGkpLCBuID0gMDsgbiA8IGk7IG4rKykgcltuXSA9IGFyZ3VtZW50c1tuXTsKICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIHJbMF0gfHwgQXJyYXkuaXNBcnJheShyWzBdKSA/ICh0ID0gclswXSwgcyA9IHIuc2xpY2UoMSwgci5sZW5ndGgpLCBhID0gZSkgOiAodCA9IHJbMF0uZXZlbnRzLCBzID0gclswXS5kYXRhLCBhID0gclswXS5jb250ZXh0IHx8IGUpLCBzLnVuc2hpZnQoYSk7CiAgICAgICAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh0KSA/IHQgOiB0LnNwbGl0KCIgIikpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgZS5ldmVudHNBbnlMaXN0ZW5lcnMgJiYgZS5ldmVudHNBbnlMaXN0ZW5lcnMubGVuZ3RoICYmIGUuZXZlbnRzQW55TGlzdGVuZXJzLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgIGUuYXBwbHkoYSwgW3QsIC4uLnNdKQogICAgICAgICAgICAgICAgfSkpLCBlLmV2ZW50c0xpc3RlbmVycyAmJiBlLmV2ZW50c0xpc3RlbmVyc1t0XSAmJiBlLmV2ZW50c0xpc3RlbmVyc1t0XS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLmFwcGx5KGEsIHMpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgfQogICAgfTsKICAgIHZhciB6ID0gewogICAgICAgIHVwZGF0ZVNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpczsKICAgICAgICAgICAgbGV0IHQsIHM7CiAgICAgICAgICAgIGNvbnN0IGEgPSBlLmVsOwogICAgICAgICAgICB0ID0gdm9pZCAwICE9PSBlLnBhcmFtcy53aWR0aCAmJiBudWxsICE9PSBlLnBhcmFtcy53aWR0aCA/IGUucGFyYW1zLndpZHRoIDogYS5jbGllbnRXaWR0aCwgcyA9IHZvaWQgMCAhPT0gZS5wYXJhbXMuaGVpZ2h0ICYmIG51bGwgIT09IGUucGFyYW1zLmhlaWdodCA/IGUucGFyYW1zLmhlaWdodCA6IGEuY2xpZW50SGVpZ2h0LCAwID09PSB0ICYmIGUuaXNIb3Jpem9udGFsKCkgfHwgMCA9PT0gcyAmJiBlLmlzVmVydGljYWwoKSB8fCAodCA9IHQgLSBwYXJzZUludCh3KGEsICJwYWRkaW5nLWxlZnQiKSB8fCAwLCAxMCkgLSBwYXJzZUludCh3KGEsICJwYWRkaW5nLXJpZ2h0IikgfHwgMCwgMTApLCBzID0gcyAtIHBhcnNlSW50KHcoYSwgInBhZGRpbmctdG9wIikgfHwgMCwgMTApIC0gcGFyc2VJbnQodyhhLCAicGFkZGluZy1ib3R0b20iKSB8fCAwLCAxMCksIE51bWJlci5pc05hTih0KSAmJiAodCA9IDApLCBOdW1iZXIuaXNOYU4ocykgJiYgKHMgPSAwKSwgT2JqZWN0LmFzc2lnbihlLCB7CiAgICAgICAgICAgICAgICB3aWR0aDogdCwKICAgICAgICAgICAgICAgIGhlaWdodDogcywKICAgICAgICAgICAgICAgIHNpemU6IGUuaXNIb3Jpem9udGFsKCkgPyB0IDogcwogICAgICAgICAgICB9KSkKICAgICAgICB9LAogICAgICAgIHVwZGF0ZVNsaWRlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzOwoKICAgICAgICAgICAgZnVuY3Rpb24gdCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZS5pc0hvcml6b250YWwoKSA/IHQgOiB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICJoZWlnaHQiLAogICAgICAgICAgICAgICAgICAgICJtYXJnaW4tdG9wIjogIm1hcmdpbi1sZWZ0IiwKICAgICAgICAgICAgICAgICAgICAibWFyZ2luLWJvdHRvbSAiOiAibWFyZ2luLXJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAibWFyZ2luLWxlZnQiOiAibWFyZ2luLXRvcCIsCiAgICAgICAgICAgICAgICAgICAgIm1hcmdpbi1yaWdodCI6ICJtYXJnaW4tYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICAicGFkZGluZy1sZWZ0IjogInBhZGRpbmctdG9wIiwKICAgICAgICAgICAgICAgICAgICAicGFkZGluZy1yaWdodCI6ICJwYWRkaW5nLWJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICJtYXJnaW5Cb3R0b20iCiAgICAgICAgICAgICAgICB9W3RdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHMoZSwgcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoZS5nZXRQcm9wZXJ0eVZhbHVlKHQocykpIHx8IDApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYSA9IGUucGFyYW1zLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogaSwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNFbDogciwKICAgICAgICAgICAgICAgICAgICBzaXplOiBuLAogICAgICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogbCwKICAgICAgICAgICAgICAgICAgICB3cm9uZ1JUTDogbwogICAgICAgICAgICAgICAgfSA9IGUsCiAgICAgICAgICAgICAgICBkID0gZS52aXJ0dWFsICYmIGEudmlydHVhbC5lbmFibGVkLAogICAgICAgICAgICAgICAgYyA9IGQgPyBlLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IGUuc2xpZGVzLmxlbmd0aCwKICAgICAgICAgICAgICAgIHAgPSBmKHIsIGAuJHtlLnBhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCksCiAgICAgICAgICAgICAgICBtID0gZCA/IGUudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogcC5sZW5ndGg7CiAgICAgICAgICAgIGxldCBoID0gW107CiAgICAgICAgICAgIGNvbnN0IGcgPSBbXSwKICAgICAgICAgICAgICAgIHYgPSBbXTsKICAgICAgICAgICAgbGV0IGIgPSBhLnNsaWRlc09mZnNldEJlZm9yZTsKICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgYiAmJiAoYiA9IGEuc2xpZGVzT2Zmc2V0QmVmb3JlLmNhbGwoZSkpOwogICAgICAgICAgICBsZXQgeSA9IGEuc2xpZGVzT2Zmc2V0QWZ0ZXI7CiAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHkgJiYgKHkgPSBhLnNsaWRlc09mZnNldEFmdGVyLmNhbGwoZSkpOwogICAgICAgICAgICBjb25zdCBFID0gZS5zbmFwR3JpZC5sZW5ndGgsCiAgICAgICAgICAgICAgICBTID0gZS5zbGlkZXNHcmlkLmxlbmd0aDsKICAgICAgICAgICAgbGV0IFQgPSBhLnNwYWNlQmV0d2VlbiwKICAgICAgICAgICAgICAgIE0gPSAtYiwKICAgICAgICAgICAgICAgIEMgPSAwLAogICAgICAgICAgICAgICAgUCA9IDA7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IG4pIHJldHVybjsKICAgICAgICAgICAgInN0cmluZyIgPT0gdHlwZW9mIFQgJiYgVC5pbmRleE9mKCIlIikgPj0gMCAmJiAoVCA9IHBhcnNlRmxvYXQoVC5yZXBsYWNlKCIlIiwgIiIpKSAvIDEwMCAqIG4pLCBlLnZpcnR1YWxTaXplID0gLVQsIHAuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBsID8gZS5zdHlsZS5tYXJnaW5MZWZ0ID0gIiIgOiBlLnN0eWxlLm1hcmdpblJpZ2h0ID0gIiIsIGUuc3R5bGUubWFyZ2luQm90dG9tID0gIiIsIGUuc3R5bGUubWFyZ2luVG9wID0gIiIKICAgICAgICAgICAgfSkpLCBhLmNlbnRlcmVkU2xpZGVzICYmIGEuY3NzTW9kZSAmJiAodShpLCAiLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSIsICIiKSwgdShpLCAiLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyIiwgIiIpKTsKICAgICAgICAgICAgY29uc3QgTCA9IGEuZ3JpZCAmJiBhLmdyaWQucm93cyA+IDEgJiYgZS5ncmlkOwogICAgICAgICAgICBsZXQgQTsKICAgICAgICAgICAgTCAmJiBlLmdyaWQuaW5pdFNsaWRlcyhtKTsKICAgICAgICAgICAgY29uc3QgeiA9ICJhdXRvIiA9PT0gYS5zbGlkZXNQZXJWaWV3ICYmIGEuYnJlYWtwb2ludHMgJiYgT2JqZWN0LmtleXMoYS5icmVha3BvaW50cykuZmlsdGVyKChlID0+IHZvaWQgMCAhPT0gYS5icmVha3BvaW50c1tlXS5zbGlkZXNQZXJWaWV3KSkubGVuZ3RoID4gMDsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIGxldCByOwogICAgICAgICAgICAgICAgaWYgKEEgPSAwLCBwW2ldICYmIChyID0gcFtpXSksIEwgJiYgZS5ncmlkLnVwZGF0ZVNsaWRlKGksIHIsIG0sIHQpLCAhcFtpXSB8fCAibm9uZSIgIT09IHcociwgImRpc3BsYXkiKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgiYXV0byIgPT09IGEuc2xpZGVzUGVyVmlldykgewogICAgICAgICAgICAgICAgICAgICAgICB6ICYmIChwW2ldLnN0eWxlW3QoIndpZHRoIildID0gIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZ2V0Q29tcHV0ZWRTdHlsZShyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSByLnN0eWxlLnRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSByLnN0eWxlLndlYmtpdFRyYW5zZm9ybTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgJiYgKHIuc3R5bGUudHJhbnNmb3JtID0gIm5vbmUiKSwgbyAmJiAoci5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAibm9uZSIpLCBhLnJvdW5kTGVuZ3RocykgQSA9IGUuaXNIb3Jpem9udGFsKCkgPyB4KHIsICJ3aWR0aCIsICEwKSA6IHgociwgImhlaWdodCIsICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gcyhuLCAid2lkdGgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcyhuLCAicGFkZGluZy1sZWZ0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHMobiwgInBhZGRpbmctcmlnaHQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhuLCAibWFyZ2luLWxlZnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcyhuLCAibWFyZ2luLXJpZ2h0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4uZ2V0UHJvcGVydHlWYWx1ZSgiYm94LXNpemluZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG8gJiYgImJvcmRlci1ib3giID09PSBvKSBBID0gZSArIGkgKyBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRXaWR0aDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0V2lkdGg6IG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gZSArIHQgKyBhICsgaSArIGwgKyAobiAtIHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbCAmJiAoci5zdHlsZS50cmFuc2Zvcm0gPSBsKSwgbyAmJiAoci5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSBvKSwgYS5yb3VuZExlbmd0aHMgJiYgKEEgPSBNYXRoLmZsb29yKEEpKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBBID0gKG4gLSAoYS5zbGlkZXNQZXJWaWV3IC0gMSkgKiBUKSAvIGEuc2xpZGVzUGVyVmlldywgYS5yb3VuZExlbmd0aHMgJiYgKEEgPSBNYXRoLmZsb29yKEEpKSwgcFtpXSAmJiAocFtpXS5zdHlsZVt0KCJ3aWR0aCIpXSA9IGAke0F9cHhgKTsKICAgICAgICAgICAgICAgICAgICBwW2ldICYmIChwW2ldLnN3aXBlclNsaWRlU2l6ZSA9IEEpLCB2LnB1c2goQSksIGEuY2VudGVyZWRTbGlkZXMgPyAoTSA9IE0gKyBBIC8gMiArIEMgLyAyICsgVCwgMCA9PT0gQyAmJiAwICE9PSBpICYmIChNID0gTSAtIG4gLyAyIC0gVCksIDAgPT09IGkgJiYgKE0gPSBNIC0gbiAvIDIgLSBUKSwgTWF0aC5hYnMoTSkgPCAuMDAxICYmIChNID0gMCksIGEucm91bmRMZW5ndGhzICYmIChNID0gTWF0aC5mbG9vcihNKSksIFAgJSBhLnNsaWRlc1Blckdyb3VwID09IDAgJiYgaC5wdXNoKE0pLCBnLnB1c2goTSkpIDogKGEucm91bmRMZW5ndGhzICYmIChNID0gTWF0aC5mbG9vcihNKSksIChQIC0gTWF0aC5taW4oZS5wYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBQKSkgJSBlLnBhcmFtcy5zbGlkZXNQZXJHcm91cCA9PSAwICYmIGgucHVzaChNKSwgZy5wdXNoKE0pLCBNID0gTSArIEEgKyBUKSwgZS52aXJ0dWFsU2l6ZSArPSBBICsgVCwgQyA9IEEsIFAgKz0gMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlLnZpcnR1YWxTaXplID0gTWF0aC5tYXgoZS52aXJ0dWFsU2l6ZSwgbikgKyB5LCBsICYmIG8gJiYgKCJzbGlkZSIgPT09IGEuZWZmZWN0IHx8ICJjb3ZlcmZsb3ciID09PSBhLmVmZmVjdCkgJiYgKGkuc3R5bGUud2lkdGggPSBgJHtlLnZpcnR1YWxTaXplK2Euc3BhY2VCZXR3ZWVufXB4YCksIGEuc2V0V3JhcHBlclNpemUgJiYgKGkuc3R5bGVbdCgid2lkdGgiKV0gPSBgJHtlLnZpcnR1YWxTaXplK2Euc3BhY2VCZXR3ZWVufXB4YCksIEwgJiYgZS5ncmlkLnVwZGF0ZVdyYXBwZXJTaXplKEEsIGgsIHQpLCAhYS5jZW50ZXJlZFNsaWRlcykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IFtdOwogICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBoLmxlbmd0aDsgcyArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBoW3NdOwogICAgICAgICAgICAgICAgICAgIGEucm91bmRMZW5ndGhzICYmIChpID0gTWF0aC5mbG9vcihpKSksIGhbc10gPD0gZS52aXJ0dWFsU2l6ZSAtIG4gJiYgdC5wdXNoKGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoID0gdCwgTWF0aC5mbG9vcihlLnZpcnR1YWxTaXplIC0gbikgLSBNYXRoLmZsb29yKGhbaC5sZW5ndGggLSAxXSkgPiAxICYmIGgucHVzaChlLnZpcnR1YWxTaXplIC0gbikKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZCAmJiBhLmxvb3ApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB2WzBdICsgVDsKICAgICAgICAgICAgICAgIGlmIChhLnNsaWRlc1Blckdyb3VwID4gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBNYXRoLmNlaWwoKGUudmlydHVhbC5zbGlkZXNCZWZvcmUgKyBlLnZpcnR1YWwuc2xpZGVzQWZ0ZXIpIC8gYS5zbGlkZXNQZXJHcm91cCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ICogYS5zbGlkZXNQZXJHcm91cDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IHM7IGUgKz0gMSkgaC5wdXNoKGhbaC5sZW5ndGggLSAxXSArIGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGUudmlydHVhbC5zbGlkZXNCZWZvcmUgKyBlLnZpcnR1YWwuc2xpZGVzQWZ0ZXI7IHMgKz0gMSkgMSA9PT0gYS5zbGlkZXNQZXJHcm91cCAmJiBoLnB1c2goaFtoLmxlbmd0aCAtIDFdICsgdCksIGcucHVzaChnW2cubGVuZ3RoIC0gMV0gKyB0KSwgZS52aXJ0dWFsU2l6ZSArPSB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDAgPT09IGgubGVuZ3RoICYmIChoID0gWzBdKSwgMCAhPT0gYS5zcGFjZUJldHdlZW4pIHsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBlLmlzSG9yaXpvbnRhbCgpICYmIGwgPyAibWFyZ2luTGVmdCIgOiB0KCJtYXJnaW5SaWdodCIpOwogICAgICAgICAgICAgICAgcC5maWx0ZXIoKChlLCB0KSA9PiAhKGEuY3NzTW9kZSAmJiAhYS5sb29wKSB8fCB0ICE9PSBwLmxlbmd0aCAtIDEpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnN0eWxlW3NdID0gYCR7VH1weGAKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhLmNlbnRlcmVkU2xpZGVzICYmIGEuY2VudGVyZWRTbGlkZXNCb3VuZHMpIHsKICAgICAgICAgICAgICAgIGxldCBlID0gMDsKICAgICAgICAgICAgICAgIHYuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgZSArPSB0ICsgKGEuc3BhY2VCZXR3ZWVuID8gYS5zcGFjZUJldHdlZW4gOiAwKQogICAgICAgICAgICAgICAgfSkpLCBlIC09IGEuc3BhY2VCZXR3ZWVuOwogICAgICAgICAgICAgICAgY29uc3QgdCA9IGUgLSBuOwogICAgICAgICAgICAgICAgaCA9IGgubWFwKChlID0+IGUgPCAwID8gLWIgOiBlID4gdCA/IHQgKyB5IDogZSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGEuY2VudGVySW5zdWZmaWNpZW50U2xpZGVzKSB7CiAgICAgICAgICAgICAgICBsZXQgZSA9IDA7CiAgICAgICAgICAgICAgICBpZiAodi5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZSArPSB0ICsgKGEuc3BhY2VCZXR3ZWVuID8gYS5zcGFjZUJldHdlZW4gOiAwKQogICAgICAgICAgICAgICAgICAgIH0pKSwgZSAtPSBhLnNwYWNlQmV0d2VlbiwgZSA8IG4pIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gKG4gLSBlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgaC5mb3JFYWNoKCgoZSwgcykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBoW3NdID0gZSAtIHQKICAgICAgICAgICAgICAgICAgICB9KSksIGcuZm9yRWFjaCgoKGUsIHMpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZ1tzXSA9IGUgKyB0CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKE9iamVjdC5hc3NpZ24oZSwgewogICAgICAgICAgICAgICAgICAgIHNsaWRlczogcCwKICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogaCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNHcmlkOiBnLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1NpemVzR3JpZDogdgogICAgICAgICAgICAgICAgfSksIGEuY2VudGVyZWRTbGlkZXMgJiYgYS5jc3NNb2RlICYmICFhLmNlbnRlcmVkU2xpZGVzQm91bmRzKSB7CiAgICAgICAgICAgICAgICB1KGksICItLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlIiwgLWhbMF0gKyAicHgiKSwgdShpLCAiLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyIiwgZS5zaXplIC8gMiAtIHZbdi5sZW5ndGggLSAxXSAvIDIgKyAicHgiKTsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSAtZS5zbmFwR3JpZFswXSwKICAgICAgICAgICAgICAgICAgICBzID0gLWUuc2xpZGVzR3JpZFswXTsKICAgICAgICAgICAgICAgIGUuc25hcEdyaWQgPSBlLnNuYXBHcmlkLm1hcCgoZSA9PiBlICsgdCkpLCBlLnNsaWRlc0dyaWQgPSBlLnNsaWRlc0dyaWQubWFwKChlID0+IGUgKyBzKSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobSAhPT0gYyAmJiBlLmVtaXQoInNsaWRlc0xlbmd0aENoYW5nZSIpLCBoLmxlbmd0aCAhPT0gRSAmJiAoZS5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBlLmNoZWNrT3ZlcmZsb3coKSwgZS5lbWl0KCJzbmFwR3JpZExlbmd0aENoYW5nZSIpKSwgZy5sZW5ndGggIT09IFMgJiYgZS5lbWl0KCJzbGlkZXNHcmlkTGVuZ3RoQ2hhbmdlIiksIGEud2F0Y2hTbGlkZXNQcm9ncmVzcyAmJiBlLnVwZGF0ZVNsaWRlc09mZnNldCgpLCAhKGQgfHwgYS5jc3NNb2RlIHx8ICJzbGlkZSIgIT09IGEuZWZmZWN0ICYmICJmYWRlIiAhPT0gYS5lZmZlY3QpKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gYCR7YS5jb250YWluZXJNb2RpZmllckNsYXNzfWJhY2tmYWNlLWhpZGRlbmAsCiAgICAgICAgICAgICAgICAgICAgcyA9IGUuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHQpOwogICAgICAgICAgICAgICAgbSA8PSBhLm1heEJhY2tmYWNlSGlkZGVuU2xpZGVzID8gcyB8fCBlLmVsLmNsYXNzTGlzdC5hZGQodCkgOiBzICYmIGUuZWwuY2xhc3NMaXN0LnJlbW92ZSh0KQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB1cGRhdGVBdXRvSGVpZ2h0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLAogICAgICAgICAgICAgICAgcyA9IFtdLAogICAgICAgICAgICAgICAgYSA9IHQudmlydHVhbCAmJiB0LnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7CiAgICAgICAgICAgIGxldCBpLCByID0gMDsKICAgICAgICAgICAgIm51bWJlciIgPT0gdHlwZW9mIGUgPyB0LnNldFRyYW5zaXRpb24oZSkgOiAhMCA9PT0gZSAmJiB0LnNldFRyYW5zaXRpb24odC5wYXJhbXMuc3BlZWQpOwogICAgICAgICAgICBjb25zdCBuID0gZSA9PiBhID8gdC5zbGlkZXMuZmlsdGVyKCh0ID0+IHBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLCAxMCkgPT09IGUpKVswXSA6IHQuc2xpZGVzW2VdOwogICAgICAgICAgICBpZiAoImF1dG8iICE9PSB0LnBhcmFtcy5zbGlkZXNQZXJWaWV3ICYmIHQucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKQogICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSh0LnZpc2libGVTbGlkZXMgfHwgW10pLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgIHMucHVzaChlKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBNYXRoLmNlaWwodC5wYXJhbXMuc2xpZGVzUGVyVmlldyk7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdC5hY3RpdmVJbmRleCArIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlID4gdC5zbGlkZXMubGVuZ3RoICYmICFhKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgcy5wdXNoKG4oZSkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHMucHVzaChuKHQuYWN0aXZlSW5kZXgpKTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoOyBpICs9IDEpCiAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBzW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHNbaV0ub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIHIgPSBlID4gciA/IGUgOiByCiAgICAgICAgICAgICAgICB9KHIgfHwgMCA9PT0gcikgJiYgKHQud3JhcHBlckVsLnN0eWxlLmhlaWdodCA9IGAke3J9cHhgKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU2xpZGVzT2Zmc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICB0ID0gZS5zbGlkZXMsCiAgICAgICAgICAgICAgICBzID0gZS5pc0VsZW1lbnQgPyBlLmlzSG9yaXpvbnRhbCgpID8gZS53cmFwcGVyRWwub2Zmc2V0TGVmdCA6IGUud3JhcHBlckVsLm9mZnNldFRvcCA6IDA7CiAgICAgICAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgdC5sZW5ndGg7IGEgKz0gMSkgdFthXS5zd2lwZXJTbGlkZU9mZnNldCA9IChlLmlzSG9yaXpvbnRhbCgpID8gdFthXS5vZmZzZXRMZWZ0IDogdFthXS5vZmZzZXRUb3ApIC0gcwogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU2xpZGVzUHJvZ3Jlc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gdGhpcyAmJiB0aGlzLnRyYW5zbGF0ZSB8fCAwKTsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBzID0gdC5wYXJhbXMsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiBhLAogICAgICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogaSwKICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogcgogICAgICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgIGlmICgwID09PSBhLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICB2b2lkIDAgPT09IGFbMF0uc3dpcGVyU2xpZGVPZmZzZXQgJiYgdC51cGRhdGVTbGlkZXNPZmZzZXQoKTsKICAgICAgICAgICAgbGV0IG4gPSAtZTsKICAgICAgICAgICAgaSAmJiAobiA9IGUpLCBhLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QucmVtb3ZlKHMuc2xpZGVWaXNpYmxlQ2xhc3MpCiAgICAgICAgICAgIH0pKSwgdC52aXNpYmxlU2xpZGVzSW5kZXhlcyA9IFtdLCB0LnZpc2libGVTbGlkZXMgPSBbXTsKICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBhLmxlbmd0aDsgZSArPSAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCBsID0gYVtlXTsKICAgICAgICAgICAgICAgIGxldCBvID0gbC5zd2lwZXJTbGlkZU9mZnNldDsKICAgICAgICAgICAgICAgIHMuY3NzTW9kZSAmJiBzLmNlbnRlcmVkU2xpZGVzICYmIChvIC09IGFbMF0uc3dpcGVyU2xpZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgY29uc3QgZCA9IChuICsgKHMuY2VudGVyZWRTbGlkZXMgPyB0Lm1pblRyYW5zbGF0ZSgpIDogMCkgLSBvKSAvIChsLnN3aXBlclNsaWRlU2l6ZSArIHMuc3BhY2VCZXR3ZWVuKSwKICAgICAgICAgICAgICAgICAgICBjID0gKG4gLSByWzBdICsgKHMuY2VudGVyZWRTbGlkZXMgPyB0Lm1pblRyYW5zbGF0ZSgpIDogMCkgLSBvKSAvIChsLnN3aXBlclNsaWRlU2l6ZSArIHMuc3BhY2VCZXR3ZWVuKSwKICAgICAgICAgICAgICAgICAgICBwID0gLShuIC0gbyksCiAgICAgICAgICAgICAgICAgICAgdSA9IHAgKyB0LnNsaWRlc1NpemVzR3JpZFtlXTsKICAgICAgICAgICAgICAgIChwID49IDAgJiYgcCA8IHQuc2l6ZSAtIDEgfHwgdSA+IDEgJiYgdSA8PSB0LnNpemUgfHwgcCA8PSAwICYmIHUgPj0gdC5zaXplKSAmJiAodC52aXNpYmxlU2xpZGVzLnB1c2gobCksIHQudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaChlKSwgYVtlXS5jbGFzc0xpc3QuYWRkKHMuc2xpZGVWaXNpYmxlQ2xhc3MpKSwgbC5wcm9ncmVzcyA9IGkgPyAtZCA6IGQsIGwub3JpZ2luYWxQcm9ncmVzcyA9IGkgPyAtYyA6IGMKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlUHJvZ3Jlc3M6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXM7CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0LnJ0bFRyYW5zbGF0ZSA/IC0xIDogMTsKICAgICAgICAgICAgICAgIGUgPSB0ICYmIHQudHJhbnNsYXRlICYmIHQudHJhbnNsYXRlICogcyB8fCAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgcyA9IHQucGFyYW1zLAogICAgICAgICAgICAgICAgYSA9IHQubWF4VHJhbnNsYXRlKCkgLSB0Lm1pblRyYW5zbGF0ZSgpOwogICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IGksCiAgICAgICAgICAgICAgICBpc0JlZ2lubmluZzogciwKICAgICAgICAgICAgICAgIGlzRW5kOiBuLAogICAgICAgICAgICAgICAgcHJvZ3Jlc3NMb29wOiBsCiAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICBjb25zdCBvID0gciwKICAgICAgICAgICAgICAgIGQgPSBuOwogICAgICAgICAgICBpZiAoMCA9PT0gYSkgaSA9IDAsIHIgPSAhMCwgbiA9ICEwOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGkgPSAoZSAtIHQubWluVHJhbnNsYXRlKCkpIC8gYTsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBNYXRoLmFicyhlIC0gdC5taW5UcmFuc2xhdGUoKSkgPCAxLAogICAgICAgICAgICAgICAgICAgIGwgPSBNYXRoLmFicyhlIC0gdC5tYXhUcmFuc2xhdGUoKSkgPCAxOwogICAgICAgICAgICAgICAgciA9IHMgfHwgaSA8PSAwLCBuID0gbCB8fCBpID49IDEsIHMgJiYgKGkgPSAwKSwgbCAmJiAoaSA9IDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHMubG9vcCkgewogICAgICAgICAgICAgICAgY29uc3QgcyA9IGIodC5zbGlkZXMuZmlsdGVyKChlID0+ICIwIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikpKVswXSksCiAgICAgICAgICAgICAgICAgICAgYSA9IGIodC5zbGlkZXMuZmlsdGVyKChlID0+IDEgKiBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSA9PSB0LnNsaWRlcy5sZW5ndGggLSAxKSlbMF0pLAogICAgICAgICAgICAgICAgICAgIGkgPSB0LnNsaWRlc0dyaWRbc10sCiAgICAgICAgICAgICAgICAgICAgciA9IHQuc2xpZGVzR3JpZFthXSwKICAgICAgICAgICAgICAgICAgICBuID0gdC5zbGlkZXNHcmlkW3Quc2xpZGVzR3JpZC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgICAgICBvID0gTWF0aC5hYnMoZSk7CiAgICAgICAgICAgICAgICBsID0gbyA+PSBpID8gKG8gLSBpKSAvIG4gOiAobyArIG4gLSByKSAvIG4sIGwgPiAxICYmIChsIC09IDEpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0LCB7CiAgICAgICAgICAgICAgICBwcm9ncmVzczogaSwKICAgICAgICAgICAgICAgIHByb2dyZXNzTG9vcDogbCwKICAgICAgICAgICAgICAgIGlzQmVnaW5uaW5nOiByLAogICAgICAgICAgICAgICAgaXNFbmQ6IG4KICAgICAgICAgICAgfSksIChzLndhdGNoU2xpZGVzUHJvZ3Jlc3MgfHwgcy5jZW50ZXJlZFNsaWRlcyAmJiBzLmF1dG9IZWlnaHQpICYmIHQudXBkYXRlU2xpZGVzUHJvZ3Jlc3MoZSksIHIgJiYgIW8gJiYgdC5lbWl0KCJyZWFjaEJlZ2lubmluZyB0b0VkZ2UiKSwgbiAmJiAhZCAmJiB0LmVtaXQoInJlYWNoRW5kIHRvRWRnZSIpLCAobyAmJiAhciB8fCBkICYmICFuKSAmJiB0LmVtaXQoImZyb21FZGdlIiksIHQuZW1pdCgicHJvZ3Jlc3MiLCBpKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlU2xpZGVzQ2xhc3NlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNsaWRlczogdCwKICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHMsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzRWw6IGEsCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGkKICAgICAgICAgICAgICAgIH0gPSBlLAogICAgICAgICAgICAgICAgciA9IGUudmlydHVhbCAmJiBzLnZpcnR1YWwuZW5hYmxlZCwKICAgICAgICAgICAgICAgIG4gPSBlID0+IGYoYSwgYC4ke3Muc2xpZGVDbGFzc30ke2V9LCBzd2lwZXItc2xpZGUke2V9YClbMF07CiAgICAgICAgICAgIGxldCBsOwogICAgICAgICAgICBpZiAodC5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5yZW1vdmUocy5zbGlkZUFjdGl2ZUNsYXNzLCBzLnNsaWRlTmV4dENsYXNzLCBzLnNsaWRlUHJldkNsYXNzKQogICAgICAgICAgICAgICAgfSkpLCByKQogICAgICAgICAgICAgICAgaWYgKHMubG9vcCkgewogICAgICAgICAgICAgICAgICAgIGxldCB0ID0gaSAtIGUudmlydHVhbC5zbGlkZXNCZWZvcmU7CiAgICAgICAgICAgICAgICAgICAgdCA8IDAgJiYgKHQgPSBlLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCArIHQpLCB0ID49IGUudmlydHVhbC5zbGlkZXMubGVuZ3RoICYmICh0IC09IGUudmlydHVhbC5zbGlkZXMubGVuZ3RoKSwgbCA9IG4oYFtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHt0fSJdYCkKICAgICAgICAgICAgICAgIH0gZWxzZSBsID0gbihgW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke2l9Il1gKTsKICAgICAgICAgICAgZWxzZSBsID0gdFtpXTsKICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgIGwuY2xhc3NMaXN0LmFkZChzLnNsaWRlQWN0aXZlQ2xhc3MpOwogICAgICAgICAgICAgICAgbGV0IGUgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBlLm5leHRFbGVtZW50U2libGluZzspIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGUubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgICAgICAgICAgICAgICAgICAgICB0ID8gYS5tYXRjaGVzKHQpICYmIHMucHVzaChhKSA6IHMucHVzaChhKSwgZSA9IGEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgICAgICAgIH0obCwgYC4ke3Muc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApWzBdOwogICAgICAgICAgICAgICAgcy5sb29wICYmICFlICYmIChlID0gdFswXSksIGUgJiYgZS5jbGFzc0xpc3QuYWRkKHMuc2xpZGVOZXh0Q2xhc3MpOwogICAgICAgICAgICAgICAgbGV0IGEgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPyBhLm1hdGNoZXModCkgJiYgcy5wdXNoKGEpIDogcy5wdXNoKGEpLCBlID0gYQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICAgICAgICAgfShsLCBgLiR7cy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYClbMF07CiAgICAgICAgICAgICAgICBzLmxvb3AgJiYgMCA9PT0gIWEgJiYgKGEgPSB0W3QubGVuZ3RoIC0gMV0pLCBhICYmIGEuY2xhc3NMaXN0LmFkZChzLnNsaWRlUHJldkNsYXNzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGUuZW1pdFNsaWRlc0NsYXNzZXMoKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlQWN0aXZlSW5kZXg6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBzID0gdC5ydGxUcmFuc2xhdGUgPyB0LnRyYW5zbGF0ZSA6IC10LnRyYW5zbGF0ZSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogYSwKICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGksCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHIsCiAgICAgICAgICAgICAgICAgICAgcmVhbEluZGV4OiBuLAogICAgICAgICAgICAgICAgICAgIHNuYXBJbmRleDogbAogICAgICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgIGxldCBvLCBkID0gZTsKICAgICAgICAgICAgY29uc3QgYyA9IGUgPT4gewogICAgICAgICAgICAgICAgbGV0IHMgPSBlIC0gdC52aXJ0dWFsLnNsaWRlc0JlZm9yZTsKICAgICAgICAgICAgICAgIHJldHVybiBzIDwgMCAmJiAocyA9IHQudmlydHVhbC5zbGlkZXMubGVuZ3RoICsgcyksIHMgPj0gdC52aXJ0dWFsLnNsaWRlcy5sZW5ndGggJiYgKHMgLT0gdC52aXJ0dWFsLnNsaWRlcy5sZW5ndGgpLCBzCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGQgJiYgKGQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNHcmlkOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHMKICAgICAgICAgICAgICAgICAgICB9ID0gZSwgYSA9IGUucnRsVHJhbnNsYXRlID8gZS50cmFuc2xhdGUgOiAtZS50cmFuc2xhdGU7CiAgICAgICAgICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCB0Lmxlbmd0aDsgZSArPSAxKSB2b2lkIDAgIT09IHRbZSArIDFdID8gYSA+PSB0W2VdICYmIGEgPCB0W2UgKyAxXSAtICh0W2UgKyAxXSAtIHRbZV0pIC8gMiA/IGkgPSBlIDogYSA+PSB0W2VdICYmIGEgPCB0W2UgKyAxXSAmJiAoaSA9IGUgKyAxKSA6IGEgPj0gdFtlXSAmJiAoaSA9IGUpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzLm5vcm1hbGl6ZVNsaWRlSW5kZXggJiYgKGkgPCAwIHx8IHZvaWQgMCA9PT0gaSkgJiYgKGkgPSAwKSwgaQogICAgICAgICAgICAgICAgfSh0KSksIGEuaW5kZXhPZihzKSA+PSAwKSBvID0gYS5pbmRleE9mKHMpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBNYXRoLm1pbihpLnNsaWRlc1Blckdyb3VwU2tpcCwgZCk7CiAgICAgICAgICAgICAgICBvID0gZSArIE1hdGguZmxvb3IoKGQgLSBlKSAvIGkuc2xpZGVzUGVyR3JvdXApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG8gPj0gYS5sZW5ndGggJiYgKG8gPSBhLmxlbmd0aCAtIDEpLCBkID09PSByKSByZXR1cm4gbyAhPT0gbCAmJiAodC5zbmFwSW5kZXggPSBvLCB0LmVtaXQoInNuYXBJbmRleENoYW5nZSIpKSwgdm9pZCh0LnBhcmFtcy5sb29wICYmIHQudmlydHVhbCAmJiB0LnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgKHQucmVhbEluZGV4ID0gYyhkKSkpOwogICAgICAgICAgICBsZXQgcDsKICAgICAgICAgICAgcCA9IHQudmlydHVhbCAmJiBpLnZpcnR1YWwuZW5hYmxlZCAmJiBpLmxvb3AgPyBjKGQpIDogdC5zbGlkZXNbZF0gPyBwYXJzZUludCh0LnNsaWRlc1tkXS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgfHwgZCwgMTApIDogZCwgT2JqZWN0LmFzc2lnbih0LCB7CiAgICAgICAgICAgICAgICBzbmFwSW5kZXg6IG8sCiAgICAgICAgICAgICAgICByZWFsSW5kZXg6IHAsCiAgICAgICAgICAgICAgICBwcmV2aW91c0luZGV4OiByLAogICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGQKICAgICAgICAgICAgfSksIHQuZW1pdCgiYWN0aXZlSW5kZXhDaGFuZ2UiKSwgdC5lbWl0KCJzbmFwSW5kZXhDaGFuZ2UiKSwgbiAhPT0gcCAmJiB0LmVtaXQoInJlYWxJbmRleENoYW5nZSIpLCAodC5pbml0aWFsaXplZCB8fCB0LnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQpICYmIHQuZW1pdCgic2xpZGVDaGFuZ2UiKQogICAgICAgIH0sCiAgICAgICAgdXBkYXRlQ2xpY2tlZFNsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLAogICAgICAgICAgICAgICAgcyA9IHQucGFyYW1zLAogICAgICAgICAgICAgICAgYSA9IGUuY2xvc2VzdChgLiR7cy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCk7CiAgICAgICAgICAgIGxldCBpLCByID0gITE7CiAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCB0LnNsaWRlcy5sZW5ndGg7IGUgKz0gMSkKICAgICAgICAgICAgICAgICAgICBpZiAodC5zbGlkZXNbZV0gPT09IGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICEwLCBpID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghYSB8fCAhcikgcmV0dXJuIHQuY2xpY2tlZFNsaWRlID0gdm9pZCAwLCB2b2lkKHQuY2xpY2tlZEluZGV4ID0gdm9pZCAwKTsKICAgICAgICAgICAgdC5jbGlja2VkU2xpZGUgPSBhLCB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gdC5jbGlja2VkSW5kZXggPSBwYXJzZUludChhLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSwgMTApIDogdC5jbGlja2VkSW5kZXggPSBpLCBzLnNsaWRlVG9DbGlja2VkU2xpZGUgJiYgdm9pZCAwICE9PSB0LmNsaWNrZWRJbmRleCAmJiB0LmNsaWNrZWRJbmRleCAhPT0gdC5hY3RpdmVJbmRleCAmJiB0LnNsaWRlVG9DbGlja2VkU2xpZGUoKQogICAgICAgIH0KICAgIH07CiAgICB2YXIgJCA9IHsKICAgICAgICBnZXRUcmFuc2xhdGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5pc0hvcml6b250YWwoKSA/ICJ4IiA6ICJ5Iik7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHBhcmFtczogdCwKICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogcywKICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogYSwKICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogaQogICAgICAgICAgICB9ID0gdGhpczsKICAgICAgICAgICAgaWYgKHQudmlydHVhbFRyYW5zbGF0ZSkgcmV0dXJuIHMgPyAtYSA6IGE7CiAgICAgICAgICAgIGlmICh0LmNzc01vZGUpIHJldHVybiBhOwogICAgICAgICAgICBsZXQgciA9IG8oaSwgZSk7CiAgICAgICAgICAgIHJldHVybiBzICYmIChyID0gLXIpLCByIHx8IDAKICAgICAgICB9LAogICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICBjb25zdCBzID0gdGhpcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBydGxUcmFuc2xhdGU6IGEsCiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBpLAogICAgICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogciwKICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogbgogICAgICAgICAgICAgICAgfSA9IHM7CiAgICAgICAgICAgIGxldCBsLCBvID0gMCwKICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICBzLmlzSG9yaXpvbnRhbCgpID8gbyA9IGEgPyAtZSA6IGUgOiBkID0gZSwgaS5yb3VuZExlbmd0aHMgJiYgKG8gPSBNYXRoLmZsb29yKG8pLCBkID0gTWF0aC5mbG9vcihkKSksIGkuY3NzTW9kZSA/IHJbcy5pc0hvcml6b250YWwoKSA/ICJzY3JvbGxMZWZ0IiA6ICJzY3JvbGxUb3AiXSA9IHMuaXNIb3Jpem9udGFsKCkgPyAtbyA6IC1kIDogaS52aXJ0dWFsVHJhbnNsYXRlIHx8IChyLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke299cHgsICR7ZH1weCwgMHB4KWApLCBzLnByZXZpb3VzVHJhbnNsYXRlID0gcy50cmFuc2xhdGUsIHMudHJhbnNsYXRlID0gcy5pc0hvcml6b250YWwoKSA/IG8gOiBkOwogICAgICAgICAgICBjb25zdCBjID0gcy5tYXhUcmFuc2xhdGUoKSAtIHMubWluVHJhbnNsYXRlKCk7CiAgICAgICAgICAgIGwgPSAwID09PSBjID8gMCA6IChlIC0gcy5taW5UcmFuc2xhdGUoKSkgLyBjLCBsICE9PSBuICYmIHMudXBkYXRlUHJvZ3Jlc3MoZSksIHMuZW1pdCgic2V0VHJhbnNsYXRlIiwgcy50cmFuc2xhdGUsIHQpCiAgICAgICAgfSwKICAgICAgICBtaW5UcmFuc2xhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gLXRoaXMuc25hcEdyaWRbMF0KICAgICAgICB9LAogICAgICAgIG1heFRyYW5zbGF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiAtdGhpcy5zbmFwR3JpZFt0aGlzLnNuYXBHcmlkLmxlbmd0aCAtIDFdCiAgICAgICAgfSwKICAgICAgICB0cmFuc2xhdGVUbzogZnVuY3Rpb24oZSwgdCwgcywgYSwgaSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAwKSwgdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcy5wYXJhbXMuc3BlZWQpLCB2b2lkIDAgPT09IHMgJiYgKHMgPSAhMCksIHZvaWQgMCA9PT0gYSAmJiAoYSA9ICEwKTsKICAgICAgICAgICAgY29uc3QgciA9IHRoaXMsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBuLAogICAgICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogbAogICAgICAgICAgICAgICAgfSA9IHI7CiAgICAgICAgICAgIGlmIChyLmFuaW1hdGluZyAmJiBuLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikgcmV0dXJuICExOwogICAgICAgICAgICBjb25zdCBvID0gci5taW5UcmFuc2xhdGUoKSwKICAgICAgICAgICAgICAgIGQgPSByLm1heFRyYW5zbGF0ZSgpOwogICAgICAgICAgICBsZXQgYzsKICAgICAgICAgICAgaWYgKGMgPSBhICYmIGUgPiBvID8gbyA6IGEgJiYgZSA8IGQgPyBkIDogZSwgci51cGRhdGVQcm9ncmVzcyhjKSwgbi5jc3NNb2RlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gci5pc0hvcml6b250YWwoKTsKICAgICAgICAgICAgICAgIGlmICgwID09PSB0KSBsW2UgPyAic2Nyb2xsTGVmdCIgOiAic2Nyb2xsVG9wIl0gPSAtYzsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICghci5zdXBwb3J0LnNtb290aFNjcm9sbCkgcmV0dXJuIG0oewogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBvc2l0aW9uOiAtYywKICAgICAgICAgICAgICAgICAgICAgICAgc2lkZTogZSA/ICJsZWZ0IiA6ICJ0b3AiCiAgICAgICAgICAgICAgICAgICAgfSksICEwOwogICAgICAgICAgICAgICAgICAgIGwuc2Nyb2xsVG8oewogICAgICAgICAgICAgICAgICAgICAgICBbZSA/ICJsZWZ0IiA6ICJ0b3AiXTogLWMsCiAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAic21vb3RoIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMCA9PT0gdCA/IChyLnNldFRyYW5zaXRpb24oMCksIHIuc2V0VHJhbnNsYXRlKGMpLCBzICYmIChyLmVtaXQoImJlZm9yZVRyYW5zaXRpb25TdGFydCIsIHQsIGkpLCByLmVtaXQoInRyYW5zaXRpb25FbmQiKSkpIDogKHIuc2V0VHJhbnNpdGlvbih0KSwgci5zZXRUcmFuc2xhdGUoYyksIHMgJiYgKHIuZW1pdCgiYmVmb3JlVHJhbnNpdGlvblN0YXJ0IiwgdCwgaSksIHIuZW1pdCgidHJhbnNpdGlvblN0YXJ0IikpLCByLmFuaW1hdGluZyB8fCAoci5hbmltYXRpbmcgPSAhMCwgci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgfHwgKHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgciAmJiAhci5kZXN0cm95ZWQgJiYgZS50YXJnZXQgPT09IHRoaXMgJiYgKHIud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCByLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCksIHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbCwgZGVsZXRlIHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kLCBzICYmIHIuZW1pdCgidHJhbnNpdGlvbkVuZCIpKQogICAgICAgICAgICB9KSwgci53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSkpLCAhMAogICAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gayhlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBydW5DYWxsYmFja3M6IHMsCiAgICAgICAgICAgIGRpcmVjdGlvbjogYSwKICAgICAgICAgICAgc3RlcDogaQogICAgICAgIH0gPSBlOwogICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHIsCiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IG4KICAgICAgICB9ID0gdDsKICAgICAgICBsZXQgbCA9IGE7CiAgICAgICAgaWYgKGwgfHwgKGwgPSByID4gbiA/ICJuZXh0IiA6IHIgPCBuID8gInByZXYiIDogInJlc2V0IiksIHQuZW1pdChgdHJhbnNpdGlvbiR7aX1gKSwgcyAmJiByICE9PSBuKSB7CiAgICAgICAgICAgIGlmICgicmVzZXQiID09PSBsKSByZXR1cm4gdm9pZCB0LmVtaXQoYHNsaWRlUmVzZXRUcmFuc2l0aW9uJHtpfWApOwogICAgICAgICAgICB0LmVtaXQoYHNsaWRlQ2hhbmdlVHJhbnNpdGlvbiR7aX1gKSwgIm5leHQiID09PSBsID8gdC5lbWl0KGBzbGlkZU5leHRUcmFuc2l0aW9uJHtpfWApIDogdC5lbWl0KGBzbGlkZVByZXZUcmFuc2l0aW9uJHtpfWApCiAgICAgICAgfQogICAgfQogICAgdmFyIEkgPSB7CiAgICAgICAgc2xpZGVUbzogZnVuY3Rpb24oZSwgdCwgcywgYSwgaSkgewogICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSAwKSwgdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcy5wYXJhbXMuc3BlZWQpLCB2b2lkIDAgPT09IHMgJiYgKHMgPSAhMCksICJzdHJpbmciID09IHR5cGVvZiBlICYmIChlID0gcGFyc2VJbnQoZSwgMTApKTsKICAgICAgICAgICAgY29uc3QgciA9IHRoaXM7CiAgICAgICAgICAgIGxldCBuID0gZTsKICAgICAgICAgICAgbiA8IDAgJiYgKG4gPSAwKTsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgcGFyYW1zOiBsLAogICAgICAgICAgICAgICAgc25hcEdyaWQ6IG8sCiAgICAgICAgICAgICAgICBzbGlkZXNHcmlkOiBkLAogICAgICAgICAgICAgICAgcHJldmlvdXNJbmRleDogYywKICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBwLAogICAgICAgICAgICAgICAgcnRsVHJhbnNsYXRlOiB1LAogICAgICAgICAgICAgICAgd3JhcHBlckVsOiBoLAogICAgICAgICAgICAgICAgZW5hYmxlZDogZgogICAgICAgICAgICB9ID0gcjsKICAgICAgICAgICAgaWYgKHIuYW5pbWF0aW5nICYmIGwucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uIHx8ICFmICYmICFhICYmICFpKSByZXR1cm4gITE7CiAgICAgICAgICAgIGNvbnN0IGcgPSBNYXRoLm1pbihyLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsIG4pOwogICAgICAgICAgICBsZXQgdiA9IGcgKyBNYXRoLmZsb29yKChuIC0gZykgLyByLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7CiAgICAgICAgICAgIHYgPj0gby5sZW5ndGggJiYgKHYgPSBvLmxlbmd0aCAtIDEpOwogICAgICAgICAgICBjb25zdCB3ID0gLW9bdl07CiAgICAgICAgICAgIGlmIChsLm5vcm1hbGl6ZVNsaWRlSW5kZXgpCiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IGQubGVuZ3RoOyBlICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gLU1hdGguZmxvb3IoMTAwICogdyksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBNYXRoLmZsb29yKDEwMCAqIGRbZV0pLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gTWF0aC5mbG9vcigxMDAgKiBkW2UgKyAxXSk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBkW2UgKyAxXSA/IHQgPj0gcyAmJiB0IDwgYSAtIChhIC0gcykgLyAyID8gbiA9IGUgOiB0ID49IHMgJiYgdCA8IGEgJiYgKG4gPSBlICsgMSkgOiB0ID49IHMgJiYgKG4gPSBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoci5pbml0aWFsaXplZCAmJiBuICE9PSBwKSB7CiAgICAgICAgICAgICAgICBpZiAoIXIuYWxsb3dTbGlkZU5leHQgJiYgdyA8IHIudHJhbnNsYXRlICYmIHcgPCByLm1pblRyYW5zbGF0ZSgpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICBpZiAoIXIuYWxsb3dTbGlkZVByZXYgJiYgdyA+IHIudHJhbnNsYXRlICYmIHcgPiByLm1heFRyYW5zbGF0ZSgpICYmIChwIHx8IDApICE9PSBuKSByZXR1cm4gITEKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgYjsKICAgICAgICAgICAgaWYgKG4gIT09IChjIHx8IDApICYmIHMgJiYgci5lbWl0KCJiZWZvcmVTbGlkZUNoYW5nZVN0YXJ0IiksIHIudXBkYXRlUHJvZ3Jlc3ModyksIGIgPSBuID4gcCA/ICJuZXh0IiA6IG4gPCBwID8gInByZXYiIDogInJlc2V0IiwgdSAmJiAtdyA9PT0gci50cmFuc2xhdGUgfHwgIXUgJiYgdyA9PT0gci50cmFuc2xhdGUpIHJldHVybiByLnVwZGF0ZUFjdGl2ZUluZGV4KG4pLCBsLmF1dG9IZWlnaHQgJiYgci51cGRhdGVBdXRvSGVpZ2h0KCksIHIudXBkYXRlU2xpZGVzQ2xhc3NlcygpLCAic2xpZGUiICE9PSBsLmVmZmVjdCAmJiByLnNldFRyYW5zbGF0ZSh3KSwgInJlc2V0IiAhPT0gYiAmJiAoci50cmFuc2l0aW9uU3RhcnQocywgYiksIHIudHJhbnNpdGlvbkVuZChzLCBiKSksICExOwogICAgICAgICAgICBpZiAobC5jc3NNb2RlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gci5pc0hvcml6b250YWwoKSwKICAgICAgICAgICAgICAgICAgICBzID0gdSA/IHcgOiAtdzsKICAgICAgICAgICAgICAgIGlmICgwID09PSB0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHIudmlydHVhbCAmJiByLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7CiAgICAgICAgICAgICAgICAgICAgdCAmJiAoci53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAibm9uZSIsIHIuX2ltbWVkaWF0ZVZpcnR1YWwgPSAhMCksIHQgJiYgIXIuX2Nzc01vZGVWaXJ0dWFsSW5pdGlhbFNldCAmJiByLnBhcmFtcy5pbml0aWFsU2xpZGUgPiAwID8gKHIuX2Nzc01vZGVWaXJ0dWFsSW5pdGlhbFNldCA9ICEwLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaFtlID8gInNjcm9sbExlZnQiIDogInNjcm9sbFRvcCJdID0gcwogICAgICAgICAgICAgICAgICAgIH0pKSkgOiBoW2UgPyAic2Nyb2xsTGVmdCIgOiAic2Nyb2xsVG9wIl0gPSBzLCB0ICYmIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICByLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICIiLCByLl9pbW1lZGlhdGVWaXJ0dWFsID0gITEKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyLnN1cHBvcnQuc21vb3RoU2Nyb2xsKSByZXR1cm4gbSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXBlcjogciwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UG9zaXRpb246IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZGU6IGUgPyAibGVmdCIgOiAidG9wIgogICAgICAgICAgICAgICAgICAgIH0pLCAhMDsKICAgICAgICAgICAgICAgICAgICBoLnNjcm9sbFRvKHsKICAgICAgICAgICAgICAgICAgICAgICAgW2UgPyAibGVmdCIgOiAidG9wIl06IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAic21vb3RoIgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gci5zZXRUcmFuc2l0aW9uKHQpLCByLnNldFRyYW5zbGF0ZSh3KSwgci51cGRhdGVBY3RpdmVJbmRleChuKSwgci51cGRhdGVTbGlkZXNDbGFzc2VzKCksIHIuZW1pdCgiYmVmb3JlVHJhbnNpdGlvblN0YXJ0IiwgdCwgYSksIHIudHJhbnNpdGlvblN0YXJ0KHMsIGIpLCAwID09PSB0ID8gci50cmFuc2l0aW9uRW5kKHMsIGIpIDogci5hbmltYXRpbmcgfHwgKHIuYW5pbWF0aW5nID0gITAsIHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgfHwgKHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByICYmICFyLmRlc3Ryb3llZCAmJiBlLnRhcmdldCA9PT0gdGhpcyAmJiAoci53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpLCByLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbCwgZGVsZXRlIHIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQsIHIudHJhbnNpdGlvbkVuZChzLCBiKSkKICAgICAgICAgICAgfSksIHIud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCByLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSksICEwCiAgICAgICAgfSwKICAgICAgICBzbGlkZVRvTG9vcDogZnVuY3Rpb24oZSwgdCwgcywgYSkgewogICAgICAgICAgICBpZiAodm9pZCAwID09PSBlICYmIChlID0gMCksIHZvaWQgMCA9PT0gdCAmJiAodCA9IHRoaXMucGFyYW1zLnNwZWVkKSwgdm9pZCAwID09PSBzICYmIChzID0gITApLCAic3RyaW5nIiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICAgICAgZSA9IHBhcnNlSW50KGUsIDEwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzOwogICAgICAgICAgICBsZXQgciA9IGU7CiAgICAgICAgICAgIHJldHVybiBpLnBhcmFtcy5sb29wICYmIChpLnZpcnR1YWwgJiYgaS5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gciArPSBpLnZpcnR1YWwuc2xpZGVzQmVmb3JlIDogciA9IGIoaS5zbGlkZXMuZmlsdGVyKChlID0+IDEgKiBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKSA9PT0gcikpWzBdKSksIGkuc2xpZGVUbyhyLCB0LCBzLCBhKQogICAgICAgIH0sCiAgICAgICAgc2xpZGVOZXh0OiBmdW5jdGlvbihlLCB0LCBzKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHRoaXMucGFyYW1zLnNwZWVkKSwgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICBjb25zdCBhID0gdGhpcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBpLAogICAgICAgICAgICAgICAgICAgIHBhcmFtczogciwKICAgICAgICAgICAgICAgICAgICBhbmltYXRpbmc6IG4KICAgICAgICAgICAgICAgIH0gPSBhOwogICAgICAgICAgICBpZiAoIWkpIHJldHVybiBhOwogICAgICAgICAgICBsZXQgbCA9IHIuc2xpZGVzUGVyR3JvdXA7CiAgICAgICAgICAgICJhdXRvIiA9PT0gci5zbGlkZXNQZXJWaWV3ICYmIDEgPT09IHIuc2xpZGVzUGVyR3JvdXAgJiYgci5zbGlkZXNQZXJHcm91cEF1dG8gJiYgKGwgPSBNYXRoLm1heChhLnNsaWRlc1BlclZpZXdEeW5hbWljKCJjdXJyZW50IiwgITApLCAxKSk7CiAgICAgICAgICAgIGNvbnN0IG8gPSBhLmFjdGl2ZUluZGV4IDwgci5zbGlkZXNQZXJHcm91cFNraXAgPyAxIDogbCwKICAgICAgICAgICAgICAgIGQgPSBhLnZpcnR1YWwgJiYgci52aXJ0dWFsLmVuYWJsZWQ7CiAgICAgICAgICAgIGlmIChyLmxvb3ApIHsKICAgICAgICAgICAgICAgIGlmIChuICYmICFkICYmIHIubG9vcFByZXZlbnRzU2xpZGluZykgcmV0dXJuICExOwogICAgICAgICAgICAgICAgYS5sb29wRml4KHsKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICJuZXh0IgogICAgICAgICAgICAgICAgfSksIGEuX2NsaWVudExlZnQgPSBhLndyYXBwZXJFbC5jbGllbnRMZWZ0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHIucmV3aW5kICYmIGEuaXNFbmQgPyBhLnNsaWRlVG8oMCwgZSwgdCwgcykgOiBhLnNsaWRlVG8oYS5hY3RpdmVJbmRleCArIG8sIGUsIHQsIHMpCiAgICAgICAgfSwKICAgICAgICBzbGlkZVByZXY6IGZ1bmN0aW9uKGUsIHQsIHMpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gdGhpcy5wYXJhbXMuc3BlZWQpLCB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHBhcmFtczogaSwKICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogciwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNHcmlkOiBuLAogICAgICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogbCwKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBvLAogICAgICAgICAgICAgICAgICAgIGFuaW1hdGluZzogZAogICAgICAgICAgICAgICAgfSA9IGE7CiAgICAgICAgICAgIGlmICghbykgcmV0dXJuIGE7CiAgICAgICAgICAgIGNvbnN0IGMgPSBhLnZpcnR1YWwgJiYgaS52aXJ0dWFsLmVuYWJsZWQ7CiAgICAgICAgICAgIGlmIChpLmxvb3ApIHsKICAgICAgICAgICAgICAgIGlmIChkICYmICFjICYmIGkubG9vcFByZXZlbnRzU2xpZGluZykgcmV0dXJuICExOwogICAgICAgICAgICAgICAgYS5sb29wRml4KHsKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICJwcmV2IgogICAgICAgICAgICAgICAgfSksIGEuX2NsaWVudExlZnQgPSBhLndyYXBwZXJFbC5jbGllbnRMZWZ0CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHAoZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUgPCAwID8gLU1hdGguZmxvb3IoTWF0aC5hYnMoZSkpIDogTWF0aC5mbG9vcihlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHUgPSBwKGwgPyBhLnRyYW5zbGF0ZSA6IC1hLnRyYW5zbGF0ZSksCiAgICAgICAgICAgICAgICBtID0gci5tYXAoKGUgPT4gcChlKSkpOwogICAgICAgICAgICBsZXQgaCA9IHJbbS5pbmRleE9mKHUpIC0gMV07CiAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGggJiYgaS5jc3NNb2RlKSB7CiAgICAgICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgICAgIHIuZm9yRWFjaCgoKHQsIHMpID0+IHsKICAgICAgICAgICAgICAgICAgICB1ID49IHQgJiYgKGUgPSBzKQogICAgICAgICAgICAgICAgfSkpLCB2b2lkIDAgIT09IGUgJiYgKGggPSByW2UgPiAwID8gZSAtIDEgOiBlXSkKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgZiA9IDA7CiAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGggJiYgKGYgPSBuLmluZGV4T2YoaCksIGYgPCAwICYmIChmID0gYS5hY3RpdmVJbmRleCAtIDEpLCAiYXV0byIgPT09IGkuc2xpZGVzUGVyVmlldyAmJiAxID09PSBpLnNsaWRlc1Blckdyb3VwICYmIGkuc2xpZGVzUGVyR3JvdXBBdXRvICYmIChmID0gZiAtIGEuc2xpZGVzUGVyVmlld0R5bmFtaWMoInByZXZpb3VzIiwgITApICsgMSwgZiA9IE1hdGgubWF4KGYsIDApKSksIGkucmV3aW5kICYmIGEuaXNCZWdpbm5pbmcpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBhLnBhcmFtcy52aXJ0dWFsICYmIGEucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBhLnZpcnR1YWwgPyBhLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCAtIDEgOiBhLnNsaWRlcy5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgcmV0dXJuIGEuc2xpZGVUbyhpLCBlLCB0LCBzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhLnNsaWRlVG8oZiwgZSwgdCwgcykKICAgICAgICB9LAogICAgICAgIHNsaWRlUmVzZXQ6IGZ1bmN0aW9uKGUsIHQsIHMpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHRoaXMucGFyYW1zLnNwZWVkKSwgdm9pZCAwID09PSB0ICYmICh0ID0gITApLCB0aGlzLnNsaWRlVG8odGhpcy5hY3RpdmVJbmRleCwgZSwgdCwgcykKICAgICAgICB9LAogICAgICAgIHNsaWRlVG9DbG9zZXN0OiBmdW5jdGlvbihlLCB0LCBzLCBhKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHRoaXMucGFyYW1zLnNwZWVkKSwgdm9pZCAwID09PSB0ICYmICh0ID0gITApLCB2b2lkIDAgPT09IGEgJiYgKGEgPSAuNSk7CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzOwogICAgICAgICAgICBsZXQgciA9IGkuYWN0aXZlSW5kZXg7CiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihpLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsIHIpLAogICAgICAgICAgICAgICAgbCA9IG4gKyBNYXRoLmZsb29yKChyIC0gbikgLyBpLnBhcmFtcy5zbGlkZXNQZXJHcm91cCksCiAgICAgICAgICAgICAgICBvID0gaS5ydGxUcmFuc2xhdGUgPyBpLnRyYW5zbGF0ZSA6IC1pLnRyYW5zbGF0ZTsKICAgICAgICAgICAgaWYgKG8gPj0gaS5zbmFwR3JpZFtsXSkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IGkuc25hcEdyaWRbbF07CiAgICAgICAgICAgICAgICBvIC0gZSA+IChpLnNuYXBHcmlkW2wgKyAxXSAtIGUpICogYSAmJiAociArPSBpLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBpLnNuYXBHcmlkW2wgLSAxXTsKICAgICAgICAgICAgICAgIG8gLSBlIDw9IChpLnNuYXBHcmlkW2xdIC0gZSkgKiBhICYmIChyIC09IGkucGFyYW1zLnNsaWRlc1Blckdyb3VwKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByID0gTWF0aC5tYXgociwgMCksIHIgPSBNYXRoLm1pbihyLCBpLnNsaWRlc0dyaWQubGVuZ3RoIC0gMSksIGkuc2xpZGVUbyhyLCBlLCB0LCBzKQogICAgICAgIH0sCiAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHBhcmFtczogdCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNFbDogcwogICAgICAgICAgICAgICAgfSA9IGUsCiAgICAgICAgICAgICAgICBhID0gImF1dG8iID09PSB0LnNsaWRlc1BlclZpZXcgPyBlLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiB0LnNsaWRlc1BlclZpZXc7CiAgICAgICAgICAgIGxldCBpLCByID0gZS5jbGlja2VkSW5kZXg7CiAgICAgICAgICAgIGNvbnN0IGwgPSBlLmlzRWxlbWVudCA/ICJzd2lwZXItc2xpZGUiIDogYC4ke3Quc2xpZGVDbGFzc31gOwogICAgICAgICAgICBpZiAodC5sb29wKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5hbmltYXRpbmcpIHJldHVybjsKICAgICAgICAgICAgICAgIGkgPSBwYXJzZUludChlLmNsaWNrZWRTbGlkZS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksIDEwKSwgdC5jZW50ZXJlZFNsaWRlcyA/IHIgPCBlLmxvb3BlZFNsaWRlcyAtIGEgLyAyIHx8IHIgPiBlLnNsaWRlcy5sZW5ndGggLSBlLmxvb3BlZFNsaWRlcyArIGEgLyAyID8gKGUubG9vcEZpeCgpLCByID0gYihmKHMsIGAke2x9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke2l9Il1gKVswXSksIG4oKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnNsaWRlVG8ocikKICAgICAgICAgICAgICAgIH0pKSkgOiBlLnNsaWRlVG8ocikgOiByID4gZS5zbGlkZXMubGVuZ3RoIC0gYSA/IChlLmxvb3BGaXgoKSwgciA9IGIoZihzLCBgJHtsfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD0iJHtpfSJdYClbMF0pLCBuKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZS5zbGlkZVRvKHIpCiAgICAgICAgICAgICAgICB9KSkpIDogZS5zbGlkZVRvKHIpCiAgICAgICAgICAgIH0gZWxzZSBlLnNsaWRlVG8ocikKICAgICAgICB9CiAgICB9OwogICAgdmFyIE8gPSB7CiAgICAgICAgbG9vcENyZWF0ZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjb25zdCB0ID0gdGhpcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHMsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzRWw6IGEKICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICBpZiAoIXMubG9vcCB8fCB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkKSByZXR1cm47CiAgICAgICAgICAgIGYoYSwgYC4ke3Muc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApLmZvckVhY2goKChlLCB0KSA9PiB7CiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiLCB0KQogICAgICAgICAgICB9KSksIHQubG9vcEZpeCh7CiAgICAgICAgICAgICAgICBzbGlkZVJlYWxJbmRleDogZSwKICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogcy5jZW50ZXJlZFNsaWRlcyA/IHZvaWQgMCA6ICJuZXh0IgogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgbG9vcEZpeDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgc2xpZGVSZWFsSW5kZXg6IHQsCiAgICAgICAgICAgICAgICBzbGlkZVRvOiBzID0gITAsCiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGEsCiAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGksCiAgICAgICAgICAgICAgICBhY3RpdmVTbGlkZUluZGV4OiByLAogICAgICAgICAgICAgICAgYnlDb250cm9sbGVyOiBuLAogICAgICAgICAgICAgICAgYnlNb3VzZXdoZWVsOiBsCiAgICAgICAgICAgIH0gPSB2b2lkIDAgPT09IGUgPyB7fSA6IGU7CiAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzOwogICAgICAgICAgICBpZiAoIW8ucGFyYW1zLmxvb3ApIHJldHVybjsKICAgICAgICAgICAgby5lbWl0KCJiZWZvcmVMb29wRml4Iik7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHNsaWRlczogZCwKICAgICAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiBjLAogICAgICAgICAgICAgICAgYWxsb3dTbGlkZU5leHQ6IHAsCiAgICAgICAgICAgICAgICBzbGlkZXNFbDogdSwKICAgICAgICAgICAgICAgIHBhcmFtczogbQogICAgICAgICAgICB9ID0gbzsKICAgICAgICAgICAgaWYgKG8uYWxsb3dTbGlkZVByZXYgPSAhMCwgby5hbGxvd1NsaWRlTmV4dCA9ICEwLCBvLnZpcnR1YWwgJiYgbS52aXJ0dWFsLmVuYWJsZWQpIHJldHVybiBzICYmIChtLmNlbnRlcmVkU2xpZGVzIHx8IDAgIT09IG8uc25hcEluZGV4ID8gbS5jZW50ZXJlZFNsaWRlcyAmJiBvLnNuYXBJbmRleCA8IG0uc2xpZGVzUGVyVmlldyA/IG8uc2xpZGVUbyhvLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCArIG8uc25hcEluZGV4LCAwLCAhMSwgITApIDogby5zbmFwSW5kZXggPT09IG8uc25hcEdyaWQubGVuZ3RoIC0gMSAmJiBvLnNsaWRlVG8oby52aXJ0dWFsLnNsaWRlc0JlZm9yZSwgMCwgITEsICEwKSA6IG8uc2xpZGVUbyhvLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCwgMCwgITEsICEwKSksIG8uYWxsb3dTbGlkZVByZXYgPSBjLCBvLmFsbG93U2xpZGVOZXh0ID0gcCwgdm9pZCBvLmVtaXQoImxvb3BGaXgiKTsKICAgICAgICAgICAgY29uc3QgaCA9ICJhdXRvIiA9PT0gbS5zbGlkZXNQZXJWaWV3ID8gby5zbGlkZXNQZXJWaWV3RHluYW1pYygpIDogTWF0aC5jZWlsKHBhcnNlRmxvYXQobS5zbGlkZXNQZXJWaWV3LCAxMCkpOwogICAgICAgICAgICBsZXQgZiA9IG0ubG9vcGVkU2xpZGVzIHx8IGg7CiAgICAgICAgICAgIGYgJSBtLnNsaWRlc1Blckdyb3VwICE9IDAgJiYgKGYgKz0gbS5zbGlkZXNQZXJHcm91cCAtIGYgJSBtLnNsaWRlc1Blckdyb3VwKSwgby5sb29wZWRTbGlkZXMgPSBmOwogICAgICAgICAgICBjb25zdCBnID0gW10sCiAgICAgICAgICAgICAgICB2ID0gW107CiAgICAgICAgICAgIGxldCB3ID0gby5hY3RpdmVJbmRleDsKICAgICAgICAgICAgdm9pZCAwID09PSByID8gciA9IGIoby5zbGlkZXMuZmlsdGVyKChlID0+IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJzd2lwZXItc2xpZGUtYWN0aXZlIikpKVswXSkgOiB3ID0gcjsKICAgICAgICAgICAgY29uc3QgeSA9ICJuZXh0IiA9PT0gYSB8fCAhYSwKICAgICAgICAgICAgICAgIEUgPSAicHJldiIgPT09IGEgfHwgIWE7CiAgICAgICAgICAgIGxldCB4ID0gMCwKICAgICAgICAgICAgICAgIFMgPSAwOwogICAgICAgICAgICBpZiAociA8IGYpIHsKICAgICAgICAgICAgICAgIHggPSBmIC0gcjsKICAgICAgICAgICAgICAgIGZvciAobGV0IGUgPSAwOyBlIDwgZiAtIHI7IGUgKz0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlIC0gTWF0aC5mbG9vcihlIC8gZC5sZW5ndGgpICogZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgZy5wdXNoKGQubGVuZ3RoIC0gdCAtIDEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAociA+IG8uc2xpZGVzLmxlbmd0aCAtIDIgKiBmKSB7CiAgICAgICAgICAgICAgICBTID0gciAtIChvLnNsaWRlcy5sZW5ndGggLSAyICogZik7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IFM7IGUgKz0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlIC0gTWF0aC5mbG9vcihlIC8gZC5sZW5ndGgpICogZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgdi5wdXNoKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKEUgJiYgZy5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICB1LnByZXBlbmQoby5zbGlkZXNbZV0pCiAgICAgICAgICAgICAgICB9KSksIHkgJiYgdi5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICB1LmFwcGVuZChvLnNsaWRlc1tlXSkKICAgICAgICAgICAgICAgIH0pKSwgby5yZWNhbGNTbGlkZXMoKSwgbS53YXRjaFNsaWRlc1Byb2dyZXNzICYmIG8udXBkYXRlU2xpZGVzT2Zmc2V0KCksIHMpCiAgICAgICAgICAgICAgICBpZiAoZy5sZW5ndGggPiAwICYmIEUpCiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gby5zbGlkZXNHcmlkW3ddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IG8uc2xpZGVzR3JpZFt3ICsgeF0gLSBlOwogICAgICAgICAgICAgICAgICAgICAgICBsID8gby5zZXRUcmFuc2xhdGUoby50cmFuc2xhdGUgLSB0KSA6IChvLnNsaWRlVG8odyArIHgsIDAsICExLCAhMCksIGkgJiYgKG8udG91Y2hlc1tvLmlzSG9yaXpvbnRhbCgpID8gInN0YXJ0WCIgOiAic3RhcnRZIl0gKz0gdCkpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGkgJiYgby5zbGlkZVRvTG9vcCh0LCAwLCAhMSwgITApOwogICAgICAgICAgICBlbHNlIGlmICh2Lmxlbmd0aCA+IDAgJiYgeSkKICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gby5zbGlkZXNHcmlkW3ddLAogICAgICAgICAgICAgICAgICAgICAgICB0ID0gby5zbGlkZXNHcmlkW3cgLSBTXSAtIGU7CiAgICAgICAgICAgICAgICAgICAgbCA/IG8uc2V0VHJhbnNsYXRlKG8udHJhbnNsYXRlIC0gdCkgOiAoby5zbGlkZVRvKHcgLSBTLCAwLCAhMSwgITApLCBpICYmIChvLnRvdWNoZXNbby5pc0hvcml6b250YWwoKSA/ICJzdGFydFgiIDogInN0YXJ0WSJdICs9IHQpKQogICAgICAgICAgICAgICAgfSBlbHNlIG8uc2xpZGVUb0xvb3AodCwgMCwgITEsICEwKTsKICAgICAgICAgICAgaWYgKG8uYWxsb3dTbGlkZVByZXYgPSBjLCBvLmFsbG93U2xpZGVOZXh0ID0gcCwgby5jb250cm9sbGVyICYmIG8uY29udHJvbGxlci5jb250cm9sICYmICFuKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gewogICAgICAgICAgICAgICAgICAgIHNsaWRlUmVhbEluZGV4OiB0LAogICAgICAgICAgICAgICAgICAgIHNsaWRlVG86ICExLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogYSwKICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGksCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlU2xpZGVJbmRleDogciwKICAgICAgICAgICAgICAgICAgICBieUNvbnRyb2xsZXI6ICEwCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShvLmNvbnRyb2xsZXIuY29udHJvbCkgPyBvLmNvbnRyb2xsZXIuY29udHJvbC5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICB0LnBhcmFtcy5sb29wICYmIHQubG9vcEZpeChlKQogICAgICAgICAgICAgICAgfSkpIDogby5jb250cm9sbGVyLmNvbnRyb2wgaW5zdGFuY2VvZiBvLmNvbnN0cnVjdG9yICYmIG8uY29udHJvbGxlci5jb250cm9sLnBhcmFtcy5sb29wICYmIG8uY29udHJvbGxlci5jb250cm9sLmxvb3BGaXgoZSkKICAgICAgICAgICAgfQogICAgICAgICAgICBvLmVtaXQoImxvb3BGaXgiKQogICAgICAgIH0sCiAgICAgICAgbG9vcERlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IHQsCiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBzLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc0VsOiBhCiAgICAgICAgICAgICAgICB9ID0gZTsKICAgICAgICAgICAgaWYgKCFzLmxvb3AgfHwgZS52aXJ0dWFsICYmIGUucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkgcmV0dXJuOwogICAgICAgICAgICBlLnJlY2FsY1NsaWRlcygpOwogICAgICAgICAgICBjb25zdCBpID0gW107CiAgICAgICAgICAgIHQuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gdm9pZCAwID09PSBlLnN3aXBlclNsaWRlSW5kZXggPyAxICogZS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikgOiBlLnN3aXBlclNsaWRlSW5kZXg7CiAgICAgICAgICAgICAgICBpW3RdID0gZQogICAgICAgICAgICB9KSksIHQuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiKQogICAgICAgICAgICB9KSksIGkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBhLmFwcGVuZChlKQogICAgICAgICAgICB9KSksIGUucmVjYWxjU2xpZGVzKCksIGUuc2xpZGVUbyhlLnJlYWxJbmRleCwgMCkKICAgICAgICB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIEQoZSkgewogICAgICAgIGNvbnN0IHQgPSB0aGlzLAogICAgICAgICAgICBzID0gYSgpLAogICAgICAgICAgICBpID0gcigpLAogICAgICAgICAgICBuID0gdC50b3VjaEV2ZW50c0RhdGE7CiAgICAgICAgbi5ldkNhY2hlLnB1c2goZSk7CiAgICAgICAgY29uc3QgewogICAgICAgICAgICBwYXJhbXM6IG8sCiAgICAgICAgICAgIHRvdWNoZXM6IGQsCiAgICAgICAgICAgIGVuYWJsZWQ6IGMKICAgICAgICB9ID0gdDsKICAgICAgICBpZiAoIWMpIHJldHVybjsKICAgICAgICBpZiAoIW8uc2ltdWxhdGVUb3VjaCAmJiAibW91c2UiID09PSBlLnBvaW50ZXJUeXBlKSByZXR1cm47CiAgICAgICAgaWYgKHQuYW5pbWF0aW5nICYmIG8ucHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uKSByZXR1cm47CiAgICAgICAgIXQuYW5pbWF0aW5nICYmIG8uY3NzTW9kZSAmJiBvLmxvb3AgJiYgdC5sb29wRml4KCk7CiAgICAgICAgbGV0IHAgPSBlOwogICAgICAgIHAub3JpZ2luYWxFdmVudCAmJiAocCA9IHAub3JpZ2luYWxFdmVudCk7CiAgICAgICAgbGV0IHUgPSBwLnRhcmdldDsKICAgICAgICBpZiAoIndyYXBwZXIiID09PSBvLnRvdWNoRXZlbnRzVGFyZ2V0ICYmICF0LndyYXBwZXJFbC5jb250YWlucyh1KSkgcmV0dXJuOwogICAgICAgIGlmICgid2hpY2giIGluIHAgJiYgMyA9PT0gcC53aGljaCkgcmV0dXJuOwogICAgICAgIGlmICgiYnV0dG9uIiBpbiBwICYmIHAuYnV0dG9uID4gMCkgcmV0dXJuOwogICAgICAgIGlmIChuLmlzVG91Y2hlZCAmJiBuLmlzTW92ZWQpIHJldHVybjsKICAgICAgICBjb25zdCBtID0gISFvLm5vU3dpcGluZ0NsYXNzICYmICIiICE9PSBvLm5vU3dpcGluZ0NsYXNzLAogICAgICAgICAgICBoID0gZS5jb21wb3NlZFBhdGggPyBlLmNvbXBvc2VkUGF0aCgpIDogZS5wYXRoOwogICAgICAgIG0gJiYgcC50YXJnZXQgJiYgcC50YXJnZXQuc2hhZG93Um9vdCAmJiBoICYmICh1ID0gaFswXSk7CiAgICAgICAgY29uc3QgZiA9IG8ubm9Td2lwaW5nU2VsZWN0b3IgPyBvLm5vU3dpcGluZ1NlbGVjdG9yIDogYC4ke28ubm9Td2lwaW5nQ2xhc3N9YCwKICAgICAgICAgICAgZyA9ICEoIXAudGFyZ2V0IHx8ICFwLnRhcmdldC5zaGFkb3dSb290KTsKICAgICAgICBpZiAoby5ub1N3aXBpbmcgJiYgKGcgPyBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSB0ICYmICh0ID0gdGhpcyksCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcyB8fCBzID09PSBhKCkgfHwgcyA9PT0gcigpKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgcy5hc3NpZ25lZFNsb3QgJiYgKHMgPSBzLmFzc2lnbmVkU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBzLmNsb3Nlc3QoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpIHx8IHMuZ2V0Um9vdE5vZGUgPyBpIHx8IHQocy5nZXRSb290Tm9kZSgpLmhvc3QpIDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0odCkKICAgICAgICAgICAgfShmLCB1KSA6IHUuY2xvc2VzdChmKSkpIHJldHVybiB2b2lkKHQuYWxsb3dDbGljayA9ICEwKTsKICAgICAgICBpZiAoby5zd2lwZUhhbmRsZXIgJiYgIXUuY2xvc2VzdChvLnN3aXBlSGFuZGxlcikpIHJldHVybjsKICAgICAgICBkLmN1cnJlbnRYID0gcC5wYWdlWCwgZC5jdXJyZW50WSA9IHAucGFnZVk7CiAgICAgICAgY29uc3QgdiA9IGQuY3VycmVudFgsCiAgICAgICAgICAgIHcgPSBkLmN1cnJlbnRZLAogICAgICAgICAgICBiID0gby5lZGdlU3dpcGVEZXRlY3Rpb24gfHwgby5pT1NFZGdlU3dpcGVEZXRlY3Rpb24sCiAgICAgICAgICAgIHkgPSBvLmVkZ2VTd2lwZVRocmVzaG9sZCB8fCBvLmlPU0VkZ2VTd2lwZVRocmVzaG9sZDsKICAgICAgICBpZiAoYiAmJiAodiA8PSB5IHx8IHYgPj0gaS5pbm5lcldpZHRoIC0geSkpIHsKICAgICAgICAgICAgaWYgKCJwcmV2ZW50IiAhPT0gYikgcmV0dXJuOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCkKICAgICAgICB9CiAgICAgICAgT2JqZWN0LmFzc2lnbihuLCB7CiAgICAgICAgICAgIGlzVG91Y2hlZDogITAsCiAgICAgICAgICAgIGlzTW92ZWQ6ICExLAogICAgICAgICAgICBhbGxvd1RvdWNoQ2FsbGJhY2tzOiAhMCwKICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHZvaWQgMCwKICAgICAgICAgICAgc3RhcnRNb3Zpbmc6IHZvaWQgMAogICAgICAgIH0pLCBkLnN0YXJ0WCA9IHYsIGQuc3RhcnRZID0gdywgbi50b3VjaFN0YXJ0VGltZSA9IGwoKSwgdC5hbGxvd0NsaWNrID0gITAsIHQudXBkYXRlU2l6ZSgpLCB0LnN3aXBlRGlyZWN0aW9uID0gdm9pZCAwLCBvLnRocmVzaG9sZCA+IDAgJiYgKG4uYWxsb3dUaHJlc2hvbGRNb3ZlID0gITEpOwogICAgICAgIGxldCBFID0gITA7CiAgICAgICAgdS5tYXRjaGVzKG4uZm9jdXNhYmxlRWxlbWVudHMpICYmIChFID0gITEsICJTRUxFQ1QiID09PSB1Lm5vZGVOYW1lICYmIChuLmlzVG91Y2hlZCA9ICExKSksIHMuYWN0aXZlRWxlbWVudCAmJiBzLmFjdGl2ZUVsZW1lbnQubWF0Y2hlcyhuLmZvY3VzYWJsZUVsZW1lbnRzKSAmJiBzLmFjdGl2ZUVsZW1lbnQgIT09IHUgJiYgcy5hY3RpdmVFbGVtZW50LmJsdXIoKTsKICAgICAgICBjb25zdCB4ID0gRSAmJiB0LmFsbG93VG91Y2hNb3ZlICYmIG8udG91Y2hTdGFydFByZXZlbnREZWZhdWx0OwogICAgICAgICFvLnRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0ICYmICF4IHx8IHUuaXNDb250ZW50RWRpdGFibGUgfHwgcC5wcmV2ZW50RGVmYXVsdCgpLCB0LnBhcmFtcy5mcmVlTW9kZSAmJiB0LnBhcmFtcy5mcmVlTW9kZS5lbmFibGVkICYmIHQuZnJlZU1vZGUgJiYgdC5hbmltYXRpbmcgJiYgIW8uY3NzTW9kZSAmJiB0LmZyZWVNb2RlLm9uVG91Y2hTdGFydCgpLCB0LmVtaXQoInRvdWNoU3RhcnQiLCBwKQogICAgfQoKICAgIGZ1bmN0aW9uIEcoZSkgewogICAgICAgIGNvbnN0IHQgPSBhKCksCiAgICAgICAgICAgIHMgPSB0aGlzLAogICAgICAgICAgICBpID0gcy50b3VjaEV2ZW50c0RhdGEsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBhcmFtczogciwKICAgICAgICAgICAgICAgIHRvdWNoZXM6IG4sCiAgICAgICAgICAgICAgICBydGxUcmFuc2xhdGU6IG8sCiAgICAgICAgICAgICAgICBlbmFibGVkOiBkCiAgICAgICAgICAgIH0gPSBzOwogICAgICAgIGlmICghZCkgcmV0dXJuOwogICAgICAgIGlmICghci5zaW11bGF0ZVRvdWNoICYmICJtb3VzZSIgPT09IGUucG9pbnRlclR5cGUpIHJldHVybjsKICAgICAgICBsZXQgYyA9IGU7CiAgICAgICAgaWYgKGMub3JpZ2luYWxFdmVudCAmJiAoYyA9IGMub3JpZ2luYWxFdmVudCksICFpLmlzVG91Y2hlZCkgcmV0dXJuIHZvaWQoaS5zdGFydE1vdmluZyAmJiBpLmlzU2Nyb2xsaW5nICYmIHMuZW1pdCgidG91Y2hNb3ZlT3Bwb3NpdGUiLCBjKSk7CiAgICAgICAgY29uc3QgcCA9IGkuZXZDYWNoZS5maW5kSW5kZXgoKGUgPT4gZS5wb2ludGVySWQgPT09IGMucG9pbnRlcklkKSk7CiAgICAgICAgcCA+PSAwICYmIChpLmV2Q2FjaGVbcF0gPSBjKTsKICAgICAgICBjb25zdCB1ID0gaS5ldkNhY2hlLmxlbmd0aCA+IDEgPyBpLmV2Q2FjaGVbMF0gOiBjLAogICAgICAgICAgICBtID0gdS5wYWdlWCwKICAgICAgICAgICAgaCA9IHUucGFnZVk7CiAgICAgICAgaWYgKGMucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIpIHJldHVybiBuLnN0YXJ0WCA9IG0sIHZvaWQobi5zdGFydFkgPSBoKTsKICAgICAgICBpZiAoIXMuYWxsb3dUb3VjaE1vdmUpIHJldHVybiBjLnRhcmdldC5tYXRjaGVzKGkuZm9jdXNhYmxlRWxlbWVudHMpIHx8IChzLmFsbG93Q2xpY2sgPSAhMSksIHZvaWQoaS5pc1RvdWNoZWQgJiYgKE9iamVjdC5hc3NpZ24obiwgewogICAgICAgICAgICBzdGFydFg6IG0sCiAgICAgICAgICAgIHN0YXJ0WTogaCwKICAgICAgICAgICAgcHJldlg6IHMudG91Y2hlcy5jdXJyZW50WCwKICAgICAgICAgICAgcHJldlk6IHMudG91Y2hlcy5jdXJyZW50WSwKICAgICAgICAgICAgY3VycmVudFg6IG0sCiAgICAgICAgICAgIGN1cnJlbnRZOiBoCiAgICAgICAgfSksIGkudG91Y2hTdGFydFRpbWUgPSBsKCkpKTsKICAgICAgICBpZiAoci50b3VjaFJlbGVhc2VPbkVkZ2VzICYmICFyLmxvb3ApCiAgICAgICAgICAgIGlmIChzLmlzVmVydGljYWwoKSkgewogICAgICAgICAgICAgICAgaWYgKGggPCBuLnN0YXJ0WSAmJiBzLnRyYW5zbGF0ZSA8PSBzLm1heFRyYW5zbGF0ZSgpIHx8IGggPiBuLnN0YXJ0WSAmJiBzLnRyYW5zbGF0ZSA+PSBzLm1pblRyYW5zbGF0ZSgpKSByZXR1cm4gaS5pc1RvdWNoZWQgPSAhMSwgdm9pZChpLmlzTW92ZWQgPSAhMSkKICAgICAgICAgICAgfSBlbHNlIGlmIChtIDwgbi5zdGFydFggJiYgcy50cmFuc2xhdGUgPD0gcy5tYXhUcmFuc2xhdGUoKSB8fCBtID4gbi5zdGFydFggJiYgcy50cmFuc2xhdGUgPj0gcy5taW5UcmFuc2xhdGUoKSkgcmV0dXJuOwogICAgICAgIGlmICh0LmFjdGl2ZUVsZW1lbnQgJiYgYy50YXJnZXQgPT09IHQuYWN0aXZlRWxlbWVudCAmJiBjLnRhcmdldC5tYXRjaGVzKGkuZm9jdXNhYmxlRWxlbWVudHMpKSByZXR1cm4gaS5pc01vdmVkID0gITAsIHZvaWQocy5hbGxvd0NsaWNrID0gITEpOwogICAgICAgIGlmIChpLmFsbG93VG91Y2hDYWxsYmFja3MgJiYgcy5lbWl0KCJ0b3VjaE1vdmUiLCBjKSwgYy50YXJnZXRUb3VjaGVzICYmIGMudGFyZ2V0VG91Y2hlcy5sZW5ndGggPiAxKSByZXR1cm47CiAgICAgICAgbi5jdXJyZW50WCA9IG0sIG4uY3VycmVudFkgPSBoOwogICAgICAgIGNvbnN0IGYgPSBuLmN1cnJlbnRYIC0gbi5zdGFydFgsCiAgICAgICAgICAgIGcgPSBuLmN1cnJlbnRZIC0gbi5zdGFydFk7CiAgICAgICAgaWYgKHMucGFyYW1zLnRocmVzaG9sZCAmJiBNYXRoLnNxcnQoZiAqKiAyICsgZyAqKiAyKSA8IHMucGFyYW1zLnRocmVzaG9sZCkgcmV0dXJuOwogICAgICAgIGlmICh2b2lkIDAgPT09IGkuaXNTY3JvbGxpbmcpIHsKICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgIHMuaXNIb3Jpem9udGFsKCkgJiYgbi5jdXJyZW50WSA9PT0gbi5zdGFydFkgfHwgcy5pc1ZlcnRpY2FsKCkgJiYgbi5jdXJyZW50WCA9PT0gbi5zdGFydFggPyBpLmlzU2Nyb2xsaW5nID0gITEgOiBmICogZiArIGcgKiBnID49IDI1ICYmIChlID0gMTgwICogTWF0aC5hdGFuMihNYXRoLmFicyhnKSwgTWF0aC5hYnMoZikpIC8gTWF0aC5QSSwgaS5pc1Njcm9sbGluZyA9IHMuaXNIb3Jpem9udGFsKCkgPyBlID4gci50b3VjaEFuZ2xlIDogOTAgLSBlID4gci50b3VjaEFuZ2xlKQogICAgICAgIH0KICAgICAgICBpZiAoaS5pc1Njcm9sbGluZyAmJiBzLmVtaXQoInRvdWNoTW92ZU9wcG9zaXRlIiwgYyksIHZvaWQgMCA9PT0gaS5zdGFydE1vdmluZyAmJiAobi5jdXJyZW50WCA9PT0gbi5zdGFydFggJiYgbi5jdXJyZW50WSA9PT0gbi5zdGFydFkgfHwgKGkuc3RhcnRNb3ZpbmcgPSAhMCkpLCBpLmlzU2Nyb2xsaW5nIHx8IHMuem9vbSAmJiBzLnBhcmFtcy56b29tICYmIHMucGFyYW1zLnpvb20uZW5hYmxlZCAmJiBpLmV2Q2FjaGUubGVuZ3RoID4gMSkgcmV0dXJuIHZvaWQoaS5pc1RvdWNoZWQgPSAhMSk7CiAgICAgICAgaWYgKCFpLnN0YXJ0TW92aW5nKSByZXR1cm47CiAgICAgICAgcy5hbGxvd0NsaWNrID0gITEsICFyLmNzc01vZGUgJiYgYy5jYW5jZWxhYmxlICYmIGMucHJldmVudERlZmF1bHQoKSwgci50b3VjaE1vdmVTdG9wUHJvcGFnYXRpb24gJiYgIXIubmVzdGVkICYmIGMuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgbGV0IHYgPSBzLmlzSG9yaXpvbnRhbCgpID8gZiA6IGcsCiAgICAgICAgICAgIHcgPSBzLmlzSG9yaXpvbnRhbCgpID8gbi5jdXJyZW50WCAtIG4ucHJldmlvdXNYIDogbi5jdXJyZW50WSAtIG4ucHJldmlvdXNZOwogICAgICAgIHIub25lV2F5TW92ZW1lbnQgJiYgKHYgPSBNYXRoLmFicyh2KSAqIChvID8gMSA6IC0xKSwgdyA9IE1hdGguYWJzKHcpICogKG8gPyAxIDogLTEpKSwgbi5kaWZmID0gdiwgdiAqPSByLnRvdWNoUmF0aW8sIG8gJiYgKHYgPSAtdiwgdyA9IC13KTsKICAgICAgICBjb25zdCBiID0gcy50b3VjaGVzRGlyZWN0aW9uOwogICAgICAgIHMuc3dpcGVEaXJlY3Rpb24gPSB2ID4gMCA/ICJwcmV2IiA6ICJuZXh0Iiwgcy50b3VjaGVzRGlyZWN0aW9uID0gdyA+IDAgPyAicHJldiIgOiAibmV4dCI7CiAgICAgICAgY29uc3QgeSA9IHMucGFyYW1zLmxvb3AgJiYgIXIuY3NzTW9kZTsKICAgICAgICBpZiAoIWkuaXNNb3ZlZCkgewogICAgICAgICAgICBpZiAoeSAmJiBzLmxvb3BGaXgoewogICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogcy5zd2lwZURpcmVjdGlvbgogICAgICAgICAgICAgICAgfSksIGkuc3RhcnRUcmFuc2xhdGUgPSBzLmdldFRyYW5zbGF0ZSgpLCBzLnNldFRyYW5zaXRpb24oMCksIHMuYW5pbWF0aW5nKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gbmV3IHdpbmRvdy5DdXN0b21FdmVudCgidHJhbnNpdGlvbmVuZCIsIHsKICAgICAgICAgICAgICAgICAgICBidWJibGVzOiAhMCwKICAgICAgICAgICAgICAgICAgICBjYW5jZWxhYmxlOiAhMAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzLndyYXBwZXJFbC5kaXNwYXRjaEV2ZW50KGUpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaS5hbGxvd01vbWVudHVtQm91bmNlID0gITEsICFyLmdyYWJDdXJzb3IgfHwgITAgIT09IHMuYWxsb3dTbGlkZU5leHQgJiYgITAgIT09IHMuYWxsb3dTbGlkZVByZXYgfHwgcy5zZXRHcmFiQ3Vyc29yKCEwKSwgcy5lbWl0KCJzbGlkZXJGaXJzdE1vdmUiLCBjKQogICAgICAgIH0KICAgICAgICBsZXQgRTsKICAgICAgICBpLmlzTW92ZWQgJiYgYiAhPT0gcy50b3VjaGVzRGlyZWN0aW9uICYmIHkgJiYgTWF0aC5hYnModikgPj0gMSAmJiAocy5sb29wRml4KHsKICAgICAgICAgICAgZGlyZWN0aW9uOiBzLnN3aXBlRGlyZWN0aW9uLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICEwCiAgICAgICAgfSksIEUgPSAhMCksIHMuZW1pdCgic2xpZGVyTW92ZSIsIGMpLCBpLmlzTW92ZWQgPSAhMCwgaS5jdXJyZW50VHJhbnNsYXRlID0gdiArIGkuc3RhcnRUcmFuc2xhdGU7CiAgICAgICAgbGV0IHggPSAhMCwKICAgICAgICAgICAgUyA9IHIucmVzaXN0YW5jZVJhdGlvOwogICAgICAgIGlmIChyLnRvdWNoUmVsZWFzZU9uRWRnZXMgJiYgKFMgPSAwKSwgdiA+IDAgPyAoeSAmJiAhRSAmJiBpLmN1cnJlbnRUcmFuc2xhdGUgPiAoci5jZW50ZXJlZFNsaWRlcyA/IHMubWluVHJhbnNsYXRlKCkgLSBzLnNpemUgLyAyIDogcy5taW5UcmFuc2xhdGUoKSkgJiYgcy5sb29wRml4KHsKICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogInByZXYiLAogICAgICAgICAgICAgICAgc2V0VHJhbnNsYXRlOiAhMCwKICAgICAgICAgICAgICAgIGFjdGl2ZVNsaWRlSW5kZXg6IDAKICAgICAgICAgICAgfSksIGkuY3VycmVudFRyYW5zbGF0ZSA+IHMubWluVHJhbnNsYXRlKCkgJiYgKHggPSAhMSwgci5yZXNpc3RhbmNlICYmIChpLmN1cnJlbnRUcmFuc2xhdGUgPSBzLm1pblRyYW5zbGF0ZSgpIC0gMSArICgtcy5taW5UcmFuc2xhdGUoKSArIGkuc3RhcnRUcmFuc2xhdGUgKyB2KSAqKiBTKSkpIDogdiA8IDAgJiYgKHkgJiYgIUUgJiYgaS5jdXJyZW50VHJhbnNsYXRlIDwgKHIuY2VudGVyZWRTbGlkZXMgPyBzLm1heFRyYW5zbGF0ZSgpICsgcy5zaXplIC8gMiA6IHMubWF4VHJhbnNsYXRlKCkpICYmIHMubG9vcEZpeCh7CiAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICJuZXh0IiwKICAgICAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogITAsCiAgICAgICAgICAgICAgICBhY3RpdmVTbGlkZUluZGV4OiBzLnNsaWRlcy5sZW5ndGggLSAoImF1dG8iID09PSByLnNsaWRlc1BlclZpZXcgPyBzLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBNYXRoLmNlaWwocGFyc2VGbG9hdChyLnNsaWRlc1BlclZpZXcsIDEwKSkpCiAgICAgICAgICAgIH0pLCBpLmN1cnJlbnRUcmFuc2xhdGUgPCBzLm1heFRyYW5zbGF0ZSgpICYmICh4ID0gITEsIHIucmVzaXN0YW5jZSAmJiAoaS5jdXJyZW50VHJhbnNsYXRlID0gcy5tYXhUcmFuc2xhdGUoKSArIDEgLSAocy5tYXhUcmFuc2xhdGUoKSAtIGkuc3RhcnRUcmFuc2xhdGUgLSB2KSAqKiBTKSkpLCB4ICYmIChjLnByZXZlbnRlZEJ5TmVzdGVkU3dpcGVyID0gITApLCAhcy5hbGxvd1NsaWRlTmV4dCAmJiAibmV4dCIgPT09IHMuc3dpcGVEaXJlY3Rpb24gJiYgaS5jdXJyZW50VHJhbnNsYXRlIDwgaS5zdGFydFRyYW5zbGF0ZSAmJiAoaS5jdXJyZW50VHJhbnNsYXRlID0gaS5zdGFydFRyYW5zbGF0ZSksICFzLmFsbG93U2xpZGVQcmV2ICYmICJwcmV2IiA9PT0gcy5zd2lwZURpcmVjdGlvbiAmJiBpLmN1cnJlbnRUcmFuc2xhdGUgPiBpLnN0YXJ0VHJhbnNsYXRlICYmIChpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlKSwgcy5hbGxvd1NsaWRlUHJldiB8fCBzLmFsbG93U2xpZGVOZXh0IHx8IChpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlKSwgci50aHJlc2hvbGQgPiAwKSB7CiAgICAgICAgICAgIGlmICghKE1hdGguYWJzKHYpID4gci50aHJlc2hvbGQgfHwgaS5hbGxvd1RocmVzaG9sZE1vdmUpKSByZXR1cm4gdm9pZChpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlKTsKICAgICAgICAgICAgaWYgKCFpLmFsbG93VGhyZXNob2xkTW92ZSkgcmV0dXJuIGkuYWxsb3dUaHJlc2hvbGRNb3ZlID0gITAsIG4uc3RhcnRYID0gbi5jdXJyZW50WCwgbi5zdGFydFkgPSBuLmN1cnJlbnRZLCBpLmN1cnJlbnRUcmFuc2xhdGUgPSBpLnN0YXJ0VHJhbnNsYXRlLCB2b2lkKG4uZGlmZiA9IHMuaXNIb3Jpem9udGFsKCkgPyBuLmN1cnJlbnRYIC0gbi5zdGFydFggOiBuLmN1cnJlbnRZIC0gbi5zdGFydFkpCiAgICAgICAgfQogICAgICAgIHIuZm9sbG93RmluZ2VyICYmICFyLmNzc01vZGUgJiYgKChyLmZyZWVNb2RlICYmIHIuZnJlZU1vZGUuZW5hYmxlZCAmJiBzLmZyZWVNb2RlIHx8IHIud2F0Y2hTbGlkZXNQcm9ncmVzcykgJiYgKHMudXBkYXRlQWN0aXZlSW5kZXgoKSwgcy51cGRhdGVTbGlkZXNDbGFzc2VzKCkpLCBzLnBhcmFtcy5mcmVlTW9kZSAmJiByLmZyZWVNb2RlLmVuYWJsZWQgJiYgcy5mcmVlTW9kZSAmJiBzLmZyZWVNb2RlLm9uVG91Y2hNb3ZlKCksIHMudXBkYXRlUHJvZ3Jlc3MoaS5jdXJyZW50VHJhbnNsYXRlKSwgcy5zZXRUcmFuc2xhdGUoaS5jdXJyZW50VHJhbnNsYXRlKSkKICAgIH0KCiAgICBmdW5jdGlvbiBCKGUpIHsKICAgICAgICBjb25zdCB0ID0gdGhpcywKICAgICAgICAgICAgcyA9IHQudG91Y2hFdmVudHNEYXRhLAogICAgICAgICAgICBhID0gcy5ldkNhY2hlLmZpbmRJbmRleCgodCA9PiB0LnBvaW50ZXJJZCA9PT0gZS5wb2ludGVySWQpKTsKICAgICAgICBpZiAoYSA+PSAwICYmIHMuZXZDYWNoZS5zcGxpY2UoYSwgMSksIFsicG9pbnRlcmNhbmNlbCIsICJwb2ludGVyb3V0IiwgInBvaW50ZXJsZWF2ZSJdLmluY2x1ZGVzKGUudHlwZSkpIHJldHVybjsKICAgICAgICBjb25zdCB7CiAgICAgICAgICAgIHBhcmFtczogaSwKICAgICAgICAgICAgdG91Y2hlczogciwKICAgICAgICAgICAgcnRsVHJhbnNsYXRlOiBvLAogICAgICAgICAgICBzbGlkZXNHcmlkOiBkLAogICAgICAgICAgICBlbmFibGVkOiBjCiAgICAgICAgfSA9IHQ7CiAgICAgICAgaWYgKCFjKSByZXR1cm47CiAgICAgICAgaWYgKCFpLnNpbXVsYXRlVG91Y2ggJiYgIm1vdXNlIiA9PT0gZS5wb2ludGVyVHlwZSkgcmV0dXJuOwogICAgICAgIGxldCBwID0gZTsKICAgICAgICBpZiAocC5vcmlnaW5hbEV2ZW50ICYmIChwID0gcC5vcmlnaW5hbEV2ZW50KSwgcy5hbGxvd1RvdWNoQ2FsbGJhY2tzICYmIHQuZW1pdCgidG91Y2hFbmQiLCBwKSwgcy5hbGxvd1RvdWNoQ2FsbGJhY2tzID0gITEsICFzLmlzVG91Y2hlZCkgcmV0dXJuIHMuaXNNb3ZlZCAmJiBpLmdyYWJDdXJzb3IgJiYgdC5zZXRHcmFiQ3Vyc29yKCExKSwgcy5pc01vdmVkID0gITEsIHZvaWQocy5zdGFydE1vdmluZyA9ICExKTsKICAgICAgICBpLmdyYWJDdXJzb3IgJiYgcy5pc01vdmVkICYmIHMuaXNUb3VjaGVkICYmICghMCA9PT0gdC5hbGxvd1NsaWRlTmV4dCB8fCAhMCA9PT0gdC5hbGxvd1NsaWRlUHJldikgJiYgdC5zZXRHcmFiQ3Vyc29yKCExKTsKICAgICAgICBjb25zdCB1ID0gbCgpLAogICAgICAgICAgICBtID0gdSAtIHMudG91Y2hTdGFydFRpbWU7CiAgICAgICAgaWYgKHQuYWxsb3dDbGljaykgewogICAgICAgICAgICBjb25zdCBlID0gcC5wYXRoIHx8IHAuY29tcG9zZWRQYXRoICYmIHAuY29tcG9zZWRQYXRoKCk7CiAgICAgICAgICAgIHQudXBkYXRlQ2xpY2tlZFNsaWRlKGUgJiYgZVswXSB8fCBwLnRhcmdldCksIHQuZW1pdCgidGFwIGNsaWNrIiwgcCksIG0gPCAzMDAgJiYgdSAtIHMubGFzdENsaWNrVGltZSA8IDMwMCAmJiB0LmVtaXQoImRvdWJsZVRhcCBkb3VibGVDbGljayIsIHApCiAgICAgICAgfQogICAgICAgIGlmIChzLmxhc3RDbGlja1RpbWUgPSBsKCksIG4oKCgpID0+IHsKICAgICAgICAgICAgICAgIHQuZGVzdHJveWVkIHx8ICh0LmFsbG93Q2xpY2sgPSAhMCkKICAgICAgICAgICAgfSkpLCAhcy5pc1RvdWNoZWQgfHwgIXMuaXNNb3ZlZCB8fCAhdC5zd2lwZURpcmVjdGlvbiB8fCAwID09PSByLmRpZmYgfHwgcy5jdXJyZW50VHJhbnNsYXRlID09PSBzLnN0YXJ0VHJhbnNsYXRlKSByZXR1cm4gcy5pc1RvdWNoZWQgPSAhMSwgcy5pc01vdmVkID0gITEsIHZvaWQocy5zdGFydE1vdmluZyA9ICExKTsKICAgICAgICBsZXQgaDsKICAgICAgICBpZiAocy5pc1RvdWNoZWQgPSAhMSwgcy5pc01vdmVkID0gITEsIHMuc3RhcnRNb3ZpbmcgPSAhMSwgaCA9IGkuZm9sbG93RmluZ2VyID8gbyA/IHQudHJhbnNsYXRlIDogLXQudHJhbnNsYXRlIDogLXMuY3VycmVudFRyYW5zbGF0ZSwgaS5jc3NNb2RlKSByZXR1cm47CiAgICAgICAgaWYgKHQucGFyYW1zLmZyZWVNb2RlICYmIGkuZnJlZU1vZGUuZW5hYmxlZCkgcmV0dXJuIHZvaWQgdC5mcmVlTW9kZS5vblRvdWNoRW5kKHsKICAgICAgICAgICAgY3VycmVudFBvczogaAogICAgICAgIH0pOwogICAgICAgIGxldCBmID0gMCwKICAgICAgICAgICAgZyA9IHQuc2xpZGVzU2l6ZXNHcmlkWzBdOwogICAgICAgIGZvciAobGV0IGUgPSAwOyBlIDwgZC5sZW5ndGg7IGUgKz0gZSA8IGkuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IGkuc2xpZGVzUGVyR3JvdXApIHsKICAgICAgICAgICAgY29uc3QgdCA9IGUgPCBpLnNsaWRlc1Blckdyb3VwU2tpcCAtIDEgPyAxIDogaS5zbGlkZXNQZXJHcm91cDsKICAgICAgICAgICAgdm9pZCAwICE9PSBkW2UgKyB0XSA/IGggPj0gZFtlXSAmJiBoIDwgZFtlICsgdF0gJiYgKGYgPSBlLCBnID0gZFtlICsgdF0gLSBkW2VdKSA6IGggPj0gZFtlXSAmJiAoZiA9IGUsIGcgPSBkW2QubGVuZ3RoIC0gMV0gLSBkW2QubGVuZ3RoIC0gMl0pCiAgICAgICAgfQogICAgICAgIGxldCB2ID0gbnVsbCwKICAgICAgICAgICAgdyA9IG51bGw7CiAgICAgICAgaS5yZXdpbmQgJiYgKHQuaXNCZWdpbm5pbmcgPyB3ID0gdC5wYXJhbXMudmlydHVhbCAmJiB0LnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgdC52aXJ0dWFsID8gdC52aXJ0dWFsLnNsaWRlcy5sZW5ndGggLSAxIDogdC5zbGlkZXMubGVuZ3RoIC0gMSA6IHQuaXNFbmQgJiYgKHYgPSAwKSk7CiAgICAgICAgY29uc3QgYiA9IChoIC0gZFtmXSkgLyBnLAogICAgICAgICAgICB5ID0gZiA8IGkuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBpLnNsaWRlc1Blckdyb3VwOwogICAgICAgIGlmIChtID4gaS5sb25nU3dpcGVzTXMpIHsKICAgICAgICAgICAgaWYgKCFpLmxvbmdTd2lwZXMpIHJldHVybiB2b2lkIHQuc2xpZGVUbyh0LmFjdGl2ZUluZGV4KTsKICAgICAgICAgICAgIm5leHQiID09PSB0LnN3aXBlRGlyZWN0aW9uICYmIChiID49IGkubG9uZ1N3aXBlc1JhdGlvID8gdC5zbGlkZVRvKGkucmV3aW5kICYmIHQuaXNFbmQgPyB2IDogZiArIHkpIDogdC5zbGlkZVRvKGYpKSwgInByZXYiID09PSB0LnN3aXBlRGlyZWN0aW9uICYmIChiID4gMSAtIGkubG9uZ1N3aXBlc1JhdGlvID8gdC5zbGlkZVRvKGYgKyB5KSA6IG51bGwgIT09IHcgJiYgYiA8IDAgJiYgTWF0aC5hYnMoYikgPiBpLmxvbmdTd2lwZXNSYXRpbyA/IHQuc2xpZGVUbyh3KSA6IHQuc2xpZGVUbyhmKSkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoIWkuc2hvcnRTd2lwZXMpIHJldHVybiB2b2lkIHQuc2xpZGVUbyh0LmFjdGl2ZUluZGV4KTsKICAgICAgICAgICAgdC5uYXZpZ2F0aW9uICYmIChwLnRhcmdldCA9PT0gdC5uYXZpZ2F0aW9uLm5leHRFbCB8fCBwLnRhcmdldCA9PT0gdC5uYXZpZ2F0aW9uLnByZXZFbCkgPyBwLnRhcmdldCA9PT0gdC5uYXZpZ2F0aW9uLm5leHRFbCA/IHQuc2xpZGVUbyhmICsgeSkgOiB0LnNsaWRlVG8oZikgOiAoIm5leHQiID09PSB0LnN3aXBlRGlyZWN0aW9uICYmIHQuc2xpZGVUbyhudWxsICE9PSB2ID8gdiA6IGYgKyB5KSwgInByZXYiID09PSB0LnN3aXBlRGlyZWN0aW9uICYmIHQuc2xpZGVUbyhudWxsICE9PSB3ID8gdyA6IGYpKQogICAgICAgIH0KICAgIH0KICAgIGxldCBIOwoKICAgIGZ1bmN0aW9uIFgoKSB7CiAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBhcmFtczogdCwKICAgICAgICAgICAgICAgIGVsOiBzCiAgICAgICAgICAgIH0gPSBlOwogICAgICAgIGlmIChzICYmIDAgPT09IHMub2Zmc2V0V2lkdGgpIHJldHVybjsKICAgICAgICB0LmJyZWFrcG9pbnRzICYmIGUuc2V0QnJlYWtwb2ludCgpOwogICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgYWxsb3dTbGlkZU5leHQ6IGEsCiAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiBpLAogICAgICAgICAgICBzbmFwR3JpZDogcgogICAgICAgIH0gPSBlLCBuID0gZS52aXJ0dWFsICYmIGUucGFyYW1zLnZpcnR1YWwuZW5hYmxlZDsKICAgICAgICBlLmFsbG93U2xpZGVOZXh0ID0gITAsIGUuYWxsb3dTbGlkZVByZXYgPSAhMCwgZS51cGRhdGVTaXplKCksIGUudXBkYXRlU2xpZGVzKCksIGUudXBkYXRlU2xpZGVzQ2xhc3NlcygpOwogICAgICAgIGNvbnN0IGwgPSBuICYmIHQubG9vcDsKICAgICAgICAhKCJhdXRvIiA9PT0gdC5zbGlkZXNQZXJWaWV3IHx8IHQuc2xpZGVzUGVyVmlldyA+IDEpIHx8ICFlLmlzRW5kIHx8IGUuaXNCZWdpbm5pbmcgfHwgZS5wYXJhbXMuY2VudGVyZWRTbGlkZXMgfHwgbCA/IGUucGFyYW1zLmxvb3AgJiYgIW4gPyBlLnNsaWRlVG9Mb29wKGUucmVhbEluZGV4LCAwLCAhMSwgITApIDogZS5zbGlkZVRvKGUuYWN0aXZlSW5kZXgsIDAsICExLCAhMCkgOiBlLnNsaWRlVG8oZS5zbGlkZXMubGVuZ3RoIC0gMSwgMCwgITEsICEwKSwgZS5hdXRvcGxheSAmJiBlLmF1dG9wbGF5LnJ1bm5pbmcgJiYgZS5hdXRvcGxheS5wYXVzZWQgJiYgKGNsZWFyVGltZW91dChIKSwgSCA9IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgZS5hdXRvcGxheS5yZXN1bWUoKQogICAgICAgIH0pLCA1MDApKSwgZS5hbGxvd1NsaWRlUHJldiA9IGksIGUuYWxsb3dTbGlkZU5leHQgPSBhLCBlLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHIgIT09IGUuc25hcEdyaWQgJiYgZS5jaGVja092ZXJmbG93KCkKICAgIH0KCiAgICBmdW5jdGlvbiBZKGUpIHsKICAgICAgICBjb25zdCB0ID0gdGhpczsKICAgICAgICB0LmVuYWJsZWQgJiYgKHQuYWxsb3dDbGljayB8fCAodC5wYXJhbXMucHJldmVudENsaWNrcyAmJiBlLnByZXZlbnREZWZhdWx0KCksIHQucGFyYW1zLnByZXZlbnRDbGlja3NQcm9wYWdhdGlvbiAmJiB0LmFuaW1hdGluZyAmJiAoZS5zdG9wUHJvcGFnYXRpb24oKSwgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSkpKQogICAgfQoKICAgIGZ1bmN0aW9uIE4oKSB7CiAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogdCwKICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogcywKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGEKICAgICAgICAgICAgfSA9IGU7CiAgICAgICAgaWYgKCFhKSByZXR1cm47CiAgICAgICAgbGV0IGk7CiAgICAgICAgZS5wcmV2aW91c1RyYW5zbGF0ZSA9IGUudHJhbnNsYXRlLCBlLmlzSG9yaXpvbnRhbCgpID8gZS50cmFuc2xhdGUgPSAtdC5zY3JvbGxMZWZ0IDogZS50cmFuc2xhdGUgPSAtdC5zY3JvbGxUb3AsIDAgPT09IGUudHJhbnNsYXRlICYmIChlLnRyYW5zbGF0ZSA9IDApLCBlLnVwZGF0ZUFjdGl2ZUluZGV4KCksIGUudXBkYXRlU2xpZGVzQ2xhc3NlcygpOwogICAgICAgIGNvbnN0IHIgPSBlLm1heFRyYW5zbGF0ZSgpIC0gZS5taW5UcmFuc2xhdGUoKTsKICAgICAgICBpID0gMCA9PT0gciA/IDAgOiAoZS50cmFuc2xhdGUgLSBlLm1pblRyYW5zbGF0ZSgpKSAvIHIsIGkgIT09IGUucHJvZ3Jlc3MgJiYgZS51cGRhdGVQcm9ncmVzcyhzID8gLWUudHJhbnNsYXRlIDogZS50cmFuc2xhdGUpLCBlLmVtaXQoInNldFRyYW5zbGF0ZSIsIGUudHJhbnNsYXRlLCAhMSkKICAgIH0KICAgIGNvbnN0IFIgPSAoZSwgdCkgPT4gewogICAgICAgIGlmICghZSB8fCBlLmRlc3Ryb3llZCB8fCAhZS5wYXJhbXMpIHJldHVybjsKICAgICAgICBjb25zdCBzID0gdC5jbG9zZXN0KGUuaXNFbGVtZW50ID8gInN3aXBlci1zbGlkZSIgOiBgLiR7ZS5wYXJhbXMuc2xpZGVDbGFzc31gKTsKICAgICAgICBpZiAocykgewogICAgICAgICAgICBjb25zdCB0ID0gcy5xdWVyeVNlbGVjdG9yKGAuJHtlLnBhcmFtcy5sYXp5UHJlbG9hZGVyQ2xhc3N9YCk7CiAgICAgICAgICAgIHQgJiYgdC5yZW1vdmUoKQogICAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gcShlKSB7CiAgICAgICAgUih0aGlzLCBlLnRhcmdldCksIHRoaXMudXBkYXRlKCkKICAgIH0KICAgIGxldCBWID0gITE7CgogICAgZnVuY3Rpb24gRigpIHt9CiAgICBjb25zdCBXID0gKGUsIHQpID0+IHsKICAgICAgICBjb25zdCBzID0gYSgpLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IGksCiAgICAgICAgICAgICAgICBlbDogciwKICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogbiwKICAgICAgICAgICAgICAgIGRldmljZTogbAogICAgICAgICAgICB9ID0gZSwKICAgICAgICAgICAgbyA9ICEhaS5uZXN0ZWQsCiAgICAgICAgICAgIGQgPSAib24iID09PSB0ID8gImFkZEV2ZW50TGlzdGVuZXIiIDogInJlbW92ZUV2ZW50TGlzdGVuZXIiLAogICAgICAgICAgICBjID0gdDsKICAgICAgICByW2RdKCJwb2ludGVyZG93biIsIGUub25Ub3VjaFN0YXJ0LCB7CiAgICAgICAgICAgIHBhc3NpdmU6ICExCiAgICAgICAgfSksIHNbZF0oInBvaW50ZXJtb3ZlIiwgZS5vblRvdWNoTW92ZSwgewogICAgICAgICAgICBwYXNzaXZlOiAhMSwKICAgICAgICAgICAgY2FwdHVyZTogbwogICAgICAgIH0pLCBzW2RdKCJwb2ludGVydXAiLCBlLm9uVG91Y2hFbmQsIHsKICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICB9KSwgc1tkXSgicG9pbnRlcmNhbmNlbCIsIGUub25Ub3VjaEVuZCwgewogICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgIH0pLCBzW2RdKCJwb2ludGVyb3V0IiwgZS5vblRvdWNoRW5kLCB7CiAgICAgICAgICAgIHBhc3NpdmU6ICEwCiAgICAgICAgfSksIHNbZF0oInBvaW50ZXJsZWF2ZSIsIGUub25Ub3VjaEVuZCwgewogICAgICAgICAgICBwYXNzaXZlOiAhMAogICAgICAgIH0pLCAoaS5wcmV2ZW50Q2xpY2tzIHx8IGkucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSAmJiByW2RdKCJjbGljayIsIGUub25DbGljaywgITApLCBpLmNzc01vZGUgJiYgbltkXSgic2Nyb2xsIiwgZS5vblNjcm9sbCksIGkudXBkYXRlT25XaW5kb3dSZXNpemUgPyBlW2NdKGwuaW9zIHx8IGwuYW5kcm9pZCA/ICJyZXNpemUgb3JpZW50YXRpb25jaGFuZ2Ugb2JzZXJ2ZXJVcGRhdGUiIDogInJlc2l6ZSBvYnNlcnZlclVwZGF0ZSIsIFgsICEwKSA6IGVbY10oIm9ic2VydmVyVXBkYXRlIiwgWCwgITApLCByW2RdKCJsb2FkIiwgZS5vbkxvYWQsIHsKICAgICAgICAgICAgY2FwdHVyZTogITAKICAgICAgICB9KQogICAgfTsKICAgIGNvbnN0IGogPSAoZSwgdCkgPT4gZS5ncmlkICYmIHQuZ3JpZCAmJiB0LmdyaWQucm93cyA+IDE7CiAgICB2YXIgXyA9IHsKICAgICAgICBpbml0OiAhMCwKICAgICAgICBkaXJlY3Rpb246ICJob3Jpem9udGFsIiwKICAgICAgICBvbmVXYXlNb3ZlbWVudDogITEsCiAgICAgICAgdG91Y2hFdmVudHNUYXJnZXQ6ICJ3cmFwcGVyIiwKICAgICAgICBpbml0aWFsU2xpZGU6IDAsCiAgICAgICAgc3BlZWQ6IDMwMCwKICAgICAgICBjc3NNb2RlOiAhMSwKICAgICAgICB1cGRhdGVPbldpbmRvd1Jlc2l6ZTogITAsCiAgICAgICAgcmVzaXplT2JzZXJ2ZXI6ICEwLAogICAgICAgIG5lc3RlZDogITEsCiAgICAgICAgY3JlYXRlRWxlbWVudHM6ICExLAogICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzOiAiaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCB0ZXh0YXJlYSwgYnV0dG9uLCB2aWRlbywgbGFiZWwiLAogICAgICAgIHdpZHRoOiBudWxsLAogICAgICAgIGhlaWdodDogbnVsbCwKICAgICAgICBwcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb246ICExLAogICAgICAgIHVzZXJBZ2VudDogbnVsbCwKICAgICAgICB1cmw6IG51bGwsCiAgICAgICAgZWRnZVN3aXBlRGV0ZWN0aW9uOiAhMSwKICAgICAgICBlZGdlU3dpcGVUaHJlc2hvbGQ6IDIwLAogICAgICAgIGF1dG9IZWlnaHQ6ICExLAogICAgICAgIHNldFdyYXBwZXJTaXplOiAhMSwKICAgICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhMSwKICAgICAgICBlZmZlY3Q6ICJzbGlkZSIsCiAgICAgICAgYnJlYWtwb2ludHM6IHZvaWQgMCwKICAgICAgICBicmVha3BvaW50c0Jhc2U6ICJ3aW5kb3ciLAogICAgICAgIHNwYWNlQmV0d2VlbjogMCwKICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLAogICAgICAgIHNsaWRlc1Blckdyb3VwOiAxLAogICAgICAgIHNsaWRlc1Blckdyb3VwU2tpcDogMCwKICAgICAgICBzbGlkZXNQZXJHcm91cEF1dG86ICExLAogICAgICAgIGNlbnRlcmVkU2xpZGVzOiAhMSwKICAgICAgICBjZW50ZXJlZFNsaWRlc0JvdW5kczogITEsCiAgICAgICAgc2xpZGVzT2Zmc2V0QmVmb3JlOiAwLAogICAgICAgIHNsaWRlc09mZnNldEFmdGVyOiAwLAogICAgICAgIG5vcm1hbGl6ZVNsaWRlSW5kZXg6ICEwLAogICAgICAgIGNlbnRlckluc3VmZmljaWVudFNsaWRlczogITEsCiAgICAgICAgd2F0Y2hPdmVyZmxvdzogITAsCiAgICAgICAgcm91bmRMZW5ndGhzOiAhMSwKICAgICAgICB0b3VjaFJhdGlvOiAxLAogICAgICAgIHRvdWNoQW5nbGU6IDQ1LAogICAgICAgIHNpbXVsYXRlVG91Y2g6ICEwLAogICAgICAgIHNob3J0U3dpcGVzOiAhMCwKICAgICAgICBsb25nU3dpcGVzOiAhMCwKICAgICAgICBsb25nU3dpcGVzUmF0aW86IC41LAogICAgICAgIGxvbmdTd2lwZXNNczogMzAwLAogICAgICAgIGZvbGxvd0ZpbmdlcjogITAsCiAgICAgICAgYWxsb3dUb3VjaE1vdmU6ICEwLAogICAgICAgIHRocmVzaG9sZDogNSwKICAgICAgICB0b3VjaE1vdmVTdG9wUHJvcGFnYXRpb246ICExLAogICAgICAgIHRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDogITAsCiAgICAgICAgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6ICExLAogICAgICAgIHRvdWNoUmVsZWFzZU9uRWRnZXM6ICExLAogICAgICAgIHVuaXF1ZU5hdkVsZW1lbnRzOiAhMCwKICAgICAgICByZXNpc3RhbmNlOiAhMCwKICAgICAgICByZXNpc3RhbmNlUmF0aW86IC44NSwKICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMSwKICAgICAgICBncmFiQ3Vyc29yOiAhMSwKICAgICAgICBwcmV2ZW50Q2xpY2tzOiAhMCwKICAgICAgICBwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb246ICEwLAogICAgICAgIHNsaWRlVG9DbGlja2VkU2xpZGU6ICExLAogICAgICAgIGxvb3A6ICExLAogICAgICAgIGxvb3BlZFNsaWRlczogbnVsbCwKICAgICAgICBsb29wUHJldmVudHNTbGlkaW5nOiAhMCwKICAgICAgICByZXdpbmQ6ICExLAogICAgICAgIGFsbG93U2xpZGVQcmV2OiAhMCwKICAgICAgICBhbGxvd1NsaWRlTmV4dDogITAsCiAgICAgICAgc3dpcGVIYW5kbGVyOiBudWxsLAogICAgICAgIG5vU3dpcGluZzogITAsCiAgICAgICAgbm9Td2lwaW5nQ2xhc3M6ICJzd2lwZXItbm8tc3dpcGluZyIsCiAgICAgICAgbm9Td2lwaW5nU2VsZWN0b3I6IG51bGwsCiAgICAgICAgcGFzc2l2ZUxpc3RlbmVyczogITAsCiAgICAgICAgbWF4QmFja2ZhY2VIaWRkZW5TbGlkZXM6IDEwLAogICAgICAgIGNvbnRhaW5lck1vZGlmaWVyQ2xhc3M6ICJzd2lwZXItIiwKICAgICAgICBzbGlkZUNsYXNzOiAic3dpcGVyLXNsaWRlIiwKICAgICAgICBzbGlkZUFjdGl2ZUNsYXNzOiAic3dpcGVyLXNsaWRlLWFjdGl2ZSIsCiAgICAgICAgc2xpZGVWaXNpYmxlQ2xhc3M6ICJzd2lwZXItc2xpZGUtdmlzaWJsZSIsCiAgICAgICAgc2xpZGVOZXh0Q2xhc3M6ICJzd2lwZXItc2xpZGUtbmV4dCIsCiAgICAgICAgc2xpZGVQcmV2Q2xhc3M6ICJzd2lwZXItc2xpZGUtcHJldiIsCiAgICAgICAgd3JhcHBlckNsYXNzOiAic3dpcGVyLXdyYXBwZXIiLAogICAgICAgIGxhenlQcmVsb2FkZXJDbGFzczogInN3aXBlci1sYXp5LXByZWxvYWRlciIsCiAgICAgICAgcnVuQ2FsbGJhY2tzT25Jbml0OiAhMCwKICAgICAgICBfZW1pdENsYXNzZXM6ICExCiAgICB9OwoKICAgIGZ1bmN0aW9uIFUoZSwgdCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gcyAmJiAocyA9IHt9KTsKICAgICAgICAgICAgY29uc3QgYSA9IE9iamVjdC5rZXlzKHMpWzBdLAogICAgICAgICAgICAgICAgaSA9IHNbYV07CiAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBpICYmIG51bGwgIT09IGkgPyAoWyJuYXZpZ2F0aW9uIiwgInBhZ2luYXRpb24iLCAic2Nyb2xsYmFyIl0uaW5kZXhPZihhKSA+PSAwICYmICEwID09PSBlW2FdICYmIChlW2FdID0gewogICAgICAgICAgICAgICAgYXV0bzogITAKICAgICAgICAgICAgfSksIGEgaW4gZSAmJiAiZW5hYmxlZCIgaW4gaSA/ICghMCA9PT0gZVthXSAmJiAoZVthXSA9IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwCiAgICAgICAgICAgIH0pLCAib2JqZWN0IiAhPSB0eXBlb2YgZVthXSB8fCAiZW5hYmxlZCIgaW4gZVthXSB8fCAoZVthXS5lbmFibGVkID0gITApLCBlW2FdIHx8IChlW2FdID0gewogICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgfSksIHAodCwgcykpIDogcCh0LCBzKSkgOiBwKHQsIHMpCiAgICAgICAgfQogICAgfQogICAgY29uc3QgSyA9IHsKICAgICAgICAgICAgZXZlbnRzRW1pdHRlcjogQSwKICAgICAgICAgICAgdXBkYXRlOiB6LAogICAgICAgICAgICB0cmFuc2xhdGU6ICQsCiAgICAgICAgICAgIHRyYW5zaXRpb246IHsKICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBzLnBhcmFtcy5jc3NNb2RlIHx8IChzLndyYXBwZXJFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYCksIHMuZW1pdCgic2V0VHJhbnNpdGlvbiIsIGUsIHQpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJhbnNpdGlvblN0YXJ0OiBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gITApOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHM7CiAgICAgICAgICAgICAgICAgICAgYS5jc3NNb2RlIHx8IChhLmF1dG9IZWlnaHQgJiYgcy51cGRhdGVBdXRvSGVpZ2h0KCksIGsoewogICAgICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNhbGxiYWNrczogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0LAogICAgICAgICAgICAgICAgICAgICAgICBzdGVwOiAiU3RhcnQiCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICEwKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBzOwogICAgICAgICAgICAgICAgICAgIHMuYW5pbWF0aW5nID0gITEsIGEuY3NzTW9kZSB8fCAocy5zZXRUcmFuc2l0aW9uKDApLCBrKHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiBzLAogICAgICAgICAgICAgICAgICAgICAgICBydW5DYWxsYmFja3M6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogIkVuZCIKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2xpZGU6IEksCiAgICAgICAgICAgIGxvb3A6IE8sCiAgICAgICAgICAgIGdyYWJDdXJzb3I6IHsKICAgICAgICAgICAgICAgIHNldEdyYWJDdXJzb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBpZiAoIXQucGFyYW1zLnNpbXVsYXRlVG91Y2ggfHwgdC5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0LmlzTG9ja2VkIHx8IHQucGFyYW1zLmNzc01vZGUpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gImNvbnRhaW5lciIgPT09IHQucGFyYW1zLnRvdWNoRXZlbnRzVGFyZ2V0ID8gdC5lbCA6IHQud3JhcHBlckVsOwogICAgICAgICAgICAgICAgICAgIHMuc3R5bGUuY3Vyc29yID0gIm1vdmUiLCBzLnN0eWxlLmN1cnNvciA9IGUgPyAiZ3JhYmJpbmciIDogImdyYWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdW5zZXRHcmFiQ3Vyc29yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBlLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIGUuaXNMb2NrZWQgfHwgZS5wYXJhbXMuY3NzTW9kZSB8fCAoZVsiY29udGFpbmVyIiA9PT0gZS5wYXJhbXMudG91Y2hFdmVudHNUYXJnZXQgPyAiZWwiIDogIndyYXBwZXJFbCJdLnN0eWxlLmN1cnNvciA9ICIiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBldmVudHM6IHsKICAgICAgICAgICAgICAgIGF0dGFjaEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBhKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogcwogICAgICAgICAgICAgICAgICAgICAgICB9ID0gZTsKICAgICAgICAgICAgICAgICAgICBlLm9uVG91Y2hTdGFydCA9IEQuYmluZChlKSwgZS5vblRvdWNoTW92ZSA9IEcuYmluZChlKSwgZS5vblRvdWNoRW5kID0gQi5iaW5kKGUpLCBzLmNzc01vZGUgJiYgKGUub25TY3JvbGwgPSBOLmJpbmQoZSkpLCBlLm9uQ2xpY2sgPSBZLmJpbmQoZSksIGUub25Mb2FkID0gcS5iaW5kKGUpLCBWIHx8ICh0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBGKSwgViA9ICEwKSwgVyhlLCAib24iKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRldGFjaEV2ZW50czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgVyh0aGlzLCAib2ZmIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYnJlYWtwb2ludHM6IHsKICAgICAgICAgICAgICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsSW5kZXg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplZDogcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiBpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSBlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gYS5icmVha3BvaW50czsKICAgICAgICAgICAgICAgICAgICBpZiAoIXIgfHwgciAmJiAwID09PSBPYmplY3Qua2V5cyhyKS5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5nZXRCcmVha3BvaW50KHIsIGUucGFyYW1zLmJyZWFrcG9pbnRzQmFzZSwgZS5lbCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFuIHx8IGUuY3VycmVudEJyZWFrcG9pbnQgPT09IG4pIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gKG4gaW4gciA/IHJbbl0gOiB2b2lkIDApIHx8IGUub3JpZ2luYWxQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBqKGUsIGEpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gaihlLCBsKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGEuZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvICYmICFkID8gKGkuY2xhc3NMaXN0LnJlbW92ZShgJHthLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZGAsIGAke2EuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkLWNvbHVtbmApLCBlLmVtaXRDb250YWluZXJDbGFzc2VzKCkpIDogIW8gJiYgZCAmJiAoaS5jbGFzc0xpc3QuYWRkKGAke2EuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkYCksIChsLmdyaWQuZmlsbCAmJiAiY29sdW1uIiA9PT0gbC5ncmlkLmZpbGwgfHwgIWwuZ3JpZC5maWxsICYmICJjb2x1bW4iID09PSBhLmdyaWQuZmlsbCkgJiYgaS5jbGFzc0xpc3QuYWRkKGAke2EuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkLWNvbHVtbmApLCBlLmVtaXRDb250YWluZXJDbGFzc2VzKCkpLCBbIm5hdmlnYXRpb24iLCAicGFnaW5hdGlvbiIsICJzY3JvbGxiYXIiXS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGFbdF0gJiYgYVt0XS5lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxbdF0gJiYgbFt0XS5lbmFibGVkOwogICAgICAgICAgICAgICAgICAgICAgICBzICYmICFpICYmIGVbdF0uZGlzYWJsZSgpLCAhcyAmJiBpICYmIGVbdF0uZW5hYmxlKCkKICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdSA9IGwuZGlyZWN0aW9uICYmIGwuZGlyZWN0aW9uICE9PSBhLmRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGEubG9vcCAmJiAobC5zbGlkZXNQZXJWaWV3ICE9PSBhLnNsaWRlc1BlclZpZXcgfHwgdSk7CiAgICAgICAgICAgICAgICAgICAgdSAmJiBzICYmIGUuY2hhbmdlRGlyZWN0aW9uKCksIHAoZS5wYXJhbXMsIGwpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGggPSBlLnBhcmFtcy5lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZSwgewogICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1RvdWNoTW92ZTogZS5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U2xpZGVOZXh0OiBlLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dTbGlkZVByZXY6IGUucGFyYW1zLmFsbG93U2xpZGVQcmV2CiAgICAgICAgICAgICAgICAgICAgfSksIGMgJiYgIWggPyBlLmRpc2FibGUoKSA6ICFjICYmIGggJiYgZS5lbmFibGUoKSwgZS5jdXJyZW50QnJlYWtwb2ludCA9IG4sIGUuZW1pdCgiX2JlZm9yZUJyZWFrcG9pbnQiLCBsKSwgbSAmJiBzICYmIChlLmxvb3BEZXN0cm95KCksIGUubG9vcENyZWF0ZSh0KSwgZS51cGRhdGVTbGlkZXMoKSksIGUuZW1pdCgiYnJlYWtwb2ludCIsIGwpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0QnJlYWtwb2ludDogZnVuY3Rpb24oZSwgdCwgcykgewogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHQgJiYgKHQgPSAid2luZG93IiksICFlIHx8ICJjb250YWluZXIiID09PSB0ICYmICFzKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSAhMTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gcigpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gIndpbmRvdyIgPT09IHQgPyBpLmlubmVySGVpZ2h0IDogcy5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBPYmplY3Qua2V5cyhlKS5tYXAoKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmIDAgPT09IGUuaW5kZXhPZigiQCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHBhcnNlRmxvYXQoZS5zdWJzdHIoMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuICogdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50OiBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICBsLnNvcnQoKChlLCB0KSA9PiBwYXJzZUludChlLnZhbHVlLCAxMCkgLSBwYXJzZUludCh0LnZhbHVlLCAxMCkpKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IGwubGVuZ3RoOyBlICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbgogICAgICAgICAgICAgICAgICAgICAgICB9ID0gbFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgIndpbmRvdyIgPT09IHQgPyBpLm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7bn1weClgKS5tYXRjaGVzICYmIChhID0gcikgOiBuIDw9IHMuY2xpZW50V2lkdGggJiYgKGEgPSByKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSB8fCAibWF4IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBjaGVja092ZXJmbG93OiB7CiAgICAgICAgICAgICAgICBjaGVja092ZXJmbG93OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2NrZWQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHMKICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc09mZnNldEJlZm9yZTogYQogICAgICAgICAgICAgICAgICAgICAgICB9ID0gczsKICAgICAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5zbGlkZXMubGVuZ3RoIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlLnNsaWRlc0dyaWRbdF0gKyBlLnNsaWRlc1NpemVzR3JpZFt0XSArIDIgKiBhOwogICAgICAgICAgICAgICAgICAgICAgICBlLmlzTG9ja2VkID0gZS5zaXplID4gcwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlLmlzTG9ja2VkID0gMSA9PT0gZS5zbmFwR3JpZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgITAgPT09IHMuYWxsb3dTbGlkZU5leHQgJiYgKGUuYWxsb3dTbGlkZU5leHQgPSAhZS5pc0xvY2tlZCksICEwID09PSBzLmFsbG93U2xpZGVQcmV2ICYmIChlLmFsbG93U2xpZGVQcmV2ID0gIWUuaXNMb2NrZWQpLCB0ICYmIHQgIT09IGUuaXNMb2NrZWQgJiYgKGUuaXNFbmQgPSAhMSksIHQgIT09IGUuaXNMb2NrZWQgJiYgZS5lbWl0KGUuaXNMb2NrZWQgPyAibG9jayIgOiAidW5sb2NrIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2xhc3NlczogewogICAgICAgICAgICAgICAgYWRkQ2xhc3NlczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGw6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZTogcgogICAgICAgICAgICAgICAgICAgICAgICB9ID0gZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QiID09IHR5cGVvZiBlID8gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoYSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbYV0gJiYgcy5wdXNoKHQgKyBhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA6ICJzdHJpbmciID09IHR5cGVvZiBlICYmIHMucHVzaCh0ICsgZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgcwogICAgICAgICAgICAgICAgICAgICAgICB9KFsiaW5pdGlhbGl6ZWQiLCBzLmRpcmVjdGlvbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUtbW9kZSI6IGUucGFyYW1zLmZyZWVNb2RlICYmIHMuZnJlZU1vZGUuZW5hYmxlZAogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvaGVpZ2h0OiBzLmF1dG9IZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRsOiBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQ6IHMuZ3JpZCAmJiBzLmdyaWQucm93cyA+IDEKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImdyaWQtY29sdW1uIjogcy5ncmlkICYmIHMuZ3JpZC5yb3dzID4gMSAmJiAiY29sdW1uIiA9PT0gcy5ncmlkLmZpbGwKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDogci5hbmRyb2lkCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvczogci5pb3MKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNzcy1tb2RlIjogcy5jc3NNb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcmVkOiBzLmNzc01vZGUgJiYgcy5jZW50ZXJlZFNsaWRlcwogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2F0Y2gtcHJvZ3Jlc3MiOiBzLndhdGNoU2xpZGVzUHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICAgICAgfV0sIHMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgdC5wdXNoKC4uLm4pLCBpLmNsYXNzTGlzdC5hZGQoLi4udCksIGUuZW1pdENvbnRhaW5lckNsYXNzZXMoKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWw6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IHQKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpczsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5yZW1vdmUoLi4udCksIHRoaXMuZW1pdENvbnRhaW5lckNsYXNzZXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBaID0ge307CiAgICBjbGFzcyBRIHsKICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgbGV0IGUsIHQ7CiAgICAgICAgICAgIGZvciAodmFyIHMgPSBhcmd1bWVudHMubGVuZ3RoLCBpID0gbmV3IEFycmF5KHMpLCByID0gMDsgciA8IHM7IHIrKykgaVtyXSA9IGFyZ3VtZW50c1tyXTsKICAgICAgICAgICAgMSA9PT0gaS5sZW5ndGggJiYgaVswXS5jb25zdHJ1Y3RvciAmJiAiT2JqZWN0IiA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlbMF0pLnNsaWNlKDgsIC0xKSA/IHQgPSBpWzBdIDogW2UsIHRdID0gaSwgdCB8fCAodCA9IHt9KSwgdCA9IHAoe30sIHQpLCBlICYmICF0LmVsICYmICh0LmVsID0gZSk7CiAgICAgICAgICAgIGNvbnN0IG4gPSBhKCk7CiAgICAgICAgICAgIGlmICh0LmVsICYmICJzdHJpbmciID09IHR5cGVvZiB0LmVsICYmIG4ucXVlcnlTZWxlY3RvckFsbCh0LmVsKS5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gW107CiAgICAgICAgICAgICAgICByZXR1cm4gbi5xdWVyeVNlbGVjdG9yQWxsKHQuZWwpLmZvckVhY2goKHMgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBwKHt9LCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsOiBzCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZS5wdXNoKG5ldyBRKGEpKQogICAgICAgICAgICAgICAgfSkpLCBlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbyA9IHRoaXM7CiAgICAgICAgICAgIG8uX19zd2lwZXJfXyA9ICEwLCBvLnN1cHBvcnQgPSBDKCksIG8uZGV2aWNlID0gUCh7CiAgICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHQudXNlckFnZW50CiAgICAgICAgICAgIH0pLCBvLmJyb3dzZXIgPSBMKCksIG8uZXZlbnRzTGlzdGVuZXJzID0ge30sIG8uZXZlbnRzQW55TGlzdGVuZXJzID0gW10sIG8ubW9kdWxlcyA9IFsuLi5vLl9fbW9kdWxlc19fXSwgdC5tb2R1bGVzICYmIEFycmF5LmlzQXJyYXkodC5tb2R1bGVzKSAmJiBvLm1vZHVsZXMucHVzaCguLi50Lm1vZHVsZXMpOwogICAgICAgICAgICBjb25zdCBkID0ge307CiAgICAgICAgICAgIG8ubW9kdWxlcy5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUoewogICAgICAgICAgICAgICAgICAgIHBhcmFtczogdCwKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IG8sCiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBVKHQsIGQpLAogICAgICAgICAgICAgICAgICAgIG9uOiBvLm9uLmJpbmQobyksCiAgICAgICAgICAgICAgICAgICAgb25jZTogby5vbmNlLmJpbmQobyksCiAgICAgICAgICAgICAgICAgICAgb2ZmOiBvLm9mZi5iaW5kKG8pLAogICAgICAgICAgICAgICAgICAgIGVtaXQ6IG8uZW1pdC5iaW5kKG8pCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGNvbnN0IGMgPSBwKHt9LCBfLCBkKTsKICAgICAgICAgICAgcmV0dXJuIG8ucGFyYW1zID0gcCh7fSwgYywgWiwgdCksIG8ub3JpZ2luYWxQYXJhbXMgPSBwKHt9LCBvLnBhcmFtcyksIG8ucGFzc2VkUGFyYW1zID0gcCh7fSwgdCksIG8ucGFyYW1zICYmIG8ucGFyYW1zLm9uICYmIE9iamVjdC5rZXlzKG8ucGFyYW1zLm9uKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIG8ub24oZSwgby5wYXJhbXMub25bZV0pCiAgICAgICAgICAgIH0pKSwgby5wYXJhbXMgJiYgby5wYXJhbXMub25BbnkgJiYgby5vbkFueShvLnBhcmFtcy5vbkFueSksIE9iamVjdC5hc3NpZ24obywgewogICAgICAgICAgICAgICAgZW5hYmxlZDogby5wYXJhbXMuZW5hYmxlZCwKICAgICAgICAgICAgICAgIGVsOiBlLAogICAgICAgICAgICAgICAgY2xhc3NOYW1lczogW10sCiAgICAgICAgICAgICAgICBzbGlkZXM6IFtdLAogICAgICAgICAgICAgICAgc2xpZGVzR3JpZDogW10sCiAgICAgICAgICAgICAgICBzbmFwR3JpZDogW10sCiAgICAgICAgICAgICAgICBzbGlkZXNTaXplc0dyaWQ6IFtdLAogICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsOiAoKSA9PiAiaG9yaXpvbnRhbCIgPT09IG8ucGFyYW1zLmRpcmVjdGlvbiwKICAgICAgICAgICAgICAgIGlzVmVydGljYWw6ICgpID0+ICJ2ZXJ0aWNhbCIgPT09IG8ucGFyYW1zLmRpcmVjdGlvbiwKICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAwLAogICAgICAgICAgICAgICAgcmVhbEluZGV4OiAwLAogICAgICAgICAgICAgICAgaXNCZWdpbm5pbmc6ICEwLAogICAgICAgICAgICAgICAgaXNFbmQ6ICExLAogICAgICAgICAgICAgICAgdHJhbnNsYXRlOiAwLAogICAgICAgICAgICAgICAgcHJldmlvdXNUcmFuc2xhdGU6IDAsCiAgICAgICAgICAgICAgICBwcm9ncmVzczogMCwKICAgICAgICAgICAgICAgIHZlbG9jaXR5OiAwLAogICAgICAgICAgICAgICAgYW5pbWF0aW5nOiAhMSwKICAgICAgICAgICAgICAgIGFsbG93U2xpZGVOZXh0OiBvLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCwKICAgICAgICAgICAgICAgIGFsbG93U2xpZGVQcmV2OiBvLnBhcmFtcy5hbGxvd1NsaWRlUHJldiwKICAgICAgICAgICAgICAgIHRvdWNoRXZlbnRzRGF0YTogewogICAgICAgICAgICAgICAgICAgIGlzVG91Y2hlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGlzTW92ZWQ6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBhbGxvd1RvdWNoQ2FsbGJhY2tzOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgdG91Y2hTdGFydFRpbWU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBpc1Njcm9sbGluZzogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUcmFuc2xhdGU6IHZvaWQgMCwKICAgICAgICAgICAgICAgICAgICBzdGFydFRyYW5zbGF0ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGFsbG93VGhyZXNob2xkTW92ZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzOiBvLnBhcmFtcy5mb2N1c2FibGVFbGVtZW50cywKICAgICAgICAgICAgICAgICAgICBsYXN0Q2xpY2tUaW1lOiBsKCksCiAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgdmVsb2NpdGllczogW10sCiAgICAgICAgICAgICAgICAgICAgYWxsb3dNb21lbnR1bUJvdW5jZTogdm9pZCAwLAogICAgICAgICAgICAgICAgICAgIHN0YXJ0TW92aW5nOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgZXZDYWNoZTogW10KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhbGxvd0NsaWNrOiAhMCwKICAgICAgICAgICAgICAgIGFsbG93VG91Y2hNb3ZlOiBvLnBhcmFtcy5hbGxvd1RvdWNoTW92ZSwKICAgICAgICAgICAgICAgIHRvdWNoZXM6IHsKICAgICAgICAgICAgICAgICAgICBzdGFydFg6IDAsCiAgICAgICAgICAgICAgICAgICAgc3RhcnRZOiAwLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRYOiAwLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRZOiAwLAogICAgICAgICAgICAgICAgICAgIGRpZmY6IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBpbWFnZXNUb0xvYWQ6IFtdLAogICAgICAgICAgICAgICAgaW1hZ2VzTG9hZGVkOiAwCiAgICAgICAgICAgIH0pLCBvLmVtaXQoIl9zd2lwZXIiKSwgby5wYXJhbXMuaW5pdCAmJiBvLmluaXQoKSwgbwogICAgICAgIH0KICAgICAgICByZWNhbGNTbGlkZXMoKSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHNsaWRlc0VsOiBlLAogICAgICAgICAgICAgICAgcGFyYW1zOiB0CiAgICAgICAgICAgIH0gPSB0aGlzOwogICAgICAgICAgICB0aGlzLnNsaWRlcyA9IGYoZSwgYC4ke3Quc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApCiAgICAgICAgfQogICAgICAgIGVuYWJsZSgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHRoaXM7CiAgICAgICAgICAgIGUuZW5hYmxlZCB8fCAoZS5lbmFibGVkID0gITAsIGUucGFyYW1zLmdyYWJDdXJzb3IgJiYgZS5zZXRHcmFiQ3Vyc29yKCksIGUuZW1pdCgiZW5hYmxlIikpCiAgICAgICAgfQogICAgICAgIGRpc2FibGUoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzOwogICAgICAgICAgICBlLmVuYWJsZWQgJiYgKGUuZW5hYmxlZCA9ICExLCBlLnBhcmFtcy5ncmFiQ3Vyc29yICYmIGUudW5zZXRHcmFiQ3Vyc29yKCksIGUuZW1pdCgiZGlzYWJsZSIpKQogICAgICAgIH0KICAgICAgICBzZXRQcm9ncmVzcyhlLCB0KSB7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzOwogICAgICAgICAgICBlID0gTWF0aC5taW4oTWF0aC5tYXgoZSwgMCksIDEpOwogICAgICAgICAgICBjb25zdCBhID0gcy5taW5UcmFuc2xhdGUoKSwKICAgICAgICAgICAgICAgIGkgPSAocy5tYXhUcmFuc2xhdGUoKSAtIGEpICogZSArIGE7CiAgICAgICAgICAgIHMudHJhbnNsYXRlVG8oaSwgdm9pZCAwID09PSB0ID8gMCA6IHQpLCBzLnVwZGF0ZUFjdGl2ZUluZGV4KCksIHMudXBkYXRlU2xpZGVzQ2xhc3NlcygpCiAgICAgICAgfQogICAgICAgIGVtaXRDb250YWluZXJDbGFzc2VzKCkgewogICAgICAgICAgICBjb25zdCBlID0gdGhpczsKICAgICAgICAgICAgaWYgKCFlLnBhcmFtcy5fZW1pdENsYXNzZXMgfHwgIWUuZWwpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgdCA9IGUuZWwuY2xhc3NOYW1lLnNwbGl0KCIgIikuZmlsdGVyKCh0ID0+IDAgPT09IHQuaW5kZXhPZigic3dpcGVyIikgfHwgMCA9PT0gdC5pbmRleE9mKGUucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpKSk7CiAgICAgICAgICAgIGUuZW1pdCgiX2NvbnRhaW5lckNsYXNzZXMiLCB0LmpvaW4oIiAiKSkKICAgICAgICB9CiAgICAgICAgZ2V0U2xpZGVDbGFzc2VzKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiB0LmRlc3Ryb3llZCA/ICIiIDogZS5jbGFzc05hbWUuc3BsaXQoIiAiKS5maWx0ZXIoKGUgPT4gMCA9PT0gZS5pbmRleE9mKCJzd2lwZXItc2xpZGUiKSB8fCAwID09PSBlLmluZGV4T2YodC5wYXJhbXMuc2xpZGVDbGFzcykpKS5qb2luKCIgIikKICAgICAgICB9CiAgICAgICAgZW1pdFNsaWRlc0NsYXNzZXMoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzOwogICAgICAgICAgICBpZiAoIWUucGFyYW1zLl9lbWl0Q2xhc3NlcyB8fCAhZS5lbCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB0ID0gW107CiAgICAgICAgICAgIGUuc2xpZGVzLmZvckVhY2goKHMgPT4gewogICAgICAgICAgICAgICAgY29uc3QgYSA9IGUuZ2V0U2xpZGVDbGFzc2VzKHMpOwogICAgICAgICAgICAgICAgdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBzbGlkZUVsOiBzLAogICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IGEKICAgICAgICAgICAgICAgIH0pLCBlLmVtaXQoIl9zbGlkZUNsYXNzIiwgcywgYSkKICAgICAgICAgICAgfSkpLCBlLmVtaXQoIl9zbGlkZUNsYXNzZXMiLCB0KQogICAgICAgIH0KICAgICAgICBzbGlkZXNQZXJWaWV3RHluYW1pYyhlLCB0KSB7CiAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9ICJjdXJyZW50IiksIHZvaWQgMCA9PT0gdCAmJiAodCA9ICExKTsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzLAogICAgICAgICAgICAgICAgc2xpZGVzOiBhLAogICAgICAgICAgICAgICAgc2xpZGVzR3JpZDogaSwKICAgICAgICAgICAgICAgIHNsaWRlc1NpemVzR3JpZDogciwKICAgICAgICAgICAgICAgIHNpemU6IG4sCiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogbAogICAgICAgICAgICB9ID0gdGhpczsKICAgICAgICAgICAgbGV0IG8gPSAxOwogICAgICAgICAgICBpZiAocy5jZW50ZXJlZFNsaWRlcykgewogICAgICAgICAgICAgICAgbGV0IGUsIHQgPSBhW2xdLnN3aXBlclNsaWRlU2l6ZTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSBsICsgMTsgcyA8IGEubGVuZ3RoOyBzICs9IDEpIGFbc10gJiYgIWUgJiYgKHQgKz0gYVtzXS5zd2lwZXJTbGlkZVNpemUsIG8gKz0gMSwgdCA+IG4gJiYgKGUgPSAhMCkpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IGwgLSAxOyBzID49IDA7IHMgLT0gMSkgYVtzXSAmJiAhZSAmJiAodCArPSBhW3NdLnN3aXBlclNsaWRlU2l6ZSwgbyArPSAxLCB0ID4gbiAmJiAoZSA9ICEwKSkKICAgICAgICAgICAgfSBlbHNlIGlmICgiY3VycmVudCIgPT09IGUpCiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gbCArIDE7IGUgPCBhLmxlbmd0aDsgZSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgKHQgPyBpW2VdICsgcltlXSAtIGlbbF0gPCBuIDogaVtlXSAtIGlbbF0gPCBuKSAmJiAobyArPSAxKQogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IGwgLSAxOyBlID49IDA7IGUgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpW2xdIC0gaVtlXSA8IG4gJiYgKG8gKz0gMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgfQogICAgICAgIHVwZGF0ZSgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHRoaXM7CiAgICAgICAgICAgIGlmICghZSB8fCBlLmRlc3Ryb3llZCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzbmFwR3JpZDogdCwKICAgICAgICAgICAgICAgIHBhcmFtczogcwogICAgICAgICAgICB9ID0gZTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZS5ydGxUcmFuc2xhdGUgPyAtMSAqIGUudHJhbnNsYXRlIDogZS50cmFuc2xhdGUsCiAgICAgICAgICAgICAgICAgICAgcyA9IE1hdGgubWluKE1hdGgubWF4KHQsIGUubWF4VHJhbnNsYXRlKCkpLCBlLm1pblRyYW5zbGF0ZSgpKTsKICAgICAgICAgICAgICAgIGUuc2V0VHJhbnNsYXRlKHMpLCBlLnVwZGF0ZUFjdGl2ZUluZGV4KCksIGUudXBkYXRlU2xpZGVzQ2xhc3NlcygpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGk7CiAgICAgICAgICAgIHMuYnJlYWtwb2ludHMgJiYgZS5zZXRCcmVha3BvaW50KCksIFsuLi5lLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tsb2FkaW5nPSJsYXp5Il0nKV0uZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICB0LmNvbXBsZXRlICYmIFIoZSwgdCkKICAgICAgICAgICAgfSkpLCBlLnVwZGF0ZVNpemUoKSwgZS51cGRhdGVTbGlkZXMoKSwgZS51cGRhdGVQcm9ncmVzcygpLCBlLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgZS5wYXJhbXMuZnJlZU1vZGUgJiYgZS5wYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCA/IChhKCksIGUucGFyYW1zLmF1dG9IZWlnaHQgJiYgZS51cGRhdGVBdXRvSGVpZ2h0KCkpIDogKGkgPSAoImF1dG8iID09PSBlLnBhcmFtcy5zbGlkZXNQZXJWaWV3IHx8IGUucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKSAmJiBlLmlzRW5kICYmICFlLnBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IGUuc2xpZGVUbyhlLnNsaWRlcy5sZW5ndGggLSAxLCAwLCAhMSwgITApIDogZS5zbGlkZVRvKGUuYWN0aXZlSW5kZXgsIDAsICExLCAhMCksIGkgfHwgYSgpKSwgcy53YXRjaE92ZXJmbG93ICYmIHQgIT09IGUuc25hcEdyaWQgJiYgZS5jaGVja092ZXJmbG93KCksIGUuZW1pdCgidXBkYXRlIikKICAgICAgICB9CiAgICAgICAgY2hhbmdlRGlyZWN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0gITApOwogICAgICAgICAgICBjb25zdCBzID0gdGhpcywKICAgICAgICAgICAgICAgIGEgPSBzLnBhcmFtcy5kaXJlY3Rpb247CiAgICAgICAgICAgIHJldHVybiBlIHx8IChlID0gImhvcml6b250YWwiID09PSBhID8gInZlcnRpY2FsIiA6ICJob3Jpem9udGFsIiksIGUgPT09IGEgfHwgImhvcml6b250YWwiICE9PSBlICYmICJ2ZXJ0aWNhbCIgIT09IGUgfHwgKHMuZWwuY2xhc3NMaXN0LnJlbW92ZShgJHtzLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfSR7YX1gKSwgcy5lbC5jbGFzc0xpc3QuYWRkKGAke3MucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9JHtlfWApLCBzLmVtaXRDb250YWluZXJDbGFzc2VzKCksIHMucGFyYW1zLmRpcmVjdGlvbiA9IGUsIHMuc2xpZGVzLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgInZlcnRpY2FsIiA9PT0gZSA/IHQuc3R5bGUud2lkdGggPSAiIiA6IHQuc3R5bGUuaGVpZ2h0ID0gIiIKICAgICAgICAgICAgfSkpLCBzLmVtaXQoImNoYW5nZURpcmVjdGlvbiIpLCB0ICYmIHMudXBkYXRlKCkpLCBzCiAgICAgICAgfQogICAgICAgIGNoYW5nZUxhbmd1YWdlRGlyZWN0aW9uKGUpIHsKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXM7CiAgICAgICAgICAgIHQucnRsICYmICJydGwiID09PSBlIHx8ICF0LnJ0bCAmJiAibHRyIiA9PT0gZSB8fCAodC5ydGwgPSAicnRsIiA9PT0gZSwgdC5ydGxUcmFuc2xhdGUgPSAiaG9yaXpvbnRhbCIgPT09IHQucGFyYW1zLmRpcmVjdGlvbiAmJiB0LnJ0bCwgdC5ydGwgPyAodC5lbC5jbGFzc0xpc3QuYWRkKGAke3QucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9cnRsYCksIHQuZWwuZGlyID0gInJ0bCIpIDogKHQuZWwuY2xhc3NMaXN0LnJlbW92ZShgJHt0LnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfXJ0bGApLCB0LmVsLmRpciA9ICJsdHIiKSwgdC51cGRhdGUoKSkKICAgICAgICB9CiAgICAgICAgbW91bnQoZSkgewogICAgICAgICAgICBjb25zdCB0ID0gdGhpczsKICAgICAgICAgICAgaWYgKHQubW91bnRlZCkgcmV0dXJuICEwOwogICAgICAgICAgICBsZXQgcyA9IGUgfHwgdC5wYXJhbXMuZWw7CiAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgcyAmJiAocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocykpLCAhcykgcmV0dXJuICExOwogICAgICAgICAgICBzLnN3aXBlciA9IHQsIHMuc2hhZG93RWwgJiYgKHQuaXNFbGVtZW50ID0gITApOwogICAgICAgICAgICBjb25zdCBhID0gKCkgPT4gYC4keyh0LnBhcmFtcy53cmFwcGVyQ2xhc3N8fCIiKS50cmltKCkuc3BsaXQoIiAiKS5qb2luKCIuIil9YDsKICAgICAgICAgICAgbGV0IGkgPSAoKCkgPT4gewogICAgICAgICAgICAgICAgaWYgKHMgJiYgcy5zaGFkb3dSb290ICYmIHMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGEoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmKHMsIGEoKSlbMF0KICAgICAgICAgICAgfSkoKTsKICAgICAgICAgICAgcmV0dXJuICFpICYmIHQucGFyYW1zLmNyZWF0ZUVsZW1lbnRzICYmIChpID0gZygiZGl2IiwgdC5wYXJhbXMud3JhcHBlckNsYXNzKSwgcy5hcHBlbmQoaSksIGYocywgYC4ke3QucGFyYW1zLnNsaWRlQ2xhc3N9YCkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBpLmFwcGVuZChlKQogICAgICAgICAgICB9KSkpLCBPYmplY3QuYXNzaWduKHQsIHsKICAgICAgICAgICAgICAgIGVsOiBzLAogICAgICAgICAgICAgICAgd3JhcHBlckVsOiBpLAogICAgICAgICAgICAgICAgc2xpZGVzRWw6IHQuaXNFbGVtZW50ID8gcyA6IGksCiAgICAgICAgICAgICAgICBtb3VudGVkOiAhMCwKICAgICAgICAgICAgICAgIHJ0bDogInJ0bCIgPT09IHMuZGlyLnRvTG93ZXJDYXNlKCkgfHwgInJ0bCIgPT09IHcocywgImRpcmVjdGlvbiIpLAogICAgICAgICAgICAgICAgcnRsVHJhbnNsYXRlOiAiaG9yaXpvbnRhbCIgPT09IHQucGFyYW1zLmRpcmVjdGlvbiAmJiAoInJ0bCIgPT09IHMuZGlyLnRvTG93ZXJDYXNlKCkgfHwgInJ0bCIgPT09IHcocywgImRpcmVjdGlvbiIpKSwKICAgICAgICAgICAgICAgIHdyb25nUlRMOiAiLXdlYmtpdC1ib3giID09PSB3KGksICJkaXNwbGF5IikKICAgICAgICAgICAgfSksICEwCiAgICAgICAgfQogICAgICAgIGluaXQoZSkgewogICAgICAgICAgICBjb25zdCB0ID0gdGhpczsKICAgICAgICAgICAgaWYgKHQuaW5pdGlhbGl6ZWQpIHJldHVybiB0OwogICAgICAgICAgICByZXR1cm4gITEgPT09IHQubW91bnQoZSkgfHwgKHQuZW1pdCgiYmVmb3JlSW5pdCIpLCB0LnBhcmFtcy5icmVha3BvaW50cyAmJiB0LnNldEJyZWFrcG9pbnQoKSwgdC5hZGRDbGFzc2VzKCksIHQudXBkYXRlU2l6ZSgpLCB0LnVwZGF0ZVNsaWRlcygpLCB0LnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHQuY2hlY2tPdmVyZmxvdygpLCB0LnBhcmFtcy5ncmFiQ3Vyc29yICYmIHQuZW5hYmxlZCAmJiB0LnNldEdyYWJDdXJzb3IoKSwgdC5wYXJhbXMubG9vcCAmJiB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gdC5zbGlkZVRvKHQucGFyYW1zLmluaXRpYWxTbGlkZSArIHQudmlydHVhbC5zbGlkZXNCZWZvcmUsIDAsIHQucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwgITEsICEwKSA6IHQuc2xpZGVUbyh0LnBhcmFtcy5pbml0aWFsU2xpZGUsIDAsIHQucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwgITEsICEwKSwgdC5wYXJhbXMubG9vcCAmJiB0Lmxvb3BDcmVhdGUoKSwgdC5hdHRhY2hFdmVudHMoKSwgWy4uLnQuZWwucXVlcnlTZWxlY3RvckFsbCgnW2xvYWRpbmc9ImxhenkiXScpXS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuY29tcGxldGUgPyBSKHQsIGUpIDogZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKGUgPT4gewogICAgICAgICAgICAgICAgICAgIFIodCwgZS50YXJnZXQpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSkpLCB0LmluaXRpYWxpemVkID0gITAsIHQuZW1pdCgiaW5pdCIpLCB0LmVtaXQoImFmdGVySW5pdCIpKSwgdAogICAgICAgIH0KICAgICAgICBkZXN0cm95KGUsIHQpIHsKICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gITApLCB2b2lkIDAgPT09IHQgJiYgKHQgPSAhMCk7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHBhcmFtczogYSwKICAgICAgICAgICAgICAgICAgICBlbDogaSwKICAgICAgICAgICAgICAgICAgICB3cmFwcGVyRWw6IHIsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiBuCiAgICAgICAgICAgICAgICB9ID0gczsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gcy5wYXJhbXMgfHwgcy5kZXN0cm95ZWQgfHwgKHMuZW1pdCgiYmVmb3JlRGVzdHJveSIpLCBzLmluaXRpYWxpemVkID0gITEsIHMuZGV0YWNoRXZlbnRzKCksIGEubG9vcCAmJiBzLmxvb3BEZXN0cm95KCksIHQgJiYgKHMucmVtb3ZlQ2xhc3NlcygpLCBpLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSwgci5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksIG4gJiYgbi5sZW5ndGggJiYgbi5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZShhLnNsaWRlVmlzaWJsZUNsYXNzLCBhLnNsaWRlQWN0aXZlQ2xhc3MsIGEuc2xpZGVOZXh0Q2xhc3MsIGEuc2xpZGVQcmV2Q2xhc3MpLCBlLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IikKICAgICAgICAgICAgfSkpKSwgcy5lbWl0KCJkZXN0cm95IiksIE9iamVjdC5rZXlzKHMuZXZlbnRzTGlzdGVuZXJzKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIHMub2ZmKGUpCiAgICAgICAgICAgIH0pKSwgITEgIT09IGUgJiYgKHMuZWwuc3dpcGVyID0gbnVsbCwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IGU7CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB0W2VdID0gbnVsbAogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRbZV0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0ocykpLCBzLmRlc3Ryb3llZCA9ICEwKSwgbnVsbAogICAgICAgIH0KICAgICAgICBzdGF0aWMgZXh0ZW5kRGVmYXVsdHMoZSkgewogICAgICAgICAgICBwKFosIGUpCiAgICAgICAgfQogICAgICAgIHN0YXRpYyBnZXQgZXh0ZW5kZWREZWZhdWx0cygpIHsKICAgICAgICAgICAgcmV0dXJuIFoKICAgICAgICB9CiAgICAgICAgc3RhdGljIGdldCBkZWZhdWx0cygpIHsKICAgICAgICAgICAgcmV0dXJuIF8KICAgICAgICB9CiAgICAgICAgc3RhdGljIGluc3RhbGxNb2R1bGUoZSkgewogICAgICAgICAgICBRLnByb3RvdHlwZS5fX21vZHVsZXNfXyB8fCAoUS5wcm90b3R5cGUuX19tb2R1bGVzX18gPSBbXSk7CiAgICAgICAgICAgIGNvbnN0IHQgPSBRLnByb3RvdHlwZS5fX21vZHVsZXNfXzsKICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiB0LmluZGV4T2YoZSkgPCAwICYmIHQucHVzaChlKQogICAgICAgIH0KICAgICAgICBzdGF0aWMgdXNlKGUpIHsKICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgPyAoZS5mb3JFYWNoKChlID0+IFEuaW5zdGFsbE1vZHVsZShlKSkpLCBRKSA6IChRLmluc3RhbGxNb2R1bGUoZSksIFEpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIEooZSwgdCwgcywgYSkgewogICAgICAgIHJldHVybiBlLnBhcmFtcy5jcmVhdGVFbGVtZW50cyAmJiBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChpID0+IHsKICAgICAgICAgICAgaWYgKCFzW2ldICYmICEwID09PSBzLmF1dG8pIHsKICAgICAgICAgICAgICAgIGxldCByID0gZihlLmVsLCBgLiR7YVtpXX1gKVswXTsKICAgICAgICAgICAgICAgIHIgfHwgKHIgPSBnKCJkaXYiLCBhW2ldKSwgci5jbGFzc05hbWUgPSBhW2ldLCBlLmVsLmFwcGVuZChyKSksIHNbaV0gPSByLCB0W2ldID0gcgogICAgICAgICAgICB9CiAgICAgICAgfSkpLCBzCiAgICB9CgogICAgZnVuY3Rpb24gZWUoZSkgewogICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgJiYgKGUgPSAiIiksIGAuJHtlLnRyaW0oKS5yZXBsYWNlKC8oW1wuOiFcL10pL2csIlxcJDEiKS5yZXBsYWNlKC8gL2csIi4iKX1gCiAgICB9CgogICAgZnVuY3Rpb24gdGUoZSkgewogICAgICAgIGNvbnN0IHQgPSB0aGlzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwYXJhbXM6IHMsCiAgICAgICAgICAgICAgICBzbGlkZXNFbDogYQogICAgICAgICAgICB9ID0gdDsKICAgICAgICBzLmxvb3AgJiYgdC5sb29wRGVzdHJveSgpOwogICAgICAgIGNvbnN0IGkgPSBlID0+IHsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICB0LmlubmVySFRNTCA9IGUsIGEuYXBwZW5kKHQuY2hpbGRyZW5bMF0pLCB0LmlubmVySFRNTCA9ICIiCiAgICAgICAgICAgIH0gZWxzZSBhLmFwcGVuZChlKQogICAgICAgIH07CiAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlICYmICJsZW5ndGgiIGluIGUpCiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQgKz0gMSkgZVt0XSAmJiBpKGVbdF0pOwogICAgICAgIGVsc2UgaShlKTsKICAgICAgICB0LnJlY2FsY1NsaWRlcygpLCBzLmxvb3AgJiYgdC5sb29wQ3JlYXRlKCksIHMub2JzZXJ2ZXIgJiYgIXQuaXNFbGVtZW50IHx8IHQudXBkYXRlKCkKICAgIH0KCiAgICBmdW5jdGlvbiBzZShlKSB7CiAgICAgICAgY29uc3QgdCA9IHRoaXMsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBhcmFtczogcywKICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBhLAogICAgICAgICAgICAgICAgc2xpZGVzRWw6IGkKICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgcy5sb29wICYmIHQubG9vcERlc3Ryb3koKTsKICAgICAgICBsZXQgciA9IGEgKyAxOwogICAgICAgIGNvbnN0IG4gPSBlID0+IHsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICB0LmlubmVySFRNTCA9IGUsIGkucHJlcGVuZCh0LmNoaWxkcmVuWzBdKSwgdC5pbm5lckhUTUwgPSAiIgogICAgICAgICAgICB9IGVsc2UgaS5wcmVwZW5kKGUpCiAgICAgICAgfTsKICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgImxlbmd0aCIgaW4gZSkgewogICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0ICs9IDEpIGVbdF0gJiYgbihlW3RdKTsKICAgICAgICAgICAgciA9IGEgKyBlLmxlbmd0aAogICAgICAgIH0gZWxzZSBuKGUpOwogICAgICAgIHQucmVjYWxjU2xpZGVzKCksIHMubG9vcCAmJiB0Lmxvb3BDcmVhdGUoKSwgcy5vYnNlcnZlciAmJiAhdC5pc0VsZW1lbnQgfHwgdC51cGRhdGUoKSwgdC5zbGlkZVRvKHIsIDAsICExKQogICAgfQoKICAgIGZ1bmN0aW9uIGFlKGUsIHQpIHsKICAgICAgICBjb25zdCBzID0gdGhpcywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcGFyYW1zOiBhLAogICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGksCiAgICAgICAgICAgICAgICBzbGlkZXNFbDogcgogICAgICAgICAgICB9ID0gczsKICAgICAgICBsZXQgbiA9IGk7CiAgICAgICAgYS5sb29wICYmIChuIC09IHMubG9vcGVkU2xpZGVzLCBzLmxvb3BEZXN0cm95KCksIHMucmVjYWxjU2xpZGVzKCkpOwogICAgICAgIGNvbnN0IGwgPSBzLnNsaWRlcy5sZW5ndGg7CiAgICAgICAgaWYgKGUgPD0gMCkgcmV0dXJuIHZvaWQgcy5wcmVwZW5kU2xpZGUodCk7CiAgICAgICAgaWYgKGUgPj0gbCkgcmV0dXJuIHZvaWQgcy5hcHBlbmRTbGlkZSh0KTsKICAgICAgICBsZXQgbyA9IG4gPiBlID8gbiArIDEgOiBuOwogICAgICAgIGNvbnN0IGQgPSBbXTsKICAgICAgICBmb3IgKGxldCB0ID0gbCAtIDE7IHQgPj0gZTsgdCAtPSAxKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSBzLnNsaWRlc1t0XTsKICAgICAgICAgICAgZS5yZW1vdmUoKSwgZC51bnNoaWZ0KGUpCiAgICAgICAgfQogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiAibGVuZ3RoIiBpbiB0KSB7CiAgICAgICAgICAgIGZvciAobGV0IGUgPSAwOyBlIDwgdC5sZW5ndGg7IGUgKz0gMSkgdFtlXSAmJiByLmFwcGVuZCh0W2VdKTsKICAgICAgICAgICAgbyA9IG4gPiBlID8gbiArIHQubGVuZ3RoIDogbgogICAgICAgIH0gZWxzZSByLmFwcGVuZCh0KTsKICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IGQubGVuZ3RoOyBlICs9IDEpIHIuYXBwZW5kKGRbZV0pOwogICAgICAgIHMucmVjYWxjU2xpZGVzKCksIGEubG9vcCAmJiBzLmxvb3BDcmVhdGUoKSwgYS5vYnNlcnZlciAmJiAhcy5pc0VsZW1lbnQgfHwgcy51cGRhdGUoKSwgYS5sb29wID8gcy5zbGlkZVRvKG8gKyBzLmxvb3BlZFNsaWRlcywgMCwgITEpIDogcy5zbGlkZVRvKG8sIDAsICExKQogICAgfQoKICAgIGZ1bmN0aW9uIGllKGUpIHsKICAgICAgICBjb25zdCB0ID0gdGhpcywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcGFyYW1zOiBzLAogICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGEKICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgbGV0IGkgPSBhOwogICAgICAgIHMubG9vcCAmJiAoaSAtPSB0Lmxvb3BlZFNsaWRlcywgdC5sb29wRGVzdHJveSgpKTsKICAgICAgICBsZXQgciwgbiA9IGk7CiAgICAgICAgaWYgKCJvYmplY3QiID09IHR5cGVvZiBlICYmICJsZW5ndGgiIGluIGUpIHsKICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBlLmxlbmd0aDsgcyArPSAxKSByID0gZVtzXSwgdC5zbGlkZXNbcl0gJiYgdC5zbGlkZXNbcl0ucmVtb3ZlKCksIHIgPCBuICYmIChuIC09IDEpOwogICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgMCkKICAgICAgICB9IGVsc2UgciA9IGUsIHQuc2xpZGVzW3JdICYmIHQuc2xpZGVzW3JdLnJlbW92ZSgpLCByIDwgbiAmJiAobiAtPSAxKSwgbiA9IE1hdGgubWF4KG4sIDApOwogICAgICAgIHQucmVjYWxjU2xpZGVzKCksIHMubG9vcCAmJiB0Lmxvb3BDcmVhdGUoKSwgcy5vYnNlcnZlciAmJiAhdC5pc0VsZW1lbnQgfHwgdC51cGRhdGUoKSwgcy5sb29wID8gdC5zbGlkZVRvKG4gKyB0Lmxvb3BlZFNsaWRlcywgMCwgITEpIDogdC5zbGlkZVRvKG4sIDAsICExKQogICAgfQoKICAgIGZ1bmN0aW9uIHJlKCkgewogICAgICAgIGNvbnN0IGUgPSB0aGlzLAogICAgICAgICAgICB0ID0gW107CiAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBlLnNsaWRlcy5sZW5ndGg7IHMgKz0gMSkgdC5wdXNoKHMpOwogICAgICAgIGUucmVtb3ZlU2xpZGUodCkKICAgIH0KCiAgICBmdW5jdGlvbiBuZShlKSB7CiAgICAgICAgY29uc3QgewogICAgICAgICAgICBlZmZlY3Q6IHQsCiAgICAgICAgICAgIHN3aXBlcjogcywKICAgICAgICAgICAgb246IGEsCiAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogaSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogciwKICAgICAgICAgICAgb3ZlcndyaXRlUGFyYW1zOiBuLAogICAgICAgICAgICBwZXJzcGVjdGl2ZTogbCwKICAgICAgICAgICAgcmVjcmVhdGVTaGFkb3dzOiBvLAogICAgICAgICAgICBnZXRFZmZlY3RQYXJhbXM6IGQKICAgICAgICB9ID0gZTsKICAgICAgICBsZXQgYzsKICAgICAgICBhKCJiZWZvcmVJbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgaWYgKHMucGFyYW1zLmVmZmVjdCAhPT0gdCkgcmV0dXJuOwogICAgICAgICAgICBzLmNsYXNzTmFtZXMucHVzaChgJHtzLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfSR7dH1gKSwgbCAmJiBsKCkgJiYgcy5jbGFzc05hbWVzLnB1c2goYCR7cy5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30zZGApOwogICAgICAgICAgICBjb25zdCBlID0gbiA/IG4oKSA6IHt9OwogICAgICAgICAgICBPYmplY3QuYXNzaWduKHMucGFyYW1zLCBlKSwgT2JqZWN0LmFzc2lnbihzLm9yaWdpbmFsUGFyYW1zLCBlKQogICAgICAgIH0pKSwgYSgic2V0VHJhbnNsYXRlIiwgKCgpID0+IHsKICAgICAgICAgICAgcy5wYXJhbXMuZWZmZWN0ID09PSB0ICYmIGkoKQogICAgICAgIH0pKSwgYSgic2V0VHJhbnNpdGlvbiIsICgoZSwgYSkgPT4gewogICAgICAgICAgICBzLnBhcmFtcy5lZmZlY3QgPT09IHQgJiYgcihhKQogICAgICAgIH0pKSwgYSgidHJhbnNpdGlvbkVuZCIsICgoKSA9PiB7CiAgICAgICAgICAgIGlmIChzLnBhcmFtcy5lZmZlY3QgPT09IHQgJiYgbykgewogICAgICAgICAgICAgICAgaWYgKCFkIHx8ICFkKCkuc2xpZGVTaGFkb3dzKSByZXR1cm47CiAgICAgICAgICAgICAgICBzLnNsaWRlcy5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnF1ZXJ5U2VsZWN0b3JBbGwoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCIpLmZvckVhY2goKGUgPT4gZS5yZW1vdmUoKSkpCiAgICAgICAgICAgICAgICB9KSksIG8oKQogICAgICAgICAgICB9CiAgICAgICAgfSkpLCBhKCJ2aXJ0dWFsVXBkYXRlIiwgKCgpID0+IHsKICAgICAgICAgICAgcy5wYXJhbXMuZWZmZWN0ID09PSB0ICYmIChzLnNsaWRlcy5sZW5ndGggfHwgKGMgPSAhMCksIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCkgPT4gewogICAgICAgICAgICAgICAgYyAmJiBzLnNsaWRlcyAmJiBzLnNsaWRlcy5sZW5ndGggJiYgKGkoKSwgYyA9ICExKQogICAgICAgICAgICB9KSkpCiAgICAgICAgfSkpCiAgICB9CgogICAgZnVuY3Rpb24gbGUoZSwgdCkgewogICAgICAgIGNvbnN0IHMgPSBoKHQpOwogICAgICAgIHJldHVybiBzICE9PSB0ICYmIChzLnN0eWxlLmJhY2tmYWNlVmlzaWJpbGl0eSA9ICJoaWRkZW4iLCBzLnN0eWxlWyItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiXSA9ICJoaWRkZW4iKSwgcwogICAgfQoKICAgIGZ1bmN0aW9uIG9lKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIGR1cmF0aW9uOiBzLAogICAgICAgICAgICB0cmFuc2Zvcm1FbGVtZW50czogYSwKICAgICAgICAgICAgYWxsU2xpZGVzOiBpCiAgICAgICAgfSA9IGU7CiAgICAgICAgY29uc3QgewogICAgICAgICAgICBhY3RpdmVJbmRleDogcgogICAgICAgIH0gPSB0OwogICAgICAgIGlmICh0LnBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlICYmIDAgIT09IHMpIHsKICAgICAgICAgICAgbGV0IGUsIHMgPSAhMTsKICAgICAgICAgICAgZSA9IGkgPyBhIDogYS5maWx0ZXIoKGUgPT4gYihlLmNsYXNzTGlzdC5jb250YWlucygic3dpcGVyLXNsaWRlLXRyYW5zZm9ybSIpID8gKGUgPT4gewogICAgICAgICAgICAgICAgaWYgKCFlLnBhcmVudEVsZW1lbnQpIHJldHVybiB0LnNsaWRlcy5maWx0ZXIoKHQgPT4gdC5zaGFkb3dFbCAmJiB0LnNoYWRvd0VsID09PSBlLnBhcmVudE5vZGUpKVswXTsKICAgICAgICAgICAgICAgIHJldHVybiBlLnBhcmVudEVsZW1lbnQKICAgICAgICAgICAgfSkoZSkgOiBlKSA9PT0gcikpLCBlLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgRShlLCAoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChzKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0IHx8IHQuZGVzdHJveWVkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgcyA9ICEwLCB0LmFuaW1hdGluZyA9ICExOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KCJ0cmFuc2l0aW9uZW5kIiwgewogICAgICAgICAgICAgICAgICAgICAgICBidWJibGVzOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogITAKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB0LndyYXBwZXJFbC5kaXNwYXRjaEV2ZW50KGUpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGRlKGUsIHQsIHMpIHsKICAgICAgICBjb25zdCBhID0gInN3aXBlci1zbGlkZS1zaGFkb3ciICsgKHMgPyBgLSR7c31gIDogIiIpLAogICAgICAgICAgICBpID0gaCh0KTsKICAgICAgICBsZXQgciA9IGkucXVlcnlTZWxlY3RvcihgLiR7YX1gKTsKICAgICAgICByZXR1cm4gciB8fCAociA9IGcoImRpdiIsICJzd2lwZXItc2xpZGUtc2hhZG93IiArIChzID8gYC0ke3N9YCA6ICIiKSksIGkuYXBwZW5kKHIpKSwgcgogICAgfQogICAgT2JqZWN0LmtleXMoSykuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgT2JqZWN0LmtleXMoS1tlXSkuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgIFEucHJvdG90eXBlW3RdID0gS1tlXVt0XQogICAgICAgIH0pKQogICAgfSkpLCBRLnVzZShbZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgb246IHMsCiAgICAgICAgICAgIGVtaXQ6IGEKICAgICAgICB9ID0gZTsKICAgICAgICBjb25zdCBpID0gcigpOwogICAgICAgIGxldCBuID0gbnVsbCwKICAgICAgICAgICAgbCA9IG51bGw7CiAgICAgICAgY29uc3QgbyA9ICgpID0+IHsKICAgICAgICAgICAgICAgIHQgJiYgIXQuZGVzdHJveWVkICYmIHQuaW5pdGlhbGl6ZWQgJiYgKGEoImJlZm9yZVJlc2l6ZSIpLCBhKCJyZXNpemUiKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIHQgJiYgIXQuZGVzdHJveWVkICYmIHQuaW5pdGlhbGl6ZWQgJiYgYSgib3JpZW50YXRpb25jaGFuZ2UiKQogICAgICAgICAgICB9OwogICAgICAgIHMoImluaXQiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5yZXNpemVPYnNlcnZlciAmJiB2b2lkIDAgIT09IGkuUmVzaXplT2JzZXJ2ZXIgPyB0ICYmICF0LmRlc3Ryb3llZCAmJiB0LmluaXRpYWxpemVkICYmIChuID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlID0+IHsKICAgICAgICAgICAgICAgIGwgPSBpLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYQogICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgIGxldCBpID0gcywKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGE7CiAgICAgICAgICAgICAgICAgICAgZS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRCb3hTaXplOiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3Q6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IG4KICAgICAgICAgICAgICAgICAgICAgICAgfSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gJiYgbiAhPT0gdC5lbCB8fCAoaSA9IGEgPyBhLndpZHRoIDogKHNbMF0gfHwgcykuaW5saW5lU2l6ZSwgciA9IGEgPyBhLmhlaWdodCA6IChzWzBdIHx8IHMpLmJsb2NrU2l6ZSkKICAgICAgICAgICAgICAgICAgICB9KSksIGkgPT09IHMgJiYgciA9PT0gYSB8fCBvKCkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KSksIG4ub2JzZXJ2ZSh0LmVsKSkgOiAoaS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBvKSwgaS5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsIGQpKQogICAgICAgIH0pKSwgcygiZGVzdHJveSIsICgoKSA9PiB7CiAgICAgICAgICAgIGwgJiYgaS5jYW5jZWxBbmltYXRpb25GcmFtZShsKSwgbiAmJiBuLnVub2JzZXJ2ZSAmJiB0LmVsICYmIChuLnVub2JzZXJ2ZSh0LmVsKSwgbiA9IG51bGwpLCBpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIG8pLCBpLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIiwgZCkKICAgICAgICB9KSkKICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIGV4dGVuZFBhcmFtczogcywKICAgICAgICAgICAgb246IGEsCiAgICAgICAgICAgIGVtaXQ6IGkKICAgICAgICB9ID0gZTsKICAgICAgICBjb25zdCBuID0gW10sCiAgICAgICAgICAgIGwgPSByKCksCiAgICAgICAgICAgIG8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgICAgICB2b2lkIDAgPT09IHQgJiYgKHQgPSB7fSk7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gbmV3KGwuTXV0YXRpb25PYnNlcnZlciB8fCBsLldlYmtpdE11dGF0aW9uT2JzZXJ2ZXIpKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gZS5sZW5ndGgpIHJldHVybiB2b2lkIGkoIm9ic2VydmVyVXBkYXRlIiwgZVswXSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpKCJvYnNlcnZlclVwZGF0ZSIsIGVbMF0pCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBsLnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IGwucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpIDogbC5zZXRUaW1lb3V0KHQsIDApCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICBzLm9ic2VydmUoZSwgewogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHZvaWQgMCA9PT0gdC5hdHRyaWJ1dGVzIHx8IHQuYXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHZvaWQgMCA9PT0gdC5jaGlsZExpc3QgfHwgdC5jaGlsZExpc3QsCiAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdm9pZCAwID09PSB0LmNoYXJhY3RlckRhdGEgfHwgdC5jaGFyYWN0ZXJEYXRhCiAgICAgICAgICAgICAgICB9KSwgbi5wdXNoKHMpCiAgICAgICAgICAgIH07CiAgICAgICAgcyh7CiAgICAgICAgICAgIG9ic2VydmVyOiAhMSwKICAgICAgICAgICAgb2JzZXJ2ZVBhcmVudHM6ICExLAogICAgICAgICAgICBvYnNlcnZlU2xpZGVDaGlsZHJlbjogITEKICAgICAgICB9KSwgYSgiaW5pdCIsICgoKSA9PiB7CiAgICAgICAgICAgIGlmICh0LnBhcmFtcy5vYnNlcnZlcikgewogICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLm9ic2VydmVQYXJlbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHkodC5lbCk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCArPSAxKSBvKGVbdF0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvKHQuZWwsIHsKICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHQucGFyYW1zLm9ic2VydmVTbGlkZUNoaWxkcmVuCiAgICAgICAgICAgICAgICB9KSwgbyh0LndyYXBwZXJFbCwgewogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6ICExCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSkpLCBhKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgbi5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuZGlzY29ubmVjdCgpCiAgICAgICAgICAgIH0pKSwgbi5zcGxpY2UoMCwgbi5sZW5ndGgpCiAgICAgICAgfSkpCiAgICB9XSk7CiAgICBjb25zdCBjZSA9IFtmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHQsIHsKICAgICAgICAgICAgc3dpcGVyOiBzLAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IGksCiAgICAgICAgICAgIG9uOiByLAogICAgICAgICAgICBlbWl0OiBuCiAgICAgICAgfSA9IGU7CiAgICAgICAgaSh7CiAgICAgICAgICAgIHZpcnR1YWw6IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgc2xpZGVzOiBbXSwKICAgICAgICAgICAgICAgIGNhY2hlOiAhMCwKICAgICAgICAgICAgICAgIHJlbmRlclNsaWRlOiBudWxsLAogICAgICAgICAgICAgICAgcmVuZGVyRXh0ZXJuYWw6IG51bGwsCiAgICAgICAgICAgICAgICByZW5kZXJFeHRlcm5hbFVwZGF0ZTogITAsCiAgICAgICAgICAgICAgICBhZGRTbGlkZXNCZWZvcmU6IDAsCiAgICAgICAgICAgICAgICBhZGRTbGlkZXNBZnRlcjogMAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgY29uc3QgbCA9IGEoKTsKICAgICAgICBzLnZpcnR1YWwgPSB7CiAgICAgICAgICAgIGNhY2hlOiB7fSwKICAgICAgICAgICAgZnJvbTogdm9pZCAwLAogICAgICAgICAgICB0bzogdm9pZCAwLAogICAgICAgICAgICBzbGlkZXM6IFtdLAogICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgIHNsaWRlc0dyaWQ6IFtdCiAgICAgICAgfTsKICAgICAgICBjb25zdCBvID0gbC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKCiAgICAgICAgZnVuY3Rpb24gZChlLCB0KSB7CiAgICAgICAgICAgIGNvbnN0IGEgPSBzLnBhcmFtcy52aXJ0dWFsOwogICAgICAgICAgICBpZiAoYS5jYWNoZSAmJiBzLnZpcnR1YWwuY2FjaGVbdF0pIHJldHVybiBzLnZpcnR1YWwuY2FjaGVbdF07CiAgICAgICAgICAgIGxldCBpOwogICAgICAgICAgICByZXR1cm4gYS5yZW5kZXJTbGlkZSA/IChpID0gYS5yZW5kZXJTbGlkZS5jYWxsKHMsIGUsIHQpLCAic3RyaW5nIiA9PSB0eXBlb2YgaSAmJiAoby5pbm5lckhUTUwgPSBpLCBpID0gby5jaGlsZHJlblswXSkpIDogaSA9IHMuaXNFbGVtZW50ID8gZygic3dpcGVyLXNsaWRlIikgOiBnKCJkaXYiLCBzLnBhcmFtcy5zbGlkZUNsYXNzKSwgaS5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiwgdCksIGEucmVuZGVyU2xpZGUgfHwgKGkudGV4dENvbnRlbnQgPSBlKSwgYS5jYWNoZSAmJiAocy52aXJ0dWFsLmNhY2hlW3RdID0gaSksIGkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0LAogICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IGEsCiAgICAgICAgICAgICAgICBjZW50ZXJlZFNsaWRlczogaSwKICAgICAgICAgICAgICAgIGxvb3A6IHIKICAgICAgICAgICAgfSA9IHMucGFyYW1zLCB7CiAgICAgICAgICAgICAgICBhZGRTbGlkZXNCZWZvcmU6IGwsCiAgICAgICAgICAgICAgICBhZGRTbGlkZXNBZnRlcjogbwogICAgICAgICAgICB9ID0gcy5wYXJhbXMudmlydHVhbCwgewogICAgICAgICAgICAgICAgZnJvbTogYywKICAgICAgICAgICAgICAgIHRvOiBwLAogICAgICAgICAgICAgICAgc2xpZGVzOiB1LAogICAgICAgICAgICAgICAgc2xpZGVzR3JpZDogbSwKICAgICAgICAgICAgICAgIG9mZnNldDogaAogICAgICAgICAgICB9ID0gcy52aXJ0dWFsOwogICAgICAgICAgICBzLnBhcmFtcy5jc3NNb2RlIHx8IHMudXBkYXRlQWN0aXZlSW5kZXgoKTsKICAgICAgICAgICAgY29uc3QgZyA9IHMuYWN0aXZlSW5kZXggfHwgMDsKICAgICAgICAgICAgbGV0IHYsIHcsIGI7CiAgICAgICAgICAgIHYgPSBzLnJ0bFRyYW5zbGF0ZSA/ICJyaWdodCIgOiBzLmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCIsIGkgPyAodyA9IE1hdGguZmxvb3IodCAvIDIpICsgYSArIG8sIGIgPSBNYXRoLmZsb29yKHQgLyAyKSArIGEgKyBsKSA6ICh3ID0gdCArIChhIC0gMSkgKyBvLCBiID0gKHIgPyB0IDogYSkgKyBsKTsKICAgICAgICAgICAgbGV0IHkgPSBnIC0gYiwKICAgICAgICAgICAgICAgIEUgPSBnICsgdzsKICAgICAgICAgICAgciB8fCAoeSA9IE1hdGgubWF4KHksIDApLCBFID0gTWF0aC5taW4oRSwgdS5sZW5ndGggLSAxKSk7CiAgICAgICAgICAgIGxldCB4ID0gKHMuc2xpZGVzR3JpZFt5XSB8fCAwKSAtIChzLnNsaWRlc0dyaWRbMF0gfHwgMCk7CgogICAgICAgICAgICBmdW5jdGlvbiBTKCkgewogICAgICAgICAgICAgICAgcy51cGRhdGVTbGlkZXMoKSwgcy51cGRhdGVQcm9ncmVzcygpLCBzLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgbigidmlydHVhbFVwZGF0ZSIpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHIgJiYgZyA+PSBiID8gKHkgLT0gYiwgaSB8fCAoeCArPSBzLnNsaWRlc0dyaWRbMF0pKSA6IHIgJiYgZyA8IGIgJiYgKHkgPSAtYiwgaSAmJiAoeCArPSBzLnNsaWRlc0dyaWRbMF0pKSwgT2JqZWN0LmFzc2lnbihzLnZpcnR1YWwsIHsKICAgICAgICAgICAgICAgICAgICBmcm9tOiB5LAogICAgICAgICAgICAgICAgICAgIHRvOiBFLAogICAgICAgICAgICAgICAgICAgIG9mZnNldDogeCwKICAgICAgICAgICAgICAgICAgICBzbGlkZXNHcmlkOiBzLnNsaWRlc0dyaWQsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzQmVmb3JlOiBiLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc0FmdGVyOiB3CiAgICAgICAgICAgICAgICB9KSwgYyA9PT0geSAmJiBwID09PSBFICYmICFlKSByZXR1cm4gcy5zbGlkZXNHcmlkICE9PSBtICYmIHggIT09IGggJiYgcy5zbGlkZXMuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBlLnN0eWxlW3ZdID0gYCR7eH1weGAKICAgICAgICAgICAgfSkpLCBzLnVwZGF0ZVByb2dyZXNzKCksIHZvaWQgbigidmlydHVhbFVwZGF0ZSIpOwogICAgICAgICAgICBpZiAocy5wYXJhbXMudmlydHVhbC5yZW5kZXJFeHRlcm5hbCkgcmV0dXJuIHMucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWwuY2FsbChzLCB7CiAgICAgICAgICAgICAgICBvZmZzZXQ6IHgsCiAgICAgICAgICAgICAgICBmcm9tOiB5LAogICAgICAgICAgICAgICAgdG86IEUsCiAgICAgICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0geTsgdCA8PSBFOyB0ICs9IDEpIGUucHVzaCh1W3RdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfSgpCiAgICAgICAgICAgIH0pLCB2b2lkKHMucGFyYW1zLnZpcnR1YWwucmVuZGVyRXh0ZXJuYWxVcGRhdGUgPyBTKCkgOiBuKCJ2aXJ0dWFsVXBkYXRlIikpOwogICAgICAgICAgICBjb25zdCBUID0gW10sCiAgICAgICAgICAgICAgICBNID0gW10sCiAgICAgICAgICAgICAgICBDID0gZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSBlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlIDwgMCA/IHQgPSB1Lmxlbmd0aCArIGUgOiB0ID49IHUubGVuZ3RoICYmICh0IC09IHUubGVuZ3RoKSwgdAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGUpIHMuc2xpZGVzRWwucXVlcnlTZWxlY3RvckFsbChgLiR7cy5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZS5yZW1vdmUoKQogICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciAobGV0IGUgPSBjOyBlIDw9IHA7IGUgKz0gMSkKICAgICAgICAgICAgICAgICAgICBpZiAoZSA8IHkgfHwgZSA+IEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IEMoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuc2xpZGVzRWwucXVlcnlTZWxlY3RvckFsbChgLiR7cy5wYXJhbXMuc2xpZGVDbGFzc31bZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9IiR7dH0iXSwgc3dpcGVyLXNsaWRlW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke3R9Il1gKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfSBjb25zdCBQID0gciA/IC11Lmxlbmd0aCA6IDAsCiAgICAgICAgICAgICAgICBMID0gciA/IDIgKiB1Lmxlbmd0aCA6IHUubGVuZ3RoOwogICAgICAgICAgICBmb3IgKGxldCB0ID0gUDsgdCA8IEw7IHQgKz0gMSkKICAgICAgICAgICAgICAgIGlmICh0ID49IHkgJiYgdCA8PSBFKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IEModCk7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBwIHx8IGUgPyBNLnB1c2gocykgOiAodCA+IHAgJiYgTS5wdXNoKHMpLCB0IDwgYyAmJiBULnB1c2gocykpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChNLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgICAgIHMuc2xpZGVzRWwuYXBwZW5kKGQodVtlXSwgZSkpCiAgICAgICAgICAgICAgICB9KSksIHIpCiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gVC5sZW5ndGggLSAxOyBlID49IDA7IGUgLT0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBUW2VdOwogICAgICAgICAgICAgICAgICAgIHMuc2xpZGVzRWwucHJlcGVuZChkKHVbdF0sIHQpKQogICAgICAgICAgICAgICAgfSBlbHNlIFQuc29ydCgoKGUsIHQpID0+IHQgLSBlKSksIFQuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgcy5zbGlkZXNFbC5wcmVwZW5kKGQodVtlXSwgZSkpCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIGYocy5zbGlkZXNFbCwgIi5zd2lwZXItc2xpZGUsIHN3aXBlci1zbGlkZSIpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZS5zdHlsZVt2XSA9IGAke3h9cHhgCiAgICAgICAgICAgIH0pKSwgUygpCiAgICAgICAgfQogICAgICAgIHIoImJlZm9yZUluaXQiLCAoKCkgPT4gewogICAgICAgICAgICBpZiAoIXMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCkgcmV0dXJuOwogICAgICAgICAgICBsZXQgZTsKICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcy5wYXNzZWRQYXJhbXMudmlydHVhbC5zbGlkZXMpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBbLi4ucy5zbGlkZXNFbC5jaGlsZHJlbl0uZmlsdGVyKChlID0+IGUubWF0Y2hlcyhgLiR7cy5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApKSk7CiAgICAgICAgICAgICAgICB0ICYmIHQubGVuZ3RoICYmIChzLnZpcnR1YWwuc2xpZGVzID0gWy4uLnRdLCBlID0gITAsIHQuZm9yRWFjaCgoKGUsIHQpID0+IHsKICAgICAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgiLCB0KSwgcy52aXJ0dWFsLmNhY2hlW3RdID0gZSwgZS5yZW1vdmUoKQogICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgfHwgKHMudmlydHVhbC5zbGlkZXMgPSBzLnBhcmFtcy52aXJ0dWFsLnNsaWRlcyksIHMuY2xhc3NOYW1lcy5wdXNoKGAke3MucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9dmlydHVhbGApLCBzLnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzID0gITAsIHMub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyA9ICEwLCBzLnBhcmFtcy5pbml0aWFsU2xpZGUgfHwgYygpCiAgICAgICAgfSkpLCByKCJzZXRUcmFuc2xhdGUiLCAoKCkgPT4gewogICAgICAgICAgICBzLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgJiYgKHMucGFyYW1zLmNzc01vZGUgJiYgIXMuX2ltbWVkaWF0ZVZpcnR1YWwgPyAoY2xlYXJUaW1lb3V0KHQpLCB0ID0gc2V0VGltZW91dCgoKCkgPT4gewogICAgICAgICAgICAgICAgYygpCiAgICAgICAgICAgIH0pLCAxMDApKSA6IGMoKSkKICAgICAgICB9KSksIHIoImluaXQgdXBkYXRlIHJlc2l6ZSIsICgoKSA9PiB7CiAgICAgICAgICAgIHMucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBzLnBhcmFtcy5jc3NNb2RlICYmIHUocy53cmFwcGVyRWwsICItLXN3aXBlci12aXJ0dWFsLXNpemUiLCBgJHtzLnZpcnR1YWxTaXplfXB4YCkKICAgICAgICB9KSksIE9iamVjdC5hc3NpZ24ocy52aXJ0dWFsLCB7CiAgICAgICAgICAgIGFwcGVuZFNsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgImxlbmd0aCIgaW4gZSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGUubGVuZ3RoOyB0ICs9IDEpIGVbdF0gJiYgcy52aXJ0dWFsLnNsaWRlcy5wdXNoKGVbdF0pOwogICAgICAgICAgICAgICAgZWxzZSBzLnZpcnR1YWwuc2xpZGVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICBjKCEwKQogICAgICAgICAgICB9LAogICAgICAgICAgICBwcmVwZW5kU2xpZGU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBzLmFjdGl2ZUluZGV4OwogICAgICAgICAgICAgICAgbGV0IGEgPSB0ICsgMSwKICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCArPSAxKSBlW3RdICYmIHMudmlydHVhbC5zbGlkZXMudW5zaGlmdChlW3RdKTsKICAgICAgICAgICAgICAgICAgICBhID0gdCArIGUubGVuZ3RoLCBpID0gZS5sZW5ndGgKICAgICAgICAgICAgICAgIH0gZWxzZSBzLnZpcnR1YWwuc2xpZGVzLnVuc2hpZnQoZSk7CiAgICAgICAgICAgICAgICBpZiAocy5wYXJhbXMudmlydHVhbC5jYWNoZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBzLnZpcnR1YWwuY2FjaGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChzID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGVbc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gYS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgJiYgYS5zZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiwgcGFyc2VJbnQociwgMTApICsgaSksIHRbcGFyc2VJbnQocywgMTApICsgaV0gPSBhCiAgICAgICAgICAgICAgICAgICAgfSkpLCBzLnZpcnR1YWwuY2FjaGUgPSB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjKCEwKSwgcy5zbGlkZVRvKGEsIDApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlbW92ZVNsaWRlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBlKSByZXR1cm47CiAgICAgICAgICAgICAgICBsZXQgdCA9IHMuYWN0aXZlSW5kZXg7CiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBhID0gZS5sZW5ndGggLSAxOyBhID49IDA7IGEgLT0gMSkgcy52aXJ0dWFsLnNsaWRlcy5zcGxpY2UoZVthXSwgMSksIHMucGFyYW1zLnZpcnR1YWwuY2FjaGUgJiYgZGVsZXRlIHMudmlydHVhbC5jYWNoZVtlW2FdXSwgZVthXSA8IHQgJiYgKHQgLT0gMSksIHQgPSBNYXRoLm1heCh0LCAwKTsKICAgICAgICAgICAgICAgIGVsc2Ugcy52aXJ0dWFsLnNsaWRlcy5zcGxpY2UoZSwgMSksIHMucGFyYW1zLnZpcnR1YWwuY2FjaGUgJiYgZGVsZXRlIHMudmlydHVhbC5jYWNoZVtlXSwgZSA8IHQgJiYgKHQgLT0gMSksIHQgPSBNYXRoLm1heCh0LCAwKTsKICAgICAgICAgICAgICAgIGMoITApLCBzLnNsaWRlVG8odCwgMCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVtb3ZlQWxsU2xpZGVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHMudmlydHVhbC5zbGlkZXMgPSBbXSwgcy5wYXJhbXMudmlydHVhbC5jYWNoZSAmJiAocy52aXJ0dWFsLmNhY2hlID0ge30pLCBjKCEwKSwgcy5zbGlkZVRvKDAsIDApCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHVwZGF0ZTogYwogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBpLAogICAgICAgICAgICBlbWl0OiBuCiAgICAgICAgfSA9IGU7CiAgICAgICAgY29uc3QgbCA9IGEoKSwKICAgICAgICAgICAgbyA9IHIoKTsKCiAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgIGlmICghdC5lbmFibGVkKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogcwogICAgICAgICAgICB9ID0gdDsKICAgICAgICAgICAgbGV0IGEgPSBlOwogICAgICAgICAgICBhLm9yaWdpbmFsRXZlbnQgJiYgKGEgPSBhLm9yaWdpbmFsRXZlbnQpOwogICAgICAgICAgICBjb25zdCBpID0gYS5rZXlDb2RlIHx8IGEuY2hhckNvZGUsCiAgICAgICAgICAgICAgICByID0gdC5wYXJhbXMua2V5Ym9hcmQucGFnZVVwRG93biwKICAgICAgICAgICAgICAgIGQgPSByICYmIDMzID09PSBpLAogICAgICAgICAgICAgICAgYyA9IHIgJiYgMzQgPT09IGksCiAgICAgICAgICAgICAgICBwID0gMzcgPT09IGksCiAgICAgICAgICAgICAgICB1ID0gMzkgPT09IGksCiAgICAgICAgICAgICAgICBtID0gMzggPT09IGksCiAgICAgICAgICAgICAgICBoID0gNDAgPT09IGk7CiAgICAgICAgICAgIGlmICghdC5hbGxvd1NsaWRlTmV4dCAmJiAodC5pc0hvcml6b250YWwoKSAmJiB1IHx8IHQuaXNWZXJ0aWNhbCgpICYmIGggfHwgYykpIHJldHVybiAhMTsKICAgICAgICAgICAgaWYgKCF0LmFsbG93U2xpZGVQcmV2ICYmICh0LmlzSG9yaXpvbnRhbCgpICYmIHAgfHwgdC5pc1ZlcnRpY2FsKCkgJiYgbSB8fCBkKSkgcmV0dXJuICExOwogICAgICAgICAgICBpZiAoIShhLnNoaWZ0S2V5IHx8IGEuYWx0S2V5IHx8IGEuY3RybEtleSB8fCBhLm1ldGFLZXkgfHwgbC5hY3RpdmVFbGVtZW50ICYmIGwuYWN0aXZlRWxlbWVudC5ub2RlTmFtZSAmJiAoImlucHV0IiA9PT0gbC5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgfHwgInRleHRhcmVhIiA9PT0gbC5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSkgewogICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLmtleWJvYXJkLm9ubHlJblZpZXdwb3J0ICYmIChkIHx8IGMgfHwgcCB8fCB1IHx8IG0gfHwgaCkpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZSA9ICExOwogICAgICAgICAgICAgICAgICAgIGlmICh5KHQuZWwsIGAuJHt0LnBhcmFtcy5zbGlkZUNsYXNzfSwgc3dpcGVyLXNsaWRlYCkubGVuZ3RoID4gMCAmJiAwID09PSB5KHQuZWwsIGAuJHt0LnBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzfWApLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0LmVsLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gYS5jbGllbnRXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEuY2xpZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBuID0gby5pbm5lcldpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gby5pbm5lckhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHYoYSk7CiAgICAgICAgICAgICAgICAgICAgcyAmJiAoZC5sZWZ0IC09IGEuc2Nyb2xsTGVmdCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgW2QubGVmdCwgZC50b3BdLAogICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0ICsgaSwgZC50b3BdLAogICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0LCBkLnRvcCArIHJdLAogICAgICAgICAgICAgICAgICAgICAgICBbZC5sZWZ0ICsgaSwgZC50b3AgKyByXQogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBjLmxlbmd0aDsgdCArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBjW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc1swXSA+PSAwICYmIHNbMF0gPD0gbiAmJiBzWzFdID49IDAgJiYgc1sxXSA8PSBsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gc1swXSAmJiAwID09PSBzWzFdKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghZSkgcmV0dXJuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0LmlzSG9yaXpvbnRhbCgpID8gKChkIHx8IGMgfHwgcCB8fCB1KSAmJiAoYS5wcmV2ZW50RGVmYXVsdCA/IGEucHJldmVudERlZmF1bHQoKSA6IGEucmV0dXJuVmFsdWUgPSAhMSksICgoYyB8fCB1KSAmJiAhcyB8fCAoZCB8fCBwKSAmJiBzKSAmJiB0LnNsaWRlTmV4dCgpLCAoKGQgfHwgcCkgJiYgIXMgfHwgKGMgfHwgdSkgJiYgcykgJiYgdC5zbGlkZVByZXYoKSkgOiAoKGQgfHwgYyB8fCBtIHx8IGgpICYmIChhLnByZXZlbnREZWZhdWx0ID8gYS5wcmV2ZW50RGVmYXVsdCgpIDogYS5yZXR1cm5WYWx1ZSA9ICExKSwgKGMgfHwgaCkgJiYgdC5zbGlkZU5leHQoKSwgKGQgfHwgbSkgJiYgdC5zbGlkZVByZXYoKSksIG4oImtleVByZXNzIiwgaSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYygpIHsKICAgICAgICAgICAgdC5rZXlib2FyZC5lbmFibGVkIHx8IChsLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBkKSwgdC5rZXlib2FyZC5lbmFibGVkID0gITApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwKCkgewogICAgICAgICAgICB0LmtleWJvYXJkLmVuYWJsZWQgJiYgKGwucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGQpLCB0LmtleWJvYXJkLmVuYWJsZWQgPSAhMSkKICAgICAgICB9CiAgICAgICAgdC5rZXlib2FyZCA9IHsKICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICB9LCBzKHsKICAgICAgICAgICAga2V5Ym9hcmQ6IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgb25seUluVmlld3BvcnQ6ICEwLAogICAgICAgICAgICAgICAgcGFnZVVwRG93bjogITAKICAgICAgICAgICAgfQogICAgICAgIH0pLCBpKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMua2V5Ym9hcmQuZW5hYmxlZCAmJiBjKCkKICAgICAgICB9KSksIGkoImRlc3Ryb3kiLCAoKCkgPT4gewogICAgICAgICAgICB0LmtleWJvYXJkLmVuYWJsZWQgJiYgcCgpCiAgICAgICAgfSkpLCBPYmplY3QuYXNzaWduKHQua2V5Ym9hcmQsIHsKICAgICAgICAgICAgZW5hYmxlOiBjLAogICAgICAgICAgICBkaXNhYmxlOiBwCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIGV4dGVuZFBhcmFtczogcywKICAgICAgICAgICAgb246IGEsCiAgICAgICAgICAgIGVtaXQ6IGkKICAgICAgICB9ID0gZTsKICAgICAgICBjb25zdCBvID0gcigpOwogICAgICAgIGxldCBkOwogICAgICAgIHMoewogICAgICAgICAgICBtb3VzZXdoZWVsOiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgIHJlbGVhc2VPbkVkZ2VzOiAhMSwKICAgICAgICAgICAgICAgIGludmVydDogITEsCiAgICAgICAgICAgICAgICBmb3JjZVRvQXhpczogITEsCiAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogMSwKICAgICAgICAgICAgICAgIGV2ZW50c1RhcmdldDogImNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICB0aHJlc2hvbGREZWx0YTogbnVsbCwKICAgICAgICAgICAgICAgIHRocmVzaG9sZFRpbWU6IG51bGwKICAgICAgICAgICAgfQogICAgICAgIH0pLCB0Lm1vdXNld2hlZWwgPSB7CiAgICAgICAgICAgIGVuYWJsZWQ6ICExCiAgICAgICAgfTsKICAgICAgICBsZXQgYywgcCA9IGwoKTsKICAgICAgICBjb25zdCB1ID0gW107CgogICAgICAgIGZ1bmN0aW9uIG0oKSB7CiAgICAgICAgICAgIHQuZW5hYmxlZCAmJiAodC5tb3VzZUVudGVyZWQgPSAhMCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGgoKSB7CiAgICAgICAgICAgIHQuZW5hYmxlZCAmJiAodC5tb3VzZUVudGVyZWQgPSAhMSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoZSkgewogICAgICAgICAgICByZXR1cm4gISh0LnBhcmFtcy5tb3VzZXdoZWVsLnRocmVzaG9sZERlbHRhICYmIGUuZGVsdGEgPCB0LnBhcmFtcy5tb3VzZXdoZWVsLnRocmVzaG9sZERlbHRhKSAmJiAoISh0LnBhcmFtcy5tb3VzZXdoZWVsLnRocmVzaG9sZFRpbWUgJiYgbCgpIC0gcCA8IHQucGFyYW1zLm1vdXNld2hlZWwudGhyZXNob2xkVGltZSkgJiYgKGUuZGVsdGEgPj0gNiAmJiBsKCkgLSBwIDwgNjAgfHwgKGUuZGlyZWN0aW9uIDwgMCA/IHQuaXNFbmQgJiYgIXQucGFyYW1zLmxvb3AgfHwgdC5hbmltYXRpbmcgfHwgKHQuc2xpZGVOZXh0KCksIGkoInNjcm9sbCIsIGUucmF3KSkgOiB0LmlzQmVnaW5uaW5nICYmICF0LnBhcmFtcy5sb29wIHx8IHQuYW5pbWF0aW5nIHx8ICh0LnNsaWRlUHJldigpLCBpKCJzY3JvbGwiLCBlLnJhdykpLCBwID0gKG5ldyBvLkRhdGUpLmdldFRpbWUoKSwgITEpKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGcoZSkgewogICAgICAgICAgICBsZXQgcyA9IGUsCiAgICAgICAgICAgICAgICBhID0gITA7CiAgICAgICAgICAgIGlmICghdC5lbmFibGVkKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHIgPSB0LnBhcmFtcy5tb3VzZXdoZWVsOwogICAgICAgICAgICB0LnBhcmFtcy5jc3NNb2RlICYmIHMucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgbGV0IG8gPSB0LmVsOwogICAgICAgICAgICAiY29udGFpbmVyIiAhPT0gdC5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQgJiYgKG8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQucGFyYW1zLm1vdXNld2hlZWwuZXZlbnRzVGFyZ2V0KSk7CiAgICAgICAgICAgIGNvbnN0IHAgPSBvICYmIG8uY29udGFpbnMocy50YXJnZXQpOwogICAgICAgICAgICBpZiAoIXQubW91c2VFbnRlcmVkICYmICFwICYmICFyLnJlbGVhc2VPbkVkZ2VzKSByZXR1cm4gITA7CiAgICAgICAgICAgIHMub3JpZ2luYWxFdmVudCAmJiAocyA9IHMub3JpZ2luYWxFdmVudCk7CiAgICAgICAgICAgIGxldCBtID0gMDsKICAgICAgICAgICAgY29uc3QgaCA9IHQucnRsVHJhbnNsYXRlID8gLTEgOiAxLAogICAgICAgICAgICAgICAgZyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkZXRhaWwiIGluIGUgJiYgKHMgPSBlLmRldGFpbCksICJ3aGVlbERlbHRhIiBpbiBlICYmIChzID0gLWUud2hlZWxEZWx0YSAvIDEyMCksICJ3aGVlbERlbHRhWSIgaW4gZSAmJiAocyA9IC1lLndoZWVsRGVsdGFZIC8gMTIwKSwgIndoZWVsRGVsdGFYIiBpbiBlICYmICh0ID0gLWUud2hlZWxEZWx0YVggLyAxMjApLCAiYXhpcyIgaW4gZSAmJiBlLmF4aXMgPT09IGUuSE9SSVpPTlRBTF9BWElTICYmICh0ID0gcywgcyA9IDApLCBhID0gMTAgKiB0LCBpID0gMTAgKiBzLCAiZGVsdGFZIiBpbiBlICYmIChpID0gZS5kZWx0YVkpLCAiZGVsdGFYIiBpbiBlICYmIChhID0gZS5kZWx0YVgpLCBlLnNoaWZ0S2V5ICYmICFhICYmIChhID0gaSwgaSA9IDApLCAoYSB8fCBpKSAmJiBlLmRlbHRhTW9kZSAmJiAoMSA9PT0gZS5kZWx0YU1vZGUgPyAoYSAqPSA0MCwgaSAqPSA0MCkgOiAoYSAqPSA4MDAsIGkgKj0gODAwKSksIGEgJiYgIXQgJiYgKHQgPSBhIDwgMSA/IC0xIDogMSksIGkgJiYgIXMgJiYgKHMgPSBpIDwgMSA/IC0xIDogMSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3Bpblg6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5ZOiBzLAogICAgICAgICAgICAgICAgICAgICAgICBwaXhlbFg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsWTogaQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0ocyk7CiAgICAgICAgICAgIGlmIChyLmZvcmNlVG9BeGlzKQogICAgICAgICAgICAgICAgaWYgKHQuaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShNYXRoLmFicyhnLnBpeGVsWCkgPiBNYXRoLmFicyhnLnBpeGVsWSkpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgbSA9IC1nLnBpeGVsWCAqIGgKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoTWF0aC5hYnMoZy5waXhlbFkpID4gTWF0aC5hYnMoZy5waXhlbFgpKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgIG0gPSAtZy5waXhlbFkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBtID0gTWF0aC5hYnMoZy5waXhlbFgpID4gTWF0aC5hYnMoZy5waXhlbFkpID8gLWcucGl4ZWxYICogaCA6IC1nLnBpeGVsWTsKICAgICAgICAgICAgaWYgKDAgPT09IG0pIHJldHVybiAhMDsKICAgICAgICAgICAgci5pbnZlcnQgJiYgKG0gPSAtbSk7CiAgICAgICAgICAgIGxldCB2ID0gdC5nZXRUcmFuc2xhdGUoKSArIG0gKiByLnNlbnNpdGl2aXR5OwogICAgICAgICAgICBpZiAodiA+PSB0Lm1pblRyYW5zbGF0ZSgpICYmICh2ID0gdC5taW5UcmFuc2xhdGUoKSksIHYgPD0gdC5tYXhUcmFuc2xhdGUoKSAmJiAodiA9IHQubWF4VHJhbnNsYXRlKCkpLCBhID0gISF0LnBhcmFtcy5sb29wIHx8ICEodiA9PT0gdC5taW5UcmFuc2xhdGUoKSB8fCB2ID09PSB0Lm1heFRyYW5zbGF0ZSgpKSwgYSAmJiB0LnBhcmFtcy5uZXN0ZWQgJiYgcy5zdG9wUHJvcGFnYXRpb24oKSwgdC5wYXJhbXMuZnJlZU1vZGUgJiYgdC5wYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogbCgpLAogICAgICAgICAgICAgICAgICAgICAgICBkZWx0YTogTWF0aC5hYnMobSksCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogTWF0aC5zaWduKG0pCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhID0gYyAmJiBlLnRpbWUgPCBjLnRpbWUgKyA1MDAgJiYgZS5kZWx0YSA8PSBjLmRlbHRhICYmIGUuZGlyZWN0aW9uID09PSBjLmRpcmVjdGlvbjsKICAgICAgICAgICAgICAgIGlmICghYSkgewogICAgICAgICAgICAgICAgICAgIGMgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgbGV0IGwgPSB0LmdldFRyYW5zbGF0ZSgpICsgbSAqIHIuc2Vuc2l0aXZpdHk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHQuaXNCZWdpbm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0LmlzRW5kOwogICAgICAgICAgICAgICAgICAgIGlmIChsID49IHQubWluVHJhbnNsYXRlKCkgJiYgKGwgPSB0Lm1pblRyYW5zbGF0ZSgpKSwgbCA8PSB0Lm1heFRyYW5zbGF0ZSgpICYmIChsID0gdC5tYXhUcmFuc2xhdGUoKSksIHQuc2V0VHJhbnNpdGlvbigwKSwgdC5zZXRUcmFuc2xhdGUobCksIHQudXBkYXRlUHJvZ3Jlc3MoKSwgdC51cGRhdGVBY3RpdmVJbmRleCgpLCB0LnVwZGF0ZVNsaWRlc0NsYXNzZXMoKSwgKCFvICYmIHQuaXNCZWdpbm5pbmcgfHwgIXAgJiYgdC5pc0VuZCkgJiYgdC51cGRhdGVTbGlkZXNDbGFzc2VzKCksIHQucGFyYW1zLmxvb3AgJiYgdC5sb29wRml4KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogZS5kaXJlY3Rpb24gPCAwID8gIm5leHQiIDogInByZXYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnlNb3VzZXdoZWVsOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSwgdC5wYXJhbXMuZnJlZU1vZGUuc3RpY2t5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChkKSwgZCA9IHZvaWQgMCwgdS5sZW5ndGggPj0gMTUgJiYgdS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdS5sZW5ndGggPyB1W3UubGVuZ3RoIC0gMV0gOiB2b2lkIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHUucHVzaChlKSwgcyAmJiAoZS5kZWx0YSA+IHMuZGVsdGEgfHwgZS5kaXJlY3Rpb24gIT09IHMuZGlyZWN0aW9uKSkgdS5zcGxpY2UoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHUubGVuZ3RoID49IDE1ICYmIGUudGltZSAtIGEudGltZSA8IDUwMCAmJiBhLmRlbHRhIC0gZS5kZWx0YSA+PSAxICYmIGUuZGVsdGEgPD0gNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IG0gPiAwID8gLjggOiAuMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLCB1LnNwbGljZSgwKSwgZCA9IG4oKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNsaWRlVG9DbG9zZXN0KHQucGFyYW1zLnNwZWVkLCAhMCwgdm9pZCAwLCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZCB8fCAoZCA9IG4oKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBlLCB1LnNwbGljZSgwKSwgdC5zbGlkZVRvQ2xvc2VzdCh0LnBhcmFtcy5zcGVlZCwgITAsIHZvaWQgMCwgLjUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCA1MDApKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYSB8fCBpKCJzY3JvbGwiLCBzKSwgdC5wYXJhbXMuYXV0b3BsYXkgJiYgdC5wYXJhbXMuYXV0b3BsYXlEaXNhYmxlT25JbnRlcmFjdGlvbiAmJiB0LmF1dG9wbGF5LnN0b3AoKSwgbCA9PT0gdC5taW5UcmFuc2xhdGUoKSB8fCBsID09PSB0Lm1heFRyYW5zbGF0ZSgpKSByZXR1cm4gITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB7CiAgICAgICAgICAgICAgICAgICAgdGltZTogbCgpLAogICAgICAgICAgICAgICAgICAgIGRlbHRhOiBNYXRoLmFicyhtKSwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IE1hdGguc2lnbihtKSwKICAgICAgICAgICAgICAgICAgICByYXc6IGUKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB1Lmxlbmd0aCA+PSAyICYmIHUuc2hpZnQoKTsKICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB1Lmxlbmd0aCA/IHVbdS5sZW5ndGggLSAxXSA6IHZvaWQgMDsKICAgICAgICAgICAgICAgIGlmICh1LnB1c2gocyksIGEgPyAocy5kaXJlY3Rpb24gIT09IGEuZGlyZWN0aW9uIHx8IHMuZGVsdGEgPiBhLmRlbHRhIHx8IHMudGltZSA+IGEudGltZSArIDE1MCkgJiYgZihzKSA6IGYocyksIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHQucGFyYW1zLm1vdXNld2hlZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRpcmVjdGlvbiA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmlzRW5kICYmICF0LnBhcmFtcy5sb29wICYmIHMucmVsZWFzZU9uRWRnZXMpIHJldHVybiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHQuaXNCZWdpbm5pbmcgJiYgIXQucGFyYW1zLmxvb3AgJiYgcy5yZWxlYXNlT25FZGdlcykgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgICAgICB9KHMpKSByZXR1cm4gITAKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcy5wcmV2ZW50RGVmYXVsdCA/IHMucHJldmVudERlZmF1bHQoKSA6IHMucmV0dXJuVmFsdWUgPSAhMSwgITEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHYoZSkgewogICAgICAgICAgICBsZXQgcyA9IHQuZWw7CiAgICAgICAgICAgICJjb250YWluZXIiICE9PSB0LnBhcmFtcy5tb3VzZXdoZWVsLmV2ZW50c1RhcmdldCAmJiAocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodC5wYXJhbXMubW91c2V3aGVlbC5ldmVudHNUYXJnZXQpKSwgc1tlXSgibW91c2VlbnRlciIsIG0pLCBzW2VdKCJtb3VzZWxlYXZlIiwgaCksIHNbZV0oIndoZWVsIiwgZykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHcoKSB7CiAgICAgICAgICAgIHJldHVybiB0LnBhcmFtcy5jc3NNb2RlID8gKHQud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIiwgZyksICEwKSA6ICF0Lm1vdXNld2hlZWwuZW5hYmxlZCAmJiAodigiYWRkRXZlbnRMaXN0ZW5lciIpLCB0Lm1vdXNld2hlZWwuZW5hYmxlZCA9ICEwLCAhMCkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGIoKSB7CiAgICAgICAgICAgIHJldHVybiB0LnBhcmFtcy5jc3NNb2RlID8gKHQud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGcpLCAhMCkgOiAhIXQubW91c2V3aGVlbC5lbmFibGVkICYmICh2KCJyZW1vdmVFdmVudExpc3RlbmVyIiksIHQubW91c2V3aGVlbC5lbmFibGVkID0gITEsICEwKQogICAgICAgIH0KICAgICAgICBhKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgIXQucGFyYW1zLm1vdXNld2hlZWwuZW5hYmxlZCAmJiB0LnBhcmFtcy5jc3NNb2RlICYmIGIoKSwgdC5wYXJhbXMubW91c2V3aGVlbC5lbmFibGVkICYmIHcoKQogICAgICAgIH0pKSwgYSgiZGVzdHJveSIsICgoKSA9PiB7CiAgICAgICAgICAgIHQucGFyYW1zLmNzc01vZGUgJiYgdygpLCB0Lm1vdXNld2hlZWwuZW5hYmxlZCAmJiBiKCkKICAgICAgICB9KSksIE9iamVjdC5hc3NpZ24odC5tb3VzZXdoZWVsLCB7CiAgICAgICAgICAgIGVuYWJsZTogdywKICAgICAgICAgICAgZGlzYWJsZTogYgogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBlbWl0OiBpCiAgICAgICAgfSA9IGU7CiAgICAgICAgcyh7CiAgICAgICAgICAgIG5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgIG5leHRFbDogbnVsbCwKICAgICAgICAgICAgICAgIHByZXZFbDogbnVsbCwKICAgICAgICAgICAgICAgIGhpZGVPbkNsaWNrOiAhMSwKICAgICAgICAgICAgICAgIGRpc2FibGVkQ2xhc3M6ICJzd2lwZXItYnV0dG9uLWRpc2FibGVkIiwKICAgICAgICAgICAgICAgIGhpZGRlbkNsYXNzOiAic3dpcGVyLWJ1dHRvbi1oaWRkZW4iLAogICAgICAgICAgICAgICAgbG9ja0NsYXNzOiAic3dpcGVyLWJ1dHRvbi1sb2NrIiwKICAgICAgICAgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlZENsYXNzOiAic3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQiCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgdC5uYXZpZ2F0aW9uID0gewogICAgICAgICAgICBuZXh0RWw6IG51bGwsCiAgICAgICAgICAgIHByZXZFbDogbnVsbAogICAgICAgIH07CiAgICAgICAgY29uc3QgciA9IGUgPT4gKEFycmF5LmlzQXJyYXkoZSkgfHwgKGUgPSBbZV0uZmlsdGVyKChlID0+ICEhZSkpKSwgZSk7CgogICAgICAgIGZ1bmN0aW9uIG4oZSkgewogICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgcmV0dXJuIGUgJiYgInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgdC5pc0VsZW1lbnQgJiYgKHMgPSB0LmVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihlKSwgcykgPyBzIDogKGUgJiYgKCJzdHJpbmciID09IHR5cGVvZiBlICYmIChzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSldKSwgdC5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgcy5sZW5ndGggPiAxICYmIDEgPT09IHQuZWwucXVlcnlTZWxlY3RvckFsbChlKS5sZW5ndGggJiYgKHMgPSB0LmVsLnF1ZXJ5U2VsZWN0b3IoZSkpKSwgZSAmJiAhcyA/IGUgOiBzKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbChlLCBzKSB7CiAgICAgICAgICAgIGNvbnN0IGEgPSB0LnBhcmFtcy5uYXZpZ2F0aW9uOwogICAgICAgICAgICAoZSA9IHIoZSkpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZSAmJiAoZS5jbGFzc0xpc3RbcyA/ICJhZGQiIDogInJlbW92ZSJdKC4uLmEuZGlzYWJsZWRDbGFzcy5zcGxpdCgiICIpKSwgIkJVVFRPTiIgPT09IGUudGFnTmFtZSAmJiAoZS5kaXNhYmxlZCA9IHMpLCB0LnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHQuZW5hYmxlZCAmJiBlLmNsYXNzTGlzdFt0LmlzTG9ja2VkID8gImFkZCIgOiAicmVtb3ZlIl0oYS5sb2NrQ2xhc3MpKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG8oKSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIG5leHRFbDogZSwKICAgICAgICAgICAgICAgIHByZXZFbDogcwogICAgICAgICAgICB9ID0gdC5uYXZpZ2F0aW9uOwogICAgICAgICAgICBpZiAodC5wYXJhbXMubG9vcCkgcmV0dXJuIGwocywgITEpLCB2b2lkIGwoZSwgITEpOwogICAgICAgICAgICBsKHMsIHQuaXNCZWdpbm5pbmcgJiYgIXQucGFyYW1zLnJld2luZCksIGwoZSwgdC5pc0VuZCAmJiAhdC5wYXJhbXMucmV3aW5kKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZChlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKSwgKCF0LmlzQmVnaW5uaW5nIHx8IHQucGFyYW1zLmxvb3AgfHwgdC5wYXJhbXMucmV3aW5kKSAmJiAodC5zbGlkZVByZXYoKSwgaSgibmF2aWdhdGlvblByZXYiKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCksICghdC5pc0VuZCB8fCB0LnBhcmFtcy5sb29wIHx8IHQucGFyYW1zLnJld2luZCkgJiYgKHQuc2xpZGVOZXh0KCksIGkoIm5hdmlnYXRpb25OZXh0IikpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwKCkgewogICAgICAgICAgICBjb25zdCBlID0gdC5wYXJhbXMubmF2aWdhdGlvbjsKICAgICAgICAgICAgaWYgKHQucGFyYW1zLm5hdmlnYXRpb24gPSBKKHQsIHQub3JpZ2luYWxQYXJhbXMubmF2aWdhdGlvbiwgdC5wYXJhbXMubmF2aWdhdGlvbiwgewogICAgICAgICAgICAgICAgICAgIG5leHRFbDogInN3aXBlci1idXR0b24tbmV4dCIsCiAgICAgICAgICAgICAgICAgICAgcHJldkVsOiAic3dpcGVyLWJ1dHRvbi1wcmV2IgogICAgICAgICAgICAgICAgfSksICFlLm5leHRFbCAmJiAhZS5wcmV2RWwpIHJldHVybjsKICAgICAgICAgICAgbGV0IHMgPSBuKGUubmV4dEVsKSwKICAgICAgICAgICAgICAgIGEgPSBuKGUucHJldkVsKTsKICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0Lm5hdmlnYXRpb24sIHsKICAgICAgICAgICAgICAgIG5leHRFbDogcywKICAgICAgICAgICAgICAgIHByZXZFbDogYQogICAgICAgICAgICB9KSwgcyA9IHIocyksIGEgPSByKGEpOwogICAgICAgICAgICBjb25zdCBpID0gKHMsIGEpID0+IHsKICAgICAgICAgICAgICAgIHMgJiYgcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICJuZXh0IiA9PT0gYSA/IGMgOiBkKSwgIXQuZW5hYmxlZCAmJiBzICYmIHMuY2xhc3NMaXN0LmFkZCguLi5lLmxvY2tDbGFzcy5zcGxpdCgiICIpKQogICAgICAgICAgICB9OwogICAgICAgICAgICBzLmZvckVhY2goKGUgPT4gaShlLCAibmV4dCIpKSksIGEuZm9yRWFjaCgoZSA9PiBpKGUsICJwcmV2IikpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdSgpIHsKICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgIG5leHRFbDogZSwKICAgICAgICAgICAgICAgIHByZXZFbDogcwogICAgICAgICAgICB9ID0gdC5uYXZpZ2F0aW9uOwogICAgICAgICAgICBlID0gcihlKSwgcyA9IHIocyk7CiAgICAgICAgICAgIGNvbnN0IGEgPSAoZSwgcykgPT4gewogICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsICJuZXh0IiA9PT0gcyA/IGMgOiBkKSwgZS5jbGFzc0xpc3QucmVtb3ZlKC4uLnQucGFyYW1zLm5hdmlnYXRpb24uZGlzYWJsZWRDbGFzcy5zcGxpdCgiICIpKQogICAgICAgICAgICB9OwogICAgICAgICAgICBlLmZvckVhY2goKGUgPT4gYShlLCAibmV4dCIpKSksIHMuZm9yRWFjaCgoZSA9PiBhKGUsICJwcmV2IikpKQogICAgICAgIH0KICAgICAgICBhKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgITEgPT09IHQucGFyYW1zLm5hdmlnYXRpb24uZW5hYmxlZCA/IG0oKSA6IChwKCksIG8oKSkKICAgICAgICB9KSksIGEoInRvRWRnZSBmcm9tRWRnZSBsb2NrIHVubG9jayIsICgoKSA9PiB7CiAgICAgICAgICAgIG8oKQogICAgICAgIH0pKSwgYSgiZGVzdHJveSIsICgoKSA9PiB7CiAgICAgICAgICAgIHUoKQogICAgICAgIH0pKSwgYSgiZW5hYmxlIGRpc2FibGUiLCAoKCkgPT4gewogICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgbmV4dEVsOiBlLAogICAgICAgICAgICAgICAgcHJldkVsOiBzCiAgICAgICAgICAgIH0gPSB0Lm5hdmlnYXRpb247CiAgICAgICAgICAgIGUgPSByKGUpLCBzID0gcihzKSwgWy4uLmUsIC4uLnNdLmZpbHRlcigoZSA9PiAhIWUpKS5mb3JFYWNoKChlID0+IGUuY2xhc3NMaXN0W3QuZW5hYmxlZCA/ICJyZW1vdmUiIDogImFkZCJdKHQucGFyYW1zLm5hdmlnYXRpb24ubG9ja0NsYXNzKSkpCiAgICAgICAgfSkpLCBhKCJjbGljayIsICgoZSwgcykgPT4gewogICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgbmV4dEVsOiBhLAogICAgICAgICAgICAgICAgcHJldkVsOiBuCiAgICAgICAgICAgIH0gPSB0Lm5hdmlnYXRpb247CiAgICAgICAgICAgIGEgPSByKGEpLCBuID0gcihuKTsKICAgICAgICAgICAgY29uc3QgbCA9IHMudGFyZ2V0OwogICAgICAgICAgICBpZiAodC5wYXJhbXMubmF2aWdhdGlvbi5oaWRlT25DbGljayAmJiAhbi5pbmNsdWRlcyhsKSAmJiAhYS5pbmNsdWRlcyhsKSkgewogICAgICAgICAgICAgICAgaWYgKHQucGFnaW5hdGlvbiAmJiB0LnBhcmFtcy5wYWdpbmF0aW9uICYmIHQucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlICYmICh0LnBhZ2luYXRpb24uZWwgPT09IGwgfHwgdC5wYWdpbmF0aW9uLmVsLmNvbnRhaW5zKGwpKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICBhLmxlbmd0aCA/IGUgPSBhWzBdLmNsYXNzTGlzdC5jb250YWlucyh0LnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKSA6IG4ubGVuZ3RoICYmIChlID0gblswXS5jbGFzc0xpc3QuY29udGFpbnModC5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcykpLCBpKCEwID09PSBlID8gIm5hdmlnYXRpb25TaG93IiA6ICJuYXZpZ2F0aW9uSGlkZSIpLCBbLi4uYSwgLi4ubl0uZmlsdGVyKChlID0+ICEhZSkpLmZvckVhY2goKGUgPT4gZS5jbGFzc0xpc3QudG9nZ2xlKHQucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpKSkKICAgICAgICAgICAgfQogICAgICAgIH0pKTsKICAgICAgICBjb25zdCBtID0gKCkgPT4gewogICAgICAgICAgICB0LmVsLmNsYXNzTGlzdC5hZGQoLi4udC5wYXJhbXMubmF2aWdhdGlvbi5uYXZpZ2F0aW9uRGlzYWJsZWRDbGFzcy5zcGxpdCgiICIpKSwgdSgpCiAgICAgICAgfTsKICAgICAgICBPYmplY3QuYXNzaWduKHQubmF2aWdhdGlvbiwgewogICAgICAgICAgICBlbmFibGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIHQuZWwuY2xhc3NMaXN0LnJlbW92ZSguLi50LnBhcmFtcy5uYXZpZ2F0aW9uLm5hdmlnYXRpb25EaXNhYmxlZENsYXNzLnNwbGl0KCIgIikpLCBwKCksIG8oKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBtLAogICAgICAgICAgICB1cGRhdGU6IG8sCiAgICAgICAgICAgIGluaXQ6IHAsCiAgICAgICAgICAgIGRlc3Ryb3k6IHUKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYSwKICAgICAgICAgICAgZW1pdDogaQogICAgICAgIH0gPSBlOwogICAgICAgIGNvbnN0IHIgPSAic3dpcGVyLXBhZ2luYXRpb24iOwogICAgICAgIGxldCBuOwogICAgICAgIHMoewogICAgICAgICAgICBwYWdpbmF0aW9uOiB7CiAgICAgICAgICAgICAgICBlbDogbnVsbCwKICAgICAgICAgICAgICAgIGJ1bGxldEVsZW1lbnQ6ICJzcGFuIiwKICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogITEsCiAgICAgICAgICAgICAgICBoaWRlT25DbGljazogITEsCiAgICAgICAgICAgICAgICByZW5kZXJCdWxsZXQ6IG51bGwsCiAgICAgICAgICAgICAgICByZW5kZXJQcm9ncmVzc2JhcjogbnVsbCwKICAgICAgICAgICAgICAgIHJlbmRlckZyYWN0aW9uOiBudWxsLAogICAgICAgICAgICAgICAgcmVuZGVyQ3VzdG9tOiBudWxsLAogICAgICAgICAgICAgICAgcHJvZ3Jlc3NiYXJPcHBvc2l0ZTogITEsCiAgICAgICAgICAgICAgICB0eXBlOiAiYnVsbGV0cyIsCiAgICAgICAgICAgICAgICBkeW5hbWljQnVsbGV0czogITEsCiAgICAgICAgICAgICAgICBkeW5hbWljTWFpbkJ1bGxldHM6IDEsCiAgICAgICAgICAgICAgICBmb3JtYXRGcmFjdGlvbkN1cnJlbnQ6IGUgPT4gZSwKICAgICAgICAgICAgICAgIGZvcm1hdEZyYWN0aW9uVG90YWw6IGUgPT4gZSwKICAgICAgICAgICAgICAgIGJ1bGxldENsYXNzOiBgJHtyfS1idWxsZXRgLAogICAgICAgICAgICAgICAgYnVsbGV0QWN0aXZlQ2xhc3M6IGAke3J9LWJ1bGxldC1hY3RpdmVgLAogICAgICAgICAgICAgICAgbW9kaWZpZXJDbGFzczogYCR7cn0tYCwKICAgICAgICAgICAgICAgIGN1cnJlbnRDbGFzczogYCR7cn0tY3VycmVudGAsCiAgICAgICAgICAgICAgICB0b3RhbENsYXNzOiBgJHtyfS10b3RhbGAsCiAgICAgICAgICAgICAgICBoaWRkZW5DbGFzczogYCR7cn0taGlkZGVuYCwKICAgICAgICAgICAgICAgIHByb2dyZXNzYmFyRmlsbENsYXNzOiBgJHtyfS1wcm9ncmVzc2Jhci1maWxsYCwKICAgICAgICAgICAgICAgIHByb2dyZXNzYmFyT3Bwb3NpdGVDbGFzczogYCR7cn0tcHJvZ3Jlc3NiYXItb3Bwb3NpdGVgLAogICAgICAgICAgICAgICAgY2xpY2thYmxlQ2xhc3M6IGAke3J9LWNsaWNrYWJsZWAsCiAgICAgICAgICAgICAgICBsb2NrQ2xhc3M6IGAke3J9LWxvY2tgLAogICAgICAgICAgICAgICAgaG9yaXpvbnRhbENsYXNzOiBgJHtyfS1ob3Jpem9udGFsYCwKICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2xhc3M6IGAke3J9LXZlcnRpY2FsYCwKICAgICAgICAgICAgICAgIHBhZ2luYXRpb25EaXNhYmxlZENsYXNzOiBgJHtyfS1kaXNhYmxlZGAKICAgICAgICAgICAgfQogICAgICAgIH0pLCB0LnBhZ2luYXRpb24gPSB7CiAgICAgICAgICAgIGVsOiBudWxsLAogICAgICAgICAgICBidWxsZXRzOiBbXQogICAgICAgIH07CiAgICAgICAgbGV0IGwgPSAwOwogICAgICAgIGNvbnN0IG8gPSBlID0+IChBcnJheS5pc0FycmF5KGUpIHx8IChlID0gW2VdLmZpbHRlcigoZSA9PiAhIWUpKSksIGUpOwoKICAgICAgICBmdW5jdGlvbiBkKCkgewogICAgICAgICAgICByZXR1cm4gIXQucGFyYW1zLnBhZ2luYXRpb24uZWwgfHwgIXQucGFnaW5hdGlvbi5lbCB8fCBBcnJheS5pc0FycmF5KHQucGFnaW5hdGlvbi5lbCkgJiYgMCA9PT0gdC5wYWdpbmF0aW9uLmVsLmxlbmd0aAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYyhlLCBzKSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzOiBhCiAgICAgICAgICAgIH0gPSB0LnBhcmFtcy5wYWdpbmF0aW9uOwogICAgICAgICAgICBlICYmIChlID0gZVsoInByZXYiID09PSBzID8gInByZXZpb3VzIiA6ICJuZXh0IikgKyAiRWxlbWVudFNpYmxpbmciXSkgJiYgKGUuY2xhc3NMaXN0LmFkZChgJHthfS0ke3N9YCksIChlID0gZVsoInByZXYiID09PSBzID8gInByZXZpb3VzIiA6ICJuZXh0IikgKyAiRWxlbWVudFNpYmxpbmciXSkgJiYgZS5jbGFzc0xpc3QuYWRkKGAke2F9LSR7c30tJHtzfWApKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcChlKSB7CiAgICAgICAgICAgIGNvbnN0IHMgPSBlLnRhcmdldC5jbG9zZXN0KGVlKHQucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MpKTsKICAgICAgICAgICAgaWYgKCFzKSByZXR1cm47CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgY29uc3QgYSA9IGIocykgKiB0LnBhcmFtcy5zbGlkZXNQZXJHcm91cDsKICAgICAgICAgICAgdC5wYXJhbXMubG9vcCA/IHQuc2xpZGVUb0xvb3AoYSkgOiB0LnNsaWRlVG8oYSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHUoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnJ0bCwKICAgICAgICAgICAgICAgIHMgPSB0LnBhcmFtcy5wYWdpbmF0aW9uOwogICAgICAgICAgICBpZiAoZCgpKSByZXR1cm47CiAgICAgICAgICAgIGxldCBhLCByID0gdC5wYWdpbmF0aW9uLmVsOwogICAgICAgICAgICByID0gbyhyKTsKICAgICAgICAgICAgY29uc3QgcCA9IHQudmlydHVhbCAmJiB0LnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyB0LnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IHQuc2xpZGVzLmxlbmd0aCwKICAgICAgICAgICAgICAgIHUgPSB0LnBhcmFtcy5sb29wID8gTWF0aC5jZWlsKHAgLyB0LnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiB0LnNuYXBHcmlkLmxlbmd0aDsKICAgICAgICAgICAgaWYgKGEgPSB0LnBhcmFtcy5sb29wID8gdC5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPiAxID8gTWF0aC5mbG9vcih0LnJlYWxJbmRleCAvIHQucGFyYW1zLnNsaWRlc1Blckdyb3VwKSA6IHQucmVhbEluZGV4IDogdm9pZCAwICE9PSB0LnNuYXBJbmRleCA/IHQuc25hcEluZGV4IDogdC5hY3RpdmVJbmRleCB8fCAwLCAiYnVsbGV0cyIgPT09IHMudHlwZSAmJiB0LnBhZ2luYXRpb24uYnVsbGV0cyAmJiB0LnBhZ2luYXRpb24uYnVsbGV0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5wYWdpbmF0aW9uLmJ1bGxldHM7CiAgICAgICAgICAgICAgICBsZXQgbywgZCwgcDsKICAgICAgICAgICAgICAgIGlmIChzLmR5bmFtaWNCdWxsZXRzICYmIChuID0geChpWzBdLCB0LmlzSG9yaXpvbnRhbCgpID8gIndpZHRoIiA6ICJoZWlnaHQiLCAhMCksIHIuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGVbdC5pc0hvcml6b250YWwoKSA/ICJ3aWR0aCIgOiAiaGVpZ2h0Il0gPSBuICogKHMuZHluYW1pY01haW5CdWxsZXRzICsgNCkgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSkpLCBzLmR5bmFtaWNNYWluQnVsbGV0cyA+IDEgJiYgdm9pZCAwICE9PSB0LnByZXZpb3VzSW5kZXggJiYgKGwgKz0gYSAtICh0LnByZXZpb3VzSW5kZXggfHwgMCksIGwgPiBzLmR5bmFtaWNNYWluQnVsbGV0cyAtIDEgPyBsID0gcy5keW5hbWljTWFpbkJ1bGxldHMgLSAxIDogbCA8IDAgJiYgKGwgPSAwKSksIG8gPSBNYXRoLm1heChhIC0gbCwgMCksIGQgPSBvICsgKE1hdGgubWluKGkubGVuZ3RoLCBzLmR5bmFtaWNNYWluQnVsbGV0cykgLSAxKSwgcCA9IChkICsgbykgLyAyKSwgaS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QucmVtb3ZlKC4uLlsiIiwgIi1uZXh0IiwgIi1uZXh0LW5leHQiLCAiLXByZXYiLCAiLXByZXYtcHJldiIsICItbWFpbiJdLm1hcCgoZSA9PiBgJHtzLmJ1bGxldEFjdGl2ZUNsYXNzfSR7ZX1gKSkpCiAgICAgICAgICAgICAgICAgICAgfSkpLCByLmxlbmd0aCA+IDEpIGkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGIoZSk7CiAgICAgICAgICAgICAgICAgICAgdCA9PT0gYSAmJiBlLmNsYXNzTGlzdC5hZGQocy5idWxsZXRBY3RpdmVDbGFzcyksIHMuZHluYW1pY0J1bGxldHMgJiYgKHQgPj0gbyAmJiB0IDw9IGQgJiYgZS5jbGFzc0xpc3QuYWRkKGAke3MuYnVsbGV0QWN0aXZlQ2xhc3N9LW1haW5gKSwgdCA9PT0gbyAmJiBjKGUsICJwcmV2IiksIHQgPT09IGQgJiYgYyhlLCAibmV4dCIpKQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGlbYV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS5jbGFzc0xpc3QuYWRkKHMuYnVsbGV0QWN0aXZlQ2xhc3MpLCBzLmR5bmFtaWNCdWxsZXRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBpW29dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGlbZF07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGUgPSBvOyBlIDw9IGQ7IGUgKz0gMSkgaVtlXS5jbGFzc0xpc3QuYWRkKGAke3MuYnVsbGV0QWN0aXZlQ2xhc3N9LW1haW5gKTsKICAgICAgICAgICAgICAgICAgICAgICAgYyhlLCAicHJldiIpLCBjKHQsICJuZXh0IikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocy5keW5hbWljQnVsbGV0cykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBNYXRoLm1pbihpLmxlbmd0aCwgcy5keW5hbWljTWFpbkJ1bGxldHMgKyA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IChuICogYSAtIG4pIC8gMiAtIHAgKiBuLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gZSA/ICJyaWdodCIgOiAibGVmdCI7CiAgICAgICAgICAgICAgICAgICAgaS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5zdHlsZVt0LmlzSG9yaXpvbnRhbCgpID8gbCA6ICJ0b3AiXSA9IGAke3J9cHhgCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgci5mb3JFYWNoKCgoZSwgcikgPT4gewogICAgICAgICAgICAgICAgaWYgKCJmcmFjdGlvbiIgPT09IHMudHlwZSAmJiAoZS5xdWVyeVNlbGVjdG9yQWxsKGVlKHMuY3VycmVudENsYXNzKSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBzLmZvcm1hdEZyYWN0aW9uQ3VycmVudChhICsgMSkKICAgICAgICAgICAgICAgICAgICB9KSksIGUucXVlcnlTZWxlY3RvckFsbChlZShzLnRvdGFsQ2xhc3MpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50ZXh0Q29udGVudCA9IHMuZm9ybWF0RnJhY3Rpb25Ub3RhbCh1KQogICAgICAgICAgICAgICAgICAgIH0pKSksICJwcm9ncmVzc2JhciIgPT09IHMudHlwZSkgewogICAgICAgICAgICAgICAgICAgIGxldCBpOwogICAgICAgICAgICAgICAgICAgIGkgPSBzLnByb2dyZXNzYmFyT3Bwb3NpdGUgPyB0LmlzSG9yaXpvbnRhbCgpID8gInZlcnRpY2FsIiA6ICJob3Jpem9udGFsIiA6IHQuaXNIb3Jpem9udGFsKCkgPyAiaG9yaXpvbnRhbCIgOiAidmVydGljYWwiOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSAoYSArIDEpIC8gdTsKICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAxOwogICAgICAgICAgICAgICAgICAgICJob3Jpem9udGFsIiA9PT0gaSA/IG4gPSByIDogbCA9IHIsIGUucXVlcnlTZWxlY3RvckFsbChlZShzLnByb2dyZXNzYmFyRmlsbENsYXNzKSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZVgoJHtufSkgc2NhbGVZKCR7bH0pYCwgZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHt0LnBhcmFtcy5zcGVlZH1tc2AKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICJjdXN0b20iID09PSBzLnR5cGUgJiYgcy5yZW5kZXJDdXN0b20gPyAoZS5pbm5lckhUTUwgPSBzLnJlbmRlckN1c3RvbSh0LCBhICsgMSwgdSksIDAgPT09IHIgJiYgaSgicGFnaW5hdGlvblJlbmRlciIsIGUpKSA6ICgwID09PSByICYmIGkoInBhZ2luYXRpb25SZW5kZXIiLCBlKSwgaSgicGFnaW5hdGlvblVwZGF0ZSIsIGUpKSwgdC5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0LmVuYWJsZWQgJiYgZS5jbGFzc0xpc3RbdC5pc0xvY2tlZCA/ICJhZGQiIDogInJlbW92ZSJdKHMubG9ja0NsYXNzKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG0oKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5wYWdpbmF0aW9uOwogICAgICAgICAgICBpZiAoZCgpKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gdC52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiB0LnNsaWRlcy5sZW5ndGg7CiAgICAgICAgICAgIGxldCBhID0gdC5wYWdpbmF0aW9uLmVsOwogICAgICAgICAgICBhID0gbyhhKTsKICAgICAgICAgICAgbGV0IHIgPSAiIjsKICAgICAgICAgICAgaWYgKCJidWxsZXRzIiA9PT0gZS50eXBlKSB7CiAgICAgICAgICAgICAgICBsZXQgYSA9IHQucGFyYW1zLmxvb3AgPyBNYXRoLmNlaWwocyAvIHQucGFyYW1zLnNsaWRlc1Blckdyb3VwKSA6IHQuc25hcEdyaWQubGVuZ3RoOwogICAgICAgICAgICAgICAgdC5wYXJhbXMuZnJlZU1vZGUgJiYgdC5wYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBhID4gcyAmJiAoYSA9IHMpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBhOyBzICs9IDEpIGUucmVuZGVyQnVsbGV0ID8gciArPSBlLnJlbmRlckJ1bGxldC5jYWxsKHQsIHMsIGUuYnVsbGV0Q2xhc3MpIDogciArPSBgPCR7ZS5idWxsZXRFbGVtZW50fSBjbGFzcz0iJHtlLmJ1bGxldENsYXNzfSI+PC8ke2UuYnVsbGV0RWxlbWVudH0+YAogICAgICAgICAgICB9CiAgICAgICAgICAgICJmcmFjdGlvbiIgPT09IGUudHlwZSAmJiAociA9IGUucmVuZGVyRnJhY3Rpb24gPyBlLnJlbmRlckZyYWN0aW9uLmNhbGwodCwgZS5jdXJyZW50Q2xhc3MsIGUudG90YWxDbGFzcykgOiBgPHNwYW4gY2xhc3M9IiR7ZS5jdXJyZW50Q2xhc3N9Ij48L3NwYW4+IC8gPHNwYW4gY2xhc3M9IiR7ZS50b3RhbENsYXNzfSI+PC9zcGFuPmApLCAicHJvZ3Jlc3NiYXIiID09PSBlLnR5cGUgJiYgKHIgPSBlLnJlbmRlclByb2dyZXNzYmFyID8gZS5yZW5kZXJQcm9ncmVzc2Jhci5jYWxsKHQsIGUucHJvZ3Jlc3NiYXJGaWxsQ2xhc3MpIDogYDxzcGFuIGNsYXNzPSIke2UucHJvZ3Jlc3NiYXJGaWxsQ2xhc3N9Ij48L3NwYW4+YCksIGEuZm9yRWFjaCgocyA9PiB7CiAgICAgICAgICAgICAgICAiY3VzdG9tIiAhPT0gZS50eXBlICYmIChzLmlubmVySFRNTCA9IHIgfHwgIiIpLCAiYnVsbGV0cyIgPT09IGUudHlwZSAmJiAodC5wYWdpbmF0aW9uLmJ1bGxldHMgPSBbLi4ucy5xdWVyeVNlbGVjdG9yQWxsKGVlKGUuYnVsbGV0Q2xhc3MpKV0pCiAgICAgICAgICAgIH0pKSwgImN1c3RvbSIgIT09IGUudHlwZSAmJiBpKCJwYWdpbmF0aW9uUmVuZGVyIiwgYVswXSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGgoKSB7CiAgICAgICAgICAgIHQucGFyYW1zLnBhZ2luYXRpb24gPSBKKHQsIHQub3JpZ2luYWxQYXJhbXMucGFnaW5hdGlvbiwgdC5wYXJhbXMucGFnaW5hdGlvbiwgewogICAgICAgICAgICAgICAgZWw6ICJzd2lwZXItcGFnaW5hdGlvbiIKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5wYWdpbmF0aW9uOwogICAgICAgICAgICBpZiAoIWUuZWwpIHJldHVybjsKICAgICAgICAgICAgbGV0IHM7CiAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBlLmVsICYmIHQuaXNFbGVtZW50ICYmIChzID0gdC5lbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoZS5lbCkpLCBzIHx8ICJzdHJpbmciICE9IHR5cGVvZiBlLmVsIHx8IChzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZS5lbCldKSwgcyB8fCAocyA9IGUuZWwpLCBzICYmIDAgIT09IHMubGVuZ3RoICYmICh0LnBhcmFtcy51bmlxdWVOYXZFbGVtZW50cyAmJiAic3RyaW5nIiA9PSB0eXBlb2YgZS5lbCAmJiBBcnJheS5pc0FycmF5KHMpICYmIHMubGVuZ3RoID4gMSAmJiAocyA9IFsuLi50LmVsLnF1ZXJ5U2VsZWN0b3JBbGwoZS5lbCldLCBzLmxlbmd0aCA+IDEgJiYgKHMgPSBzLmZpbHRlcigoZSA9PiB5KGUsICIuc3dpcGVyIilbMF0gPT09IHQuZWwpKVswXSkpLCBBcnJheS5pc0FycmF5KHMpICYmIDEgPT09IHMubGVuZ3RoICYmIChzID0gc1swXSksIE9iamVjdC5hc3NpZ24odC5wYWdpbmF0aW9uLCB7CiAgICAgICAgICAgICAgICBlbDogcwogICAgICAgICAgICB9KSwgcyA9IG8ocyksIHMuZm9yRWFjaCgocyA9PiB7CiAgICAgICAgICAgICAgICAiYnVsbGV0cyIgPT09IGUudHlwZSAmJiBlLmNsaWNrYWJsZSAmJiBzLmNsYXNzTGlzdC5hZGQoZS5jbGlja2FibGVDbGFzcyksIHMuY2xhc3NMaXN0LmFkZChlLm1vZGlmaWVyQ2xhc3MgKyBlLnR5cGUpLCBzLmNsYXNzTGlzdC5hZGQodC5pc0hvcml6b250YWwoKSA/IGUuaG9yaXpvbnRhbENsYXNzIDogZS52ZXJ0aWNhbENsYXNzKSwgImJ1bGxldHMiID09PSBlLnR5cGUgJiYgZS5keW5hbWljQnVsbGV0cyAmJiAocy5jbGFzc0xpc3QuYWRkKGAke2UubW9kaWZpZXJDbGFzc30ke2UudHlwZX0tZHluYW1pY2ApLCBsID0gMCwgZS5keW5hbWljTWFpbkJ1bGxldHMgPCAxICYmIChlLmR5bmFtaWNNYWluQnVsbGV0cyA9IDEpKSwgInByb2dyZXNzYmFyIiA9PT0gZS50eXBlICYmIGUucHJvZ3Jlc3NiYXJPcHBvc2l0ZSAmJiBzLmNsYXNzTGlzdC5hZGQoZS5wcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3MpLCBlLmNsaWNrYWJsZSAmJiBzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcCksIHQuZW5hYmxlZCB8fCBzLmNsYXNzTGlzdC5hZGQoZS5sb2NrQ2xhc3MpCiAgICAgICAgICAgIH0pKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5wYWdpbmF0aW9uOwogICAgICAgICAgICBpZiAoZCgpKSByZXR1cm47CiAgICAgICAgICAgIGxldCBzID0gdC5wYWdpbmF0aW9uLmVsOwogICAgICAgICAgICBzICYmIChzID0gbyhzKSwgcy5mb3JFYWNoKChzID0+IHsKICAgICAgICAgICAgICAgIHMuY2xhc3NMaXN0LnJlbW92ZShlLmhpZGRlbkNsYXNzKSwgcy5jbGFzc0xpc3QucmVtb3ZlKGUubW9kaWZpZXJDbGFzcyArIGUudHlwZSksIHMuY2xhc3NMaXN0LnJlbW92ZSh0LmlzSG9yaXpvbnRhbCgpID8gZS5ob3Jpem9udGFsQ2xhc3MgOiBlLnZlcnRpY2FsQ2xhc3MpLCBlLmNsaWNrYWJsZSAmJiBzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcCkKICAgICAgICAgICAgfSkpKSwgdC5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgdC5wYWdpbmF0aW9uLmJ1bGxldHMuZm9yRWFjaCgodCA9PiB0LmNsYXNzTGlzdC5yZW1vdmUoZS5idWxsZXRBY3RpdmVDbGFzcykpKQogICAgICAgIH0KICAgICAgICBhKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgITEgPT09IHQucGFyYW1zLnBhZ2luYXRpb24uZW5hYmxlZCA/IGcoKSA6IChoKCksIG0oKSwgdSgpKQogICAgICAgIH0pKSwgYSgiYWN0aXZlSW5kZXhDaGFuZ2UiLCAoKCkgPT4gewogICAgICAgICAgICB2b2lkIDAgPT09IHQuc25hcEluZGV4ICYmIHUoKQogICAgICAgIH0pKSwgYSgic25hcEluZGV4Q2hhbmdlIiwgKCgpID0+IHsKICAgICAgICAgICAgdSgpCiAgICAgICAgfSkpLCBhKCJzbmFwR3JpZExlbmd0aENoYW5nZSIsICgoKSA9PiB7CiAgICAgICAgICAgIG0oKSwgdSgpCiAgICAgICAgfSkpLCBhKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgZigpCiAgICAgICAgfSkpLCBhKCJlbmFibGUgZGlzYWJsZSIsICgoKSA9PiB7CiAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICBlbDogZQogICAgICAgICAgICB9ID0gdC5wYWdpbmF0aW9uOwogICAgICAgICAgICBlICYmIChlID0gbyhlKSwgZS5mb3JFYWNoKChlID0+IGUuY2xhc3NMaXN0W3QuZW5hYmxlZCA/ICJyZW1vdmUiIDogImFkZCJdKHQucGFyYW1zLnBhZ2luYXRpb24ubG9ja0NsYXNzKSkpKQogICAgICAgIH0pKSwgYSgibG9jayB1bmxvY2siLCAoKCkgPT4gewogICAgICAgICAgICB1KCkKICAgICAgICB9KSksIGEoImNsaWNrIiwgKChlLCBzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGEgPSBzLnRhcmdldDsKICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgIGVsOiByCiAgICAgICAgICAgIH0gPSB0LnBhZ2luYXRpb247CiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHIpIHx8IChyID0gW3JdLmZpbHRlcigoZSA9PiAhIWUpKSksIHQucGFyYW1zLnBhZ2luYXRpb24uZWwgJiYgdC5wYXJhbXMucGFnaW5hdGlvbi5oaWRlT25DbGljayAmJiByICYmIHIubGVuZ3RoID4gMCAmJiAhYS5jbGFzc0xpc3QuY29udGFpbnModC5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpIHsKICAgICAgICAgICAgICAgIGlmICh0Lm5hdmlnYXRpb24gJiYgKHQubmF2aWdhdGlvbi5uZXh0RWwgJiYgYSA9PT0gdC5uYXZpZ2F0aW9uLm5leHRFbCB8fCB0Lm5hdmlnYXRpb24ucHJldkVsICYmIGEgPT09IHQubmF2aWdhdGlvbi5wcmV2RWwpKSByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCBlID0gclswXS5jbGFzc0xpc3QuY29udGFpbnModC5wYXJhbXMucGFnaW5hdGlvbi5oaWRkZW5DbGFzcyk7CiAgICAgICAgICAgICAgICBpKCEwID09PSBlID8gInBhZ2luYXRpb25TaG93IiA6ICJwYWdpbmF0aW9uSGlkZSIpLCByLmZvckVhY2goKGUgPT4gZS5jbGFzc0xpc3QudG9nZ2xlKHQucGFyYW1zLnBhZ2luYXRpb24uaGlkZGVuQ2xhc3MpKSkKICAgICAgICAgICAgfQogICAgICAgIH0pKTsKICAgICAgICBjb25zdCBnID0gKCkgPT4gewogICAgICAgICAgICB0LmVsLmNsYXNzTGlzdC5hZGQodC5wYXJhbXMucGFnaW5hdGlvbi5wYWdpbmF0aW9uRGlzYWJsZWRDbGFzcyk7CiAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICBlbDogZQogICAgICAgICAgICB9ID0gdC5wYWdpbmF0aW9uOwogICAgICAgICAgICBlICYmIChlID0gbyhlKSwgZS5mb3JFYWNoKChlID0+IGUuY2xhc3NMaXN0LmFkZCh0LnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKSkpKSwgZigpCiAgICAgICAgfTsKICAgICAgICBPYmplY3QuYXNzaWduKHQucGFnaW5hdGlvbiwgewogICAgICAgICAgICBlbmFibGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIHQuZWwuY2xhc3NMaXN0LnJlbW92ZSh0LnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKTsKICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgZWw6IGUKICAgICAgICAgICAgICAgIH0gPSB0LnBhZ2luYXRpb247CiAgICAgICAgICAgICAgICBlICYmIChlID0gbyhlKSwgZS5mb3JFYWNoKChlID0+IGUuY2xhc3NMaXN0LnJlbW92ZSh0LnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKSkpKSwgaCgpLCBtKCksIHUoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBnLAogICAgICAgICAgICByZW5kZXI6IG0sCiAgICAgICAgICAgIHVwZGF0ZTogdSwKICAgICAgICAgICAgaW5pdDogaCwKICAgICAgICAgICAgZGVzdHJveTogZgogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBpLAogICAgICAgICAgICBlbWl0OiByCiAgICAgICAgfSA9IGU7CiAgICAgICAgY29uc3QgbCA9IGEoKTsKICAgICAgICBsZXQgbywgZCwgYywgcCwgdSA9ICExLAogICAgICAgICAgICBtID0gbnVsbCwKICAgICAgICAgICAgaCA9IG51bGw7CgogICAgICAgIGZ1bmN0aW9uIGYoKSB7CiAgICAgICAgICAgIGlmICghdC5wYXJhbXMuc2Nyb2xsYmFyLmVsIHx8ICF0LnNjcm9sbGJhci5lbCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IGUsCiAgICAgICAgICAgICAgICBydGxUcmFuc2xhdGU6IHMKICAgICAgICAgICAgfSA9IHQsIHsKICAgICAgICAgICAgICAgIGRyYWdFbDogYSwKICAgICAgICAgICAgICAgIGVsOiBpCiAgICAgICAgICAgIH0gPSBlLCByID0gdC5wYXJhbXMuc2Nyb2xsYmFyLCBuID0gdC5wYXJhbXMubG9vcCA/IHQucHJvZ3Jlc3NMb29wIDogdC5wcm9ncmVzczsKICAgICAgICAgICAgbGV0IGwgPSBkLAogICAgICAgICAgICAgICAgbyA9IChjIC0gZCkgKiBuOwogICAgICAgICAgICBzID8gKG8gPSAtbywgbyA+IDAgPyAobCA9IGQgLSBvLCBvID0gMCkgOiAtbyArIGQgPiBjICYmIChsID0gYyArIG8pKSA6IG8gPCAwID8gKGwgPSBkICsgbywgbyA9IDApIDogbyArIGQgPiBjICYmIChsID0gYyAtIG8pLCB0LmlzSG9yaXpvbnRhbCgpID8gKGEuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7b31weCwgMCwgMClgLCBhLnN0eWxlLndpZHRoID0gYCR7bH1weGApIDogKGEuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDBweCwgJHtvfXB4LCAwKWAsIGEuc3R5bGUuaGVpZ2h0ID0gYCR7bH1weGApLCByLmhpZGUgJiYgKGNsZWFyVGltZW91dChtKSwgaS5zdHlsZS5vcGFjaXR5ID0gMSwgbSA9IHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgIGkuc3R5bGUub3BhY2l0eSA9IDAsIGkuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gIjQwMG1zIgogICAgICAgICAgICB9KSwgMWUzKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHcoKSB7CiAgICAgICAgICAgIGlmICghdC5wYXJhbXMuc2Nyb2xsYmFyLmVsIHx8ICF0LnNjcm9sbGJhci5lbCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IGUKICAgICAgICAgICAgfSA9IHQsIHsKICAgICAgICAgICAgICAgIGRyYWdFbDogcywKICAgICAgICAgICAgICAgIGVsOiBhCiAgICAgICAgICAgIH0gPSBlOwogICAgICAgICAgICBzLnN0eWxlLndpZHRoID0gIiIsIHMuc3R5bGUuaGVpZ2h0ID0gIiIsIGMgPSB0LmlzSG9yaXpvbnRhbCgpID8gYS5vZmZzZXRXaWR0aCA6IGEub2Zmc2V0SGVpZ2h0LCBwID0gdC5zaXplIC8gKHQudmlydHVhbFNpemUgKyB0LnBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgLSAodC5wYXJhbXMuY2VudGVyZWRTbGlkZXMgPyB0LnNuYXBHcmlkWzBdIDogMCkpLCBkID0gImF1dG8iID09PSB0LnBhcmFtcy5zY3JvbGxiYXIuZHJhZ1NpemUgPyBjICogcCA6IHBhcnNlSW50KHQucGFyYW1zLnNjcm9sbGJhci5kcmFnU2l6ZSwgMTApLCB0LmlzSG9yaXpvbnRhbCgpID8gcy5zdHlsZS53aWR0aCA9IGAke2R9cHhgIDogcy5zdHlsZS5oZWlnaHQgPSBgJHtkfXB4YCwgYS5zdHlsZS5kaXNwbGF5ID0gcCA+PSAxID8gIm5vbmUiIDogIiIsIHQucGFyYW1zLnNjcm9sbGJhci5oaWRlICYmIChhLnN0eWxlLm9wYWNpdHkgPSAwKSwgdC5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiB0LmVuYWJsZWQgJiYgZS5lbC5jbGFzc0xpc3RbdC5pc0xvY2tlZCA/ICJhZGQiIDogInJlbW92ZSJdKHQucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBiKGUpIHsKICAgICAgICAgICAgcmV0dXJuIHQuaXNIb3Jpem9udGFsKCkgPyBlLmNsaWVudFggOiBlLmNsaWVudFkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHkoZSkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IHMsCiAgICAgICAgICAgICAgICBydGxUcmFuc2xhdGU6IGEKICAgICAgICAgICAgfSA9IHQsIHsKICAgICAgICAgICAgICAgIGVsOiBpCiAgICAgICAgICAgIH0gPSBzOwogICAgICAgICAgICBsZXQgcjsKICAgICAgICAgICAgciA9IChiKGUpIC0gdihpKVt0LmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCJdIC0gKG51bGwgIT09IG8gPyBvIDogZCAvIDIpKSAvIChjIC0gZCksIHIgPSBNYXRoLm1heChNYXRoLm1pbihyLCAxKSwgMCksIGEgJiYgKHIgPSAxIC0gcik7CiAgICAgICAgICAgIGNvbnN0IG4gPSB0Lm1pblRyYW5zbGF0ZSgpICsgKHQubWF4VHJhbnNsYXRlKCkgLSB0Lm1pblRyYW5zbGF0ZSgpKSAqIHI7CiAgICAgICAgICAgIHQudXBkYXRlUHJvZ3Jlc3MobiksIHQuc2V0VHJhbnNsYXRlKG4pLCB0LnVwZGF0ZUFjdGl2ZUluZGV4KCksIHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBFKGUpIHsKICAgICAgICAgICAgY29uc3QgcyA9IHQucGFyYW1zLnNjcm9sbGJhciwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IGEsCiAgICAgICAgICAgICAgICAgICAgd3JhcHBlckVsOiBpCiAgICAgICAgICAgICAgICB9ID0gdCwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlbDogbiwKICAgICAgICAgICAgICAgICAgICBkcmFnRWw6IGwKICAgICAgICAgICAgICAgIH0gPSBhOwogICAgICAgICAgICB1ID0gITAsIG8gPSBlLnRhcmdldCA9PT0gbCA/IGIoZSkgLSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0LmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCJdIDogbnVsbCwgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBpLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIxMDBtcyIsIGwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gIjEwMG1zIiwgeShlKSwgY2xlYXJUaW1lb3V0KGgpLCBuLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIwbXMiLCBzLmhpZGUgJiYgKG4uc3R5bGUub3BhY2l0eSA9IDEpLCB0LnBhcmFtcy5jc3NNb2RlICYmICh0LndyYXBwZXJFbC5zdHlsZVsic2Nyb2xsLXNuYXAtdHlwZSJdID0gIm5vbmUiKSwgcigic2Nyb2xsYmFyRHJhZ1N0YXJ0IiwgZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHgoZSkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IHMsCiAgICAgICAgICAgICAgICB3cmFwcGVyRWw6IGEKICAgICAgICAgICAgfSA9IHQsIHsKICAgICAgICAgICAgICAgIGVsOiBpLAogICAgICAgICAgICAgICAgZHJhZ0VsOiBuCiAgICAgICAgICAgIH0gPSBzOwogICAgICAgICAgICB1ICYmIChlLnByZXZlbnREZWZhdWx0ID8gZS5wcmV2ZW50RGVmYXVsdCgpIDogZS5yZXR1cm5WYWx1ZSA9ICExLCB5KGUpLCBhLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIwbXMiLCBpLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIwbXMiLCBuLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIwbXMiLCByKCJzY3JvbGxiYXJEcmFnTW92ZSIsIGUpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LnBhcmFtcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYmFyOiBhLAogICAgICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogaQogICAgICAgICAgICAgICAgfSA9IHQsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZWw6IGwKICAgICAgICAgICAgICAgIH0gPSBhOwogICAgICAgICAgICB1ICYmICh1ID0gITEsIHQucGFyYW1zLmNzc01vZGUgJiYgKHQud3JhcHBlckVsLnN0eWxlWyJzY3JvbGwtc25hcC10eXBlIl0gPSAiIiwgaS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiIiksIHMuaGlkZSAmJiAoY2xlYXJUaW1lb3V0KGgpLCBoID0gbigoKCkgPT4gewogICAgICAgICAgICAgICAgbC5zdHlsZS5vcGFjaXR5ID0gMCwgbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiNDAwbXMiCiAgICAgICAgICAgIH0pLCAxZTMpKSwgcigic2Nyb2xsYmFyRHJhZ0VuZCIsIGUpLCBzLnNuYXBPblJlbGVhc2UgJiYgdC5zbGlkZVRvQ2xvc2VzdCgpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gVChlKSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHNjcm9sbGJhcjogcywKICAgICAgICAgICAgICAgIHBhcmFtczogYQogICAgICAgICAgICB9ID0gdCwgaSA9IHMuZWw7CiAgICAgICAgICAgIGlmICghaSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCByID0gaSwKICAgICAgICAgICAgICAgIG4gPSAhIWEucGFzc2l2ZUxpc3RlbmVycyAmJiB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITEsCiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvID0gISFhLnBhc3NpdmVMaXN0ZW5lcnMgJiYgewogICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6ICEwLAogICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6ICExCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoIXIpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgZCA9ICJvbiIgPT09IGUgPyAiYWRkRXZlbnRMaXN0ZW5lciIgOiAicmVtb3ZlRXZlbnRMaXN0ZW5lciI7CiAgICAgICAgICAgIHJbZF0oInBvaW50ZXJkb3duIiwgRSwgbiksIGxbZF0oInBvaW50ZXJtb3ZlIiwgeCwgbiksIGxbZF0oInBvaW50ZXJ1cCIsIFMsIG8pCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNKCkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICBzY3JvbGxiYXI6IGUsCiAgICAgICAgICAgICAgICBlbDogcwogICAgICAgICAgICB9ID0gdDsKICAgICAgICAgICAgdC5wYXJhbXMuc2Nyb2xsYmFyID0gSih0LCB0Lm9yaWdpbmFsUGFyYW1zLnNjcm9sbGJhciwgdC5wYXJhbXMuc2Nyb2xsYmFyLCB7CiAgICAgICAgICAgICAgICBlbDogInN3aXBlci1zY3JvbGxiYXIiCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjb25zdCBhID0gdC5wYXJhbXMuc2Nyb2xsYmFyOwogICAgICAgICAgICBpZiAoIWEuZWwpIHJldHVybjsKICAgICAgICAgICAgbGV0IGksIHI7CiAgICAgICAgICAgICJzdHJpbmciID09IHR5cGVvZiBhLmVsICYmIHQuaXNFbGVtZW50ICYmIChpID0gdC5lbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYS5lbCkpLCBpIHx8ICJzdHJpbmciICE9IHR5cGVvZiBhLmVsID8gaSB8fCAoaSA9IGEuZWwpIDogaSA9IGwucXVlcnlTZWxlY3RvckFsbChhLmVsKSwgdC5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgInN0cmluZyIgPT0gdHlwZW9mIGEuZWwgJiYgaS5sZW5ndGggPiAxICYmIDEgPT09IHMucXVlcnlTZWxlY3RvckFsbChhLmVsKS5sZW5ndGggJiYgKGkgPSBzLnF1ZXJ5U2VsZWN0b3IoYS5lbCkpLCBpLmxlbmd0aCA+IDAgJiYgKGkgPSBpWzBdKSwgaS5jbGFzc0xpc3QuYWRkKHQuaXNIb3Jpem9udGFsKCkgPyBhLmhvcml6b250YWxDbGFzcyA6IGEudmVydGljYWxDbGFzcyksIGkgJiYgKHIgPSBpLnF1ZXJ5U2VsZWN0b3IoYC4ke3QucGFyYW1zLnNjcm9sbGJhci5kcmFnQ2xhc3N9YCksIHIgfHwgKHIgPSBnKCJkaXYiLCB0LnBhcmFtcy5zY3JvbGxiYXIuZHJhZ0NsYXNzKSwgaS5hcHBlbmQocikpKSwgT2JqZWN0LmFzc2lnbihlLCB7CiAgICAgICAgICAgICAgICBlbDogaSwKICAgICAgICAgICAgICAgIGRyYWdFbDogcgogICAgICAgICAgICB9KSwgYS5kcmFnZ2FibGUgJiYgdC5wYXJhbXMuc2Nyb2xsYmFyLmVsICYmIHQuc2Nyb2xsYmFyLmVsICYmIFQoIm9uIiksIGkgJiYgaS5jbGFzc0xpc3RbdC5lbmFibGVkID8gInJlbW92ZSIgOiAiYWRkIl0odC5wYXJhbXMuc2Nyb2xsYmFyLmxvY2tDbGFzcykKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEMoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5zY3JvbGxiYXIsCiAgICAgICAgICAgICAgICBzID0gdC5zY3JvbGxiYXIuZWw7CiAgICAgICAgICAgIHMgJiYgcy5jbGFzc0xpc3QucmVtb3ZlKHQuaXNIb3Jpem9udGFsKCkgPyBlLmhvcml6b250YWxDbGFzcyA6IGUudmVydGljYWxDbGFzcyksIHQucGFyYW1zLnNjcm9sbGJhci5lbCAmJiB0LnNjcm9sbGJhci5lbCAmJiBUKCJvZmYiKQogICAgICAgIH0KICAgICAgICBzKHsKICAgICAgICAgICAgc2Nyb2xsYmFyOiB7CiAgICAgICAgICAgICAgICBlbDogbnVsbCwKICAgICAgICAgICAgICAgIGRyYWdTaXplOiAiYXV0byIsCiAgICAgICAgICAgICAgICBoaWRlOiAhMSwKICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogITEsCiAgICAgICAgICAgICAgICBzbmFwT25SZWxlYXNlOiAhMCwKICAgICAgICAgICAgICAgIGxvY2tDbGFzczogInN3aXBlci1zY3JvbGxiYXItbG9jayIsCiAgICAgICAgICAgICAgICBkcmFnQ2xhc3M6ICJzd2lwZXItc2Nyb2xsYmFyLWRyYWciLAogICAgICAgICAgICAgICAgc2Nyb2xsYmFyRGlzYWJsZWRDbGFzczogInN3aXBlci1zY3JvbGxiYXItZGlzYWJsZWQiLAogICAgICAgICAgICAgICAgaG9yaXpvbnRhbENsYXNzOiAic3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFsIiwKICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2xhc3M6ICJzd2lwZXItc2Nyb2xsYmFyLXZlcnRpY2FsIgogICAgICAgICAgICB9CiAgICAgICAgfSksIHQuc2Nyb2xsYmFyID0gewogICAgICAgICAgICBlbDogbnVsbCwKICAgICAgICAgICAgZHJhZ0VsOiBudWxsCiAgICAgICAgfSwgaSgiaW5pdCIsICgoKSA9PiB7CiAgICAgICAgICAgICExID09PSB0LnBhcmFtcy5zY3JvbGxiYXIuZW5hYmxlZCA/IFAoKSA6IChNKCksIHcoKSwgZigpKQogICAgICAgIH0pKSwgaSgidXBkYXRlIHJlc2l6ZSBvYnNlcnZlclVwZGF0ZSBsb2NrIHVubG9jayIsICgoKSA9PiB7CiAgICAgICAgICAgIHcoKQogICAgICAgIH0pKSwgaSgic2V0VHJhbnNsYXRlIiwgKCgpID0+IHsKICAgICAgICAgICAgZigpCiAgICAgICAgfSkpLCBpKCJzZXRUcmFuc2l0aW9uIiwgKChlLCBzKSA9PiB7CiAgICAgICAgICAgICEgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdC5wYXJhbXMuc2Nyb2xsYmFyLmVsICYmIHQuc2Nyb2xsYmFyLmVsICYmICh0LnNjcm9sbGJhci5kcmFnRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZX1tc2ApCiAgICAgICAgICAgIH0ocykKICAgICAgICB9KSksIGkoImVuYWJsZSBkaXNhYmxlIiwgKCgpID0+IHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgZWw6IGUKICAgICAgICAgICAgfSA9IHQuc2Nyb2xsYmFyOwogICAgICAgICAgICBlICYmIGUuY2xhc3NMaXN0W3QuZW5hYmxlZCA/ICJyZW1vdmUiIDogImFkZCJdKHQucGFyYW1zLnNjcm9sbGJhci5sb2NrQ2xhc3MpCiAgICAgICAgfSkpLCBpKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgQygpCiAgICAgICAgfSkpOwogICAgICAgIGNvbnN0IFAgPSAoKSA9PiB7CiAgICAgICAgICAgIHQuZWwuY2xhc3NMaXN0LmFkZCh0LnBhcmFtcy5zY3JvbGxiYXIuc2Nyb2xsYmFyRGlzYWJsZWRDbGFzcyksIHQuc2Nyb2xsYmFyLmVsICYmIHQuc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5hZGQodC5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpLCBDKCkKICAgICAgICB9OwogICAgICAgIE9iamVjdC5hc3NpZ24odC5zY3JvbGxiYXIsIHsKICAgICAgICAgICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICB0LmVsLmNsYXNzTGlzdC5yZW1vdmUodC5wYXJhbXMuc2Nyb2xsYmFyLnNjcm9sbGJhckRpc2FibGVkQ2xhc3MpLCB0LnNjcm9sbGJhci5lbCAmJiB0LnNjcm9sbGJhci5lbC5jbGFzc0xpc3QucmVtb3ZlKHQucGFyYW1zLnNjcm9sbGJhci5zY3JvbGxiYXJEaXNhYmxlZENsYXNzKSwgTSgpLCB3KCksIGYoKQogICAgICAgICAgICB9LAogICAgICAgICAgICBkaXNhYmxlOiBQLAogICAgICAgICAgICB1cGRhdGVTaXplOiB3LAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6IGYsCiAgICAgICAgICAgIGluaXQ6IE0sCiAgICAgICAgICAgIGRlc3Ryb3k6IEMKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICBwYXJhbGxheDogewogICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGkgPSAoZSwgcykgPT4gewogICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgIHJ0bDogYQogICAgICAgICAgICAgICAgfSA9IHQsIGkgPSBhID8gLTEgOiAxLCByID0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXBhcmFsbGF4IikgfHwgIjAiOwogICAgICAgICAgICAgICAgbGV0IG4gPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItcGFyYWxsYXgteCIpLAogICAgICAgICAgICAgICAgICAgIGwgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItcGFyYWxsYXgteSIpOwogICAgICAgICAgICAgICAgY29uc3QgbyA9IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZSIpLAogICAgICAgICAgICAgICAgICAgIGQgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eSIpLAogICAgICAgICAgICAgICAgICAgIGMgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItcGFyYWxsYXgtcm90YXRlIik7CiAgICAgICAgICAgICAgICBpZiAobiB8fCBsID8gKG4gPSBuIHx8ICIwIiwgbCA9IGwgfHwgIjAiKSA6IHQuaXNIb3Jpem9udGFsKCkgPyAobiA9IHIsIGwgPSAiMCIpIDogKGwgPSByLCBuID0gIjAiKSwgbiA9IG4uaW5kZXhPZigiJSIpID49IDAgPyBwYXJzZUludChuLCAxMCkgKiBzICogaSArICIlIiA6IG4gKiBzICogaSArICJweCIsIGwgPSBsLmluZGV4T2YoIiUiKSA+PSAwID8gcGFyc2VJbnQobCwgMTApICogcyArICIlIiA6IGwgKiBzICsgInB4IiwgbnVsbCAhPSBkKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGQgLSAoZCAtIDEpICogKDEgLSBNYXRoLmFicyhzKSk7CiAgICAgICAgICAgICAgICAgICAgZS5zdHlsZS5vcGFjaXR5ID0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGV0IHAgPSBgdHJhbnNsYXRlM2QoJHtufSwgJHtsfSwgMHB4KWA7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBvKSB7CiAgICAgICAgICAgICAgICAgICAgcCArPSBgIHNjYWxlKCR7by0oby0xKSooMS1NYXRoLmFicyhzKSl9KWAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjICYmIG51bGwgIT0gYykgewogICAgICAgICAgICAgICAgICAgIHAgKz0gYCByb3RhdGUoJHtjKnMqLTF9ZGVnKWAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGUuc3R5bGUudHJhbnNmb3JtID0gcAogICAgICAgICAgICB9LAogICAgICAgICAgICByID0gKCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgIGVsOiBlLAogICAgICAgICAgICAgICAgICAgIHNsaWRlczogcywKICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogYSwKICAgICAgICAgICAgICAgICAgICBzbmFwR3JpZDogcgogICAgICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgICAgICBmKGUsICJbZGF0YS1zd2lwZXItcGFyYWxsYXhdLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgteF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC15XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LW9wYWNpdHldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtc2NhbGVdIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgaShlLCBhKQogICAgICAgICAgICAgICAgfSkpLCBzLmZvckVhY2goKChlLCBzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBlLnByb2dyZXNzOwogICAgICAgICAgICAgICAgICAgIHQucGFyYW1zLnNsaWRlc1Blckdyb3VwID4gMSAmJiAiYXV0byIgIT09IHQucGFyYW1zLnNsaWRlc1BlclZpZXcgJiYgKG4gKz0gTWF0aC5jZWlsKHMgLyAyKSAtIGEgKiAoci5sZW5ndGggLSAxKSksIG4gPSBNYXRoLm1pbihNYXRoLm1heChuLCAtMSksIDEpLCBlLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXN3aXBlci1wYXJhbGxheF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC14XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1yb3RhdGVdIikuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkoZSwgbikKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9OwogICAgICAgIGEoImJlZm9yZUluaXQiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5wYXJhbGxheC5lbmFibGVkICYmICh0LnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzID0gITAsIHQub3JpZ2luYWxQYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyA9ICEwKQogICAgICAgIH0pKSwgYSgiaW5pdCIsICgoKSA9PiB7CiAgICAgICAgICAgIHQucGFyYW1zLnBhcmFsbGF4LmVuYWJsZWQgJiYgcigpCiAgICAgICAgfSkpLCBhKCJzZXRUcmFuc2xhdGUiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5wYXJhbGxheC5lbmFibGVkICYmIHIoKQogICAgICAgIH0pKSwgYSgic2V0VHJhbnNpdGlvbiIsICgoZSwgcykgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5wYXJhbGxheC5lbmFibGVkICYmIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IHQucGFyYW1zLnNwZWVkKTsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBlbDogcwogICAgICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgICAgICBzLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXN3aXBlci1wYXJhbGxheF0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC14XSwgW2RhdGEtc3dpcGVyLXBhcmFsbGF4LXldLCBbZGF0YS1zd2lwZXItcGFyYWxsYXgtb3BhY2l0eV0sIFtkYXRhLXN3aXBlci1wYXJhbGxheC1zY2FsZV0iKS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IHBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1wYXJhbGxheC1kdXJhdGlvbiIpLCAxMCkgfHwgZTsKICAgICAgICAgICAgICAgICAgICAwID09PSBlICYmIChzID0gMCksIHQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7c31tc2AKICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9KHMpCiAgICAgICAgfSkpCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBlbWl0OiBpCiAgICAgICAgfSA9IGU7CiAgICAgICAgY29uc3QgbiA9IHIoKTsKICAgICAgICBzKHsKICAgICAgICAgICAgem9vbTogewogICAgICAgICAgICAgICAgZW5hYmxlZDogITEsCiAgICAgICAgICAgICAgICBtYXhSYXRpbzogMywKICAgICAgICAgICAgICAgIG1pblJhdGlvOiAxLAogICAgICAgICAgICAgICAgdG9nZ2xlOiAhMCwKICAgICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzOiAic3dpcGVyLXpvb20tY29udGFpbmVyIiwKICAgICAgICAgICAgICAgIHpvb21lZFNsaWRlQ2xhc3M6ICJzd2lwZXItc2xpZGUtem9vbWVkIgogICAgICAgICAgICB9CiAgICAgICAgfSksIHQuem9vbSA9IHsKICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICB9OwogICAgICAgIGxldCBsLCBkLCBjID0gMSwKICAgICAgICAgICAgcCA9ICExOwogICAgICAgIGNvbnN0IHUgPSBbXSwKICAgICAgICAgICAgbSA9IHsKICAgICAgICAgICAgICAgIHNsaWRlRWw6IHZvaWQgMCwKICAgICAgICAgICAgICAgIHNsaWRlV2lkdGg6IHZvaWQgMCwKICAgICAgICAgICAgICAgIHNsaWRlSGVpZ2h0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICBpbWFnZUVsOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBpbWFnZVdyYXBFbDogdm9pZCAwLAogICAgICAgICAgICAgICAgbWF4UmF0aW86IDMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaCA9IHsKICAgICAgICAgICAgICAgIGlzVG91Y2hlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgaXNNb3ZlZDogdm9pZCAwLAogICAgICAgICAgICAgICAgY3VycmVudFg6IHZvaWQgMCwKICAgICAgICAgICAgICAgIGN1cnJlbnRZOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtaW5YOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtaW5ZOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtYXhYOiB2b2lkIDAsCiAgICAgICAgICAgICAgICBtYXhZOiB2b2lkIDAsCiAgICAgICAgICAgICAgICB3aWR0aDogdm9pZCAwLAogICAgICAgICAgICAgICAgaGVpZ2h0OiB2b2lkIDAsCiAgICAgICAgICAgICAgICBzdGFydFg6IHZvaWQgMCwKICAgICAgICAgICAgICAgIHN0YXJ0WTogdm9pZCAwLAogICAgICAgICAgICAgICAgdG91Y2hlc1N0YXJ0OiB7fSwKICAgICAgICAgICAgICAgIHRvdWNoZXNDdXJyZW50OiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICBnID0gewogICAgICAgICAgICAgICAgeDogdm9pZCAwLAogICAgICAgICAgICAgICAgeTogdm9pZCAwLAogICAgICAgICAgICAgICAgcHJldlBvc2l0aW9uWDogdm9pZCAwLAogICAgICAgICAgICAgICAgcHJldlBvc2l0aW9uWTogdm9pZCAwLAogICAgICAgICAgICAgICAgcHJldlRpbWU6IHZvaWQgMAogICAgICAgICAgICB9OwogICAgICAgIGxldCB3ID0gMTsKCiAgICAgICAgZnVuY3Rpb24gYigpIHsKICAgICAgICAgICAgaWYgKHUubGVuZ3RoIDwgMikgcmV0dXJuIDE7CiAgICAgICAgICAgIGNvbnN0IGUgPSB1WzBdLnBhZ2VYLAogICAgICAgICAgICAgICAgdCA9IHVbMF0ucGFnZVksCiAgICAgICAgICAgICAgICBzID0gdVsxXS5wYWdlWCwKICAgICAgICAgICAgICAgIGEgPSB1WzFdLnBhZ2VZOwogICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KChzIC0gZSkgKiogMiArIChhIC0gdCkgKiogMikKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEUoZSkgewogICAgICAgICAgICBjb25zdCBzID0gdC5pc0VsZW1lbnQgPyAic3dpcGVyLXNsaWRlIiA6IGAuJHt0LnBhcmFtcy5zbGlkZUNsYXNzfWA7CiAgICAgICAgICAgIHJldHVybiAhIWUudGFyZ2V0Lm1hdGNoZXMocykgfHwgdC5zbGlkZXMuZmlsdGVyKCh0ID0+IHQuY29udGFpbnMoZS50YXJnZXQpKSkubGVuZ3RoID4gMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24geChlKSB7CiAgICAgICAgICAgIGlmICghRShlKSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBzID0gdC5wYXJhbXMuem9vbTsKICAgICAgICAgICAgaWYgKGwgPSAhMSwgZCA9ICExLCB1LnB1c2goZSksICEodS5sZW5ndGggPCAyKSkgewogICAgICAgICAgICAgICAgaWYgKGwgPSAhMCwgbS5zY2FsZVN0YXJ0ID0gYigpLCAhbS5zbGlkZUVsKSB7CiAgICAgICAgICAgICAgICAgICAgbS5zbGlkZUVsID0gZS50YXJnZXQuY2xvc2VzdChgLiR7dC5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApLCBtLnNsaWRlRWwgfHwgKG0uc2xpZGVFbCA9IHQuc2xpZGVzW3QuYWN0aXZlSW5kZXhdKTsKICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IG0uc2xpZGVFbC5xdWVyeVNlbGVjdG9yKGAuJHtzLmNvbnRhaW5lckNsYXNzfWApOwogICAgICAgICAgICAgICAgICAgIGlmIChhICYmIChhID0gYS5xdWVyeVNlbGVjdG9yQWxsKCJwaWN0dXJlLCBpbWcsIHN2ZywgY2FudmFzLCAuc3dpcGVyLXpvb20tdGFyZ2V0IilbMF0pLCBtLmltYWdlRWwgPSBhLCBtLmltYWdlV3JhcEVsID0gYSA/IHkobS5pbWFnZUVsLCBgLiR7cy5jb250YWluZXJDbGFzc31gKVswXSA6IHZvaWQgMCwgIW0uaW1hZ2VXcmFwRWwpIHJldHVybiB2b2lkKG0uaW1hZ2VFbCA9IHZvaWQgMCk7CiAgICAgICAgICAgICAgICAgICAgbS5tYXhSYXRpbyA9IG0uaW1hZ2VXcmFwRWwuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci16b29tIikgfHwgcy5tYXhSYXRpbwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG0uaW1hZ2VFbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IFtlLCB0XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodS5sZW5ndGggPCAyKSByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IG0uaW1hZ2VFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsodVswXS5wYWdlWCArICh1WzFdLnBhZ2VYIC0gdVswXS5wYWdlWCkgLyAyIC0gZS54KSAvIGMsICh1WzBdLnBhZ2VZICsgKHVbMV0ucGFnZVkgLSB1WzBdLnBhZ2VZKSAvIDIgLSBlLnkpIC8gY10KICAgICAgICAgICAgICAgICAgICB9KCk7CiAgICAgICAgICAgICAgICAgICAgbS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IGAke2V9cHggJHt0fXB4YCwgbS5pbWFnZUVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIwbXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwID0gITAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gUyhlKSB7CiAgICAgICAgICAgIGlmICghRShlKSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBzID0gdC5wYXJhbXMuem9vbSwKICAgICAgICAgICAgICAgIGEgPSB0Lnpvb20sCiAgICAgICAgICAgICAgICBpID0gdS5maW5kSW5kZXgoKHQgPT4gdC5wb2ludGVySWQgPT09IGUucG9pbnRlcklkKSk7CiAgICAgICAgICAgIGkgPj0gMCAmJiAodVtpXSA9IGUpLCB1Lmxlbmd0aCA8IDIgfHwgKGQgPSAhMCwgbS5zY2FsZU1vdmUgPSBiKCksIG0uaW1hZ2VFbCAmJiAoYS5zY2FsZSA9IG0uc2NhbGVNb3ZlIC8gbS5zY2FsZVN0YXJ0ICogYywgYS5zY2FsZSA+IG0ubWF4UmF0aW8gJiYgKGEuc2NhbGUgPSBtLm1heFJhdGlvIC0gMSArIChhLnNjYWxlIC0gbS5tYXhSYXRpbyArIDEpICoqIC41KSwgYS5zY2FsZSA8IHMubWluUmF0aW8gJiYgKGEuc2NhbGUgPSBzLm1pblJhdGlvICsgMSAtIChzLm1pblJhdGlvIC0gYS5zY2FsZSArIDEpICoqIC41KSwgbS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoJHthLnNjYWxlfSlgKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIFQoZSkgewogICAgICAgICAgICBpZiAoIUUoZSkpIHJldHVybjsKICAgICAgICAgICAgY29uc3QgcyA9IHQucGFyYW1zLnpvb20sCiAgICAgICAgICAgICAgICBhID0gdC56b29tLAogICAgICAgICAgICAgICAgaSA9IHUuZmluZEluZGV4KCh0ID0+IHQucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZCkpOwogICAgICAgICAgICBpID49IDAgJiYgdS5zcGxpY2UoaSwgMSksIGwgJiYgZCAmJiAobCA9ICExLCBkID0gITEsIG0uaW1hZ2VFbCAmJiAoYS5zY2FsZSA9IE1hdGgubWF4KE1hdGgubWluKGEuc2NhbGUsIG0ubWF4UmF0aW8pLCBzLm1pblJhdGlvKSwgbS5pbWFnZUVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke3QucGFyYW1zLnNwZWVkfW1zYCwgbS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoJHthLnNjYWxlfSlgLCBjID0gYS5zY2FsZSwgcCA9ICExLCAxID09PSBhLnNjYWxlICYmIChtLnNsaWRlRWwgPSB2b2lkIDApKSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE0oZSkgewogICAgICAgICAgICBpZiAoIUUoZSkgfHwgISBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IGAuJHt0LnBhcmFtcy56b29tLmNvbnRhaW5lckNsYXNzfWA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhZS50YXJnZXQubWF0Y2hlcyhzKSB8fCBbLi4udC5lbC5xdWVyeVNlbGVjdG9yQWxsKHMpXS5maWx0ZXIoKHQgPT4gdC5jb250YWlucyhlLnRhcmdldCkpKS5sZW5ndGggPiAwCiAgICAgICAgICAgICAgICB9KGUpKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHMgPSB0Lnpvb207CiAgICAgICAgICAgIGlmICghbS5pbWFnZUVsKSByZXR1cm47CiAgICAgICAgICAgIGlmICh0LmFsbG93Q2xpY2sgPSAhMSwgIWguaXNUb3VjaGVkIHx8ICFtLnNsaWRlRWwpIHJldHVybjsKICAgICAgICAgICAgaC5pc01vdmVkIHx8IChoLndpZHRoID0gbS5pbWFnZUVsLm9mZnNldFdpZHRoLCBoLmhlaWdodCA9IG0uaW1hZ2VFbC5vZmZzZXRIZWlnaHQsIGguc3RhcnRYID0gbyhtLmltYWdlV3JhcEVsLCAieCIpIHx8IDAsIGguc3RhcnRZID0gbyhtLmltYWdlV3JhcEVsLCAieSIpIHx8IDAsIG0uc2xpZGVXaWR0aCA9IG0uc2xpZGVFbC5vZmZzZXRXaWR0aCwgbS5zbGlkZUhlaWdodCA9IG0uc2xpZGVFbC5vZmZzZXRIZWlnaHQsIG0uaW1hZ2VXcmFwRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gIjBtcyIpOwogICAgICAgICAgICBjb25zdCBhID0gaC53aWR0aCAqIHMuc2NhbGUsCiAgICAgICAgICAgICAgICBpID0gaC5oZWlnaHQgKiBzLnNjYWxlOwogICAgICAgICAgICBpZiAoIShhIDwgbS5zbGlkZVdpZHRoICYmIGkgPCBtLnNsaWRlSGVpZ2h0KSkgewogICAgICAgICAgICAgICAgaWYgKGgubWluWCA9IE1hdGgubWluKG0uc2xpZGVXaWR0aCAvIDIgLSBhIC8gMiwgMCksIGgubWF4WCA9IC1oLm1pblgsIGgubWluWSA9IE1hdGgubWluKG0uc2xpZGVIZWlnaHQgLyAyIC0gaSAvIDIsIDApLCBoLm1heFkgPSAtaC5taW5ZLCBoLnRvdWNoZXNDdXJyZW50LnggPSB1Lmxlbmd0aCA+IDAgPyB1WzBdLnBhZ2VYIDogZS5wYWdlWCwgaC50b3VjaGVzQ3VycmVudC55ID0gdS5sZW5ndGggPiAwID8gdVswXS5wYWdlWSA6IGUucGFnZVksICFoLmlzTW92ZWQgJiYgIXApIHsKICAgICAgICAgICAgICAgICAgICBpZiAodC5pc0hvcml6b250YWwoKSAmJiAoTWF0aC5mbG9vcihoLm1pblgpID09PSBNYXRoLmZsb29yKGguc3RhcnRYKSAmJiBoLnRvdWNoZXNDdXJyZW50LnggPCBoLnRvdWNoZXNTdGFydC54IHx8IE1hdGguZmxvb3IoaC5tYXhYKSA9PT0gTWF0aC5mbG9vcihoLnN0YXJ0WCkgJiYgaC50b3VjaGVzQ3VycmVudC54ID4gaC50b3VjaGVzU3RhcnQueCkpIHJldHVybiB2b2lkKGguaXNUb3VjaGVkID0gITEpOwogICAgICAgICAgICAgICAgICAgIGlmICghdC5pc0hvcml6b250YWwoKSAmJiAoTWF0aC5mbG9vcihoLm1pblkpID09PSBNYXRoLmZsb29yKGguc3RhcnRZKSAmJiBoLnRvdWNoZXNDdXJyZW50LnkgPCBoLnRvdWNoZXNTdGFydC55IHx8IE1hdGguZmxvb3IoaC5tYXhZKSA9PT0gTWF0aC5mbG9vcihoLnN0YXJ0WSkgJiYgaC50b3VjaGVzQ3VycmVudC55ID4gaC50b3VjaGVzU3RhcnQueSkpIHJldHVybiB2b2lkKGguaXNUb3VjaGVkID0gITEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBoLmlzTW92ZWQgPSAhMCwgaC5jdXJyZW50WCA9IGgudG91Y2hlc0N1cnJlbnQueCAtIGgudG91Y2hlc1N0YXJ0LnggKyBoLnN0YXJ0WCwgaC5jdXJyZW50WSA9IGgudG91Y2hlc0N1cnJlbnQueSAtIGgudG91Y2hlc1N0YXJ0LnkgKyBoLnN0YXJ0WSwgaC5jdXJyZW50WCA8IGgubWluWCAmJiAoaC5jdXJyZW50WCA9IGgubWluWCArIDEgLSAoaC5taW5YIC0gaC5jdXJyZW50WCArIDEpICoqIC44KSwgaC5jdXJyZW50WCA+IGgubWF4WCAmJiAoaC5jdXJyZW50WCA9IGgubWF4WCAtIDEgKyAoaC5jdXJyZW50WCAtIGgubWF4WCArIDEpICoqIC44KSwgaC5jdXJyZW50WSA8IGgubWluWSAmJiAoaC5jdXJyZW50WSA9IGgubWluWSArIDEgLSAoaC5taW5ZIC0gaC5jdXJyZW50WSArIDEpICoqIC44KSwgaC5jdXJyZW50WSA+IGgubWF4WSAmJiAoaC5jdXJyZW50WSA9IGgubWF4WSAtIDEgKyAoaC5jdXJyZW50WSAtIGgubWF4WSArIDEpICoqIC44KSwgZy5wcmV2UG9zaXRpb25YIHx8IChnLnByZXZQb3NpdGlvblggPSBoLnRvdWNoZXNDdXJyZW50LngpLCBnLnByZXZQb3NpdGlvblkgfHwgKGcucHJldlBvc2l0aW9uWSA9IGgudG91Y2hlc0N1cnJlbnQueSksIGcucHJldlRpbWUgfHwgKGcucHJldlRpbWUgPSBEYXRlLm5vdygpKSwgZy54ID0gKGgudG91Y2hlc0N1cnJlbnQueCAtIGcucHJldlBvc2l0aW9uWCkgLyAoRGF0ZS5ub3coKSAtIGcucHJldlRpbWUpIC8gMiwgZy55ID0gKGgudG91Y2hlc0N1cnJlbnQueSAtIGcucHJldlBvc2l0aW9uWSkgLyAoRGF0ZS5ub3coKSAtIGcucHJldlRpbWUpIC8gMiwgTWF0aC5hYnMoaC50b3VjaGVzQ3VycmVudC54IC0gZy5wcmV2UG9zaXRpb25YKSA8IDIgJiYgKGcueCA9IDApLCBNYXRoLmFicyhoLnRvdWNoZXNDdXJyZW50LnkgLSBnLnByZXZQb3NpdGlvblkpIDwgMiAmJiAoZy55ID0gMCksIGcucHJldlBvc2l0aW9uWCA9IGgudG91Y2hlc0N1cnJlbnQueCwgZy5wcmV2UG9zaXRpb25ZID0gaC50b3VjaGVzQ3VycmVudC55LCBnLnByZXZUaW1lID0gRGF0ZS5ub3coKSwgbS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtoLmN1cnJlbnRYfXB4LCAke2guY3VycmVudFl9cHgsMClgCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEMoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0Lnpvb207CiAgICAgICAgICAgIG0uc2xpZGVFbCAmJiB0LnByZXZpb3VzSW5kZXggIT09IHQuYWN0aXZlSW5kZXggJiYgKG0uaW1hZ2VFbCAmJiAobS5pbWFnZUVsLnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSkiKSwgbS5pbWFnZVdyYXBFbCAmJiAobS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlM2QoMCwwLDApIiksIGUuc2NhbGUgPSAxLCBjID0gMSwgbS5zbGlkZUVsID0gdm9pZCAwLCBtLmltYWdlRWwgPSB2b2lkIDAsIG0uaW1hZ2VXcmFwRWwgPSB2b2lkIDApCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBQKGUpIHsKICAgICAgICAgICAgY29uc3QgcyA9IHQuem9vbSwKICAgICAgICAgICAgICAgIGEgPSB0LnBhcmFtcy56b29tOwogICAgICAgICAgICBpZiAoIW0uc2xpZGVFbCkgewogICAgICAgICAgICAgICAgZSAmJiBlLnRhcmdldCAmJiAobS5zbGlkZUVsID0gZS50YXJnZXQuY2xvc2VzdChgLiR7dC5wYXJhbXMuc2xpZGVDbGFzc30sIHN3aXBlci1zbGlkZWApKSwgbS5zbGlkZUVsIHx8ICh0LnBhcmFtcy52aXJ0dWFsICYmIHQucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiB0LnZpcnR1YWwgPyBtLnNsaWRlRWwgPSBmKHQuc2xpZGVzRWwsIGAuJHt0LnBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzfWApWzBdIDogbS5zbGlkZUVsID0gdC5zbGlkZXNbdC5hY3RpdmVJbmRleF0pOwogICAgICAgICAgICAgICAgbGV0IHMgPSBtLnNsaWRlRWwucXVlcnlTZWxlY3RvcihgLiR7YS5jb250YWluZXJDbGFzc31gKTsKICAgICAgICAgICAgICAgIHMgJiYgKHMgPSBzLnF1ZXJ5U2VsZWN0b3JBbGwoInBpY3R1cmUsIGltZywgc3ZnLCBjYW52YXMsIC5zd2lwZXItem9vbS10YXJnZXQiKVswXSksIG0uaW1hZ2VFbCA9IHMsIG0uaW1hZ2VXcmFwRWwgPSBzID8geShtLmltYWdlRWwsIGAuJHthLmNvbnRhaW5lckNsYXNzfWApWzBdIDogdm9pZCAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFtLmltYWdlRWwgfHwgIW0uaW1hZ2VXcmFwRWwpIHJldHVybjsKICAgICAgICAgICAgbGV0IGksIHIsIGwsIG8sIGQsIHAsIHUsIGcsIHcsIGIsIEUsIHgsIFMsIFQsIE0sIEMsIFAsIEw7CiAgICAgICAgICAgIHQucGFyYW1zLmNzc01vZGUgJiYgKHQud3JhcHBlckVsLnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiIsIHQud3JhcHBlckVsLnN0eWxlLnRvdWNoQWN0aW9uID0gIm5vbmUiKSwgbS5zbGlkZUVsLmNsYXNzTGlzdC5hZGQoYCR7YS56b29tZWRTbGlkZUNsYXNzfWApLCB2b2lkIDAgPT09IGgudG91Y2hlc1N0YXJ0LnggJiYgZSA/IChpID0gZS5wYWdlWCwgciA9IGUucGFnZVkpIDogKGkgPSBoLnRvdWNoZXNTdGFydC54LCByID0gaC50b3VjaGVzU3RhcnQueSk7CiAgICAgICAgICAgIGNvbnN0IEEgPSAibnVtYmVyIiA9PSB0eXBlb2YgZSA/IGUgOiBudWxsOwogICAgICAgICAgICAxID09PSBjICYmIEEgJiYgKGkgPSB2b2lkIDAsIHIgPSB2b2lkIDApLCBzLnNjYWxlID0gQSB8fCBtLmltYWdlV3JhcEVsLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItem9vbSIpIHx8IGEubWF4UmF0aW8sIGMgPSBBIHx8IG0uaW1hZ2VXcmFwRWwuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci16b29tIikgfHwgYS5tYXhSYXRpbywgIWUgfHwgMSA9PT0gYyAmJiBBID8gKHUgPSAwLCBnID0gMCkgOiAoUCA9IG0uc2xpZGVFbC5vZmZzZXRXaWR0aCwgTCA9IG0uc2xpZGVFbC5vZmZzZXRIZWlnaHQsIGwgPSB2KG0uc2xpZGVFbCkubGVmdCArIG4uc2Nyb2xsWCwgbyA9IHYobS5zbGlkZUVsKS50b3AgKyBuLnNjcm9sbFksIGQgPSBsICsgUCAvIDIgLSBpLCBwID0gbyArIEwgLyAyIC0gciwgdyA9IG0uaW1hZ2VFbC5vZmZzZXRXaWR0aCwgYiA9IG0uaW1hZ2VFbC5vZmZzZXRIZWlnaHQsIEUgPSB3ICogcy5zY2FsZSwgeCA9IGIgKiBzLnNjYWxlLCBTID0gTWF0aC5taW4oUCAvIDIgLSBFIC8gMiwgMCksIFQgPSBNYXRoLm1pbihMIC8gMiAtIHggLyAyLCAwKSwgTSA9IC1TLCBDID0gLVQsIHUgPSBkICogcy5zY2FsZSwgZyA9IHAgKiBzLnNjYWxlLCB1IDwgUyAmJiAodSA9IFMpLCB1ID4gTSAmJiAodSA9IE0pLCBnIDwgVCAmJiAoZyA9IFQpLCBnID4gQyAmJiAoZyA9IEMpKSwgbS5pbWFnZVdyYXBFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMzAwbXMiLCBtLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3V9cHgsICR7Z31weCwwKWAsIG0uaW1hZ2VFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMzAwbXMiLCBtLmltYWdlRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgke3Muc2NhbGV9KWAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEwoKSB7CiAgICAgICAgICAgIGNvbnN0IGUgPSB0Lnpvb20sCiAgICAgICAgICAgICAgICBzID0gdC5wYXJhbXMuem9vbTsKICAgICAgICAgICAgaWYgKCFtLnNsaWRlRWwpIHsKICAgICAgICAgICAgICAgIHQucGFyYW1zLnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkICYmIHQudmlydHVhbCA/IG0uc2xpZGVFbCA9IGYodC5zbGlkZXNFbCwgYC4ke3QucGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3N9YClbMF0gOiBtLnNsaWRlRWwgPSB0LnNsaWRlc1t0LmFjdGl2ZUluZGV4XTsKICAgICAgICAgICAgICAgIGxldCBlID0gbS5zbGlkZUVsLnF1ZXJ5U2VsZWN0b3IoYC4ke3MuY29udGFpbmVyQ2xhc3N9YCk7CiAgICAgICAgICAgICAgICBlICYmIChlID0gZS5xdWVyeVNlbGVjdG9yQWxsKCJwaWN0dXJlLCBpbWcsIHN2ZywgY2FudmFzLCAuc3dpcGVyLXpvb20tdGFyZ2V0IilbMF0pLCBtLmltYWdlRWwgPSBlLCBtLmltYWdlV3JhcEVsID0gZSA/IHkobS5pbWFnZUVsLCBgLiR7cy5jb250YWluZXJDbGFzc31gKVswXSA6IHZvaWQgMAogICAgICAgICAgICB9CiAgICAgICAgICAgIG0uaW1hZ2VFbCAmJiBtLmltYWdlV3JhcEVsICYmICh0LnBhcmFtcy5jc3NNb2RlICYmICh0LndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdyA9ICIiLCB0LndyYXBwZXJFbC5zdHlsZS50b3VjaEFjdGlvbiA9ICIiKSwgZS5zY2FsZSA9IDEsIGMgPSAxLCBtLmltYWdlV3JhcEVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICIzMDBtcyIsIG0uaW1hZ2VXcmFwRWwuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKDAsMCwwKSIsIG0uaW1hZ2VFbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMzAwbXMiLCBtLmltYWdlRWwuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKSIsIG0uc2xpZGVFbC5jbGFzc0xpc3QucmVtb3ZlKGAke3Muem9vbWVkU2xpZGVDbGFzc31gKSwgbS5zbGlkZUVsID0gdm9pZCAwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gQShlKSB7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0Lnpvb207CiAgICAgICAgICAgIHMuc2NhbGUgJiYgMSAhPT0gcy5zY2FsZSA/IEwoKSA6IFAoZSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHooKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBwYXNzaXZlTGlzdGVuZXI6ICEhdC5wYXJhbXMucGFzc2l2ZUxpc3RlbmVycyAmJiB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAsCiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhY3RpdmVMaXN0ZW5lcldpdGhDYXB0dXJlOiAhdC5wYXJhbXMucGFzc2l2ZUxpc3RlbmVycyB8fCB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITEsCiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gJCgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHQuem9vbTsKICAgICAgICAgICAgaWYgKGUuZW5hYmxlZCkgcmV0dXJuOwogICAgICAgICAgICBlLmVuYWJsZWQgPSAhMDsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgcGFzc2l2ZUxpc3RlbmVyOiBzLAogICAgICAgICAgICAgICAgYWN0aXZlTGlzdGVuZXJXaXRoQ2FwdHVyZTogYQogICAgICAgICAgICB9ID0geigpOwogICAgICAgICAgICB0LndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIHgsIHMpLCB0LndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsIFMsIGEpLCBbInBvaW50ZXJ1cCIsICJwb2ludGVyY2FuY2VsIl0uZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICB0LndyYXBwZXJFbC5hZGRFdmVudExpc3RlbmVyKGUsIFQsIHMpCiAgICAgICAgICAgIH0pKSwgdC53cmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLCBNLCBhKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaygpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHQuem9vbTsKICAgICAgICAgICAgaWYgKCFlLmVuYWJsZWQpIHJldHVybjsKICAgICAgICAgICAgZS5lbmFibGVkID0gITE7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIHBhc3NpdmVMaXN0ZW5lcjogcywKICAgICAgICAgICAgICAgIGFjdGl2ZUxpc3RlbmVyV2l0aENhcHR1cmU6IGEKICAgICAgICAgICAgfSA9IHooKTsKICAgICAgICAgICAgdC53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCB4LCBzKSwgdC53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLCBTLCBhKSwgWyJwb2ludGVydXAiLCAicG9pbnRlcmNhbmNlbCJdLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgdC53cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBULCBzKQogICAgICAgICAgICB9KSksIHQud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIiwgTSwgYSkKICAgICAgICB9CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuem9vbSwgInNjYWxlIiwgewogICAgICAgICAgICBnZXQ6ICgpID0+IHcsCiAgICAgICAgICAgIHNldChlKSB7CiAgICAgICAgICAgICAgICBpZiAodyAhPT0gZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBtLmltYWdlRWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBtLnNsaWRlRWw7CiAgICAgICAgICAgICAgICAgICAgaSgiem9vbUNoYW5nZSIsIGUsIHQsIHMpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3ID0gZQogICAgICAgICAgICB9CiAgICAgICAgfSksIGEoImluaXQiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy56b29tLmVuYWJsZWQgJiYgJCgpCiAgICAgICAgfSkpLCBhKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgaygpCiAgICAgICAgfSkpLCBhKCJ0b3VjaFN0YXJ0IiwgKChlLCBzKSA9PiB7CiAgICAgICAgICAgIHQuem9vbS5lbmFibGVkICYmIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0LmRldmljZTsKICAgICAgICAgICAgICAgIG0uaW1hZ2VFbCAmJiAoaC5pc1RvdWNoZWQgfHwgKHMuYW5kcm9pZCAmJiBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpLCBoLmlzVG91Y2hlZCA9ICEwLCBoLnRvdWNoZXNTdGFydC54ID0gZS5wYWdlWCwgaC50b3VjaGVzU3RhcnQueSA9IGUucGFnZVkpKQogICAgICAgICAgICB9KHMpCiAgICAgICAgfSkpLCBhKCJ0b3VjaEVuZCIsICgoZSwgcykgPT4gewogICAgICAgICAgICB0Lnpvb20uZW5hYmxlZCAmJiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0Lnpvb207CiAgICAgICAgICAgICAgICBpZiAoIW0uaW1hZ2VFbCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKCFoLmlzVG91Y2hlZCB8fCAhaC5pc01vdmVkKSByZXR1cm4gaC5pc1RvdWNoZWQgPSAhMSwgdm9pZChoLmlzTW92ZWQgPSAhMSk7CiAgICAgICAgICAgICAgICBoLmlzVG91Y2hlZCA9ICExLCBoLmlzTW92ZWQgPSAhMTsKICAgICAgICAgICAgICAgIGxldCBzID0gMzAwLAogICAgICAgICAgICAgICAgICAgIGEgPSAzMDA7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gZy54ICogcywKICAgICAgICAgICAgICAgICAgICByID0gaC5jdXJyZW50WCArIGksCiAgICAgICAgICAgICAgICAgICAgbiA9IGcueSAqIGEsCiAgICAgICAgICAgICAgICAgICAgbCA9IGguY3VycmVudFkgKyBuOwogICAgICAgICAgICAgICAgMCAhPT0gZy54ICYmIChzID0gTWF0aC5hYnMoKHIgLSBoLmN1cnJlbnRYKSAvIGcueCkpLCAwICE9PSBnLnkgJiYgKGEgPSBNYXRoLmFicygobCAtIGguY3VycmVudFkpIC8gZy55KSk7CiAgICAgICAgICAgICAgICBjb25zdCBvID0gTWF0aC5tYXgocywgYSk7CiAgICAgICAgICAgICAgICBoLmN1cnJlbnRYID0gciwgaC5jdXJyZW50WSA9IGw7CiAgICAgICAgICAgICAgICBjb25zdCBkID0gaC53aWR0aCAqIGUuc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgYyA9IGguaGVpZ2h0ICogZS5zY2FsZTsKICAgICAgICAgICAgICAgIGgubWluWCA9IE1hdGgubWluKG0uc2xpZGVXaWR0aCAvIDIgLSBkIC8gMiwgMCksIGgubWF4WCA9IC1oLm1pblgsIGgubWluWSA9IE1hdGgubWluKG0uc2xpZGVIZWlnaHQgLyAyIC0gYyAvIDIsIDApLCBoLm1heFkgPSAtaC5taW5ZLCBoLmN1cnJlbnRYID0gTWF0aC5tYXgoTWF0aC5taW4oaC5jdXJyZW50WCwgaC5tYXhYKSwgaC5taW5YKSwgaC5jdXJyZW50WSA9IE1hdGgubWF4KE1hdGgubWluKGguY3VycmVudFksIGgubWF4WSksIGgubWluWSksIG0uaW1hZ2VXcmFwRWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7b31tc2AsIG0uaW1hZ2VXcmFwRWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7aC5jdXJyZW50WH1weCwgJHtoLmN1cnJlbnRZfXB4LDApYAogICAgICAgICAgICB9KCkKICAgICAgICB9KSksIGEoImRvdWJsZVRhcCIsICgoZSwgcykgPT4gewogICAgICAgICAgICAhdC5hbmltYXRpbmcgJiYgdC5wYXJhbXMuem9vbS5lbmFibGVkICYmIHQuem9vbS5lbmFibGVkICYmIHQucGFyYW1zLnpvb20udG9nZ2xlICYmIEEocykKICAgICAgICB9KSksIGEoInRyYW5zaXRpb25FbmQiLCAoKCkgPT4gewogICAgICAgICAgICB0Lnpvb20uZW5hYmxlZCAmJiB0LnBhcmFtcy56b29tLmVuYWJsZWQgJiYgQygpCiAgICAgICAgfSkpLCBhKCJzbGlkZUNoYW5nZSIsICgoKSA9PiB7CiAgICAgICAgICAgIHQuem9vbS5lbmFibGVkICYmIHQucGFyYW1zLnpvb20uZW5hYmxlZCAmJiB0LnBhcmFtcy5jc3NNb2RlICYmIEMoKQogICAgICAgIH0pKSwgT2JqZWN0LmFzc2lnbih0Lnpvb20sIHsKICAgICAgICAgICAgZW5hYmxlOiAkLAogICAgICAgICAgICBkaXNhYmxlOiBrLAogICAgICAgICAgICBpbjogUCwKICAgICAgICAgICAgb3V0OiBMLAogICAgICAgICAgICB0b2dnbGU6IEEKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwoKICAgICAgICBmdW5jdGlvbiBpKGUsIHQpIHsKICAgICAgICAgICAgY29uc3QgcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbGV0IGUsIHQsIHM7CiAgICAgICAgICAgICAgICByZXR1cm4gKGEsIGkpID0+IHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHQgPSAtMSwgZSA9IGEubGVuZ3RoOyBlIC0gdCA+IDE7KSBzID0gZSArIHQgPj4gMSwgYVtzXSA8PSBpID8gdCA9IHMgOiBlID0gczsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KCk7CiAgICAgICAgICAgIGxldCBhLCBpOwogICAgICAgICAgICByZXR1cm4gdGhpcy54ID0gZSwgdGhpcy55ID0gdCwgdGhpcy5sYXN0SW5kZXggPSBlLmxlbmd0aCAtIDEsIHRoaXMuaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZSA/IChpID0gcyh0aGlzLngsIGUpLCBhID0gaSAtIDEsIChlIC0gdGhpcy54W2FdKSAqICh0aGlzLnlbaV0gLSB0aGlzLnlbYV0pIC8gKHRoaXMueFtpXSAtIHRoaXMueFthXSkgKyB0aGlzLnlbYV0pIDogMAogICAgICAgICAgICB9LCB0aGlzCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByKCkgewogICAgICAgICAgICB0LmNvbnRyb2xsZXIuY29udHJvbCAmJiB0LmNvbnRyb2xsZXIuc3BsaW5lICYmICh0LmNvbnRyb2xsZXIuc3BsaW5lID0gdm9pZCAwLCBkZWxldGUgdC5jb250cm9sbGVyLnNwbGluZSkKICAgICAgICB9CiAgICAgICAgcyh7CiAgICAgICAgICAgIGNvbnRyb2xsZXI6IHsKICAgICAgICAgICAgICAgIGNvbnRyb2w6IHZvaWQgMCwKICAgICAgICAgICAgICAgIGludmVyc2U6ICExLAogICAgICAgICAgICAgICAgYnk6ICJzbGlkZSIKICAgICAgICAgICAgfQogICAgICAgIH0pLCB0LmNvbnRyb2xsZXIgPSB7CiAgICAgICAgICAgIGNvbnRyb2w6IHZvaWQgMAogICAgICAgIH0sIGEoImJlZm9yZUluaXQiLCAoKCkgPT4gewogICAgICAgICAgICBpZiAoInVuZGVmaW5lZCIgIT0gdHlwZW9mIHdpbmRvdyAmJiAoInN0cmluZyIgPT0gdHlwZW9mIHQucGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbCB8fCB0LnBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2wgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQucGFyYW1zLmNvbnRyb2xsZXIuY29udHJvbCk7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLnN3aXBlcikgdC5jb250cm9sbGVyLmNvbnRyb2wgPSBlLnN3aXBlcjsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gYSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuY29udHJvbGxlci5jb250cm9sID0gYS5kZXRhaWxbMF0sIHQudXBkYXRlKCksIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5pdCIsIHMpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoImluaXQiLCBzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgdC5jb250cm9sbGVyLmNvbnRyb2wgPSB0LnBhcmFtcy5jb250cm9sbGVyLmNvbnRyb2wKICAgICAgICB9KSksIGEoInVwZGF0ZSIsICgoKSA9PiB7CiAgICAgICAgICAgIHIoKQogICAgICAgIH0pKSwgYSgicmVzaXplIiwgKCgpID0+IHsKICAgICAgICAgICAgcigpCiAgICAgICAgfSkpLCBhKCJvYnNlcnZlclVwZGF0ZSIsICgoKSA9PiB7CiAgICAgICAgICAgIHIoKQogICAgICAgIH0pKSwgYSgic2V0VHJhbnNsYXRlIiwgKChlLCBzLCBhKSA9PiB7CiAgICAgICAgICAgIHQuY29udHJvbGxlci5jb250cm9sICYmIHQuY29udHJvbGxlci5zZXRUcmFuc2xhdGUocywgYSkKICAgICAgICB9KSksIGEoInNldFRyYW5zaXRpb24iLCAoKGUsIHMsIGEpID0+IHsKICAgICAgICAgICAgdC5jb250cm9sbGVyLmNvbnRyb2wgJiYgdC5jb250cm9sbGVyLnNldFRyYW5zaXRpb24ocywgYSkKICAgICAgICB9KSksIE9iamVjdC5hc3NpZ24odC5jb250cm9sbGVyLCB7CiAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogZnVuY3Rpb24oZSwgcykgewogICAgICAgICAgICAgICAgY29uc3QgYSA9IHQuY29udHJvbGxlci5jb250cm9sOwogICAgICAgICAgICAgICAgbGV0IHIsIG47CiAgICAgICAgICAgICAgICBjb25zdCBsID0gdC5jb25zdHJ1Y3RvcjsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBvKGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5ydGxUcmFuc2xhdGUgPyAtdC50cmFuc2xhdGUgOiB0LnRyYW5zbGF0ZTsKICAgICAgICAgICAgICAgICAgICAic2xpZGUiID09PSB0LnBhcmFtcy5jb250cm9sbGVyLmJ5ICYmICghIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jb250cm9sbGVyLnNwbGluZSB8fCAodC5jb250cm9sbGVyLnNwbGluZSA9IHQucGFyYW1zLmxvb3AgPyBuZXcgaSh0LnNsaWRlc0dyaWQsIGUuc2xpZGVzR3JpZCkgOiBuZXcgaSh0LnNuYXBHcmlkLCBlLnNuYXBHcmlkKSkKICAgICAgICAgICAgICAgICAgICB9KGUpLCBuID0gLXQuY29udHJvbGxlci5zcGxpbmUuaW50ZXJwb2xhdGUoLXMpKSwgbiAmJiAiY29udGFpbmVyIiAhPT0gdC5wYXJhbXMuY29udHJvbGxlci5ieSB8fCAociA9IChlLm1heFRyYW5zbGF0ZSgpIC0gZS5taW5UcmFuc2xhdGUoKSkgLyAodC5tYXhUcmFuc2xhdGUoKSAtIHQubWluVHJhbnNsYXRlKCkpLCBuID0gKHMgLSB0Lm1pblRyYW5zbGF0ZSgpKSAqIHIgKyBlLm1pblRyYW5zbGF0ZSgpKSwgdC5wYXJhbXMuY29udHJvbGxlci5pbnZlcnNlICYmIChuID0gZS5tYXhUcmFuc2xhdGUoKSAtIG4pLCBlLnVwZGF0ZVByb2dyZXNzKG4pLCBlLnNldFRyYW5zbGF0ZShuLCB0KSwgZS51cGRhdGVBY3RpdmVJbmRleCgpLCBlLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpCiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBhLmxlbmd0aDsgZSArPSAxKSBhW2VdICE9PSBzICYmIGFbZV0gaW5zdGFuY2VvZiBsICYmIG8oYVtlXSk7CiAgICAgICAgICAgICAgICBlbHNlIGEgaW5zdGFuY2VvZiBsICYmIHMgIT09IGEgJiYgbyhhKQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBmdW5jdGlvbihlLCBzKSB7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gdC5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICAgICAgICBpID0gdC5jb250cm9sbGVyLmNvbnRyb2w7CiAgICAgICAgICAgICAgICBsZXQgcjsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsKHMpIHsKICAgICAgICAgICAgICAgICAgICBzLnNldFRyYW5zaXRpb24oZSwgdCksIDAgIT09IGUgJiYgKHMudHJhbnNpdGlvblN0YXJ0KCksIHMucGFyYW1zLmF1dG9IZWlnaHQgJiYgbigoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBzLnVwZGF0ZUF1dG9IZWlnaHQoKQogICAgICAgICAgICAgICAgICAgIH0pKSwgRShzLndyYXBwZXJFbCwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaSAmJiBzLnRyYW5zaXRpb25FbmQoKQogICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGkpKQogICAgICAgICAgICAgICAgICAgIGZvciAociA9IDA7IHIgPCBpLmxlbmd0aDsgciArPSAxKSBpW3JdICE9PSBzICYmIGlbcl0gaW5zdGFuY2VvZiBhICYmIGwoaVtyXSk7CiAgICAgICAgICAgICAgICBlbHNlIGkgaW5zdGFuY2VvZiBhICYmIHMgIT09IGkgJiYgbChpKQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIGV4dGVuZFBhcmFtczogcywKICAgICAgICAgICAgb246IGEKICAgICAgICB9ID0gZTsKICAgICAgICBzKHsKICAgICAgICAgICAgYTExeTogewogICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25DbGFzczogInN3aXBlci1ub3RpZmljYXRpb24iLAogICAgICAgICAgICAgICAgcHJldlNsaWRlTWVzc2FnZTogIlByZXZpb3VzIHNsaWRlIiwKICAgICAgICAgICAgICAgIG5leHRTbGlkZU1lc3NhZ2U6ICJOZXh0IHNsaWRlIiwKICAgICAgICAgICAgICAgIGZpcnN0U2xpZGVNZXNzYWdlOiAiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLAogICAgICAgICAgICAgICAgbGFzdFNsaWRlTWVzc2FnZTogIlRoaXMgaXMgdGhlIGxhc3Qgc2xpZGUiLAogICAgICAgICAgICAgICAgcGFnaW5hdGlvbkJ1bGxldE1lc3NhZ2U6ICJHbyB0byBzbGlkZSB7e2luZGV4fX0iLAogICAgICAgICAgICAgICAgc2xpZGVMYWJlbE1lc3NhZ2U6ICJ7e2luZGV4fX0gLyB7e3NsaWRlc0xlbmd0aH19IiwKICAgICAgICAgICAgICAgIGNvbnRhaW5lck1lc3NhZ2U6IG51bGwsCiAgICAgICAgICAgICAgICBjb250YWluZXJSb2xlRGVzY3JpcHRpb25NZXNzYWdlOiBudWxsLAogICAgICAgICAgICAgICAgaXRlbVJvbGVEZXNjcmlwdGlvbk1lc3NhZ2U6IG51bGwsCiAgICAgICAgICAgICAgICBzbGlkZVJvbGU6ICJncm91cCIsCiAgICAgICAgICAgICAgICBpZDogbnVsbAogICAgICAgICAgICB9CiAgICAgICAgfSksIHQuYTExeSA9IHsKICAgICAgICAgICAgY2xpY2tlZDogITEKICAgICAgICB9OwogICAgICAgIGxldCBpID0gbnVsbDsKCiAgICAgICAgZnVuY3Rpb24gcihlKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSBpOwogICAgICAgICAgICAwICE9PSB0Lmxlbmd0aCAmJiAodC5pbm5lckhUTUwgPSAiIiwgdC5pbm5lckhUTUwgPSBlKQogICAgICAgIH0KICAgICAgICBjb25zdCBuID0gZSA9PiAoQXJyYXkuaXNBcnJheShlKSB8fCAoZSA9IFtlXS5maWx0ZXIoKGUgPT4gISFlKSkpLCBlKTsKCiAgICAgICAgZnVuY3Rpb24gbChlKSB7CiAgICAgICAgICAgIChlID0gbihlKSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCAiMCIpCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbyhlKSB7CiAgICAgICAgICAgIChlID0gbihlKSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCAiLTEiKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGQoZSwgdCkgewogICAgICAgICAgICAoZSA9IG4oZSkpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoInJvbGUiLCB0KQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGMoZSwgdCkgewogICAgICAgICAgICAoZSA9IG4oZSkpLmZvckVhY2goKGUgPT4gewogICAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoImFyaWEtcm9sZWRlc2NyaXB0aW9uIiwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwKGUsIHQpIHsKICAgICAgICAgICAgKGUgPSBuKGUpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgdCkKICAgICAgICAgICAgfSkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB1KGUpIHsKICAgICAgICAgICAgKGUgPSBuKGUpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIiwgITApCiAgICAgICAgICAgIH0pKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gbShlKSB7CiAgICAgICAgICAgIChlID0gbihlKSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsICExKQogICAgICAgICAgICB9KSkKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGgoZSkgewogICAgICAgICAgICBpZiAoMTMgIT09IGUua2V5Q29kZSAmJiAzMiAhPT0gZS5rZXlDb2RlKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LnBhcmFtcy5hMTF5LAogICAgICAgICAgICAgICAgYSA9IGUudGFyZ2V0OwogICAgICAgICAgICB0LnBhZ2luYXRpb24gJiYgdC5wYWdpbmF0aW9uLmVsICYmIChhID09PSB0LnBhZ2luYXRpb24uZWwgfHwgdC5wYWdpbmF0aW9uLmVsLmNvbnRhaW5zKGUudGFyZ2V0KSkgJiYgIWUudGFyZ2V0Lm1hdGNoZXMoZWUodC5wYXJhbXMucGFnaW5hdGlvbi5idWxsZXRDbGFzcykpIHx8ICh0Lm5hdmlnYXRpb24gJiYgdC5uYXZpZ2F0aW9uLm5leHRFbCAmJiBhID09PSB0Lm5hdmlnYXRpb24ubmV4dEVsICYmICh0LmlzRW5kICYmICF0LnBhcmFtcy5sb29wIHx8IHQuc2xpZGVOZXh0KCksIHQuaXNFbmQgPyByKHMubGFzdFNsaWRlTWVzc2FnZSkgOiByKHMubmV4dFNsaWRlTWVzc2FnZSkpLCB0Lm5hdmlnYXRpb24gJiYgdC5uYXZpZ2F0aW9uLnByZXZFbCAmJiBhID09PSB0Lm5hdmlnYXRpb24ucHJldkVsICYmICh0LmlzQmVnaW5uaW5nICYmICF0LnBhcmFtcy5sb29wIHx8IHQuc2xpZGVQcmV2KCksIHQuaXNCZWdpbm5pbmcgPyByKHMuZmlyc3RTbGlkZU1lc3NhZ2UpIDogcihzLnByZXZTbGlkZU1lc3NhZ2UpKSwgdC5wYWdpbmF0aW9uICYmIGEubWF0Y2hlcyhlZSh0LnBhcmFtcy5wYWdpbmF0aW9uLmJ1bGxldENsYXNzKSkgJiYgYS5jbGljaygpKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZigpIHsKICAgICAgICAgICAgcmV0dXJuIHQucGFnaW5hdGlvbiAmJiB0LnBhZ2luYXRpb24uYnVsbGV0cyAmJiB0LnBhZ2luYXRpb24uYnVsbGV0cy5sZW5ndGgKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHYoKSB7CiAgICAgICAgICAgIHJldHVybiBmKCkgJiYgdC5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUKICAgICAgICB9CiAgICAgICAgY29uc3QgdyA9IChlLCB0LCBzKSA9PiB7CiAgICAgICAgICAgICAgICBsKGUpLCAiQlVUVE9OIiAhPT0gZS50YWdOYW1lICYmIChkKGUsICJidXR0b24iKSwgZS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgaCkpLCBwKGUsIHMpLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKGUgPSBuKGUpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xzIiwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgfShlLCB0KQogICAgICAgICAgICB9LAogICAgICAgICAgICB5ID0gKCkgPT4gewogICAgICAgICAgICAgICAgdC5hMTF5LmNsaWNrZWQgPSAhMAogICAgICAgICAgICB9LAogICAgICAgICAgICBFID0gKCkgPT4gewogICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuZGVzdHJveWVkIHx8ICh0LmExMXkuY2xpY2tlZCA9ICExKQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHggPSBlID0+IHsKICAgICAgICAgICAgICAgIGlmICh0LmExMXkuY2xpY2tlZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgY29uc3QgcyA9IGUudGFyZ2V0LmNsb3Nlc3QoYC4ke3QucGFyYW1zLnNsaWRlQ2xhc3N9LCBzd2lwZXItc2xpZGVgKTsKICAgICAgICAgICAgICAgIGlmICghcyB8fCAhdC5zbGlkZXMuaW5jbHVkZXMocykpIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0LnNsaWRlcy5pbmRleE9mKHMpID09PSB0LmFjdGl2ZUluZGV4LAogICAgICAgICAgICAgICAgICAgIGkgPSB0LnBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzICYmIHQudmlzaWJsZVNsaWRlcyAmJiB0LnZpc2libGVTbGlkZXMuaW5jbHVkZXMocyk7CiAgICAgICAgICAgICAgICBhIHx8IGkgfHwgZS5zb3VyY2VDYXBhYmlsaXRpZXMgJiYgZS5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50cyB8fCAodC5pc0hvcml6b250YWwoKSA/IHQuZWwuc2Nyb2xsTGVmdCA9IDAgOiB0LmVsLnNjcm9sbFRvcCA9IDAsIHQuc2xpZGVUbyh0LnNsaWRlcy5pbmRleE9mKHMpLCAwKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUyA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5hMTF5OwogICAgICAgICAgICAgICAgZS5pdGVtUm9sZURlc2NyaXB0aW9uTWVzc2FnZSAmJiBjKHQuc2xpZGVzLCBlLml0ZW1Sb2xlRGVzY3JpcHRpb25NZXNzYWdlKSwgZS5zbGlkZVJvbGUgJiYgZCh0LnNsaWRlcywgZS5zbGlkZVJvbGUpOwogICAgICAgICAgICAgICAgY29uc3QgcyA9IHQuc2xpZGVzLmxlbmd0aDsKICAgICAgICAgICAgICAgIGUuc2xpZGVMYWJlbE1lc3NhZ2UgJiYgdC5zbGlkZXMuZm9yRWFjaCgoKGEsIGkpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gdC5wYXJhbXMubG9vcCA/IHBhcnNlSW50KGEuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLCAxMCkgOiBpOwogICAgICAgICAgICAgICAgICAgIHAoYSwgZS5zbGlkZUxhYmVsTWVzc2FnZS5yZXBsYWNlKC9ce1x7aW5kZXhcfVx9LywgciArIDEpLnJlcGxhY2UoL1x7XHtzbGlkZXNMZW5ndGhcfVx9LywgcykpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5hMTF5OwogICAgICAgICAgICAgICAgdC5lbC5hcHBlbmQoaSk7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5lbDsKICAgICAgICAgICAgICAgIGUuY29udGFpbmVyUm9sZURlc2NyaXB0aW9uTWVzc2FnZSAmJiBjKHMsIGUuY29udGFpbmVyUm9sZURlc2NyaXB0aW9uTWVzc2FnZSksIGUuY29udGFpbmVyTWVzc2FnZSAmJiBwKHMsIGUuY29udGFpbmVyTWVzc2FnZSk7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gdC53cmFwcGVyRWwsCiAgICAgICAgICAgICAgICAgICAgciA9IGUuaWQgfHwgYS5nZXRBdHRyaWJ1dGUoImlkIikgfHwgYHN3aXBlci13cmFwcGVyLSR7bD0xNix2b2lkIDA9PT1sJiYobD0xNiksIngiLnJlcGVhdChsKS5yZXBsYWNlKC94L2csKCgpPT5NYXRoLnJvdW5kKDE2Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KSkpfWA7CiAgICAgICAgICAgICAgICB2YXIgbDsKICAgICAgICAgICAgICAgIGNvbnN0IG8gPSB0LnBhcmFtcy5hdXRvcGxheSAmJiB0LnBhcmFtcy5hdXRvcGxheS5lbmFibGVkID8gIm9mZiIgOiAicG9saXRlIjsKICAgICAgICAgICAgICAgIHZhciBkOwogICAgICAgICAgICAgICAgZCA9IHIsIG4oYSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJpZCIsIGQpCiAgICAgICAgICAgICAgICAgICAgfSkpLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKGUgPSBuKGUpKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJhcmlhLWxpdmUiLCB0KQogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KGEsIG8pLCBTKCk7CiAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgIG5leHRFbDogdSwKICAgICAgICAgICAgICAgICAgICBwcmV2RWw6IG0KICAgICAgICAgICAgICAgIH0gPSB0Lm5hdmlnYXRpb24gPyB0Lm5hdmlnYXRpb24gOiB7fTsKICAgICAgICAgICAgICAgIGlmICh1ID0gbih1KSwgbSA9IG4obSksIHUgJiYgdS5mb3JFYWNoKCh0ID0+IHcodCwgciwgZS5uZXh0U2xpZGVNZXNzYWdlKSkpLCBtICYmIG0uZm9yRWFjaCgodCA9PiB3KHQsIHIsIGUucHJldlNsaWRlTWVzc2FnZSkpKSwgdigpKSB7CiAgICAgICAgICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkodC5wYWdpbmF0aW9uLmVsKSA/IHQucGFnaW5hdGlvbi5lbCA6IFt0LnBhZ2luYXRpb24uZWxdKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgaCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQuZWwuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB4LCAhMCksIHQuZWwuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCB5LCAhMCksIHQuZWwuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIiwgRSwgITApCiAgICAgICAgICAgIH07CiAgICAgICAgYSgiYmVmb3JlSW5pdCIsICgoKSA9PiB7CiAgICAgICAgICAgIGkgPSBnKCJzcGFuIiwgdC5wYXJhbXMuYTExeS5ub3RpZmljYXRpb25DbGFzcyksIGkuc2V0QXR0cmlidXRlKCJhcmlhLWxpdmUiLCAiYXNzZXJ0aXZlIiksIGkuc2V0QXR0cmlidXRlKCJhcmlhLWF0b21pYyIsICJ0cnVlIiksIHQuaXNFbGVtZW50ICYmIGkuc2V0QXR0cmlidXRlKCJzbG90IiwgImNvbnRhaW5lci1lbmQiKQogICAgICAgIH0pKSwgYSgiYWZ0ZXJJbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMuYTExeS5lbmFibGVkICYmIFQoKQogICAgICAgIH0pKSwgYSgic2xpZGVzTGVuZ3RoQ2hhbmdlIHNuYXBHcmlkTGVuZ3RoQ2hhbmdlIHNsaWRlc0dyaWRMZW5ndGhDaGFuZ2UiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5hMTF5LmVuYWJsZWQgJiYgUygpCiAgICAgICAgfSkpLCBhKCJmcm9tRWRnZSB0b0VkZ2UgYWZ0ZXJJbml0IGxvY2sgdW5sb2NrIiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMuYTExeS5lbmFibGVkICYmIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLmxvb3AgfHwgdC5wYXJhbXMucmV3aW5kIHx8ICF0Lm5hdmlnYXRpb24pIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBuZXh0RWw6IGUsCiAgICAgICAgICAgICAgICAgICAgcHJldkVsOiBzCiAgICAgICAgICAgICAgICB9ID0gdC5uYXZpZ2F0aW9uOwogICAgICAgICAgICAgICAgcyAmJiAodC5pc0JlZ2lubmluZyA/ICh1KHMpLCBvKHMpKSA6IChtKHMpLCBsKHMpKSksIGUgJiYgKHQuaXNFbmQgPyAodShlKSwgbyhlKSkgOiAobShlKSwgbChlKSkpCiAgICAgICAgICAgIH0oKQogICAgICAgIH0pKSwgYSgicGFnaW5hdGlvblVwZGF0ZSIsICgoKSA9PiB7CiAgICAgICAgICAgIHQucGFyYW1zLmExMXkuZW5hYmxlZCAmJiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LnBhcmFtcy5hMTF5OwogICAgICAgICAgICAgICAgZigpICYmIHQucGFnaW5hdGlvbi5idWxsZXRzLmZvckVhY2goKHMgPT4gewogICAgICAgICAgICAgICAgICAgIHQucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlICYmIChsKHMpLCB0LnBhcmFtcy5wYWdpbmF0aW9uLnJlbmRlckJ1bGxldCB8fCAoZChzLCAiYnV0dG9uIiksIHAocywgZS5wYWdpbmF0aW9uQnVsbGV0TWVzc2FnZS5yZXBsYWNlKC9ce1x7aW5kZXhcfVx9LywgYihzKSArIDEpKSkpLCBzLm1hdGNoZXMoYC4ke3QucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0QWN0aXZlQ2xhc3N9YCkgPyBzLnNldEF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50IiwgInRydWUiKSA6IHMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0oKQogICAgICAgIH0pKSwgYSgiZGVzdHJveSIsICgoKSA9PiB7CiAgICAgICAgICAgIHQucGFyYW1zLmExMXkuZW5hYmxlZCAmJiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGkgJiYgaS5sZW5ndGggPiAwICYmIGkucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgIG5leHRFbDogZSwKICAgICAgICAgICAgICAgICAgICBwcmV2RWw6IHMKICAgICAgICAgICAgICAgIH0gPSB0Lm5hdmlnYXRpb24gPyB0Lm5hdmlnYXRpb24gOiB7fTsKICAgICAgICAgICAgICAgIGUgPSBuKGUpLCBzID0gbihzKSwgZSAmJiBlLmZvckVhY2goKGUgPT4gZS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgaCkpKSwgcyAmJiBzLmZvckVhY2goKGUgPT4gZS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgaCkpKSwgdigpICYmIChBcnJheS5pc0FycmF5KHQucGFnaW5hdGlvbi5lbCkgPyB0LnBhZ2luYXRpb24uZWwgOiBbdC5wYWdpbmF0aW9uLmVsXSkuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgaCkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIHQuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB4LCAhMCksIHQuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCB5LCAhMCksIHQuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIiwgRSwgITApCiAgICAgICAgICAgIH0oKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICBoaXN0b3J5OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgIHJvb3Q6ICIiLAogICAgICAgICAgICAgICAgcmVwbGFjZVN0YXRlOiAhMSwKICAgICAgICAgICAgICAgIGtleTogInNsaWRlcyIsCiAgICAgICAgICAgICAgICBrZWVwUXVlcnk6ICExCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBsZXQgaSA9ICExLAogICAgICAgICAgICBuID0ge307CiAgICAgICAgY29uc3QgbCA9IGUgPT4gZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCAiLSIpLnJlcGxhY2UoL1teXHctXSsvZywgIiIpLnJlcGxhY2UoLy0tKy9nLCAiLSIpLnJlcGxhY2UoL14tKy8sICIiKS5yZXBsYWNlKC8tKyQvLCAiIiksCiAgICAgICAgICAgIG8gPSBlID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHQgPSByKCk7CiAgICAgICAgICAgICAgICBsZXQgczsKICAgICAgICAgICAgICAgIHMgPSBlID8gbmV3IFVSTChlKSA6IHQubG9jYXRpb247CiAgICAgICAgICAgICAgICBjb25zdCBhID0gcy5wYXRobmFtZS5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcigoZSA9PiAiIiAhPT0gZSkpLAogICAgICAgICAgICAgICAgICAgIGkgPSBhLmxlbmd0aDsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAga2V5OiBhW2kgLSAyXSwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYVtpIC0gMV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZCA9IChlLCBzKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBhID0gcigpOwogICAgICAgICAgICAgICAgaWYgKCFpIHx8ICF0LnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHJldHVybjsKICAgICAgICAgICAgICAgIGxldCBuOwogICAgICAgICAgICAgICAgbiA9IHQucGFyYW1zLnVybCA/IG5ldyBVUkwodC5wYXJhbXMudXJsKSA6IGEubG9jYXRpb247CiAgICAgICAgICAgICAgICBjb25zdCBvID0gdC5zbGlkZXNbc107CiAgICAgICAgICAgICAgICBsZXQgZCA9IGwoby5nZXRBdHRyaWJ1dGUoImRhdGEtaGlzdG9yeSIpKTsKICAgICAgICAgICAgICAgIGlmICh0LnBhcmFtcy5oaXN0b3J5LnJvb3QubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIGxldCBzID0gdC5wYXJhbXMuaGlzdG9yeS5yb290OwogICAgICAgICAgICAgICAgICAgICIvIiA9PT0gc1tzLmxlbmd0aCAtIDFdICYmIChzID0gcy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSwgZCA9IGAke3N9LyR7ZT9gJHtlfS9gOiIifSR7ZH1gCiAgICAgICAgICAgICAgICB9IGVsc2Ugbi5wYXRobmFtZS5pbmNsdWRlcyhlKSB8fCAoZCA9IGAke2U/YCR7ZX0vYDoiIn0ke2R9YCk7CiAgICAgICAgICAgICAgICB0LnBhcmFtcy5oaXN0b3J5LmtlZXBRdWVyeSAmJiAoZCArPSBuLnNlYXJjaCk7CiAgICAgICAgICAgICAgICBjb25zdCBjID0gYS5oaXN0b3J5LnN0YXRlOwogICAgICAgICAgICAgICAgYyAmJiBjLnZhbHVlID09PSBkIHx8ICh0LnBhcmFtcy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSA/IGEuaGlzdG9yeS5yZXBsYWNlU3RhdGUoewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkCiAgICAgICAgICAgICAgICB9LCBudWxsLCBkKSA6IGEuaGlzdG9yeS5wdXNoU3RhdGUoewogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkCiAgICAgICAgICAgICAgICB9LCBudWxsLCBkKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYyA9IChlLCBzLCBhKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAocykKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgciA9IHQuc2xpZGVzLmxlbmd0aDsgaSA8IHI7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gdC5zbGlkZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsKHIuZ2V0QXR0cmlidXRlKCJkYXRhLWhpc3RvcnkiKSkgPT09IHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBiKHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zbGlkZVRvKHMsIGUsIGEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdC5zbGlkZVRvKDAsIGUsIGEpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHAgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICBuID0gbyh0LnBhcmFtcy51cmwpLCBjKHQucGFyYW1zLnNwZWVkLCBuLnZhbHVlLCAhMSkKICAgICAgICAgICAgfTsKICAgICAgICBhKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMuaGlzdG9yeS5lbmFibGVkICYmICgoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gcigpOwogICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLmhpc3RvcnkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUuaGlzdG9yeSB8fCAhZS5oaXN0b3J5LnB1c2hTdGF0ZSkgcmV0dXJuIHQucGFyYW1zLmhpc3RvcnkuZW5hYmxlZCA9ICExLCB2b2lkKHQucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgaSA9ICEwLCBuID0gbyh0LnBhcmFtcy51cmwpLCBuLmtleSB8fCBuLnZhbHVlID8gKGMoMCwgbi52YWx1ZSwgdC5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSwgdC5wYXJhbXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUgfHwgZS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsIHApKSA6IHQucGFyYW1zLmhpc3RvcnkucmVwbGFjZVN0YXRlIHx8IGUuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLCBwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSgpCiAgICAgICAgfSkpLCBhKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMuaGlzdG9yeS5lbmFibGVkICYmICgoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gcigpOwogICAgICAgICAgICAgICAgdC5wYXJhbXMuaGlzdG9yeS5yZXBsYWNlU3RhdGUgfHwgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsIHApCiAgICAgICAgICAgIH0pKCkKICAgICAgICB9KSksIGEoInRyYW5zaXRpb25FbmQgX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UiLCAoKCkgPT4gewogICAgICAgICAgICBpICYmIGQodC5wYXJhbXMuaGlzdG9yeS5rZXksIHQuYWN0aXZlSW5kZXgpCiAgICAgICAgfSkpLCBhKCJzbGlkZUNoYW5nZSIsICgoKSA9PiB7CiAgICAgICAgICAgIGkgJiYgdC5wYXJhbXMuY3NzTW9kZSAmJiBkKHQucGFyYW1zLmhpc3Rvcnkua2V5LCB0LmFjdGl2ZUluZGV4KQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBlbWl0OiBpLAogICAgICAgICAgICBvbjogbgogICAgICAgIH0gPSBlLCBsID0gITE7CiAgICAgICAgY29uc3QgbyA9IGEoKSwKICAgICAgICAgICAgZCA9IHIoKTsKICAgICAgICBzKHsKICAgICAgICAgICAgaGFzaE5hdmlnYXRpb246IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICExLAogICAgICAgICAgICAgICAgcmVwbGFjZVN0YXRlOiAhMSwKICAgICAgICAgICAgICAgIHdhdGNoU3RhdGU6ICExCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBjb25zdCBjID0gKCkgPT4gewogICAgICAgICAgICAgICAgaSgiaGFzaENoYW5nZSIpOwogICAgICAgICAgICAgICAgY29uc3QgZSA9IG8ubG9jYXRpb24uaGFzaC5yZXBsYWNlKCIjIiwgIiIpOwogICAgICAgICAgICAgICAgaWYgKGUgIT09IHQuc2xpZGVzW3QuYWN0aXZlSW5kZXhdLmdldEF0dHJpYnV0ZSgiZGF0YS1oYXNoIikpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gYihmKHQuc2xpZGVzRWwsIGAuJHt0LnBhcmFtcy5zbGlkZUNsYXNzfVtkYXRhLWhhc2g9IiR7ZX0iXSwgc3dpcGVyLXNsaWRlW2RhdGEtaGFzaD0iJHtlfSJdYClbMF0pOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IHMpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0LnNsaWRlVG8ocykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGlmIChsICYmIHQucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgaWYgKHQucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLnJlcGxhY2VTdGF0ZSAmJiBkLmhpc3RvcnkgJiYgZC5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkgZC5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCBgIyR7dC5zbGlkZXNbdC5hY3RpdmVJbmRleF0uZ2V0QXR0cmlidXRlKCJkYXRhLWhhc2giKX1gIHx8ICIiKSwgaSgiaGFzaFNldCIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdC5zbGlkZXNbdC5hY3RpdmVJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtaGFzaCIpIHx8IGUuZ2V0QXR0cmlidXRlKCJkYXRhLWhpc3RvcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgby5sb2NhdGlvbi5oYXNoID0gcyB8fCAiIiwgaSgiaGFzaFNldCIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIG4oImluaXQiLCAoKCkgPT4gewogICAgICAgICAgICB0LnBhcmFtcy5oYXNoTmF2aWdhdGlvbi5lbmFibGVkICYmICgoKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIXQucGFyYW1zLmhhc2hOYXZpZ2F0aW9uLmVuYWJsZWQgfHwgdC5wYXJhbXMuaGlzdG9yeSAmJiB0LnBhcmFtcy5oaXN0b3J5LmVuYWJsZWQpIHJldHVybjsKICAgICAgICAgICAgICAgIGwgPSAhMDsKICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBvLmxvY2F0aW9uLmhhc2gucmVwbGFjZSgiIyIsICIiKTsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYSA9IDAsIGkgPSB0LnNsaWRlcy5sZW5ndGg7IGEgPCBpOyBhICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHQuc2xpZGVzW2FdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkuZ2V0QXR0cmlidXRlKCJkYXRhLWhhc2giKSB8fCBpLmdldEF0dHJpYnV0ZSgiZGF0YS1oaXN0b3J5IikpID09PSBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gYihpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2xpZGVUbyhlLCBzLCB0LnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQsICEwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5wYXJhbXMuaGFzaE5hdmlnYXRpb24ud2F0Y2hTdGF0ZSAmJiBkLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLCBjKQogICAgICAgICAgICB9KSgpCiAgICAgICAgfSkpLCBuKCJkZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgdC5wYXJhbXMuaGFzaE5hdmlnYXRpb24uZW5hYmxlZCAmJiB0LnBhcmFtcy5oYXNoTmF2aWdhdGlvbi53YXRjaFN0YXRlICYmIGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsIGMpCiAgICAgICAgfSkpLCBuKCJ0cmFuc2l0aW9uRW5kIF9mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlIiwgKCgpID0+IHsKICAgICAgICAgICAgbCAmJiBwKCkKICAgICAgICB9KSksIG4oInNsaWRlQ2hhbmdlIiwgKCgpID0+IHsKICAgICAgICAgICAgbCAmJiB0LnBhcmFtcy5jc3NNb2RlICYmIHAoKQogICAgICAgIH0pKQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB0LCBzLCB7CiAgICAgICAgICAgIHN3aXBlcjogaSwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiByLAogICAgICAgICAgICBvbjogbiwKICAgICAgICAgICAgZW1pdDogbCwKICAgICAgICAgICAgcGFyYW1zOiBvCiAgICAgICAgfSA9IGU7CiAgICAgICAgaS5hdXRvcGxheSA9IHsKICAgICAgICAgICAgcnVubmluZzogITEsCiAgICAgICAgICAgIHBhdXNlZDogITEsCiAgICAgICAgICAgIHRpbWVMZWZ0OiAwCiAgICAgICAgfSwgcih7CiAgICAgICAgICAgIGF1dG9wbGF5OiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgIGRlbGF5OiAzZTMsCiAgICAgICAgICAgICAgICB3YWl0Rm9yVHJhbnNpdGlvbjogITAsCiAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogITAsCiAgICAgICAgICAgICAgICBzdG9wT25MYXN0U2xpZGU6ICExLAogICAgICAgICAgICAgICAgcmV2ZXJzZURpcmVjdGlvbjogITEsCiAgICAgICAgICAgICAgICBwYXVzZU9uTW91c2VFbnRlcjogITEKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGxldCBkLCBjLCBwLCB1LCBtLCBoLCBmLCBnID0gbyAmJiBvLmF1dG9wbGF5ID8gby5hdXRvcGxheS5kZWxheSA6IDNlMywKICAgICAgICAgICAgdiA9IG8gJiYgby5hdXRvcGxheSA/IG8uYXV0b3BsYXkuZGVsYXkgOiAzZTMsCiAgICAgICAgICAgIHcgPSAobmV3IERhdGUpLmdldFRpbWU7CgogICAgICAgIGZ1bmN0aW9uIGIoZSkgewogICAgICAgICAgICBpICYmICFpLmRlc3Ryb3llZCAmJiBpLndyYXBwZXJFbCAmJiBlLnRhcmdldCA9PT0gaS53cmFwcGVyRWwgJiYgKGkud3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCBiKSwgTSgpKQogICAgICAgIH0KICAgICAgICBjb25zdCB5ID0gKCkgPT4gewogICAgICAgICAgICAgICAgaWYgKGkuZGVzdHJveWVkIHx8ICFpLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjsKICAgICAgICAgICAgICAgIGkuYXV0b3BsYXkucGF1c2VkID8gYyA9ICEwIDogYyAmJiAodiA9IGQsIGMgPSAhMSk7CiAgICAgICAgICAgICAgICBjb25zdCBlID0gaS5hdXRvcGxheS5wYXVzZWQgPyBkIDogdyArIHYgLSAobmV3IERhdGUpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIGkuYXV0b3BsYXkudGltZUxlZnQgPSBlLCBsKCJhdXRvcGxheVRpbWVMZWZ0IiwgZSwgZSAvIGcpLCBzID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgeSgpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRSA9IGUgPT4gewogICAgICAgICAgICAgICAgaWYgKGkuZGVzdHJveWVkIHx8ICFpLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjsKICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHMpLCB5KCk7CiAgICAgICAgICAgICAgICBsZXQgYSA9IHZvaWQgMCA9PT0gZSA/IGkucGFyYW1zLmF1dG9wbGF5LmRlbGF5IDogZTsKICAgICAgICAgICAgICAgIGcgPSBpLnBhcmFtcy5hdXRvcGxheS5kZWxheSwgdiA9IGkucGFyYW1zLmF1dG9wbGF5LmRlbGF5OwogICAgICAgICAgICAgICAgY29uc3QgciA9ICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBpLnZpcnR1YWwgJiYgaS5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gaS5zbGlkZXMuZmlsdGVyKChlID0+IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJzd2lwZXItc2xpZGUtYWN0aXZlIikpKVswXSA6IGkuc2xpZGVzW2kuYWN0aXZlSW5kZXhdLCAhZSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChlLmdldEF0dHJpYnV0ZSgiZGF0YS1zd2lwZXItYXV0b3BsYXkiKSwgMTApCiAgICAgICAgICAgICAgICB9KSgpOwogICAgICAgICAgICAgICAgIU51bWJlci5pc05hTihyKSAmJiByID4gMCAmJiB2b2lkIDAgPT09IGUgJiYgKGEgPSByLCBnID0gciwgdiA9IHIpLCBkID0gYTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBpLnBhcmFtcy5zcGVlZCwKICAgICAgICAgICAgICAgICAgICBvID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpICYmICFpLmRlc3Ryb3llZCAmJiAoaS5wYXJhbXMuYXV0b3BsYXkucmV2ZXJzZURpcmVjdGlvbiA/ICFpLmlzQmVnaW5uaW5nIHx8IGkucGFyYW1zLmxvb3AgfHwgaS5wYXJhbXMucmV3aW5kID8gKGkuc2xpZGVQcmV2KG4sICEwLCAhMCksIGwoImF1dG9wbGF5IikpIDogaS5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlIHx8IChpLnNsaWRlVG8oaS5zbGlkZXMubGVuZ3RoIC0gMSwgbiwgITAsICEwKSwgbCgiYXV0b3BsYXkiKSkgOiAhaS5pc0VuZCB8fCBpLnBhcmFtcy5sb29wIHx8IGkucGFyYW1zLnJld2luZCA/IChpLnNsaWRlTmV4dChuLCAhMCwgITApLCBsKCJhdXRvcGxheSIpKSA6IGkucGFyYW1zLmF1dG9wbGF5LnN0b3BPbkxhc3RTbGlkZSB8fCAoaS5zbGlkZVRvKDAsIG4sICEwLCAhMCksIGwoImF1dG9wbGF5IikpLCBpLnBhcmFtcy5jc3NNb2RlICYmICh3ID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiBhID4gMCA/IChjbGVhclRpbWVvdXQodCksIHQgPSBzZXRUaW1lb3V0KCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbygpCiAgICAgICAgICAgICAgICB9KSwgYSkpIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbygpCiAgICAgICAgICAgICAgICB9KSksIGEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgeCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGkuYXV0b3BsYXkucnVubmluZyA9ICEwLCBFKCksIGwoImF1dG9wbGF5U3RhcnQiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBTID0gKCkgPT4gewogICAgICAgICAgICAgICAgaS5hdXRvcGxheS5ydW5uaW5nID0gITEsIGNsZWFyVGltZW91dCh0KSwgY2FuY2VsQW5pbWF0aW9uRnJhbWUocyksIGwoImF1dG9wbGF5U3RvcCIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFQgPSAoZSwgcykgPT4gewogICAgICAgICAgICAgICAgaWYgKGkuZGVzdHJveWVkIHx8ICFpLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjsKICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0KSwgZSB8fCAoZiA9ICEwKTsKICAgICAgICAgICAgICAgIGNvbnN0IGEgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbCgiYXV0b3BsYXlQYXVzZSIpLCBpLnBhcmFtcy5hdXRvcGxheS53YWl0Rm9yVHJhbnNpdGlvbiA/IGkud3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCBiKSA6IE0oKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmIChpLmF1dG9wbGF5LnBhdXNlZCA9ICEwLCBzKSByZXR1cm4gaCAmJiAoZCA9IGkucGFyYW1zLmF1dG9wbGF5LmRlbGF5KSwgaCA9ICExLCB2b2lkIGEoKTsKICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBkIHx8IGkucGFyYW1zLmF1dG9wbGF5LmRlbGF5OwogICAgICAgICAgICAgICAgZCA9IHIgLSAoKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSB3KSwgaS5pc0VuZCAmJiBkIDwgMCAmJiAhaS5wYXJhbXMubG9vcCB8fCAoZCA8IDAgJiYgKGQgPSAwKSwgYSgpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBNID0gKCkgPT4gewogICAgICAgICAgICAgICAgaS5pc0VuZCAmJiBkIDwgMCAmJiAhaS5wYXJhbXMubG9vcCB8fCBpLmRlc3Ryb3llZCB8fCAhaS5hdXRvcGxheS5ydW5uaW5nIHx8ICh3ID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksIGYgPyAoZiA9ICExLCBFKGQpKSA6IEUoKSwgaS5hdXRvcGxheS5wYXVzZWQgPSAhMSwgbCgiYXV0b3BsYXlSZXN1bWUiKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQyA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGlmIChpLmRlc3Ryb3llZCB8fCAhaS5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCBlID0gYSgpOwogICAgICAgICAgICAgICAgImhpZGRlbiIgPT09IGUudmlzaWJpbGl0eVN0YXRlICYmIChmID0gITAsIFQoITApKSwgInZpc2libGUiID09PSBlLnZpc2liaWxpdHlTdGF0ZSAmJiBNKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUCA9IGUgPT4gewogICAgICAgICAgICAgICAgIm1vdXNlIiA9PT0gZS5wb2ludGVyVHlwZSAmJiAoZiA9ICEwLCBUKCEwKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTCA9IGUgPT4gewogICAgICAgICAgICAgICAgIm1vdXNlIiA9PT0gZS5wb2ludGVyVHlwZSAmJiBpLmF1dG9wbGF5LnBhdXNlZCAmJiBNKCkKICAgICAgICAgICAgfTsKICAgICAgICBuKCJpbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgaS5wYXJhbXMuYXV0b3BsYXkuZW5hYmxlZCAmJiAoaS5wYXJhbXMuYXV0b3BsYXkucGF1c2VPbk1vdXNlRW50ZXIgJiYgKGkuZWwuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmVudGVyIiwgUCksIGkuZWwuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIiwgTCkpLCBhKCkuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsIEMpLCB3ID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksIHgoKSkKICAgICAgICB9KSksIG4oImRlc3Ryb3kiLCAoKCkgPT4gewogICAgICAgICAgICBpLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJlbnRlciIsIFApLCBpLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsIEwpLCBhKCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsIEMpLCBpLmF1dG9wbGF5LnJ1bm5pbmcgJiYgUygpCiAgICAgICAgfSkpLCBuKCJiZWZvcmVUcmFuc2l0aW9uU3RhcnQiLCAoKGUsIHQsIHMpID0+IHsKICAgICAgICAgICAgIWkuZGVzdHJveWVkICYmIGkuYXV0b3BsYXkucnVubmluZyAmJiAocyB8fCAhaS5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24gPyBUKCEwLCAhMCkgOiBTKCkpCiAgICAgICAgfSkpLCBuKCJzbGlkZXJGaXJzdE1vdmUiLCAoKCkgPT4gewogICAgICAgICAgICAhaS5kZXN0cm95ZWQgJiYgaS5hdXRvcGxheS5ydW5uaW5nICYmIChpLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbiA/IFMoKSA6IChwID0gITAsIHUgPSAhMSwgZiA9ICExLCBtID0gc2V0VGltZW91dCgoKCkgPT4gewogICAgICAgICAgICAgICAgZiA9ICEwLCB1ID0gITAsIFQoITApCiAgICAgICAgICAgIH0pLCAyMDApKSkKICAgICAgICB9KSksIG4oInRvdWNoRW5kIiwgKCgpID0+IHsKICAgICAgICAgICAgaWYgKCFpLmRlc3Ryb3llZCAmJiBpLmF1dG9wbGF5LnJ1bm5pbmcgJiYgcCkgewogICAgICAgICAgICAgICAgaWYgKGNsZWFyVGltZW91dChtKSwgY2xlYXJUaW1lb3V0KHQpLCBpLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikgcmV0dXJuIHUgPSAhMSwgdm9pZChwID0gITEpOwogICAgICAgICAgICAgICAgdSAmJiBpLnBhcmFtcy5jc3NNb2RlICYmIE0oKSwgdSA9ICExLCBwID0gITEKICAgICAgICAgICAgfQogICAgICAgIH0pKSwgbigic2xpZGVDaGFuZ2UiLCAoKCkgPT4gewogICAgICAgICAgICAhaS5kZXN0cm95ZWQgJiYgaS5hdXRvcGxheS5ydW5uaW5nICYmIChoID0gITApCiAgICAgICAgfSkpLCBPYmplY3QuYXNzaWduKGkuYXV0b3BsYXksIHsKICAgICAgICAgICAgc3RhcnQ6IHgsCiAgICAgICAgICAgIHN0b3A6IFMsCiAgICAgICAgICAgIHBhdXNlOiBULAogICAgICAgICAgICByZXN1bWU6IE0KICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogaQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICB0aHVtYnM6IHsKICAgICAgICAgICAgICAgIHN3aXBlcjogbnVsbCwKICAgICAgICAgICAgICAgIG11bHRpcGxlQWN0aXZlVGh1bWJzOiAhMCwKICAgICAgICAgICAgICAgIGF1dG9TY3JvbGxPZmZzZXQ6IDAsCiAgICAgICAgICAgICAgICBzbGlkZVRodW1iQWN0aXZlQ2xhc3M6ICJzd2lwZXItc2xpZGUtdGh1bWItYWN0aXZlIiwKICAgICAgICAgICAgICAgIHRodW1ic0NvbnRhaW5lckNsYXNzOiAic3dpcGVyLXRodW1icyIKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGxldCByID0gITEsCiAgICAgICAgICAgIG4gPSAhMTsKCiAgICAgICAgZnVuY3Rpb24gbCgpIHsKICAgICAgICAgICAgY29uc3QgZSA9IHQudGh1bWJzLnN3aXBlcjsKICAgICAgICAgICAgaWYgKCFlIHx8IGUuZGVzdHJveWVkKSByZXR1cm47CiAgICAgICAgICAgIGNvbnN0IHMgPSBlLmNsaWNrZWRJbmRleCwKICAgICAgICAgICAgICAgIGEgPSBlLmNsaWNrZWRTbGlkZTsKICAgICAgICAgICAgaWYgKGEgJiYgYS5jbGFzc0xpc3QuY29udGFpbnModC5wYXJhbXMudGh1bWJzLnNsaWRlVGh1bWJBY3RpdmVDbGFzcykpIHJldHVybjsKICAgICAgICAgICAgaWYgKG51bGwgPT0gcykgcmV0dXJuOwogICAgICAgICAgICBsZXQgaTsKICAgICAgICAgICAgaSA9IGUucGFyYW1zLmxvb3AgPyBwYXJzZUludChlLmNsaWNrZWRTbGlkZS5nZXRBdHRyaWJ1dGUoImRhdGEtc3dpcGVyLXNsaWRlLWluZGV4IiksIDEwKSA6IHMsIHQucGFyYW1zLmxvb3AgPyB0LnNsaWRlVG9Mb29wKGkpIDogdC5zbGlkZVRvKGkpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvKCkgewogICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICB0aHVtYnM6IGUKICAgICAgICAgICAgfSA9IHQucGFyYW1zOwogICAgICAgICAgICBpZiAocikgcmV0dXJuICExOwogICAgICAgICAgICByID0gITA7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LmNvbnN0cnVjdG9yOwogICAgICAgICAgICBpZiAoZS5zd2lwZXIgaW5zdGFuY2VvZiBzKSB0LnRodW1icy5zd2lwZXIgPSBlLnN3aXBlciwgT2JqZWN0LmFzc2lnbih0LnRodW1icy5zd2lwZXIub3JpZ2luYWxQYXJhbXMsIHsKICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ICEwLAogICAgICAgICAgICAgICAgc2xpZGVUb0NsaWNrZWRTbGlkZTogITEKICAgICAgICAgICAgfSksIE9iamVjdC5hc3NpZ24odC50aHVtYnMuc3dpcGVyLnBhcmFtcywgewogICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAsCiAgICAgICAgICAgICAgICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiAhMQogICAgICAgICAgICB9KSwgdC50aHVtYnMuc3dpcGVyLnVwZGF0ZSgpOwogICAgICAgICAgICBlbHNlIGlmIChkKGUuc3dpcGVyKSkgewogICAgICAgICAgICAgICAgY29uc3QgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUuc3dpcGVyKTsKICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYSwgewogICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ICEwLAogICAgICAgICAgICAgICAgICAgIHNsaWRlVG9DbGlja2VkU2xpZGU6ICExCiAgICAgICAgICAgICAgICB9KSwgdC50aHVtYnMuc3dpcGVyID0gbmV3IHMoYSksIG4gPSAhMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0LnRodW1icy5zd2lwZXIuZWwuY2xhc3NMaXN0LmFkZCh0LnBhcmFtcy50aHVtYnMudGh1bWJzQ29udGFpbmVyQ2xhc3MpLCB0LnRodW1icy5zd2lwZXIub24oInRhcCIsIGwpLCAhMAogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYyhlKSB7CiAgICAgICAgICAgIGNvbnN0IHMgPSB0LnRodW1icy5zd2lwZXI7CiAgICAgICAgICAgIGlmICghcyB8fCBzLmRlc3Ryb3llZCkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBhID0gImF1dG8iID09PSBzLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID8gcy5zbGlkZXNQZXJWaWV3RHluYW1pYygpIDogcy5wYXJhbXMuc2xpZGVzUGVyVmlldzsKICAgICAgICAgICAgbGV0IGkgPSAxOwogICAgICAgICAgICBjb25zdCByID0gdC5wYXJhbXMudGh1bWJzLnNsaWRlVGh1bWJBY3RpdmVDbGFzczsKICAgICAgICAgICAgaWYgKHQucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxICYmICF0LnBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiAoaSA9IHQucGFyYW1zLnNsaWRlc1BlclZpZXcpLCB0LnBhcmFtcy50aHVtYnMubXVsdGlwbGVBY3RpdmVUaHVtYnMgfHwgKGkgPSAxKSwgaSA9IE1hdGguZmxvb3IoaSksIHMuc2xpZGVzLmZvckVhY2goKGUgPT4gZS5jbGFzc0xpc3QucmVtb3ZlKHIpKSksIHMucGFyYW1zLmxvb3AgfHwgcy5wYXJhbXMudmlydHVhbCAmJiBzLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpCiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IGk7IGUgKz0gMSkgZihzLnNsaWRlc0VsLCBgW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PSIke3QucmVhbEluZGV4K2V9Il1gKS5mb3JFYWNoKChlID0+IHsKICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTGlzdC5hZGQocikKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBpOyBlICs9IDEpIHMuc2xpZGVzW3QucmVhbEluZGV4ICsgZV0gJiYgcy5zbGlkZXNbdC5yZWFsSW5kZXggKyBlXS5jbGFzc0xpc3QuYWRkKHIpOwogICAgICAgICAgICBjb25zdCBuID0gdC5wYXJhbXMudGh1bWJzLmF1dG9TY3JvbGxPZmZzZXQsCiAgICAgICAgICAgICAgICBsID0gbiAmJiAhcy5wYXJhbXMubG9vcDsKICAgICAgICAgICAgaWYgKHQucmVhbEluZGV4ICE9PSBzLnJlYWxJbmRleCB8fCBsKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gcy5hY3RpdmVJbmRleDsKICAgICAgICAgICAgICAgIGxldCByLCBvOwogICAgICAgICAgICAgICAgaWYgKHMucGFyYW1zLmxvb3ApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gcy5zbGlkZXMuZmlsdGVyKChlID0+IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpID09PSBgJHt0LnJlYWxJbmRleH1gKSlbMF07CiAgICAgICAgICAgICAgICAgICAgciA9IHMuc2xpZGVzLmluZGV4T2YoZSksIG8gPSB0LmFjdGl2ZUluZGV4ID4gdC5wcmV2aW91c0luZGV4ID8gIm5leHQiIDogInByZXYiCiAgICAgICAgICAgICAgICB9IGVsc2UgciA9IHQucmVhbEluZGV4LCBvID0gciA+IHQucHJldmlvdXNJbmRleCA/ICJuZXh0IiA6ICJwcmV2IjsKICAgICAgICAgICAgICAgIGwgJiYgKHIgKz0gIm5leHQiID09PSBvID8gbiA6IC0xICogbiksIHMudmlzaWJsZVNsaWRlc0luZGV4ZXMgJiYgcy52aXNpYmxlU2xpZGVzSW5kZXhlcy5pbmRleE9mKHIpIDwgMCAmJiAocy5wYXJhbXMuY2VudGVyZWRTbGlkZXMgPyByID0gciA+IGkgPyByIC0gTWF0aC5mbG9vcihhIC8gMikgKyAxIDogciArIE1hdGguZmxvb3IoYSAvIDIpIC0gMSA6IHIgPiBpICYmIHMucGFyYW1zLnNsaWRlc1Blckdyb3VwLCBzLnNsaWRlVG8ociwgZSA/IDAgOiB2b2lkIDApKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHQudGh1bWJzID0gewogICAgICAgICAgICBzd2lwZXI6IG51bGwKICAgICAgICB9LCBpKCJiZWZvcmVJbml0IiwgKCgpID0+IHsKICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgdGh1bWJzOiBlCiAgICAgICAgICAgIH0gPSB0LnBhcmFtczsKICAgICAgICAgICAgaWYgKGUgJiYgZS5zd2lwZXIpCiAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUuc3dpcGVyIHx8IGUuc3dpcGVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gYSgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9ICJzdHJpbmciID09IHR5cGVvZiBlLnN3aXBlciA/IHMucXVlcnlTZWxlY3RvcihlLnN3aXBlcikgOiBlLnN3aXBlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhICYmIGEuc3dpcGVyKSBlLnN3aXBlciA9IGEuc3dpcGVyLCBvKCksIGMoITApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zd2lwZXIgPSBpLmRldGFpbFswXSwgYS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbml0IiwgcyksIG8oKSwgYyghMCksIGUuc3dpcGVyLnVwZGF0ZSgpLCB0LnVwZGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmFkZEV2ZW50TGlzdGVuZXIoImluaXQiLCBzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmRlc3Ryb3llZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSgpIHx8IHJlcXVlc3RBbmltYXRpb25GcmFtZShyKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyKQogICAgICAgICAgICAgICAgfSBlbHNlIG8oKSwgYyghMCkKICAgICAgICB9KSksIGkoInNsaWRlQ2hhbmdlIHVwZGF0ZSByZXNpemUgb2JzZXJ2ZXJVcGRhdGUiLCAoKCkgPT4gewogICAgICAgICAgICBjKCkKICAgICAgICB9KSksIGkoInNldFRyYW5zaXRpb24iLCAoKGUsIHMpID0+IHsKICAgICAgICAgICAgY29uc3QgYSA9IHQudGh1bWJzLnN3aXBlcjsKICAgICAgICAgICAgYSAmJiAhYS5kZXN0cm95ZWQgJiYgYS5zZXRUcmFuc2l0aW9uKHMpCiAgICAgICAgfSkpLCBpKCJiZWZvcmVEZXN0cm95IiwgKCgpID0+IHsKICAgICAgICAgICAgY29uc3QgZSA9IHQudGh1bWJzLnN3aXBlcjsKICAgICAgICAgICAgZSAmJiAhZS5kZXN0cm95ZWQgJiYgbiAmJiBlLmRlc3Ryb3koKQogICAgICAgIH0pKSwgT2JqZWN0LmFzc2lnbih0LnRodW1icywgewogICAgICAgICAgICBpbml0OiBvLAogICAgICAgICAgICB1cGRhdGU6IGMKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBlbWl0OiBhLAogICAgICAgICAgICBvbmNlOiBpCiAgICAgICAgfSA9IGU7CiAgICAgICAgcyh7CiAgICAgICAgICAgIGZyZWVNb2RlOiB7CiAgICAgICAgICAgICAgICBlbmFibGVkOiAhMSwKICAgICAgICAgICAgICAgIG1vbWVudHVtOiAhMCwKICAgICAgICAgICAgICAgIG1vbWVudHVtUmF0aW86IDEsCiAgICAgICAgICAgICAgICBtb21lbnR1bUJvdW5jZTogITAsCiAgICAgICAgICAgICAgICBtb21lbnR1bUJvdW5jZVJhdGlvOiAxLAogICAgICAgICAgICAgICAgbW9tZW50dW1WZWxvY2l0eVJhdGlvOiAxLAogICAgICAgICAgICAgICAgc3RpY2t5OiAhMSwKICAgICAgICAgICAgICAgIG1pbmltdW1WZWxvY2l0eTogLjAyCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgT2JqZWN0LmFzc2lnbih0LCB7CiAgICAgICAgICAgIGZyZWVNb2RlOiB7CiAgICAgICAgICAgICAgICBvblRvdWNoU3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LmdldFRyYW5zbGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIHQuc2V0VHJhbnNsYXRlKGUpLCB0LnNldFRyYW5zaXRpb24oMCksIHQudG91Y2hFdmVudHNEYXRhLnZlbG9jaXRpZXMubGVuZ3RoID0gMCwgdC5mcmVlTW9kZS5vblRvdWNoRW5kKHsKICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvczogdC5ydGwgPyB0LnRyYW5zbGF0ZSA6IC10LnRyYW5zbGF0ZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hFdmVudHNEYXRhOiBlLAogICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVzOiBzCiAgICAgICAgICAgICAgICAgICAgfSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgMCA9PT0gZS52ZWxvY2l0aWVzLmxlbmd0aCAmJiBlLnZlbG9jaXRpZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzW3QuaXNIb3Jpem9udGFsKCkgPyAic3RhcnRYIiA6ICJzdGFydFkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogZS50b3VjaFN0YXJ0VGltZQogICAgICAgICAgICAgICAgICAgIH0pLCBlLnZlbG9jaXRpZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzW3QuaXNIb3Jpem9udGFsKCkgPyAiY3VycmVudFgiIDogImN1cnJlbnRZIl0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGwoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb25Ub3VjaEVuZDogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3M6IHMKICAgICAgICAgICAgICAgICAgICB9ID0gZTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogciwKICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlckVsOiBuLAogICAgICAgICAgICAgICAgICAgICAgICBydGxUcmFuc2xhdGU6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBHcmlkOiBkLAogICAgICAgICAgICAgICAgICAgICAgICB0b3VjaEV2ZW50c0RhdGE6IGMKICAgICAgICAgICAgICAgICAgICB9ID0gdCwgcCA9IGwoKSAtIGMudG91Y2hTdGFydFRpbWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgPCAtdC5taW5UcmFuc2xhdGUoKSkgdC5zbGlkZVRvKHQuYWN0aXZlSW5kZXgpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHMgPiAtdC5tYXhUcmFuc2xhdGUoKSkgdC5zbGlkZXMubGVuZ3RoIDwgZC5sZW5ndGggPyB0LnNsaWRlVG8oZC5sZW5ndGggLSAxKSA6IHQuc2xpZGVUbyh0LnNsaWRlcy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuZnJlZU1vZGUubW9tZW50dW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjLnZlbG9jaXRpZXMubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBjLnZlbG9jaXRpZXMucG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjLnZlbG9jaXRpZXMucG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlLnBvc2l0aW9uIC0gcy5wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUudGltZSAtIHMudGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnZlbG9jaXR5ID0gYSAvIGksIHQudmVsb2NpdHkgLz0gMiwgTWF0aC5hYnModC52ZWxvY2l0eSkgPCByLmZyZWVNb2RlLm1pbmltdW1WZWxvY2l0eSAmJiAodC52ZWxvY2l0eSA9IDApLCAoaSA+IDE1MCB8fCBsKCkgLSBlLnRpbWUgPiAzMDApICYmICh0LnZlbG9jaXR5ID0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0LnZlbG9jaXR5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudmVsb2NpdHkgKj0gci5mcmVlTW9kZS5tb21lbnR1bVZlbG9jaXR5UmF0aW8sIGMudmVsb2NpdGllcy5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSAxZTMgKiByLmZyZWVNb2RlLm1vbWVudHVtUmF0aW87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdC52ZWxvY2l0eSAqIGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcCA9IHQudHJhbnNsYXRlICsgczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gJiYgKHAgPSAtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdSwgbSA9ICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaCA9IDIwICogTWF0aC5hYnModC52ZWxvY2l0eSkgKiByLmZyZWVNb2RlLm1vbWVudHVtQm91bmNlUmF0aW87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwIDwgdC5tYXhUcmFuc2xhdGUoKSkgci5mcmVlTW9kZS5tb21lbnR1bUJvdW5jZSA/IChwICsgdC5tYXhUcmFuc2xhdGUoKSA8IC1oICYmIChwID0gdC5tYXhUcmFuc2xhdGUoKSAtIGgpLCB1ID0gdC5tYXhUcmFuc2xhdGUoKSwgbSA9ICEwLCBjLmFsbG93TW9tZW50dW1Cb3VuY2UgPSAhMCkgOiBwID0gdC5tYXhUcmFuc2xhdGUoKSwgci5sb29wICYmIHIuY2VudGVyZWRTbGlkZXMgJiYgKGYgPSAhMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwID4gdC5taW5UcmFuc2xhdGUoKSkgci5mcmVlTW9kZS5tb21lbnR1bUJvdW5jZSA/IChwIC0gdC5taW5UcmFuc2xhdGUoKSA+IGggJiYgKHAgPSB0Lm1pblRyYW5zbGF0ZSgpICsgaCksIHUgPSB0Lm1pblRyYW5zbGF0ZSgpLCBtID0gITAsIGMuYWxsb3dNb21lbnR1bUJvdW5jZSA9ICEwKSA6IHAgPSB0Lm1pblRyYW5zbGF0ZSgpLCByLmxvb3AgJiYgci5jZW50ZXJlZFNsaWRlcyAmJiAoZiA9ICEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIuZnJlZU1vZGUuc3RpY2t5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBkLmxlbmd0aDsgdCArPSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFt0XSA+IC1wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gTWF0aC5hYnMoZFtlXSAtIHApIDwgTWF0aC5hYnMoZFtlIC0gMV0gLSBwKSB8fCAibmV4dCIgPT09IHQuc3dpcGVEaXJlY3Rpb24gPyBkW2VdIDogZFtlIC0gMV0sIHAgPSAtcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgJiYgaSgidHJhbnNpdGlvbkVuZCIsICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubG9vcEZpeCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCAwICE9PSB0LnZlbG9jaXR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPSBvID8gTWF0aC5hYnMoKC1wIC0gdC50cmFuc2xhdGUpIC8gdC52ZWxvY2l0eSkgOiBNYXRoLmFicygocCAtIHQudHJhbnNsYXRlKSAvIHQudmVsb2NpdHkpLCByLmZyZWVNb2RlLnN0aWNreSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gTWF0aC5hYnMoKG8gPyAtcCA6IHApIC0gdC50cmFuc2xhdGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHQuc2xpZGVzU2l6ZXNHcmlkW3QuYWN0aXZlSW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gcyA8IGEgPyByLnNwZWVkIDogcyA8IDIgKiBhID8gMS41ICogci5zcGVlZCA6IDIuNSAqIHIuc3BlZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuZnJlZU1vZGUuc3RpY2t5KSByZXR1cm4gdm9pZCB0LnNsaWRlVG9DbG9zZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmZyZWVNb2RlLm1vbWVudHVtQm91bmNlICYmIG0gPyAodC51cGRhdGVQcm9ncmVzcyh1KSwgdC5zZXRUcmFuc2l0aW9uKGUpLCB0LnNldFRyYW5zbGF0ZShwKSwgdC50cmFuc2l0aW9uU3RhcnQoITAsIHQuc3dpcGVEaXJlY3Rpb24pLCB0LmFuaW1hdGluZyA9ICEwLCBFKG4sICgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAmJiAhdC5kZXN0cm95ZWQgJiYgYy5hbGxvd01vbWVudHVtQm91bmNlICYmIChhKCJtb21lbnR1bUJvdW5jZSIpLCB0LnNldFRyYW5zaXRpb24oci5zcGVlZCksIHNldFRpbWVvdXQoKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRUcmFuc2xhdGUodSksIEUobiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgJiYgIXQuZGVzdHJveWVkICYmIHQudHJhbnNpdGlvbkVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgOiB0LnZlbG9jaXR5ID8gKGEoIl9mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlIiksIHQudXBkYXRlUHJvZ3Jlc3MocCksIHQuc2V0VHJhbnNpdGlvbihlKSwgdC5zZXRUcmFuc2xhdGUocCksIHQudHJhbnNpdGlvblN0YXJ0KCEwLCB0LnN3aXBlRGlyZWN0aW9uKSwgdC5hbmltYXRpbmcgfHwgKHQuYW5pbWF0aW5nID0gITAsIEUobiwgKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ICYmICF0LmRlc3Ryb3llZCAmJiB0LnRyYW5zaXRpb25FbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKSkgOiB0LnVwZGF0ZVByb2dyZXNzKHApLCB0LnVwZGF0ZUFjdGl2ZUluZGV4KCksIHQudXBkYXRlU2xpZGVzQ2xhc3NlcygpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5mcmVlTW9kZS5zdGlja3kpIHJldHVybiB2b2lkIHQuc2xpZGVUb0Nsb3Nlc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuZnJlZU1vZGUgJiYgYSgiX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UiKQogICAgICAgICAgICAgICAgICAgICAgICB9KCFyLmZyZWVNb2RlLm1vbWVudHVtIHx8IHAgPj0gci5sb25nU3dpcGVzTXMpICYmICh0LnVwZGF0ZVByb2dyZXNzKCksIHQudXBkYXRlQWN0aXZlSW5kZXgoKSwgdC51cGRhdGVTbGlkZXNDbGFzc2VzKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICBsZXQgdCwgcywgYSwgewogICAgICAgICAgICBzd2lwZXI6IGksCiAgICAgICAgICAgIGV4dGVuZFBhcmFtczogcgogICAgICAgIH0gPSBlOwogICAgICAgIHIoewogICAgICAgICAgICBncmlkOiB7CiAgICAgICAgICAgICAgICByb3dzOiAxLAogICAgICAgICAgICAgICAgZmlsbDogImNvbHVtbiIKICAgICAgICAgICAgfQogICAgICAgIH0pLCBpLmdyaWQgPSB7CiAgICAgICAgICAgIGluaXRTbGlkZXM6IGUgPT4gewogICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHIKICAgICAgICAgICAgICAgIH0gPSBpLnBhcmFtcywgewogICAgICAgICAgICAgICAgICAgIHJvd3M6IG4sCiAgICAgICAgICAgICAgICAgICAgZmlsbDogbAogICAgICAgICAgICAgICAgfSA9IGkucGFyYW1zLmdyaWQ7CiAgICAgICAgICAgICAgICBzID0gdCAvIG4sIGEgPSBNYXRoLmZsb29yKGUgLyBuKSwgdCA9IE1hdGguZmxvb3IoZSAvIG4pID09PSBlIC8gbiA/IGUgOiBNYXRoLmNlaWwoZSAvIG4pICogbiwgImF1dG8iICE9PSByICYmICJyb3ciID09PSBsICYmICh0ID0gTWF0aC5tYXgodCwgciAqIG4pKQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVTbGlkZTogKGUsIHIsIG4sIGwpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogbywKICAgICAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IGQKICAgICAgICAgICAgICAgIH0gPSBpLnBhcmFtcywgewogICAgICAgICAgICAgICAgICAgIHJvd3M6IGMsCiAgICAgICAgICAgICAgICAgICAgZmlsbDogcAogICAgICAgICAgICAgICAgfSA9IGkucGFyYW1zLmdyaWQ7CiAgICAgICAgICAgICAgICBsZXQgdSwgbSwgaDsKICAgICAgICAgICAgICAgIGlmICgicm93IiA9PT0gcCAmJiBvID4gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBNYXRoLmZsb29yKGUgLyAobyAqIGMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGUgLSBjICogbyAqIHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwID09PSBzID8gbyA6IE1hdGgubWluKE1hdGguY2VpbCgobiAtIHMgKiBjICogbykgLyBjKSwgbyk7CiAgICAgICAgICAgICAgICAgICAgaCA9IE1hdGguZmxvb3IoYSAvIGkpLCBtID0gYSAtIGggKiBpICsgcyAqIG8sIHUgPSBtICsgaCAqIHQgLyBjLCByLnN0eWxlLm9yZGVyID0gdQogICAgICAgICAgICAgICAgfSBlbHNlICJjb2x1bW4iID09PSBwID8gKG0gPSBNYXRoLmZsb29yKGUgLyBjKSwgaCA9IGUgLSBtICogYywgKG0gPiBhIHx8IG0gPT09IGEgJiYgaCA9PT0gYyAtIDEpICYmIChoICs9IDEsIGggPj0gYyAmJiAoaCA9IDAsIG0gKz0gMSkpKSA6IChoID0gTWF0aC5mbG9vcihlIC8gcyksIG0gPSBlIC0gaCAqIHMpOwogICAgICAgICAgICAgICAgci5zdHlsZVtsKCJtYXJnaW4tdG9wIildID0gMCAhPT0gaCA/IGQgJiYgYCR7ZH1weGAgOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVXcmFwcGVyU2l6ZTogKGUsIHMsIGEpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IHIsCiAgICAgICAgICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6IG4sCiAgICAgICAgICAgICAgICAgICAgcm91bmRMZW5ndGhzOiBsCiAgICAgICAgICAgICAgICB9ID0gaS5wYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICByb3dzOiBvCiAgICAgICAgICAgICAgICB9ID0gaS5wYXJhbXMuZ3JpZDsKICAgICAgICAgICAgICAgIGlmIChpLnZpcnR1YWxTaXplID0gKGUgKyByKSAqIHQsIGkudmlydHVhbFNpemUgPSBNYXRoLmNlaWwoaS52aXJ0dWFsU2l6ZSAvIG8pIC0gciwgaS53cmFwcGVyRWwuc3R5bGVbYSgid2lkdGgiKV0gPSBgJHtpLnZpcnR1YWxTaXplK3J9cHhgLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgcy5sZW5ndGg7IHQgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IHNbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGwgJiYgKGEgPSBNYXRoLmZsb29yKGEpKSwgc1t0XSA8IGkudmlydHVhbFNpemUgKyBzWzBdICYmIGUucHVzaChhKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzLnNwbGljZSgwLCBzLmxlbmd0aCksIHMucHVzaCguLi5lKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdAogICAgICAgIH0gPSBlOwogICAgICAgIE9iamVjdC5hc3NpZ24odCwgewogICAgICAgICAgICBhcHBlbmRTbGlkZTogdGUuYmluZCh0KSwKICAgICAgICAgICAgcHJlcGVuZFNsaWRlOiBzZS5iaW5kKHQpLAogICAgICAgICAgICBhZGRTbGlkZTogYWUuYmluZCh0KSwKICAgICAgICAgICAgcmVtb3ZlU2xpZGU6IGllLmJpbmQodCksCiAgICAgICAgICAgIHJlbW92ZUFsbFNsaWRlczogcmUuYmluZCh0KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBhCiAgICAgICAgfSA9IGU7CiAgICAgICAgcyh7CiAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHsKICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogITEKICAgICAgICAgICAgfQogICAgICAgIH0pLCBuZSh7CiAgICAgICAgICAgIGVmZmVjdDogImZhZGUiLAogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGUKICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgdC5wYXJhbXMuZmFkZUVmZmVjdDsKICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgZS5sZW5ndGg7IHMgKz0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LnNsaWRlc1tzXTsKICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IC1lLnN3aXBlclNsaWRlT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHQucGFyYW1zLnZpcnR1YWxUcmFuc2xhdGUgfHwgKGEgLT0gdC50cmFuc2xhdGUpOwogICAgICAgICAgICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgICAgICAgICAgICB0LmlzSG9yaXpvbnRhbCgpIHx8IChpID0gYSwgYSA9IDApOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0LnBhcmFtcy5mYWRlRWZmZWN0LmNyb3NzRmFkZSA/IE1hdGgubWF4KDEgLSBNYXRoLmFicyhlLnByb2dyZXNzKSwgMCkgOiAxICsgTWF0aC5taW4oTWF0aC5tYXgoZS5wcm9ncmVzcywgLTEpLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGxlKDAsIGUpOwogICAgICAgICAgICAgICAgICAgIG4uc3R5bGUub3BhY2l0eSA9IHIsIG4uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7YX1weCwgJHtpfXB4LCAwcHgpYAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBlID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0LnNsaWRlcy5tYXAoKGUgPT4gaChlKSkpOwogICAgICAgICAgICAgICAgcy5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICB0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2V9bXNgCiAgICAgICAgICAgICAgICB9KSksIG9lKHsKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRWxlbWVudHM6IHMsCiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzOiAhMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb3ZlcndyaXRlUGFyYW1zOiAoKSA9PiAoewogICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMSwKICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiAxLAogICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAsCiAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW46IDAsCiAgICAgICAgICAgICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhdC5wYXJhbXMuY3NzTW9kZQogICAgICAgICAgICB9KQogICAgICAgIH0pCiAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgbGV0IHsKICAgICAgICAgICAgc3dpcGVyOiB0LAogICAgICAgICAgICBleHRlbmRQYXJhbXM6IHMsCiAgICAgICAgICAgIG9uOiBhCiAgICAgICAgfSA9IGU7CiAgICAgICAgcyh7CiAgICAgICAgICAgIGN1YmVFZmZlY3Q6IHsKICAgICAgICAgICAgICAgIHNsaWRlU2hhZG93czogITAsCiAgICAgICAgICAgICAgICBzaGFkb3c6ICEwLAogICAgICAgICAgICAgICAgc2hhZG93T2Zmc2V0OiAyMCwKICAgICAgICAgICAgICAgIHNoYWRvd1NjYWxlOiAuOTQKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGkgPSAoZSwgdCwgcykgPT4gewogICAgICAgICAgICBsZXQgYSA9IHMgPyBlLnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKSA6IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIiksCiAgICAgICAgICAgICAgICBpID0gcyA/IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQiKSA6IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIik7CiAgICAgICAgICAgIGEgfHwgKGEgPSBnKCJkaXYiLCAic3dpcGVyLXNsaWRlLXNoYWRvdy0iICsgKHMgPyAibGVmdCIgOiAidG9wIikpLCBlLmFwcGVuZChhKSksIGkgfHwgKGkgPSBnKCJkaXYiLCAic3dpcGVyLXNsaWRlLXNoYWRvdy0iICsgKHMgPyAicmlnaHQiIDogImJvdHRvbSIpKSwgZS5hcHBlbmQoaSkpLCBhICYmIChhLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1heCgtdCwgMCkpLCBpICYmIChpLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1heCh0LCAwKSkKICAgICAgICB9OwogICAgICAgIG5lKHsKICAgICAgICAgICAgZWZmZWN0OiAiY3ViZSIsCiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgb246IGEsCiAgICAgICAgICAgIHNldFRyYW5zbGF0ZTogKCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgIGVsOiBlLAogICAgICAgICAgICAgICAgICAgIHdyYXBwZXJFbDogcywKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGEsCiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHIsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuLAogICAgICAgICAgICAgICAgICAgIHJ0bFRyYW5zbGF0ZTogbCwKICAgICAgICAgICAgICAgICAgICBzaXplOiBvLAogICAgICAgICAgICAgICAgICAgIGJyb3dzZXI6IGQKICAgICAgICAgICAgICAgIH0gPSB0LCBjID0gdC5wYXJhbXMuY3ViZUVmZmVjdCwgcCA9IHQuaXNIb3Jpem9udGFsKCksIHUgPSB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkOwogICAgICAgICAgICAgICAgbGV0IG0sIGggPSAwOwogICAgICAgICAgICAgICAgYy5zaGFkb3cgJiYgKHAgPyAobSA9IHQuc2xpZGVzRWwucXVlcnlTZWxlY3RvcigiLnN3aXBlci1jdWJlLXNoYWRvdyIpLCBtIHx8IChtID0gZygiZGl2IiwgInN3aXBlci1jdWJlLXNoYWRvdyIpLCB0LnNsaWRlc0VsLmFwcGVuZChtKSksIG0uc3R5bGUuaGVpZ2h0ID0gYCR7cn1weGApIDogKG0gPSBlLnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItY3ViZS1zaGFkb3ciKSwgbSB8fCAobSA9IGcoImRpdiIsICJzd2lwZXItY3ViZS1zaGFkb3ciKSwgZS5hcHBlbmQobSkpKSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMDsgZSA8IGEubGVuZ3RoOyBlICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gYVtlXTsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGU7CiAgICAgICAgICAgICAgICAgICAgdSAmJiAocyA9IHBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXN3aXBlci1zbGlkZS1pbmRleCIpLCAxMCkpOwogICAgICAgICAgICAgICAgICAgIGxldCByID0gOTAgKiBzLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5mbG9vcihyIC8gMzYwKTsKICAgICAgICAgICAgICAgICAgICBsICYmIChyID0gLXIsIG4gPSBNYXRoLmZsb29yKC1yIC8gMzYwKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IE1hdGgubWF4KE1hdGgubWluKHQucHJvZ3Jlc3MsIDEpLCAtMSk7CiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBmID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgcyAlIDQgPT0gMCA/IChtID0gNCAqIC1uICogbywgZyA9IDApIDogKHMgLSAxKSAlIDQgPT0gMCA/IChtID0gMCwgZyA9IDQgKiAtbiAqIG8pIDogKHMgLSAyKSAlIDQgPT0gMCA/IChtID0gbyArIDQgKiBuICogbywgZyA9IG8pIDogKHMgLSAzKSAlIDQgPT0gMCAmJiAobSA9IC1vLCBnID0gMyAqIG8gKyA0ICogbyAqIG4pLCBsICYmIChtID0gLW0pLCBwIHx8IChmID0gbSwgbSA9IDApOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBgcm90YXRlWCgke3A/MDotcn1kZWcpIHJvdGF0ZVkoJHtwP3I6MH1kZWcpIHRyYW5zbGF0ZTNkKCR7bX1weCwgJHtmfXB4LCAke2d9cHgpYDsKICAgICAgICAgICAgICAgICAgICBkIDw9IDEgJiYgZCA+IC0xICYmIChoID0gOTAgKiBzICsgOTAgKiBkLCBsICYmIChoID0gOTAgKiAtcyAtIDkwICogZCkpLCB0LnN0eWxlLnRyYW5zZm9ybSA9IHYsIGMuc2xpZGVTaGFkb3dzICYmIGkodCwgZCwgcCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzLnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IGA1MCUgNTAlIC0ke28vMn1weGAsIHMuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiJdID0gYDUwJSA1MCUgLSR7by8yfXB4YCwgYy5zaGFkb3cpCiAgICAgICAgICAgICAgICAgICAgaWYgKHApIG0uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKDBweCwgJHtyLzIrYy5zaGFkb3dPZmZzZXR9cHgsICR7LXIvMn1weCkgcm90YXRlWCg5MGRlZykgcm90YXRlWigwZGVnKSBzY2FsZSgke2Muc2hhZG93U2NhbGV9KWA7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBNYXRoLmFicyhoKSAtIDkwICogTWF0aC5mbG9vcihNYXRoLmFicyhoKSAvIDkwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAxLjUgLSAoTWF0aC5zaW4oMiAqIGUgKiBNYXRoLlBJIC8gMzYwKSAvIDIgKyBNYXRoLmNvcygyICogZSAqIE1hdGguUEkgLyAzNjApIC8gMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYy5zaGFkb3dTY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjLnNoYWRvd1NjYWxlIC8gdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjLnNoYWRvd09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgbS5zdHlsZS50cmFuc2Zvcm0gPSBgc2NhbGUzZCgke3N9LCAxLCAke2F9KSB0cmFuc2xhdGUzZCgwcHgsICR7bi8yK2l9cHgsICR7LW4vMi9hfXB4KSByb3RhdGVYKC05MGRlZylgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgZiA9IChkLmlzU2FmYXJpIHx8IGQuaXNXZWJWaWV3KSAmJiBkLm5lZWRQZXJzcGVjdGl2ZUZpeCA/IC1vIC8gMiA6IDA7CiAgICAgICAgICAgICAgICBzLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgwcHgsMCwke2Z9cHgpIHJvdGF0ZVgoJHt0LmlzSG9yaXpvbnRhbCgpPzA6aH1kZWcpIHJvdGF0ZVkoJHt0LmlzSG9yaXpvbnRhbCgpPy1oOjB9ZGVnKWAsIHMuc3R5bGUuc2V0UHJvcGVydHkoIi0tc3dpcGVyLWN1YmUtdHJhbnNsYXRlLXoiLCBgJHtmfXB4YCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgZWw6IHMsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiBhCiAgICAgICAgICAgICAgICB9ID0gdDsKICAgICAgICAgICAgICAgIGlmIChhLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2V9bXNgLCB0LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSwgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCIpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYAogICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICB9KSksIHQucGFyYW1zLmN1YmVFZmZlY3Quc2hhZG93ICYmICF0LmlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHMucXVlcnlTZWxlY3RvcigiLnN3aXBlci1jdWJlLXNoYWRvdyIpOwogICAgICAgICAgICAgICAgICAgIHQgJiYgKHQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZX1tc2ApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHJlY3JlYXRlU2hhZG93czogKCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHQuaXNIb3Jpem9udGFsKCk7CiAgICAgICAgICAgICAgICB0LnNsaWRlcy5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gTWF0aC5tYXgoTWF0aC5taW4odC5wcm9ncmVzcywgMSksIC0xKTsKICAgICAgICAgICAgICAgICAgICBpKHQsIHMsIGUpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWZmZWN0UGFyYW1zOiAoKSA9PiB0LnBhcmFtcy5jdWJlRWZmZWN0LAogICAgICAgICAgICBwZXJzcGVjdGl2ZTogKCkgPT4gITAsCiAgICAgICAgICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHsKICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogMSwKICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ICEwLAogICAgICAgICAgICAgICAgcmVzaXN0YW5jZVJhdGlvOiAwLAogICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgICAgICAgICAgICAgY2VudGVyZWRTbGlkZXM6ICExLAogICAgICAgICAgICAgICAgdmlydHVhbFRyYW5zbGF0ZTogITAKICAgICAgICAgICAgfSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICBmbGlwRWZmZWN0OiB7CiAgICAgICAgICAgICAgICBzbGlkZVNoYWRvd3M6ICEwLAogICAgICAgICAgICAgICAgbGltaXRSb3RhdGlvbjogITAKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGkgPSAoZSwgcywgYSkgPT4gewogICAgICAgICAgICBsZXQgaSA9IHQuaXNIb3Jpem9udGFsKCkgPyBlLnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKSA6IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIiksCiAgICAgICAgICAgICAgICByID0gdC5pc0hvcml6b250YWwoKSA/IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQiKSA6IGUucXVlcnlTZWxlY3RvcigiLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIik7CiAgICAgICAgICAgIGkgfHwgKGkgPSBkZSgwLCBlLCB0LmlzSG9yaXpvbnRhbCgpID8gImxlZnQiIDogInRvcCIpKSwgciB8fCAociA9IGRlKDAsIGUsIHQuaXNIb3Jpem9udGFsKCkgPyAicmlnaHQiIDogImJvdHRvbSIpKSwgaSAmJiAoaS5zdHlsZS5vcGFjaXR5ID0gTWF0aC5tYXgoLXMsIDApKSwgciAmJiAoci5zdHlsZS5vcGFjaXR5ID0gTWF0aC5tYXgocywgMCkpCiAgICAgICAgfTsKICAgICAgICBuZSh7CiAgICAgICAgICAgIGVmZmVjdDogImZsaXAiLAogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgcnRsVHJhbnNsYXRlOiBzCiAgICAgICAgICAgICAgICB9ID0gdCwgYSA9IHQucGFyYW1zLmZsaXBFZmZlY3Q7CiAgICAgICAgICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IGUubGVuZ3RoOyByICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZVtyXTsKICAgICAgICAgICAgICAgICAgICBsZXQgbCA9IG4ucHJvZ3Jlc3M7CiAgICAgICAgICAgICAgICAgICAgdC5wYXJhbXMuZmxpcEVmZmVjdC5saW1pdFJvdGF0aW9uICYmIChsID0gTWF0aC5tYXgoTWF0aC5taW4obi5wcm9ncmVzcywgMSksIC0xKSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IG4uc3dpcGVyU2xpZGVPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSAtMTgwICogbCwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0LnBhcmFtcy5jc3NNb2RlID8gLW8gLSB0LnRyYW5zbGF0ZSA6IC1vLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gMDsKICAgICAgICAgICAgICAgICAgICB0LmlzSG9yaXpvbnRhbCgpID8gcyAmJiAoZCA9IC1kKSA6ICh1ID0gcCwgcCA9IDAsIGMgPSAtZCwgZCA9IDApLCBuLnN0eWxlLnpJbmRleCA9IC1NYXRoLmFicyhNYXRoLnJvdW5kKGwpKSArIGUubGVuZ3RoLCBhLnNsaWRlU2hhZG93cyAmJiBpKG4sIGwpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBgdHJhbnNsYXRlM2QoJHtwfXB4LCAke3V9cHgsIDBweCkgcm90YXRlWCgke2N9ZGVnKSByb3RhdGVZKCR7ZH1kZWcpYDsKICAgICAgICAgICAgICAgICAgICBsZSgwLCBuKS5zdHlsZS50cmFuc2Zvcm0gPSBtCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNldFRyYW5zaXRpb246IGUgPT4gewogICAgICAgICAgICAgICAgY29uc3QgcyA9IHQuc2xpZGVzLm1hcCgoZSA9PiBoKGUpKSk7CiAgICAgICAgICAgICAgICBzLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgIHQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZX1tc2AsIHQucXVlcnlTZWxlY3RvckFsbCgiLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCwgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gYCR7ZX1tc2AKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0pKSwgb2UoewogICAgICAgICAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogZSwKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1FbGVtZW50czogcwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVjcmVhdGVTaGFkb3dzOiAoKSA9PiB7CiAgICAgICAgICAgICAgICB0LnBhcmFtcy5mbGlwRWZmZWN0OwogICAgICAgICAgICAgICAgdC5zbGlkZXMuZm9yRWFjaCgoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBlLnByb2dyZXNzOwogICAgICAgICAgICAgICAgICAgIHQucGFyYW1zLmZsaXBFZmZlY3QubGltaXRSb3RhdGlvbiAmJiAocyA9IE1hdGgubWF4KE1hdGgubWluKGUucHJvZ3Jlc3MsIDEpLCAtMSkpLCBpKGUsIHMpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2V0RWZmZWN0UGFyYW1zOiAoKSA9PiB0LnBhcmFtcy5mbGlwRWZmZWN0LAogICAgICAgICAgICBwZXJzcGVjdGl2ZTogKCkgPT4gITAsCiAgICAgICAgICAgIG92ZXJ3cml0ZVBhcmFtczogKCkgPT4gKHsKICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsCiAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogMSwKICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6ICEwLAogICAgICAgICAgICAgICAgc3BhY2VCZXR3ZWVuOiAwLAogICAgICAgICAgICAgICAgdmlydHVhbFRyYW5zbGF0ZTogIXQucGFyYW1zLmNzc01vZGUKICAgICAgICAgICAgfSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICBjb3ZlcmZsb3dFZmZlY3Q6IHsKICAgICAgICAgICAgICAgIHJvdGF0ZTogNTAsCiAgICAgICAgICAgICAgICBzdHJldGNoOiAwLAogICAgICAgICAgICAgICAgZGVwdGg6IDEwMCwKICAgICAgICAgICAgICAgIHNjYWxlOiAxLAogICAgICAgICAgICAgICAgbW9kaWZpZXI6IDEsCiAgICAgICAgICAgICAgICBzbGlkZVNoYWRvd3M6ICEwCiAgICAgICAgICAgIH0KICAgICAgICB9KSwgbmUoewogICAgICAgICAgICBlZmZlY3Q6ICJjb3ZlcmZsb3ciLAogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogZSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHMsCiAgICAgICAgICAgICAgICAgICAgc2xpZGVzOiBhLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1NpemVzR3JpZDogaQogICAgICAgICAgICAgICAgfSA9IHQsIHIgPSB0LnBhcmFtcy5jb3ZlcmZsb3dFZmZlY3QsIG4gPSB0LmlzSG9yaXpvbnRhbCgpLCBsID0gdC50cmFuc2xhdGUsIG8gPSBuID8gZSAvIDIgLSBsIDogcyAvIDIgLSBsLCBkID0gbiA/IHIucm90YXRlIDogLXIucm90YXRlLCBjID0gci5kZXB0aDsKICAgICAgICAgICAgICAgIGZvciAobGV0IGUgPSAwLCB0ID0gYS5sZW5ndGg7IGUgPCB0OyBlICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gYVtlXSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGlbZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAobyAtIHQuc3dpcGVyU2xpZGVPZmZzZXQgLSBzIC8gMikgLyBzLAogICAgICAgICAgICAgICAgICAgICAgICBwID0gImZ1bmN0aW9uIiA9PSB0eXBlb2Ygci5tb2RpZmllciA/IHIubW9kaWZpZXIobCkgOiBsICogci5tb2RpZmllcjsKICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IG4gPyBkICogcCA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuID8gMCA6IGQgKiBwLAogICAgICAgICAgICAgICAgICAgICAgICBoID0gLWMgKiBNYXRoLmFicyhwKSwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHIuc3RyZXRjaDsKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiA9PSB0eXBlb2YgZiAmJiAtMSAhPT0gZi5pbmRleE9mKCIlIikgJiYgKGYgPSBwYXJzZUZsb2F0KHIuc3RyZXRjaCkgLyAxMDAgKiBzKTsKICAgICAgICAgICAgICAgICAgICBsZXQgZyA9IG4gPyAwIDogZiAqIHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBuID8gZiAqIHAgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gMSAtICgxIC0gci5zY2FsZSkgKiBNYXRoLmFicyhwKTsKICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyh2KSA8IC4wMDEgJiYgKHYgPSAwKSwgTWF0aC5hYnMoZykgPCAuMDAxICYmIChnID0gMCksIE1hdGguYWJzKGgpIDwgLjAwMSAmJiAoaCA9IDApLCBNYXRoLmFicyh1KSA8IC4wMDEgJiYgKHUgPSAwKSwgTWF0aC5hYnMobSkgPCAuMDAxICYmIChtID0gMCksIE1hdGguYWJzKHcpIDwgLjAwMSAmJiAodyA9IDApOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBgdHJhbnNsYXRlM2QoJHt2fXB4LCR7Z31weCwke2h9cHgpICByb3RhdGVYKCR7bX1kZWcpIHJvdGF0ZVkoJHt1fWRlZykgc2NhbGUoJHt3fSlgOwogICAgICAgICAgICAgICAgICAgIGlmIChsZSgwLCB0KS5zdHlsZS50cmFuc2Zvcm0gPSBiLCB0LnN0eWxlLnpJbmRleCA9IDEgLSBNYXRoLmFicyhNYXRoLnJvdW5kKHApKSwgci5zbGlkZVNoYWRvd3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSBuID8gdC5xdWVyeVNlbGVjdG9yKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IikgOiB0LnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IG4gPyB0LnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IikgOiB0LnF1ZXJ5U2VsZWN0b3IoIi5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSIpOwogICAgICAgICAgICAgICAgICAgICAgICBlIHx8IChlID0gZGUoMCwgdCwgbiA/ICJsZWZ0IiA6ICJ0b3AiKSksIHMgfHwgKHMgPSBkZSgwLCB0LCBuID8gInJpZ2h0IiA6ICJib3R0b20iKSksIGUgJiYgKGUuc3R5bGUub3BhY2l0eSA9IHAgPiAwID8gcCA6IDApLCBzICYmIChzLnN0eWxlLm9wYWNpdHkgPSAtcCA+IDAgPyAtcCA6IDApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiBlID0+IHsKICAgICAgICAgICAgICAgIHQuc2xpZGVzLm1hcCgoZSA9PiBoKGUpKSkuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgdC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYCwgdC5xdWVyeVNlbGVjdG9yQWxsKCIuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQiKS5mb3JFYWNoKCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYAogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAoKSA9PiAhMCwKICAgICAgICAgICAgb3ZlcndyaXRlUGFyYW1zOiAoKSA9PiAoewogICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAKICAgICAgICAgICAgfSkKICAgICAgICB9KQogICAgfSwgZnVuY3Rpb24oZSkgewogICAgICAgIGxldCB7CiAgICAgICAgICAgIHN3aXBlcjogdCwKICAgICAgICAgICAgZXh0ZW5kUGFyYW1zOiBzLAogICAgICAgICAgICBvbjogYQogICAgICAgIH0gPSBlOwogICAgICAgIHMoewogICAgICAgICAgICBjcmVhdGl2ZUVmZmVjdDogewogICAgICAgICAgICAgICAgbGltaXRQcm9ncmVzczogMSwKICAgICAgICAgICAgICAgIHNoYWRvd1BlclByb2dyZXNzOiAhMSwKICAgICAgICAgICAgICAgIHByb2dyZXNzTXVsdGlwbGllcjogMSwKICAgICAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAhMCwKICAgICAgICAgICAgICAgIHByZXY6IHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICByb3RhdGU6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLAogICAgICAgICAgICAgICAgICAgIHNjYWxlOiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmV4dDogewogICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IGkgPSBlID0+ICJzdHJpbmciID09IHR5cGVvZiBlID8gZSA6IGAke2V9cHhgOwogICAgICAgIG5lKHsKICAgICAgICAgICAgZWZmZWN0OiAiY3JlYXRpdmUiLAogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgd3JhcHBlckVsOiBzLAogICAgICAgICAgICAgICAgICAgIHNsaWRlc1NpemVzR3JpZDogYQogICAgICAgICAgICAgICAgfSA9IHQsIHIgPSB0LnBhcmFtcy5jcmVhdGl2ZUVmZmVjdCwgewogICAgICAgICAgICAgICAgICAgIHByb2dyZXNzTXVsdGlwbGllcjogbgogICAgICAgICAgICAgICAgfSA9IHIsIGwgPSB0LnBhcmFtcy5jZW50ZXJlZFNsaWRlczsKICAgICAgICAgICAgICAgIGlmIChsKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGFbMF0gLyAyIC0gdC5wYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgcy5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWChjYWxjKDUwJSAtICR7ZX1weCkpYAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBlLmxlbmd0aDsgcyArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGVbc10sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBhLnByb2dyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gTWF0aC5taW4oTWF0aC5tYXgoYS5wcm9ncmVzcywgLXIubGltaXRQcm9ncmVzcyksIHIubGltaXRQcm9ncmVzcyk7CiAgICAgICAgICAgICAgICAgICAgbGV0IGMgPSBkOwogICAgICAgICAgICAgICAgICAgIGwgfHwgKGMgPSBNYXRoLm1pbihNYXRoLm1heChhLm9yaWdpbmFsUHJvZ3Jlc3MsIC1yLmxpbWl0UHJvZ3Jlc3MpLCByLmxpbWl0UHJvZ3Jlc3MpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gYS5zd2lwZXJTbGlkZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IFt0LnBhcmFtcy5jc3NNb2RlID8gLXAgLSB0LnRyYW5zbGF0ZSA6IC1wLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IFswLCAwLCAwXTsKICAgICAgICAgICAgICAgICAgICBsZXQgaCA9ICExOwogICAgICAgICAgICAgICAgICAgIHQuaXNIb3Jpem9udGFsKCkgfHwgKHVbMV0gPSB1WzBdLCB1WzBdID0gMCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogWzAsIDAsIDBdLAogICAgICAgICAgICAgICAgICAgICAgICByb3RhdGU6IFswLCAwLCAwXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGQgPCAwID8gKGYgPSByLm5leHQsIGggPSAhMCkgOiBkID4gMCAmJiAoZiA9IHIucHJldiwgaCA9ICEwKSwgdS5mb3JFYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB1W3RdID0gYGNhbGMoJHtlfXB4ICsgKCR7aShmLnRyYW5zbGF0ZVt0XSl9ICogJHtNYXRoLmFicyhkKm4pfSkpYAogICAgICAgICAgICAgICAgICAgIH0pKSwgbS5mb3JFYWNoKCgoZSwgdCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBtW3RdID0gZi5yb3RhdGVbdF0gKiBNYXRoLmFicyhkICogbikKICAgICAgICAgICAgICAgICAgICB9KSksIGEuc3R5bGUuekluZGV4ID0gLU1hdGguYWJzKE1hdGgucm91bmQobykpICsgZS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZyA9IHUuam9pbigiLCAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGByb3RhdGVYKCR7bVswXX1kZWcpIHJvdGF0ZVkoJHttWzFdfWRlZykgcm90YXRlWigke21bMl19ZGVnKWAsCiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBjIDwgMCA/IGBzY2FsZSgkezErKDEtZi5zY2FsZSkqYypufSlgIDogYHNjYWxlKCR7MS0oMS1mLnNjYWxlKSpjKm59KWAsCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjIDwgMCA/IDEgKyAoMSAtIGYub3BhY2l0eSkgKiBjICogbiA6IDEgLSAoMSAtIGYub3BhY2l0eSkgKiBjICogbiwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGB0cmFuc2xhdGUzZCgke2d9KSAke3Z9ICR7d31gOwogICAgICAgICAgICAgICAgICAgIGlmIChoICYmIGYuc2hhZG93IHx8ICFoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlID0gYS5xdWVyeVNlbGVjdG9yKCIuc3dpcGVyLXNsaWRlLXNoYWRvdyIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUgJiYgZi5zaGFkb3cgJiYgKGUgPSBkZSgwLCBhKSksIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSByLnNoYWRvd1BlclByb2dyZXNzID8gZCAqICgxIC8gci5saW1pdFByb2dyZXNzKSA6IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1pbihNYXRoLm1heChNYXRoLmFicyh0KSwgMCksIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgRSA9IGxlKDAsIGEpOwogICAgICAgICAgICAgICAgICAgIEUuc3R5bGUudHJhbnNmb3JtID0geSwgRS5zdHlsZS5vcGFjaXR5ID0gYiwgZi5vcmlnaW4gJiYgKEUuc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gYikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5zbGlkZXMubWFwKChlID0+IGgoZSkpKTsKICAgICAgICAgICAgICAgIHMuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgdC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYCwgdC5xdWVyeVNlbGVjdG9yQWxsKCIuc3dpcGVyLXNsaWRlLXNoYWRvdyIpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2V9bXNgCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksIG9lKHsKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRWxlbWVudHM6IHMsCiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzOiAhMAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcGVyc3BlY3RpdmU6ICgpID0+IHQucGFyYW1zLmNyZWF0aXZlRWZmZWN0LnBlcnNwZWN0aXZlLAogICAgICAgICAgICBvdmVyd3JpdGVQYXJhbXM6ICgpID0+ICh7CiAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiAhMCwKICAgICAgICAgICAgICAgIHZpcnR1YWxUcmFuc2xhdGU6ICF0LnBhcmFtcy5jc3NNb2RlCiAgICAgICAgICAgIH0pCiAgICAgICAgfSkKICAgIH0sIGZ1bmN0aW9uKGUpIHsKICAgICAgICBsZXQgewogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIGV4dGVuZFBhcmFtczogcywKICAgICAgICAgICAgb246IGEKICAgICAgICB9ID0gZTsKICAgICAgICBzKHsKICAgICAgICAgICAgY2FyZHNFZmZlY3Q6IHsKICAgICAgICAgICAgICAgIHNsaWRlU2hhZG93czogITAsCiAgICAgICAgICAgICAgICByb3RhdGU6ICEwLAogICAgICAgICAgICAgICAgcGVyU2xpZGVSb3RhdGU6IDIsCiAgICAgICAgICAgICAgICBwZXJTbGlkZU9mZnNldDogOAogICAgICAgICAgICB9CiAgICAgICAgfSksIG5lKHsKICAgICAgICAgICAgZWZmZWN0OiAiY2FyZHMiLAogICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgIG9uOiBhLAogICAgICAgICAgICBzZXRUcmFuc2xhdGU6ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICBzbGlkZXM6IGUsCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IHMKICAgICAgICAgICAgICAgIH0gPSB0LCBhID0gdC5wYXJhbXMuY2FyZHNFZmZlY3QsIHsKICAgICAgICAgICAgICAgICAgICBzdGFydFRyYW5zbGF0ZTogaSwKICAgICAgICAgICAgICAgICAgICBpc1RvdWNoZWQ6IHIKICAgICAgICAgICAgICAgIH0gPSB0LnRvdWNoRXZlbnRzRGF0YSwgbiA9IHQudHJhbnNsYXRlOwogICAgICAgICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBlLmxlbmd0aDsgbCArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IGVbbF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvLnByb2dyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gTWF0aC5taW4oTWF0aC5tYXgoZCwgLTQpLCA0KTsKICAgICAgICAgICAgICAgICAgICBsZXQgcCA9IG8uc3dpcGVyU2xpZGVPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdC5wYXJhbXMuY2VudGVyZWRTbGlkZXMgJiYgIXQucGFyYW1zLmNzc01vZGUgJiYgKHQud3JhcHBlckVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7dC5taW5UcmFuc2xhdGUoKX1weClgKSwgdC5wYXJhbXMuY2VudGVyZWRTbGlkZXMgJiYgdC5wYXJhbXMuY3NzTW9kZSAmJiAocCAtPSBlWzBdLnN3aXBlclNsaWRlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IHQucGFyYW1zLmNzc01vZGUgPyAtcCAtIHQudHJhbnNsYXRlIDogLXAsCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAwOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGggPSAtMTAwICogTWF0aC5hYnMoYyk7CiAgICAgICAgICAgICAgICAgICAgbGV0IGYgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICBnID0gLWEucGVyU2xpZGVSb3RhdGUgKiBjLAogICAgICAgICAgICAgICAgICAgICAgICB2ID0gYS5wZXJTbGlkZU9mZnNldCAtIC43NSAqIE1hdGguYWJzKGMpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0LnZpcnR1YWwgJiYgdC5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gdC52aXJ0dWFsLmZyb20gKyBsIDogbCwKICAgICAgICAgICAgICAgICAgICAgICAgYiA9ICh3ID09PSBzIHx8IHcgPT09IHMgLSAxKSAmJiBjID4gMCAmJiBjIDwgMSAmJiAociB8fCB0LnBhcmFtcy5jc3NNb2RlKSAmJiBuIDwgaSwKICAgICAgICAgICAgICAgICAgICAgICAgeSA9ICh3ID09PSBzIHx8IHcgPT09IHMgKyAxKSAmJiBjIDwgMCAmJiBjID4gLTEgJiYgKHIgfHwgdC5wYXJhbXMuY3NzTW9kZSkgJiYgbiA+IGk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGIgfHwgeSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gKDEgLSBNYXRoLmFicygoTWF0aC5hYnMoYykgLSAuNSkgLyAuNSkpICoqIC41OwogICAgICAgICAgICAgICAgICAgICAgICBnICs9IC0yOCAqIGMgKiBlLCBmICs9IC0uNSAqIGUsIHYgKz0gOTYgKiBlLCBtID0gLTI1ICogZSAqIE1hdGguYWJzKGMpICsgIiUiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh1ID0gYyA8IDAgPyBgY2FsYygke3V9cHggKyAoJHt2Kk1hdGguYWJzKGMpfSUpKWAgOiBjID4gMCA/IGBjYWxjKCR7dX1weCArICgtJHt2Kk1hdGguYWJzKGMpfSUpKWAgOiBgJHt1fXB4YCwgIXQuaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB1LCB1ID0gZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjb25zdCBFID0gYyA8IDAgPyAiIiArICgxICsgKDEgLSBmKSAqIGMpIDogIiIgKyAoMSAtICgxIC0gZikgKiBjKSwKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGBcbiAgICAgICAgdHJhbnNsYXRlM2QoJHt1fSwgJHttfSwgJHtofXB4KVxuICAgICAgICByb3RhdGVaKCR7YS5yb3RhdGU/ZzowfWRlZylcbiAgICAgICAgc2NhbGUoJHtFfSlcbiAgICAgIGA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuc2xpZGVTaGFkb3dzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlID0gby5xdWVyeVNlbGVjdG9yKCIuc3dpcGVyLXNsaWRlLXNoYWRvdyIpOwogICAgICAgICAgICAgICAgICAgICAgICBlIHx8IChlID0gZGUoMCwgbykpLCBlICYmIChlLnN0eWxlLm9wYWNpdHkgPSBNYXRoLm1pbihNYXRoLm1heCgoTWF0aC5hYnMoYykgLSAuNSkgLyAuNSwgMCksIDEpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBvLnN0eWxlLnpJbmRleCA9IC1NYXRoLmFicyhNYXRoLnJvdW5kKGQpKSArIGUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGxlKDAsIG8pLnN0eWxlLnRyYW5zZm9ybSA9IHgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0VHJhbnNpdGlvbjogZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5zbGlkZXMubWFwKChlID0+IGgoZSkpKTsKICAgICAgICAgICAgICAgIHMuZm9yRWFjaCgodCA9PiB7CiAgICAgICAgICAgICAgICAgICAgdC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtlfW1zYCwgdC5xdWVyeVNlbGVjdG9yQWxsKCIuc3dpcGVyLXNsaWRlLXNoYWRvdyIpLmZvckVhY2goKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2V9bXNgCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9KSksIG9lKHsKICAgICAgICAgICAgICAgICAgICBzd2lwZXI6IHQsCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IGUsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRWxlbWVudHM6IHMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHBlcnNwZWN0aXZlOiAoKSA9PiAhMCwKICAgICAgICAgICAgb3ZlcndyaXRlUGFyYW1zOiAoKSA9PiAoewogICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogITAsCiAgICAgICAgICAgICAgICB2aXJ0dWFsVHJhbnNsYXRlOiAhdC5wYXJhbXMuY3NzTW9kZQogICAgICAgICAgICB9KQogICAgICAgIH0pCiAgICB9XTsKICAgIHJldHVybiBRLnVzZShjZSksIFEKfSkpOwovLyMgc291cmNlTWFwcGluZ1VSTD1zd2lwZXItYnVuZGxlLm1pbi5qcy5tYXA="}},"time_used":33,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/slider/slider_shape01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.040Z","timestamp":1785159465040,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/slider/slider_shape01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 6461\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":6461,"size_decoded":6726,"mime_type":"image/png","magic":"PNG image data, 269 x 397, 8-bit/color RGBA, non-interlaced","md5":"78f725f5441c8f5581c7c125cfc1be35","sha1":"5225ba951ffdb7b1040f8b98d4a3bc555c2118d8","sha256":"9ae91a706db65953930da0d2da1bac7b2b5a69327dc63c6cd7fe12214741d88a","sha512":"9f8edac1dab51a89e78009b41dac691fc38a20c7e40d53cbf63efae7b79c801e04fb15d171f7e821f2ac0118dba5965e0f2e996320fa4dd4b90f02813fa5543d","ssdeep":"192:+SQamMWEvg9VbJi+kOBw3rYk5iBZqJBVu2kkKZJyqB+cpPglA:hCMBvgdRkuw3rBJzakKZJWKPiA","tlshash":"4ad1ae905ea7067af0ae5cfbf09f53e49370a2768147865061a43ac71b1cab334c60f2","first_seen":"2025-04-12T15:34:26.810578Z","last_seen":"2026-07-27T13:38:47.766936Z","times_seen":20,"resource_available":false,"data":"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"}},"time_used":56,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/testimonial_shape06.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.085Z","timestamp":1785159465085,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/testimonial_shape06.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 7537\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":7537,"size_decoded":7802,"mime_type":"image/png","magic":"PNG image data, 313 x 311, 8-bit/color RGBA, non-interlaced","md5":"1c19564ec8b2d83c811ffc7236d4f6fe","sha1":"dcd217fbbd8030cba28f0a9357ade887d6c2292e","sha256":"675191659d4510305261d6c37f14c4243402202b393b0dc9bebcc8527158abab","sha512":"dc3340e217f66d797592d5645b1d77329be883fc9847b633a31c0b5028e1ef5382f16cf837aad13aabbde7f2bbacdfdffc3eb059b391ea291368b6e95250614f","ssdeep":"192:kS42RbTZOL/SUz4g/2b0Zt0fMLCgFuOBEBZi81O110UMBrRE61A6sse/:jptTy/SUzZ+0Zt0fcCggiBRwW61hNG","tlshash":"fcf19e915f1921c78ddcdc7e0829e960a86f5656c202bc966340f92d532186ecfda293","first_seen":"2025-10-13T02:30:07.731717Z","last_seen":"2026-07-27T13:38:47.774453Z","times_seen":11,"resource_available":false,"data":"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"}},"time_used":64,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":57,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/slider/slider_bg02.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.709Z","timestamp":1785159465709,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/slider/slider_bg02.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 153862\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":153862,"size_decoded":154130,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 1920x826, components 3","md5":"6856d6ac39f9cfe14d03c4fb0c9c11a7","sha1":"f385ad223941567474fe925acb9d746b0204383f","sha256":"bee96c6f5ffc3843ecb1827670dbc50fd483ed620c874ebb41f15f18ba8ecfcf","sha512":"82b0c1b8661050cce927200a25b0c4fb8732a0764da9cefbb7c0c60655486b6252e790c6b9459b277520d41356030184c92d9f9217033998218cf2230982bdf6","ssdeep":"3072:UGP6V2HosI9YDaZR5IQPQy2ipX6ZPWvmpklP+gqManVQ3dP3bRmaXe:PPRHoxiDsDI9fixK5pklLqMaVUdP3bER","tlshash":"28e3122b375abaa3e7dd9cf5caf406c468254da0ee8711ebcb0030487c8952511b7cbe","first_seen":"2025-08-12T03:58:17.886489Z","last_seen":"2026-07-27T13:38:47.785562Z","times_seen":17,"resource_available":false,"data":"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"}},"time_used":57,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":29,"receive":28,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/scroll-lock.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.017Z","timestamp":1785159465017,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/scroll-lock.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 3640\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":21417,"size_decoded":3877,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (506)","md5":"2475c790379a97954d1dbe8f0c1f23c0","sha1":"4839ffa2aef004d11b1ea03a080efe2e50512d94","sha256":"7faa43d34db21507c48a4625aafbe9db7e3f5b0928a46e999c2c60161d5b970c","sha512":"e322cfda1b24fcc1f9829a7426c3ec636ae0d6310b3ffc781f75651cbc022a4eaba5747e3a167b06158a4861cdd38e4f37fe686933f967543802936a003a5f8f","ssdeep":"384:njErQSRcB+Txiwolr7XI2MmdUQUWQwee7/m0bXNDKa/SjbLi:jErHcYTxiwolr7XI2MmdUQUWQwee7/x9","tlshash":"42a2ff9e75f23471968bb074d86faa09b136009f1a59de103d0c6b759f0cd3c62b2f9a","first_seen":"2026-07-27T07:42:30.787778Z","last_seen":"2026-07-27T13:38:47.770234Z","times_seen":3,"resource_available":true,"data":"ISBmdW5jdGlvbihlLCB0KSB7CiAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAib2JqZWN0IiA9PSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgPSB0KCkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbXSwgdCkgOiAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IGV4cG9ydHMuc2Nyb2xsTG9jayA9IHQoKSA6IGUuc2Nyb2xsTG9jayA9IHQoKQp9KHRoaXMsIGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKGwpIHsKICAgICAgICB2YXIgciA9IHt9OwoKICAgICAgICBmdW5jdGlvbiBvKGUpIHsKICAgICAgICAgICAgaWYgKHJbZV0pIHJldHVybiByW2VdLmV4cG9ydHM7CiAgICAgICAgICAgIHZhciB0ID0gcltlXSA9IHsKICAgICAgICAgICAgICAgIGk6IGUsCiAgICAgICAgICAgICAgICBsOiAhMSwKICAgICAgICAgICAgICAgIGV4cG9ydHM6IHt9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJldHVybiBsW2VdLmNhbGwodC5leHBvcnRzLCB0LCB0LmV4cG9ydHMsIG8pLCB0LmwgPSAhMCwgdC5leHBvcnRzCiAgICAgICAgfQogICAgICAgIHJldHVybiBvLm0gPSBsLCBvLmMgPSByLCBvLmQgPSBmdW5jdGlvbihlLCB0LCBsKSB7CiAgICAgICAgICAgIG8ubyhlLCB0KSB8fCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdCwgewogICAgICAgICAgICAgICAgZW51bWVyYWJsZTogITAsCiAgICAgICAgICAgICAgICBnZXQ6IGwKICAgICAgICAgICAgfSkKICAgICAgICB9LCBvLnIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsKICAgICAgICAgICAgICAgIHZhbHVlOiAiTW9kdWxlIgogICAgICAgICAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICJfX2VzTW9kdWxlIiwgewogICAgICAgICAgICAgICAgdmFsdWU6ICEwCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgby50ID0gZnVuY3Rpb24odCwgZSkgewogICAgICAgICAgICBpZiAoMSAmIGUgJiYgKHQgPSBvKHQpKSwgOCAmIGUpIHJldHVybiB0OwogICAgICAgICAgICBpZiAoNCAmIGUgJiYgIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdCAmJiB0Ll9fZXNNb2R1bGUpIHJldHVybiB0OwogICAgICAgICAgICB2YXIgbCA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgICAgICAgIGlmIChvLnIobCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCAiZGVmYXVsdCIsIHsKICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdAogICAgICAgICAgICAgICAgfSksIDIgJiBlICYmICJzdHJpbmciICE9IHR5cGVvZiB0KQogICAgICAgICAgICAgICAgZm9yICh2YXIgciBpbiB0KSBvLmQobCwgciwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2VdCiAgICAgICAgICAgICAgICB9LmJpbmQobnVsbCwgcikpOwogICAgICAgICAgICByZXR1cm4gbAogICAgICAgIH0sIG8ubiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHQgPSBlICYmIGUuX19lc01vZHVsZSA/IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUuZGVmYXVsdAogICAgICAgICAgICB9IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gby5kKHQsICJhIiwgdCksIHQKICAgICAgICB9LCBvLm8gPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwgdCkKICAgICAgICB9LCBvLnAgPSAiIiwgbyhvLnMgPSAwKQogICAgfShbZnVuY3Rpb24oZSwgdCwgbCkgewogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBsLnIodCk7CiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlKSA/IGUgOiBbZV0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlIGluc3RhbmNlb2YgTm9kZQogICAgICAgICAgICB9LAogICAgICAgICAgICBvID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgaWYgKGUgJiYgdCkgewogICAgICAgICAgICAgICAgICAgIGUgPSBlIGluc3RhbmNlb2YgTm9kZUxpc3QgPyBlIDogW2VdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgZS5sZW5ndGggJiYgITAgIT09IHQoZVtsXSwgbCwgZS5sZW5ndGgpOyBsKyspOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBuID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoIltzY3JvbGwtbG9ja10gIi5jb25jYXQoZSkpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuIGUuam9pbigiLCAiKQogICAgICAgICAgICB9LAogICAgICAgICAgICBjID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBbXTsKICAgICAgICAgICAgICAgIHJldHVybiBvKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5wdXNoKGUpCiAgICAgICAgICAgICAgICB9KSwgdAogICAgICAgICAgICB9LAogICAgICAgICAgICBoID0gZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgICAgICAgdmFyIGwgPSAhKDIgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdKSB8fCBhcmd1bWVudHNbMl0sCiAgICAgICAgICAgICAgICAgICAgciA9IDMgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogZG9jdW1lbnQ7CiAgICAgICAgICAgICAgICBpZiAobCAmJiAtMSAhPT0gYyhyLnF1ZXJ5U2VsZWN0b3JBbGwodCkpLmluZGV4T2YoZSkpIHJldHVybiBlOwogICAgICAgICAgICAgICAgZm9yICg7CiAgICAgICAgICAgICAgICAgICAgKGUgPSBlLnBhcmVudEVsZW1lbnQpICYmIC0xID09PSBjKHIucXVlcnlTZWxlY3RvckFsbCh0KSkuaW5kZXhPZihlKTspOwogICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdiA9IGZ1bmN0aW9uKGUsIHQpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiBkb2N1bWVudDsKICAgICAgICAgICAgICAgIHJldHVybiAtMSAhPT0gYyhsLnF1ZXJ5U2VsZWN0b3JBbGwodCkpLmluZGV4T2YoZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gImhpZGRlbiIgPT09IGdldENvbXB1dGVkU3R5bGUoZSkub3ZlcmZsb3cKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gISFpKGUpIHx8IGUuc2Nyb2xsVG9wIDw9IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkoZSkpIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGUuc2Nyb2xsVG9wOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnNjcm9sbEhlaWdodCA8PSB0ICsgZS5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgeSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gISFpKGUpIHx8IGUuc2Nyb2xsTGVmdCA8PSAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpKGUpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBlLnNjcm9sbExlZnQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc2Nyb2xsV2lkdGggPD0gdCArIGUub2Zmc2V0V2lkdGgKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICBsLmQodCwgImRpc2FibGVQYWdlU2Nyb2xsIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgfSksIGwuZCh0LCAiZW5hYmxlUGFnZVNjcm9sbCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gcwogICAgICAgIH0pLCBsLmQodCwgImdldFNjcm9sbFN0YXRlIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgfSksIGwuZCh0LCAiY2xlYXJRdWV1ZVNjcm9sbExvY2tzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgfSksIGwuZCh0LCAiZ2V0VGFyZ2V0U2Nyb2xsQmFyV2lkdGgiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGcKICAgICAgICB9KSwgbC5kKHQsICJnZXRDdXJyZW50VGFyZ2V0U2Nyb2xsQmFyV2lkdGgiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEEKICAgICAgICB9KSwgbC5kKHQsICJnZXRQYWdlU2Nyb2xsQmFyV2lkdGgiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEcKICAgICAgICB9KSwgbC5kKHQsICJnZXRDdXJyZW50UGFnZVNjcm9sbEJhcldpZHRoIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBUCiAgICAgICAgfSksIGwuZCh0LCAiYWRkU2Nyb2xsYWJsZVRhcmdldCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gTAogICAgICAgIH0pLCBsLmQodCwgInJlbW92ZVNjcm9sbGFibGVUYXJnZXQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIFcKICAgICAgICB9KSwgbC5kKHQsICJhZGRTY3JvbGxhYmxlU2VsZWN0b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHgKICAgICAgICB9KSwgbC5kKHQsICJyZW1vdmVTY3JvbGxhYmxlU2VsZWN0b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEYKICAgICAgICB9KSwgbC5kKHQsICJhZGRMb2NrYWJsZVRhcmdldCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gWQogICAgICAgIH0pLCBsLmQodCwgImFkZExvY2thYmxlU2VsZWN0b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIEUKICAgICAgICB9KSwgbC5kKHQsICJzZXRGaWxsR2FwTWV0aG9kIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBPCiAgICAgICAgfSksIGwuZCh0LCAiYWRkRmlsbEdhcFRhcmdldCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gUAogICAgICAgIH0pLCBsLmQodCwgInJlbW92ZUZpbGxHYXBUYXJnZXQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICB9KSwgbC5kKHQsICJhZGRGaWxsR2FwU2VsZWN0b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHEKICAgICAgICB9KSwgbC5kKHQsICJyZW1vdmVGaWxsR2FwU2VsZWN0b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIE0KICAgICAgICB9KSwgbC5kKHQsICJyZWZpbGxHYXBzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBOCiAgICAgICAgfSk7CiAgICAgICAgdmFyIHUgPSBbInBhZGRpbmciLCAibWFyZ2luIiwgIndpZHRoIiwgIm1heC13aWR0aCIsICJub25lIl0sCiAgICAgICAgICAgIHcgPSB7CiAgICAgICAgICAgICAgICBzY3JvbGw6ICEwLAogICAgICAgICAgICAgICAgcXVldWU6IDAsCiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlU2VsZWN0b3JzOiBbIltkYXRhLXNjcm9sbC1sb2NrLXNjcm9sbGFibGVdIl0sCiAgICAgICAgICAgICAgICBsb2NrYWJsZVNlbGVjdG9yczogWyJib2R5IiwgIltkYXRhLXNjcm9sbC1sb2NrLWxvY2thYmxlXSJdLAogICAgICAgICAgICAgICAgZmlsbEdhcFNlbGVjdG9yczogWyJib2R5IiwgIltkYXRhLXNjcm9sbC1sb2NrLWZpbGwtZ2FwXSIsICJbZGF0YS1zY3JvbGwtbG9jay1sb2NrYWJsZV0iXSwKICAgICAgICAgICAgICAgIGZpbGxHYXBNZXRob2Q6IHVbMF0sCiAgICAgICAgICAgICAgICBzdGFydFRvdWNoWTogMCwKICAgICAgICAgICAgICAgIHN0YXJ0VG91Y2hYOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB3LnF1ZXVlIDw9IDAgJiYgKHcuc2Nyb2xsID0gITEsIEIoKSwgWCgpKSwgTChlKSwgdy5xdWV1ZSsrCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHMgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAwIDwgdy5xdWV1ZSAmJiB3LnF1ZXVlLS0sIHcucXVldWUgPD0gMCAmJiAody5zY3JvbGwgPSAhMCwgQygpLCBRKCkpLCBXKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGYgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB3LnNjcm9sbAogICAgICAgICAgICB9LAogICAgICAgICAgICBwID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3LnF1ZXVlID0gMAogICAgICAgICAgICB9LAogICAgICAgICAgICBnID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiBhcmd1bWVudHNbMV07CiAgICAgICAgICAgICAgICBpZiAoYShlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBsID0gZS5zdHlsZS5vdmVyZmxvd1k7CiAgICAgICAgICAgICAgICAgICAgdCA/IGYoKSB8fCAoZS5zdHlsZS5vdmVyZmxvd1kgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1vdmVyZmxvdy15LXByb3BlcnR5IikpIDogZS5zdHlsZS5vdmVyZmxvd1kgPSAic2Nyb2xsIjsKICAgICAgICAgICAgICAgICAgICB2YXIgciA9IEEoZSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUuc3R5bGUub3ZlcmZsb3dZID0gbCwgcgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChhKGUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT09IGRvY3VtZW50LmJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCAtIHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBlLnN0eWxlLmJvcmRlckxlZnRXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aDsKICAgICAgICAgICAgICAgICAgICBlLnN0eWxlLmJvcmRlckxlZnRXaWR0aCA9ICIwcHgiLCBlLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSAiMHB4IjsKICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGUub2Zmc2V0V2lkdGggLSBlLmNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLnN0eWxlLmJvcmRlckxlZnRXaWR0aCA9IGwsIGUuc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCA9IHIsIG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gMCA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gJiYgYXJndW1lbnRzWzBdOwogICAgICAgICAgICAgICAgcmV0dXJuIGcoZG9jdW1lbnQuYm9keSwgZSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIEEoZG9jdW1lbnQuYm9keSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUgJiYgcihlKS5tYXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIG8oZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBhKGUpID8gZS5zZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stc2Nyb2xsYWJsZSIsICIiKSA6IG4oJyInLmNvbmNhdChlLCAnIiBpcyBub3QgYSBFbGVtZW50LicpKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBXID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZSAmJiByKGUpLm1hcChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbyhlLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEoZSkgPyBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zY3JvbGxhYmxlIikgOiBuKCciJy5jb25jYXQoZSwgJyIgaXMgbm90IGEgRWxlbWVudC4nKSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgeCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUgJiYgcihlKS5tYXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHcuc2Nyb2xsYWJsZVNlbGVjdG9ycy5wdXNoKGUpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBGID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZSAmJiByKGUpLm1hcChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdy5zY3JvbGxhYmxlU2VsZWN0b3JzID0gdy5zY3JvbGxhYmxlU2VsZWN0b3JzLmZpbHRlcihmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlICE9PSB0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlICYmIChyKGUpLm1hcChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbyhlLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEoZSkgPyBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1sb2NrYWJsZSIsICIiKSA6IG4oJyInLmNvbmNhdChlLCAnIiBpcyBub3QgYSBFbGVtZW50LicpKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgZigpIHx8IEIoKSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUgJiYgKHIoZSkubWFwKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB3LmxvY2thYmxlU2VsZWN0b3JzLnB1c2goZSkKICAgICAgICAgICAgICAgIH0pLCBmKCkgfHwgQigpLCBxKGUpKQogICAgICAgICAgICB9LAogICAgICAgICAgICBPID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGUpCiAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSB1LmluZGV4T2YoZSkpIHcuZmlsbEdhcE1ldGhvZCA9IGUsIE4oKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB1LmpvaW4oIiwgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIG4oJyInLmNvbmNhdChlLCAnIiBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSFcbkF2YWlsYWJsZSBmaWxsIGdhcCBtZXRob2RzOiAnKS5jb25jYXQodCwgIi4iKSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFAgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlICYmIHIoZSkubWFwKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBvKGUsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYShlKSA/IChlLnNldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1maWxsLWdhcCIsICIiKSwgdy5zY3JvbGwgfHwgSChlKSkgOiBuKCciJy5jb25jYXQoZSwgJyIgaXMgbm90IGEgRWxlbWVudC4nKSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUgJiYgcihlKS5tYXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIG8oZSwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBhKGUpID8gKGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLWZpbGwtZ2FwIiksIHcuc2Nyb2xsIHx8IEkoZSkpIDogbignIicuY29uY2F0KGUsICciIGlzIG5vdCBhIEVsZW1lbnQuJykpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHEgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBlICYmIHIoZSkubWFwKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAtMSA9PT0gdy5maWxsR2FwU2VsZWN0b3JzLmluZGV4T2YoZSkgJiYgKHcuZmlsbEdhcFNlbGVjdG9ycy5wdXNoKGUpLCB3LnNjcm9sbCB8fCBEKGUpKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUgJiYgcihlKS5tYXAoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgIHcuZmlsbEdhcFNlbGVjdG9ycyA9IHcuZmlsbEdhcFNlbGVjdG9ycy5maWx0ZXIoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAhPT0gdAogICAgICAgICAgICAgICAgICAgIH0pLCB3LnNjcm9sbCB8fCB6KHQpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBOID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3LnNjcm9sbCB8fCBYKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBiKHcubG9ja2FibGVTZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgSyhlKQogICAgICAgICAgICB9LAogICAgICAgICAgICBDID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGIody5sb2NrYWJsZVNlbGVjdG9ycyk7CiAgICAgICAgICAgICAgICBSKGUpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEsgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSk7CiAgICAgICAgICAgICAgICBvKHQsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBVKGUpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBSID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpOwogICAgICAgICAgICAgICAgbyh0LCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgXyhlKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVSA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChhKGUpICYmICJ0cnVlIiAhPT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stbG9ja2VkIikpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpOwogICAgICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLXNhdmVkLW92ZXJmbG93LXktcHJvcGVydHkiLCB0Lm92ZXJmbG93WSksIGUuc2V0QXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLXNhdmVkLWlubGluZS1vdmVyZmxvdy1wcm9wZXJ0eSIsIGUuc3R5bGUub3ZlcmZsb3cpLCBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1pbmxpbmUtb3ZlcmZsb3cteS1wcm9wZXJ0eSIsIGUuc3R5bGUub3ZlcmZsb3dZKSwgZS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iLCBlLnNldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1sb2NrZWQiLCAidHJ1ZSIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF8gPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBhKGUpICYmICJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stbG9ja2VkIikgJiYgKGUuc3R5bGUub3ZlcmZsb3cgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1pbmxpbmUtb3ZlcmZsb3ctcHJvcGVydHkiKSwgZS5zdHlsZS5vdmVyZmxvd1kgPSBlLmdldEF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1pbmxpbmUtb3ZlcmZsb3cteS1wcm9wZXJ0eSIpLCBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1vdmVyZmxvdy1wcm9wZXJ0eSIpLCBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1zYXZlZC1pbmxpbmUtb3ZlcmZsb3ctcHJvcGVydHkiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stc2F2ZWQtaW5saW5lLW92ZXJmbG93LXktcHJvcGVydHkiKSwgZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stbG9ja2VkIikpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHcuZmlsbEdhcFNlbGVjdG9ycy5tYXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIEQoZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHcuZmlsbEdhcFNlbGVjdG9ycy5tYXAoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIHooZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSksCiAgICAgICAgICAgICAgICAgICAgbCA9IC0xICE9PSB3LmxvY2thYmxlU2VsZWN0b3JzLmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICBvKHQsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBIKGUsIGwpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICBIID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgdmFyIHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSAmJiBhcmd1bWVudHNbMV07CiAgICAgICAgICAgICAgICBpZiAoYShlKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBsOwogICAgICAgICAgICAgICAgICAgIGlmICgiIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stbG9ja2FibGUiKSB8fCB0KSBsID0gZyhlLCAhMCk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gaChlLCBiKHcubG9ja2FibGVTZWxlY3RvcnMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGcociwgITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICJ0cnVlIiA9PT0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stZmlsbGVkLWdhcCIpICYmIEkoZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5zZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stZmlsbGVkLWdhcCIsICJ0cnVlIiksIGUuc2V0QXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLWN1cnJlbnQtZmlsbC1nYXAtbWV0aG9kIiwgdy5maWxsR2FwTWV0aG9kKSwgIm1hcmdpbiIgPT09IHcuZmlsbEdhcE1ldGhvZCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IHBhcnNlRmxvYXQoby5tYXJnaW5SaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGUubWFyZ2luUmlnaHQgPSAiIi5jb25jYXQobiArIGwsICJweCIpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgid2lkdGgiID09PSB3LmZpbGxHYXBNZXRob2QpIGUuc3R5bGUud2lkdGggPSAiY2FsYygxMDAlIC0gIi5jb25jYXQobCwgInB4KSIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJtYXgtd2lkdGgiID09PSB3LmZpbGxHYXBNZXRob2QpIGUuc3R5bGUubWF4V2lkdGggPSAiY2FsYygxMDAlIC0gIi5jb25jYXQobCwgInB4KSIpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJwYWRkaW5nIiA9PT0gdy5maWxsR2FwTWV0aG9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gcGFyc2VGbG9hdChvLnBhZGRpbmdSaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3R5bGUucGFkZGluZ1JpZ2h0ID0gIiIuY29uY2F0KGMgKyBsLCAicHgiKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgeiA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKTsKICAgICAgICAgICAgICAgIG8odCwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIEkoZSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEkgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoYShlKSAmJiAidHJ1ZSIgPT09IGUuZ2V0QXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLWZpbGxlZC1nYXAiKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gZS5nZXRBdHRyaWJ1dGUoImRhdGEtc2Nyb2xsLWxvY2stY3VycmVudC1maWxsLWdhcC1tZXRob2QiKTsKICAgICAgICAgICAgICAgICAgICBlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zY3JvbGwtbG9jay1maWxsZWQtZ2FwIiksIGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXNjcm9sbC1sb2NrLWN1cnJlbnQtZmlsbC1nYXAtbWV0aG9kIiksICJtYXJnaW4iID09PSB0ID8gZS5zdHlsZS5tYXJnaW5SaWdodCA9ICIiIDogIndpZHRoIiA9PT0gdCA/IGUuc3R5bGUud2lkdGggPSAiIiA6ICJtYXgtd2lkdGgiID09PSB0ID8gZS5zdHlsZS5tYXhXaWR0aCA9ICIiIDogInBhZGRpbmciID09PSB0ICYmIChlLnN0eWxlLnBhZGRpbmdSaWdodCA9ICIiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiB3aW5kb3cgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgTigpCiAgICAgICAgfSksICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdy5zY3JvbGwgfHwgKHcuc3RhcnRUb3VjaFkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSwgdy5zdGFydFRvdWNoWCA9IGUudG91Y2hlc1swXS5jbGllbnRYKQogICAgICAgIH0pLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBmdW5jdGlvbihuKSB7CiAgICAgICAgICAgIGlmICghdy5zY3JvbGwpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdy5zdGFydFRvdWNoWSwKICAgICAgICAgICAgICAgICAgICB0ID0gdy5zdGFydFRvdWNoWCwKICAgICAgICAgICAgICAgICAgICBsID0gbi50b3VjaGVzWzBdLmNsaWVudFksCiAgICAgICAgICAgICAgICAgICAgciA9IG4udG91Y2hlc1swXS5jbGllbnRYOwogICAgICAgICAgICAgICAgaWYgKG4udG91Y2hlcy5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBiKHcuc2Nyb2xsYWJsZVNlbGVjdG9ycyksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlIDwgbCwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGwgPCBlLAogICAgICAgICAgICAgICAgICAgICAgICB1ID0gdCA8IHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSByIDwgdCwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUgKyAzIDwgbCwKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGwgPCBlIC0gMywKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQgKyAzIDwgciwKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHIgPCB0IC0gMzsKICAgICAgICAgICAgICAgICAgICAhIGZ1bmN0aW9uIGUodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IDEgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdICYmIGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gaCh0LCBjLCAhMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodih0LCAnaW5wdXRbdHlwZT0icmFuZ2UiXScpKSByZXR1cm4gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCB8fCB2KHQsICd0ZXh0YXJlYSwgW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJykgJiYgaCh0LCBjKSB8fCB2KHQsIGMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5KHQpICYmIGsodCkgPyAoYSAmJiBtKHQpIHx8IGkgJiYgUyh0KSkgJiYgKG8gPSAhMCkgOiBtKHQpICYmIFModCkgPyAodSAmJiB5KHQpIHx8IGQgJiYgayh0KSkgJiYgKG8gPSAhMCkgOiAocyAmJiBtKHQpIHx8IGYgJiYgUyh0KSB8fCBwICYmIHkodCkgfHwgZyAmJiBrKHQpKSAmJiAobyA9ICEwKSwgbyAmJiAociA/IGUociwgITApIDogbi5jYW5jZWxhYmxlICYmIG4ucHJldmVudERlZmF1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBlKHIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmNhbmNlbGFibGUgJiYgbi5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfShuLnRhcmdldCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgICAgcGFzc2l2ZTogITEKICAgICAgICB9KSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHcuc2Nyb2xsIHx8ICh3LnN0YXJ0VG91Y2hZID0gMCwgdy5zdGFydFRvdWNoWCA9IDApCiAgICAgICAgfSkpOwogICAgICAgIHZhciBKID0gewogICAgICAgICAgICAgICAgaGlkZTogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIG4oJyJoaWRlIiBpcyBkZXByZWNhdGVkISBVc2UgImRpc2FibGVQYWdlU2Nyb2xsIiBpbnN0ZWFkLiBcbiBodHRwczovL2dpdGh1Yi5jb20vRkwzTktFWS9zY3JvbGwtbG9jayNkaXNhYmxlcGFnZXNjcm9sbHNjcm9sbGFibGV0YXJnZXQnKSwgZChlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBuKCcic2hvdyIgaXMgZGVwcmVjYXRlZCEgVXNlICJlbmFibGVQYWdlU2Nyb2xsIiBpbnN0ZWFkLiBcbiBodHRwczovL2dpdGh1Yi5jb20vRkwzTktFWS9zY3JvbGwtbG9jayNlbmFibGVwYWdlc2Nyb2xsc2Nyb2xsYWJsZXRhcmdldCcpLCBzKGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbignInRvZ2dsZSIgaXMgZGVwcmVjYXRlZCEgRG8gbm90IHVzZSBpdC4nKSwgZigpID8gZCgpIDogcyhlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldFN0YXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbignImdldFN0YXRlIiBpcyBkZXByZWNhdGVkISBVc2UgImdldFNjcm9sbFN0YXRlIiBpbnN0ZWFkLiBcbiBodHRwczovL2dpdGh1Yi5jb20vRkwzTktFWS9zY3JvbGwtbG9jayNnZXRzY3JvbGxzdGF0ZScpLCBmKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4oJyJnZXRXaWR0aCIgaXMgZGVwcmVjYXRlZCEgVXNlICJnZXRQYWdlU2Nyb2xsQmFyV2lkdGgiIGluc3RlYWQuIFxuIGh0dHBzOi8vZ2l0aHViLmNvbS9GTDNOS0VZL3Njcm9sbC1sb2NrI2dldHBhZ2VzY3JvbGxiYXJ3aWR0aCcpLCBHKCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRDdXJyZW50V2lkdGg6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuKCciZ2V0Q3VycmVudFdpZHRoIiBpcyBkZXByZWNhdGVkISBVc2UgImdldEN1cnJlbnRQYWdlU2Nyb2xsQmFyV2lkdGgiIGluc3RlYWQuIFxuIGh0dHBzOi8vZ2l0aHViLmNvbS9GTDNOS0VZL3Njcm9sbC1sb2NrI2dldGN1cnJlbnRwYWdlc2Nyb2xsYmFyd2lkdGgnKSwgVCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0U2Nyb2xsYWJsZVRhcmdldHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBuKCcic2V0U2Nyb2xsYWJsZVRhcmdldHMiIGlzIGRlcHJlY2F0ZWQhIFVzZSAiYWRkU2Nyb2xsYWJsZVRhcmdldCIgaW5zdGVhZC4gXG4gaHR0cHM6Ly9naXRodWIuY29tL0ZMM05LRVkvc2Nyb2xsLWxvY2sjYWRkc2Nyb2xsYWJsZXRhcmdldHNjcm9sbGFibGV0YXJnZXQnKSwgTChlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldEZpbGxHYXBTZWxlY3RvcnM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBuKCcic2V0RmlsbEdhcFNlbGVjdG9ycyIgaXMgZGVwcmVjYXRlZCEgVXNlICJhZGRGaWxsR2FwU2VsZWN0b3IiIGluc3RlYWQuIFxuIGh0dHBzOi8vZ2l0aHViLmNvbS9GTDNOS0VZL3Njcm9sbC1sb2NrI2FkZGZpbGxnYXBzZWxlY3RvcmZpbGxnYXBzZWxlY3RvcicpLCBxKGUpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0RmlsbEdhcFRhcmdldHM6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBuKCcic2V0RmlsbEdhcFRhcmdldHMiIGlzIGRlcHJlY2F0ZWQhIFVzZSAiYWRkRmlsbEdhcFRhcmdldCIgaW5zdGVhZC4gXG4gaHR0cHM6Ly9naXRodWIuY29tL0ZMM05LRVkvc2Nyb2xsLWxvY2sjYWRkZmlsbGdhcHRhcmdldGZpbGxnYXB0YXJnZXQnKSwgUChlKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNsZWFyUXVldWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG4oJyJjbGVhclF1ZXVlIiBpcyBkZXByZWNhdGVkISBVc2UgImNsZWFyUXVldWVTY3JvbGxMb2NrcyIgaW5zdGVhZC4gXG4gaHR0cHM6Ly9naXRodWIuY29tL0ZMM05LRVkvc2Nyb2xsLWxvY2sjY2xlYXJxdWV1ZXNjcm9sbGxvY2tzJyksIHAoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBWID0gZnVuY3Rpb24obykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IG51bGwgIT0gYXJndW1lbnRzW2VdID8gYXJndW1lbnRzW2VdIDoge30sCiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBPYmplY3Qua2V5cyhuKTsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iID09IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICh0ID0gdC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCBlKS5lbnVtZXJhYmxlCiAgICAgICAgICAgICAgICAgICAgfSkpKSwgdC5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQsIGwsIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBvLCByID0gbltsID0gZV0sIGwgaW4gdCA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiAhMAogICAgICAgICAgICAgICAgICAgICAgICB9KSA6IHRbbF0gPSByCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvCiAgICAgICAgICAgIH0oewogICAgICAgICAgICAgICAgZGlzYWJsZVBhZ2VTY3JvbGw6IGQsCiAgICAgICAgICAgICAgICBlbmFibGVQYWdlU2Nyb2xsOiBzLAogICAgICAgICAgICAgICAgZ2V0U2Nyb2xsU3RhdGU6IGYsCiAgICAgICAgICAgICAgICBjbGVhclF1ZXVlU2Nyb2xsTG9ja3M6IHAsCiAgICAgICAgICAgICAgICBnZXRUYXJnZXRTY3JvbGxCYXJXaWR0aDogZywKICAgICAgICAgICAgICAgIGdldEN1cnJlbnRUYXJnZXRTY3JvbGxCYXJXaWR0aDogQSwKICAgICAgICAgICAgICAgIGdldFBhZ2VTY3JvbGxCYXJXaWR0aDogRywKICAgICAgICAgICAgICAgIGdldEN1cnJlbnRQYWdlU2Nyb2xsQmFyV2lkdGg6IFQsCiAgICAgICAgICAgICAgICBhZGRTY3JvbGxhYmxlU2VsZWN0b3I6IHgsCiAgICAgICAgICAgICAgICByZW1vdmVTY3JvbGxhYmxlU2VsZWN0b3I6IEYsCiAgICAgICAgICAgICAgICBhZGRTY3JvbGxhYmxlVGFyZ2V0OiBMLAogICAgICAgICAgICAgICAgcmVtb3ZlU2Nyb2xsYWJsZVRhcmdldDogVywKICAgICAgICAgICAgICAgIGFkZExvY2thYmxlU2VsZWN0b3I6IEUsCiAgICAgICAgICAgICAgICBhZGRMb2NrYWJsZVRhcmdldDogWSwKICAgICAgICAgICAgICAgIGFkZEZpbGxHYXBTZWxlY3RvcjogcSwKICAgICAgICAgICAgICAgIHJlbW92ZUZpbGxHYXBTZWxlY3RvcjogTSwKICAgICAgICAgICAgICAgIGFkZEZpbGxHYXBUYXJnZXQ6IFAsCiAgICAgICAgICAgICAgICByZW1vdmVGaWxsR2FwVGFyZ2V0OiBqLAogICAgICAgICAgICAgICAgc2V0RmlsbEdhcE1ldGhvZDogTywKICAgICAgICAgICAgICAgIHJlZmlsbEdhcHM6IE4sCiAgICAgICAgICAgICAgICBfc3RhdGU6IHcKICAgICAgICAgICAgfSwgSik7CiAgICAgICAgdC5kZWZhdWx0ID0gVgogICAgfV0pLmRlZmF1bHQKfSk7"}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_about_img.jpg","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.043Z","timestamp":1785159465043,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_about_img.jpg HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/jpeg\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 22094\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":22094,"size_decoded":22361,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 421x513, components 3","md5":"a2afab228e30ded68a21a5687eebc337","sha1":"c8aec64265d4f86586d783b96f71a62b2ae7f87f","sha256":"838b54e41b93d84d1de831b38e052a3ef472b9d82a5c60c9843be78e84615445","sha512":"17586d93a08fda4336e2db9ab4735ed383fea8774a3e93fa9240cd10a1ba30d785eb735bcba45d4008a1cdc78107dc5c3472dce57a15cf26305fdd2560a419c1","ssdeep":"384:uI2AfPepzqgRebsbJN7GVCol5AGthXeoETmpDiOwl+8Ze7nJZMF5eEFbamHrhz:uI2Auwx3VC6AGfvpiOeoJZ7Uugh","tlshash":"4ba2d0fa83586303810d723c9d950336d7e5e58081ccfee76db7ad91b4929e1af27144","first_seen":"2025-08-04T11:51:21.623968Z","last_seen":"2026-07-27T13:38:47.801488Z","times_seen":13,"resource_available":false,"data":"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"}},"time_used":52,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":24,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_choose_shape02.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.061Z","timestamp":1785159465061,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_choose_shape02.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 29110\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":29110,"size_decoded":29376,"mime_type":"image/png","magic":"PNG image data, 1092 x 247, 8-bit/color RGBA, non-interlaced","md5":"38f166a60a73909ba05ac95fdd45b7ae","sha1":"06ae3dc04e67561cbe77c5532d90f2eb76170d53","sha256":"7076d001d0b928bd38815f7c156df0ad54d0582d8ffc83596df40c47c4eb10e4","sha512":"1aec258f9aab6240064e626cc20825e155a5c08ffcd3a19af05f3c2abec57e2b94aa1525e1c046b2711a3f4f2f16e8fbfe31d09cd435d59da2102fdb6a224d37","ssdeep":"768:NnmGKYZpww26nJ1aywGZFiWS5xV7r1oybEjvRwCyT:RmUx26nJ1a3Gut5bPyOhT","tlshash":"61d2d0e4f2dabe8dc3198678c74d9a56be363d3555222691539402388f1f2e4f522a33","first_seen":"2025-04-12T15:34:26.819592Z","last_seen":"2026-07-27T13:38:47.76366Z","times_seen":10,"resource_available":false,"data":"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"}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":64,"receive":19,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"cdn.gtranslate.net/flags/svg/en-us.svg","fqdn":"cdn.gtranslate.net","domain":"gtranslate.net","tld":"net"},"ip":{"addr":"104.26.12.42","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.800Z","timestamp":1785159465800,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"gtranslate.net","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 25 Jun 2026 02:04:42 GMT","end":"Wed, 23 Sep 2026 03:04:28 GMT"},"fingerprint":{"sha1":"7E:41:C7:FB:AD:E5:FE:5D:B3:02:94:54:88:D4:EE:DD:EA:46:BC:9C","sha256":"0F:62:03:25:71:9E:01:C5:E5:A6:FD:62:89:4B:D6:28:CC:04:66:24:A5:08:2F:E1:17:68:AA:E7:51:AA:E9:A3"}}},"request":{"raw":"GET /flags/svg/en-us.svg HTTP/1.1\r\nHost: cdn.gtranslate.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\ncontent-type: image/svg+xml\r\nserver: cloudflare\r\nlast-modified: Fri, 16 Dec 2022 23:34:33 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nvary: accept-encoding\r\nexpires: Thu, 01 Jul 2027 04:15:11 GMT\r\ncache-control: max-age=31536000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=3k8nb%2BFv1p9fgGEg3vV2U5MGCM7q6Rk2%2BRXqte64xjSjtcggq0jNSjl5bAIk48ibV1zIxctdhITcKXHeOyVGRpll2%2FjpI4wnbLoIQ0FlSmVlcTXCz2%2FNJ2xiJJrIsWRpHYT9sA%3D%3D\"}]}\r\nage: 2280154\r\ncf-cache-status: HIT\r\netag: W/\"639d0089-17c0\"\r\ncontent-encoding: br\r\ncf-ray: a21c0a65492ab28a-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":6080,"size_decoded":1738,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"fd1db9b9606bef828892eae52f30a642","sha1":"2fc22e2636c912d135e456c841656e93ecbfa394","sha256":"1c64c14fa68916dba409ddf0e38ca5dc8bd262b959a5814ecb6667096b35efa5","sha512":"8f54327e0e9a3a85d935e89817d86426f59d7c15f6723ffff7047cc72a407c41d2046bd9f6c58648aa57c3aa870947008fe47de86a219126dfd0f53a5ac9d2d0","ssdeep":"24:t414AhNMMJtMMaKKKKK+51KKKK+kG/GBlIQs9rBvyIrEnxn9rVIvoLMd3+FxUxvH:C4AhSkmC0DdavymqV+","tlshash":"7ac125fab7b0a0c57a4b9a119733db1fb95b245c1575d706f002f69d82aa232c44fe38","first_seen":"2023-05-07T22:36:46Z","last_seen":"2026-08-04T04:20:20.101263Z","times_seen":5371,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNDgwIj48ZGVzYz5UaGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIGZsYWcsIHByb2R1Y2VkIGJ5IERhbmllbCBNY1JhZTwvZGVzYz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjY3IiBkPSJNMCAwaDY4Mi42N3Y1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcGF0aD0idXJsKCNhKSIgdHJhbnNmb3JtPSJzY2FsZSguOTM3NSkiPjxnIHN0cm9rZS13aWR0aD0iMXB0Ij48cGF0aCBkPSJNMCAwaDk3Mi44MXYzOS4zODVIMHptMCA3OC43N2g5NzIuODF2MzkuMzg1SDB6bTAgNzguNzdoOTcyLjgxdjM5LjM4NUgwem0wIDc4Ljc3aDk3Mi44MXYzOS4zODVIMHptMCA3OC43N2g5NzIuODF2MzkuMzg1SDB6bTAgNzguNzdoOTcyLjgxdjM5LjM4NUgwem0wIDc4Ljc3aDk3Mi44MXYzOS4zODVIMHoiIGZpbGw9IiNiZDNkNDQiLz48cGF0aCBkPSJNMCAzOS4zODVoOTcyLjgxVjc4Ljc3SDB6bTAgNzguNzdoOTcyLjgxdjM5LjM4NUgwem0wIDc4Ljc3aDk3Mi44MXYzOS4zODVIMHptMCA3OC43N2g5NzIuODF2MzkuMzg1SDB6bTAgNzguNzdoOTcyLjgxdjM5LjM4NUgwem0wIDc4Ljc3aDk3Mi44MXYzOS4zODVIMHoiIGZpbGw9IiNmZmYiLz48L2c+PHBhdGggZmlsbD0iIzE5MmY1ZCIgZD0iTTAgMGgzODkuMTJ2Mjc1LjY5SDB6Ii8+PHBhdGggZD0iTTMyLjQyNyAxMS44bDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjktOS4yNy02LjczNS05LjI2NyA2LjczNCAzLjU0LTEwLjg5Ny05LjI3LTYuNzM0aDExLjQ1OHptNjQuODUzIDBsMy41NCAxMC44OTZoMTEuNDZsLTkuMjcgNi43MzUgMy41NCAxMC45LTkuMjctNi43MzUtOS4yNjggNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNEg5My43NHptNjQuODU2IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuOS05LjI2OC02LjczNS05LjI3IDYuNzM0IDMuNTQtMTAuODk3LTkuMjY4LTYuNzM0aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTZoMTEuNDU3bC05LjI3IDYuNzM1IDMuNTQgMTAuOS05LjI2Ny02LjczNS05LjI3IDYuNzM0IDMuNTQtMTAuODk3LTkuMjctNi43MzRoMTEuNDZ6bTY0Ljg1NSAwbDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0NCAxMC45LTkuMjctNi43MzUtOS4yNjggNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNGgxMS40NTh6bTY0Ljg1NSAwbDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjktOS4yNjgtNi43MzUtOS4yNyA2LjczNCAzLjU0Mi0xMC44OTctOS4yNy02LjczNGgxMS40NTh6TTY0Ljg1NSAzOS4zN2wzLjU0IDEwLjg5NmgxMS40NThMNzAuNTgzIDU3bDMuNTQyIDEwLjg5Ny05LjI3LTYuNzM0LTkuMjcgNi43MzRMNTkuMTI1IDU3bC05LjI2Ny02LjczNGgxMS40NTh6bTY0Ljg1MiAwbDMuNTQgMTAuODk2aDExLjQ1N0wxMzUuNDM0IDU3bDMuNTQgMTAuODk3LTkuMjY3LTYuNzM0LTkuMjcgNi43MzRMMTIzLjk3NyA1N2wtOS4yNy02LjczNGgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDU4TDIwMC4yOSA1N2wzLjU0IDEwLjg5Ny05LjI3LTYuNzM0LTkuMjY3IDYuNzM0TDE4OC44MzMgNTdsLTkuMjctNi43MzRoMTEuNDU4em02NC44NTUgMGwzLjU0IDEwLjg5NmgxMS40NThMMjY1LjE0NSA1N2wzLjU0IDEwLjg5Ny05LjI2OC02LjczNC05LjI3IDYuNzM0TDI1My42OSA1N2wtOS4yNy02LjczNGgxMS40NTh6bTY0Ljg1MiAwbDMuNTQgMTAuODk2aDExLjQ1NEwzMjkuOTk0IDU3bDMuNTQgMTAuODk3LTkuMjY1LTYuNzM0LTkuMjcgNi43MzRMMzE4LjU0IDU3bC05LjI3LTYuNzM0aDExLjQ1OHpNMzIuNDI0IDY2Ljk0bDMuNTQgMTAuODk1aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjg5Ni05LjI3LTYuNzM0LTkuMjY3IDYuNzM0IDMuNTQtMTAuODk2LTkuMjctNi43MzVoMTEuNDU4em02NC44NTMgMGwzLjU0IDEwLjg5NWgxMS40NmwtOS4yNyA2LjczNSAzLjU0IDEwLjg5Ni05LjI3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTYtOS4yNy02LjczNWgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTVoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuODk2LTkuMjY3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTYtOS4yNjgtNi43MzVoMTEuNDU4em02NC44NTIgMGwzLjU0IDEwLjg5NWgxMS40NTdsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNjctNi43MzQtOS4yNyA2LjczNCAzLjU0LTEwLjg5Ni05LjI3LTYuNzM1aDExLjQ2em02NC44NTUgMGwzLjU0IDEwLjg5NWgxMS40NThsLTkuMjcgNi43MzUgMy41NDIgMTAuODk2LTkuMjctNi43MzQtOS4yNjggNi43MzQgMy41NC0xMC44OTYtOS4yNy02LjczNUgyODguM3ptNjQuODU1IDBsMy41NCAxMC44OTVoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuODk2LTkuMjY4LTYuNzM0LTkuMjcgNi43MzQgMy41NDItMTAuODk2LTkuMjctNi43MzVoMTEuNDU3ek02NC44NTUgOTQuNTA3bDMuNTQgMTAuODk3aDExLjQ1OGwtOS4yNyA2LjczNCAzLjU0MiAxMC44OTYtOS4yNy02LjczNC05LjI3IDYuNzM0IDMuNTQtMTAuODk3LTkuMjY4LTYuNzM1aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTdoMTEuNDU3bC05LjI3IDYuNzM0IDMuNTQgMTAuODk2LTkuMjY3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNWgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTdoMTEuNDU4bC05LjI3IDYuNzM0IDMuNTQgMTAuODk2LTkuMjctNi43MzQtOS4yNjcgNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNWgxMS40NTh6bTY0Ljg1NSAwbDMuNTQgMTAuODk3aDExLjQ1OGwtOS4yNyA2LjczNCAzLjU0IDEwLjg5Ni05LjI2OC02LjczNC05LjI3IDYuNzM0IDMuNTQyLTEwLjg5Ny05LjI3LTYuNzM1aDExLjQ1NXptNjQuODUyIDBsMy41NCAxMC44OTdoMTEuNDU0bC05LjI3IDYuNzM0IDMuNTQgMTAuODk2LTkuMjY3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNWgxMS40NTh6bS0yOTEuODQ1IDI3LjU3bDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjg5NS05LjI3LTYuNzM0LTkuMjY3IDYuNzMzIDMuNTQtMTAuODk2LTkuMjctNi43MzZoMTEuNDU4em02NC44NTMgMGwzLjU0IDEwLjg5NmgxMS40NmwtOS4yNyA2LjczNSAzLjU0IDEwLjg5NS05LjI3LTYuNzM0LTkuMjcgNi43MzMgMy41NC0xMC44OTYtOS4yNy02LjczNmgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuODk1LTkuMjY3LTYuNzM0LTkuMjcgNi43MzMgMy41NC0xMC44OTYtOS4yNjgtNi43MzZoMTEuNDU4em02NC44NTIgMGwzLjU0IDEwLjg5NmgxMS40NTdsLTkuMjcgNi43MzUgMy41NCAxMC44OTUtOS4yNjctNi43MzQtOS4yNyA2LjczMyAzLjU0LTEwLjg5Ni05LjI3LTYuNzM2aDExLjQ2em02NC44NTUgMGwzLjU0IDEwLjg5NmgxMS40NThsLTkuMjcgNi43MzUgMy41NDIgMTAuODk1LTkuMjctNi43MzQtOS4yNjggNi43MzMgMy41NC0xMC44OTYtOS4yNy02LjczNkgyODguM3ptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuODk1LTkuMjY4LTYuNzM0LTkuMjcgNi43MzMgMy41NDItMTAuODk2LTkuMjctNi43MzZoMTEuNDU3em0tMjkxLjg0MyAyNy41N2wzLjU0IDEwLjg5Nkg3OS44NWwtOS4yNyA2LjczNCAzLjU0MiAxMC44OTctOS4yNy02LjczNC05LjI3IDYuNzM1IDMuNTQtMTAuODk3LTkuMjY4LTYuNzM0aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTZIMTQ0LjdsLTkuMjcgNi43MzQgMy41NCAxMC44OTctOS4yNjYtNi43MzQtOS4yNyA2LjczNSAzLjU0LTEwLjg5Ny05LjI3LTYuNzM0aDExLjQ2em02NC44NTUgMGwzLjU0IDEwLjg5NmgxMS40NmwtOS4yNyA2LjczNCAzLjU0IDEwLjg5Ny05LjI3LTYuNzM0LTkuMjcgNi43MzUgMy41NC0xMC44OTctOS4yNy02LjczNGgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM0IDMuNTQgMTAuODk3LTkuMjY4LTYuNzM0LTkuMjcgNi43MzUgMy41NDItMTAuODk3LTkuMjctNi43MzRoMTEuNDU3em02NC44NTIgMGwzLjU0IDEwLjg5NmgxMS40NTZsLTkuMjcgNi43MzQgMy41NCAxMC44OTctOS4yNjctNi43MzQtOS4yNyA2LjczNSAzLjU0LTEwLjg5Ny05LjI3LTYuNzM0aDExLjQ1OHptLTI5MS44NCAyNy41N2wzLjU0IDEwLjg5NmgxMS40NTdsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNy02LjczNC05LjI2NyA2LjczNCAzLjU0LTEwLjg5Ni05LjI3LTYuNzM1aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTZoMTEuNDZsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNy02LjczNC05LjI3IDYuNzM0IDMuNTQtMTAuODk2LTkuMjctNi43MzVoMTEuNDZ6bTY0Ljg1NSAwbDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjg5Ni05LjI2OC02LjczNC05LjI3IDYuNzM0IDMuNTQtMTAuODk2LTkuMjY4LTYuNzM1aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTZoMTEuNDU3bC05LjI3IDYuNzM1IDMuNTQgMTAuODk2LTkuMjY3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTYtOS4yNy02LjczNWgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQzIDEwLjg5Ni05LjI3LTYuNzM0LTkuMjY4IDYuNzM0IDMuNTQtMTAuODk2LTkuMjctNi43MzVoMTEuNDU4em02NC44NTUgMGwzLjU0IDEwLjg5NmgxMS40NThsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNjgtNi43MzQtOS4yNyA2LjczNCAzLjU0Mi0xMC44OTYtOS4yNy02LjczNWgxMS40NTd6bS0yOTEuODQzIDI3LjU3bDMuNTQgMTAuODk2aDExLjQ1OGwtOS4yNyA2LjczNCAzLjU0MiAxMC44OTctOS4yNy02LjczNC05LjI3IDYuNzM0IDMuNTQtMTAuODk3LTkuMjY4LTYuNzM0aDExLjQ1OHptNjQuODUyIDBsMy41NCAxMC44OTZoMTEuNDU3bC05LjI3IDYuNzM0IDMuNTQgMTAuODk3LTkuMjY3LTYuNzM0LTkuMjcgNi43MzQgMy41NC0xMC44OTctOS4yNy02LjczNGgxMS40NnptNjQuODU1IDBsMy41NCAxMC44OTZoMTEuNDZsLTkuMjcgNi43MzQgMy41NCAxMC44OTctOS4yNy02LjczNC05LjI2OCA2LjczNCAzLjU0LTEwLjg5Ny05LjI3LTYuNzM0aDExLjQ1OHptNjQuODU2IDBsMy41NCAxMC44OTZoMTEuNDU4bC05LjI3IDYuNzM0IDMuNTQgMTAuODk3LTkuMjY4LTYuNzM0LTkuMjcgNi43MzQgMy41NDItMTAuODk3LTkuMjctNi43MzRoMTEuNDU2em02NC44NTIgMGwzLjU0IDEwLjg5NmgxMS40NTVsLTkuMjcgNi43MzQgMy41NCAxMC44OTctOS4yNjctNi43MzQtOS4yNyA2LjczNCAzLjU0LTEwLjg5Ny05LjI3LTYuNzM0aDExLjQ1OHptLTI5MS44NDMgMjcuNTdsMy41NCAxMC44OTVoMTEuNDU4bC05LjI3IDYuNzM1IDMuNTQgMTAuODk2LTkuMjctNi43MzQtOS4yNjcgNi43MyAzLjU0LTEwLjg5NS05LjI3LTYuNzM1aDExLjQ1OHptNjQuODUzIDBsMy41NCAxMC44OTVoMTEuNDZsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNy02LjczNC05LjI2OCA2LjczIDMuNTQtMTAuODk1LTkuMjctNi43MzVoMTEuNDZ6bTY0Ljg1NiAwbDMuNTQgMTAuODk1aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjg5Ni05LjI2OC02LjczNC05LjI3IDYuNzMgMy41NC0xMC44OTUtOS4yNjgtNi43MzVoMTEuNDU4em02NC44NTIgMGwzLjU0IDEwLjg5NWgxMS40NTdsLTkuMjcgNi43MzUgMy41NCAxMC44OTYtOS4yNjctNi43MzQtOS4yNyA2LjczIDMuNTQtMTAuODk1LTkuMjctNi43MzVoMTEuNDZ6bTY0Ljg1NSAwbDMuNTQgMTAuODk1aDExLjQ2bC05LjI3IDYuNzM1IDMuNTQyIDEwLjg5Ni05LjI3LTYuNzM0LTkuMjY4IDYuNzMgMy41NC0xMC44OTUtOS4yNy02LjczNWgxMS40NTh6bTY0Ljg1NiAwbDMuNTQgMTAuODk1aDExLjQ1OGwtOS4yNyA2LjczNSAzLjU0IDEwLjg5Ni05LjI2OC02LjczNC05LjI3IDYuNzMgMy41NDItMTAuODk1LTkuMjctNi43MzVoMTEuNDU4eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4="}},"time_used":6,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"bootstrap.smartsuppchat.com/widget/115af43c9cc29cebb0095ace03c4b99cc9a02ee7.json","fqdn":"bootstrap.smartsuppchat.com","domain":"smartsuppchat.com","tld":"com"},"ip":{"addr":"18.185.198.9","port":443,"asn":16509,"as":"AMAZON-02","country":"Germany","country_code":"DE"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:49.188Z","timestamp":1785159469188,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.smartsuppchat.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Tue, 02 Dec 2025 00:00:00 GMT","end":"Wed, 30 Dec 2026 23:59:59 GMT"},"fingerprint":{"sha1":"DC:47:26:FC:2D:4B:14:19:23:BC:B7:70:14:DA:60:A6:21:B0:1E:81","sha256":"0D:5E:FD:70:25:9E:DE:DD:47:CF:0C:58:1C:08:A2:A1:05:AC:A6:7E:0C:43:6F:50:E7:49:E0:A1:60:D0:0E:0F"}}},"request":{"raw":"GET /widget/115af43c9cc29cebb0095ace03c4b99cc9a02ee7.json HTTP/1.1\r\nHost: bootstrap.smartsuppchat.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nContent-Type: text/plain\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 13:37:49 GMT\r\ncontent-type: application/json; charset=utf-8\r\nx-version: 6cb79abf75047496934c7756b55ec6f26e7d2373\r\nvary: Accept-Encoding\r\naccess-control-allow-origin: *\r\ncache-control: private, max-age=0, must-revalidate\r\nx-hit: redis\r\netag: \"558-mO+Ilq+fpSP/jWceVwzr1KTJXD8\"\r\ncontent-encoding: br\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":1368,"size_decoded":980,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"cc4f31684f9cd0f95154e97e65308d49","sha1":"98ef8896af9fa523ff8d671e570cebd4a4c95c3f","sha256":"93823be5e7d5934328273fafcb63d6fcc54a7ef792de7ddc1c76abbb162f4781","sha512":"202c633a75d665ec3260bc026aee7f3600850c6e0fa61bd2984070ec65b7e063e7a408baf1c944d4da6b564d532eaa0e60dbda42172f65a41379da004c4c07ec","ssdeep":"","tlshash":"b2218b7d495822ed1245c7d6c5047f076baddcb371003e7dea0d0a0e70db2e9113a46b","first_seen":"2026-07-27T07:42:30.726584Z","last_seen":"2026-07-27T13:38:47.752054Z","times_seen":3,"resource_available":false,"data":"eyJhaVJhdGluZ0VuYWJsZWQiOnRydWUsImFsbG93ZWREb21haW5zIjpbXSwiYnV0dG9uU3R5bGUiOiJncmVldGluZyIsImNvbG9yIjoiIzEyMzNkZiIsImNvbG9yMiI6bnVsbCwiY29sb3JHcmFkaWVudCI6dHJ1ZSwiY29uc2VudE1vZGVFbmFibGVkIjpmYWxzZSwiY3Jvc3NEb21haW5FbmFibGVkIjpmYWxzZSwiY3VzdG9tQnJhbmRpbmdFbmFibGVkIjpmYWxzZSwiY3VzdG9tQnJhbmRpbmdMaW5rIjoiIiwiY3VzdG9tQnJhbmRpbmdUZXh0IjoiIiwiZW1haWxDb250cm9sIjp0cnVlLCJmZWF0dXJlcyI6eyJhcGkiOmZhbHNlLCJjdXN0b21pemUiOmZhbHNlLCJnYSI6ZmFsc2UsImdyb3VwcyI6ZmFsc2UsInJhdGluZyI6ZmFsc2UsIndoaXRlTGFiZWwiOmZhbHNlfSwiZ29vZ2xlQW5hbHl0aWNzRW5hYmxlZCI6ZmFsc2UsImdvb2dsZUFuYWx5dGljc01hbnVhbCI6ZmFsc2UsImdvb2dsZUFuYWx5dGljc01lYXN1cmVtZW50SWRzIjpbXSwiZ3JvdXBTZWxlY3RFbmFibGVkIjpmYWxzZSwiaGVhZGVyU3R5bGUiOiJzdGFuZGFyZCIsImhpZGVPZmZsaW5lQ2hhdCI6ZmFsc2UsImhpZGVXaWRnZXQiOmZhbHNlLCJob3N0Ijoid2Vic29ja2V0LXZpc2l0b3JzLnNtYXJ0c3VwcC5jb20iLCJpbnRlcm5hbEFuYWx5dGljc0VuYWJsZWQiOmZhbHNlLCJpc0Jsb2NrZWQiOmZhbHNlLCJsYW5nIjoiZW4iLCJtb2JpbGVQb3B1cHNFbmFibGVkIjp0cnVlLCJuYW1lQ29udHJvbCI6dHJ1ZSwibnVtYmVyQ29udHJvbCI6ZmFsc2UsIm9wZW5PblRyaWdnZXIiOmZhbHNlLCJvcmllbnRhdGlvbiI6InJpZ2h0IiwicGFja2FnZU5hbWUiOiJmcmVlIiwicG9wdXBUZXh0YXJlYUVuYWJsZWQiOmZhbHNlLCJwcml2YWN5Tm90aWNlQ2hlY2tSZXF1aXJlZCI6ZmFsc2UsInByaXZhY3lOb3RpY2VFbmFibGVkIjp0cnVlLCJwcml2YWN5Tm90aWNlVXJsIjoiIiwicmF0aW5nRW5hYmxlZCI6ZmFsc2UsInJlcXVpcmVMb2dpbiI6ZmFsc2UsInRyYW5zbGF0ZXMiOnsiZW4iOnsiYnV0dG9uLmdyZWV0aW5nIjoiQ2hhdCBoZXJlIiwic3RhdHVzQmFyLm9ubGluZVRleHQiOiJ3ZSBhcmUgaGVyZSB0byBzZXJ2ZSB5b3UiLCJ0b3BCYXIub25saW5lLmhlbGxvIjoiSEVMTE8gV0VMQ09NRSBUTyBXRUFMVEggR1JJRCBBU1NFVCJ9fSwidXJsQ2FyZHNFbmFibGVkIjp0cnVlLCJ3aWRnZXRWZXJzaW9uIjozLCJoYXNJbnRlcm5hbEFwaSI6ZmFsc2UsImNvbmZpZyI6e30sImJyb3dzZXJMYW5nIjoiZW4iLCJ3aWRnZXRUcmFja2VyVXJsIjoiaHR0cHM6Ly93aWRnZXQtdHJhY2tlci5zbWFydHN1cHAuY29tIiwidHJhbnNsYXRpb25zQmFzZVVybCI6Imh0dHBzOi8vdHJhbnNsYXRpb25zLnNtYXJ0c3VwcGNkbi5jb20iLCJ3aWRnZXRUcmFja2VyRW5hYmxlZCI6ZmFsc2V9"}},"time_used":87,"timings":{"blocked":0,"dns":3,"connect":25,"send":0,"wait":27,"receive":0,"ssl":32},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/logo/logo.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.038Z","timestamp":1785159465038,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/logo/logo.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Wed, 22 Apr 2026 23:04:22 GMT\r\naccept-ranges: bytes\r\ncontent-length: 26607\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":26607,"size_decoded":26873,"mime_type":"image/png","magic":"PNG image data, 754 x 194, 8-bit/color RGBA, non-interlaced","md5":"4b8193f70e36a501c7b85d4350a19969","sha1":"1e6d5699a0b84feedf9a15cff997f6017d637c7d","sha256":"2b5d30de14876982a59c454337b1dcf148a15a79d6c8304e91fa5043a7b6a8ed","sha512":"ee5ea9d185de72b8e27347f64f02d930a0740daf9ba514b9fd524c6f43afbb5946033b867d4e81907a5b55d8c1636d205dfffb1fd6f312e41d516c2310de5603","ssdeep":"768:YF3moVAv8Hf98CIGq/IZBkGxskSm2mC+vXvnSQQ4:YRmoVMEqgLhxdvXqQT","tlshash":"86c2e13d00433009a39f9d5489c4e94dcd728ec4efd25457bb9b3d8fa61a1a42f305ba","first_seen":"2026-07-27T07:42:30.716812Z","last_seen":"2026-07-27T13:38:47.771349Z","times_seen":3,"resource_available":false,"data":"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vLDwG/eE8/s3BCkeAAAACXBIWXMAAC4jAAAuIwF4pT92AAADZWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+PGV4aWY6RGF0ZVRpbWVPcmlnaW5hbD4yMDI2LTA0LTIyVDAzOjIwOjMzLjA5MDwvZXhpZjpEYXRlVGltZU9yaWdpbmFsPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj48eG1wOkNyZWF0ZURhdGU+MjAyNi0wNC0yMlQwMzoyMDozMy4wOTA8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj48ZGM6Y3JlYXRvcj48cmRmOlNlcSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6bGk+VGFuc2k8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0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"}},"time_used":57,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":27,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.063Z","timestamp":1785159465063,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 2519\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2519,"size_decoded":2784,"mime_type":"image/png","magic":"PNG image data, 188 x 22, 8-bit/color RGBA, non-interlaced","md5":"86351f02b8ed7869f4042e3f477f27ff","sha1":"c442874300f8f6216fc9dd4e2db85348913b4692","sha256":"ece0595a85d1dfd0f666abc453fccf00844935cc43aa33b3c0fb68f2fd5f865b","sha512":"8b23f6518cf635c6a25643fac2708d8cd4dd51f7930517fda7297191e4070db33cd0e1c862d7d1c22ecaf4926395f799763783970e9f858d8a9720574ca72a58","ssdeep":"","tlshash":"f0514cc5260f397ae6f34565c1ff691468ab0a0a4852140c3ad393c278cf446faee6c3","first_seen":"2025-08-04T11:51:21.627435Z","last_seen":"2026-07-27T13:38:47.7556Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":72,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":64,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/consulting_shape.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.071Z","timestamp":1785159465071,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/consulting_shape.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 15370\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":15370,"size_decoded":15636,"mime_type":"image/png","magic":"PNG image data, 545 x 145, 8-bit/color RGBA, non-interlaced","md5":"8e797fc21def5fc079d65f9079d721b8","sha1":"302289342887ca765f40310f4f82ba92e65373c9","sha256":"73664a51a1dce276c31cec0970aa2623b6238c4dc8f5db50e5166fbd0fdba467","sha512":"526aa10928e56a0c1a7f097a0e4b0043cfdcace0c76748e538dc1582d0f92e109f9bbad74c5a63721a0a0bec55a16385f86325f0ea338784f84a7712c8d4df5d","ssdeep":"384:g1cQaUC5qpM/YYmU2L+6jVGASU1oZA7gUU2Gd3oYkom:1qpMAy2L+6jVpSs0dYZh","tlshash":"6b62d0733dd6032f9d33b1834df9d093609f254a21361215fb68e7d0a7b8798268d4d2","first_seen":"2025-10-03T03:28:59.237087Z","last_seen":"2026-07-27T13:38:47.761113Z","times_seen":6,"resource_available":false,"data":"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"}},"time_used":78,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":66,"receive":12,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"wss","addr":"wss://websocket-visitors.smartsupp.com/socket/?EIO=3\u0026transport=websocket","fqdn":"websocket-visitors.smartsupp.com","domain":"smartsupp.com","tld":"com"},"ip":{"addr":"18.198.69.8","port":443,"asn":16509,"as":"AMAZON-02","country":"Germany","country_code":"DE"},"is_navigation_request":false,"resource_type":"websocket","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:56.179Z","timestamp":1785159476179,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.smartsupp.com","organization":""},"issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validity":{"start":"Wed, 24 Jun 2026 00:00:00 GMT","end":"Thu, 07 Jan 2027 23:59:59 GMT"},"fingerprint":{"sha1":"4F:1A:3B:79:00:E3:DC:1F:92:62:7C:DC:85:3A:BE:8C:D1:68:F2:57","sha256":"7F:93:E6:29:5D:CA:78:BD:30:0D:25:11:3B:E2:01:C9:DC:80:3C:80:90:3F:84:D2:72:1B:0D:42:F1:20:13:D9"}}},"request":{"raw":"GET /socket/?EIO=3\u0026transport=websocket HTTP/1.1\r\nHost: websocket-visitors.smartsupp.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-WebSocket-Version: 13\r\nOrigin: https://wealthgridasset.com\r\nSec-WebSocket-Extensions: permessage-deflate\r\nSec-WebSocket-Key: zlJVoSnqe1T3pOnqg/xjSA==\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: Upgrade\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: websocket\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 101 Switching Protocols\r\nDate: Mon, 27 Jul 2026 13:37:56 GMT\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Accept: G80DeKIbndgQYdEwyOjur6jUBRI=\r\nSec-WebSocket-Version: 13\r\nWebSocket-Server: uWebSockets\r\n\r\n","headers":null,"cookies":null,"status_code":"101","status_text":"Switching Protocols","fingerprints":null,"data":{"size":0,"size_decoded":224,"mime_type":"text/plain","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-04T06:30:23.608803Z","times_seen":17703944,"resource_available":true,"data":""}},"time_used":230,"timings":{"blocked":0,"dns":82,"connect":102,"send":0,"wait":23,"receive":0,"ssl":23},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_about_img_shape.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.046Z","timestamp":1785159465046,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_about_img_shape.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 890\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":890,"size_decoded":1154,"mime_type":"image/png","magic":"PNG image data, 108 x 112, 8-bit/color RGBA, non-interlaced","md5":"023bb21ebdf95552866557e2bb2f7663","sha1":"0930bd9181da40c371c8417ddfce1402478bd908","sha256":"0ba26f14df49e13b0f6a731c70a729d0fc8d817a43fd328fe19594f9d3264d45","sha512":"df10e3e18f4f6d86b5b8d82768432ce56a12abd89e405385ec736e096c5d8fcc076d418817db804d9a87aeddf2f7d4cf60a9dce473508a25269762c6d5c79501","ssdeep":"","tlshash":"3f1196ca3a70647fdacd69b626eb05416ae9833314042921ad60acbaa798c25330f706","first_seen":"2025-04-12T15:34:26.847486Z","last_seen":"2026-07-27T13:38:47.753218Z","times_seen":20,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAGwAAABwCAYAAAD7cpUtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMPSURBVHgB7d1NThRRFMXxe183DcxwBeIOcATECewAVmAYmaZDhBVQrKCbIHQcla4AdqAODDKCHdg7cGKgMaGer8T+QJ9GUrcTXvz/kg6pGpycNF9JnU6VHnRPV9TrsQSq2mk1F/ekIuvMFDq2Dz8uNGr1XLxfCImZRcdYpnOiuarMlS8Rn7Xz8zmpyDozhY6jN7bks8PwZktFsUwnXu4UbVxezktV1pkJdPRF8Wj8uChc5R+qWKbTmoz/6u63Ws8upCLrzCQ6qmTDA+8/bG0tv5eK/pjZ7Z7Oly8xZJ2ZQsc8/Fm17jiJTAAAAAAAAAD/iXILstiYJplJx1vu6PXZ86mr68+N/vWXw+7Zrhiwzkyh48HR2dog79XRp7YYiGU6X/jsdnUt+cziUr51Zgodw3S/O8gLX7ctFudY5m+LswnrzBQ6/sJicY5lOlG/Mzrh95rN5Z5UZZ2ZQMfCFzsq0vt5uG+xOP81Mzf+ZzmJTDoCAAAAAAAAwD2w5j7MvFgmizOLM4szizOL8zCTxVlYnCeWSUcAAAAAAAAAuAfW3IeZF8tkcWZxZnFmcWZxHmayOAuL88Qy6QgAAAAAAAAA/0bbYQdqiG6HueHxt3AFe8fgSrh1ZhIdwwXaMDRmZV5x402u1scyXUNd+Szjl6Ky1vB6bjFxW2em0HHqqt8Z5LmaHlt0jGW60XOCg7Bu2jxy1zgzhY4iK+N59a/9yotzLLNcnE9G56Rn8chd88wEOoYJ/814Xr0+HB5NM11rc2k9tN/wYd2cnZl+KgasM5Po2FzOBnkqftViFZ9EJgAAAAAAAADgAWJxZnFmcWZxZnFmcWZxHsPizOIMAAAAAAAAALiH28XZa9uHvcV73d/aXDyRiqwz6TjKdGEmf1cummFvWQnjWG6y5hpnptBxWjQf5qk3WZxjmXdv0hy+kzP9fvXblVpnJtCx8P7J+LHF4hzLdKHs28EJVb2wuQGycWYCHV1NO6No6Vl8CCeW6VrNpe3C6/pN4TdmpxurYsA6M4WOmy+WOkVYhX/kGa3isczvdXjBgwShc5MAAAAASUVORK5CYII="}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_about_shape01.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.047Z","timestamp":1785159465047,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_about_shape01.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 4659\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":4659,"size_decoded":4924,"mime_type":"image/png","magic":"PNG image data, 112 x 93, 8-bit/color RGBA, non-interlaced","md5":"b337576a6301b7e8bb6f407e66913e31","sha1":"935aea73dfef8cae971e76756de1d539d9227cc5","sha256":"e480f16c1cd372e611f82bec6717bb6813313364b88287cbc0d83e7f1aaf156b","sha512":"147d031e34082f087653e03a9ddcf0d38143208af7494dcef6af5d904d77b24d19b0ec3ffbc5a145f6d0c62e9a246b62224c9e4ebb5a0c5335cf76442d0895d5","ssdeep":"96:2STfynj4LqZDA2c5e9HQlpnt0Si71AFC7KL81HzVPv0CcRPn:2SD7ORA2UeZQlT0Si71vHPvfqf","tlshash":"29a18e5da5d076cd3ccbc0f1c51f8d01e8c2bc06a379251aaaacde325473dac4942bda","first_seen":"2025-04-12T15:34:26.824081Z","last_seen":"2026-07-27T13:38:47.797345Z","times_seen":20,"resource_available":false,"data":"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"}},"time_used":84,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":62,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/images/h2_about_shape03.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.051Z","timestamp":1785159465051,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/images/h2_about_shape03.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 37678\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":37678,"size_decoded":37944,"mime_type":"image/png","magic":"PNG image data, 660 x 492, 8-bit/color RGBA, non-interlaced","md5":"95965211f3b1d571e95f48084a378970","sha1":"c6d3cfe449ebb131e63728caf2e028dab5bf40ef","sha256":"bf317933f96d648dd0b6e12e8c8f35511d024189ea93e826369c490ddb46c9cb","sha512":"2fb0adb90e48cd1307f785cf89065f2836cc002d0abe5c97579cd6211b883fd68afd525ffa37f3414b4b26f4faf18efb450ac972a3a121fb43532131091d8ec8","ssdeep":"768:+L4suUBCNh8/n3g1VNhEMd4mZ1DxBaRZsSlYnR0b55GTG/S:44sGhB1VNldt1dufYR090TgS","tlshash":"ed03e12371772aa7d5088bb3716633663a0c0773fac92f45b430bfd92954fa1d501ea6","first_seen":"2025-04-12T15:34:26.836058Z","last_seen":"2026-07-27T13:38:47.787752Z","times_seen":18,"resource_available":false,"data":"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"}},"time_used":82,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":44,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/bg/pricing_bg.html","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.713Z","timestamp":1785159465713,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/bg/pricing_bg.html HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/html\r\nlast-modified: Thu, 16 Apr 2026 11:29:14 GMT\r\naccept-ranges: bytes\r\ncontent-length: 0\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":183,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-04T06:30:23.608803Z","times_seen":17703944,"resource_available":true,"data":""}},"time_used":54,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":54,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/charts.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.020Z","timestamp":1785159465020,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/charts.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:34 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1471\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":10289,"size_decoded":1708,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text","md5":"6a1986313b8ff7a56ccb48e7371eb3d7","sha1":"ac9ace609c6c6d1da17fa6428532196f2c368cd8","sha256":"fb680725117f20ae4249304a0d362c829f774cbecf37f1fe07c07ecdf98481f2","sha512":"0cb239db74a788743e3a07b8f1304b4d2ba74f2e041984355b9462c3360785025df5fc49417eb5cc09ab600f1c1abc870a9276636956f805c6083289885f8bc6","ssdeep":"192:MLZCFo1KAojICCUqCnUiE6I46GKaPCPnAg/QPKAojbCCg2CVyxlCJLG8ZPK3Cjbc:+8yKj4ZMKaKIgIPKjWG8ZPKSM","tlshash":"4f22fa1ddaf12053a113b0b99a2f0615b536a18fac5d7c393f8c12905f8e46c99f9bec","first_seen":"2026-07-27T07:42:30.733894Z","last_seen":"2026-07-27T13:38:47.799544Z","times_seen":3,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKLy8gRXhwZW5zZSBDYXRlZ29yeQooZnVuY3Rpb24oKSB7CiAgICBsZXQgb3B0aW9ucyA9IHsKICAgICAgICBzZXJpZXM6IFsxNDAwLjU0LCAxMTIwLCA4NTAuMTEsIDY1MC4wOV0sCiAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgdHlwZTogImRvbnV0IgogICAgICAgIH0sCiAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICBwbG90T3B0aW9uczogewogICAgICAgICAgICBwaWU6IHsKICAgICAgICAgICAgICAgIGRvbnV0OiB7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogIjcwJSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbGFiZWxzOiBbIlN1YnNjcmliZWQiLCAiVGF4cyIsICJUYXhzIDIiLCAiT3RoZXJzIl0sCiAgICAgICAgY29sb3JzOiBbIiMzMUIwOTkiLCAiI0U3ODU0RCIsICIjQzY1NDY4IiwgIiM0RDgxRTciXQogICAgfTsKICAgIGxldCBjaGFydCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNleHBlbnNlLWNhdGVnb3J5Iik7CiAgICBpZiAoY2hhcnQgIT0gbnVsbCkgewogICAgICAgIG5ldyBBcGV4Q2hhcnRzKGNoYXJ0LCBvcHRpb25zKS5yZW5kZXIoKTsKICAgIH0KfSkoKTsKCi8vIEluY29tZSBBbmFseXNpcwooZnVuY3Rpb24oKSB7CiAgICBsZXQgb3B0aW9ucyA9IHsKICAgICAgICBzZXJpZXM6IFt7CiAgICAgICAgICAgIG5hbWU6ICJJbmNvbWUgQW5hbHlzaXMiLAogICAgICAgICAgICBkYXRhOiBbNzAwMCwgNjAwMCwgOTAwMCwgNTAwMF0KICAgICAgICB9XSwKICAgICAgICBjaGFydDogewogICAgICAgICAgICB0eXBlOiAiYmFyIiwKICAgICAgICAgICAgaGVpZ2h0OiAiMTAwJSIsCiAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICJNYW5yb3BlLCBzYW5zLXNlcmlmIgogICAgICAgIH0sCiAgICAgICAgcGxvdE9wdGlvbnM6IHsKICAgICAgICAgICAgYmFyOiB7CiAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogIjQyJSIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY29sb3JzOiBbIiNFNzg1NEQiXSwKICAgICAgICBkYXRhTGFiZWxzOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICB4YXhpczogewogICAgICAgICAgICBjYXRlZ29yaWVzOiBbIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciJdLAogICAgICAgICAgICBheGlzQm9yZGVyOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICBheGlzVGlja3M6IHsKICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICBjb2xvcnM6ICIjQUNCNUJCIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9mZnNldFk6IC0yCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICBjb2xvcnM6ICIjQUNCNUJCIiwKICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2Zmc2V0WDogLTYsCiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IE1hdGguYWJzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsID49IDEwICoqIDMgJiYgdmFsIDwgMTAgKiogNikgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAodmFsIC8gMTAwMCkudG9GaXhlZCgwKSArICJrIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+PSAxMCAqKiA2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICh2YWwgLyAxMDAwMDAwKS50b0ZpeGVkKDApICsgIm0iOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ3JpZDogewogICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IDAsCiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiI0RDRTRFOCIsCiAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgIHRvcDogLTIwLAogICAgICAgICAgICAgICAgcmlnaHQ6IDAsCiAgICAgICAgICAgICAgICBib3R0b206IC01LAogICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzdGF0ZXM6IHsKICAgICAgICAgICAgaG92ZXI6IHsKICAgICAgICAgICAgICAgIGZpbHRlcjogewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJub25lIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgICAgfQogICAgfTsKICAgIGxldCBjaGFydCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpbmNvbWUtYW5hbHlzaXMiKTsKICAgIGlmIChjaGFydCAhPSBudWxsKSB7CiAgICAgICAgbmV3IEFwZXhDaGFydHMoY2hhcnQsIG9wdGlvbnMpLnJlbmRlcigpOwogICAgfQp9KSgpOwoKLy8gRXhwZW5zZSBBbmFseXNpcwooZnVuY3Rpb24oKSB7CiAgICBsZXQgb3B0aW9ucyA9IHsKICAgICAgICBzZXJpZXM6IFt7CiAgICAgICAgICAgIG5hbWU6ICJFeHBlbnNlIEFuYWx5c2lzIiwKICAgICAgICAgICAgZGF0YTogWzcwMDAsIDY4MDAsIDcyMDAsIDcwMDAsIDcyMDBdCiAgICAgICAgfV0sCiAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgdHlwZTogImFyZWEiLAogICAgICAgICAgICBoZWlnaHQ6ICIxMDAlIiwKICAgICAgICAgICAgdG9vbGJhcjogewogICAgICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgem9vbTogewogICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ3JpZDogewogICAgICAgICAgICBzaG93OiBmYWxzZSwKICAgICAgICAgICAgcGFkZGluZzogewogICAgICAgICAgICAgICAgdG9wOiAtMzUsCiAgICAgICAgICAgICAgICByaWdodDogNiwKICAgICAgICAgICAgICAgIGxlZnQ6IC0zCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGZpbGw6IHsKICAgICAgICAgICAgY29sb3JzOiAiIzREODFFNyIsCiAgICAgICAgICAgIHR5cGU6ICJncmFkaWVudCIsCiAgICAgICAgICAgIGdyYWRpZW50OiB7CiAgICAgICAgICAgICAgICBzaGFkZUludGVuc2l0eTogMSwKICAgICAgICAgICAgICAgIG9wYWNpdHlGcm9tOiAwLjcsCiAgICAgICAgICAgICAgICBvcGFjaXR5VG86IDAuOSwKICAgICAgICAgICAgICAgIHN0b3BzOiBbMCwgOTUsIDEwMF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgc3Ryb2tlOiB7CiAgICAgICAgICAgIGN1cnZlOiAic3RyYWlnaHQiLAogICAgICAgICAgICB3aWR0aDogMwogICAgICAgIH0sCiAgICAgICAgbWFya2VyczogewogICAgICAgICAgICBzaXplOiA0LAogICAgICAgICAgICBjb2xvcnM6ICIjZmZmZmZmIiwKICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDMsCiAgICAgICAgICAgIHN0cm9rZUNvbG9yczogIiM0RDgxRTciCiAgICAgICAgfSwKICAgICAgICB4YXhpczogewogICAgICAgICAgICBjYXRlZ29yaWVzOiBbIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiXSwKICAgICAgICAgICAgYXhpc0JvcmRlcjogewogICAgICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXhpc1RpY2tzOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgICAgIH0KICAgIH07CiAgICBsZXQgY2hhcnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZXhwZW5zZS1hbmFseXNpcyIpOwogICAgaWYgKGNoYXJ0ICE9IG51bGwpIHsKICAgICAgICBuZXcgQXBleENoYXJ0cyhjaGFydCwgb3B0aW9ucykucmVuZGVyKCk7CiAgICB9Cn0pKCk7CgovLyBCYWxhbmNlIFN0YXRpc3RpY3MKKGZ1bmN0aW9uKCkgewogICAgbGV0IG9wdGlvbnMgPSB7CiAgICAgICAgc2VyaWVzOiBbewogICAgICAgICAgICBuYW1lOiAiQmFsYW5jZSBTdGF0aXN0aWNzIiwKICAgICAgICAgICAgZGF0YTogWzE0MjAwLCAxMDA0MCwgMTIyMDAsIDE2NDAwLCAxMzgwMCwgMTUwMDAsIDEwNDAwLCAxMjc1MCwgMTY3MDAsIDE4MjAwLCAxMjQ1MCwgMTE1MDBdCiAgICAgICAgfV0sCiAgICAgICAgY2hhcnQ6IHsKICAgICAgICAgICAgdHlwZTogImJhciIsCiAgICAgICAgICAgIGhlaWdodDogIjEwMCUiLAogICAgICAgICAgICB0b29sYmFyOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICBmb250RmFtaWx5OiAiTWFucm9wZSwgc2Fucy1zZXJpZiIKICAgICAgICB9LAogICAgICAgIHBsb3RPcHRpb25zOiB7CiAgICAgICAgICAgIGJhcjogewogICAgICAgICAgICAgICAgY29sdW1uV2lkdGg6ICI1NSUiLAogICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAzCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNvbG9yczogWyIjNUZDRkIwIl0sCiAgICAgICAgZGF0YUxhYmVsczogewogICAgICAgICAgICBlbmFibGVkOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgY2F0ZWdvcmllczogWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm93IiwgIkRlYyJdLAogICAgICAgICAgICBheGlzQm9yZGVyOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICBheGlzVGlja3M6IHsKICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICBjb2xvcnM6ICIjQUNCNUJCIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9mZnNldFk6IC0yCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICBjb2xvcnM6ICIjQUNCNUJCIiwKICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2Zmc2V0WDogLTYsCiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IE1hdGguYWJzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsID49IDEwICoqIDMgJiYgdmFsIDwgMTAgKiogNikgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAiJCIgKyAodmFsIC8gMTAwMCkudG9GaXhlZCgwKSArICJrIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+PSAxMCAqKiA2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICIkIiArICh2YWwgLyAxMDAwMDAwKS50b0ZpeGVkKDApICsgIm0iOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICIkIiArIHZhbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZ3JpZDogewogICAgICAgICAgICBzdHJva2VEYXNoQXJyYXk6IDAsCiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiI0RDRTRFOCIsCiAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgIHRvcDogLTIwLAogICAgICAgICAgICAgICAgcmlnaHQ6IDAsCiAgICAgICAgICAgICAgICBib3R0b206IC0xMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc3RhdGVzOiB7CiAgICAgICAgICAgIGhvdmVyOiB7CiAgICAgICAgICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZGFya2VuIiwKICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMC42CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRvb2x0aXA6IHsKICAgICAgICAgICAgY3VzdG9tOiBmdW5jdGlvbihfcmVmKSB7CiAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgIHNlcmllcywKICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleCwKICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICB3CiAgICAgICAgICAgICAgICB9ID0gX3JlZjsKICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0idG9vbHRpcC1jaGFydCI+PGRpdiBjbGFzcz0idG9vbHRpcC1jaGFydF9fdGl0bGUiPlRvdGFsIEJhbGFuY2U8L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWNoYXJ0X192YWx1ZSI+JyArICI8c3Bhbj4kIiArIHNlcmllc1tzZXJpZXNJbmRleF1bZGF0YVBvaW50SW5kZXhdICsgIjwvc3Bhbj4iICsgIjwvZGl2PjwvZGl2PiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgbGV0IGNoYXJ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2JhbGFuY2Utc3RhdGlzdGljcyIpOwogICAgaWYgKGNoYXJ0ICE9IG51bGwpIHsKICAgICAgICBuZXcgQXBleENoYXJ0cyhjaGFydCwgb3B0aW9ucykucmVuZGVyKCk7CiAgICB9Cn0pKCk7CgovLyBCYWxhbmNlIEFuYWx5dGljcwooZnVuY3Rpb24oKSB7CiAgICB2YXIgb3B0aW9ucyA9IHsKICAgICAgICBncmlkOiB7CiAgICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogIjYgNiIsCiAgICAgICAgICAgIHBhZGRpbmc6IHsKICAgICAgICAgICAgICAgIHRvcDogLTIwLAogICAgICAgICAgICAgICAgcmlnaHQ6IDUsCiAgICAgICAgICAgICAgICBib3R0b206IC0xMCwKICAgICAgICAgICAgICAgIGxlZnQ6IDEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHhheGlzOiB7CiAgICAgICAgICAgICAgICBsaW5lczogewogICAgICAgICAgICAgICAgICAgIHNob3c6IHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgeWF4aXM6IHsKICAgICAgICAgICAgICAgIGxpbmVzOiB7CiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICB9LAogICAgICAgIGNvbG9yczogWyIjMzFCMDk5Il0sCiAgICAgICAgc2VyaWVzOiBbewogICAgICAgICAgICBuYW1lOiAiQmFsYW5jZSBTdGF0aXN0aWNzIiwKICAgICAgICAgICAgZGF0YTogWzg2MDAwMCwgMTMzMjAwMCwgODIyMDAwLCAxMTQzMDAwLCAyMDIwMDAwLCAxNDMyMDAwLCAxMjAwMDAwLCAxNjUwMDAwLCAyMjAwMDAwLCAxNjAwMDAwLCAxMjMwMDAwLCAxNzMwMDAwXQogICAgICAgIH1dLAogICAgICAgIGNoYXJ0OiB7CiAgICAgICAgICAgIGhlaWdodDogIjEwMCUiLAogICAgICAgICAgICB0eXBlOiAibGluZSIsCiAgICAgICAgICAgIHRvb2xiYXI6IHsKICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICJJbnRlciwgc2Fucy1zZXJpZiIKICAgICAgICB9LAogICAgICAgIGRhdGFMYWJlbHM6IHsKICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UKICAgICAgICB9LAogICAgICAgIHN0cm9rZTogewogICAgICAgICAgICBjdXJ2ZTogInN0cmFpZ2h0IiwKICAgICAgICAgICAgd2lkdGg6IDUKICAgICAgICB9LAogICAgICAgIHhheGlzOiB7CiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFsiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdyIsICJEZWMiXSwKICAgICAgICAgICAgYXhpc0JvcmRlcjogewogICAgICAgICAgICAgICAgc2hvdzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXhpc1RpY2tzOiB7CiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICBsYWJlbHM6IHsKICAgICAgICAgICAgICAgIHN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiAiI0FDQjVCQiIsCiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMnB4IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9mZnNldFk6IC0yCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgIGxhYmVsczogewogICAgICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiLAogICAgICAgICAgICAgICAgICAgIGNvbG9yczogIiNBQ0I1QkIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2Zmc2V0WDogLTYsCiAgICAgICAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IE1hdGguYWJzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsID49IDEwICoqIDMgJiYgdmFsIDwgMTAgKiogNikgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAiJCIgKyAodmFsIC8gMTAwMCkudG9GaXhlZCgwKSArICJrIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbCA+PSAxMCAqKiA2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICIkIiArICh2YWwgLyAxMDAwMDAwKS50b0ZpeGVkKDApICsgIm0iOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICIkIiArIHZhbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9vbHRpcDogewogICAgICAgICAgICBjdXN0b206IGZ1bmN0aW9uKF9yZWYyKSB7CiAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgIHNlcmllcywKICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleCwKICAgICAgICAgICAgICAgICAgICBkYXRhUG9pbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICB3CiAgICAgICAgICAgICAgICB9ID0gX3JlZjI7CiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InRvb2x0aXAtY2hhcnQiPjxkaXYgY2xhc3M9InRvb2x0aXAtY2hhcnRfX3RpdGxlIj5Ub3RhbCBJbmNvbWU8L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWNoYXJ0X192YWx1ZSI+JyArICI8c3Bhbj4kIiArIHNlcmllc1tzZXJpZXNJbmRleF1bZGF0YVBvaW50SW5kZXhdICsgIjwvc3Bhbj4iICsgIjwvZGl2PjwvZGl2PiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgdmFyIGNoYXJ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2JhbGFuY2UtYW5hbHl0aWNzIik7CiAgICBpZiAoY2hhcnQgIT0gbnVsbCkgewogICAgICAgIG5ldyBBcGV4Q2hhcnRzKGNoYXJ0LCBvcHRpb25zKS5yZW5kZXIoKTsKICAgIH0KfSkoKTs="}},"time_used":27,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":27,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img03.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.066Z","timestamp":1785159465066,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img03.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 2283\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2283,"size_decoded":2548,"mime_type":"image/png","magic":"PNG image data, 136 x 27, 8-bit/color RGBA, non-interlaced","md5":"98abd0c62ce2c3bf8c8e59f25294f084","sha1":"a4d18249ce469b64df0fb3f14fac6d0826a8a6c2","sha256":"5eb69fc1c823407c546b1f40656cdd613d88c48144c188e366d5fb345bbd0287","sha512":"07c9842f70c8267df374d7efdca7ae194912c41cb155fe46d2b5904850e99ee6ba8f9f9b030f40c4bc7cc1a740b1d10dbd750fdee09f073cb256e6f66c36fc57","ssdeep":"","tlshash":"b1414dcc924210f2df6ddd5556312802b1ede868996352c561b37d7e2d080def824111","first_seen":"2025-08-04T11:51:21.573534Z","last_seen":"2026-07-27T13:38:47.759931Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":69,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":62,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/img/brand/brand_img05.png","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.067Z","timestamp":1785159465067,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/img/brand/brand_img05.png HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 3665\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3665,"size_decoded":3930,"mime_type":"image/png","magic":"PNG image data, 120 x 46, 8-bit/color RGBA, non-interlaced","md5":"5f42fda59b786695fd4e2e052f2e1958","sha1":"4ae9437e7bcb3ead841e49bf469256c85e11d919","sha256":"8ba668e942dca2bf1c1ba6db02117605a6efa805070a5d0f4fe2029a0a2db86a","sha512":"16ce4d4666475dddaab9b44844abd2b100eca8ec54ec269a89c9b5393031d63b93ab196c4f010f339ad7355d55716b583af03138e6931a774f61de8535fa8a8c","ssdeep":"","tlshash":"42716dc92035eed9cdf8e9272593836ba38b382ea070d01dce6692225a1f06e5f85c54","first_seen":"2025-08-04T11:51:21.625478Z","last_seen":"2026-07-27T13:38:47.779134Z","times_seen":7,"resource_available":false,"data":"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"}},"time_used":77,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":67,"receive":10,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/js/jquery.magnific-popup.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:44.800Z","timestamp":1785159464800,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/js/jquery.magnific-popup.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 7043\r\ndate: Mon, 27 Jul 2026 13:37:44 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":20216,"size_decoded":7280,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (20087)","md5":"ba6cf724c8bb1cf5b084e79ff230626e","sha1":"f455c5f153f872e52265f87a644ff89fe14a6fb6","sha256":"3fddc6d28aba3c13d64cfd4847c333ff48c71d4a5a58bd1a0494ca6ae8ac1bb4","sha512":"22c361e44dde632dedaff2625f6631e2fb02ba3b6487097b48baa09f02cd81fd381ebb7d053f525e52e56655b1f8e2b89ddcc0a002e1b0c35c0a6920823641d7","ssdeep":"384:lPhVPXQ2G2XAQyqVxRQ5giCCMLtA15h5/F6l8aZwHwztLCpmst:lPBIt8I5h5t1qkOLCMst","tlshash":"bd921894f2b2b21383a735b8686f70093a729952ed06c855a55d94d87efcec89037f3c","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-04T05:33:17.358938Z","times_seen":72963,"resource_available":true,"data":"LyohIE1hZ25pZmljIFBvcHVwIC0gdjEuMS4wIC0gMjAxNi0wMi0yMAoqIGh0dHA6Ly9kaW1zZW1lbm92LmNvbS9wbHVnaW5zL21hZ25pZmljLXBvcHVwLwoqIENvcHlyaWdodCAoYykgMjAxNiBEbWl0cnkgU2VtZW5vdjsgKi8KIWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sYSk6YSgib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/cmVxdWlyZSgianF1ZXJ5Iik6d2luZG93LmpRdWVyeXx8d2luZG93LlplcHRvKX0oZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9IkNsb3NlIixpPSJCZWZvcmVDbG9zZSIsaj0iQWZ0ZXJDbG9zZSIsaz0iQmVmb3JlQXBwZW5kIixsPSJNYXJrdXBQYXJzZSIsbT0iT3BlbiIsbj0iQ2hhbmdlIixvPSJtZnAiLHA9Ii4iK28scT0ibWZwLXJlYWR5IixyPSJtZnAtcmVtb3ZpbmciLHM9Im1mcC1wcmV2ZW50LWNsb3NlIix0PWZ1bmN0aW9uKCl7fSx1PSEhd2luZG93LmpRdWVyeSx2PWEod2luZG93KSx3PWZ1bmN0aW9uKGEsYyl7Yi5ldi5vbihvK2ErcCxjKX0seD1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZi5jbGFzc05hbWU9Im1mcC0iK2IsZCYmKGYuaW5uZXJIVE1MPWQpLGU/YyYmYy5hcHBlbmRDaGlsZChmKTooZj1hKGYpLGMmJmYuYXBwZW5kVG8oYykpLGZ9LHk9ZnVuY3Rpb24oYyxkKXtiLmV2LnRyaWdnZXJIYW5kbGVyKG8rYyxkKSxiLnN0LmNhbGxiYWNrcyYmKGM9Yy5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKStjLnNsaWNlKDEpLGIuc3QuY2FsbGJhY2tzW2NdJiZiLnN0LmNhbGxiYWNrc1tjXS5hcHBseShiLGEuaXNBcnJheShkKT9kOltkXSkpfSx6PWZ1bmN0aW9uKGMpe3JldHVybiBjPT09ZyYmYi5jdXJyVGVtcGxhdGUuY2xvc2VCdG58fChiLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bj1hKGIuc3QuY2xvc2VNYXJrdXAucmVwbGFjZSgiJXRpdGxlJSIsYi5zdC50Q2xvc2UpKSxnPWMpLGIuY3VyclRlbXBsYXRlLmNsb3NlQnRufSxBPWZ1bmN0aW9uKCl7YS5tYWduaWZpY1BvcHVwLmluc3RhbmNlfHwoYj1uZXcgdCxiLmluaXQoKSxhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2U9Yil9LEI9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikuc3R5bGUsYj1bIm1zIiwiTyIsIk1veiIsIldlYmtpdCJdO2lmKHZvaWQgMCE9PWEudHJhbnNpdGlvbilyZXR1cm4hMDtmb3IoO2IubGVuZ3RoOylpZihiLnBvcCgpKyJUcmFuc2l0aW9uImluIGEpcmV0dXJuITA7cmV0dXJuITF9O3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LGluaXQ6ZnVuY3Rpb24oKXt2YXIgYz1uYXZpZ2F0b3IuYXBwVmVyc2lvbjtiLmlzTG93SUU9Yi5pc0lFOD1kb2N1bWVudC5hbGwmJiFkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLGIuaXNBbmRyb2lkPS9hbmRyb2lkL2dpLnRlc3QoYyksYi5pc0lPUz0vaXBob25lfGlwYWR8aXBvZC9naS50ZXN0KGMpLGIuc3VwcG9ydHNUcmFuc2l0aW9uPUIoKSxiLnByb2JhYmx5TW9iaWxlPWIuaXNBbmRyb2lkfHxiLmlzSU9TfHwvKE9wZXJhIE1pbmkpfEtpbmRsZXx3ZWJPU3xCbGFja0JlcnJ5fChPcGVyYSBNb2JpKXwoV2luZG93cyBQaG9uZSl8SUVNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGQ9YShkb2N1bWVudCksYi5wb3B1cHNDYWNoZT17fX0sb3BlbjpmdW5jdGlvbihjKXt2YXIgZTtpZihjLmlzT2JqPT09ITEpe2IuaXRlbXM9Yy5pdGVtcy50b0FycmF5KCksYi5pbmRleD0wO3ZhciBnLGg9Yy5pdGVtcztmb3IoZT0wO2U8aC5sZW5ndGg7ZSsrKWlmKGc9aFtlXSxnLnBhcnNlZCYmKGc9Zy5lbFswXSksZz09PWMuZWxbMF0pe2IuaW5kZXg9ZTticmVha319ZWxzZSBiLml0ZW1zPWEuaXNBcnJheShjLml0ZW1zKT9jLml0ZW1zOltjLml0ZW1zXSxiLmluZGV4PWMuaW5kZXh8fDA7aWYoYi5pc09wZW4pcmV0dXJuIHZvaWQgYi51cGRhdGVJdGVtSFRNTCgpO2IudHlwZXM9W10sZj0iIixjLm1haW5FbCYmYy5tYWluRWwubGVuZ3RoP2IuZXY9Yy5tYWluRWwuZXEoMCk6Yi5ldj1kLGMua2V5PyhiLnBvcHVwc0NhY2hlW2Mua2V5XXx8KGIucG9wdXBzQ2FjaGVbYy5rZXldPXt9KSxiLmN1cnJUZW1wbGF0ZT1iLnBvcHVwc0NhY2hlW2Mua2V5XSk6Yi5jdXJyVGVtcGxhdGU9e30sYi5zdD1hLmV4dGVuZCghMCx7fSxhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMsYyksYi5maXhlZENvbnRlbnRQb3M9ImF1dG8iPT09Yi5zdC5maXhlZENvbnRlbnRQb3M/IWIucHJvYmFibHlNb2JpbGU6Yi5zdC5maXhlZENvbnRlbnRQb3MsYi5zdC5tb2RhbCYmKGIuc3QuY2xvc2VPbkNvbnRlbnRDbGljaz0hMSxiLnN0LmNsb3NlT25CZ0NsaWNrPSExLGIuc3Quc2hvd0Nsb3NlQnRuPSExLGIuc3QuZW5hYmxlRXNjYXBlS2V5PSExKSxiLmJnT3ZlcmxheXx8KGIuYmdPdmVybGF5PXgoImJnIikub24oImNsaWNrIitwLGZ1bmN0aW9uKCl7Yi5jbG9zZSgpfSksYi53cmFwPXgoIndyYXAiKS5hdHRyKCJ0YWJpbmRleCIsLTEpLm9uKCJjbGljayIrcCxmdW5jdGlvbihhKXtiLl9jaGVja0lmQ2xvc2UoYS50YXJnZXQpJiZiLmNsb3NlKCl9KSxiLmNvbnRhaW5lcj14KCJjb250YWluZXIiLGIud3JhcCkpLGIuY29udGVudENvbnRhaW5lcj14KCJjb250ZW50IiksYi5zdC5wcmVsb2FkZXImJihiLnByZWxvYWRlcj14KCJwcmVsb2FkZXIiLGIuY29udGFpbmVyLGIuc3QudExvYWRpbmcpKTt2YXIgaT1hLm1hZ25pZmljUG9wdXAubW9kdWxlcztmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXt2YXIgaj1pW2VdO2o9ai5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStqLnNsaWNlKDEpLGJbImluaXQiK2pdLmNhbGwoYil9eSgiQmVmb3JlT3BlbiIpLGIuc3Quc2hvd0Nsb3NlQnRuJiYoYi5zdC5jbG9zZUJ0bkluc2lkZT8odyhsLGZ1bmN0aW9uKGEsYixjLGQpe2MuY2xvc2VfcmVwbGFjZVdpdGg9eihkLnR5cGUpfSksZis9IiBtZnAtY2xvc2UtYnRuLWluIik6Yi53cmFwLmFwcGVuZCh6KCkpKSxiLnN0LmFsaWduVG9wJiYoZis9IiBtZnAtYWxpZ24tdG9wIiksYi5maXhlZENvbnRlbnRQb3M/Yi53cmFwLmNzcyh7b3ZlcmZsb3c6Yi5zdC5vdmVyZmxvd1ksb3ZlcmZsb3dYOiJoaWRkZW4iLG92ZXJmbG93WTpiLnN0Lm92ZXJmbG93WX0pOmIud3JhcC5jc3Moe3RvcDp2LnNjcm9sbFRvcCgpLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9KSwoYi5zdC5maXhlZEJnUG9zPT09ITF8fCJhdXRvIj09PWIuc3QuZml4ZWRCZ1BvcyYmIWIuZml4ZWRDb250ZW50UG9zKSYmYi5iZ092ZXJsYXkuY3NzKHtoZWlnaHQ6ZC5oZWlnaHQoKSxwb3NpdGlvbjoiYWJzb2x1dGUifSksYi5zdC5lbmFibGVFc2NhcGVLZXkmJmQub24oImtleXVwIitwLGZ1bmN0aW9uKGEpezI3PT09YS5rZXlDb2RlJiZiLmNsb3NlKCl9KSx2Lm9uKCJyZXNpemUiK3AsZnVuY3Rpb24oKXtiLnVwZGF0ZVNpemUoKX0pLGIuc3QuY2xvc2VPbkNvbnRlbnRDbGlja3x8KGYrPSIgbWZwLWF1dG8tY3Vyc29yIiksZiYmYi53cmFwLmFkZENsYXNzKGYpO3ZhciBrPWIud0g9di5oZWlnaHQoKSxuPXt9O2lmKGIuZml4ZWRDb250ZW50UG9zJiZiLl9oYXNTY3JvbGxCYXIoaykpe3ZhciBvPWIuX2dldFNjcm9sbGJhclNpemUoKTtvJiYobi5tYXJnaW5SaWdodD1vKX1iLmZpeGVkQ29udGVudFBvcyYmKGIuaXNJRTc/YSgiYm9keSwgaHRtbCIpLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKTpuLm92ZXJmbG93PSJoaWRkZW4iKTt2YXIgcj1iLnN0Lm1haW5DbGFzcztyZXR1cm4gYi5pc0lFNyYmKHIrPSIgbWZwLWllNyIpLHImJmIuX2FkZENsYXNzVG9NRlAociksYi51cGRhdGVJdGVtSFRNTCgpLHkoIkJ1aWxkQ29udHJvbHMiKSxhKCJodG1sIikuY3NzKG4pLGIuYmdPdmVybGF5LmFkZChiLndyYXApLnByZXBlbmRUbyhiLnN0LnByZXBlbmRUb3x8YShkb2N1bWVudC5ib2R5KSksYi5fbGFzdEZvY3VzZWRFbD1kb2N1bWVudC5hY3RpdmVFbGVtZW50LHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmNvbnRlbnQ/KGIuX2FkZENsYXNzVG9NRlAocSksYi5fc2V0Rm9jdXMoKSk6Yi5iZ092ZXJsYXkuYWRkQ2xhc3MocSksZC5vbigiZm9jdXNpbiIrcCxiLl9vbkZvY3VzSW4pfSwxNiksYi5pc09wZW49ITAsYi51cGRhdGVTaXplKGspLHkobSksY30sY2xvc2U6ZnVuY3Rpb24oKXtiLmlzT3BlbiYmKHkoaSksYi5pc09wZW49ITEsYi5zdC5yZW1vdmFsRGVsYXkmJiFiLmlzTG93SUUmJmIuc3VwcG9ydHNUcmFuc2l0aW9uPyhiLl9hZGRDbGFzc1RvTUZQKHIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLl9jbG9zZSgpfSxiLnN0LnJlbW92YWxEZWxheSkpOmIuX2Nsb3NlKCkpfSxfY2xvc2U6ZnVuY3Rpb24oKXt5KGgpO3ZhciBjPXIrIiAiK3ErIiAiO2lmKGIuYmdPdmVybGF5LmRldGFjaCgpLGIud3JhcC5kZXRhY2goKSxiLmNvbnRhaW5lci5lbXB0eSgpLGIuc3QubWFpbkNsYXNzJiYoYys9Yi5zdC5tYWluQ2xhc3MrIiAiKSxiLl9yZW1vdmVDbGFzc0Zyb21NRlAoYyksYi5maXhlZENvbnRlbnRQb3Mpe3ZhciBlPXttYXJnaW5SaWdodDoiIn07Yi5pc0lFNz9hKCJib2R5LCBodG1sIikuY3NzKCJvdmVyZmxvdyIsIiIpOmUub3ZlcmZsb3c9IiIsYSgiaHRtbCIpLmNzcyhlKX1kLm9mZigia2V5dXAiK3ArIiBmb2N1c2luIitwKSxiLmV2Lm9mZihwKSxiLndyYXAuYXR0cigiY2xhc3MiLCJtZnAtd3JhcCIpLnJlbW92ZUF0dHIoInN0eWxlIiksYi5iZ092ZXJsYXkuYXR0cigiY2xhc3MiLCJtZnAtYmciKSxiLmNvbnRhaW5lci5hdHRyKCJjbGFzcyIsIm1mcC1jb250YWluZXIiKSwhYi5zdC5zaG93Q2xvc2VCdG58fGIuc3QuY2xvc2VCdG5JbnNpZGUmJmIuY3VyclRlbXBsYXRlW2IuY3Vyckl0ZW0udHlwZV0hPT0hMHx8Yi5jdXJyVGVtcGxhdGUuY2xvc2VCdG4mJmIuY3VyclRlbXBsYXRlLmNsb3NlQnRuLmRldGFjaCgpLGIuc3QuYXV0b0ZvY3VzTGFzdCYmYi5fbGFzdEZvY3VzZWRFbCYmYShiLl9sYXN0Rm9jdXNlZEVsKS5mb2N1cygpLGIuY3Vyckl0ZW09bnVsbCxiLmNvbnRlbnQ9bnVsbCxiLmN1cnJUZW1wbGF0ZT1udWxsLGIucHJldkhlaWdodD0wLHkoail9LHVwZGF0ZVNpemU6ZnVuY3Rpb24oYSl7aWYoYi5pc0lPUyl7dmFyIGM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoL3dpbmRvdy5pbm5lcldpZHRoLGQ9d2luZG93LmlubmVySGVpZ2h0KmM7Yi53cmFwLmNzcygiaGVpZ2h0IixkKSxiLndIPWR9ZWxzZSBiLndIPWF8fHYuaGVpZ2h0KCk7Yi5maXhlZENvbnRlbnRQb3N8fGIud3JhcC5jc3MoImhlaWdodCIsYi53SCkseSgiUmVzaXplIil9LHVwZGF0ZUl0ZW1IVE1MOmZ1bmN0aW9uKCl7dmFyIGM9Yi5pdGVtc1tiLmluZGV4XTtiLmNvbnRlbnRDb250YWluZXIuZGV0YWNoKCksYi5jb250ZW50JiZiLmNvbnRlbnQuZGV0YWNoKCksYy5wYXJzZWR8fChjPWIucGFyc2VFbChiLmluZGV4KSk7dmFyIGQ9Yy50eXBlO2lmKHkoIkJlZm9yZUNoYW5nZSIsW2IuY3Vyckl0ZW0/Yi5jdXJySXRlbS50eXBlOiIiLGRdKSxiLmN1cnJJdGVtPWMsIWIuY3VyclRlbXBsYXRlW2RdKXt2YXIgZj1iLnN0W2RdP2Iuc3RbZF0ubWFya3VwOiExO3koIkZpcnN0TWFya3VwUGFyc2UiLGYpLGY/Yi5jdXJyVGVtcGxhdGVbZF09YShmKTpiLmN1cnJUZW1wbGF0ZVtkXT0hMH1lJiZlIT09Yy50eXBlJiZiLmNvbnRhaW5lci5yZW1vdmVDbGFzcygibWZwLSIrZSsiLWhvbGRlciIpO3ZhciBnPWJbImdldCIrZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStkLnNsaWNlKDEpXShjLGIuY3VyclRlbXBsYXRlW2RdKTtiLmFwcGVuZENvbnRlbnQoZyxkKSxjLnByZWxvYWRlZD0hMCx5KG4sYyksZT1jLnR5cGUsYi5jb250YWluZXIucHJlcGVuZChiLmNvbnRlbnRDb250YWluZXIpLHkoIkFmdGVyQ2hhbmdlIil9LGFwcGVuZENvbnRlbnQ6ZnVuY3Rpb24oYSxjKXtiLmNvbnRlbnQ9YSxhP2Iuc3Quc2hvd0Nsb3NlQnRuJiZiLnN0LmNsb3NlQnRuSW5zaWRlJiZiLmN1cnJUZW1wbGF0ZVtjXT09PSEwP2IuY29udGVudC5maW5kKCIubWZwLWNsb3NlIikubGVuZ3RofHxiLmNvbnRlbnQuYXBwZW5kKHooKSk6Yi5jb250ZW50PWE6Yi5jb250ZW50PSIiLHkoayksYi5jb250YWluZXIuYWRkQ2xhc3MoIm1mcC0iK2MrIi1ob2xkZXIiKSxiLmNvbnRlbnRDb250YWluZXIuYXBwZW5kKGIuY29udGVudCl9LHBhcnNlRWw6ZnVuY3Rpb24oYyl7dmFyIGQsZT1iLml0ZW1zW2NdO2lmKGUudGFnTmFtZT9lPXtlbDphKGUpfTooZD1lLnR5cGUsZT17ZGF0YTplLHNyYzplLnNyY30pLGUuZWwpe2Zvcih2YXIgZj1iLnR5cGVzLGc9MDtnPGYubGVuZ3RoO2crKylpZihlLmVsLmhhc0NsYXNzKCJtZnAtIitmW2ddKSl7ZD1mW2ddO2JyZWFrfWUuc3JjPWUuZWwuYXR0cigiZGF0YS1tZnAtc3JjIiksZS5zcmN8fChlLnNyYz1lLmVsLmF0dHIoImhyZWYiKSl9cmV0dXJuIGUudHlwZT1kfHxiLnN0LnR5cGV8fCJpbmxpbmUiLGUuaW5kZXg9YyxlLnBhcnNlZD0hMCxiLml0ZW1zW2NdPWUseSgiRWxlbWVudFBhcnNlIixlKSxiLml0ZW1zW2NdfSxhZGRHcm91cDpmdW5jdGlvbihhLGMpe3ZhciBkPWZ1bmN0aW9uKGQpe2QubWZwRWw9dGhpcyxiLl9vcGVuQ2xpY2soZCxhLGMpfTtjfHwoYz17fSk7dmFyIGU9ImNsaWNrLm1hZ25pZmljUG9wdXAiO2MubWFpbkVsPWEsYy5pdGVtcz8oYy5pc09iaj0hMCxhLm9mZihlKS5vbihlLGQpKTooYy5pc09iaj0hMSxjLmRlbGVnYXRlP2Eub2ZmKGUpLm9uKGUsYy5kZWxlZ2F0ZSxkKTooYy5pdGVtcz1hLGEub2ZmKGUpLm9uKGUsZCkpKX0sX29wZW5DbGljazpmdW5jdGlvbihjLGQsZSl7dmFyIGY9dm9pZCAwIT09ZS5taWRDbGljaz9lLm1pZENsaWNrOmEubWFnbmlmaWNQb3B1cC5kZWZhdWx0cy5taWRDbGljaztpZihmfHwhKDI9PT1jLndoaWNofHxjLmN0cmxLZXl8fGMubWV0YUtleXx8Yy5hbHRLZXl8fGMuc2hpZnRLZXkpKXt2YXIgZz12b2lkIDAhPT1lLmRpc2FibGVPbj9lLmRpc2FibGVPbjphLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMuZGlzYWJsZU9uO2lmKGcpaWYoYS5pc0Z1bmN0aW9uKGcpKXtpZighZy5jYWxsKGIpKXJldHVybiEwfWVsc2UgaWYodi53aWR0aCgpPGcpcmV0dXJuITA7Yy50eXBlJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGIuaXNPcGVuJiZjLnN0b3BQcm9wYWdhdGlvbigpKSxlLmVsPWEoYy5tZnBFbCksZS5kZWxlZ2F0ZSYmKGUuaXRlbXM9ZC5maW5kKGUuZGVsZWdhdGUpKSxiLm9wZW4oZSl9fSx1cGRhdGVTdGF0dXM6ZnVuY3Rpb24oYSxkKXtpZihiLnByZWxvYWRlcil7YyE9PWEmJmIuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJtZnAtcy0iK2MpLGR8fCJsb2FkaW5nIiE9PWF8fChkPWIuc3QudExvYWRpbmcpO3ZhciBlPXtzdGF0dXM6YSx0ZXh0OmR9O3koIlVwZGF0ZVN0YXR1cyIsZSksYT1lLnN0YXR1cyxkPWUudGV4dCxiLnByZWxvYWRlci5odG1sKGQpLGIucHJlbG9hZGVyLmZpbmQoImEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGEpe2Euc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9KSxiLmNvbnRhaW5lci5hZGRDbGFzcygibWZwLXMtIithKSxjPWF9fSxfY2hlY2tJZkNsb3NlOmZ1bmN0aW9uKGMpe2lmKCFhKGMpLmhhc0NsYXNzKHMpKXt2YXIgZD1iLnN0LmNsb3NlT25Db250ZW50Q2xpY2ssZT1iLnN0LmNsb3NlT25CZ0NsaWNrO2lmKGQmJmUpcmV0dXJuITA7aWYoIWIuY29udGVudHx8YShjKS5oYXNDbGFzcygibWZwLWNsb3NlIil8fGIucHJlbG9hZGVyJiZjPT09Yi5wcmVsb2FkZXJbMF0pcmV0dXJuITA7aWYoYz09PWIuY29udGVudFswXXx8YS5jb250YWlucyhiLmNvbnRlbnRbMF0sYykpe2lmKGQpcmV0dXJuITB9ZWxzZSBpZihlJiZhLmNvbnRhaW5zKGRvY3VtZW50LGMpKXJldHVybiEwO3JldHVybiExfX0sX2FkZENsYXNzVG9NRlA6ZnVuY3Rpb24oYSl7Yi5iZ092ZXJsYXkuYWRkQ2xhc3MoYSksYi53cmFwLmFkZENsYXNzKGEpfSxfcmVtb3ZlQ2xhc3NGcm9tTUZQOmZ1bmN0aW9uKGEpe3RoaXMuYmdPdmVybGF5LnJlbW92ZUNsYXNzKGEpLGIud3JhcC5yZW1vdmVDbGFzcyhhKX0sX2hhc1Njcm9sbEJhcjpmdW5jdGlvbihhKXtyZXR1cm4oYi5pc0lFNz9kLmhlaWdodCgpOmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KT4oYXx8di5oZWlnaHQoKSl9LF9zZXRGb2N1czpmdW5jdGlvbigpeyhiLnN0LmZvY3VzP2IuY29udGVudC5maW5kKGIuc3QuZm9jdXMpLmVxKDApOmIud3JhcCkuZm9jdXMoKX0sX29uRm9jdXNJbjpmdW5jdGlvbihjKXtyZXR1cm4gYy50YXJnZXQ9PT1iLndyYXBbMF18fGEuY29udGFpbnMoYi53cmFwWzBdLGMudGFyZ2V0KT92b2lkIDA6KGIuX3NldEZvY3VzKCksITEpfSxfcGFyc2VNYXJrdXA6ZnVuY3Rpb24oYixjLGQpe3ZhciBlO2QuZGF0YSYmKGM9YS5leHRlbmQoZC5kYXRhLGMpKSx5KGwsW2IsYyxkXSksYS5lYWNoKGMsZnVuY3Rpb24oYyxkKXtpZih2b2lkIDA9PT1kfHxkPT09ITEpcmV0dXJuITA7aWYoZT1jLnNwbGl0KCJfIiksZS5sZW5ndGg+MSl7dmFyIGY9Yi5maW5kKHArIi0iK2VbMF0pO2lmKGYubGVuZ3RoPjApe3ZhciBnPWVbMV07InJlcGxhY2VXaXRoIj09PWc/ZlswXSE9PWRbMF0mJmYucmVwbGFjZVdpdGgoZCk6ImltZyI9PT1nP2YuaXMoImltZyIpP2YuYXR0cigic3JjIixkKTpmLnJlcGxhY2VXaXRoKGEoIjxpbWc+IikuYXR0cigic3JjIixkKS5hdHRyKCJjbGFzcyIsZi5hdHRyKCJjbGFzcyIpKSk6Zi5hdHRyKGVbMV0sZCl9fWVsc2UgYi5maW5kKHArIi0iK2MpLmh0bWwoZCl9KX0sX2dldFNjcm9sbGJhclNpemU6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1iLnNjcm9sbGJhclNpemUpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc3R5bGUuY3NzVGV4dD0id2lkdGg6IDk5cHg7IGhlaWdodDogOTlweDsgb3ZlcmZsb3c6IHNjcm9sbDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IC05OTk5cHg7Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGIuc2Nyb2xsYmFyU2l6ZT1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGgsZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX1yZXR1cm4gYi5zY3JvbGxiYXJTaXplfX0sYS5tYWduaWZpY1BvcHVwPXtpbnN0YW5jZTpudWxsLHByb3RvOnQucHJvdG90eXBlLG1vZHVsZXM6W10sb3BlbjpmdW5jdGlvbihiLGMpe3JldHVybiBBKCksYj1iP2EuZXh0ZW5kKCEwLHt9LGIpOnt9LGIuaXNPYmo9ITAsYi5pbmRleD1jfHwwLHRoaXMuaW5zdGFuY2Uub3BlbihiKX0sY2xvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gYS5tYWduaWZpY1BvcHVwLmluc3RhbmNlJiZhLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UuY2xvc2UoKX0scmVnaXN0ZXJNb2R1bGU6ZnVuY3Rpb24oYixjKXtjLm9wdGlvbnMmJihhLm1hZ25pZmljUG9wdXAuZGVmYXVsdHNbYl09Yy5vcHRpb25zKSxhLmV4dGVuZCh0aGlzLnByb3RvLGMucHJvdG8pLHRoaXMubW9kdWxlcy5wdXNoKGIpfSxkZWZhdWx0czp7ZGlzYWJsZU9uOjAsa2V5Om51bGwsbWlkQ2xpY2s6ITEsbWFpbkNsYXNzOiIiLHByZWxvYWRlcjohMCxmb2N1czoiIixjbG9zZU9uQ29udGVudENsaWNrOiExLGNsb3NlT25CZ0NsaWNrOiEwLGNsb3NlQnRuSW5zaWRlOiEwLHNob3dDbG9zZUJ0bjohMCxlbmFibGVFc2NhcGVLZXk6ITAsbW9kYWw6ITEsYWxpZ25Ub3A6ITEscmVtb3ZhbERlbGF5OjAscHJlcGVuZFRvOm51bGwsZml4ZWRDb250ZW50UG9zOiJhdXRvIixmaXhlZEJnUG9zOiJhdXRvIixvdmVyZmxvd1k6ImF1dG8iLGNsb3NlTWFya3VwOic8YnV0dG9uIHRpdGxlPSIldGl0bGUlIiB0eXBlPSJidXR0b24iIGNsYXNzPSJtZnAtY2xvc2UiPiYjMjE1OzwvYnV0dG9uPicsdENsb3NlOiJDbG9zZSAoRXNjKSIsdExvYWRpbmc6IkxvYWRpbmcuLi4iLGF1dG9Gb2N1c0xhc3Q6ITB9fSxhLmZuLm1hZ25pZmljUG9wdXA9ZnVuY3Rpb24oYyl7QSgpO3ZhciBkPWEodGhpcyk7aWYoInN0cmluZyI9PXR5cGVvZiBjKWlmKCJvcGVuIj09PWMpe3ZhciBlLGY9dT9kLmRhdGEoIm1hZ25pZmljUG9wdXAiKTpkWzBdLm1hZ25pZmljUG9wdXAsZz1wYXJzZUludChhcmd1bWVudHNbMV0sMTApfHwwO2YuaXRlbXM/ZT1mLml0ZW1zW2ddOihlPWQsZi5kZWxlZ2F0ZSYmKGU9ZS5maW5kKGYuZGVsZWdhdGUpKSxlPWUuZXEoZykpLGIuX29wZW5DbGljayh7bWZwRWw6ZX0sZCxmKX1lbHNlIGIuaXNPcGVuJiZiW2NdLmFwcGx5KGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtlbHNlIGM9YS5leHRlbmQoITAse30sYyksdT9kLmRhdGEoIm1hZ25pZmljUG9wdXAiLGMpOmRbMF0ubWFnbmlmaWNQb3B1cD1jLGIuYWRkR3JvdXAoZCxjKTtyZXR1cm4gZH07dmFyIEMsRCxFLEY9ImlubGluZSIsRz1mdW5jdGlvbigpe0UmJihELmFmdGVyKEUuYWRkQ2xhc3MoQykpLmRldGFjaCgpLEU9bnVsbCl9O2EubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShGLHtvcHRpb25zOntoaWRkZW5DbGFzczoiaGlkZSIsbWFya3VwOiIiLHROb3RGb3VuZDoiQ29udGVudCBub3QgZm91bmQifSxwcm90bzp7aW5pdElubGluZTpmdW5jdGlvbigpe2IudHlwZXMucHVzaChGKSx3KGgrIi4iK0YsZnVuY3Rpb24oKXtHKCl9KX0sZ2V0SW5saW5lOmZ1bmN0aW9uKGMsZCl7aWYoRygpLGMuc3JjKXt2YXIgZT1iLnN0LmlubGluZSxmPWEoYy5zcmMpO2lmKGYubGVuZ3RoKXt2YXIgZz1mWzBdLnBhcmVudE5vZGU7ZyYmZy50YWdOYW1lJiYoRHx8KEM9ZS5oaWRkZW5DbGFzcyxEPXgoQyksQz0ibWZwLSIrQyksRT1mLmFmdGVyKEQpLmRldGFjaCgpLnJlbW92ZUNsYXNzKEMpKSxiLnVwZGF0ZVN0YXR1cygicmVhZHkiKX1lbHNlIGIudXBkYXRlU3RhdHVzKCJlcnJvciIsZS50Tm90Rm91bmQpLGY9YSgiPGRpdj4iKTtyZXR1cm4gYy5pbmxpbmVFbGVtZW50PWYsZn1yZXR1cm4gYi51cGRhdGVTdGF0dXMoInJlYWR5IiksYi5fcGFyc2VNYXJrdXAoZCx7fSxjKSxkfX19KTt2YXIgSCxJPSJhamF4IixKPWZ1bmN0aW9uKCl7SCYmYShkb2N1bWVudC5ib2R5KS5yZW1vdmVDbGFzcyhIKX0sSz1mdW5jdGlvbigpe0ooKSxiLnJlcSYmYi5yZXEuYWJvcnQoKX07YS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKEkse29wdGlvbnM6e3NldHRpbmdzOm51bGwsY3Vyc29yOiJtZnAtYWpheC1jdXIiLHRFcnJvcjonPGEgaHJlZj0iJXVybCUiPlRoZSBjb250ZW50PC9hPiBjb3VsZCBub3QgYmUgbG9hZGVkLid9LHByb3RvOntpbml0QWpheDpmdW5jdGlvbigpe2IudHlwZXMucHVzaChJKSxIPWIuc3QuYWpheC5jdXJzb3IsdyhoKyIuIitJLEspLHcoIkJlZm9yZUNoYW5nZS4iK0ksSyl9LGdldEFqYXg6ZnVuY3Rpb24oYyl7SCYmYShkb2N1bWVudC5ib2R5KS5hZGRDbGFzcyhIKSxiLnVwZGF0ZVN0YXR1cygibG9hZGluZyIpO3ZhciBkPWEuZXh0ZW5kKHt1cmw6Yy5zcmMsc3VjY2VzczpmdW5jdGlvbihkLGUsZil7dmFyIGc9e2RhdGE6ZCx4aHI6Zn07eSgiUGFyc2VBamF4IixnKSxiLmFwcGVuZENvbnRlbnQoYShnLmRhdGEpLEkpLGMuZmluaXNoZWQ9ITAsSigpLGIuX3NldEZvY3VzKCksc2V0VGltZW91dChmdW5jdGlvbigpe2Iud3JhcC5hZGRDbGFzcyhxKX0sMTYpLGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpLHkoIkFqYXhDb250ZW50QWRkZWQiKX0sZXJyb3I6ZnVuY3Rpb24oKXtKKCksYy5maW5pc2hlZD1jLmxvYWRFcnJvcj0hMCxiLnVwZGF0ZVN0YXR1cygiZXJyb3IiLGIuc3QuYWpheC50RXJyb3IucmVwbGFjZSgiJXVybCUiLGMuc3JjKSl9fSxiLnN0LmFqYXguc2V0dGluZ3MpO3JldHVybiBiLnJlcT1hLmFqYXgoZCksIiJ9fX0pO3ZhciBMLE09ZnVuY3Rpb24oYyl7aWYoYy5kYXRhJiZ2b2lkIDAhPT1jLmRhdGEudGl0bGUpcmV0dXJuIGMuZGF0YS50aXRsZTt2YXIgZD1iLnN0LmltYWdlLnRpdGxlU3JjO2lmKGQpe2lmKGEuaXNGdW5jdGlvbihkKSlyZXR1cm4gZC5jYWxsKGIsYyk7aWYoYy5lbClyZXR1cm4gYy5lbC5hdHRyKGQpfHwiIn1yZXR1cm4iIn07YS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKCJpbWFnZSIse29wdGlvbnM6e21hcmt1cDonPGRpdiBjbGFzcz0ibWZwLWZpZ3VyZSI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48ZmlndXJlPjxkaXYgY2xhc3M9Im1mcC1pbWciPjwvZGl2PjxmaWdjYXB0aW9uPjxkaXYgY2xhc3M9Im1mcC1ib3R0b20tYmFyIj48ZGl2IGNsYXNzPSJtZnAtdGl0bGUiPjwvZGl2PjxkaXYgY2xhc3M9Im1mcC1jb3VudGVyIj48L2Rpdj48L2Rpdj48L2ZpZ2NhcHRpb24+PC9maWd1cmU+PC9kaXY+JyxjdXJzb3I6Im1mcC16b29tLW91dC1jdXIiLHRpdGxlU3JjOiJ0aXRsZSIsdmVydGljYWxGaXQ6ITAsdEVycm9yOic8YSBocmVmPSIldXJsJSI+VGhlIGltYWdlPC9hPiBjb3VsZCBub3QgYmUgbG9hZGVkLid9LHByb3RvOntpbml0SW1hZ2U6ZnVuY3Rpb24oKXt2YXIgYz1iLnN0LmltYWdlLGQ9Ii5pbWFnZSI7Yi50eXBlcy5wdXNoKCJpbWFnZSIpLHcobStkLGZ1bmN0aW9uKCl7ImltYWdlIj09PWIuY3Vyckl0ZW0udHlwZSYmYy5jdXJzb3ImJmEoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoYy5jdXJzb3IpfSksdyhoK2QsZnVuY3Rpb24oKXtjLmN1cnNvciYmYShkb2N1bWVudC5ib2R5KS5yZW1vdmVDbGFzcyhjLmN1cnNvciksdi5vZmYoInJlc2l6ZSIrcCl9KSx3KCJSZXNpemUiK2QsYi5yZXNpemVJbWFnZSksYi5pc0xvd0lFJiZ3KCJBZnRlckNoYW5nZSIsYi5yZXNpemVJbWFnZSl9LHJlc2l6ZUltYWdlOmZ1bmN0aW9uKCl7dmFyIGE9Yi5jdXJySXRlbTtpZihhJiZhLmltZyYmYi5zdC5pbWFnZS52ZXJ0aWNhbEZpdCl7dmFyIGM9MDtiLmlzTG93SUUmJihjPXBhcnNlSW50KGEuaW1nLmNzcygicGFkZGluZy10b3AiKSwxMCkrcGFyc2VJbnQoYS5pbWcuY3NzKCJwYWRkaW5nLWJvdHRvbSIpLDEwKSksYS5pbWcuY3NzKCJtYXgtaGVpZ2h0IixiLndILWMpfX0sX29uSW1hZ2VIYXNTaXplOmZ1bmN0aW9uKGEpe2EuaW1nJiYoYS5oYXNTaXplPSEwLEwmJmNsZWFySW50ZXJ2YWwoTCksYS5pc0NoZWNraW5nSW1nU2l6ZT0hMSx5KCJJbWFnZUhhc1NpemUiLGEpLGEuaW1nSGlkZGVuJiYoYi5jb250ZW50JiZiLmNvbnRlbnQucmVtb3ZlQ2xhc3MoIm1mcC1sb2FkaW5nIiksYS5pbWdIaWRkZW49ITEpKX0sZmluZEltYWdlU2l6ZTpmdW5jdGlvbihhKXt2YXIgYz0wLGQ9YS5pbWdbMF0sZT1mdW5jdGlvbihmKXtMJiZjbGVhckludGVydmFsKEwpLEw9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtyZXR1cm4gZC5uYXR1cmFsV2lkdGg+MD92b2lkIGIuX29uSW1hZ2VIYXNTaXplKGEpOihjPjIwMCYmY2xlYXJJbnRlcnZhbChMKSxjKyssdm9pZCgzPT09Yz9lKDEwKTo0MD09PWM/ZSg1MCk6MTAwPT09YyYmZSg1MDApKSl9LGYpfTtlKDEpfSxnZXRJbWFnZTpmdW5jdGlvbihjLGQpe3ZhciBlPTAsZj1mdW5jdGlvbigpe2MmJihjLmltZ1swXS5jb21wbGV0ZT8oYy5pbWcub2ZmKCIubWZwbG9hZGVyIiksYz09PWIuY3Vyckl0ZW0mJihiLl9vbkltYWdlSGFzU2l6ZShjKSxiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSksYy5oYXNTaXplPSEwLGMubG9hZGVkPSEwLHkoIkltYWdlTG9hZENvbXBsZXRlIikpOihlKyssMjAwPmU/c2V0VGltZW91dChmLDEwMCk6ZygpKSl9LGc9ZnVuY3Rpb24oKXtjJiYoYy5pbWcub2ZmKCIubWZwbG9hZGVyIiksYz09PWIuY3Vyckl0ZW0mJihiLl9vbkltYWdlSGFzU2l6ZShjKSxiLnVwZGF0ZVN0YXR1cygiZXJyb3IiLGgudEVycm9yLnJlcGxhY2UoIiV1cmwlIixjLnNyYykpKSxjLmhhc1NpemU9ITAsYy5sb2FkZWQ9ITAsYy5sb2FkRXJyb3I9ITApfSxoPWIuc3QuaW1hZ2UsaT1kLmZpbmQoIi5tZnAtaW1nIik7aWYoaS5sZW5ndGgpe3ZhciBqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2ouY2xhc3NOYW1lPSJtZnAtaW1nIixjLmVsJiZjLmVsLmZpbmQoImltZyIpLmxlbmd0aCYmKGouYWx0PWMuZWwuZmluZCgiaW1nIikuYXR0cigiYWx0IikpLGMuaW1nPWEoaikub24oImxvYWQubWZwbG9hZGVyIixmKS5vbigiZXJyb3IubWZwbG9hZGVyIixnKSxqLnNyYz1jLnNyYyxpLmlzKCJpbWciKSYmKGMuaW1nPWMuaW1nLmNsb25lKCkpLGo9Yy5pbWdbMF0sai5uYXR1cmFsV2lkdGg+MD9jLmhhc1NpemU9ITA6ai53aWR0aHx8KGMuaGFzU2l6ZT0hMSl9cmV0dXJuIGIuX3BhcnNlTWFya3VwKGQse3RpdGxlOk0oYyksaW1nX3JlcGxhY2VXaXRoOmMuaW1nfSxjKSxiLnJlc2l6ZUltYWdlKCksYy5oYXNTaXplPyhMJiZjbGVhckludGVydmFsKEwpLGMubG9hZEVycm9yPyhkLmFkZENsYXNzKCJtZnAtbG9hZGluZyIpLGIudXBkYXRlU3RhdHVzKCJlcnJvciIsaC50RXJyb3IucmVwbGFjZSgiJXVybCUiLGMuc3JjKSkpOihkLnJlbW92ZUNsYXNzKCJtZnAtbG9hZGluZyIpLGIudXBkYXRlU3RhdHVzKCJyZWFkeSIpKSxkKTooYi51cGRhdGVTdGF0dXMoImxvYWRpbmciKSxjLmxvYWRpbmc9ITAsYy5oYXNTaXplfHwoYy5pbWdIaWRkZW49ITAsZC5hZGRDbGFzcygibWZwLWxvYWRpbmciKSxiLmZpbmRJbWFnZVNpemUoYykpLGQpfX19KTt2YXIgTixPPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PU4mJihOPXZvaWQgMCE9PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKS5zdHlsZS5Nb3pUcmFuc2Zvcm0pLE59O2EubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZSgiem9vbSIse29wdGlvbnM6e2VuYWJsZWQ6ITEsZWFzaW5nOiJlYXNlLWluLW91dCIsZHVyYXRpb246MzAwLG9wZW5lcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5pcygiaW1nIik/YTphLmZpbmQoImltZyIpfX0scHJvdG86e2luaXRab29tOmZ1bmN0aW9uKCl7dmFyIGEsYz1iLnN0Lnpvb20sZD0iLnpvb20iO2lmKGMuZW5hYmxlZCYmYi5zdXBwb3J0c1RyYW5zaXRpb24pe3ZhciBlLGYsZz1jLmR1cmF0aW9uLGo9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jbG9uZSgpLnJlbW92ZUF0dHIoInN0eWxlIikucmVtb3ZlQXR0cigiY2xhc3MiKS5hZGRDbGFzcygibWZwLWFuaW1hdGVkLWltYWdlIiksZD0iYWxsICIrYy5kdXJhdGlvbi8xZTMrInMgIitjLmVhc2luZyxlPXtwb3NpdGlvbjoiZml4ZWQiLHpJbmRleDo5OTk5LGxlZnQ6MCx0b3A6MCwiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IjoiaGlkZGVuIn0sZj0idHJhbnNpdGlvbiI7cmV0dXJuIGVbIi13ZWJraXQtIitmXT1lWyItbW96LSIrZl09ZVsiLW8tIitmXT1lW2ZdPWQsYi5jc3MoZSksYn0saz1mdW5jdGlvbigpe2IuY29udGVudC5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIil9O3coIkJ1aWxkQ29udHJvbHMiK2QsZnVuY3Rpb24oKXtpZihiLl9hbGxvd1pvb20oKSl7aWYoY2xlYXJUaW1lb3V0KGUpLGIuY29udGVudC5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhPWIuX2dldEl0ZW1Ub1pvb20oKSwhYSlyZXR1cm4gdm9pZCBrKCk7Zj1qKGEpLGYuY3NzKGIuX2dldE9mZnNldCgpKSxiLndyYXAuYXBwZW5kKGYpLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2YuY3NzKGIuX2dldE9mZnNldCghMCkpLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2soKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5yZW1vdmUoKSxhPWY9bnVsbCx5KCJab29tQW5pbWF0aW9uRW5kZWQiKX0sMTYpfSxnKX0sMTYpfX0pLHcoaStkLGZ1bmN0aW9uKCl7aWYoYi5fYWxsb3dab29tKCkpe2lmKGNsZWFyVGltZW91dChlKSxiLnN0LnJlbW92YWxEZWxheT1nLCFhKXtpZihhPWIuX2dldEl0ZW1Ub1pvb20oKSwhYSlyZXR1cm47Zj1qKGEpfWYuY3NzKGIuX2dldE9mZnNldCghMCkpLGIud3JhcC5hcHBlbmQoZiksYi5jb250ZW50LmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmLmNzcyhiLl9nZXRPZmZzZXQoKSl9LDE2KX19KSx3KGgrZCxmdW5jdGlvbigpe2IuX2FsbG93Wm9vbSgpJiYoaygpLGYmJmYucmVtb3ZlKCksYT1udWxsKX0pfX0sX2FsbG93Wm9vbTpmdW5jdGlvbigpe3JldHVybiJpbWFnZSI9PT1iLmN1cnJJdGVtLnR5cGV9LF9nZXRJdGVtVG9ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIGIuY3Vyckl0ZW0uaGFzU2l6ZT9iLmN1cnJJdGVtLmltZzohMX0sX2dldE9mZnNldDpmdW5jdGlvbihjKXt2YXIgZDtkPWM/Yi5jdXJySXRlbS5pbWc6Yi5zdC56b29tLm9wZW5lcihiLmN1cnJJdGVtLmVsfHxiLmN1cnJJdGVtKTt2YXIgZT1kLm9mZnNldCgpLGY9cGFyc2VJbnQoZC5jc3MoInBhZGRpbmctdG9wIiksMTApLGc9cGFyc2VJbnQoZC5jc3MoInBhZGRpbmctYm90dG9tIiksMTApO2UudG9wLT1hKHdpbmRvdykuc2Nyb2xsVG9wKCktZjt2YXIgaD17d2lkdGg6ZC53aWR0aCgpLGhlaWdodDoodT9kLmlubmVySGVpZ2h0KCk6ZFswXS5vZmZzZXRIZWlnaHQpLWctZn07cmV0dXJuIE8oKT9oWyItbW96LXRyYW5zZm9ybSJdPWgudHJhbnNmb3JtPSJ0cmFuc2xhdGUoIitlLmxlZnQrInB4LCIrZS50b3ArInB4KSI6KGgubGVmdD1lLmxlZnQsaC50b3A9ZS50b3ApLGh9fX0pO3ZhciBQPSJpZnJhbWUiLFE9Ii8vYWJvdXQ6YmxhbmsiLFI9ZnVuY3Rpb24oYSl7aWYoYi5jdXJyVGVtcGxhdGVbUF0pe3ZhciBjPWIuY3VyclRlbXBsYXRlW1BdLmZpbmQoImlmcmFtZSIpO2MubGVuZ3RoJiYoYXx8KGNbMF0uc3JjPVEpLGIuaXNJRTgmJmMuY3NzKCJkaXNwbGF5IixhPyJibG9jayI6Im5vbmUiKSl9fTthLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoUCx7b3B0aW9uczp7bWFya3VwOic8ZGl2IGNsYXNzPSJtZnAtaWZyYW1lLXNjYWxlciI+PGRpdiBjbGFzcz0ibWZwLWNsb3NlIj48L2Rpdj48aWZyYW1lIGNsYXNzPSJtZnAtaWZyYW1lIiBzcmM9Ii8vYWJvdXQ6YmxhbmsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+PC9kaXY+JyxzcmNBY3Rpb246ImlmcmFtZV9zcmMiLHBhdHRlcm5zOnt5b3V0dWJlOntpbmRleDoieW91dHViZS5jb20iLGlkOiJ2PSIsc3JjOiIvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8laWQlP2F1dG9wbGF5PTEifSx2aW1lbzp7aW5kZXg6InZpbWVvLmNvbS8iLGlkOiIvIixzcmM6Ii8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8laWQlP2F1dG9wbGF5PTEifSxnbWFwczp7aW5kZXg6Ii8vbWFwcy5nb29nbGUuIixzcmM6IiVpZCUmb3V0cHV0PWVtYmVkIn19fSxwcm90bzp7aW5pdElmcmFtZTpmdW5jdGlvbigpe2IudHlwZXMucHVzaChQKSx3KCJCZWZvcmVDaGFuZ2UiLGZ1bmN0aW9uKGEsYixjKXtiIT09YyYmKGI9PT1QP1IoKTpjPT09UCYmUighMCkpfSksdyhoKyIuIitQLGZ1bmN0aW9uKCl7UigpfSl9LGdldElmcmFtZTpmdW5jdGlvbihjLGQpe3ZhciBlPWMuc3JjLGY9Yi5zdC5pZnJhbWU7YS5lYWNoKGYucGF0dGVybnMsZnVuY3Rpb24oKXtyZXR1cm4gZS5pbmRleE9mKHRoaXMuaW5kZXgpPi0xPyh0aGlzLmlkJiYoZT0ic3RyaW5nIj09dHlwZW9mIHRoaXMuaWQ/ZS5zdWJzdHIoZS5sYXN0SW5kZXhPZih0aGlzLmlkKSt0aGlzLmlkLmxlbmd0aCxlLmxlbmd0aCk6dGhpcy5pZC5jYWxsKHRoaXMsZSkpLGU9dGhpcy5zcmMucmVwbGFjZSgiJWlkJSIsZSksITEpOnZvaWQgMH0pO3ZhciBnPXt9O3JldHVybiBmLnNyY0FjdGlvbiYmKGdbZi5zcmNBY3Rpb25dPWUpLGIuX3BhcnNlTWFya3VwKGQsZyxjKSxiLnVwZGF0ZVN0YXR1cygicmVhZHkiKSxkfX19KTt2YXIgUz1mdW5jdGlvbihhKXt2YXIgYz1iLml0ZW1zLmxlbmd0aDtyZXR1cm4gYT5jLTE/YS1jOjA+YT9jK2E6YX0sVD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEucmVwbGFjZSgvJWN1cnIlL2dpLGIrMSkucmVwbGFjZSgvJXRvdGFsJS9naSxjKX07YS5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKCJnYWxsZXJ5Iix7b3B0aW9uczp7ZW5hYmxlZDohMSxhcnJvd01hcmt1cDonPGJ1dHRvbiB0aXRsZT0iJXRpdGxlJSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWZwLWFycm93IG1mcC1hcnJvdy0lZGlyJSI+PC9idXR0b24+JyxwcmVsb2FkOlswLDJdLG5hdmlnYXRlQnlJbWdDbGljazohMCxhcnJvd3M6ITAsdFByZXY6IlByZXZpb3VzIChMZWZ0IGFycm93IGtleSkiLHROZXh0OiJOZXh0IChSaWdodCBhcnJvdyBrZXkpIix0Q291bnRlcjoiJWN1cnIlIG9mICV0b3RhbCUifSxwcm90bzp7aW5pdEdhbGxlcnk6ZnVuY3Rpb24oKXt2YXIgYz1iLnN0LmdhbGxlcnksZT0iLm1mcC1nYWxsZXJ5IjtyZXR1cm4gYi5kaXJlY3Rpb249ITAsYyYmYy5lbmFibGVkPyhmKz0iIG1mcC1nYWxsZXJ5Iix3KG0rZSxmdW5jdGlvbigpe2MubmF2aWdhdGVCeUltZ0NsaWNrJiZiLndyYXAub24oImNsaWNrIitlLCIubWZwLWltZyIsZnVuY3Rpb24oKXtyZXR1cm4gYi5pdGVtcy5sZW5ndGg+MT8oYi5uZXh0KCksITEpOnZvaWQgMH0pLGQub24oImtleWRvd24iK2UsZnVuY3Rpb24oYSl7Mzc9PT1hLmtleUNvZGU/Yi5wcmV2KCk6Mzk9PT1hLmtleUNvZGUmJmIubmV4dCgpfSl9KSx3KCJVcGRhdGVTdGF0dXMiK2UsZnVuY3Rpb24oYSxjKXtjLnRleHQmJihjLnRleHQ9VChjLnRleHQsYi5jdXJySXRlbS5pbmRleCxiLml0ZW1zLmxlbmd0aCkpfSksdyhsK2UsZnVuY3Rpb24oYSxkLGUsZil7dmFyIGc9Yi5pdGVtcy5sZW5ndGg7ZS5jb3VudGVyPWc+MT9UKGMudENvdW50ZXIsZi5pbmRleCxnKToiIn0pLHcoIkJ1aWxkQ29udHJvbHMiK2UsZnVuY3Rpb24oKXtpZihiLml0ZW1zLmxlbmd0aD4xJiZjLmFycm93cyYmIWIuYXJyb3dMZWZ0KXt2YXIgZD1jLmFycm93TWFya3VwLGU9Yi5hcnJvd0xlZnQ9YShkLnJlcGxhY2UoLyV0aXRsZSUvZ2ksYy50UHJldikucmVwbGFjZSgvJWRpciUvZ2ksImxlZnQiKSkuYWRkQ2xhc3MocyksZj1iLmFycm93UmlnaHQ9YShkLnJlcGxhY2UoLyV0aXRsZSUvZ2ksYy50TmV4dCkucmVwbGFjZSgvJWRpciUvZ2ksInJpZ2h0IikpLmFkZENsYXNzKHMpO2UuY2xpY2soZnVuY3Rpb24oKXtiLnByZXYoKX0pLGYuY2xpY2soZnVuY3Rpb24oKXtiLm5leHQoKX0pLGIuY29udGFpbmVyLmFwcGVuZChlLmFkZChmKSl9fSksdyhuK2UsZnVuY3Rpb24oKXtiLl9wcmVsb2FkVGltZW91dCYmY2xlYXJUaW1lb3V0KGIuX3ByZWxvYWRUaW1lb3V0KSxiLl9wcmVsb2FkVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5wcmVsb2FkTmVhcmJ5SW1hZ2VzKCksYi5fcHJlbG9hZFRpbWVvdXQ9bnVsbH0sMTYpfSksdm9pZCB3KGgrZSxmdW5jdGlvbigpe2Qub2ZmKGUpLGIud3JhcC5vZmYoImNsaWNrIitlKSxiLmFycm93UmlnaHQ9Yi5hcnJvd0xlZnQ9bnVsbH0pKTohMX0sbmV4dDpmdW5jdGlvbigpe2IuZGlyZWN0aW9uPSEwLGIuaW5kZXg9UyhiLmluZGV4KzEpLGIudXBkYXRlSXRlbUhUTUwoKX0scHJldjpmdW5jdGlvbigpe2IuZGlyZWN0aW9uPSExLGIuaW5kZXg9UyhiLmluZGV4LTEpLGIudXBkYXRlSXRlbUhUTUwoKX0sZ29UbzpmdW5jdGlvbihhKXtiLmRpcmVjdGlvbj1hPj1iLmluZGV4LGIuaW5kZXg9YSxiLnVwZGF0ZUl0ZW1IVE1MKCl9LHByZWxvYWROZWFyYnlJbWFnZXM6ZnVuY3Rpb24oKXt2YXIgYSxjPWIuc3QuZ2FsbGVyeS5wcmVsb2FkLGQ9TWF0aC5taW4oY1swXSxiLml0ZW1zLmxlbmd0aCksZT1NYXRoLm1pbihjWzFdLGIuaXRlbXMubGVuZ3RoKTtmb3IoYT0xO2E8PShiLmRpcmVjdGlvbj9lOmQpO2ErKyliLl9wcmVsb2FkSXRlbShiLmluZGV4K2EpO2ZvcihhPTE7YTw9KGIuZGlyZWN0aW9uP2Q6ZSk7YSsrKWIuX3ByZWxvYWRJdGVtKGIuaW5kZXgtYSl9LF9wcmVsb2FkSXRlbTpmdW5jdGlvbihjKXtpZihjPVMoYyksIWIuaXRlbXNbY10ucHJlbG9hZGVkKXt2YXIgZD1iLml0ZW1zW2NdO2QucGFyc2VkfHwoZD1iLnBhcnNlRWwoYykpLHkoIkxhenlMb2FkIixkKSwiaW1hZ2UiPT09ZC50eXBlJiYoZC5pbWc9YSgnPGltZyBjbGFzcz0ibWZwLWltZyIgLz4nKS5vbigibG9hZC5tZnBsb2FkZXIiLGZ1bmN0aW9uKCl7ZC5oYXNTaXplPSEwfSkub24oImVycm9yLm1mcGxvYWRlciIsZnVuY3Rpb24oKXtkLmhhc1NpemU9ITAsZC5sb2FkRXJyb3I9ITAseSgiTGF6eUxvYWRFcnJvciIsZCl9KS5hdHRyKCJzcmMiLGQuc3JjKSksZC5wcmVsb2FkZWQ9ITB9fX19KTt2YXIgVT0icmV0aW5hIjthLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoVSx7b3B0aW9uczp7cmVwbGFjZVNyYzpmdW5jdGlvbihhKXtyZXR1cm4gYS5zcmMucmVwbGFjZSgvXC5cdyskLyxmdW5jdGlvbihhKXtyZXR1cm4iQDJ4IithfSl9LHJhdGlvOjF9LHByb3RvOntpbml0UmV0aW5hOmZ1bmN0aW9uKCl7aWYod2luZG93LmRldmljZVBpeGVsUmF0aW8+MSl7dmFyIGE9Yi5zdC5yZXRpbmEsYz1hLnJhdGlvO2M9aXNOYU4oYyk/YygpOmMsYz4xJiYodygiSW1hZ2VIYXNTaXplLiIrVSxmdW5jdGlvbihhLGIpe2IuaW1nLmNzcyh7Im1heC13aWR0aCI6Yi5pbWdbMF0ubmF0dXJhbFdpZHRoL2Msd2lkdGg6IjEwMCUifSl9KSx3KCJFbGVtZW50UGFyc2UuIitVLGZ1bmN0aW9uKGIsZCl7ZC5zcmM9YS5yZXBsYWNlU3JjKGQsYyl9KSl9fX19KSxBKCl9KTs="}},"time_used":44,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":35,"receive":9,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets/templates/basic/dash2/js/lib/tooltipster.bundle.min.js","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.015Z","timestamp":1785159465015,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets/templates/basic/dash2/js/lib/tooltipster.bundle.min.js HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 11 Sep 2023 17:46:32 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 11536\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":64905,"size_decoded":11774,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (1611)","md5":"ba5b6ceae7b52d64158b8d5a7b9ed969","sha1":"b78b8f9fe442e68e3396d6a1e7b855f83025fbd1","sha256":"dd874ad276a97be88fcaa2194c9d4d632517920edc005054cd6c26b8111f662b","sha512":"a36ec5fbecc115a5234fc04f6219265714df5c6b91fe84db4ddbaf98ff900b4d029f988932524459a47b9b1d9b2fb3c4cbf8f7ebb98fde39ff34f383eb766cab","ssdeep":"768:wQV+mIUHjOeWCKNL9zrwhvzu+BJlJp1K/tjZKZmxC61WKTF29BLnmzeBNGssejmg:w6+mFOnNpzCu+B8emJQiMNV9/AyhtMUr","tlshash":"ff53420aa7f115229657b1b99a3fda093231802f56869cb43d5c47f81f1d03a97f3ba8","first_seen":"2026-07-27T07:42:30.72069Z","last_seen":"2026-07-27T13:38:47.778616Z","times_seen":3,"resource_available":true,"data":"LyohIHRvb2x0aXBzdGVyIHY0LjIuOCAqLyAhIGZ1bmN0aW9uKGEsIGIpIHsKICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsianF1ZXJ5Il0sIGZ1bmN0aW9uKGEpIHsKICAgICAgICByZXR1cm4gYihhKQogICAgfSkgOiAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzID0gYihyZXF1aXJlKCJqcXVlcnkiKSkgOiBiKGpRdWVyeSkKfSh0aGlzLCBmdW5jdGlvbihhKSB7CiAgICBmdW5jdGlvbiBiKGEpIHsKICAgICAgICB0aGlzLiRjb250YWluZXIsIHRoaXMuY29uc3RyYWludHMgPSBudWxsLCB0aGlzLl9fJHRvb2x0aXAsIHRoaXMuX19pbml0KGEpCiAgICB9CgogICAgZnVuY3Rpb24gYyhiLCBjKSB7CiAgICAgICAgdmFyIGQgPSAhMDsKICAgICAgICByZXR1cm4gYS5lYWNoKGIsIGZ1bmN0aW9uKGEsIGUpIHsKICAgICAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gY1thXSB8fCBiW2FdICE9PSBjW2FdID8gKGQgPSAhMSwgITEpIDogdm9pZCAwCiAgICAgICAgfSksIGQKICAgIH0KCiAgICBmdW5jdGlvbiBkKGIpIHsKICAgICAgICB2YXIgYyA9IGIuYXR0cigiaWQiKSwKICAgICAgICAgICAgZCA9IGMgPyBoLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjKSA6IG51bGw7CiAgICAgICAgcmV0dXJuIGQgPyBkID09PSBiWzBdIDogYS5jb250YWlucyhoLndpbmRvdy5kb2N1bWVudC5ib2R5LCBiWzBdKQogICAgfQoKICAgIGZ1bmN0aW9uIGUoKSB7CiAgICAgICAgaWYgKCFnKSByZXR1cm4gITE7CiAgICAgICAgdmFyIGEgPSBnLmRvY3VtZW50LmJvZHkgfHwgZy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgIGIgPSBhLnN0eWxlLAogICAgICAgICAgICBjID0gInRyYW5zaXRpb24iLAogICAgICAgICAgICBkID0gWyJNb3oiLCAiV2Via2l0IiwgIktodG1sIiwgIk8iLCAibXMiXTsKICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGJbY10pIHJldHVybiAhMDsKICAgICAgICBjID0gYy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGMuc3Vic3RyKDEpOwogICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgZC5sZW5ndGg7IGUrKykKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBiW2RbZV0gKyBjXSkgcmV0dXJuICEwOwogICAgICAgIHJldHVybiAhMQogICAgfQogICAgdmFyIGYgPSB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogImZhZGUiLAogICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogMzUwLAogICAgICAgICAgICBjb250ZW50OiBudWxsLAogICAgICAgICAgICBjb250ZW50QXNIVE1MOiAhMSwKICAgICAgICAgICAgY29udGVudENsb25pbmc6ICExLAogICAgICAgICAgICBkZWJ1ZzogITAsCiAgICAgICAgICAgIGRlbGF5OiAzMDAsCiAgICAgICAgICAgIGRlbGF5VG91Y2g6IFszMDAsIDUwMF0sCiAgICAgICAgICAgIGZ1bmN0aW9uSW5pdDogbnVsbCwKICAgICAgICAgICAgZnVuY3Rpb25CZWZvcmU6IG51bGwsCiAgICAgICAgICAgIGZ1bmN0aW9uUmVhZHk6IG51bGwsCiAgICAgICAgICAgIGZ1bmN0aW9uQWZ0ZXI6IG51bGwsCiAgICAgICAgICAgIGZ1bmN0aW9uRm9ybWF0OiBudWxsLAogICAgICAgICAgICBJRW1pbjogNiwKICAgICAgICAgICAgaW50ZXJhY3RpdmU6ICExLAogICAgICAgICAgICBtdWx0aXBsZTogITEsCiAgICAgICAgICAgIHBhcmVudDogbnVsbCwKICAgICAgICAgICAgcGx1Z2luczogWyJzaWRlVGlwIl0sCiAgICAgICAgICAgIHJlcG9zaXRpb25PblNjcm9sbDogITEsCiAgICAgICAgICAgIHJlc3RvcmF0aW9uOiAibm9uZSIsCiAgICAgICAgICAgIHNlbGZEZXN0cnVjdGlvbjogITAsCiAgICAgICAgICAgIHRoZW1lOiBbXSwKICAgICAgICAgICAgdGltZXI6IDAsCiAgICAgICAgICAgIHRyYWNrZXJJbnRlcnZhbDogNTAwLAogICAgICAgICAgICB0cmFja09yaWdpbjogITEsCiAgICAgICAgICAgIHRyYWNrVG9vbHRpcDogITEsCiAgICAgICAgICAgIHRyaWdnZXI6ICJob3ZlciIsCiAgICAgICAgICAgIHRyaWdnZXJDbG9zZTogewogICAgICAgICAgICAgICAgY2xpY2s6ICExLAogICAgICAgICAgICAgICAgbW91c2VsZWF2ZTogITEsCiAgICAgICAgICAgICAgICBvcmlnaW5DbGljazogITEsCiAgICAgICAgICAgICAgICBzY3JvbGw6ICExLAogICAgICAgICAgICAgICAgdGFwOiAhMSwKICAgICAgICAgICAgICAgIHRvdWNobGVhdmU6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRyaWdnZXJPcGVuOiB7CiAgICAgICAgICAgICAgICBjbGljazogITEsCiAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiAhMSwKICAgICAgICAgICAgICAgIHRhcDogITEsCiAgICAgICAgICAgICAgICB0b3VjaHN0YXJ0OiAhMQogICAgICAgICAgICB9LAogICAgICAgICAgICB1cGRhdGVBbmltYXRpb246ICJyb3RhdGUiLAogICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTkKICAgICAgICB9LAogICAgICAgIGcgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogbnVsbCwKICAgICAgICBoID0gewogICAgICAgICAgICBoYXNUb3VjaENhcGFiaWxpdHk6ICEoIWcgfHwgISgib250b3VjaHN0YXJ0IiBpbiBnIHx8IGcuRG9jdW1lbnRUb3VjaCAmJiBnLmRvY3VtZW50IGluc3RhbmNlb2YgZy5Eb2N1bWVudFRvdWNoIHx8IGcubmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzKSksCiAgICAgICAgICAgIGhhc1RyYW5zaXRpb25zOiBlKCksCiAgICAgICAgICAgIElFOiAhMSwKICAgICAgICAgICAgc2VtVmVyOiAiNC4yLjgiLAogICAgICAgICAgICB3aW5kb3c6IGcKICAgICAgICB9LAogICAgICAgIGkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fXyRlbWl0dGVyUHJpdmF0ZSA9IGEoe30pLCB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMgPSBhKHt9KSwgdGhpcy5fX2luc3RhbmNlc0xhdGVzdEFyciA9IFtdLCB0aGlzLl9fcGx1Z2lucyA9IHt9LCB0aGlzLl9lbnYgPSBoCiAgICAgICAgfTsKICAgIGkucHJvdG90eXBlID0gewogICAgICAgIF9fYnJpZGdlOiBmdW5jdGlvbihiLCBjLCBkKSB7CiAgICAgICAgICAgIGlmICghY1tkXSkgewogICAgICAgICAgICAgICAgdmFyIGUgPSBmdW5jdGlvbigpIHt9OwogICAgICAgICAgICAgICAgZS5wcm90b3R5cGUgPSBiOwogICAgICAgICAgICAgICAgdmFyIGcgPSBuZXcgZTsKICAgICAgICAgICAgICAgIGcuX19pbml0ICYmIGcuX19pbml0KGMpLCBhLmVhY2goYiwgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIDAgIT0gYS5pbmRleE9mKCJfXyIpICYmIChjW2FdID8gZi5kZWJ1ZyAmJiBjb25zb2xlLmxvZygiVGhlICIgKyBhICsgIiBtZXRob2Qgb2YgdGhlICIgKyBkICsgIiBwbHVnaW4gY29uZmxpY3RzIHdpdGggYW5vdGhlciBwbHVnaW4gb3IgbmF0aXZlIG1ldGhvZHMiKSA6IChjW2FdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnW2FdLmFwcGx5KGcsIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpKQogICAgICAgICAgICAgICAgICAgIH0sIGNbYV0uYnJpZGdlZCA9IGcpKQogICAgICAgICAgICAgICAgfSksIGNbZF0gPSBnCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIF9fc2V0V2luZG93OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBoLndpbmRvdyA9IGEsIHRoaXMKICAgICAgICB9LAogICAgICAgIF9nZXRSdWxlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gbmV3IGIoYSkKICAgICAgICB9LAogICAgICAgIF9vZmY6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fXyRlbWl0dGVyUHJpdmF0ZS5vZmYuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHJpdmF0ZSwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fXyRlbWl0dGVyUHJpdmF0ZS5vbi5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9vbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fXyRlbWl0dGVyUHJpdmF0ZS5vbmUuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHJpdmF0ZSwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfcGx1Z2luOiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIHZhciBjID0gdGhpczsKICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBiKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGIsCiAgICAgICAgICAgICAgICAgICAgZSA9IG51bGw7CiAgICAgICAgICAgICAgICByZXR1cm4gZC5pbmRleE9mKCIuIikgPiAwID8gZSA9IGMuX19wbHVnaW5zW2RdIDogYS5lYWNoKGMuX19wbHVnaW5zLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIubmFtZS5zdWJzdHJpbmcoYi5uYW1lLmxlbmd0aCAtIGQubGVuZ3RoIC0gMSkgPT0gIi4iICsgZCA/IChlID0gYiwgITEpIDogdm9pZCAwCiAgICAgICAgICAgICAgICB9KSwgZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiLm5hbWUuaW5kZXhPZigiLiIpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCJQbHVnaW5zIG11c3QgYmUgbmFtZXNwYWNlZCIpOwogICAgICAgICAgICByZXR1cm4gYy5fX3BsdWdpbnNbYi5uYW1lXSA9IGIsIGIuY29yZSAmJiBjLl9fYnJpZGdlKGIuY29yZSwgYywgYi5uYW1lKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX3RyaWdnZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpOwogICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGFbMF0gJiYgKGFbMF0gPSB7CiAgICAgICAgICAgICAgICB0eXBlOiBhWzBdCiAgICAgICAgICAgIH0pLCB0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLnRyaWdnZXIuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHJpdmF0ZSwgYSksIHRoaXMuX18kZW1pdHRlclB1YmxpYy50cmlnZ2VyLmFwcGx5KHRoaXMuX18kZW1pdHRlclB1YmxpYywgYSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGluc3RhbmNlczogZnVuY3Rpb24oYikgewogICAgICAgICAgICB2YXIgYyA9IFtdLAogICAgICAgICAgICAgICAgZCA9IGIgfHwgIi50b29sdGlwc3RlcmVkIjsKICAgICAgICAgICAgcmV0dXJuIGEoZCkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBiID0gYSh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBkID0gYi5kYXRhKCJ0b29sdGlwc3Rlci1ucyIpOwogICAgICAgICAgICAgICAgZCAmJiBhLmVhY2goZCwgZnVuY3Rpb24oYSwgZCkgewogICAgICAgICAgICAgICAgICAgIGMucHVzaChiLmRhdGEoZCkpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSwgYwogICAgICAgIH0sCiAgICAgICAgaW5zdGFuY2VzTGF0ZXN0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19pbnN0YW5jZXNMYXRlc3RBcnIKICAgICAgICB9LAogICAgICAgIG9mZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMub2ZmLmFwcGx5KHRoaXMuX18kZW1pdHRlclB1YmxpYywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMub24uYXBwbHkodGhpcy5fXyRlbWl0dGVyUHVibGljLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMub25lLmFwcGx5KHRoaXMuX18kZW1pdHRlclB1YmxpYywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cykpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBvcmlnaW5zOiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIHZhciBjID0gYiA/IGIgKyAiICIgOiAiIjsKICAgICAgICAgICAgcmV0dXJuIGEoYyArICIudG9vbHRpcHN0ZXJlZCIpLnRvQXJyYXkoKQogICAgICAgIH0sCiAgICAgICAgc2V0RGVmYXVsdHM6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgcmV0dXJuIGEuZXh0ZW5kKGYsIGIpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMudHJpZ2dlckhhbmRsZXIuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHVibGljLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9CiAgICB9LCBhLnRvb2x0aXBzdGVyID0gbmV3IGksIGEuVG9vbHRpcHN0ZXIgPSBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgdGhpcy5fX2NhbGxiYWNrcyA9IHsKICAgICAgICAgICAgY2xvc2U6IFtdLAogICAgICAgICAgICBvcGVuOiBbXQogICAgICAgIH0sIHRoaXMuX19jbG9zaW5nVGltZSwgdGhpcy5fX0NvbnRlbnQsIHRoaXMuX19jb250ZW50QmNyLCB0aGlzLl9fZGVzdHJveWVkID0gITEsIHRoaXMuX18kZW1pdHRlclByaXZhdGUgPSBhKHt9KSwgdGhpcy5fXyRlbWl0dGVyUHVibGljID0gYSh7fSksIHRoaXMuX19lbmFibGVkID0gITAsIHRoaXMuX19nYXJiYWdlQ29sbGVjdG9yLCB0aGlzLl9fR2VvbWV0cnksIHRoaXMuX19sYXN0UG9zaXRpb24sIHRoaXMuX19uYW1lc3BhY2UgPSAidG9vbHRpcHN0ZXItIiArIE1hdGgucm91bmQoMWU2ICogTWF0aC5yYW5kb20oKSksIHRoaXMuX19vcHRpb25zLCB0aGlzLl9fJG9yaWdpblBhcmVudHMsIHRoaXMuX19wb2ludGVySXNPdmVyT3JpZ2luID0gITEsIHRoaXMuX19wcmV2aW91c1RoZW1lcyA9IFtdLCB0aGlzLl9fc3RhdGUgPSAiY2xvc2VkIiwgdGhpcy5fX3RpbWVvdXRzID0gewogICAgICAgICAgICBjbG9zZTogW10sCiAgICAgICAgICAgIG9wZW46IG51bGwKICAgICAgICB9LCB0aGlzLl9fdG91Y2hFdmVudHMgPSBbXSwgdGhpcy5fX3RyYWNrZXIgPSBudWxsLCB0aGlzLl8kb3JpZ2luLCB0aGlzLl8kdG9vbHRpcCwgdGhpcy5fX2luaXQoYiwgYykKICAgIH0sIGEuVG9vbHRpcHN0ZXIucHJvdG90eXBlID0gewogICAgICAgIF9faW5pdDogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICB2YXIgZCA9IHRoaXM7CiAgICAgICAgICAgIGlmIChkLl8kb3JpZ2luID0gYShiKSwgZC5fX29wdGlvbnMgPSBhLmV4dGVuZCghMCwge30sIGYsIGMpLCBkLl9fb3B0aW9uc0Zvcm1hdCgpLCAhaC5JRSB8fCBoLklFID49IGQuX19vcHRpb25zLklFbWluKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBkLl8kb3JpZ2luLmRhdGEoInRvb2x0aXBzdGVyLWluaXRpYWxUaXRsZSIpICYmIChlID0gZC5fJG9yaWdpbi5hdHRyKCJ0aXRsZSIpLCB2b2lkIDAgPT09IGUgJiYgKGUgPSBudWxsKSwgZC5fJG9yaWdpbi5kYXRhKCJ0b29sdGlwc3Rlci1pbml0aWFsVGl0bGUiLCBlKSksIG51bGwgIT09IGQuX19vcHRpb25zLmNvbnRlbnQpIGQuX19jb250ZW50U2V0KGQuX19vcHRpb25zLmNvbnRlbnQpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGcsIGkgPSBkLl8kb3JpZ2luLmF0dHIoImRhdGEtdG9vbHRpcC1jb250ZW50Iik7CiAgICAgICAgICAgICAgICAgICAgaSAmJiAoZyA9IGEoaSkpLCBnICYmIGdbMF0gPyBkLl9fY29udGVudFNldChnLmZpcnN0KCkpIDogZC5fX2NvbnRlbnRTZXQoZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGQuXyRvcmlnaW4ucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidG9vbHRpcHN0ZXJlZCIpLCBkLl9fcHJlcGFyZU9yaWdpbigpLCBkLl9fcHJlcGFyZUdDKCksIGEuZWFjaChkLl9fb3B0aW9ucy5wbHVnaW5zLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgZC5fcGx1ZyhiKQogICAgICAgICAgICAgICAgfSksIGguaGFzVG91Y2hDYXBhYmlsaXR5ICYmIGEoaC53aW5kb3cuZG9jdW1lbnQuYm9keSkub24oInRvdWNobW92ZS4iICsgZC5fX25hbWVzcGFjZSArICItdHJpZ2dlck9wZW4iLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgZC5fdG91Y2hSZWNvcmRFdmVudChhKQogICAgICAgICAgICAgICAgfSksIGQuX29uKCJjcmVhdGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZC5fX3ByZXBhcmVUb29sdGlwKCkKICAgICAgICAgICAgICAgIH0pLl9vbigicmVwb3NpdGlvbmVkIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGQuX19sYXN0UG9zaXRpb24gPSBhLnBvc2l0aW9uCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9IGVsc2UgZC5fX29wdGlvbnMuZGlzYWJsZWQgPSAhMAogICAgICAgIH0sCiAgICAgICAgX19jb250ZW50SW5zZXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGEgPSB0aGlzLAogICAgICAgICAgICAgICAgYiA9IGEuXyR0b29sdGlwLmZpbmQoIi50b29sdGlwc3Rlci1jb250ZW50IiksCiAgICAgICAgICAgICAgICBjID0gYS5fX0NvbnRlbnQsCiAgICAgICAgICAgICAgICBkID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGMgPSBhCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICByZXR1cm4gYS5fdHJpZ2dlcih7CiAgICAgICAgICAgICAgICB0eXBlOiAiZm9ybWF0IiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGEuX19Db250ZW50LAogICAgICAgICAgICAgICAgZm9ybWF0OiBkCiAgICAgICAgICAgIH0pLCBhLl9fb3B0aW9ucy5mdW5jdGlvbkZvcm1hdCAmJiAoYyA9IGEuX19vcHRpb25zLmZ1bmN0aW9uRm9ybWF0LmNhbGwoYSwgYSwgewogICAgICAgICAgICAgICAgb3JpZ2luOiBhLl8kb3JpZ2luWzBdCiAgICAgICAgICAgIH0sIGEuX19Db250ZW50KSksICJzdHJpbmciICE9IHR5cGVvZiBjIHx8IGEuX19vcHRpb25zLmNvbnRlbnRBc0hUTUwgPyBiLmVtcHR5KCkuYXBwZW5kKGMpIDogYi50ZXh0KGMpLCBhCiAgICAgICAgfSwKICAgICAgICBfX2NvbnRlbnRTZXQ6IGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgcmV0dXJuIGIgaW5zdGFuY2VvZiBhICYmIHRoaXMuX19vcHRpb25zLmNvbnRlbnRDbG9uaW5nICYmIChiID0gYi5jbG9uZSghMCkpLCB0aGlzLl9fQ29udGVudCA9IGIsIHRoaXMuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgdHlwZTogInVwZGF0ZWQiLAogICAgICAgICAgICAgICAgY29udGVudDogYgogICAgICAgICAgICB9KSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX19kZXN0cm95RXJyb3I6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdG9vbHRpcCBoYXMgYmVlbiBkZXN0cm95ZWQgYW5kIGNhbm5vdCBleGVjdXRlIHlvdXIgbWV0aG9kIGNhbGwuIikKICAgICAgICB9LAogICAgICAgIF9fZ2VvbWV0cnk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYiA9IHRoaXMsCiAgICAgICAgICAgICAgICBjID0gYi5fJG9yaWdpbiwKICAgICAgICAgICAgICAgIGQgPSBiLl8kb3JpZ2luLmlzKCJhcmVhIik7CiAgICAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGIuXyRvcmlnaW4ucGFyZW50KCkuYXR0cigibmFtZSIpOwogICAgICAgICAgICAgICAgYyA9IGEoJ2ltZ1t1c2VtYXA9IiMnICsgZSArICciXScpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGYgPSBjWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgZyA9IGEoaC53aW5kb3cuZG9jdW1lbnQpLAogICAgICAgICAgICAgICAgaSA9IGEoaC53aW5kb3cpLAogICAgICAgICAgICAgICAgaiA9IGMsCiAgICAgICAgICAgICAgICBrID0gewogICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZTogewogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93OiBudWxsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogewogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGcuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZy53aWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHdpbmRvdzogewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGgud2luZG93LnNjcm9sbFggfHwgaC53aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGgud2luZG93LnNjcm9sbFkgfHwgaC53aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGkuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaS53aWR0aCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9yaWdpbjogewogICAgICAgICAgICAgICAgICAgICAgICBmaXhlZExpbmVhZ2U6ICExLAogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGYuYm90dG9tIC0gZi50b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZi5yaWdodCAtIGYubGVmdAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB1c2VtYXBJbWFnZTogZCA/IGNbMF0gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dPZmZzZXQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogZi5ib3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBmLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogZi5yaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZi50b3AKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IGIuXyRvcmlnaW4uYXR0cigic2hhcGUiKSwKICAgICAgICAgICAgICAgICAgICBtID0gYi5fJG9yaWdpbi5hdHRyKCJjb29yZHMiKTsKICAgICAgICAgICAgICAgIGlmIChtICYmIChtID0gbS5zcGxpdCgiLCIpLCBhLm1hcChtLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1bYl0gPSBwYXJzZUludChhKQogICAgICAgICAgICAgICAgICAgIH0pKSwgImRlZmF1bHQiICE9IGwpIHN3aXRjaCAobCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgImNpcmNsZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBtWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG1bMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gbyAtIHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbiAtIHA7CiAgICAgICAgICAgICAgICAgICAgICAgIGsub3JpZ2luLnNpemUuaGVpZ2h0ID0gMiAqIHAsIGsub3JpZ2luLnNpemUud2lkdGggPSBrLm9yaWdpbi5zaXplLmhlaWdodCwgay5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQgKz0gciwgay5vcmlnaW4ud2luZG93T2Zmc2V0LnRvcCArPSBxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJyZWN0IjoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IG1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gbVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBtWzNdOwogICAgICAgICAgICAgICAgICAgICAgICBrLm9yaWdpbi5zaXplLmhlaWdodCA9IHYgLSB0LCBrLm9yaWdpbi5zaXplLndpZHRoID0gdSAtIHMsIGsub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ICs9IHMsIGsub3JpZ2luLndpbmRvd09mZnNldC50b3AgKz0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicG9seSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHcgPSAwLCB4ID0gMCwgeSA9IDAsIHogPSAwLCBBID0gImV2ZW4iLCBCID0gMDsgQiA8IG0ubGVuZ3RoOyBCKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBDID0gbVtCXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVuIiA9PSBBID8gKEMgPiB5ICYmICh5ID0gQywgMCA9PT0gQiAmJiAodyA9IHkpKSwgdyA+IEMgJiYgKHcgPSBDKSwgQSA9ICJvZGQiKSA6IChDID4geiAmJiAoeiA9IEMsIDEgPT0gQiAmJiAoeCA9IHopKSwgeCA+IEMgJiYgKHggPSBDKSwgQSA9ICJldmVuIikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBrLm9yaWdpbi5zaXplLmhlaWdodCA9IHogLSB4LCBrLm9yaWdpbi5zaXplLndpZHRoID0geSAtIHcsIGsub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ICs9IHcsIGsub3JpZ2luLndpbmRvd09mZnNldC50b3AgKz0geAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBEID0gZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgay5vcmlnaW4uc2l6ZS5oZWlnaHQgPSBhLmhlaWdodCwgay5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQgPSBhLmxlZnQsIGsub3JpZ2luLndpbmRvd09mZnNldC50b3AgPSBhLnRvcCwgay5vcmlnaW4uc2l6ZS53aWR0aCA9IGEud2lkdGgKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZm9yIChiLl90cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgIGVkaXQ6IEQsCiAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBrLm9yaWdpbi5zaXplLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogay5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogay5vcmlnaW4ud2luZG93T2Zmc2V0LnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGsub3JpZ2luLnNpemUud2lkdGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgay5vcmlnaW4ud2luZG93T2Zmc2V0LnJpZ2h0ID0gay5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQgKyBrLm9yaWdpbi5zaXplLndpZHRoLCBrLm9yaWdpbi53aW5kb3dPZmZzZXQuYm90dG9tID0gay5vcmlnaW4ud2luZG93T2Zmc2V0LnRvcCArIGsub3JpZ2luLnNpemUuaGVpZ2h0LCBrLm9yaWdpbi5vZmZzZXQubGVmdCA9IGsub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ICsgay53aW5kb3cuc2Nyb2xsLmxlZnQsIGsub3JpZ2luLm9mZnNldC50b3AgPSBrLm9yaWdpbi53aW5kb3dPZmZzZXQudG9wICsgay53aW5kb3cuc2Nyb2xsLnRvcCwgay5vcmlnaW4ub2Zmc2V0LmJvdHRvbSA9IGsub3JpZ2luLm9mZnNldC50b3AgKyBrLm9yaWdpbi5zaXplLmhlaWdodCwgay5vcmlnaW4ub2Zmc2V0LnJpZ2h0ID0gay5vcmlnaW4ub2Zmc2V0LmxlZnQgKyBrLm9yaWdpbi5zaXplLndpZHRoLCBrLmF2YWlsYWJsZS5kb2N1bWVudCA9IHsKICAgICAgICAgICAgICAgICAgICBib3R0b206IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBrLmRvY3VtZW50LnNpemUuaGVpZ2h0IC0gay5vcmlnaW4ub2Zmc2V0LmJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGsuZG9jdW1lbnQuc2l6ZS53aWR0aAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGVmdDogewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGsuZG9jdW1lbnQuc2l6ZS5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBrLm9yaWdpbi5vZmZzZXQubGVmdAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBrLmRvY3VtZW50LnNpemUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogay5kb2N1bWVudC5zaXplLndpZHRoIC0gay5vcmlnaW4ub2Zmc2V0LnJpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b3A6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBrLm9yaWdpbi5vZmZzZXQudG9wLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogay5kb2N1bWVudC5zaXplLndpZHRoCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgay5hdmFpbGFibGUud2luZG93ID0gewogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IE1hdGgubWF4KGsud2luZG93LnNpemUuaGVpZ2h0IC0gTWF0aC5tYXgoay5vcmlnaW4ud2luZG93T2Zmc2V0LmJvdHRvbSwgMCksIDApLAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogay53aW5kb3cuc2l6ZS53aWR0aAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgbGVmdDogewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGsud2luZG93LnNpemUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogTWF0aC5tYXgoay5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQsIDApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByaWdodDogewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGsud2luZG93LnNpemUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogTWF0aC5tYXgoay53aW5kb3cuc2l6ZS53aWR0aCAtIE1hdGgubWF4KGsub3JpZ2luLndpbmRvd09mZnNldC5yaWdodCwgMCksIDApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0b3A6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBNYXRoLm1heChrLm9yaWdpbi53aW5kb3dPZmZzZXQudG9wLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGsud2luZG93LnNpemUud2lkdGgKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgImh0bWwiICE9IGpbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpOykgewogICAgICAgICAgICAgICAgaWYgKCJmaXhlZCIgPT0gai5jc3MoInBvc2l0aW9uIikpIHsKICAgICAgICAgICAgICAgICAgICBrLm9yaWdpbi5maXhlZExpbmVhZ2UgPSAhMDsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaiA9IGoucGFyZW50KCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gawogICAgICAgIH0sCiAgICAgICAgX19vcHRpb25zRm9ybWF0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuICJudW1iZXIiID09IHR5cGVvZiB0aGlzLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbiAmJiAodGhpcy5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24gPSBbdGhpcy5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24sIHRoaXMuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uXSksICJudW1iZXIiID09IHR5cGVvZiB0aGlzLl9fb3B0aW9ucy5kZWxheSAmJiAodGhpcy5fX29wdGlvbnMuZGVsYXkgPSBbdGhpcy5fX29wdGlvbnMuZGVsYXksIHRoaXMuX19vcHRpb25zLmRlbGF5XSksICJudW1iZXIiID09IHR5cGVvZiB0aGlzLl9fb3B0aW9ucy5kZWxheVRvdWNoICYmICh0aGlzLl9fb3B0aW9ucy5kZWxheVRvdWNoID0gW3RoaXMuX19vcHRpb25zLmRlbGF5VG91Y2gsIHRoaXMuX19vcHRpb25zLmRlbGF5VG91Y2hdKSwgInN0cmluZyIgPT0gdHlwZW9mIHRoaXMuX19vcHRpb25zLnRoZW1lICYmICh0aGlzLl9fb3B0aW9ucy50aGVtZSA9IFt0aGlzLl9fb3B0aW9ucy50aGVtZV0pLCBudWxsID09PSB0aGlzLl9fb3B0aW9ucy5wYXJlbnQgPyB0aGlzLl9fb3B0aW9ucy5wYXJlbnQgPSBhKGgud2luZG93LmRvY3VtZW50LmJvZHkpIDogInN0cmluZyIgPT0gdHlwZW9mIHRoaXMuX19vcHRpb25zLnBhcmVudCAmJiAodGhpcy5fX29wdGlvbnMucGFyZW50ID0gYSh0aGlzLl9fb3B0aW9ucy5wYXJlbnQpKSwgImhvdmVyIiA9PSB0aGlzLl9fb3B0aW9ucy50cmlnZ2VyID8gKHRoaXMuX19vcHRpb25zLnRyaWdnZXJPcGVuID0gewogICAgICAgICAgICAgICAgbW91c2VlbnRlcjogITAsCiAgICAgICAgICAgICAgICB0b3VjaHN0YXJ0OiAhMAogICAgICAgICAgICB9LCB0aGlzLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UgPSB7CiAgICAgICAgICAgICAgICBtb3VzZWxlYXZlOiAhMCwKICAgICAgICAgICAgICAgIG9yaWdpbkNsaWNrOiAhMCwKICAgICAgICAgICAgICAgIHRvdWNobGVhdmU6ICEwCiAgICAgICAgICAgIH0pIDogImNsaWNrIiA9PSB0aGlzLl9fb3B0aW9ucy50cmlnZ2VyICYmICh0aGlzLl9fb3B0aW9ucy50cmlnZ2VyT3BlbiA9IHsKICAgICAgICAgICAgICAgIGNsaWNrOiAhMCwKICAgICAgICAgICAgICAgIHRhcDogITAKICAgICAgICAgICAgfSwgdGhpcy5fX29wdGlvbnMudHJpZ2dlckNsb3NlID0gewogICAgICAgICAgICAgICAgY2xpY2s6ICEwLAogICAgICAgICAgICAgICAgdGFwOiAhMAogICAgICAgICAgICB9KSwgdGhpcy5fdHJpZ2dlcigib3B0aW9ucyIpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfX3ByZXBhcmVHQzogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBiID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIGIuX19vcHRpb25zLnNlbGZEZXN0cnVjdGlvbiA/IGIuX19nYXJiYWdlQ29sbGVjdG9yID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgYi5fX3RvdWNoRXZlbnRzID0gYS5ncmVwKGIuX190b3VjaEV2ZW50cywgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBjIC0gYS50aW1lID4gNmU0CiAgICAgICAgICAgICAgICB9KSwgZChiLl8kb3JpZ2luKSB8fCBiLmNsb3NlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGIuZGVzdHJveSgpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LCAyZTQpIDogY2xlYXJJbnRlcnZhbChiLl9fZ2FyYmFnZUNvbGxlY3RvciksIGIKICAgICAgICB9LAogICAgICAgIF9fcHJlcGFyZU9yaWdpbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gdGhpczsKICAgICAgICAgICAgaWYgKGEuXyRvcmlnaW4ub2ZmKCIuIiArIGEuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJPcGVuIiksIGguaGFzVG91Y2hDYXBhYmlsaXR5ICYmIGEuXyRvcmlnaW4ub24oInRvdWNoc3RhcnQuIiArIGEuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJPcGVuIHRvdWNoZW5kLiIgKyBhLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyT3BlbiB0b3VjaGNhbmNlbC4iICsgYS5fX25hbWVzcGFjZSArICItdHJpZ2dlck9wZW4iLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgYS5fdG91Y2hSZWNvcmRFdmVudChiKQogICAgICAgICAgICAgICAgfSksIGEuX19vcHRpb25zLnRyaWdnZXJPcGVuLmNsaWNrIHx8IGEuX19vcHRpb25zLnRyaWdnZXJPcGVuLnRhcCAmJiBoLmhhc1RvdWNoQ2FwYWJpbGl0eSkgewogICAgICAgICAgICAgICAgdmFyIGIgPSAiIjsKICAgICAgICAgICAgICAgIGEuX19vcHRpb25zLnRyaWdnZXJPcGVuLmNsaWNrICYmIChiICs9ICJjbGljay4iICsgYS5fX25hbWVzcGFjZSArICItdHJpZ2dlck9wZW4gIiksIGEuX19vcHRpb25zLnRyaWdnZXJPcGVuLnRhcCAmJiBoLmhhc1RvdWNoQ2FwYWJpbGl0eSAmJiAoYiArPSAidG91Y2hlbmQuIiArIGEuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJPcGVuIiksIGEuXyRvcmlnaW4ub24oYiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgIGEuX3RvdWNoSXNNZWFuaW5nZnVsRXZlbnQoYikgJiYgYS5fb3BlbihiKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYS5fX29wdGlvbnMudHJpZ2dlck9wZW4ubW91c2VlbnRlciB8fCBhLl9fb3B0aW9ucy50cmlnZ2VyT3Blbi50b3VjaHN0YXJ0ICYmIGguaGFzVG91Y2hDYXBhYmlsaXR5KSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9ICIiOwogICAgICAgICAgICAgICAgYS5fX29wdGlvbnMudHJpZ2dlck9wZW4ubW91c2VlbnRlciAmJiAoYiArPSAibW91c2VlbnRlci4iICsgYS5fX25hbWVzcGFjZSArICItdHJpZ2dlck9wZW4gIiksIGEuX19vcHRpb25zLnRyaWdnZXJPcGVuLnRvdWNoc3RhcnQgJiYgaC5oYXNUb3VjaENhcGFiaWxpdHkgJiYgKGIgKz0gInRvdWNoc3RhcnQuIiArIGEuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJPcGVuIiksIGEuXyRvcmlnaW4ub24oYiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICFhLl90b3VjaElzVG91Y2hFdmVudChiKSAmJiBhLl90b3VjaElzRW11bGF0ZWRFdmVudChiKSB8fCAoYS5fX3BvaW50ZXJJc092ZXJPcmlnaW4gPSAhMCwgYS5fb3BlblNob3J0bHkoYikpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UubW91c2VsZWF2ZSB8fCBhLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UudG91Y2hsZWF2ZSAmJiBoLmhhc1RvdWNoQ2FwYWJpbGl0eSkgewogICAgICAgICAgICAgICAgdmFyIGIgPSAiIjsKICAgICAgICAgICAgICAgIGEuX19vcHRpb25zLnRyaWdnZXJDbG9zZS5tb3VzZWxlYXZlICYmIChiICs9ICJtb3VzZWxlYXZlLiIgKyBhLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyT3BlbiAiKSwgYS5fX29wdGlvbnMudHJpZ2dlckNsb3NlLnRvdWNobGVhdmUgJiYgaC5oYXNUb3VjaENhcGFiaWxpdHkgJiYgKGIgKz0gInRvdWNoZW5kLiIgKyBhLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyT3BlbiB0b3VjaGNhbmNlbC4iICsgYS5fX25hbWVzcGFjZSArICItdHJpZ2dlck9wZW4iKSwgYS5fJG9yaWdpbi5vbihiLCBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgICAgICAgICAgYS5fdG91Y2hJc01lYW5pbmdmdWxFdmVudChiKSAmJiAoYS5fX3BvaW50ZXJJc092ZXJPcmlnaW4gPSAhMSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICB9LAogICAgICAgIF9fcHJlcGFyZVRvb2x0aXA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYiA9IHRoaXMsCiAgICAgICAgICAgICAgICBjID0gYi5fX29wdGlvbnMuaW50ZXJhY3RpdmUgPyAiYXV0byIgOiAiIjsKICAgICAgICAgICAgcmV0dXJuIGIuXyR0b29sdGlwLmF0dHIoImlkIiwgYi5fX25hbWVzcGFjZSkuY3NzKHsKICAgICAgICAgICAgICAgICJwb2ludGVyLWV2ZW50cyI6IGMsCiAgICAgICAgICAgICAgICB6SW5kZXg6IGIuX19vcHRpb25zLnpJbmRleAogICAgICAgICAgICB9KSwgYS5lYWNoKGIuX19wcmV2aW91c1RoZW1lcywgZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICAgICAgYi5fJHRvb2x0aXAucmVtb3ZlQ2xhc3MoYykKICAgICAgICAgICAgfSksIGEuZWFjaChiLl9fb3B0aW9ucy50aGVtZSwgZnVuY3Rpb24oYSwgYykgewogICAgICAgICAgICAgICAgYi5fJHRvb2x0aXAuYWRkQ2xhc3MoYykKICAgICAgICAgICAgfSksIGIuX19wcmV2aW91c1RoZW1lcyA9IGEubWVyZ2UoW10sIGIuX19vcHRpb25zLnRoZW1lKSwgYgogICAgICAgIH0sCiAgICAgICAgX19zY3JvbGxIYW5kbGVyOiBmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIHZhciBjID0gdGhpczsKICAgICAgICAgICAgaWYgKGMuX19vcHRpb25zLnRyaWdnZXJDbG9zZS5zY3JvbGwpIGMuX2Nsb3NlKGIpOwogICAgICAgICAgICBlbHNlIGlmIChkKGMuXyRvcmlnaW4pICYmIGQoYy5fJHRvb2x0aXApKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoYi50YXJnZXQgPT09IGgud2luZG93LmRvY3VtZW50KSBjLl9fR2VvbWV0cnkub3JpZ2luLmZpeGVkTGluZWFnZSB8fCBjLl9fb3B0aW9ucy5yZXBvc2l0aW9uT25TY3JvbGwgJiYgYy5yZXBvc2l0aW9uKGIpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGMuX19nZW9tZXRyeSgpOwogICAgICAgICAgICAgICAgICAgIHZhciBmID0gITE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmaXhlZCIgIT0gYy5fJG9yaWdpbi5jc3MoInBvc2l0aW9uIikgJiYgYy5fXyRvcmlnaW5QYXJlbnRzLmVhY2goZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBhKGMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkLmNzcygib3ZlcmZsb3cteCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBkLmNzcygib3ZlcmZsb3cteSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJ2aXNpYmxlIiAhPSBnIHx8ICJ2aXNpYmxlIiAhPSBoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmlzaWJsZSIgIT0gZyAmJiAoZS5vcmlnaW4ud2luZG93T2Zmc2V0LmxlZnQgPCBpLmxlZnQgfHwgZS5vcmlnaW4ud2luZG93T2Zmc2V0LnJpZ2h0ID4gaS5yaWdodCkpIHJldHVybiBmID0gITAsICExOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgidmlzaWJsZSIgIT0gaCAmJiAoZS5vcmlnaW4ud2luZG93T2Zmc2V0LnRvcCA8IGkudG9wIHx8IGUub3JpZ2luLndpbmRvd09mZnNldC5ib3R0b20gPiBpLmJvdHRvbSkpIHJldHVybiBmID0gITAsICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZpeGVkIiA9PSBkLmNzcygicG9zaXRpb24iKSA/ICExIDogdm9pZCAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBmKSBjLl8kdG9vbHRpcC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYy5fJHRvb2x0aXAuY3NzKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKSwgYy5fX29wdGlvbnMucmVwb3NpdGlvbk9uU2Nyb2xsKSBjLnJlcG9zaXRpb24oYik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZS5vcmlnaW4ub2Zmc2V0LmxlZnQgLSBjLl9fR2VvbWV0cnkub3JpZ2luLm9mZnNldC5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUub3JpZ2luLm9mZnNldC50b3AgLSBjLl9fR2VvbWV0cnkub3JpZ2luLm9mZnNldC50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuXyR0b29sdGlwLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjLl9fbGFzdFBvc2l0aW9uLmNvb3JkLmxlZnQgKyBnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBjLl9fbGFzdFBvc2l0aW9uLmNvb3JkLnRvcCArIGkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjLl90cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAic2Nyb2xsIiwKICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICBnZW86IGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICB9LAogICAgICAgIF9fc3RhdGVTZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19zdGF0ZSA9IGEsIHRoaXMuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgdHlwZTogInN0YXRlIiwKICAgICAgICAgICAgICAgIHN0YXRlOiBhCiAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfX3RpbWVvdXRzQ2xlYXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHRoaXMuX190aW1lb3V0cy5vcGVuKSwgdGhpcy5fX3RpbWVvdXRzLm9wZW4gPSBudWxsLCBhLmVhY2godGhpcy5fX3RpbWVvdXRzLmNsb3NlLCBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoYikKICAgICAgICAgICAgfSksIHRoaXMuX190aW1lb3V0cy5jbG9zZSA9IFtdLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfX3RyYWNrZXJTdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBhID0gdGhpcywKICAgICAgICAgICAgICAgIGIgPSBhLl8kdG9vbHRpcC5maW5kKCIudG9vbHRpcHN0ZXItY29udGVudCIpOwogICAgICAgICAgICByZXR1cm4gYS5fX29wdGlvbnMudHJhY2tUb29sdGlwICYmIChhLl9fY29udGVudEJjciA9IGJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLCBhLl9fdHJhY2tlciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGQoYS5fJG9yaWdpbikgJiYgZChhLl8kdG9vbHRpcCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5fX29wdGlvbnMudHJhY2tPcmlnaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBhLl9fZ2VvbWV0cnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAhMTsKICAgICAgICAgICAgICAgICAgICAgICAgYyhlLm9yaWdpbi5zaXplLCBhLl9fR2VvbWV0cnkub3JpZ2luLnNpemUpICYmIChhLl9fR2VvbWV0cnkub3JpZ2luLmZpeGVkTGluZWFnZSA/IGMoZS5vcmlnaW4ud2luZG93T2Zmc2V0LCBhLl9fR2VvbWV0cnkub3JpZ2luLndpbmRvd09mZnNldCkgJiYgKGYgPSAhMCkgOiBjKGUub3JpZ2luLm9mZnNldCwgYS5fX0dlb21ldHJ5Lm9yaWdpbi5vZmZzZXQpICYmIChmID0gITApKSwgZiB8fCAoYS5fX29wdGlvbnMudHJpZ2dlckNsb3NlLm1vdXNlbGVhdmUgPyBhLl9jbG9zZSgpIDogYS5yZXBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChhLl9fb3B0aW9ucy50cmFja1Rvb2x0aXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBiWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICBnLmhlaWdodCA9PT0gYS5fX2NvbnRlbnRCY3IuaGVpZ2h0ICYmIGcud2lkdGggPT09IGEuX19jb250ZW50QmNyLndpZHRoIHx8IChhLnJlcG9zaXRpb24oKSwgYS5fX2NvbnRlbnRCY3IgPSBnKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBhLl9jbG9zZSgpCiAgICAgICAgICAgIH0sIGEuX19vcHRpb25zLnRyYWNrZXJJbnRlcnZhbCksIGEKICAgICAgICB9LAogICAgICAgIF9jbG9zZTogZnVuY3Rpb24oYiwgYywgZCkgewogICAgICAgICAgICB2YXIgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICBmID0gITA7CiAgICAgICAgICAgIGlmIChlLl90cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiY2xvc2UiLAogICAgICAgICAgICAgICAgICAgIGV2ZW50OiBiLAogICAgICAgICAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gITEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSwgZiB8fCBkKSB7CiAgICAgICAgICAgICAgICBjICYmIGUuX19jYWxsYmFja3MuY2xvc2UucHVzaChjKSwgZS5fX2NhbGxiYWNrcy5vcGVuID0gW10sIGUuX190aW1lb3V0c0NsZWFyKCk7CiAgICAgICAgICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGEuZWFjaChlLl9fY2FsbGJhY2tzLmNsb3NlLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChlLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogZS5fJG9yaWdpblswXQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pLCBlLl9fY2FsbGJhY2tzLmNsb3NlID0gW10KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoImNsb3NlZCIgIT0gZS5fX3N0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAhMCwKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG5ldyBEYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBrID0gai5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBrICsgZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCJkaXNhcHBlYXJpbmciID09IGUuX19zdGF0ZSAmJiBsID4gZS5fX2Nsb3NpbmdUaW1lICYmIGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdID4gMCAmJiAoaSA9ICExKSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLl9fY2xvc2luZ1RpbWUgPSBsLCAiZGlzYXBwZWFyaW5nIiAhPSBlLl9fc3RhdGUgJiYgZS5fX3N0YXRlU2V0KCJkaXNhcHBlYXJpbmciKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoZS5fX3RyYWNrZXIpLCBlLl90cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiY2xvc2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLl8kdG9vbHRpcC5vZmYoIi4iICsgZS5fX25hbWVzcGFjZSArICItdHJpZ2dlckNsb3NlIikucmVtb3ZlQ2xhc3MoInRvb2x0aXBzdGVyLWR5aW5nIiksIGEoaC53aW5kb3cpLm9mZigiLiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UiKSwgZS5fXyRvcmlnaW5QYXJlbnRzLmVhY2goZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEoYykub2ZmKCJzY3JvbGwuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5fXyRvcmlnaW5QYXJlbnRzID0gbnVsbCwgYShoLndpbmRvdy5kb2N1bWVudC5ib2R5KS5vZmYoIi4iICsgZS5fX25hbWVzcGFjZSArICItdHJpZ2dlckNsb3NlIiksIGUuXyRvcmlnaW4ub2ZmKCIuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSIpLCBlLl9vZmYoImRpc21pc3NhYmxlIiksIGUuX19zdGF0ZVNldCgiY2xvc2VkIiksIGUuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJhZnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IGIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLl9fb3B0aW9ucy5mdW5jdGlvbkFmdGVyICYmIGUuX19vcHRpb25zLmZ1bmN0aW9uQWZ0ZXIuY2FsbChlLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBlLl8kb3JpZ2luWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgZygpCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGguaGFzVHJhbnNpdGlvbnMgPyAoZS5fJHRvb2x0aXAuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbW96LWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbXMtYW5pbWF0aW9uLWR1cmF0aW9uIjogZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMV0gKyAibXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1vLWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmltYXRpb24tZHVyYXRpb24iOiBlLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvblsxXSArICJtcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNpdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdICsgIm1zIgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgZS5fJHRvb2x0aXAuY2xlYXJRdWV1ZSgpLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci1zaG93IikuYWRkQ2xhc3MoInRvb2x0aXBzdGVyLWR5aW5nIiksIGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdID4gMCAmJiBlLl8kdG9vbHRpcC5kZWxheShlLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvblsxXSksIGUuXyR0b29sdGlwLnF1ZXVlKG0pKSA6IGUuXyR0b29sdGlwLnN0b3AoKS5mYWRlT3V0KGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzFdLCBtKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBnKCkKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZQogICAgICAgIH0sCiAgICAgICAgX29mZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLm9mZi5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9vbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLm9uLmFwcGx5KHRoaXMuX18kZW1pdHRlclByaXZhdGUsIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX29uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLm9uZS5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIF9vcGVuOiBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgIHZhciBlID0gdGhpczsKICAgICAgICAgICAgaWYgKCFlLl9fZGVzdHJveWluZyAmJiBkKGUuXyRvcmlnaW4pICYmIGUuX19lbmFibGVkKSB7CiAgICAgICAgICAgICAgICB2YXIgZiA9ICEwOwogICAgICAgICAgICAgICAgaWYgKCJjbG9zZWQiID09IGUuX19zdGF0ZSAmJiAoZS5fdHJpZ2dlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJiZWZvcmUiLAogICAgICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gITEKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCBmICYmIGUuX19vcHRpb25zLmZ1bmN0aW9uQmVmb3JlICYmIChmID0gZS5fX29wdGlvbnMuZnVuY3Rpb25CZWZvcmUuY2FsbChlLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBiLAogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGUuXyRvcmlnaW5bMF0KICAgICAgICAgICAgICAgICAgICB9KSkpLCBmICE9PSAhMSAmJiBudWxsICE9PSBlLl9fQ29udGVudCkgewogICAgICAgICAgICAgICAgICAgIGMgJiYgZS5fX2NhbGxiYWNrcy5vcGVuLnB1c2goYyksIGUuX19jYWxsYmFja3MuY2xvc2UgPSBbXSwgZS5fX3RpbWVvdXRzQ2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZywgaSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAic3RhYmxlIiAhPSBlLl9fc3RhdGUgJiYgZS5fX3N0YXRlU2V0KCJzdGFibGUiKSwgYS5lYWNoKGUuX19jYWxsYmFja3Mub3BlbiwgZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5jYWxsKGUsIGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGUuXyRvcmlnaW5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogZS5fJHRvb2x0aXBbMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLl9fY2FsbGJhY2tzLm9wZW4gPSBbXQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCJjbG9zZWQiICE9PSBlLl9fc3RhdGUpIGcgPSAwLCAiZGlzYXBwZWFyaW5nIiA9PT0gZS5fX3N0YXRlID8gKGUuX19zdGF0ZVNldCgiYXBwZWFyaW5nIiksIGguaGFzVHJhbnNpdGlvbnMgPyAoZS5fJHRvb2x0aXAuY2xlYXJRdWV1ZSgpLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci1keWluZyIpLmFkZENsYXNzKCJ0b29sdGlwc3Rlci1zaG93IiksIGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzBdID4gMCAmJiBlLl8kdG9vbHRpcC5kZWxheShlLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvblswXSksIGUuXyR0b29sdGlwLnF1ZXVlKGkpKSA6IGUuXyR0b29sdGlwLnN0b3AoKS5mYWRlSW4oaSkpIDogInN0YWJsZSIgPT0gZS5fX3N0YXRlICYmIGkoKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuX19zdGF0ZVNldCgiYXBwZWFyaW5nIiksIGcgPSBlLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvblswXSwgZS5fX2NvbnRlbnRJbnNlcnQoKSwgZS5yZXBvc2l0aW9uKGIsICEwKSwgaC5oYXNUcmFuc2l0aW9ucyA/IChlLl8kdG9vbHRpcC5hZGRDbGFzcygidG9vbHRpcHN0ZXItIiArIGUuX19vcHRpb25zLmFuaW1hdGlvbikuYWRkQ2xhc3MoInRvb2x0aXBzdGVyLWluaXRpYWwiKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItbW96LWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzBdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW1zLWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzBdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8tYW5pbWF0aW9uLWR1cmF0aW9uIjogZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMF0gKyAibXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiI6IGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzBdICsgIm1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5pbWF0aW9uLWR1cmF0aW9uIjogZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMF0gKyAibXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2l0aW9uLWR1cmF0aW9uIjogZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMF0gKyAibXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VkIiAhPSBlLl9fc3RhdGUgJiYgKGUuXyR0b29sdGlwLmFkZENsYXNzKCJ0b29sdGlwc3Rlci1zaG93IikucmVtb3ZlQ2xhc3MoInRvb2x0aXBzdGVyLWluaXRpYWwiKSwgZS5fX29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb25bMF0gPiAwICYmIGUuXyR0b29sdGlwLmRlbGF5KGUuX19vcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uWzBdKSwgZS5fJHRvb2x0aXAucXVldWUoaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKSkgOiBlLl8kdG9vbHRpcC5jc3MoImRpc3BsYXkiLCAibm9uZSIpLmZhZGVJbihlLl9fb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvblswXSwgaSksIGUuX190cmFja2VyU3RhcnQoKSwgYShoLndpbmRvdykub24oInJlc2l6ZS4iICsgZS5fX25hbWVzcGFjZSArICItdHJpZ2dlckNsb3NlIiwgZnVuY3Rpb24oYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYShkb2N1bWVudC5hY3RpdmVFbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYy5pcygiaW5wdXQiKSB8fCBjLmlzKCJ0ZXh0YXJlYSIpKSAmJiBhLmNvbnRhaW5zKGUuXyR0b29sdGlwWzBdLCBjWzBdKSB8fCBlLnJlcG9zaXRpb24oYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLm9uKCJzY3JvbGwuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9fc2Nyb2xsSGFuZGxlcihhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGUuX18kb3JpZ2luUGFyZW50cyA9IGUuXyRvcmlnaW4ucGFyZW50cygpLCBlLl9fJG9yaWdpblBhcmVudHMuZWFjaChmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShjKS5vbigic2Nyb2xsLiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19zY3JvbGxIYW5kbGVyKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UubW91c2VsZWF2ZSB8fCBlLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UudG91Y2hsZWF2ZSAmJiBoLmhhc1RvdWNoQ2FwYWJpbGl0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fb24oImRpc21pc3NhYmxlIiwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGlzbWlzc2FibGUgPyBhLmRlbGF5ID8gKG0gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9jbG9zZShhLmV2ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEuZGVsYXkpLCBlLl9fdGltZW91dHMuY2xvc2UucHVzaChtKSkgOiBlLl9jbG9zZShhKSA6IGNsZWFyVGltZW91dChtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaiA9IGUuXyRvcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19vcHRpb25zLmludGVyYWN0aXZlICYmIChqID0gai5hZGQoZS5fJHRvb2x0aXApKSwgZS5fX29wdGlvbnMudHJpZ2dlckNsb3NlLm1vdXNlbGVhdmUgJiYgKGsgKz0gIm1vdXNlZW50ZXIuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSAiLCBsICs9ICJtb3VzZWxlYXZlLiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UgIiksIGUuX19vcHRpb25zLnRyaWdnZXJDbG9zZS50b3VjaGxlYXZlICYmIGguaGFzVG91Y2hDYXBhYmlsaXR5ICYmIChrICs9ICJ0b3VjaHN0YXJ0LiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UiLCBsICs9ICJ0b3VjaGVuZC4iICsgZS5fX25hbWVzcGFjZSArICItdHJpZ2dlckNsb3NlIHRvdWNoY2FuY2VsLiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UiKSwgai5vbihsLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuX3RvdWNoSXNUb3VjaEV2ZW50KGEpIHx8ICFlLl90b3VjaElzRW11bGF0ZWRFdmVudChhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9ICJtb3VzZWxlYXZlIiA9PSBhLnR5cGUgPyBlLl9fb3B0aW9ucy5kZWxheSA6IGUuX19vcHRpb25zLmRlbGF5VG91Y2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IGJbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzYWJsZTogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJkaXNtaXNzYWJsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5vbihrLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWUuX3RvdWNoSXNUb3VjaEV2ZW50KGEpICYmIGUuX3RvdWNoSXNFbXVsYXRlZEV2ZW50KGEpIHx8IGUuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzYWJsZTogITEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiZGlzbWlzc2FibGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZS5fX29wdGlvbnMudHJpZ2dlckNsb3NlLm9yaWdpbkNsaWNrICYmIGUuXyRvcmlnaW4ub24oImNsaWNrLiIgKyBlLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyQ2xvc2UiLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl90b3VjaElzVG91Y2hFdmVudChhKSB8fCBlLl90b3VjaElzRW11bGF0ZWRFdmVudChhKSB8fCBlLl9jbG9zZShhKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgKGUuX19vcHRpb25zLnRyaWdnZXJDbG9zZS5jbGljayB8fCBlLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UudGFwICYmIGguaGFzVG91Y2hDYXBhYmlsaXR5KSAmJiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJjbG9zZWQiICE9IGUuX19zdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBhKGgud2luZG93LmRvY3VtZW50LmJvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX19vcHRpb25zLnRyaWdnZXJDbG9zZS5jbGljayAmJiAoYiArPSAiY2xpY2suIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSAiKSwgZS5fX29wdGlvbnMudHJpZ2dlckNsb3NlLnRhcCAmJiBoLmhhc1RvdWNoQ2FwYWJpbGl0eSAmJiAoYiArPSAidG91Y2hlbmQuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSIpLCBjLm9uKGIsIGZ1bmN0aW9uKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdG91Y2hJc01lYW5pbmdmdWxFdmVudChiKSAmJiAoZS5fdG91Y2hSZWNvcmRFdmVudChiKSwgZS5fX29wdGlvbnMuaW50ZXJhY3RpdmUgJiYgYS5jb250YWlucyhlLl8kdG9vbHRpcFswXSwgYi50YXJnZXQpIHx8IGUuX2Nsb3NlKGIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBlLl9fb3B0aW9ucy50cmlnZ2VyQ2xvc2UudGFwICYmIGguaGFzVG91Y2hDYXBhYmlsaXR5ICYmIGMub24oInRvdWNoc3RhcnQuIiArIGUuX19uYW1lc3BhY2UgKyAiLXRyaWdnZXJDbG9zZSIsIGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5fdG91Y2hSZWNvcmRFdmVudChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApLCBlLl90cmlnZ2VyKCJyZWFkeSIpLCBlLl9fb3B0aW9ucy5mdW5jdGlvblJlYWR5ICYmIGUuX19vcHRpb25zLmZ1bmN0aW9uUmVhZHkuY2FsbChlLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IGUuXyRvcmlnaW5bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiBlLl8kdG9vbHRpcFswXQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZS5fX29wdGlvbnMudGltZXIgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuX2Nsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgfSwgZS5fX29wdGlvbnMudGltZXIgKyBnKTsKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX3RpbWVvdXRzLmNsb3NlLnB1c2gobSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICB9LAogICAgICAgIF9vcGVuU2hvcnRseTogZnVuY3Rpb24oYSkgewogICAgICAgICAgICB2YXIgYiA9IHRoaXMsCiAgICAgICAgICAgICAgICBjID0gITA7CiAgICAgICAgICAgIGlmICgic3RhYmxlIiAhPSBiLl9fc3RhdGUgJiYgImFwcGVhcmluZyIgIT0gYi5fX3N0YXRlICYmICFiLl9fdGltZW91dHMub3BlbiAmJiAoYi5fdHJpZ2dlcih7CiAgICAgICAgICAgICAgICAgICAgdHlwZTogInN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICBldmVudDogYSwKICAgICAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICExCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGMpKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IDAgPT0gYS50eXBlLmluZGV4T2YoInRvdWNoIikgPyBiLl9fb3B0aW9ucy5kZWxheVRvdWNoIDogYi5fX29wdGlvbnMuZGVsYXk7CiAgICAgICAgICAgICAgICBkWzBdID8gYi5fX3RpbWVvdXRzLm9wZW4gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGIuX190aW1lb3V0cy5vcGVuID0gbnVsbCwgYi5fX3BvaW50ZXJJc092ZXJPcmlnaW4gJiYgYi5fdG91Y2hJc01lYW5pbmdmdWxFdmVudChhKSA/IChiLl90cmlnZ2VyKCJzdGFydGVuZCIpLCBiLl9vcGVuKGEpKSA6IGIuX3RyaWdnZXIoInN0YXJ0Y2FuY2VsIikKICAgICAgICAgICAgICAgIH0sIGRbMF0pIDogKGIuX3RyaWdnZXIoInN0YXJ0ZW5kIiksIGIuX29wZW4oYSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICB9LAogICAgICAgIF9vcHRpb25zRXh0cmFjdDogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICB2YXIgZCA9IHRoaXMsCiAgICAgICAgICAgICAgICBlID0gYS5leHRlbmQoITAsIHt9LCBjKSwKICAgICAgICAgICAgICAgIGYgPSBkLl9fb3B0aW9uc1tiXTsKICAgICAgICAgICAgcmV0dXJuIGYgfHwgKGYgPSB7fSwgYS5lYWNoKGMsIGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgICAgIHZhciBjID0gZC5fX29wdGlvbnNbYV07CiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGMgJiYgKGZbYV0gPSBjKQogICAgICAgICAgICB9KSksIGEuZWFjaChlLCBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGZbYl0gJiYgKCJvYmplY3QiICE9IHR5cGVvZiBjIHx8IGMgaW5zdGFuY2VvZiBBcnJheSB8fCBudWxsID09IGMgfHwgIm9iamVjdCIgIT0gdHlwZW9mIGZbYl0gfHwgZltiXSBpbnN0YW5jZW9mIEFycmF5IHx8IG51bGwgPT0gZltiXSA/IGVbYl0gPSBmW2JdIDogYS5leHRlbmQoZVtiXSwgZltiXSkpCiAgICAgICAgICAgIH0pLCBlCiAgICAgICAgfSwKICAgICAgICBfcGx1ZzogZnVuY3Rpb24oYikgewogICAgICAgICAgICB2YXIgYyA9IGEudG9vbHRpcHN0ZXIuX3BsdWdpbihiKTsKICAgICAgICAgICAgaWYgKCFjKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiJyArIGIgKyAnIiBwbHVnaW4gaXMgbm90IGRlZmluZWQnKTsKICAgICAgICAgICAgcmV0dXJuIGMuaW5zdGFuY2UgJiYgYS50b29sdGlwc3Rlci5fX2JyaWRnZShjLmluc3RhbmNlLCB0aGlzLCBjLm5hbWUpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfdG91Y2hJc0VtdWxhdGVkRXZlbnQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgZm9yICh2YXIgYiA9ICExLCBjID0gKG5ldyBEYXRlKS5nZXRUaW1lKCksIGQgPSB0aGlzLl9fdG91Y2hFdmVudHMubGVuZ3RoIC0gMTsgZCA+PSAwOyBkLS0pIHsKICAgICAgICAgICAgICAgIHZhciBlID0gdGhpcy5fX3RvdWNoRXZlbnRzW2RdOwogICAgICAgICAgICAgICAgaWYgKCEoYyAtIGUudGltZSA8IDUwMCkpIGJyZWFrOwogICAgICAgICAgICAgICAgZS50YXJnZXQgPT09IGEudGFyZ2V0ICYmIChiID0gITApCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGIKICAgICAgICB9LAogICAgICAgIF90b3VjaElzTWVhbmluZ2Z1bEV2ZW50OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl90b3VjaElzVG91Y2hFdmVudChhKSAmJiAhdGhpcy5fdG91Y2hTd2lwZWQoYS50YXJnZXQpIHx8ICF0aGlzLl90b3VjaElzVG91Y2hFdmVudChhKSAmJiAhdGhpcy5fdG91Y2hJc0VtdWxhdGVkRXZlbnQoYSkKICAgICAgICB9LAogICAgICAgIF90b3VjaElzVG91Y2hFdmVudDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gMCA9PSBhLnR5cGUuaW5kZXhPZigidG91Y2giKQogICAgICAgIH0sCiAgICAgICAgX3RvdWNoUmVjb3JkRXZlbnQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RvdWNoSXNUb3VjaEV2ZW50KGEpICYmIChhLnRpbWUgPSAobmV3IERhdGUpLmdldFRpbWUoKSwgdGhpcy5fX3RvdWNoRXZlbnRzLnB1c2goYSkpLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBfdG91Y2hTd2lwZWQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgZm9yICh2YXIgYiA9ICExLCBjID0gdGhpcy5fX3RvdWNoRXZlbnRzLmxlbmd0aCAtIDE7IGMgPj0gMDsgYy0tKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuX190b3VjaEV2ZW50c1tjXTsKICAgICAgICAgICAgICAgIGlmICgidG91Y2htb3ZlIiA9PSBkLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBiID0gITA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgidG91Y2hzdGFydCIgPT0gZC50eXBlICYmIGEgPT09IGQudGFyZ2V0KSBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBiCiAgICAgICAgfSwKICAgICAgICBfdHJpZ2dlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBiID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3VtZW50cyk7CiAgICAgICAgICAgIHJldHVybiAic3RyaW5nIiA9PSB0eXBlb2YgYlswXSAmJiAoYlswXSA9IHsKICAgICAgICAgICAgICAgIHR5cGU6IGJbMF0KICAgICAgICAgICAgfSksIGJbMF0uaW5zdGFuY2UgPSB0aGlzLCBiWzBdLm9yaWdpbiA9IHRoaXMuXyRvcmlnaW4gPyB0aGlzLl8kb3JpZ2luWzBdIDogbnVsbCwgYlswXS50b29sdGlwID0gdGhpcy5fJHRvb2x0aXAgPyB0aGlzLl8kdG9vbHRpcFswXSA6IG51bGwsIHRoaXMuX18kZW1pdHRlclByaXZhdGUudHJpZ2dlci5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQcml2YXRlLCBiKSwgYS50b29sdGlwc3Rlci5fdHJpZ2dlci5hcHBseShhLnRvb2x0aXBzdGVyLCBiKSwgdGhpcy5fXyRlbWl0dGVyUHVibGljLnRyaWdnZXIuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHVibGljLCBiKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgX3VucGx1ZzogZnVuY3Rpb24oYikgewogICAgICAgICAgICB2YXIgYyA9IHRoaXM7CiAgICAgICAgICAgIGlmIChjW2JdKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGEudG9vbHRpcHN0ZXIuX3BsdWdpbihiKTsKICAgICAgICAgICAgICAgIGQuaW5zdGFuY2UgJiYgYS5lYWNoKGQuaW5zdGFuY2UsIGZ1bmN0aW9uKGEsIGQpIHsKICAgICAgICAgICAgICAgICAgICBjW2FdICYmIGNbYV0uYnJpZGdlZCA9PT0gY1tiXSAmJiBkZWxldGUgY1thXQogICAgICAgICAgICAgICAgfSksIGNbYl0uX19kZXN0cm95ICYmIGNbYl0uX19kZXN0cm95KCksIGRlbGV0ZSBjW2JdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICB9LAogICAgICAgIGNsb3NlOiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGVzdHJveWVkID8gdGhpcy5fX2Rlc3Ryb3lFcnJvcigpIDogdGhpcy5fY2xvc2UobnVsbCwgYSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGNvbnRlbnQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgdmFyIGIgPSB0aGlzOwogICAgICAgICAgICBpZiAodm9pZCAwID09PSBhKSByZXR1cm4gYi5fX0NvbnRlbnQ7CiAgICAgICAgICAgIGlmIChiLl9fZGVzdHJveWVkKSBiLl9fZGVzdHJveUVycm9yKCk7CiAgICAgICAgICAgIGVsc2UgaWYgKGIuX19jb250ZW50U2V0KGEpLCBudWxsICE9PSBiLl9fQ29udGVudCkgewogICAgICAgICAgICAgICAgaWYgKCJjbG9zZWQiICE9PSBiLl9fc3RhdGUgJiYgKGIuX19jb250ZW50SW5zZXJ0KCksIGIucmVwb3NpdGlvbigpLCBiLl9fb3B0aW9ucy51cGRhdGVBbmltYXRpb24pKQogICAgICAgICAgICAgICAgICAgIGlmIChoLmhhc1RyYW5zaXRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYi5fX29wdGlvbnMudXBkYXRlQW5pbWF0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBiLl8kdG9vbHRpcC5hZGRDbGFzcygidG9vbHRpcHN0ZXItdXBkYXRlLSIgKyBjKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWQiICE9IGIuX19zdGF0ZSAmJiBiLl8kdG9vbHRpcC5yZW1vdmVDbGFzcygidG9vbHRpcHN0ZXItdXBkYXRlLSIgKyBjKQogICAgICAgICAgICAgICAgICAgICAgICB9LCAxZTMpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGIuXyR0b29sdGlwLmZhZGVUbygyMDAsIC41LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlZCIgIT0gYi5fX3N0YXRlICYmIGIuXyR0b29sdGlwLmZhZGVUbygyMDAsIDEpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIGIuX2Nsb3NlKCk7CiAgICAgICAgICAgIHJldHVybiBiCiAgICAgICAgfSwKICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGIgPSB0aGlzOwogICAgICAgICAgICBpZiAoYi5fX2Rlc3Ryb3llZCkgYi5fX2Rlc3Ryb3lFcnJvcigpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICJjbG9zZWQiICE9IGIuX19zdGF0ZSA/IGIub3B0aW9uKCJhbmltYXRpb25EdXJhdGlvbiIsIDApLl9jbG9zZShudWxsLCBudWxsLCAhMCkgOiBiLl9fdGltZW91dHNDbGVhcigpLCBiLl90cmlnZ2VyKCJkZXN0cm95IiksIGIuX19kZXN0cm95ZWQgPSAhMCwgYi5fJG9yaWdpbi5yZW1vdmVEYXRhKGIuX19uYW1lc3BhY2UpLm9mZigiLiIgKyBiLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyT3BlbiIpLCBhKGgud2luZG93LmRvY3VtZW50LmJvZHkpLm9mZigiLiIgKyBiLl9fbmFtZXNwYWNlICsgIi10cmlnZ2VyT3BlbiIpOwogICAgICAgICAgICAgICAgdmFyIGMgPSBiLl8kb3JpZ2luLmRhdGEoInRvb2x0aXBzdGVyLW5zIik7CiAgICAgICAgICAgICAgICBpZiAoYykKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PT0gYy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAicHJldmlvdXMiID09IGIuX19vcHRpb25zLnJlc3RvcmF0aW9uID8gZCA9IGIuXyRvcmlnaW4uZGF0YSgidG9vbHRpcHN0ZXItaW5pdGlhbFRpdGxlIikgOiAiY3VycmVudCIgPT0gYi5fX29wdGlvbnMucmVzdG9yYXRpb24gJiYgKGQgPSAic3RyaW5nIiA9PSB0eXBlb2YgYi5fX0NvbnRlbnQgPyBiLl9fQ29udGVudCA6IGEoIjxkaXY+PC9kaXY+IikuYXBwZW5kKGIuX19Db250ZW50KS5odG1sKCkpLCBkICYmIGIuXyRvcmlnaW4uYXR0cigidGl0bGUiLCBkKSwgYi5fJG9yaWdpbi5yZW1vdmVDbGFzcygidG9vbHRpcHN0ZXJlZCIpLCBiLl8kb3JpZ2luLnJlbW92ZURhdGEoInRvb2x0aXBzdGVyLW5zIikucmVtb3ZlRGF0YSgidG9vbHRpcHN0ZXItaW5pdGlhbFRpdGxlIikKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYyA9IGEuZ3JlcChjLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhICE9PSBiLl9fbmFtZXNwYWNlCiAgICAgICAgICAgICAgICAgICAgfSksIGIuXyRvcmlnaW4uZGF0YSgidG9vbHRpcHN0ZXItbnMiLCBjKTsKICAgICAgICAgICAgICAgIGIuX3RyaWdnZXIoImRlc3Ryb3llZCIpLCBiLl9vZmYoKSwgYi5vZmYoKSwgYi5fX0NvbnRlbnQgPSBudWxsLCBiLl9fJGVtaXR0ZXJQcml2YXRlID0gbnVsbCwgYi5fXyRlbWl0dGVyUHVibGljID0gbnVsbCwgYi5fX29wdGlvbnMucGFyZW50ID0gbnVsbCwgYi5fJG9yaWdpbiA9IG51bGwsIGIuXyR0b29sdGlwID0gbnVsbCwgYS50b29sdGlwc3Rlci5fX2luc3RhbmNlc0xhdGVzdEFyciA9IGEuZ3JlcChhLnRvb2x0aXBzdGVyLl9faW5zdGFuY2VzTGF0ZXN0QXJyLCBmdW5jdGlvbihhLCBjKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIgIT09IGEKICAgICAgICAgICAgICAgIH0pLCBjbGVhckludGVydmFsKGIuX19nYXJiYWdlQ29sbGVjdG9yKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBiCiAgICAgICAgfSwKICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kZXN0cm95ZWQgPyAodGhpcy5fX2Rlc3Ryb3lFcnJvcigpLCB0aGlzKSA6ICh0aGlzLl9jbG9zZSgpLCB0aGlzLl9fZW5hYmxlZCA9ICExLCB0aGlzKQogICAgICAgIH0sCiAgICAgICAgZWxlbWVudE9yaWdpbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGVzdHJveWVkID8gdm9pZCB0aGlzLl9fZGVzdHJveUVycm9yKCkgOiB0aGlzLl8kb3JpZ2luWzBdCiAgICAgICAgfSwKICAgICAgICBlbGVtZW50VG9vbHRpcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl8kdG9vbHRpcCA/IHRoaXMuXyR0b29sdGlwWzBdIDogbnVsbAogICAgICAgIH0sCiAgICAgICAgZW5hYmxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19lbmFibGVkID0gITAsIHRoaXMKICAgICAgICB9LAogICAgICAgIGhpZGU6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2UoYSkKICAgICAgICB9LAogICAgICAgIGluc3RhbmNlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMKICAgICAgICB9LAogICAgICAgIG9mZjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGVzdHJveWVkIHx8IHRoaXMuX18kZW1pdHRlclB1YmxpYy5vZmYuYXBwbHkodGhpcy5fXyRlbWl0dGVyUHVibGljLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIG9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19kZXN0cm95ZWQgPyB0aGlzLl9fZGVzdHJveUVycm9yKCkgOiB0aGlzLl9fJGVtaXR0ZXJQdWJsaWMub24uYXBwbHkodGhpcy5fXyRlbWl0dGVyUHVibGljLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSksIHRoaXMKICAgICAgICB9LAogICAgICAgIG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGVzdHJveWVkID8gdGhpcy5fX2Rlc3Ryb3lFcnJvcigpIDogdGhpcy5fXyRlbWl0dGVyUHVibGljLm9uZS5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQdWJsaWMsIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpKSwgdGhpcwogICAgICAgIH0sCiAgICAgICAgb3BlbjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fX2Rlc3Ryb3llZCA/IHRoaXMuX19kZXN0cm95RXJyb3IoKSA6IHRoaXMuX29wZW4obnVsbCwgYSksIHRoaXMKICAgICAgICB9LAogICAgICAgIG9wdGlvbjogZnVuY3Rpb24oYiwgYykgewogICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBjID8gdGhpcy5fX29wdGlvbnNbYl0gOiAodGhpcy5fX2Rlc3Ryb3llZCA/IHRoaXMuX19kZXN0cm95RXJyb3IoKSA6ICh0aGlzLl9fb3B0aW9uc1tiXSA9IGMsIHRoaXMuX19vcHRpb25zRm9ybWF0KCksIGEuaW5BcnJheShiLCBbInRyaWdnZXIiLCAidHJpZ2dlckNsb3NlIiwgInRyaWdnZXJPcGVuIl0pID49IDAgJiYgdGhpcy5fX3ByZXBhcmVPcmlnaW4oKSwgInNlbGZEZXN0cnVjdGlvbiIgPT09IGIgJiYgdGhpcy5fX3ByZXBhcmVHQygpKSwgdGhpcykKICAgICAgICB9LAogICAgICAgIHJlcG9zaXRpb246IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgdmFyIGMgPSB0aGlzOwogICAgICAgICAgICByZXR1cm4gYy5fX2Rlc3Ryb3llZCA/IGMuX19kZXN0cm95RXJyb3IoKSA6ICJjbG9zZWQiICE9IGMuX19zdGF0ZSAmJiBkKGMuXyRvcmlnaW4pICYmIChiIHx8IGQoYy5fJHRvb2x0aXApKSAmJiAoYiB8fCBjLl8kdG9vbHRpcC5kZXRhY2goKSwgYy5fX0dlb21ldHJ5ID0gYy5fX2dlb21ldHJ5KCksIGMuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgdHlwZTogInJlcG9zaXRpb24iLAogICAgICAgICAgICAgICAgZXZlbnQ6IGEsCiAgICAgICAgICAgICAgICBoZWxwZXI6IHsKICAgICAgICAgICAgICAgICAgICBnZW86IGMuX19HZW9tZXRyeQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSksIGMKICAgICAgICB9LAogICAgICAgIHNob3c6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbihhKQogICAgICAgIH0sCiAgICAgICAgc3RhdHVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGRlc3Ryb3llZDogdGhpcy5fX2Rlc3Ryb3llZCwKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMuX19lbmFibGVkLAogICAgICAgICAgICAgICAgb3BlbjogImNsb3NlZCIgIT09IHRoaXMuX19zdGF0ZSwKICAgICAgICAgICAgICAgIHN0YXRlOiB0aGlzLl9fc3RhdGUKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fX2Rlc3Ryb3llZCA/IHRoaXMuX19kZXN0cm95RXJyb3IoKSA6IHRoaXMuX18kZW1pdHRlclB1YmxpYy50cmlnZ2VySGFuZGxlci5hcHBseSh0aGlzLl9fJGVtaXR0ZXJQdWJsaWMsIEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpKSwgdGhpcwogICAgICAgIH0KICAgIH0sIGEuZm4udG9vbHRpcHN0ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgYiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpLAogICAgICAgICAgICBjID0gIllvdSBhcmUgdXNpbmcgYSBzaW5nbGUgSFRNTCBlbGVtZW50IGFzIGNvbnRlbnQgZm9yIHNldmVyYWwgdG9vbHRpcHMuIFlvdSBwcm9iYWJseSB3YW50IHRvIHNldCB0aGUgY29udGVudENsb25pbmcgb3B0aW9uIHRvIFRSVUUuIjsKICAgICAgICBpZiAoMCA9PT0gdGhpcy5sZW5ndGgpIHJldHVybiB0aGlzOwogICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgYlswXSkgewogICAgICAgICAgICB2YXIgZCA9ICIjKiR+JiI7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZSA9IGEodGhpcykuZGF0YSgidG9vbHRpcHN0ZXItbnMiKSwKICAgICAgICAgICAgICAgICAgICBmID0gZSA/IGEodGhpcykuZGF0YShlWzBdKSA6IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoIWYpIHRocm93IG5ldyBFcnJvcigiWW91IGNhbGxlZCBUb29sdGlwc3RlcidzIFwiIiArIGJbMF0gKyAnIiBtZXRob2Qgb24gYW4gdW5pbml0aWFsaXplZCBlbGVtZW50Jyk7CiAgICAgICAgICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgZltiWzBdXSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1ldGhvZCAiJyArIGJbMF0gKyAnIicpOwogICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPiAxICYmICJjb250ZW50IiA9PSBiWzBdICYmIChiWzFdIGluc3RhbmNlb2YgYSB8fCAib2JqZWN0IiA9PSB0eXBlb2YgYlsxXSAmJiBudWxsICE9IGJbMV0gJiYgYlsxXS50YWdOYW1lKSAmJiAhZi5fX29wdGlvbnMuY29udGVudENsb25pbmcgJiYgZi5fX29wdGlvbnMuZGVidWcgJiYgY29uc29sZS5sb2coYyk7CiAgICAgICAgICAgICAgICB2YXIgZyA9IGZbYlswXV0oYlsxXSwgYlsyXSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZyAhPT0gZiB8fCAiaW5zdGFuY2UiID09PSBiWzBdID8gKGQgPSBnLCAhMSkgOiB2b2lkIDAKICAgICAgICAgICAgfSksICIjKiR+JiIgIT09IGQgPyBkIDogdGhpcwogICAgICAgIH0KICAgICAgICBhLnRvb2x0aXBzdGVyLl9faW5zdGFuY2VzTGF0ZXN0QXJyID0gW107CiAgICAgICAgdmFyIGUgPSBiWzBdICYmIHZvaWQgMCAhPT0gYlswXS5tdWx0aXBsZSwKICAgICAgICAgICAgZyA9IGUgJiYgYlswXS5tdWx0aXBsZSB8fCAhZSAmJiBmLm11bHRpcGxlLAogICAgICAgICAgICBoID0gYlswXSAmJiB2b2lkIDAgIT09IGJbMF0uY29udGVudCwKICAgICAgICAgICAgaSA9IGggJiYgYlswXS5jb250ZW50IHx8ICFoICYmIGYuY29udGVudCwKICAgICAgICAgICAgaiA9IGJbMF0gJiYgdm9pZCAwICE9PSBiWzBdLmNvbnRlbnRDbG9uaW5nLAogICAgICAgICAgICBrID0gaiAmJiBiWzBdLmNvbnRlbnRDbG9uaW5nIHx8ICFqICYmIGYuY29udGVudENsb25pbmcsCiAgICAgICAgICAgIGwgPSBiWzBdICYmIHZvaWQgMCAhPT0gYlswXS5kZWJ1ZywKICAgICAgICAgICAgbSA9IGwgJiYgYlswXS5kZWJ1ZyB8fCAhbCAmJiBmLmRlYnVnOwogICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+IDEgJiYgKGkgaW5zdGFuY2VvZiBhIHx8ICJvYmplY3QiID09IHR5cGVvZiBpICYmIG51bGwgIT0gaSAmJiBpLnRhZ05hbWUpICYmICFrICYmIG0gJiYgY29uc29sZS5sb2coYyksIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGMgPSAhMSwKICAgICAgICAgICAgICAgIGQgPSBhKHRoaXMpLAogICAgICAgICAgICAgICAgZSA9IGQuZGF0YSgidG9vbHRpcHN0ZXItbnMiKSwKICAgICAgICAgICAgICAgIGYgPSBudWxsOwogICAgICAgICAgICBlID8gZyA/IGMgPSAhMCA6IG0gJiYgKGNvbnNvbGUubG9nKCJUb29sdGlwc3Rlcjogb25lIG9yIG1vcmUgdG9vbHRpcHMgYXJlIGFscmVhZHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQgYmVsb3cuIElnbm9yaW5nLiIpLCBjb25zb2xlLmxvZyh0aGlzKSkgOiBjID0gITAsIGMgJiYgKGYgPSBuZXcgYS5Ub29sdGlwc3Rlcih0aGlzLCBiWzBdKSwgZSB8fCAoZSA9IFtdKSwgZS5wdXNoKGYuX19uYW1lc3BhY2UpLCBkLmRhdGEoInRvb2x0aXBzdGVyLW5zIiwgZSksIGQuZGF0YShmLl9fbmFtZXNwYWNlLCBmKSwgZi5fX29wdGlvbnMuZnVuY3Rpb25Jbml0ICYmIGYuX19vcHRpb25zLmZ1bmN0aW9uSW5pdC5jYWxsKGYsIGYsIHsKICAgICAgICAgICAgICAgIG9yaWdpbjogdGhpcwogICAgICAgICAgICB9KSwgZi5fdHJpZ2dlcigiaW5pdCIpKSwgYS50b29sdGlwc3Rlci5fX2luc3RhbmNlc0xhdGVzdEFyci5wdXNoKGYpCiAgICAgICAgfSksIHRoaXMKICAgIH0sIGIucHJvdG90eXBlID0gewogICAgICAgIF9faW5pdDogZnVuY3Rpb24oYikgewogICAgICAgICAgICB0aGlzLl9fJHRvb2x0aXAgPSBiLCB0aGlzLl9fJHRvb2x0aXAuY3NzKHsKICAgICAgICAgICAgICAgIGxlZnQ6IDAsCiAgICAgICAgICAgICAgICBvdmVyZmxvdzogImhpZGRlbiIsCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgIHRvcDogMAogICAgICAgICAgICB9KS5maW5kKCIudG9vbHRpcHN0ZXItY29udGVudCIpLmNzcygib3ZlcmZsb3ciLCAiYXV0byIpLCB0aGlzLiRjb250YWluZXIgPSBhKCc8ZGl2IGNsYXNzPSJ0b29sdGlwc3Rlci1ydWxlciI+PC9kaXY+JykuYXBwZW5kKHRoaXMuX18kdG9vbHRpcCkuYXBwZW5kVG8oaC53aW5kb3cuZG9jdW1lbnQuYm9keSkKICAgICAgICB9LAogICAgICAgIF9fZm9yY2VSZWRyYXc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYSA9IHRoaXMuX18kdG9vbHRpcC5wYXJlbnQoKTsKICAgICAgICAgICAgdGhpcy5fXyR0b29sdGlwLmRldGFjaCgpLCB0aGlzLl9fJHRvb2x0aXAuYXBwZW5kVG8oYSkKICAgICAgICB9LAogICAgICAgIGNvbnN0cmFpbjogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cyA9IHsKICAgICAgICAgICAgICAgIHdpZHRoOiBhLAogICAgICAgICAgICAgICAgaGVpZ2h0OiBiCiAgICAgICAgICAgIH0sIHRoaXMuX18kdG9vbHRpcC5jc3MoewogICAgICAgICAgICAgICAgZGlzcGxheTogImJsb2NrIiwKICAgICAgICAgICAgICAgIGhlaWdodDogIiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvdzogImF1dG8iLAogICAgICAgICAgICAgICAgd2lkdGg6IGEKICAgICAgICAgICAgfSksIHRoaXMKICAgICAgICB9LAogICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLl9fJHRvb2x0aXAuZGV0YWNoKCkuZmluZCgiLnRvb2x0aXBzdGVyLWNvbnRlbnQiKS5jc3MoewogICAgICAgICAgICAgICAgZGlzcGxheTogIiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvdzogIiIKICAgICAgICAgICAgfSksIHRoaXMuJGNvbnRhaW5lci5yZW1vdmUoKQogICAgICAgIH0sCiAgICAgICAgZnJlZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzID0gbnVsbCwgdGhpcy5fXyR0b29sdGlwLmNzcyh7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiAiIiwKICAgICAgICAgICAgICAgIGhlaWdodDogIiIsCiAgICAgICAgICAgICAgICBvdmVyZmxvdzogInZpc2libGUiLAogICAgICAgICAgICAgICAgd2lkdGg6ICIiCiAgICAgICAgICAgIH0pLCB0aGlzCiAgICAgICAgfSwKICAgICAgICBtZWFzdXJlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fX2ZvcmNlUmVkcmF3KCk7CiAgICAgICAgICAgIHZhciBhID0gdGhpcy5fXyR0b29sdGlwWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLAogICAgICAgICAgICAgICAgYiA9IHsKICAgICAgICAgICAgICAgICAgICBzaXplOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYS5oZWlnaHQgfHwgYS5ib3R0b20gLSBhLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGEud2lkdGggfHwgYS5yaWdodCAtIGEubGVmdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzKSB7CiAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXMuX18kdG9vbHRpcC5maW5kKCIudG9vbHRpcHN0ZXItY29udGVudCIpLAogICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLl9fJHRvb2x0aXAub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICBlID0gY1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwKICAgICAgICAgICAgICAgICAgICBmID0gewogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGQgPD0gdGhpcy5jb25zdHJhaW50cy5oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLndpZHRoIDw9IHRoaXMuY29uc3RyYWludHMud2lkdGggJiYgZS53aWR0aCA+PSBjWzBdLnNjcm9sbFdpZHRoIC0gMQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBiLmZpdHMgPSBmLmhlaWdodCAmJiBmLndpZHRoCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGguSUUgJiYgaC5JRSA8PSAxMSAmJiBiLnNpemUud2lkdGggIT09IGgud2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAmJiAoYi5zaXplLndpZHRoID0gTWF0aC5jZWlsKGIuc2l6ZS53aWR0aCkgKyAxKSwgYgogICAgICAgIH0KICAgIH07CiAgICB2YXIgaiA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsgLSAxICE9IGouaW5kZXhPZigibXNpZSIpID8gaC5JRSA9IHBhcnNlSW50KGouc3BsaXQoIm1zaWUiKVsxXSkgOiAtMSAhPT0gai50b0xvd2VyQ2FzZSgpLmluZGV4T2YoInRyaWRlbnQiKSAmJiAtMSAhPT0gai5pbmRleE9mKCIgcnY6MTEiKSA/IGguSUUgPSAxMSA6IC0xICE9IGoudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJlZGdlLyIpICYmIChoLklFID0gcGFyc2VJbnQoai50b0xvd2VyQ2FzZSgpLnNwbGl0KCJlZGdlLyIpWzFdKSk7CiAgICB2YXIgayA9ICJ0b29sdGlwc3Rlci5zaWRlVGlwIjsKICAgIHJldHVybiBhLnRvb2x0aXBzdGVyLl9wbHVnaW4oewogICAgICAgIG5hbWU6IGssCiAgICAgICAgaW5zdGFuY2U6IHsKICAgICAgICAgICAgX19kZWZhdWx0czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIGFycm93OiAhMCwKICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogNiwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvblBvc2l0aW9uOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG1pbkludGVyc2VjdGlvbjogMTYsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDAsCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG51bGwsCiAgICAgICAgICAgICAgICAgICAgc2lkZTogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRBd2FyZTogITAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgX19pbml0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXM7CiAgICAgICAgICAgICAgICBiLl9faW5zdGFuY2UgPSBhLCBiLl9fbmFtZXNwYWNlID0gInRvb2x0aXBzdGVyLXNpZGVUaXAtIiArIE1hdGgucm91bmQoMWU2ICogTWF0aC5yYW5kb20oKSksIGIuX19wcmV2aW91c1N0YXRlID0gImNsb3NlZCIsIGIuX19vcHRpb25zLCBiLl9fb3B0aW9uc0Zvcm1hdCgpLCBiLl9faW5zdGFuY2UuX29uKCJzdGF0ZS4iICsgYi5fX25hbWVzcGFjZSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICJjbG9zZWQiID09IGEuc3RhdGUgPyBiLl9fY2xvc2UoKSA6ICJhcHBlYXJpbmciID09IGEuc3RhdGUgJiYgImNsb3NlZCIgPT0gYi5fX3ByZXZpb3VzU3RhdGUgJiYgYi5fX2NyZWF0ZSgpLCBiLl9fcHJldmlvdXNTdGF0ZSA9IGEuc3RhdGUKICAgICAgICAgICAgICAgIH0pLCBiLl9faW5zdGFuY2UuX29uKCJvcHRpb25zLiIgKyBiLl9fbmFtZXNwYWNlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBiLl9fb3B0aW9uc0Zvcm1hdCgpCiAgICAgICAgICAgICAgICB9KSwgYi5fX2luc3RhbmNlLl9vbigicmVwb3NpdGlvbi4iICsgYi5fX25hbWVzcGFjZSwgZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGIuX19yZXBvc2l0aW9uKGEuZXZlbnQsIGEuaGVscGVyKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX19jbG9zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9faW5zdGFuY2UuY29udGVudCgpIGluc3RhbmNlb2YgYSAmJiB0aGlzLl9faW5zdGFuY2UuY29udGVudCgpLmRldGFjaCgpLCB0aGlzLl9faW5zdGFuY2UuXyR0b29sdGlwLnJlbW92ZSgpLCB0aGlzLl9faW5zdGFuY2UuXyR0b29sdGlwID0gbnVsbAogICAgICAgICAgICB9LAogICAgICAgICAgICBfX2NyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGEoJzxkaXYgY2xhc3M9InRvb2x0aXBzdGVyLWJhc2UgdG9vbHRpcHN0ZXItc2lkZXRpcCI+PGRpdiBjbGFzcz0idG9vbHRpcHN0ZXItYm94Ij48ZGl2IGNsYXNzPSJ0b29sdGlwc3Rlci1jb250ZW50Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwc3Rlci1hcnJvdyI+PGRpdiBjbGFzcz0idG9vbHRpcHN0ZXItYXJyb3ctdW5jcm9wcGVkIj48ZGl2IGNsYXNzPSJ0b29sdGlwc3Rlci1hcnJvdy1ib3JkZXIiPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXBzdGVyLWFycm93LWJhY2tncm91bmQiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicpOwogICAgICAgICAgICAgICAgdGhpcy5fX29wdGlvbnMuYXJyb3cgfHwgYi5maW5kKCIudG9vbHRpcHN0ZXItYm94IikuY3NzKCJtYXJnaW4iLCAwKS5lbmQoKS5maW5kKCIudG9vbHRpcHN0ZXItYXJyb3ciKS5oaWRlKCksIHRoaXMuX19vcHRpb25zLm1pbldpZHRoICYmIGIuY3NzKCJtaW4td2lkdGgiLCB0aGlzLl9fb3B0aW9ucy5taW5XaWR0aCArICJweCIpLCB0aGlzLl9fb3B0aW9ucy5tYXhXaWR0aCAmJiBiLmNzcygibWF4LXdpZHRoIiwgdGhpcy5fX29wdGlvbnMubWF4V2lkdGggKyAicHgiKSwKICAgICAgICAgICAgICAgICAgICB0aGlzLl9faW5zdGFuY2UuXyR0b29sdGlwID0gYiwgdGhpcy5fX2luc3RhbmNlLl90cmlnZ2VyKCJjcmVhdGVkIikKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX19kZXN0cm95OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuX19pbnN0YW5jZS5fb2ZmKCIuIiArIHNlbGYuX19uYW1lc3BhY2UpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9fb3B0aW9uc0Zvcm1hdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAoYi5fX29wdGlvbnMgPSBiLl9faW5zdGFuY2UuX29wdGlvbnNFeHRyYWN0KGssIGIuX19kZWZhdWx0cygpKSwgYi5fX29wdGlvbnMucG9zaXRpb24gJiYgKGIuX19vcHRpb25zLnNpZGUgPSBiLl9fb3B0aW9ucy5wb3NpdGlvbiksICJvYmplY3QiICE9IHR5cGVvZiBiLl9fb3B0aW9ucy5kaXN0YW5jZSAmJiAoYi5fX29wdGlvbnMuZGlzdGFuY2UgPSBbYi5fX29wdGlvbnMuZGlzdGFuY2VdKSwgYi5fX29wdGlvbnMuZGlzdGFuY2UubGVuZ3RoIDwgNCAmJiAodm9pZCAwID09PSBiLl9fb3B0aW9ucy5kaXN0YW5jZVsxXSAmJiAoYi5fX29wdGlvbnMuZGlzdGFuY2VbMV0gPSBiLl9fb3B0aW9ucy5kaXN0YW5jZVswXSksIHZvaWQgMCA9PT0gYi5fX29wdGlvbnMuZGlzdGFuY2VbMl0gJiYgKGIuX19vcHRpb25zLmRpc3RhbmNlWzJdID0gYi5fX29wdGlvbnMuZGlzdGFuY2VbMF0pLCB2b2lkIDAgPT09IGIuX19vcHRpb25zLmRpc3RhbmNlWzNdICYmIChiLl9fb3B0aW9ucy5kaXN0YW5jZVszXSA9IGIuX19vcHRpb25zLmRpc3RhbmNlWzFdKSksIGIuX19vcHRpb25zLmRpc3RhbmNlID0gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGIuX19vcHRpb25zLmRpc3RhbmNlWzBdLAogICAgICAgICAgICAgICAgICAgICAgICByaWdodDogYi5fX29wdGlvbnMuZGlzdGFuY2VbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogYi5fX29wdGlvbnMuZGlzdGFuY2VbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGIuX19vcHRpb25zLmRpc3RhbmNlWzNdCiAgICAgICAgICAgICAgICAgICAgfSwgInN0cmluZyIgPT0gdHlwZW9mIGIuX19vcHRpb25zLnNpZGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogInJpZ2h0IgogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgYi5fX29wdGlvbnMuc2lkZSA9IFtiLl9fb3B0aW9ucy5zaWRlLCBjW2IuX19vcHRpb25zLnNpZGVdXSwgImxlZnQiID09IGIuX19vcHRpb25zLnNpZGVbMF0gfHwgInJpZ2h0IiA9PSBiLl9fb3B0aW9ucy5zaWRlWzBdID8gYi5fX29wdGlvbnMuc2lkZS5wdXNoKCJ0b3AiLCAiYm90dG9tIikgOiBiLl9fb3B0aW9ucy5zaWRlLnB1c2goInJpZ2h0IiwgImxlZnQiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgNiA9PT0gYS50b29sdGlwc3Rlci5fZW52LklFICYmIGIuX19vcHRpb25zLmFycm93ICE9PSAhMCAmJiAoYi5fX29wdGlvbnMuYXJyb3cgPSAhMSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX19yZXBvc2l0aW9uOiBmdW5jdGlvbihiLCBjKSB7CiAgICAgICAgICAgICAgICB2YXIgZCwgZSA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgZiA9IGUuX190YXJnZXRGaW5kKGMpLAogICAgICAgICAgICAgICAgICAgIGcgPSBbXTsKICAgICAgICAgICAgICAgIGUuX19pbnN0YW5jZS5fJHRvb2x0aXAuZGV0YWNoKCk7CiAgICAgICAgICAgICAgICB2YXIgaCA9IGUuX19pbnN0YW5jZS5fJHRvb2x0aXAuY2xvbmUoKSwKICAgICAgICAgICAgICAgICAgICBpID0gYS50b29sdGlwc3Rlci5fZ2V0UnVsZXIoaCksCiAgICAgICAgICAgICAgICAgICAgaiA9ICExLAogICAgICAgICAgICAgICAgICAgIGsgPSBlLl9faW5zdGFuY2Uub3B0aW9uKCJhbmltYXRpb24iKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoayAmJiBoLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci0iICsgayksIGEuZWFjaChbIndpbmRvdyIsICJkb2N1bWVudCJdLCBmdW5jdGlvbihkLCBrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChlLl9faW5zdGFuY2UuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F0aXNmaWVkOiBqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVRlc3Q6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAicG9zaXRpb25UZXN0IgogICAgICAgICAgICAgICAgICAgICAgICB9KSwgMSA9PSBsIHx8IDAgIT0gbCAmJiAwID09IGogJiYgKCJ3aW5kb3ciICE9IGsgfHwgZS5fX29wdGlvbnMudmlld3BvcnRBd2FyZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZS5fX29wdGlvbnMuc2lkZS5sZW5ndGg7IGQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5fX29wdGlvbnMuc2lkZVtkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b3AiID09IG4gfHwgImJvdHRvbSIgPT0gbiA/IG0udmVydGljYWwgPSBlLl9fb3B0aW9ucy5kaXN0YW5jZVtuXSA6IG0uaG9yaXpvbnRhbCA9IGUuX19vcHRpb25zLmRpc3RhbmNlW25dLCBlLl9fc2lkZUNoYW5nZShoLCBuKSwgYS5lYWNoKFsibmF0dXJhbCIsICJjb25zdHJhaW5lZCJdLCBmdW5jdGlvbihhLCBkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPSBudWxsLCBlLl9faW5zdGFuY2UuX3RyaWdnZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXI6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdGlzZmllZDogaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVGVzdDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInBvc2l0aW9uVGVzdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDEgPT0gbCB8fCAwICE9IGwgJiYgMCA9PSBqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXRzOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXJTaXplOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGU6IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGZbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvbGU6IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gIm5hdHVyYWwiID09IGQgPyBpLmZyZWUoKSA6IGkuY29uc3RyYWluKGMuZ2VvLmF2YWlsYWJsZVtrXVtuXS53aWR0aCAtIG0uaG9yaXpvbnRhbCwgYy5nZW8uYXZhaWxhYmxlW2tdW25dLmhlaWdodCAtIG0udmVydGljYWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG8ubWVhc3VyZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaC5zaXplID0gcC5zaXplLCBoLm91dGVyU2l6ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHAuc2l6ZS5oZWlnaHQgKyBtLnZlcnRpY2FsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBwLnNpemUud2lkdGggKyBtLmhvcml6b250YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICJuYXR1cmFsIiA9PSBkID8gYy5nZW8uYXZhaWxhYmxlW2tdW25dLndpZHRoID49IGgub3V0ZXJTaXplLndpZHRoICYmIGMuZ2VvLmF2YWlsYWJsZVtrXVtuXS5oZWlnaHQgPj0gaC5vdXRlclNpemUuaGVpZ2h0ID8gaC5maXRzID0gITAgOiBoLmZpdHMgPSAhMSA6IGguZml0cyA9IHAuZml0cywgIndpbmRvdyIgPT0gayAmJiAoaC5maXRzID8gInRvcCIgPT0gbiB8fCAiYm90dG9tIiA9PSBuID8gaC53aG9sZSA9IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQucmlnaHQgPj0gZS5fX29wdGlvbnMubWluSW50ZXJzZWN0aW9uICYmIGMuZ2VvLndpbmRvdy5zaXplLndpZHRoIC0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ID49IGUuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiA6IGgud2hvbGUgPSBjLmdlby5vcmlnaW4ud2luZG93T2Zmc2V0LmJvdHRvbSA+PSBlLl9fb3B0aW9ucy5taW5JbnRlcnNlY3Rpb24gJiYgYy5nZW8ud2luZG93LnNpemUuaGVpZ2h0IC0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC50b3AgPj0gZS5fX29wdGlvbnMubWluSW50ZXJzZWN0aW9uIDogaC53aG9sZSA9ICExKSwgZy5wdXNoKGgpLCBoLndob2xlKSBqID0gITA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJuYXR1cmFsIiA9PSBoLm1vZGUgJiYgKGguZml0cyB8fCBoLnNpemUud2lkdGggPD0gYy5nZW8uYXZhaWxhYmxlW2tdW25dLndpZHRoKSkgcmV0dXJuICExCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSksIGUuX19pbnN0YW5jZS5fdHJpZ2dlcih7CiAgICAgICAgICAgICAgICAgICAgZWRpdDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgICAgICBnID0gYQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgaGVscGVyOiBjLAogICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGcsCiAgICAgICAgICAgICAgICAgICAgdHlwZTogInBvc2l0aW9uVGVzdGVkIgogICAgICAgICAgICAgICAgfSksIGcuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEud2hvbGUgJiYgIWIud2hvbGUpIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWEud2hvbGUgJiYgYi53aG9sZSkgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKGEud2hvbGUgJiYgYi53aG9sZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGUuX19vcHRpb25zLnNpZGUuaW5kZXhPZihhLnNpZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGUuX19vcHRpb25zLnNpZGUuaW5kZXhPZihiLnNpZGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA+IGMgPyAtMSA6IGMgPiBkID8gMSA6ICJuYXR1cmFsIiA9PSBhLm1vZGUgPyAtMSA6IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZml0cyAmJiAhYi5maXRzKSByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFhLmZpdHMgJiYgYi5maXRzKSByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBpZiAoYS5maXRzICYmIGIuZml0cykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGUuX19vcHRpb25zLnNpZGUuaW5kZXhPZihhLnNpZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGUuX19vcHRpb25zLnNpZGUuaW5kZXhPZihiLnNpZGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA+IGMgPyAtMSA6IGMgPiBkID8gMSA6ICJuYXR1cmFsIiA9PSBhLm1vZGUgPyAtMSA6IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkb2N1bWVudCIgPT0gYS5jb250YWluZXIgJiYgImJvdHRvbSIgPT0gYS5zaWRlICYmICJuYXR1cmFsIiA9PSBhLm1vZGUgPyAtMSA6IDEKICAgICAgICAgICAgICAgIH0pLCBkID0gZ1swXSwgZC5jb29yZCA9IHt9LCBkLnNpZGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJsZWZ0IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJyaWdodCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY29vcmQudG9wID0gTWF0aC5mbG9vcihkLnRhcmdldCAtIGQuc2l6ZS5oZWlnaHQgLyAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiYm90dG9tIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b3AiOgogICAgICAgICAgICAgICAgICAgICAgICBkLmNvb3JkLmxlZnQgPSBNYXRoLmZsb29yKGQudGFyZ2V0IC0gZC5zaXplLndpZHRoIC8gMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN3aXRjaCAoZC5zaWRlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGVmdCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY29vcmQubGVmdCA9IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQubGVmdCAtIGQub3V0ZXJTaXplLndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJyaWdodCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY29vcmQubGVmdCA9IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQucmlnaHQgKyBkLmRpc3RhbmNlLmhvcml6b250YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInRvcCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY29vcmQudG9wID0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC50b3AgLSBkLm91dGVyU2l6ZS5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgImJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGQuY29vcmQudG9wID0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC5ib3R0b20gKyBkLmRpc3RhbmNlLnZlcnRpY2FsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAid2luZG93IiA9PSBkLmNvbnRhaW5lciA/ICJ0b3AiID09IGQuc2lkZSB8fCAiYm90dG9tIiA9PSBkLnNpZGUgPyBkLmNvb3JkLmxlZnQgPCAwID8gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC5yaWdodCAtIHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiA+PSAwID8gZC5jb29yZC5sZWZ0ID0gMCA6IGQuY29vcmQubGVmdCA9IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQucmlnaHQgLSB0aGlzLl9fb3B0aW9ucy5taW5JbnRlcnNlY3Rpb24gLSAxIDogZC5jb29yZC5sZWZ0ID4gYy5nZW8ud2luZG93LnNpemUud2lkdGggLSBkLnNpemUud2lkdGggJiYgKGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQubGVmdCArIHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiA8PSBjLmdlby53aW5kb3cuc2l6ZS53aWR0aCA/IGQuY29vcmQubGVmdCA9IGMuZ2VvLndpbmRvdy5zaXplLndpZHRoIC0gZC5zaXplLndpZHRoIDogZC5jb29yZC5sZWZ0ID0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ICsgdGhpcy5fX29wdGlvbnMubWluSW50ZXJzZWN0aW9uICsgMSAtIGQuc2l6ZS53aWR0aCkgOiBkLmNvb3JkLnRvcCA8IDAgPyBjLmdlby5vcmlnaW4ud2luZG93T2Zmc2V0LmJvdHRvbSAtIHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiA+PSAwID8gZC5jb29yZC50b3AgPSAwIDogZC5jb29yZC50b3AgPSBjLmdlby5vcmlnaW4ud2luZG93T2Zmc2V0LmJvdHRvbSAtIHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiAtIDEgOiBkLmNvb3JkLnRvcCA+IGMuZ2VvLndpbmRvdy5zaXplLmhlaWdodCAtIGQuc2l6ZS5oZWlnaHQgJiYgKGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQudG9wICsgdGhpcy5fX29wdGlvbnMubWluSW50ZXJzZWN0aW9uIDw9IGMuZ2VvLndpbmRvdy5zaXplLmhlaWdodCA/IGQuY29vcmQudG9wID0gYy5nZW8ud2luZG93LnNpemUuaGVpZ2h0IC0gZC5zaXplLmhlaWdodCA6IGQuY29vcmQudG9wID0gYy5nZW8ub3JpZ2luLndpbmRvd09mZnNldC50b3AgKyB0aGlzLl9fb3B0aW9ucy5taW5JbnRlcnNlY3Rpb24gKyAxIC0gZC5zaXplLmhlaWdodCkgOiAoZC5jb29yZC5sZWZ0ID4gYy5nZW8ud2luZG93LnNpemUud2lkdGggLSBkLnNpemUud2lkdGggJiYgKGQuY29vcmQubGVmdCA9IGMuZ2VvLndpbmRvdy5zaXplLndpZHRoIC0gZC5zaXplLndpZHRoKSwgZC5jb29yZC5sZWZ0IDwgMCAmJiAoZC5jb29yZC5sZWZ0ID0gMCkpLCBlLl9fc2lkZUNoYW5nZShoLCBkLnNpZGUpLCBjLnRvb2x0aXBDbG9uZSA9IGhbMF0sIGMudG9vbHRpcFBhcmVudCA9IGUuX19pbnN0YW5jZS5vcHRpb24oInBhcmVudCIpLnBhcmVudFswXSwgYy5tb2RlID0gZC5tb2RlLCBjLndob2xlID0gZC53aG9sZSwgYy5vcmlnaW4gPSBlLl9faW5zdGFuY2UuXyRvcmlnaW5bMF0sIGMudG9vbHRpcCA9IGUuX19pbnN0YW5jZS5fJHRvb2x0aXBbMF0sIGRlbGV0ZSBkLmNvbnRhaW5lciwgZGVsZXRlIGQuZml0cywgZGVsZXRlIGQubW9kZSwgZGVsZXRlIGQub3V0ZXJTaXplLCBkZWxldGUgZC53aG9sZSwgZC5kaXN0YW5jZSA9IGQuZGlzdGFuY2UuaG9yaXpvbnRhbCB8fCBkLmRpc3RhbmNlLnZlcnRpY2FsOwogICAgICAgICAgICAgICAgdmFyIGwgPSBhLmV4dGVuZCghMCwge30sIGQpOwogICAgICAgICAgICAgICAgaWYgKGUuX19pbnN0YW5jZS5fdHJpZ2dlcih7CiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBhCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBiLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXI6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBsLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAicG9zaXRpb24iCiAgICAgICAgICAgICAgICAgICAgfSksIGUuX19vcHRpb25zLmZ1bmN0aW9uUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGUuX19vcHRpb25zLmZ1bmN0aW9uUG9zaXRpb24uY2FsbChlLCBlLl9faW5zdGFuY2UsIGMsIGwpOwogICAgICAgICAgICAgICAgICAgIG0gJiYgKGQgPSBtKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaS5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICB2YXIgbiwgbzsKICAgICAgICAgICAgICAgICJ0b3AiID09IGQuc2lkZSB8fCAiYm90dG9tIiA9PSBkLnNpZGUgPyAobiA9IHsKICAgICAgICAgICAgICAgICAgICBwcm9wOiAibGVmdCIsCiAgICAgICAgICAgICAgICAgICAgdmFsOiBkLnRhcmdldCAtIGQuY29vcmQubGVmdAogICAgICAgICAgICAgICAgfSwgbyA9IGQuc2l6ZS53aWR0aCAtIHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbikgOiAobiA9IHsKICAgICAgICAgICAgICAgICAgICBwcm9wOiAidG9wIiwKICAgICAgICAgICAgICAgICAgICB2YWw6IGQudGFyZ2V0IC0gZC5jb29yZC50b3AKICAgICAgICAgICAgICAgIH0sIG8gPSBkLnNpemUuaGVpZ2h0IC0gdGhpcy5fX29wdGlvbnMubWluSW50ZXJzZWN0aW9uKSwgbi52YWwgPCB0aGlzLl9fb3B0aW9ucy5taW5JbnRlcnNlY3Rpb24gPyBuLnZhbCA9IHRoaXMuX19vcHRpb25zLm1pbkludGVyc2VjdGlvbiA6IG4udmFsID4gbyAmJiAobi52YWwgPSBvKTsKICAgICAgICAgICAgICAgIHZhciBwOwogICAgICAgICAgICAgICAgcCA9IGMuZ2VvLm9yaWdpbi5maXhlZExpbmVhZ2UgPyBjLmdlby5vcmlnaW4ud2luZG93T2Zmc2V0IDogewogICAgICAgICAgICAgICAgICAgIGxlZnQ6IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQubGVmdCArIGMuZ2VvLndpbmRvdy5zY3JvbGwubGVmdCwKICAgICAgICAgICAgICAgICAgICB0b3A6IGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQudG9wICsgYy5nZW8ud2luZG93LnNjcm9sbC50b3AKICAgICAgICAgICAgICAgIH0sIGQuY29vcmQgPSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogcC5sZWZ0ICsgKGQuY29vcmQubGVmdCAtIGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQubGVmdCksCiAgICAgICAgICAgICAgICAgICAgdG9wOiBwLnRvcCArIChkLmNvb3JkLnRvcCAtIGMuZ2VvLm9yaWdpbi53aW5kb3dPZmZzZXQudG9wKQogICAgICAgICAgICAgICAgfSwgZS5fX3NpZGVDaGFuZ2UoZS5fX2luc3RhbmNlLl8kdG9vbHRpcCwgZC5zaWRlKSwgYy5nZW8ub3JpZ2luLmZpeGVkTGluZWFnZSA/IGUuX19pbnN0YW5jZS5fJHRvb2x0aXAuY3NzKCJwb3NpdGlvbiIsICJmaXhlZCIpIDogZS5fX2luc3RhbmNlLl8kdG9vbHRpcC5jc3MoInBvc2l0aW9uIiwgIiIpLCBlLl9faW5zdGFuY2UuXyR0b29sdGlwLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogZC5jb29yZC5sZWZ0LAogICAgICAgICAgICAgICAgICAgIHRvcDogZC5jb29yZC50b3AsCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkLnNpemUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBkLnNpemUud2lkdGgKICAgICAgICAgICAgICAgIH0pLmZpbmQoIi50b29sdGlwc3Rlci1hcnJvdyIpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogIiIsCiAgICAgICAgICAgICAgICAgICAgdG9wOiAiIgogICAgICAgICAgICAgICAgfSkuY3NzKG4ucHJvcCwgbi52YWwpLCBlLl9faW5zdGFuY2UuXyR0b29sdGlwLmFwcGVuZFRvKGUuX19pbnN0YW5jZS5vcHRpb24oInBhcmVudCIpKSwgZS5fX2luc3RhbmNlLl90cmlnZ2VyKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAicmVwb3NpdGlvbmVkIiwKICAgICAgICAgICAgICAgICAgICBldmVudDogYiwKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX19zaWRlQ2hhbmdlOiBmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAgICBhLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci1ib3R0b20iKS5yZW1vdmVDbGFzcygidG9vbHRpcHN0ZXItbGVmdCIpLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci1yaWdodCIpLnJlbW92ZUNsYXNzKCJ0b29sdGlwc3Rlci10b3AiKS5hZGRDbGFzcygidG9vbHRpcHN0ZXItIiArIGIpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF9fdGFyZ2V0RmluZDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgdmFyIGIgPSB7fSwKICAgICAgICAgICAgICAgICAgICBjID0gdGhpcy5fX2luc3RhbmNlLl8kb3JpZ2luWzBdLmdldENsaWVudFJlY3RzKCk7CiAgICAgICAgICAgICAgICBpZiAoYy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLl9faW5zdGFuY2UuXyRvcmlnaW4uY3NzKCJvcGFjaXR5Iik7CiAgICAgICAgICAgICAgICAgICAgMSA9PSBkICYmICh0aGlzLl9faW5zdGFuY2UuXyRvcmlnaW4uY3NzKCJvcGFjaXR5IiwgLjk5KSwgYyA9IHRoaXMuX19pbnN0YW5jZS5fJG9yaWdpblswXS5nZXRDbGllbnRSZWN0cygpLCB0aGlzLl9faW5zdGFuY2UuXyRvcmlnaW4uY3NzKCJvcGFjaXR5IiwgMSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYy5sZW5ndGggPCAyKSBiLnRvcCA9IE1hdGguZmxvb3IoYS5nZW8ub3JpZ2luLndpbmRvd09mZnNldC5sZWZ0ICsgYS5nZW8ub3JpZ2luLnNpemUud2lkdGggLyAyKSwgYi5ib3R0b20gPSBiLnRvcCwgYi5sZWZ0ID0gTWF0aC5mbG9vcihhLmdlby5vcmlnaW4ud2luZG93T2Zmc2V0LnRvcCArIGEuZ2VvLm9yaWdpbi5zaXplLmhlaWdodCAvIDIpLCBiLnJpZ2h0ID0gYi5sZWZ0OwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjWzBdOwogICAgICAgICAgICAgICAgICAgIGIudG9wID0gTWF0aC5mbG9vcihlLmxlZnQgKyAoZS5yaWdodCAtIGUubGVmdCkgLyAyKSwgZSA9IGMubGVuZ3RoID4gMiA/IGNbTWF0aC5jZWlsKGMubGVuZ3RoIC8gMikgLSAxXSA6IGNbMF0sIGIucmlnaHQgPSBNYXRoLmZsb29yKGUudG9wICsgKGUuYm90dG9tIC0gZS50b3ApIC8gMiksIGUgPSBjW2MubGVuZ3RoIC0gMV0sIGIuYm90dG9tID0gTWF0aC5mbG9vcihlLmxlZnQgKyAoZS5yaWdodCAtIGUubGVmdCkgLyAyKSwgZSA9IGMubGVuZ3RoID4gMiA/IGNbTWF0aC5jZWlsKChjLmxlbmd0aCArIDEpIC8gMikgLSAxXSA6IGNbYy5sZW5ndGggLSAxXSwgYi5sZWZ0ID0gTWF0aC5mbG9vcihlLnRvcCArIChlLmJvdHRvbSAtIGUudG9wKSAvIDIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gYgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksIGEKfSk7"}},"time_used":36,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":15,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"wealthgridasset.com/assets1/fonts/flaticon.woff","fqdn":"wealthgridasset.com","domain":"wealthgridasset.com","tld":"com"},"ip":{"addr":"5.182.208.207","port":443,"asn":62068,"as":"SpectraIP B.V.","country":"The Netherlands","country_code":"NL"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.560Z","timestamp":1785159465560,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.wealthgridasset.com","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Jun 2026 10:59:12 GMT","end":"Fri, 18 Sep 2026 10:59:11 GMT"},"fingerprint":{"sha1":"67:40:EE:E6:53:B8:2F:D1:FF:E3:5B:B8:C8:C2:0B:C8:17:5C:49:C8","sha256":"BC:DB:2E:E9:46:02:FB:E2:B0:ED:9D:EF:DE:22:4C:BA:D1:15:E7:BB:24:31:D0:B8:D8:02:42:06:C3:4F:9C:76"}}},"request":{"raw":"GET /assets1/fonts/flaticon.woff HTTP/1.1\r\nHost: wealthgridasset.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://wealthgridasset.com/assets1/css/flaticon.css\r\nCookie: PHPSESSID=k0hpffuk6d9e8qvudfejajquh7\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncache-control: public, max-age=604800\r\nexpires: Mon, 03 Aug 2026 13:37:45 GMT\r\ncontent-type: font/woff\r\nlast-modified: Thu, 18 Dec 2025 11:51:30 GMT\r\naccept-ranges: bytes\r\ncontent-length: 12248\r\ndate: Mon, 27 Jul 2026 13:37:45 GMT\r\nserver: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":12248,"size_decoded":12514,"mime_type":"font/woff","magic":"Web Open Font Format (Version 2), TrueType, length 12248, version 1.0","md5":"b8eb13b97886ac6c7c8154a4904fcdc3","sha1":"4a126d4ec079fb813bf9f390a10d6b117ff3f1cb","sha256":"72ef8b15da5d0c940e5d2fa778627ed289a492fa3e77f8679bb971c7e2d100c1","sha512":"ed091c9632b6cfd71fd2bd260e14acfc27c4468da578922b87c66f8431b580b17e6b3a7d8476f414a86d8cd5a189ec354f072493c92d0f9f12a540755cdd8a8f","ssdeep":"192:8zpxBSAtXst1HtpFS/wAP5inzj340AimEKZc8+iY5GM1My3wlWN8YY+:sHQZNa/NPIzjG3EKv+t5aUwlE81+","tlshash":"4742b0304729d589e1d12e36fb8a065e7d4e40ca982b90c25e516fef5a04127aabc5d2","first_seen":"2024-10-21T12:49:14.808469Z","last_seen":"2026-07-27T13:38:47.784906Z","times_seen":97,"resource_available":false,"data":"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"}},"time_used":22,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"wealthgridasset.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://wealthgridasset.com/","date":"2026-07-27T13:37:45.568Z","timestamp":1785159465568,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0I5nvwU.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://wealthgridasset.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 48532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:14 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:14 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 09 Sep 2025 18:33:50 GMT\r\ncontent-type: font/woff2\r\nage: 433651\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":48532,"size_decoded":49345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 48532, version 1.0","md5":"225835e6e0496c54dc2aca9f3d533892","sha1":"942ef5298bbe74bfe44e445def5f2bfc94027fa8","sha256":"acc60d454f46f2ba233c516aa3299aa60e1f49ffd0f06b8392a7c772a5694087","sha512":"ea2ff96ed5ac965c1846b4b33990beab3d4ced66806fa44321f5dd59d9a29a8ae1a67a5816d40165af8a896677b6a24bb74ea6db53cd5e686080165db9fd62c2","ssdeep":"768:b9tYsJ6BxVEpu8sqEkvfXRGEBqH7KxpxA07hQv2bSokjQx2AOWUVOv7UeFHOpIsR:LsEcy7fXRGqqHmr7qv32UC7UetOGLkF","tlshash":"03230178cf9f85b3d33b153afaf4d20562a9067de76c4a803831051a2a55770b89dc0e","first_seen":"2025-05-29T17:27:56.345238Z","last_seen":"2026-08-04T06:29:09.415181Z","times_seen":252335,"resource_available":false,"data":"d09GMgABAAAAAL2UABQAAAAB37AAAL0fAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoZeG4KyRBzVcD9IVkFSi2kGYD9TVEFUgU4nJgCFNi9sEQgKgbtAgaEUC4gOADCCnD4BNgIkA5AYBCAFhi4HoQQMB1sVzXEmcmP3c+AywnQbAnTSpqa685dwgXb5haNNb/Y48+ca9SMVjNtruB0iNz/9U7P///8/ManIWCUF03QbAwH17t6HgrSNar27dXdUZtXAVrOh7TtsQWN4F5U2TFldO44xZpHETdyhVDAzo2ezg10W2XZCyI4qyo0SLhKSUnQq6nkNmoLvEWWb0cykCSE1YJTwuiPB9D5Qje6qUEGR+GrbVkXZyMs+gbBh0M9xonPiiCoX/c5GEzomudPxjrquzSYZ12tQ8claYniyV6se/fzmpg3zbOPUQR5WkBk5cwqGISQk5bsrKGwn1R0dK7X1T5j1h4RZdpSQYr9orjGXJf9bXo/zxHdPzuNd3O7wq1AKFeeKc4X7UfThL2nJoYViNU7KdfYfjeIkiYboEtX37QvN3+fdFexIsSAShBLap/j/N3rlyZvhh1sHZHKTfo6Iq7PGqif9UlC2qjyyqnoW8BBIewKU5olRYpAQZALpbfqI162f3ffy8lIIISQBI4YQIELEUIx0pShFFESIgChVwEaJCAQiRkRFBRSOw9IQOURsqIClof087NjQ4xT9nna0Hx+RDPG6+Xdv5yV52YMQsgkQZEuYiqsVZx27w9ExtXZICB1rW2urtVs7vrXDWpbjA1ocIOBirCxIQgb/fOyt3699bnrD7W5CdigUGoTLQmUVdCyfhMRiBCoKh8zK/aBmhmBunSCoSBhUCLJRNdhIN5asAlaMUWMbMBgbo8ZGjRppEKkiZWGACiqh2K//zq6PVj/ygObsfzaOt0V7pSLyeufsBlo/E+N61FbCRklCSBySECPEgCRIEswLFaBY6/deVU7675cfcNP+BahRn9iJG2y77b6KUE5UOut6K/PWKcU0BAjBEwgESdBgIfHh/7f1v1BQb6RTYccEOoKnqBAQKYnM4TqvKr5uVDm3Ijf08GuvP+c1RVSEmuE1u0UOuAKBRseyuqwiVOkTKmDH9g583++nZyfCVZigcoW/+yKTgnCAtwhGlqWrNKwwnZzzVByoqH27tKXv3tO7/+mvMspUycByABVAhYyaVJlsmxlNv4FOwWqvzPyGUSED6ioT3Lc5/t2sGbTMEKR0z9y/bp8Q0i112lLxzcuckF/4PVVBzgSe3v16h/I+ICqC49mqZjZboStkpWFncuH5//3a74NZo09FVieqNCuVSpo9BwkFkkbxSKjyf+iiTeVdHsKln2+kldyvtaSjI9D+6TgojM3cOqUBSP9aZlszZ5s9fTNca0JLj6qbsA8JQYDxir3p+veT02pUm50knXQPCIfQSBTlKf+8RiP07t05jdPI51UX74M6N49Vps+LqcegqSStM+6Lpbl8TJ82NrqQsDxUZqCAwZLBFMb+NS1GYhHGQTwZQ4FdRhlGwR6GYQzgYOT270vVuv7X3SAbkM0iwF2xJ4PycuZzIiTPzJlkSxNSvO+5A6FGdwNkAyRtBNEGSQWAFMcNihyD5LDMJigZIiWnIHlD1mStvCl8gHK5RclTbXI0puQJlCZqfZsY5A0h3EKIp91biOe9nWI8hXy87vG8x7meFv6/n1bSfjr76m3u0cgxINLV2jEgBtiAz6q7d6y5LWtD/g4hsd0sA01ARlsmKAMSUkKGC6AZN8AGgBiKVNMWiyM1Ar7SsFLplPpeBOjhgyAV+E50iNXzHWk5F42rVk3povT/rZk2W2bjKxQQu7o+fzc/23+0B1QA1vwXMqEDoAKRqlZ9tXJ2SmkVUKAIqjx83rTdQPqXPCDcoiyYdBdQFgB+DPMknv9+7zubw6JexZ0LXSgGGWHeYNVPqZso6FdB1He04lUmDhQT4wXEf7/X2ewg1BfyOmJsrHp5UYdS1YcuS3XBJUE1YUAo/N5pmdIlpV+FKABmGbPnayyrzHZdSik4L8haZBsdvA07GMAuHIZAXUx3/ebiEU7BByZIM5xDKIEkKCSO9/mmzqb5uc51DMVWCJ865JdVNqvXcf8h19Q8hKUuOGSgdyZPep7AuiSwJvw1wYggXGFKj/WdWG99cjveI4EMn8GEwQRhjBBGGBGyQ37P9Liz9Tvf//+ulJ7fnHMfz6raoiJGREXEGBExKjZUxHQz9xTtS9LBRiLqy35ZvEQ8Kh3jpJS2yCAqdY/rb6+9v4omktmH7ppy796uRzmpDJPJIHaQtBERkcrk7uuOsZk6+Cz3v7dhgB5ImkvDqaYD6SEF/ebSWkofVgdBPFQIAtP/DP0s8FOYBFYNqdEKafcQ8sgTSK8B0C8pMIwwoEjEABQXcQHFQ6aAsk4GZZ8CKjg8VHhUqOqKoTamh9qSEWpbZVD78kIdKAB1ukaojpqhruZE1BcH9bkAtO9FoBAMHAXsglBdzZY9R5UiINR1CIxnI8E4FbgXcDtwGBMIhoA3PB9a3zkF30UqvjqFuEQO/YSmn6+v/NkhxnywCV4DfggGBAOtj+hJ5YHwHBhAH5BTFfUznOOYM65nEufDzrmeJ63ILlhf+Hg17DL/cvY16fXsG9KbpJvSm/KbBTcVX0q/Crgddht5W3rH807ivbB72fdDHzAf/jaeHAcPcY82PFr5KPtR7iPp49AIXrr80t2XVE9c23Njzy09d/X86Knb+pJJsQ/ODvTd3nd33719qmeyqa39V/Vf239L/10DR84bySKpHLhwILDMiAbH6VEQRVM9zbMYV0AIF5zIRgHH+FDBfBawJBWpzrmp03OiXuWoYH24aOf2nrvAo74ts8IqWzzXOq+d3qM6mqIrX1eVMsaF3AEXlBXlmyrcSqWiqhJVqp5Tra7N1Hq1vlqlJmlEGvfxx9vdPHTxWZ74ET6Dz+WLm1Sz0nQ1S5q1Lap1bbukXdoua5d3iruubnG3pFvWrRUSvU4P6Z0vkpKnNs74TGMHBdxxKdgAebqT3iGFCpzfZD/QT00Q0chRcF8VBs9HyBcKxb8qUdwKSi/lK7XaAW1orW0bW9FqLYzzr/39vnzWs1HpeyYDQZvfiaWyIrW9MlAda/2myezsTbcHDeBELJ4kqQydY/LFUiVYb/CtjtBDEIxg0WwOwxOIZRq9McPsYqvdVVxSIzVsbIbzBSD4a84BXMcfBOwQqQZ50+tqE9wfUsnGoXxENhCD8rGefBISJGBttAADkUMTeAZt8ZhPskl43jSH/+R+yB4XS+xdAoQh1lfVEaAIOlKwuuLj3ma55DugFA+FD2FD0O5Gs3hLUeJi8OdCQYyLGAm7mUnwpRExGIzP6F0ZkIpNgKk3m//66csmRHV7BvYud4jZJoHJfzkoIPAqYTygHAyw6FK73S6+0K7juNUIF/EFdoUbfx7i2JdxTpp0XensPdajPDj84HUffVp6jp00a3UEhzaZSs7Hkxt83GOcxZatHutoPZ+e/ImPYwwSleWPcFTySofnJVnfct820fZenFldu1rbc+nO73h7b+tVTOosLW9hYk1Lby+PHlL7RE4HizGLqY412mBF4unss9yf4o0h8llaHHXsIgybhnX/PdfOvfZar1ydrdZaJnUf8NPIj2yw3EI7dJB6edQQqV75Ispe+jqzREodLG3RlV/xcjR7Q62UWzmUZdGMfrFK39IiR/dk1KknYkyJGRkxS1SgqGzM6TmKFKVjUpjHsJKgVUlh8gtJojTwhLwfUqWS3W4Pw3RSSzFVtKMkiMTPJ2Uj8ANFROGcZAPm4YYZcgjwi4uW+QQmcHaM+lzCG0pIwMYDO7+J7d3mrdvWLdkFO7rd27zVe6Udr6ktXsSGubw48LERYBNEsElgGmXbEDaQNfltlsgleEUcDKLV7GIOZllMj8pW462aytuVEFvpg0nYYKurdgVilTk91o39WAUj68uaAg0lL/2wJS+PX/Tv4PI1t5mL/Nj43agdvCBwODZxIPR4hZarUYaNWvVl+uZ+1dD6h2l1ox44l0Ogau0z0T3cKaLzf3Rdmno1Yi0lQ2bp0/YKjT9LRlF3W3WAfUqjHi+kWjtzyHmZnxvnP87jDx8EgoU4mMk2x7JsDkqdOgS4++8avNVPn58qaBK/6b/37vf2BG0vrv95W+1aEf5/UHO+Yo61OUeLLqd3OF1MhGajL4QIvtjxNxexuWnXTGeaC5+t2WY76pEqZHYU8VJheV+JwH45j+BZXqhVDk8sbbU3IegTKMDd/VboOt3S9pphfk3fbx9rnWDfno5qmIPc1U3lmPR358/zd2V6x+gsys5VB6e8jvpSwxaNNjnlxVwUUd0fQrTEa3twg5Ja4vvD9E++Nz++uxVi/eEnU/yR1LSbsk9DVGFs/m/rT/mXVE/Pt9W2lagXg7LToBG0gfcFzKnCl4K8KBn4qp9qPbNuvuUgfwxlASkYu/jXpeimJVKbzVT5Ki40wvDXVN/u9t6OvLlsqmmRV9Z6s2caIW3owLw9W8Sbn9SuSXshzAp7ixlu84BBj7mD1avb51vo7Aev60mw9uzd9Zvy4ho7vtwzHPaVV32ur7r8FbAsV/iD031WvtDwsmfxHPpw1wfLGLfKtmOz4o3q7SLQQFFOYR/C3lMYQln7yo7jy2gKelTmueIOVliCWiUnK/yWeDrmT3coh4AcCWTptdu2alyaP+avkOKyQ28R1erJf3nS+fkQRTpKXYoT8Pn77F3gFIQ0mE1tTk2xsa5b67gv2HJYJ8d0IdXq8qf350ZcP8cy82EFuvLX/BM/7J6MFY+AJ3FRdpMjKxJnofnropMNXQjRVVe5/aPPCG1JVFXwQHJT8XR/e1GuZDmtPSeVItvYyRXt/prvkMi3d75cnmf23CjEYJranOxSSjp5ZcVcED4WV0+3bF1HB8hkPd7qbAhleZd0XIob9ZG82gyoPW1Ordln7nrJilptRzb/dJyzt4+yuzLXdXvi8WQo9/ewOELEVRJCc1cL2kb51fjmtsCgZU1Odpl4sYCw8qCcW/uPhw5+xfTr8+dYzBDS5svlx+6grUTzTnRBR/NSWwiG49jhj0in5yuawz/e1dZjjuP1ITd1piE6ipZ5M+11dLKghf1rM5lWUdtXhrZki8exHO75H9kZm0VVS9rAxBxCyG5uRSJvvXDs349hD5ZUPblb9zruC0XTyXA0UNtgelL+ROmlsPrrzj6mitLte58Nwv6EgKo/bzjkloc6uxS6q/MK64f+0//zQDdCg3bIB8rH9LF8nDFuH+KXBoECHv1wb+7gChpqm5WAgOyK6PxZUuS1e3jaa3HX+Ld9dgWHuCSoDxm3shWYppdcrXQ7HdhE9cH3sXPb4C83DEZbpZ8OorJvw6bKrxfnFCc4XLaPN3mSh+Kzpb1Wb4U1bQZmk+4hsQOdiut2btwJDpftszd5cvxDxWedL4CWr1tUovQuJJ4ND+XejD7MuJD2ZQdkx1X8yPiKd3l2/G6+irds57gnMtv7YmZEj9AwjgwjFx7nXfICdno5etXihHisD/PGQyYD7OIUbCP+pek6+uHrX97WXisbMZzi5ujt+pUSEg8usiX8pM8jMWsYViQa4Zi5bPOfnfHcNH28X296rmCXbUa0ekICX2R0ykqUzOsFK2BWBGXSx5zd8lDkms5T/J/wSMj+uHFo70M4m7GHhUHETNa26aAgfiesHZ0zPQwsjmMos5PbnvyDWH3H54w3HBcQxU9FITbgFzWExK5s/K7lZBpQq+CrEEFyPTZrD2IBF+JcJhtmrqxS9GsngrHeklqyY6mOIfIYFRXrLffGzC/HYArjAvuY4RBxY0It2igxKkxWpdoyNWott1GrsrqNLzRwmsu06fo4oteR6k96CwErhG/tmck0Ln0PpusPwEcCE0n1LxdCNL/8CqD+uh+C8REnP7L9ifCAccz/VYPjf3v4D3aqSZH1XRP6VV7/UkeTO507JJ9w6fDbX4Edda4O15GkOJDcL1IEpw4WfrWwUJBgQXu5EfY5tGm7YcGph4VbAQZuzB/yeN8V59Jdqwf6v10zu0tj/HLwhUpi8Hv99pUvVPrjhKYNhAqzCtUvVVaLfzl/W16q3H1K4tCppVEkH4tv80sqV4wbqKLqWvKCO2XZ2pUAwTFEt7uMl7LzMZfLSMBycWH9rTO1KGAZit+UgojUXICyPYtunOegdzxhf8Gmgup+Xz0LNIP6uamulpBLFD5fKiYDJV6/B25nFWEtVgOVpXpfV+pmYqzzM+dBwbfHx9PLqvrfC31stwrpYa2pBTX9aFSs8ls12wZp/4C5VNvMj3WwqR5lHmysc6z/+y5dRw796Qfw95PAX5ZpEXnIsEYaJ9/0kcBvUMp58BCauAAY/24/8NjJWRmqS4RwEg/TdJP/moUBL4IYok3U6sG9ETjBmzrEL0rYZfebbU703StN+9b6fgwvnHnoyd//Ez9slnYRNCpiUdTFCynYJaWFbEMbFzyM+Sfw+MEm1t840w6bYObdfhR8FwF6G7BOf2Mf3UKaxXiFK+P6kvapZpPj9WLUjxzydSRWWnmqQp44qs5TwtpXWxezg6maxLUo5Rup0xZ+a3mjBZgvBjA3IrMhPpXGfzyPb2vrRXY9b+5rbXcAmy8bRqSJAEL1aA/r8OwCLEJ13WxhunMNNp7aHaabZRQQsRAH6GyEky3c7DHJ4RGvsfkyLTASi8LBpql38jRxbBQb158zExpZUnkcm18ht3JSc09XNd9Kok2oJYWwdpuYVk9GUQ1BbCPEtY8ZjSXim85jZochoZMfJbZQTFKmAlJ6VVo65OYmSO8vZeKCur0udVe5Libsc4jUvTi0igxDMycMBBFAEgmcYgDrKCCMBoJYwDH2ADuTFJSNhXPPA8pTyLxAeYPzAeULWSBmTcCyIHiFwGsSvMKg0jCq6RDFIi8O1EzIZoFKgiwZTikJVqllY5dGzyK93DcZ5aGbXwFmWRVhpBXUQsTlYtEixOVhkS6BK6wCSg9ki0EVg1sCqqTHWBa5LReyFaBW9lKUJbyvScKkCiGrRNpaqNbBr2owwX0a1mREGxndJmzazMi2YN5WhrcdWXWIqu+82sahrKEGe1A0U1ZnK3oQDvUoAkam4MuOAcMCwYEow5Bl/1oUp56BhSOg0aGx3kU5GN9dZGHiz0c0MQw+fGpWcDj8Yiv20AjbWDN7zW3y9AztSujQ6C9Hhol7MOIwE2wcJthYRa0LkeUgJBjOynBWu1gHo7yD7x6ywZjuoskUJsMlZIpgTYnBNpYOzpGEgiUBKXk3735HvShkr73KROCAJr77PhIiWYbgx7mX11yt1HNx5HEa2YAWYnBohEA8RCAmohELTU9s9s+sWR11DPHGnyCx+iHCjquRWeggsONcggDDAAY/Ai3abBMy/c/HSHS56bQ+sVsvwMJdBjaHUiiJFBpE1zWg4d4IT7QeEDV4rWoHwvYFpOkExcUAKabxyjQTcYxBJKKAVbczCFZbAoyV37xY72yoUgB2ykE6C+yQQWi+PJUmRlS8G6aIXCW79yNOEtHxu/0GsIaLyqmqXgBm6g7GANu7wsONAhEIJMBI/Tb6qCLIV07eHu+OwfhnID0Jr4eEPIThE+ylHiEKeXTXpve6N1CNARBWPA3D4fIc5Bc6YYlNclI2pdgHp0ebgqzePAeILEWRR5HyBNLCyGRBH2qVNtGnko8EM7B2mGvsGQGWnyxRWspMHcbPxDRmSGB1HOPz4rYn8UQ8Cb/ulPS6WsmkT7gk1qo8rV0o1rX7LyDFMm51DGISoPArQfFUrxy2URY6y1MjJtGVUJLBJI9wPOrcA3kqq37MJ2fQAZikUqWP/0+q0iC5pJAeSkzjqBK0ztEXekmnX7fj6rL1UsYnf94Kv6s0B923DCWLd8LaRBKaEaGMwXJhdWvcep/Im8rjU7wXuJvKxC+wtaFhTgRDAK4+uin2tX3a2PPdPu3PhUl4nG3r5erN6QP4WGgLE/a2gleKhl3tdaLxfmVVo40bsq3tbfQaGzZbYgYN+fEvMZ1PcSfejohnBtrkRUN5Io+uq7iU7laPuSA9CJ3T2NXGdP268EyuO54r1/zFvXG/vE3OlUh9cmQBWg7vG6H4W9StKBiclPY1YEa1kbplAHuLY4tKltKSY2eVZl+nwX0gt+Wz+g1YjhXh/TjpNZ79SOPQptI7v94Q+6mkqXYi5Xm5enVA+3rXFZoYjCqFtDb3zQkjnvmfqdfoNZ6Mttp452omzZl1snYuU6Ofa1NvGEHi4T71dHNtoqk3Ecah0BBO1ch1TujSqQkMeQRfV1ON6JM49hHdYl/sN/9wIe7hKppYO05d861ZSS7bocOidLX+Lx4du73JWnh4KEAtLWtKi2KOMIslhJKOfWndY4G8t4XB/A0kDf7ad5FT4HGDW0dQC+xEaeex4Rp7Ezg1yrDjIQBUA6/3lxua48Vyhf7mQ+duGfK676o2GGWb0YXjy3jtk11n7s1fqzSAlhBWa6urSFGtaUv75HMJiHX7Chnt55bdk/559TdZWpRXVB/Zg02vHvDi/CaJPx5Cer19z0BLxF401exuOOVOU2Pcz7gPjouHfMk3pgX54V6UYdTu8F0sFXQKEmTGYvbxf76LMgBpGQJ51pf0m90b4/WY40rRPYtfu5X7Y5MVe0EO46TuNCx2MKWM9+d7watwjUvw15wm3U3SXz0qXdH/DbolVMZB7p/QMtcSxFv5YEUKG9BjcUDeZZuuO2oa4s03fhpSY+1COdH1KKk6UOZjDvBpN/zkdED+V2C8RSaP3KzyMIyLYf9ScK3e1iRdk6WTpqBp3Z2WqyfXBNnZiaszAaS2D6UUHX1eF6Bti/Ayg9VNviY7mmGag/AW+j321Ovyp8U9xPy8yA3M9+H7dtx3Ki68l+k759VaWxgX0aLgGdq8XKC9BtiTV0S/s4ObkLkUaEt9KtzNSyTtaRjemgQT+mwK6/SKZDB5a8tWIRS8i2Ge1nOi7xXm8V0/zHxLCW2CKgUgNPCBizkew1inZXy1MS4wkuSN3VbSBCWgB3tp2OVTrcXXY57nAyB1vtLKwG8XzD7zNCtNGa1YDt7CWUt7r2EnGkWTqBz3BM6rTU3hq6j83pp6ilHK0eZqbEqjmSCt2P5Y3O3g+uDH4dAlXMzcD7598hmHmi5huLQGh9vKH2wjDUk+P++zSl/buxag+4u6OgAMLZAE5j1mC4inclsUH6XeuN4f8O7hahes6iNuCfmEULazHlqDQO0OcEHgaAPHK4C4z+4F5Qf2who2jYaWsVXdc4jaxNq+cwdlbz+42/GtXdWKK+mJBU5IPw2JK6EleA6AJsBg7sKI6yuBguXkYfrq9J4oLeHjZ5qIPpbsMH+VcBxaIVoeRj13s+LlIm+ubDMwbdq0tLIw3QUQX/RjjpbJ2EnaClVdCm2S3ku2EutwxhgYg2pVUuvAVpaNqdV79q/0eVt3XP2WRZBDbIxP3EjbjDmgVA2caD5o0LvLKh8Y2vi6+x2pWSr36t55Rpr9DZDNXE6y3g+wmKoCSjx+SkvkFXOydzO6cGD3ee8amaIPbAXJax8tKEzm48Oc3oj+tfn3NAY+NrJTs7zCyLPFKu99wMajGL/8DSc9VgeAEQCMMlBQxAMAskPvigRTPbGw2zoEjCUhSjkXz2d6BsrasIvU9fum+8L7mjwu+9a9TwH8EqluQpiWFFuJn5aWOKDI2/qy/Uz7082T66vkUs2I1U0qPdjHn5L8YtoX2MLCNOIWuf+5rQOXF6/MLTbVKktmhdKwNR+9wJoR93zT8bLJtiVoJ7rHSygXFGv/Jyz2n9u1yqVZpUbebrAmOUR9+gQuoLUHV5Hs97J5yYRFBpwgbVCtg/QR6QksF9TWAaTx5SrQxBgBe7/PUizED98evIx1Xd2rl7jisY2yaKUxUtHTZ+Mex2JSt5NPS12Pd/fM96gL3U2AWjRH3s4h+h4BXAvjBpRtfhZCCoYH2KcLxk/saA9YadppDXdWseDsA1nCZdoDMj4w8xQtUEgyDaALV7vj9/FbqrEF1JZ7WbQoy+BRrDEMhw38+/+lxEIQAYPhiIKhWIiDAB0/OoFsO4nsOwM5HFNT71rMll3LpeXacmt5tLxa3q3AVmgLdqMn1+r49dCf6+Tx81PsWp9/15f7kaOvU0/6hDkSXEfN2P3wZ4VOrnEq7uB2B9RvkwFX5egzj3Z91LPBGXXlzEJPRY4Jq27KhJFbbok9dOdAONzJdfsEuZxy8Lc76ubBaSbXm6uR2rp1JM5GZ3OXWfsGF9XYGQ+6xRlc7lqPXXKZK3I+6oiRi9kNT+1xmINr70iVE+uEzkEjD1zOBPhn92Yc6r4LswOCnGqb3+v0kYeu5JzVJTkPDnG8lXNt1KUzm1B3/k8NK2CmGPjMIAJCJBE5xJY9koIjRGkUISejISouhFy5QcYYw5ZaACRQNJLGdEiMGKRYMyDxZjGTIJGJJJlYsuQYRivPCPkKCOgYcC21jFipdZiq/AapsQNWr56dnf6ANWqC7NbM1B57Se1zgKkWLaQOOsxUqzaW2p2EnHIB4aKbsFtuI9xxB9blHsJ9D3F064Y88jdKjydoTz01Xq9/0V56je2ND6z0+Ujik2m0fnEyP82ABiUgfkkqNiTFGkYYnCMQAWNjIAZ4RCEKXKIRDc6xEAv8YiM2+CRPzia77NikSMFmtuYciz9DEo8IDx+PiCpjpgwaxckoTkZxem3dlHGPTRFbvx4ZfdvwZx6vOZN4RHhEHNhTcGBPTmY4HlduXLnh4xHh4ePh4xHh4eNREnFnbfSPyqorMbJau0fd5nvG1faM75RIvGN+1b0AT9gqGBeDCVPM4iCoYWeJkSzYYJJbRhdKRpRILNdYlkXRP7sT8eBFQkUdRRvm0v7JQjQ78qVFSY8q9PdK64xUpRay0Q6oUFizgrEosEqxUrHGUeLC8zZUHKyw8ZaPmhCqCorNQI9ksKrbNivOdojEFwRMEJM2xSkUKcwSgC4BqM1tMpvMJnPaCZwKhcJfkByAAqpXa/RqZbJpnNKkxQFOl3N5AbrEEoBew6AB62rD+XPhQc312FaWNH43BE6M6QROGwUlnkWt0IsRLJQ2cvKgD2n4pLWbBW1fmObeeoGoIMxuPDmX4CPBdgEK2NAMiGFBlyj/NPrBH9lXWUv5LJfNWh/tnX/iuo/Lv2Xu6vyqMw0FUPs+e+BIvKZzGE035bItzYAHCCC1/EbOAVoOMA+sGVuuBetprSshdUMfG7IJHBP1THkk+ExZdVBw20FtXujbbjK+PfLVjh03E98ZImaFXTzPNBDU8h6m/+B56TJkyjLTI2bJNtscc80z3wJLLLXMcqustt4Gm/zHZo96zOOe8KSnPO0ZOVCYV7zqdW94k4JSMS1ttEvTxu6HPdVsn/0OOOiQw2m/kCNw1DHHnXDSKaed0eGsc8674Jbbutx1T7efAYH5+5C/XsBTgDU4dpP45xhM90UAiYHCRGNh4+AywWO6GUtYi8YWiZtpWeuhwYJsOY9r123cLJRrkbyn8Pbu6x6d9iOP4e/QqXemzmzDfgccdMjh4JmkoT/Oo5nYDXqmZtP3CLK37wP2O5CWMwcdcvjYiGc143e23ablrxn22e+Agw45rFXbMRn81FstuGkErcd3YuzT3N6GffY74KBDDh8TMTxT58E788476DKh2+tr0kouzMma9T4KFesiMvvXl0mAIyV39cwJ41/Jz6slDwto4KyPP2kfzvJF6FsDoY8/tr7bRTrBDdc+/GeNJAYqe6cl2TjmyPjno02wjY7ZpfCHInqLFVvCEPFRvfrf61v2sElZm+FRj3vSG97xgz1+txeBJEATGjV2afw9cEFkOzQIS7htJgJJmatBitwIVM/feQm0wjxcbCA32dzY/LnC4ZAfQtM+sA/u9s9Wgd1Pi7+4Ybc/mqK5zfZlO165CL5KOf0FLTo9eyNuyC1uc6lRbrIa8cZvFi8jv1WON1c//T3L/eX95atFuD/oXJ3VbV7doUvvcXuHOhteAbF6AlsyjOGFEp+zm9CIIZVgGRuhqAfLQm+IA/okKZgIc3x4w51dSIRLLpuq2xPT9PogTtrp09aMtieejfzEkYMC2tEyn75Q2Oi5/Efn6wVyJaFDq9ALpYWuf3t/xJCn0iZt0iZt0iZt0jYSyU/CC8FPNe9Xk5AtO/YCTTBRkGAhQk0SZrIpwkWYKtI0UaLFVILRkZiklWSkSDVbmnQZ5phrnvkWyKwsoyZbTrVymba8JK/w2iefffHVN9/98N8hDh6Ll26qLKMhWw6thXItklf5RkdB6YySQkX0Fiu2hKGWGoESy6ZNyDIS2XIq3+gpKJ0RKVREb7FiSxg+E3cymJCQRPIyzyu89slnX3z1zXc//NcvsI3KMjLZcqKLKUQRvcWKLWE4VKSkHQDQVFojsVCuRfJKZzQUKqK3WLElDPVS5pXX3njrnfc++OSzL7765rsfk/+mpJRUTDUpucUa7CFAYqAw0VjYOLhM8JgasxIRhAOyVMnusvnlkGuqzyy0WTsmik3ii7IYGWKdG+XPA/+tIaaDB4WHd2AlT1XftdkFg+nQJ6jyVVr1HrGXaYBpTXba0Dn/FA782d7CNLTarPPSvLwMsOjUKYc+hb5vfZvDbuBDoqp+hz9kVjTNFiE+/K7LzrH8SssGDislLueL8NdOWR/F1Heh1y/oyo+KW5JUPLVJ5JLL1SPzjyee6vXMc//zwr95W/NZv/9TCw1Ijht6JRPvlFJ2o2uvtVqHaRP1Sex6aqIyRaFOsC09ZgVMxe3VHy51P1lhaSAtlyp5kCIKmWzvF9NStWJK01qPaVuNtLoTooWuNoi03LKNzk9W0wXWVWcmOzwedqDFpRoZbMD/PALIyceA4WVCSmzl2XLL5RjliYZ5reQ8imtaaBPVvO+U8tpJaHhY29NFlNY24r/J2lL+Up+R6tVZJWhHmgJitt1obFw8/MOX2cQsSViRkpWBGRlPSzOTs6Uw0qjTD2Yb/BcD+/1SP3WAsvnNqXFWOGmH1TqmubWTcAYOwbOwBUqR0K25Hvqr+mEEvJ7XfF44H5/6893HWJiHykuEOAgIDcs0Ji4yQTxkiviZJcg8YaKGZ5V1skYkzSZ59imyza6ROSTOIsuGJckxZaNyanSqnHPJtTGpG5t7HnnmlXc+ueXbuMbD2GHEAeimUrCbHB2/uLjEzUrIovnlsyyrIpLyazSi8qScu5Gbq13p0xweRAZ/UUOSjThSrsIURxcmbIRSwoWPFDla9ChR4ybstblWdggh9vJVaauutQPpqzl0EPuWggqjkzZEeK9x0XjQuC+CXcsVJTVZVWXo2qcnKiOFys0/FxlVukx02XIx5StUrARj6tPnx1giVFwC9IHKn8bc8qtmUnkS4rqKs0ABN28sHrZDdHx3sI+4g6K+7Jd24z6zy/Y9e9ZO3MN3wRbTkHLy6ozWSMAhFhmlnWdopYj59FPPZcpJE98Qhxk66HEAQaiBQ8Lnx1wYwxwe2Xw3zIkb2ZDoZfZOpG9fomBJo+GTCy5oVo2At2+7K4Uch+famQROQyDm4ruGIR/jaZiE+0Q2nnonN5F4GTSVIRfJg2QXa8PumELwqiWqcXpE9Z2v10rwHv7QdjsytvOG/PBpKCmqIBkQQtv6L98ZCNIHwxGIA9BuJMJCYC7nrudRCs1XgMZZ1NKAqLS8cfM6xlKGqNCrcWWSXDIRpboa5QqwiyZKfFXG9yOocAtFniSj6fFWCWQ02dIxD0FGE0NsfgEZTdKM+Toymk6hpl5kPgQZTXrPmGsgo+mFcAFkNG3SZkFG08rQRGQ0zYPJe0EE0DBsj1FNjgG6bxmYZWscToYacY/N+55VIlbE+lZ46s8cyrvSDKs7fG5fP3iAB4X1d9Q82d19A6eytbiahpWuB2EtUWG9lV1pvUDK4M3LFN8LTWUohToNVYsocRSfC9DYVwwXPCsB1mkZSRlUUDwK4wletq9k455IybR9MheXISRq+1AmzgasiyG3Ya9+gEmTOg9cjb+Aq7cRgLEx0rXsOQrRyjsApEgnIVUHpa28z4EgNPashmjkvQ5SWLWz69XEoUMLkDpggDRtw4arZoMuwIrsLATFHPGvAdqxoTABJ0DWXTfyySWb5hknCL+8lVTq0Ad91hPOeg1YE9evd5Io8gVgwoGLKIlh8k/LQND4wQ1+JbGsnCbYElXXjojzK+trrMXO4DB7YZcLHWtuxRQXoXMvqSL4UnxXWfackTtfCHTG9ymZDKDNdUVkpy23VmDpHhHKZ6iQX0Jwq8f1VSU8cg9KyE5DCStNUMJcjaS/GDCJ0H4e1NmIxjYeKmzact4E8toXkSsnqBWIWbUlagEiVBOxfSnuM9B/aWFywDXon4MeQl9sLa9XvFZILG2QzZmwb5Ay00NH04h31WgYMwbCbaM2XFaxRzJzqjd3g1kRyr8qKDKEVVy8+An8iFRRnT7o9bLObfUDMqDzjQsxIkzkzWEznspF9Q5u6a0pWPCWb19AyHpm/v4jhCce6CSwX4NN1llBTytDovZPCzaeOxVFGH50FVFJeOK3RpebTt9zzUEiv9GR6Y7/gFRVXJm35FcVK5iMw3ShC12mewUGB7L1T9xed5k9Otw3FibJdDz+Yg0mTy4cyFkR47ukl37oIfTveN+DAr00zyy3z5s9hdDlvy/XVdNQ/rfnzluVgSpNXbdnmjX044qUVt6rizXqp8wiuZHhIYDBl3pjNicvrowU5iclS/yNJ9g2eVzC+1CGwgMykp1uP+ouREBxt16+lf37X+bBPXW3eeOa69Xr73/guUwccN59ak/ZSZ57TsWZc/LPT/lTEk630+GUnsKTzQElWz1OcchLdfkprikd1YjmwOQnOu4xj/rFZ9uNZPhDsQa72rmON9b+Pn2faV/bWt/yFnRBpzvYjja0vMWtbmXLWtxcFqb7T0r5/0DEG3OWE4w75qgjCZ78xOONJdpwWY5LFLGKIDRzyHXnnXTQThs874AdNlpp2vucddhOm6w05WN2styW5jFJaqDKRVe00LLWaoXLU9bSlqzI2lPJ8pet9CU9I+UXS0tYbAosHlUUKVzuQ9N/SrVcKpVKIh1QXlG5ZZZajIRSyU4S8UWRg6wyxzgx2qnnGfpoo55yCljANIN00EA5xVRTSRnF5JKY6AeLNAh4YcYygqej/DQ1JMCRjzi8sEDre6/aTbVcdwv8AEEcex30mvTLi459DLM4wfGMbYyjGsmQUzAlI5+s4Q9ziJM8ceM2ypGPZITDwzTG6DncG+ZxI7BN3k6ZJc91fFxTred5nue6ruu6juM4juPz+Xw+n5+fn5+f3fEv6NX1UZuzCKtbySRJJEkCAGBmZuacc65u5bEkSZKyK00iSRIAADMzM+ecczciSZIkSZIkSZIkSZIkSQAAAAAAAAAAAAAAAACQOEmSJEmSJEmSJEmSJEkCAAAAAAAAAACGn5jZV2mqRB0oXzR35tQxCXNlShk/YghUyYnD2OmdeR/vVSMVCVKB77mObbX9Vl5ux/al0z3NPC0dV1WlhHV6D3Da6e30LLCysrCUZaUqSZIEADB8YK8UiIIcYqihhAxicIkqFeP+GZ/0mYb/YXmC4x7zqEcy+ORPwWQNd6iDmbhxGcVYjWBoNFS4rpwZWy6crwVGjYGZnOsTHfTLJ/YTRX7fOtqRDTl7RjE5wx/64CZh3MZhpCMcNgb0v0Yjw3NnbLHqbXTkfakrKCdh7Ag8x+AEZ3Dig4199HNmfGMb/chHMAVTPJIRDnMIkzTqUY5sxMPFGPU3Xjoib+aWC+bOnDrJe/DvF5QVN2qYElLnlF1WCeMiEgbtktv7F+PBE89hGPX5jh/JE4+sGruRDH8oNFiwweJh2dN3Jl+29MkTVFBxkoQxI5SUOmWyxHERhn7jXnjstis6HNWiSZ0N1iljaJzvxt/9fXwQv3jEr0tlUYuLz4k8a3H9/9Z9v0YRVreSSZJIkgQAQBaTJAGQ+mFDXSTWtJyZBQkGw7iqA0JLwuDbsueUpoMOcwbkCFS2mYDmwGM/d6UJcDxXQ90osgS9swyQfuzhjHdzHqUspX2eBtH5XvVqwXRH172g21jxSU8bmjtSbXq3e0nt3V3T3OF7GDB1oL0ZQ3OHnhOHsgn6+6G5gwfUGPKgXx2aO7BfgBQFvWloZn/O+ALlhl42NLdXv/cl0PrcQd/tpHdfMVdZPFqYfXXf2Vy/+VVVXU3BQoVrKFKsaPXVVqcYNqwRB+yUVmfCanPDQZCi/MNZUn+TRSHAPqIuNJ2ob2KGSBYNX1xyVbsG1UpopdII5csJuop8AttH4dEAlADOiGm06SIRchptvmiEsS/a0hGNuiDaqjPCvCCy0RmdviDGto4YrAtibO+Mxu6MtuM1RzidMXZ2xvtKk4vxBQyGVrHMXhf+ooWnUboqylU4bwNu45C2ZDot7h8zZ8laebbsVeTOU2WuHDlhpCYgthrcPk/nvXViXk0lG7rGXu8eOfiKkC4YLrw+/3A6BPZR2i429CgNHb/6GOoZNkxRUeMTHasCqouhtVuAS+A9qf/F8l+DBpVXUkE59V/FZdMukeQXJrl6PPpH5eSTIrZAhM/gwADaAx85Jzsu+5XxLWMfY0fHW2+PnMmBcWQQOYf8+PbAl7/C4/PWgR+8oJ0GB/jmkH4biOft8M+bNQMXeIDqkwPbwNe8Ff7K2+DPFIHvlXYvtcDtTzLpi6jqRxN5Q8oSG4zV6Qqj9xW6Kpm2ZNAujm/Tv214oT/ac1qndHg2elYXOXvctC/sv7wdRr2ZrnbYaHtm3vhk37renmv0q7OBXU5t0At6zuuWv6ytaIFWa/E2jvYb7fBrP7LgMLXifLKv+kTGM0LAA99YsZbUCh5FVcL2583gVUsn/W8d0L5if9dCn0k3tnWrHYoyt7DtefsCw1DRCX0MRD891Wy7udrvGmkv71CzPo20YJCxueqJpqmOaseNa6BKqXQiVWuiVRWpAm25ufU02xM1KkpGlRSh+GZrkANCYAMZMJAEECByZVTQkHzljuSQTSbip+RgvqbzW8vmrdeQqyCtP2fKw3JEottN9kU+SnjvC7YIvJbbU8uZYV5qAxSfwLwUCXGOiWEVOimGTp8BxrDwAActXQVqWo5Gqa+VGrJ1kShdByL6t3tKjUuA+Rd/8bPxfg3fvk8vePU9F7gz9gTNt3+wCyU7UpYE3Armmr5z2zfn/Bpl8ZkTJxvVflaUQ6mf5avZF53s3ogleF2TkI2mZE1Ml19nVXQajgJLk1qnRqTpAxLiEI6awduMaYfijrBhQYBBwWjZm+a/cgzMBJ+AiAVbCo7UPHgbJ1AQjVjxEiTJopVPZ6lSlarUWG+jnRrt1qzdMad0uOiKW7rc90iPl97o80n0dfEn5yE1O6x1MIFiTiSKt1c7YACHXGev9Zow+xLTx7qa48/VAFYXka+zTyCHRk5oWyCr2QYnUOnEIW2fj0aA+STgIEC3HjIo0JSvQWz+TLZJ5T5FhDCCy8YuTmjLDtMIiRlL8ro2U5AW3kZiZ/Z7qmRNrLSScVXUlgmJQoa5ycZOvL7NrJlS7mjOQDo9GtqGCC9XNzGtRYFhi2tLnLWaN6QZsSGCrHzcRhS/lSWWHXMOAsRbx0QcEQYOggfXa6NILE1zR0WaJke2WLUz7bf1mjLaOPt0FQRKSwIzbpK2uqSW2YF/b1pMRCEWrLYsgLc0fdWAaqKlg9BDD04nRpW57Ug7aViJZsOThBxtNFOBeDBLI0w1HJcFtlFcyPXjazw+H8P1Gosdsb8gOQqVur5wu4S2EVaU5mJiuR1cc416r9U/mGLhUY8xLr5J+I2VANNoRL36trZyjwearACBvoAA/gt4OnAQ8T5yRFs/Jr9/1OX3f7Rr67XqrVEpsNRYzTJrZJd9xWaZbNU0e5hs7P2/0hpQ614xXtN57sP1/7iCPM1843naHMLn/5qyvE4rI99r+rD8r64z5tLzrX8BHHwBDL3QlZc780pGfK22N8PDtyh9L1R+EHZ+GLZ9HBo/CVc+69iXoeHrtn1P7Y+V/VTFr1X9xsbfKP2tlt86+zsbfq/8L3q2UocY4xgbGb8A74b2ALxsQOsB0HEczAQG0HODLDDIjPiO4j35vare0sGw/b8e0B2EHCo87DmTPpN9XHHizxPyWfkc6hThtOy04syOefJ81ULWWaezRed9Fn0XccuYFeiK5GLmauQq+xLlcuRV6nXFF6brRhd2C9wif6Uwwe9U3fW8l3Ef9jCY68/fcf6ei+de2nbp+p4dPTt77+7b0b9j4Nyrv3hx70u3DN84+vc3x8Z//TZflk1O/nzJL3979+/v1Zpj0VYHfr7t8QCAJXjX1nLZ/GGDteZ/hnJoDBtAXgY2AHgedhIAvJsaICdB1j46DIBX2hOAgdwEjwAebXqj3fkuGiPOga31wPK9EMC2383LoHcB5vtvJuA4XOiDH+94B+EAZ8FP+CxX5SHAMx4RzvPWAHrUV544DwnboJxBrlQxwoznRkGMgOECAAKCQJcuK+61lyyy2ovndO1FE+e9sG8wSUqoemJN7fk5nX2eq1RzrrR7BCMvPGlsZfp30F0/Ph95cYvOVnw6UDWMce/1c4AB+k0RUPKSo6HrJv7vkr5tnsuLwX5GFFH0nJvuISa6IARJsAjblxDZneyUPaNX6rV6o96sz9MX66v79ntywyve774gtZbW4DguvNVraX1Rc1bhLkBMBH3a03q5Xv2oc/Xjugha+5MEqat3V3pi8e8P23Ik5UpZUubUPoAfq2dzzfxsVmpOamvvGHuod13v2qd78WcxLPO3w0uG1ucj1tCet7uCa5YnpjnzGZrZieIXspSceD+U0J3y7PFQnMei+boNsUufNXdOYMLAb4ZF5LF4THw0GojR0PceOG9I1kSUNqVvlEXqY6M2kRnu4B0EIWR6JmVJboYxhAA0w1hhsj7tFUWZn7MqsnSlyL5sjD6tnkadH/Jn2hTnl5xJY5oj1dyvCXr3J9BMmLM0jMRwTkZTUdZnvGAhQk00oUpBkqVINVuhn7qtstwKFVYqV+l3m22x1Sb77HfAHoOO+dNVf7nsUv9yRa9nnvvHF6/4bImbA9CDuvbGoTt7ItKG0UU1j/JgHwwRYqEfzDFIA70aPGZbKuQMlup5E76Hznd3FlwAr4YL4T/oIve4J1wMX0KXuKfj4NLw8+n7ujXxOGCsAJh3AXQncOCLCBx7HWDPbWDHDIAdwFhPLQxraddMT8GqSEXlVgiVhAJrk6lP7aabqy+wVJEXhLWBUlu4TM9U2Mtser+IsTPFQcAStlG0tg7eJun/fOm2Zc+PYkwgdAQJgGV+q1ZEEl1Y64nSFfzKhYCYrOkmK8pakNaSNSvsSZWCjQBJDQqvkoI9SASGMau9wl5ZrG1N10rxQdomiItMQVeURBMfUxLZJsyQcosQV8DTEP04mT/fBLAkSHYIyIk2ZbSnHSORgrz0IZRca7Or8dSl28xCvUt/PVhoc3fBpneIm2caVkGMQ7UvlaXz0wn9nBu36jtGiS7giQ021T0jNKsYqWdvkttl1FHwQpuFznM08S94hkVXjDof+4W9tPxb2cibO7OURDFmwUgmdKrrVpSzPFfC6F75kVxYfJIeLh8E3Z1JLierZ3Hd3OLFYMxsclJmaN33RgLfYp98veSrnA+x9JnALu8s+Cza6hpBug+H5VmShbmCFEPwkCzmgWsJL6kI09EEjAyEpiEGJiPVRyHZS8VgZfD5wCzsKOoHDXcxFQZYzPorUEgUP7tKQs85xU6gB7nfAb2tmSa9TgjjUwnK41PCAkq4NvkbxpH/uVOR0NSXfGpjv0CGe+wEeC139SI1+j1M7Hn9qV8h8X8iR8JS7lbZ7UxKYB9enscic4hbQqqcZkfpUkr8aFlqBxEZWhT5mOOhFtbAgZh2Nnhzj7BuVKKqU8Vt69SX2kp77t4AcwfT/SH1wCRB2fipHwp30H4hRfcFdaQ92Hdt0keeBRLDrP60j7BcrUANKhU2/VTkbS03dXmQz4uv7UntiKfrCZqV8BfOBuuLfTKXKOFTYh1WXOD5pTbICFcZxqiBcZQMKyGxRV2Buy7Xn9q5X7ACeVNqpKIdmdae8t8g7J9ixO5F+NJnhUMvI2MZW3ZFYYjFWaAGfO/J9HIoKGfQ0exHQ/wUfsGmL5ouphGZ4Yga3SlGeeaf3MWogBUIW0OdkvZzESbacovlIYPQ94jxc/Q4k8meYoKFkJ6BZqDG8RZMOg7r9kxhWs8VNbjrBEpFT9UHNDJRW51Lh6QTWelpk63E9Oid1jXr2GMISDjFT1dKtmnpuCg2agvJmqYkB4cHPs+q+5RyeSB5DtQWitjRHPhxpCcwdU7XFgQsq1jluxUooMvF/sPVbWcoDfu19rHUJfZJEh15h0l3wQ41HFeX1B170Zu90wlJTmhPx+UG5ypDMqBekgi5jWogN3iT5oZgcsFujVpxX3K7xBRMLcyW51CzE+rAt9RbDVLYrJ/AFwazh8ke0zVJUo7SPW0RpMTThbGbcxLabNoBt5lByWNMs0hCVuRWL0moQ+u7CGtb+hdT8KNopiMOPktYdoNkne6Ah1rosRypH7nRsJsNmOaUb2JpHqIkx3zJr8VbZlorzEDzYaTl3eP6yBkv4l3DDNXFxOUXB7+9IdX6A1e0w6vcVAusq4dbnsN5MqO6T/n28E8rBks5Oju6I6NgAcsQQhFWnAJlYoI6VFbNRhhYS47nvhYb+vVXyJA+wMLOTGfxxX0sj60N4lTkKu8W2gxll6CEDkpo0S01Y33uLdQivatHu1lhubO25NwOowjLIKpknUYFL+8tWakXaoPgqmYUrHQ+Z0NiZ5rGKcZmh+q7HYMmytY7DUWY29XQQereiga4kN93gMJAIZRhOmlz7Dgg067nmXoZClV+nxFeGAkA1jHy/NPHwqmrAGvsAdqSe9MsphSOoZW91bMqPCfKRR9MRzG6AePBA02smXcrYxkiE6fWcZ6D1YF5M6BPWhsutJNGoY7qj22tAG8jw+6qyiTQQlYmibqUTaJQ9zlhn/b/Ygrq0Y62BUx05UWvGw9EecAaR53HOUHEYbXdSjQxyBF+URdl9YbgqVhb+waGhVHf7TVKF9LRmaJHzbbZjgGNTvTd9Tjy+66GG2rUr5r6hD+IGC/1m+Gx+b+QuPLFA3IMPrIQek6H61ybdKN0ACQ9ByFf7RB6YWFKHc84JbY8STictLP2b343R+o3lqxQsR0WRraiwlSyloyVkC/gmQNirA4/YaxHQpLBGg84NZJSlF6K2AkUkGD47Ag3pAseXaXqPJqEx9LiCecc/dRsg6dnbGOWZ6brKLC6J+yxBhLixgjuWEdXH0ki961kObM+2WSghBINPaERvSueF1M8FmvW00XdvJrmVDCPJfW3rvWmnXtmTJjv3G4WLckClhNlKM0PB5xu8jzVuNoMxs3UpJ14lZjS4xNq0l8Jrv6qglWvsuo1VkX7Mb3W3zDd52gN63za6yx7yIPcF080p3AlRBU07XwIJPHuP4IlPHHGKd2TMfYDHs2nOeXp51RKcmIWPRArFE5amyP1doPQ25n0yLLoBaQfdrMzTX6EepYzURvF2H8p6YP0SoKyDPzyKN3oyRbOlnwmgD9dLxR2a4cSG/rnTH4HStszldiCa5DEv/PsCS2vUyPvbtvrTwII/XRGf+rxBn88WzKUJoVWsPG+/+Uji9ajZ0jLuAr/GnmChXuVo5Agmma/JURGoXyzXRi0YUMoy7O2LcTBKa/N+xBEMPGoDuE7abTyYeayQ1psMlAVPFB4aJozeypSXl/beIQJPMgrvt0K4rblkADuk9epIFIkHfzBfg8EuIknlK1zpwipM/GzVAGgvxpb1SsOduEJrSkrk4IirzpFrV06D3yYcvRUmlOTWISN4zoxqKuqBixNsx2Qnq/rcJYm2RZzF2v/2dMPuFrPQiAHtYKDGFAEwM64Jmnq00REqsb+tCXUGt99VU7p9qJX87dfcmfuQGZTeXu3Vj+E5HXHvn4iZcAwZfpnHLMQkEs4X1c/okAErm/6ZrhpZtu9uTVrpjwrUDH2/RDHzz3q1DsEGsZKJ9A7/Wi3CV1futiWVD9ShGK+0TRuwptnH2lndm/3n0uIoiKs6Mx0IouVdbtNsRYZtzl9sMO1SoEqXDTJ7i1lfjpTfcnR9yZhT6cAsQOPPYtMn6dk86ihf1zbfPEx9wX7Vy66u/sdNdeFLjw1cYAV53dN5PNIGLAPZKY364jsJXv3m6MsG/iwe5wfMksYL1IhxQCUGtk9bH2pcHs7GlSrjXNTYwn61I5MJVPyNX22qyn2ZkosF2TQhRbILb0YO/ViEPgb0Z+9kqGsPpI19hddYiv5+azVwOvTzX0aUEk/FPwv7W0fDv0PKDnHWv/fKh0TlE5cF2Jc/8AeSj+t+v1U037t+/kRH4z1uqnWat8rYW05eEl8/4O7/m9JaTc2Gc6i0Ytr7rdu/nt9daV2Z5A/xZz3jV6i/uFC2hqlxo5O/DsBNgVfMqVOffF93dTIjw+a2wE7Ld3vXZphdOToCAgD2zRt6Lo860ShGK1VpCA322LNW2OF+0qLJSefSI9lTYqO7jRkkkjVrSSxdC+BXptEKqFkNhq6qSD8Z/FS4JmDqd//sDc1cH5JeRU1qpPPbi1ZtCOTVQqawS+l8UFTteVSh87yAW1IMfgrqGS1HWlxi1J+clR/NRkYvpgSnvqxtdR8rk0N3rcc0UzVP4YdP0D+8M0uauJJr1wTsDA1A7ZJwllkU7feb58a/vRg//9M4dSV/6haYgNYT7e/EjQ/mfrdD3oL+M0vab7A7quVn9iav+qIJymljPpAWv29xmrL5WadxSNhi25JLl9tbD07kTA2P2y3pVZMX3ODbUNHeq4J2wnIhLRps23rpd8vnotcpDcbO1QlfDTN/ov+93+7CKKnb0Ric/SyiqpzL//cO93leTGA/BD/mVFmwpi7rp8f3OWf3Sp0PWAHtoJ9C0p2/HpweVuWr8q7ZDnwmXexr9o7d8Vx7LAdsDDFWKGgFNdiA2+TEBPaEdzgV3jH/g5r3GE7ywSRB9eFdTkTtjiZ1aIGVBnBiud11v7NvBqtonZDmG7rOeuGUL1qJ+D5nre5SCcStRkHcdXb1yrWnSWNDkwQAZwEh6h95qWA+YOpP3yvpIAzizOG+406y8VzRgicofFBE7fUobPIB5mrIQsHqc9fgRwyv7ptalvXo/YKs+MtJv5I3rWcgeCMH+x9GHipK7hnMBQ8eLH0qGxSrOmkI9u4XGRrF60sBlgEwe3bV3Y96v895fK+R73n+8EExXs1BV8u4MaL3KN7pts0HRiULo2HquskREu1JW/kfuEIUM7c932eYWG99uI6VmZBHywtdy8qvYxGoPMMsTSHk5Hze8CV87t1Tec+5HXtepVXd8K8eMG6YE5jEHcl0QpwVLGoASba7b/UBa8XsjuklbqLv/wILCHKKcnUHWAR2AHYgfCX0zHLlqqf+h8sXs0XTcxkVFYezUifyL+6+KC/86e1LfDGcNzvSbUrif5v9DwkepEWOb7u/c4E111yTRd4F1VbCN49XgM2DCdbxt3Y3rMk222teWj78dWtBJ8e74GVsOv9u9Zmgu3JmlUXg+kZ3/yYpSDkoUO7v4MhwOQus/v4LXjcV4Vq98n2fHrfJwybkBEp+N9QcgVJ4jDs4/gHPizHNt+thCdrK4ZjuRHcHwIeR3Lj+IuWFYCb6oMufgp9GUEn7/QvIvsrKbtDyZCXT9ojzgJ1dMDYi+Dk3MZIFEVgMY+FG6e4zY7mX67FydthmB6dek+wnYJRF/lhWm6/Qkwq02H6vSkbsq2rbVaWW+KixHlRVLoyAkd0PIwIzO0umQlLRXS4NtBSh+pfHe+zhkYzDfAdIzktFLwWM3g4xV5kx7Xa6b+uGIomIuPiKXl+4IGL/IhYW47eSJzcxmSzkmwKUEfac+Vn0d1ZlBFBrpZzqJ+Xi86HUMmEo8Eu7Kqa0wR15TKjqts+wxPmy1CXjSBzeIfijHXMe4Oks7RGfyYLmVbHzclppuC0mAxsZKYE4DsWqtenTu4l95m0t2UwVUkt28GBTHktASsMtT9yFLBNYT/bkAl8Pb6w7a6x3Ox4a5n53aKJvbK2YtxiqRq70FYozzPm4c5otfjzbXK2j4a2tFnAVZNyLPredurNDx/Urw1/OvUxOgM0VE6JI+Fw+EIEHgcTuMOLO9XY88UK7LlOVTEi3YMQE0E6dyjcgZiqLmN2BwKkhfFee5n5icPlZvekxkI9HsP3sPVrB2xT4Ii9J05YQ6DtlRjl+PNaLe6MMS9P3laIXVCX4hbbi4HKYv+3nbo1h/dXWbwu6eMdjmurY90bJOX0mbPgCszBJnFubmcWyfz+wwNcSTKivFsfCXNhVelP4UFgjmhg54DN6nsfM/m13SgGkmWPiOi/e0PBIrEZN0DWCe1sUllecHe6Hkcpj8lqPKxvfbk5DJNWk1zQeE9X9XHmSMV/958zFtTgsIKQzSdnqrpqTz3ltOVLjEL80coy3KxRkidvL8DNFavwM+1ZgLF9RKW3wXC9V+TAuVq98qBQtNBxee50bWN3KV2PTTEA83uzIrDh7ntzR8GXk3q7aYW+E95UPJcFcL+98H72/VNyi7CQCCxMYcA2pRyS63Vb9oF0iKkgvnvLzYB/bHfFZ2ka4gmVPXscKpy3smQVPShe5ihLNF336+wPFU15fFJBUlwh/vHs/5uizECVJGDLeMvANouOgGQXRE83mp3MxUb/u4itndmvN3/3we9Vdquw5xRF2MVutdLRn3cwXA444GjIPpBa23ztMsEDfWoLzLL9szRb18+Q7x2fQfYnj3pevOcTf7KPvHf0sLWnZkSSY5/585zyd1+6LhmvJp8DM51UJ5JV9VszDvo7CRo4OaWt2dg4Opm5ZT6od/uuHo04f+cCs0y1F5NT7kzdH5AvzyzIaRDgknjETMcpv97t3T2qLEXf5TQw+3K1YnZVXKO7LFQdKtfqjsp9bbtMjl8a0OTPr8oaxifH1a0t+cr+7vragwKClIBQJ+c1dWiKdzbI6QCSIxpIHpjcMBtMSsDgN+NZvr3zuA3bf9vX1wKybKLY2Xa9QxPS7bcxY2ROdNTOeczQol6fSzTrkhLqKxNIZE0ipk46MZsJ/6vUY9DX2KKvyg0sSuwQ0+XbQkLUYQY9saPI3wy8cp0VXfphA0QC+8I9I7kRJsNXslQvFZyD/nSYaKnpg1v2jn+0o14efYn/qmWGD8vLpwNJEv7RDG3zGkj6Ry1t+rBU4+hk158O5IBRv0n7VP+tHP+pgH0OxPHNAqCO1wGxNcfU+jCaRe0OQIsC0bjuGFb7w1sNBYbZ0ttjf8EY5DZ/ZIY/EtsWzRj/CxjVIYO+hTxrPMmV5iV0nc0BVpsXdeP/TfZTz6rnnIV3nKikOoYWjrUBujK/KOjGjEl8J3Srx8bSSRBv6FoGC1MrY3anHuw9oS5Z0ZSVXHiyaG/NRI2kLRGvYjLxZW1ISQ14qrSJvz20kLfdHmrT809L+S9DI2U/X39Ky9bGctiVm7YJ6m8/v7mHQ9BqEz7++S+pwSzPVv5/SbhzVGrMxI9LRMi51vJiWascM5OXteNQqxywH4F1jYVgXaPP0sqd9QIWpny9EteOz6jHwPZzh0yF6ES51Vd6bkc41SNMbrsqwVzyeR6ANOObYcpt1z8KwLe6MB4510xsf8i8LvPLm4UdJacEmolNxYfdtsgbqvMzqsixtWvo9tNrkqP4bHiGO3uDi25yfWhMSNJ0mEHb0BjuM9IT1AP4/7s4oesUrAuWuT15JwK2E+9zhDByOidB6YOsXGksslhpKbJcKaxEFXtnxtYSh0j4G4Tikw5nhlK//4EW5zB/UnmNDAypE9+crGJ//LXO+WZufPzbuSrOr79Wo93JifHC3naa1fkOmnXv2kKDd9A2Lp6hWSXBsnuzHor9k4cPO8/qi9wfwYD4R2cmr7AJXomlpiirE+gcLQatZZ9qqLhyO9tg+EKhPlvKiO3rXqk3YvnWM7tBgfnOV9kNx9eWLlvg2JLWGI6oC8kqpTDolf3YoorxirSGpBQlhYgsLEtgkBti2LlmhNPm6vrjD7PrjVeL8ufkuoYZpbe1yLYxBbdHVFm/9E4BylSD/qvrVT9SPFVm1rmT+tB0QHCaA2wTsMzrv5RUnVirPGOBouRp40j8NhZtl0jM6u1KFWHbg44fd0h7tWmyOPLE+nvScIrkcIq+ETdX0Fnz4kUJKExNn0f3jQo237oUFt5hupapr76UXX18s3rBWWysVZccMKT9c9K6uojbEkqpuVOte95lrHr9qqx3gt/JY/WkC+i729P4GDUsTRiuQXEZPZ1CcDUg18v6ny8uHg/geINy89738pqzFSLS3vp8pu36TDf9vKak9MRNiaGelkRzokRTMy9zW0+3rV9A2SuqqDv7Xr7nQHYnkqqmsVi6boJQZJyydCwaRd2NzF6kVSThlCQSurAygcE0BrqQ3pwxyqokwDfXX8quPrlZc84xy1ivKRkzcP+dtdYWcZvDqTX3dLrnncbqt6/L+swE4HRe77DA7lZ3WES76Vpm4SKmNDpNGKFJTmXu7hAK+R1cVo9QQN9tTAO9ftOwgvPrrzXO195v5ipDFchxpo268fxZleNQO7uXznyeKsG5vf177T/7ztIyVmZUZuRo3kv8d/FFu0Pye3VAlKf3jPUQMtA9vp6s4fzdwXyR/668t2UZuVUOK3ogDIxHOsJdLyrVpx8/dfIUGDRUNMIkHC4T66lLV9f05u8KiYiS9xpxTiXkzT+amnQ3tzvCI52B6YFUZFSCjHTN27y2/hjYFewVRTgJ6kIAcs133SsoOaPKorW3VXBRT/eP/R5MgeFFAgaCExJKj0FE5qYVwtGBb5CPYOM0sa6PsIeXzes9wFEU70tN6+JhIlXczIGApwI0UY1NwSqqE5m8MUJtE2mp/Mhu9PnUwhsJBOpjCrjxHC5+HAB3Pr7+HYJKhWs1AkFB8ARYlq6poa0eTt4Ef4xSKSOiCPFHT6A7t7FFvTs7FeOP8uNVpuGQOYVwTHxBOD7Pgrm4tlozsyLU1C3myI6XVMgOieN+W0TwyeNtTLspfpbe0o3N6j3ZHEyAiAZYZK4CjvYS8tZ6tZpjH1W7lCs7tiXSj4L3kXKxh4IIglo68Eg0lpyjIhIrZ8hDxax44k4DzE4Ryjk+o3tYtwIyxNxTheGRNjU1xUwRizI0U/OqqImo3P0vGla0d8ErR7AO09H/Glhued4PCsS/akfhygWdvnB/H/9jDgswvkir+PZbXerTe0WMr78P19695d5w+/U8j758h/uYE80FaliFlzClff3oSrHScKKe/7K9UX5nobJMXIMdt2KP7EpI5iFTKNkeX45pmV9Pzv8ff/awjfTslUzPU2cyPVdWh+cu0Ps8ynyvBRpNXZADzsOETA0lZkhTHt+oiUljqtiJbWxhxL6iLHDFLtfUa4c1Rb0adN4jdN6TsHkwkQqObMZ2OPfyHXvBua3aBxn7DwreGAxaav/0A5G26qFobFro0sK3YwdjfuW+8gu6kjv6WiJcKC4vW9Wq79Tqjc2qwfsjr1B15WZR1boD+iE3v+LGjeAabWbcKBL12aVU1Y2bEIRz9rT8Y5+uBFzhJ0Dczu0vC1pU04emrXreTk5PgqQXtfkRr79s6pgAKJ4QADxaAzpSzmZuN4fTzeVxugLH5XVxOB6X0z0aWJlv3RrTmhYTc7ExtwZx2/qtDjEXHMpZZp+Ocr1e5Qqg1kE38TMDPnV2PWirb615kAS0qlftVo4MjnB18Wuedt7QCNx5LnsBpHStT03tNzUy93yoq3EkvPqiqXkCUXtiXAx4Yfbl6csxu0YvjYJtrcOHpw8DtL44qh6hKqWcuKgatUoVhIW44WDo4PRBEwtOocBjKGQ4nEyO0Tgl5vMXlowAisAhxMpIcBMzdWwq3oziT2QQ5POXn8Fk3Zoq5p7GZCKxIpGOo3yGJuF4aQfWVLL2GJKJ5CokOVn0FhpHYgARwI/H2w3uwBwFLiGCbAMdRoKV3g9WX+nsj7//lPL8PTgjtU7gHAypdumeDbz+KSTp6o0J7IHWh6pJIEeAHbK6NE3zC6W540Zc+5e0JtWnHArVDaG8h7AQOCCu4walWfOLmgiVb5ab+KOjfFN5uQpBiLHyiizwGF5eW+UVjeZKZSUL3FVZcXUj4E3+6Ujdv3UN/96Ub/Kh+MYQ4+IRTHoA5CJv1EURHl7iqFgB/7/ao7q4uqhMepRb0msjPmab0pDBJpTh8GUpBLzG2BPYapEt8Zi1OL9/gistW1VXkiabRh00d+4UOIyOqkBCnG40Sxo5UnVfMDYmuF9VxQILPF3V5k0CoqMWvnPK2t841pj5jVOkc4ZzsXOmc/fXmV+bXXxlnA080InpfTxBnzBd0N/HTxf28vn9Ps7v683z9kSxIiJYUTBnsCLJYEd2BiyK3knYEUBZxmmOoyuZGZLc4WDWetr6LKtvZ6/FpJFS0ySY+L1QL1KJsCuAHF3mLE9CK/khE6oNtcuYBAMxDxbDDpcvsDanW118boMMkRQnTgA/NFWfLZCs1NZLLpzNr65eyM+7UF9rBBxI28GSU2F1NFpUfT6NxYzxejotFegtA2S+ct7nvPbjY1CO73Y21BezHYoGdp/Oje9w7q+xHM5LYSg7uvV2o98oHC4eLxQA1PRgyVr26JMK5d2mRqXpiX50YeN5KhX7619kSMm+lKxWB/HeAGe+VK5IV9Jp8IgUfNQWl7HP4lxYaUIivDiXhDX3DUSglbSOGwcmxo7vC+zp9fcWCyQSsYyTEh1BJET5uoyjoCJJpDJuR5xCgkdZQL+WUjzSIkWZLUeINsZnPGcMIznAE3vuqsfYryy3RCbK3wP34m/wijkafKR//WO871YVWJddV8Wy/hx7XhuTnoTFc5NiJkpONXf1zjZIvbcmR5NyBYz4PsW6uQqQPVaeNRorkq7BHnOSRaZQsxLDIuSJQnIVmZKdEB7CQWBwWTHuk2BLvKwvXpTZlUDLQ2Fy+Uwry/nWykwKVpi/PwF0oRamSl0UNPH6dppudDbc6+3df/9aZ/2dvkYysbOphdhNpn/O3dncTOwAs7KDg/cd2LCs3rtfC+SZdtDQOHZoGDEqLPJzzmDhiFZVuac+HeJF55WlZsjUVrgmIOex6kOpqcQxKd0rPI6GCIXhMRS2jg3HJMGCGyKC0iCRAwkMQW0UmVOyIz4HjiOkP7PibGBKqNmH6sFbxbXoENky+mr6xlv0P9qxQGpvMKiLp5THYNODBiMwgUHxNFJiEoeN3jSrbPeKrbjchHU9te7pVicIWYPFVFCo5EoDHnTwQrPdsuk7hmp7eMs9Ah65Ip6aa4UcfYuKiCJlaLUbfdPhSJwKjS2jacYOGOt2sDk7EmgcJBTpexQnS80EupiBjR1liDbuKCB4wtY4siQ5wo+Fiz2zYSQwJ2EHPlMLZ9CrEfjMpER0tm5Db1BsICsymSppjeNrMcREGIKBSdxBxyBgKYlYGQwTFxmJQsARSERkZHIc0LAoFfEUqRVq7z1kFCySDA8qYllh8uKTcKUYbDmVRa1rTeGZ1cx3yaEkDzX08VZ2CTi7glGBfmgfDFuMQTJTkxIpHEBe6l/jz7pf4VcB+oYbIA2g8JjeVm9jXsKrAYEqDXoFsxCUvHNHI2lbKdrdmDgRnr+TUEr9BOKpUUUJU67NyFLiNmTjziAUesHvCreU/IlYBr7bENIX8pAHcqW41XHtaqGpniknbzu5I6OOmdzCpDLRzY8ckbiGiWpeVCe31HzzqCMnStHU5HgZlYSUJVPRSVIU+gXpY1rLRJ61Y5MkRMlWDZ+MkGsr9sBB/fMyI+MxDHt3Z11gB1hm8IbgnF8StrrWuuvMeNRSuh/KpSvFxWUPscosnakEqRXy/ROVynRbXldUK41Z6mPaMNcH4AkcELWeadt7tkCYks0UMnNNt8m6F+4FLi1A2h29bNnNwnXwjeuCYgBcX8JrQpmdl4eX1x73A+N1dDBBMkSOLQcx2M2dmC5kZjOFKQVLTUzbLhuIJ3Cgy7dpPgutk9YWRbbCgWtlNIJ8f0AYlKUg8Sc2wxlYPghLwZlAXomlSmkND4/EtrM7vdZ8IvIlGHfiakUT0nsC/Nq7Y3h5WYnO6FxDeCkdHHCWr4mWg8dUdDJjbPuiFJIWxW4TTV8xlUDgg6sE1n7sQpa80wnx8r3gpike9ZxeXdSDUj6o4f3uI8C9/7inT7wucSwRBum2ybaoVlqX9XezTd+AGWg/YR/Yzyz/+3IdvFDq5kYQydWEK8uL6/Jqs/+usIUAFPBINswWc5SFgysWG6EIQ2EuCXs/awJ2pQ5RKUMmMgUTBSMjMiI6B5tLzY6zvo0/9M5qQ9vaoyDVfpxQhsYpcRIqDnFCioagmFVqjOroIQuDEQjRKvJPfFKAfc7PzbjmsQv2Ro0xiboNsZ40DYzlMg38MARyCM70eJcRnpppziczuApGOQh7d7ojsONmr3HrtRVzELX2T6BXCJODZVUv7vG/awJrLsMpnOWt14xbTVyu7xqduub+BssdocOHYC651dHCI1aJTRdrklNWKHl24LB+yT614rFzBL0r1QJuKIb+0YnXL/fNiRPJQR2MhmI1OQQD6xWcBcLVtTzku7vLeODcKjkv/oBIxgObOSzvs95udJh6vblJEYNpupH9LjDMAAMASBiA9Pgl+0S4DZq4BTFxM9LGIUR1lUReAai2wgRfjcF8XAWRU+3apwhyBDCptsprMGlWFIgvwVsQ/EzJsHQDT80yOSSqQoO3sN+Bc8ai/HTgEHRzAOTUCtolBANv9eF00Sr+HEeQByZtUCBbi2UhTVoRvVcodGSYFDaw1TvSTfEMR8UlbpEe5GbI5pCUyW0Sw62SzUaATuiAtdR+oUXqTtH+16OVPHjslDfhU3n3hs81zhNMmXFlbmZbkNtSgG8C0ZaD2hD2NQSCv4BUAffl4GaZgkPIVm5FsjgGxzmNLC4mFlJLCAYtfThd2I+rbUSG77IM75nzmtBG3uiB2MbrqcP4TvE83jHx+FAJhE+V5AbWmiRgJqm8FByAOm6DP7kVEXIM/liMLsY5AT/tDCJKvQEZJXWQydus3ciR2zmgnbTIluTgZlncBpDXU3Ukld8bEqCrNiN/EAcgnlvhsG1BFKkN/C2dYRw0OgS1VN2/EAoJnlUp/1YAgGwIVn0RMOC7FIJ4EbeAkiNIhm19ENUw/GLbbVehctKK/JqHSbPsoKra4CPUjKaQ1Rkyq7hL66uw3m9EKGqjOTRpo6C8JbMhaE9s90cqtBq3pz3hZmxst31VO4Hb/E5x+GfTiK1q3DXx1q4Z7aBMzey/tyHjNjE8aZFW54J4M4ekqGqrxK/pR9ituUm2h4KB5lVWa90QfAPEDNovQEx7sDgAjp1s521A7k7JVaXI1EDo1PrhmehUR/a87/At/Hqj41egFmhxY+1iQNwNgmHQ9v0JgsBCWutJg9sYDrMQdGQrFP7bXMS9OS4iyCrAxvwvOxUDjsFbfZluNcAnviv0ILznR3S/g+RG9ztIvn+EAaxMt8JoAaF9T9chRD27r9+dU250LuawITi62o6mB9vU0ynq/Uvl3d33ogbz8WYbSC6zLcj+dJ1xk3mDevS1A6j/NIAqjKIuZ23r12BbwJYqYYs+EfKjT+E96h/hUb/tIKfjZ3AgllEz4oqbJ6Anc/1EoUd4lsazpSNnBG1T/PJVwv6Cv/JkMj0XbvYCGBkfcibnfawLOIPebSlNnMTPBw3ywUuehfwPp/b9djyOAEYay0o84hlTcZu9SWlBMuYPprHgs5vX/eML/1aR9FqsYpYseqqcWsKlfMz4oyrwZ6Vzuyp0qywq9eViitnIkp+2QamiG2DyRLs5CApWiEKZ9CUThQH8EKY4FqAZxB+lzNzdQyGvqW1qNIDJXSVHK49SgqdMhDGHpoBkQeGDublAz4IOFqr1uQZgyuFGxN6klj20YiarMoBDjdFs/n1caOnBRDZBbbXLuo83Ggdk0sJsMER2NTdbbfg5AGvMkuus0B41RXmjhy+2YrtnS+zxYMu2hkHa5+/5+/6Bf+gf+cf+iX/qn/le/9z3+RfZ/hthKXwvvcNY2NPC+8xzXVzxIXNefOCT87HXPZPb6rQICGnTKnwytacVrDmwA95Fpy5nnfOfbuddcNElPeaHerMsASLV5UfwAQCXx9vaqV7zBTPfJHedvRBJSFcfSzP//DLBvztV8O3BEie+tzm5crATzHRbMqajYP3HuO7unzNTAADo0ncbKQF7CgAAAIAHAL64Oz+5vlwdiesBs43t+ZJNfetigqGaGHlnSaa4BMK4+b3mgupLgi8EF2DL6y2cW7C7LwywurwwufKZbVU9Y5L0QfN36F9qw64W0re1YJ4R4MiHyO1uZA3c49/YMwYJHfA+qYEocE91wFKYrJtFbiVfZi3kHHxTgf0DhsfVPLVWJKsH19KwKT+Fv+gU4klhBmu7lnR/iUqJJIWXJatde7kPEWxF93dyQL4jz4KZ86B4W13/tX0EBWz1LWkNFA39fpLIdSgy2ANcSv1SXuTUX6IaOIl8tJZGeNtoXiqcXPmuL5ltp/Z8uTpjusULQGVStpx1i3nIQ9akPVQSEEGPd+KlW1ktRg5K7pqjP6sFT1hrJM/TAPaiSR4JU9zt21vlRaKvXwqECAhcBsUOdPZ15q73qUiMCnFSECt2dY+r+QcEQ/BF9V3+GmwHbHlZNJgL26W8q7aLQauR0S4YrtW3Si0c3Be6utPkJFbAbJ6Nd0jfCMCRD2EfBnd2MdO6BkhlFyMdDKlPGkifAWC9WgdKs+lL3UgxPJ9l8E54CfXF3eji6lu8gi4m2EN5/PfIi0PrePlRCmlsbrdELT1IoQPpoyhMZWj/Kbw9HcQWDwS183+SrFPjEYimgH1cHexNqIYZJGp4dNkmd/Kl3A5kUNAb+hOZWiQtpSjzPW02P67jH2jlRs6iJVjHccVd+MYgOhEmW32LU+xAWkDHr4IvyF3GINedCD68vUJDIKfgEbFaGGu9PxNbx2XdAWB1J6o7sKN7K0D8XwdTowzBBES8GIAQNvVVBUzGxQTDuaQ1WanhfTAA6FjIgLvzOjSNvE9wAbTbKPnyVH+PdYfZHRBUdwI69Z0M6uBh0KtvqQWHHoJvqjeQV+Eoyi2EfIjAwLJsbtX6jZJ62EYaK0b2LccJtEKGi0AjWCR1G2Asc9BzIjC/+CWgww+AGN36MLem4rkJWHrGA9pdcrnbWU5zzpqlo0G203uds85aVNqlzRVroItV1h0z3KK0FdWTUKhFV/wJBJXPtDHlql0SEYUr92wxQ7e6NwvomPBb871W13dWR9nEJYvWmy6Ol9dvFiRYm9ecdcXwLjZYv3VWz5H84a2xat2wuF1hJGXrHY/XbcO4SyUDm+E5FMNi2ADVkR8Bj+z1a84GctepHuplzuINOGUFeFQ+QB9Z8HW5rumt2ZtD9Tzgsrlh4dbmJRlul9qS2R0Z0+llSYZK3LkG168/7vNaA65D6wrWjfaNVdL6c3Y8XXLZJU31/OaKFCnYsnKLW/N3Nwv4AO84fd7q+tXq6CIj2bx26Rovr3sXZMPavBrWFcM7Gqzfuqlnnn/YN1atuxa3iDE87VvE5DHRVgvNVnSUUtMyaEEz3dOfzRuD45NUC80opHMOBqgXpA5lx+KMogk69dtz8qbf5p21QNn0y+xe//LEeL2Z/TW+gORuJ4PVwzcTHARpksbI5vlWyV1qA2jkAAk30dK0MyBjMcOv7WifLxctDtt3XcuD89/WSTnvmsf2bbZuJepP7tcRZVX6kKJTwmr/9ist276wIvagPEGVGBN7Azv00B1AP7sD+l4O7hEJoYZqUaJwd3eMCz42VvopBMsj3taocN8/+wXMJ/xYwvUpJv7G/n3GdaZKtIDeGpvsdtRl9xpCFtm3NtOwsPnYTNqUTNeYxzfR6Z3gpKe6AE5QBlWjBehnzO+Yx5iX5MPyqIKFybBMLA+r4D/Pf5f/Nf93vpB1lI3gQtyIF+I1glcEF/si/Sixoeu7rn1dEs7bnMgASgpIHekkS8i67te7P+n+qRvnvsh9n/sV92fuiYGzg4XUzp5C3vRQOWvhGW+fcWpoZCimFNJ6etOZP5558Myi+Pfiv4w/Ev+PslPZr5xQUumdbM6wM/wUnvnnu7N+QbmCi+1l+UV16bpgF+pSvUIT/tX6qrqWXBVX823JTX0LvNFvolvBrfLWctPdnBRT7jxv73nilOAE4G89v23iwsTgZN0FKy44PP34ZMdk3+T4ZGKTlVAuzBRuv3Bs08zmDaJFvWt6t/Xu6n029e3Ufak/pv61+czm3s2jm5fB/8TW9mPt0fZl9gb7XfYH7GftL9h/5YBz4DjkOEw7nHa45HDH4ZUjwhHnyHbMdlQ66h3bHQcdpx1PO151vO+EdKI6zTj9LPtPbu2sd25y3uNi5RLlkuVS4nLcZdHlC9dw1yRXsivfVeZa5mpwPea65HrLLc6N4JbqluNW4rbkdsvd9R5UW9WF6jnqVHWuWq2uV3+rPqpu03A1TVpG+6B2Rpele0N3XU/o1+vfGGSGBiPPmG1syViYsT+jOeNsxkDGREbiUpZJasowuU1lprmmNJPUVG6qN71govQxkwfJgRRBKiEGSAekF7IfcgSyALkGuQ95A/k581+zFdQC6guNgCZBiVAeVArVQBugO6H7oDPQRehN6ONXf+310/od8XvJt2WN5ZGVZ620Cq2l1h9sm+wwu9dOsfPsuXalvdputP/g0DncjkqH0KFw6B3tjvccvzqaHZ2OXseQE3EqnG6n10l3ip1qZ4PzA+cB52/OXueEM309XEaX21XrEroKXFrXpKvddc01cwMn25F9V3Zr9unsnuyR7OiNuFvo1rud7hJ3nVvoLnDvcrfn8HLuzbmWE7+5Nnc+j8hz523J03vwnlzPMRajXaL9o3Oia6MvxQTFpMUchNvClfAJhC3CDhGNICHKEeOIS4gniG8QvxdZxJrHeseGxSbGkmJ5sXmxpbH1sd2xo7FHYm/Gvon9vdg6ThZ3N+5l3Pdxf5SsjefHe8QHxMfEE+NF8YXxU/Gn4hfjLzd084QmBCcYE2YSnicmJA4knkv8Psk9KT+g+PuBbavf58RVAeo+1WOqF1RvqT5Rd2LnYLsr+ismK45UiCpk9BrtotPtz9QfY8+xT9SEOa/0MCf5r/k/7tlZJWO/lfvR3mPVVe43ea/y3ux9fO+nD56NohW8AQ7IBQh4AcBhtD7pgkP+lglLsj6pIoUyEdbrwVACfpIhBxyJOgWDSAgh08C8+WH881tIXK/mJYKe1ou/1C3XNFiIkT7jXtyspyEkTJQxBVhxS4XeTZKEmoi7+/+oTeUQXtJsrYEEVrmG1gWGKsQRB5BMW1hgLjR7J01QKZ38azJiJiuzrcQcXw0ew7iGKGApvYfWU+ZcBoRIBWp8Mhlz2ZUlExCIkupHQPIdxASAYVdBgcAkmhSBFrn7uRwAkUmD6acZiin+ELfhlbxOFcnYhOUsEb/7+nufhGeXcGkdEJ8iefEYx2ocU9C2KlwkDrzkO1G9+tKVKObEbNCojNSzYIEmvQJwrJexGd9drDxzsVE/LIG7zVaPJxxYbujPCt7js9vdpnm85X9b9z7CrwicV/D3OtbVKinnZ/49DeelkvgKgQIbzlcn0lRlnPelPok/cnPYUYya/ZkhSX01YCv1oG+Be6G7gUN5xLPIXVZxoo4CGQNv8E0I3MSx02qQd936TC/zLSbUeHZ/3gnZPiqJp5JlKlk0xaK4Ch7m42ME02WT6ih43NCtg6UDGwf5RqGoIeUi3PaBs9AP2SWshB2ZjIkmW9ns2dMcAseD3u+5NxX7JqI6BYuqOsHtqnO4XfcGSlNwS4JFUiD6e4o7GEjK6bOtZkAWqy6bx8G9A77N9IRjrGfghYHypiQ8GnfONyXgugqjWU+TPM3iGIbpuY8xCMFrczw+z0t5P8JsURxeciYDx4Gtj2BNN4DLbmRP07bTtfotZrGhZ7MUrAM216BQNbs1nOTjdpXKqR5qssuTaphE2KCiyGUhFGDuE4JPy9thIeRBbZ5qiKIajNfdAqWHWCMFYTIRHBROTTs2ed69Ef+kmP2EzLquupCLWBBFUr3HWYohZuupvaSORaQrMy1//SsNiZmzqj1LgWWmH/QB459hfpeHLtt3JTIv8fX5PI9YaVHoiY8j5RFPVnXJgIfknSRx2syD8Pw13Td9JPZ/5u4rNz9JIAdfQgLt6omaPQ0nhXv3xdOV1r5c8E/Nq5BllTMm3j+ZKO8nDMX7O7OKt4q5Zc0rrWbxlPQs+zjL2oRxu9qsnGEapYGLJB0Ebs6SuOfk9KHpuw2M3ac/27tzqlBuaPsW4j+tl2npaglr4a6MdazFUcaeO9NAkgzq+H40oNgddr6vgGTuKW0qX26e78LstIeZ0wYRbOzPfY1GMwjEXevql+0Bb69IU+77tiD7D6EVOs7oZceiAcywJKNojmx1vzEqUdrbU8dVARem5dFZ3thhQ9Wp1JTwBrtPKhWqgdl0w2lRHCAbOTO1QjZrei7P4OLeitalKK+C9KQfHtl7Lhz+knFMgjUZiZqsOQPTrXKmulE98LaXWOX3AXt3du18cuP/0C485QPfFbI9/9FNDFJyAzwnVBeentzxB3Mo2ZeGPm87JFPA0nqWo9dxlxzVrZCJQASh0V0dXNPY0BeC7t30wBo9wik5bzej4f2O4fH2MVd4/2BivFqmhncTo6octhrNY+6u+m0NWKAgLSJlpUEHufGBgs1om9wEryTio2QwSK4KITWf1yADrSaWddBIcCTJjJXjM2dN8hGKOdvt2Ogj2GJLfr5+OYMSNjSWD/gQm8ReoABqnBEXnYE4SZ9bSdyUKExt8ux1VDzfEtxzj6BuVtRwsu/adps2LBpETDUyRlce+JDq2x/mrN00rpTUX8XHrpo6DvryXELb//3I4++/0TwE/J4ooUK1xwVRAt/URg5ESZTmqH91pcsj92m/leV1JCIGP0taQaQiVESNC1HA35S8FtQFIR1Y8Cp6CAR6QKJjUc++k50GoKtXxcDBfhtb0XCRoaBC414+GLgqTKZVIlJeeqo+HQAQvIbDE/D6IqDH4yXBmQdCq1woSeDnN67ihfirX6Pb4lTK0ZS4UmdzOa7c+LZGb6+J1Iaqq/w4gBuSuZ7JEFdgckIuF3xKWJnMjkrZ8jIbysBXLlMcu6scNI4FBg1Q45PerRFS4D8MuETU1RAvrgk56EOTzc4rqJQrZSPGDGvurEqil1Zae660I8vmi4VqhK9xpT0o2gZAgOyPFEsNKURoTcooykUlfCOZl0nkGLIG11HErjIHlTuxgde64lCbW0piULIn4aF+uy7XLEe6NKiaa4AEjCOUPYxm/V4Odm5SCvJpQd9uIdhh85788aq+X8NyWHEIlsfT8ObeeCiYrbEgKtsIVFSoOL9YpHB2H/e57InB4kNJ0LKKiqJqNMPNyyGin9GWm5lQCH5xMu5Js/CaihMoO1REBC+fsXgr3FZHWUkb/evp3/3QZvSXW/aaFCuq8hPm+8gd+YE3ZhdDAM4jMxIcuOJbya0dxSsGJTGH2Y19PcgZnRJPaevTAfsaCbCxypl83v+Yqsr9ViN5FgxXHZ4PN8HajGG8wVIGoyMsjRowlGY3lS7EVoTjjg8U87P0wUkJFkWD6d9T7FgTWCSoOEs9V/guQ8aS85d7+V6EmtoMOpV0FpYUaaln3qgjUnr4bb4+MSxKrygdj1zy7dEfmQJiH28ImwPCP+DC6N5ErQhcmSTlk0rFeuDxCghVr9r6ItBTcwoyrHJmhpfHJHiPMTreTxkB7/+Za7zfMXMaLXHh4cZyxpYGzNRvGJoztWteb7Udj+XSsm8zrE0YDVy0UKxUxHricIXos3bsq48GYJfXZtlcA5YygCBENrJoRdZHSt6o0UolO5RVkcZw0X1QoXBc3E8a/IcSDsLQyyXHnEyIJEUNd1e5Yu3vO0wT/q8JEkWRoLNmDbUUyszsPA6USpFH7qoHt8duMrU4DZOp2OL/ra+vc2K9DQ7wQJONF+PDQncVUm+/TE+vmN4pwHerL67DMBfdYw1QPkjh8YwuGddG9Ord9L2xQau21Di/1wHNRc3g6c0O7xroYSw/YvYGKgGnUg761lm8znIijYGmu2dwvgUx2HDvpBpkkIcWmVMSafuc2VJow4D4iv0k5UCTEoVPAjqWn4RFsB52fmFbb3v0UuzCT9Vx5/6shbzbq0H0YSf/8otxave5GBxcr4mpGYf/el/lQ5abKdg6otUKvaDdH4qhrlhjeJYkYYhi2T1X/dUF3VIzuBqjtcAbdBMWHzSWbq58wjZCkgiws2ZVEIig9jjYdlP058zY4KNSUgX0bIVH9OSAcghdoPX6RBPhcrHw0eDEbnthgwN5VCeqftsAd8PTNuYeXu5ve0NdGj3VlkMa5jZEFZTRhjsWtR3WGZdY6AHfMR0k1OosUdvP5g1vYmdrgU43IEgsi+OOAyJKW3pSzKCjpNQrzJQQkwkjMCz7UZfAL1Tr8MsuwymbvS2dbyF+lpPTvdqtAvX5HttcFvqrGKxq2MvGDHNjXXXS5lT8j54p4yuLQlWCvOxU2akWDQvZ3GFpmxi4+ZgUJZorA43TtJw8Cxad6g7HUMOKpzzQF640siYsB11krg72zag5X39yIKe8fBE3wucZWYDym81HguOrccWjPl55AjhI2I5jpDE/TLvPsPz4/5m7UQBy7r8U1PH7K1fA8qaAIlpVdfrLkIuqTUB2rSewD2rCnMOZlpmALrVvPAwDshAEpnsa3rjnHRy7siOshpmUkPnZN0IrPoInx/P0jQdunMw1bbXGsKQWJJ6GLlkEgXI0PsS9jEOxsDjJxbFszsfUcFAifuiVguvXErVVYSjQptpnPCRnLvG+yIzyHmCCvKPMbF43M/0bZh9jxnhvMGWV2VZEPbr2ZS8MWZsw4kY/gx1lv2UAKGe8pDR1jQvr/YvOykXPodYrGIrkl6rISgu0ro6vrLNi8FGktVONf8lGSk++3KJZzzynxqmQxYe/9pBYNoALzSVO56wKtEfuk3Hfnbg3jtpYCHdqu7sHWnJ9esjjtDvwEOa2j/flG9Oda9HacKfRsBKbQdKLSs9wLxCh4Hx9dZgGWZF8+5jH4lRZGbWA5dL6cpfUMKysfY9GU3pBqsXdkYlODf5lFakiSuqx2hOKZwUo2rqW9z9WBWJHCotLytvVGGCiZewbag1LobA9WE1TmKyjdEvy8wJvFTjXfIuo7BYGreGAN7e53RZW5h5OyvxlZXxrPf06ncBUvmmohBm627qHGVoNG3PSlUVBhBUvUBsdAYdFfgaECGB5WndQAEA9bDjBKGuk0PIS09yhhbqmSJfBuqFb2KRUopanZx095LLYT9eH6rtVJFKBKBw5fpMPNToh1FpCIatOGH/1mUjWUSLuIbdZu1w83+gqnmJGbgzn1/DiwJecypUxDK+4ZFbumT1oJyTkbHv3PWXz7N5UkYWQhs7dOspxcWTRX4m43RULrdMx1kq1jRzedZ3xpIjONYcdO2kjaVqgu68ZCHDCcSUiAO43A8RoZLwkOuerrIvdjw8Qc/6sUkGwcPhA7gSkVrEXJDgNfLDFgDC+G/+wh3o+6C94xfZTuzHAcY5jLNYiR4Aur8bnY2d10zvav6YJaEWntg+CBRISy3NB66P06Q7TzeiZQnCq6Hue7jAFlR7rHuZ6kzugFFYvLVcu32AVZZtctfoR888NmG7ioSz3mQWoRQ+HYUQ8bv+HO5VsqlAOoR238islVTGFmOZmCZCraRXJTtJtqUxw0XuD/RRsbCGFCDjRG8pEXA4A3qZPf2geOLw1RhykVe/PM4IPbzWPBPcNp+LYauSgU8bMJnUYHxt0AW9G2iweSxearKBhNzyTKRnrcsRpOGrDBgLCFts4Ztg4bihJwy6bLenIKTkjpwtk1CjpxvidPFqVV2Bof6FIx5ZmqKt5CJLiy7bTbUQikq6EbkC6suCFsH6cNSNbipFUX0U7Y55yhIW8UlzHnbexbtBrVUw/jCXmiqm0f81unIb2pbqWiM827/qLY4U7aEhoRvdKxdDOlRwk5HBBevFLpClgr1kRXnJZprynZw8pf5BBGTjve1TY7kyKSjf4qqCUCNgCKZc9cETi946uLvtp/8gU84one54vgyDG69TtoVVWdKHV5kF9KF6XRS4LeSM+FByugWCuVc78x9vP3IBUwRGKOvxgOh8KC5q4Oqyc4TXDpll00SeJQuWKMcz4GzBjjcrhN/g3WT7asYTSiRw3lv9gSCyCIcu0OK89O+BYYDTcZqeAG0mlWM+JyAWExsIZEiOd71yy1YdjkhQXndlmOU6b8Ozp8VybJ0bAjHMRJFHJhRwuVK6nZuVxbUfflYLmZ29UTedsyxV5IzxZhTJjVUjyOT+MzDBOD5fqd7AD3heeP8yaN1thWY5OfVTFDw8CcLzptiHEHzfg9+HeGK8vI6siYkxIcc9aD/HFYrO4pYhtjsYM4VzXmCSD6yGWNB0MdtgtpTExjy5LzraelHNePRFedmO6aE9cxE4K2sNG2v8qGYkk4H8uoqg0zzfkUpNcPuc3Gm94ILivuLmJp7RHNjJ7MNve91Ebtm1R1Jg9SkQrffSTgg4V6n8XHb7SO28N3p+PSe9HipxA+X0w6uejcYB/w5S80VewGB5wZPl/ynXA6HYvs3xqMzqO0KjttCtYbV+xLQ/DZNFibNnhIDoJrRJM6Nwe28p+QzOCINhM1cCEBi/8X3lSNKQVcLS2N0XNFVFbUfAKsjFz9w2i2boPrtJm5WoEqJ/tjCThr+26dkA41vHfbbUcSGY4KqJVI082TUcqw2w/c4JT8hrZUjUSaisrDviwZfsgeHqQCDWHZgxW3k+tTL+6j0fzB/tdXkFN/8DZbEzS8NcJQD261QSyxhCxMvZiONYO4Seti515Wayx7GIx845eLA1m5TozPwmNV6NwpBZTFMOQSeFkGZRULggyIh1Mnnny4hFNlQ8eMrxV98C8jfKnqZLpzAUleqqkbc1q4h+BrvSwYQ0Hs0jlzHxZ00/3r884vjxdDYtAgBwMw/s5YXpqGHdPy2ghmWuNApw+AncIxSoOipMmRsxHasXNRQnmJyefFhxhDfBgPj44UjQgh8WwudWSlHbCEhU1VKt9W58lN6tCcSzTrw6GXcFsR4pj7m4szQk0F4R+yCwBu17RUGnbY9MQdVV/iAqGf6M/FT3SPe+nviCcRVw6bYndZTbvu/TrUle5yrAmfUMTY9tFVyYHqybxKljaeuTJoelYTaaWNjJ59ASnZbHZgcaxu/P9k+Dh/grTGVi4vQDZe2R/VF3eC0thbdIaVuBqlpMhoZHGUmq+IXuN4xgeypxVmZtmH6wpYiuoSyNDLFyRWMRiiJRIhM/pQHkxlTaZlvz2oqIpk46lgoVnIL1ktdt2Aw/j0ls/wjd2VktA84g5qNNsQdRz3P3OLvkIcDm6Q5O9fhJrnD0wDVxqcmGHKcwzuHRPzWK2joMoTa6Lw9tYNM+6sEnOe4CR8l5ghnl/ZRZUrrEa2OMcXvbLOmsTxui6ao2+ytJGciiFSvnGV3ryT74eM37CRWMG+1VDQtPFxXyTdhXVnziyI95ONvDSgv4hele1YLIpTmEUGi/uOecRkyyP91HA+660P8dCLggBCV+JYxZHJ+O58KUpJClGusKVE6pLjR1+NOyEhnIFPV2Bk+ZIw1gh1uefk6UZD1cjeuZoWeYjk72ZbHgUI+V5H3YVsxw+Iap7oDl3dogTvpUXpub+7nzVuZfZhglotNKUkUHXvoZg4hwKVJR6b541HauL6QUXYd4f9r6JWm8sRcIxf0gNI9HHe6W7QwcZbNRLtXVdfufJd+p0aqfbYjkglmCmUuvT6daeI+PNZbEzt3XYKpHB5C2fci3OiMt2hmoRSjjsYq4jd2xkMvQEp4mfs6wA+k3b4Sn05dNoX4txgpexqpbmU4KORxOB4PDN8kY7IRfmh+VnAnOtq7m51WgL+rzt7nD0rA1uCy8kT6fDEAJSoxYfp2BRcUPAsIUN8olPonQu72Yi5uARUMWM0VHxPtfCDUjwCiX8JowmI1AJTDECrMyHHFXEunZTksCY5ckLsP1/KxCZoW4/mhDofHrQebVe+C71TXElvTqhH2KguduX8l3Dnaj+RxOD7PCknLeYEfOeZAjeBHOB9xJTyvs4I2xEAJtiJ7peY9MELPLPt+lNwHcz8Uh2maa14reghax5M9n73RWe3jKChFo3hIHbEoxDfewU65ZpX4CCvnG8y3IeHxhDurBU1GZTPsCwwfDUTb1dxrIFW/RZwO2ivo6CBXLLop+UqzgVJEJ2wI8OmfWPmoSxVCCL4a5ZCEQja0Jqnnt4a3p9v+btFITcoTaarXb3PeDIx0txGWNCvqhF/bXQRlpsDyNvbW7y+cKNQQZvgYfXyJ7962QZE5I7nAE6QbJ0/bdgSY9Ldz1uDbEuAoY2lvJ6WmVaebM9hta2HgxgBTwVsr84+MLlcPjrI7FhfxjHfF7cawz6pH+RmPaeRI/75eHQKRsBrklOD1Y7okCWT6fZVsirVQQNF9ruM+5dEr+6J249rhahqwlptn4JIuVK6JSyqeBgUc/OJ6qVqE66aa+M1qs16uLZG1goecEYlx01mVvHAucCYqJIipzW7qSacbP1Y4HJdpilXJkCy/emsHFzTkuDBBR9cVU+8Yw6BqIfPiV4D9wZJWG4J2cUjYKkAGEt+9JtmOxRYA3vPKKaKVyVwpoE1myPFWUqWOPFHiuEtXJehHHQnQVIkA5W/B1qYE2bwdeNhwzLwTrwUk2D6TgQvOAlRy7AqMRsFhuLd2TaxNsKNgu88L9zUuFYV2CWzUnswoEiaoY6dXmbEdWxy5yOWl9SX36db1WMc/2Zc1dwMF3o7mFqK7DJu02WNAJahS87fFl7kJiY4X/DPDf6NWupSQ3jC8ODR3MZNoXj8kb6ShomehAE8Z8+SD1ZI0br+sHKGT7vAHOV9y+mtnKLFQtP1rllf95qbcKoG422cZK72sQbiTEQHWLMVGeapX0qwFi+F0ZgMTwYsuRi+91XaMGwrVCYdjEyIUCLNaYFbQW4fGX2CG5u15wsgNvBw5VamAzQmMSWoG2HAS+Qp0ad85KgWgniYHOP5e052rDFej2zW7n87TBGYwYu2zcGM5dCpFzJJB/9rfnKxRrOXMPS0n28nUi4drFez+ywhssLyEa1MSBBq7zN23J440WpVN6ZcJ2gaKTLcOMdQUwgoAqI0OPxZFS+QMipT8BajbQoVABufxhf2O+2bGZZlFCtAb92Ge65YCuV4a3KPqLHSqf7HKYpkntIEd445vDnU29V9f8F1sD9RGcvO6RWf2RtOSuYm58Oilt9yfxAcuOwzTGTuZ5YKcVf02o5YiBX9kKkiGXpjyv+eSXJxquD/6u0frdRyUYwnlyUsymxKHp3yms3O7AE3WhilSuvWqxqFCt6tsm49wx+qj4Y1Pf5emY8M9iOY14uM4IzPbtultgul4Ci5a/sitoa7DUNw2S5Xk2o2JwcE8VQx8bqAMGJjanRlH19uYiT15kdsRcUlHmPG9iYP3yhIt4QLC4QdlK/VJ37F2yG3QbbU5gmlguf0nUL+UZsojBHAhcIu82PtSkzB1HtC0taE3qgk4NX1nzOwVc4w6mjGxMIoYoMVIVKNldoNqY9BddwYdcidLc/OlSwueK3zjVxDo7tRdyLNTA4VHjPc7XmBmdJfVQyvNzkZYdTGleSLmnVxAzloM1FyxiIisNPlNLCGWP1xFQCOp2qogKuGAMjH6ceQsycV8xhxwo9Pljcs/EuXw9fpxKHvUCZXhPEcUmS1lPdTeLckantxlxLRNDhLdrqY9UgvNLag1+U9IMR1+o1JQ8JNms8uK594GOLgguz6OSH6SVTpIxK2XyAnkGv04CiDuQ2jpCaxI2QkLLSkwWS2c1EqD/3EE1TWhQA9WS5i3CY0oIC1NZ8k4w8L9dpaehT/2RPEn+zs9tsn1CIFgrBZ1kpURbCNdyWExLMJn81xexPfTVp2Z1um9Xw7pPNNO9TTIZRNXUgs7B5NeqNV4FOgsETpDRIVYaFozpJ4qif8DN4PGeTpVG3Z4QhSpiQN6qE+XCPntlVU+2JBq/wpqDb8EiWJNnz5pMkkiUTOZWxnnC5bpopkvdz61GFAZ7WeYLVcqzEhuT0OSb4EgHVyKIEkqtEKGvfnlkwlwg1E/6W2ocq4beiWNOXaJGyZCUwaKlWqHwtFmogx0ESxVokoq/nIGJiZYVR3+eDXydQRMPSn5JNFXLUsscd9xR750mpJ2zTz3XWKmfUvBgz2cxVmkXX96DQ+VQoK5oKPJjA38IWhY0Y0ID9Z8s8l+udUZcXHaS5eOV//HBCkvuMY6xQCE2LaeSXURXq96tMerVOKVntVSNipI6iKBLDQNHvlkhSNOQMCWzfDPwNC3kVHstFdZwtZAN3HK9MQuS/nrEuH7Oe9G3+/pkikyrHxEr/4j/9jXtwpg1HaqhY8xpcS7oHzDxsleao3R7Xdt8njdipOSXNq1Z3jy2Vm894GG5QElv8LFRXNXDiTyFfNKCU7ZfpOGGu3Z41qoJoP1+mYFZzjKpONVoZ7Lo6LNRYXLXqDV+EgjJhjySKZDwUisWSDWi1xT4cdcdrJdcdFnFiRc/CrOoo5P42qT34kvD+0aSgMJwl5+1gFJXQirjHPVrV/Xeognn/p4jO8M2mijjXfg94K27mufg9+9zuipxOuhKdq4sOqoi/gq1wpPVmH/e92P/q4cySiUCK/9NwHzT0M4yhvnCKec5s8avg2m9YN2jGMl2Z/XtQLSjIt794mcNiXbimMFKwJQpZOLLy7wR3vmw/QSjnqNrId59e5/7UeJvFCizXJh593WADrIKEQrTkbQCo4/EA1WUzea73Rj1+3wDJxr3/KbU3TFYJDrgol3xNLVRYrX/7uM+UD8ZirvfFBKOT7jzFu9hnzilQhW32ejxZamlWQf61vWjjDGfoR9EXryTAH13B9CqUkBASt7sZAdGTq+X9XpRBis9jMSpWdY3AiUyHQ/YMIlpn3cPwaOnkSWq1BkF4lHq6sKYZfaMQeLojaCWPLqyCSr0VwrE9rqUUsEY969CPJvX6ecpjs94zpad/1HO70wld4sz9B85X2sz1FwmFgjgKQIggECIoDNdVJGK3vmWneABv0ZyEN8ZIlUIFww2aNImf6tptHMKt1cP9p+rKZ6AAvASV7W39iiHKOudKuuYQxcx4SxHscEinBoGjqPS2K+30VGMks9DXWNPZjiiqumcLordz6LDl11m6iszlQObZvfRh1ec4fWGxGZPK2QYYpNILCgvz9OypdMrAH/n89mPsgeVgC8JwO+zO53Fdi+fZKr3SRRmyi4rmxyjgX+2KysTLDxZ4ZPFut9VTqhbXwZS99MzGKw56JSDyrcm+6bzrgJAcCiF5OBclQqHJug0977rLEAEODl9W1lzfVL61gBP7BNl7WEnBxVHiXnwpU0YOBXHm8qTMRysCAW2uKlY5RcmS7/ZvBTH7cWNEf3h40x0jiQNxJnIiacuR45sz8lTbBQAluvDxQ8G5xwprJFbhlZmbmwsrjtksInhM8ujzFqFF1f2Wz9M3oLGtpkBrCjvh5ZeOjcv9eyOj8CW+Wd+XvDCrMMqz8/mdWahxX/3XRHYhrIBtLxk7n99sTaRdIJR4iWZZrXb7/bQLhxLghlnz8ZbMavOlDFh+by8tXWk/XJcq2hwfcFWcOXg1eC1i20fw9gUTOd/P213t86N0tC16GDjPPnecPokGn47Uv7btJhMY8Nx2M+PxRwFFNLIXFH2YrTd+NQ96rbAONS0FcKrVmYUek1GKBAphq0Et2TmZmjdZqqqHZZYcsTi8a0fQcSPSWeziHXjh4peFQt9gH4kk7FNIMorrozOECaTZ55wvV4LQau/QxrFJaZieduet/oQrFM4Wo/6yyq/8dhok0XKst9+1jINUhSXbOY6PUoKzJCkbcJrcDT3Edzcf/uLvJWGecZtyzeedhn+eBFYbiFOeE7o8XTsT1jRtQafQfmiaTWzmysV1S5btbrd+1sfsvtLSrSvcCtvMvF6lMGKqvo6rXekrwZK+V24EkdbfONZDBQZLoNoLJQmnw4J+HH3xl3czT63ON/z+z44SC+KBaWxxL/hwlytXjlsuMcZRjSw2F4R/TMGDTC72cGSZwnHWFWcvmbNuLHPo5C8gXOrfZTRyw5xl+p/i9IgsL7e5wmhdxxYh08eRgX/fwtymPL2o+X2GYFTMKJMguAArOobqjawoL/YTjZDshxhbXQ2CxTVvd5ljYk/g6x+qCytvGc8PabKsYdx8AJyzGwIOWTgJEv+n0pMCUDh4+q+K07BwZckFWAfBk1MRlSaCECIYhCikfh39sWDMOuZ0/ptBg3Hq5yML2EhBcT8HqxO8chaO5CJIGowFES+2vmvuzGOorhAdvXGX4UEBinhFqU1OJ3gUnZtrAgeLRB5vUjDhNmHUYOy6O0InrgBrJTFNdimVEnuFubDGrDKZBK6ywrKzcqK0+UTwiWITFkoYTpCq68ZTefZ+uwIWPnzaBw1/jGiMs9aUXIRTnJenwhvj2Eq9zmh3+4RCQXqztW/IscrBxyArf202+3d37OrmiioLtWgojI3LVbiHKuZK2CWOYhgL+oaMpyxHXEvA4ZZCX9s6UW/kJPOYZy0U5GNgYuos3Akv2My6XOdqM16RWXvIrjoogXSv60b3SXpLnp0yFFmzmcyLjcTV0PpsBZhOIinSlNnUHIX6IuZDmBASM0KwiuOFfkc5au2JydS5+iyZuQ9FYXpqliMVMgggkjW21Eg+zHLy+uweNZwsbx/XHWE6PjawR7Rbc+z8G75XgJ7MrsrQ0NDPNgveZ6+pPmA19EGvt8ZBvbUQVKvHlxIsSdEibZSDnKUy00+WHxf3rjW0YYhq3K0T5B6Ew6QR5khksKRNCMaTnAwjuGIZgy7A1u4Gvgs2e4jZ8pYuVJpeKxNJXA7nKSHoCsk+TGDIyee3dXVrgWnXo+xL0cMvbvx8T3shuwE9VBMENdrMdfhZ5Jc3thoqNYbd2eMyuDr8ZDSOur9cM97kiZ8VyLy96Z5/Y9DL6Fpz/ULDFxVeldJoq7Jri8GVR8CrpaYg4uFpYTDXeEOJNpNWHUZf0s7S9QZvDOdUsRps9h5mlYrOr7SqoSI7P7C2op8MULZuIahTFIg4fRyzjxvsa/P5iBxifh4u9kFobnnbiG8l2ML8RdrNCgNpZd7vEKqS5uk2SoXalEBhA1lm5rC7uNkhMo3RJCO9b3gUXjdxms0JeMTjEPfNt9QoMTMEJ+8gvWuVerVajtp0Ql2myrVFXphnhf5eoppyCRjbWZcEtTYQxZ42C8iL4Ai1gqBx6cTUUoigaPFucMkjj9Il/lYboy9W7IJVf1p6Yi09HJtMss/2nkBIJdT2B0JODifW1kbcwqCIg3lpDfZyqJrHDq7bxaSMT0hMMHw3i07rmOEgVn3chWXLWoljvabKaNpm/OACOIzebpFTsJF1zbgQ0eeqh7zsXOzPKaGPzhaMXEcn4aCaL3fMC0KrZY4PjkKq61YKUioHKaiPjJWxUHNI+1tMBhPijD2VShuFuHPOPS4aDf6kdnQg4UkfzjdkYGG904RNwhPwSaZ8CJEqg+msOTl2KcZLMCHTGua32Xx1EaxlhOlm4bEpZMh/uAirmmQkxxc2nmRCR2VL6zmOgE6JRCRZ50r1eEvBFdJI42qULWTQaKfBcvWkDDzzt2ei2DPGY2NMFsMz4k5jekyfu7pIKfuCnrlq1E4v049xNtpA0UDozp9ftv4/MWiw8dLYVZZAyHozxKw8rhGJe9YzljynbDOHUk3CbDtuFRmmYo6t6RLXchCzwqJEbTX2SiTiLIpItVqdRrXVFadWpzqtSmO0a4n9FAsH9264REak42zZDMuNZRsyc25VKLioxhmmjo7W1OHmhvvgGYfqk3FJe/muvGaQakRb4jgnVumOKx2KXzaY5uT8Xmi39kbzaCinEHGTaZfJdGpjj1xu716a10OQ/G95tOGNy3ZXEwbaiSjHLMOSgALpMlNWOwz+eiCe0tGb6hUX71nJpPttWlaZ/IoLVcPB9Op+kX7IaLRiPsNSuHmAcfSEeWGTg6Hn5ZdcHlpbVAe8Kw6cGHUuqN+cPXjfs4Yf5CSEnfFVbJCFr8qTfVXdw4PRRh12OZvkEYjh06Q/mG0mhB94VKNJxvvWpcHQojtcGvZ6fDWohpUZQ3JrRFlh2eIkbV3CetI9nqsKm+ElC/bTPf0F+HusbUogN7WAtQygs8yMhH/OIeYfEswk04ByOBF+a4aQ5wrThKBPn4ASW9unyJaJQJDOkpYAQkAFtmnV5c4B8GSPr2t8qE/Dgjsp2NACLehvGlep/D6o0SwwmhaoxaBfHHlRTp1585L2u7euzOd/lWRTU88e+UWnW8dfIICIIsHthIDR7yeV0hq+NjqH7yht42uh8/mO03y+y7ToAjumKAOK/dC7Qzo0TwbAANs7YPwCcK7T0IEiQYbx4yimFfl8vRcHwcqBjtArA5J7unIA/m+UtBS20k37i4V+6BX+tywUop+sRbi1oh4QwDY23eGRXVgDm7P2m/W3NJNWGkom/0LRRHAwXrqwI26v+XpXJr2+74duI4HOS74U67dP/N4ciry47MaCcJvymN7PJGhOSkdpy9wOHcf1btWYtMxBq16/5aqmLRu7P/hAo+CGzf8Y1erMosFuQYfaGFstQpobyaFJNxiZ6lm4l/ZTY1+OneK5XXlaXwXJSIfnguuWBaFjmpQr7ux5v3zt86WKUmkv+tmSe7D70L9+2fgfSo/st32bLTZuqHe5yHPLIcNXPWv6n+/KIur7ttqf2zg68G2vVceLmqATmfpSFo3yEJaqePEvoebmKdRbfclak6YjVNfoFf/roVvp6jHUXNlNzh/PmKUhkU7HB6pSI+qdNeLnu/Ky123aFEuw3fGu3A/ruWMluTbP/f3LWsSz5C1p5ZU6dnS8bQev7lt0vzctikQHvw5EZt84RcFlFy+bttCDVbTZIgF25XBhpCvIq5DaE2ANc1EK7WzbdhV3oMWNJoFupaUpkNrTruA6fxNa5zph4TSPL0xL+S7Rst8MPWyne+u7GLpvQb06iWkoHUKoE5Cz7nHxmoRpymqEiwOztK62HirpYGvnRyMUo3pn5vZE5Cory1ZCb/QvVEFzRjKQllnBZ+JpCjePZmj8EwHDuwJzrg2afPNoulT946uyxYhJYq1ci1mMwrFjiqXwj3NyhpHZDpQ3n4lUES54ooiMRIPzLjQ0tZwZ0urm5HC0uWTKdJjFPgwV0bdbxZlKDoGNSGewujLEC6fpSFxXzFxqbYmMPnGemjY7mrJSlaHRbJyxpquRa/rHreVbysR8JkNB8+LS6fFiFqyjCC1ZZBm66bRoWQjDoJK7PYpRBY0iSBVK5ptZjhhlgVQFzDM5ISAkGWOTHjH9DdXJcg0xB/ViqetwYYQm48IRQ3XTADdYB43GPe6Ns+H689utc2sSGOCm6JUojIeKFMRjxZdBFyn4o70oT4rlSp9EWQyVO/tj/zTvne+cgmEZnYpXUD06AgCxYJkP0zTXH+M7MGs9B7F/aC9OlJaCuyaGGo3JmFVFz2U7JohoQXkzhVyZ+4AF3VVSnrgqIKGCqWdFf2XYgOy0mMG2DWiDS0JL+pgRGRKZ5atMy0wtf0wxrqyZznbyAraBz2Cs8Ss4gtlFTozx5LwEs0xzn2FFs0nb6Sr8DbYyq6P6v/2zOOKq4aU526GpUmNfPvdcrq7wlDpX5Jgebi+KRvipFFKsKV52wm2etfQTBdZ1svjucK4Xh0YU/iTyp6gAHllo20F2M5DwqB7xxkjBorASZm1Cdz3+mawSgPRcvcBpW+au5lDIC1LC7mXUV7zAIhPwaf6wdw4/rt+k+SjtMmWlxnWamKBoqlBjWQSHVtYZtkKTgb+eAEfQh9q6bLIzdcT6PNWr34S7QrE6xeDHVTqNovr8WSFXP9GxafEvRPLgbZ0T5waZ9x9RaIrc6CWHaQ8dK1Lmo11ewjbLTQjXUFLM9fjYfrdmMqHdhac6fcQI5znDSa35FpgDyzSHrEKTdryIy1bd3qn4J914FGvDGg60til6rjkAGnjXNxA3gec4jp/cFr6YA26nZtmy5USJHD7PGelOeig1Ys4Uzg2zx+0HJ7is62eHAdzgssHEEnQiryYJskEWRRPf8jluibgC6WBrTbObkzkEkqZ8u2iIktLEnp+zz+V0uj49ygInrjK7xxOBv9bhwVofzsAp3MfBaAqgAqEPCfP0A1mQkxG6NHxGXGF1fefTCY+irAZMhSdfpsYdszIpBBkSLcFGdhOvVZ+kyKtqte+HmGQfLENStXyNG+Rw6RTQNOZj4xQB4r+oDARt/MnouUBbRcr8nhf6q4A7fjwF0KHXlkAUy2cbMAsirRXw2nj1c5GMmUtQpNFWv/5ViPj8oQk1CGsrIO2LRnFY5omoXikNBdPmd81e20qOyLV3u5sC14Z6tXp0wWEzvOb5JYjj4E+9uSw31hYRGlG8CLRO+uxHdnEs24EeP+vrhN4X18im2u3dsqmt41u6i75QU19JvZQSxVb+HqyDPTnOz48PanTSUJKRkXAcdxvlzlmT/HxXGursAactt+aQ8HlTk/Nv3YYe3wiUyvPGM8/4ZHw0HE6ct1UCm0g7VB6+atF/zkkoN0pRSa3O791t68HL5xLBYnlZy/PJG4Rj0G0qvzBgyVImINMimEB9hX67Gy6sE75als3bBnQ5VgmBCoXEelurVjvLH+H7q0sB6h0TjVhqpdzfdOKca35CYRwZTlE71PMKYNo+ETx12HZyEsh8S9JEdCqPkRGmQ0AlPEvLG+8oMVNZvWE4iXV5jmsk0kuY2d50QxD/HY6Jd+gEjcmVjgCxPCHKrq8s8JDd6MILrN+G/199deHth9eKXMgY6w/9u3bWb/QR/dHTzqxdr4RxVBxogz7wK9hfBp0ZMiUvR6/TaRkEVICTs7mHIjGCDLEYDRbAJM8sFLDSDOBwhBKhIDvfWS4vZQc6CStIBiOgA0E8p5iDTGQsTpBfhs1dECkBXf0RreTmyvl7wx6iubogakEFmJR7epaiEx0MUKydKWDJJDeozwowk6TVyjFswEXBU6dybt2I2LEyJi1cvDefY93ofo5wbHzTJukdXC6dV2SPc0zbzc+3AjzjYyrBAa1tWRaTsi6YyqdCtbee0wS0Sda04wIAkqa0eRdeGmGCDvizAAMYSggK8tudI8nmYH4gD8YaCgB9FDPvpOuWwS6/zXGbf/r50I+9r8qXrfxnrv9FackL8NnkftnWelnot4pcQaGwDTaatF3BaCqTgFQ0iGEe64Zh9VzK1wzxpaWGIHZWwjdT3bhZSd3ApfSheFP7MeOtbhWp23j5XeeggqsIJC29dPC8rOIEUPFNLW5LnuoLnky20T4/ybf7/MGc3dz2z7ToJ58pGBmfEBUaFhqVgCfTuZmSPEkml04mYDFgWAKZzEg7TAZZQWRqmESFJmxOHTDPHVF75UCRvXie262lQPSF13LJFqC17olxwQT3w5jkjSJaTAQs4DjBP7amiUF7CTFkZL03Dl8tk0y1uIfnpA/isPIeK9GydYFmez7191eTBC9vyi2zm5Diy+MMS9h5II5IwBuhVYqLicUfmiGYQnrjn/UsLb613NpXF/Jrdpes/F9gZMbON3tl5jy36af6vw/cyGiFTMUr3er7KQhnZTD00ySEaFUGZm6iUNg2PfbuCBz57V8INcy8mu5AgODhE7F0HaF0nc+IvbfNCfysYenOjCWAUMSqdwItOkIAwAr1rz2RHgAivvYwarmCvOBX4ddkoQAiCKRnV6BBU/8AykBtF29PXKxvCn3KhRAigK5sMgJNhSi3GGUAAbgHjeujahhMIjAYy4qVZM5dFMo+21bsgT53Q7wGaHHPlryrqGnvg/0Vxx7zxnh4kzlWt7OpgUkg9PfQqKkeX0kt/DkKdaJ5sY3o9WEWRVfT4O283kSmwJ/Q6JoLAhCNhRyOlxTNA8PKWFjrR9TaCjgmNnR3Ck2fBSbOnJQKMtV1BEZ/vEi0VCMGPXAdBdA8ClipPmbSW7uKysuF8b13vn0SwV5GdesIxFEQImJlrIDPL9jJwnz9vxHYR3ZxGw3Lvgi0ABwHDf3SPKiLxjECseYk2ohfrFmR8lxpciRNI9+C9LUVhLLPAMRw6ddNCP4MZVjgDEHFo9Arz2VcZwGl1NFNFhJFJ6lcFDizM+0K+KbGB2OE99IH86RSzHLHLBgdR+McCRoEBBRvLIAQRRCxTHzF81UZs1CAoAic4tXoJmhTQcN/HbL1sAbweABoLPEV7qNw1gxGZwAAqMXyunrOITU/G2lfjhQGZZi7AUXeYz0E95Ks/JvMYPXfdRZGVhjG7qGBCa4r9G7N/zM1PNnj95sK9KDOY3/+eNEqq9V2XOTnMChiTqhI1tkw2VZBnjCeCTfdZDpst7v5yn8OmLx9Q//dzdPIvn1nCWhbLGL8YXRzvC4v7EncRX69+PwXwGr96/A50RQUPXDfMOCk1M5gpi8XfvVL7q97T9xxa3X87pWv0/znnvzB7UCK2JG0k7LZf+zbrY+qO/p+hKTP/Lm8o5GmFO4vMCjXZunAr+5Gr/Qz8COP01ui6Aj7Hk/A1sd9++DRuW/XPfopjuBB1TFTRrncGel4lkYR5kgaVVh44zXdxUG/yG6XsuzP/05ze0cX9em+QW1Z1VwAmlsDjxIXId3hZIbZWxNiAxq9ckO53SoIMG3laezrvy8/VBjMdTw14vjgQexytPeu37n6JnYkph1TthPNrGvIf5xsFnwx2H9y/3+XJQngXPgx+7/3NzTvx1dUwDtRsGgJs9HsJQIaeYYcJgTWpvcluR3WnxyBwXAGMTp4EfyYDQadlRM44wrnGc4kljxqX0W8BoNJ2sdTKtUiu3/2aC5a2sYV8JLVahIPfMXq1U+67a7SRTp7NA7sn+k/iQuWyrlcqQRyVkvI7ZxBfzq4y0ibdpRAg4AgbGcvyRvjuqC8318u3Mo2b8CcmvFmwTBdt4CF6OBMsni248dBpKj5c+ss30N3Bra8gcZB6zVOweTfI2MBOkS1hAzQDMaPz/o6x1gZC0fgidMnGxWAllRyZs1aYsRU8enitVNJWiEM1uYa377AvQ5P3sBb7evrkCnrPNbiV4IVSk6EKNt4fVvtrusXZ5+O7Bicv7TjogceinPKbOdgVdeGhvM3di14MFjWhFSoKQja8pHld0IsoOUwUHhjaaCOwBtJQ6IDsrA5TlwOdniZj1NmvgCRjdagFErfV3lIzFu8JFS7+BtvG3nV1DWLmlObDTVbKrveUoGmMqsPORa/nd/GOThCLjeex2YTpcPlxVPa6q2UcXlx7rCSHry+GB3/d2i+zAsqNnooEKMo5/Y6vr4RzDx9xXZkUUbv+a/APXJyNAXLzscvMX3ZQnkcGOJRogm8/lFVuz6YdD+4vmwnNl64q3h4ZIJ/fSZeIEAALEVNFMw+QCFzwqwtWf7JJ7ELsKvmMCvZN2ipnB1r9wEGMZ7anIni3DBP4to/7p+rRTCExCFEMV9DhdDR36SNCUG00U6rjk+NoUReBzcU5RICBegUJYw1r2VaI5NB7SMyGT/ODOAz3Zc3pVoyFKXcnGZGi33dhzg0ZaNKiULQEREEVo7fQjKGSUR8cbV+kx1lflSrw8lZS6JvJimBAV7wBPzTdFW1wxGvVm2DvYdoWm2zxS5okIY9sSzZW5QVnoqgSQQqFsfYKE8VUtE3rQ/neGVfEjrPtfK0mHs664HdU5loIp3LWd9umD3P71+SSlVm8wNFZRosON4WmbOp4yP8v75CYTF6g12KEchJl4Z52gOxIsH/L1MuB3Y+WORHamIUFGPVUF2CZWnQ6O5y3Z1qI1Vsm1nF4ntJyHkRjgpHEYVaVNsllgAzhOFGdrZbAkElqQGpXi9N8dlYLMunbsYupJwLAz0JSc0eyRBSlDDDU6V+oel1ZVxT0yCWwHVQfy9EEfGWliSK6eKK/Ub7K28kphyRfrmnZg9P8lPLESJdS9TShGctXXrhY5PJf3WbvcMO2JHxxBQ8sQ0GY6PJAZXNqM9+0JxGBwgshZ0tIzBDqmQHQilEiQn0Zv5PRmct0OaG6SZfZV3mcDxKMsWt7uVgUtIc9WLFWmk2L2nvpK/Ioqb/OXfsH2tpYX6uOwtOuN+hNg30B7c5sWA8GnCzTW7QPGfxaxE3PZY9b4GEwMciMZ9/RzzixZzsZknWcmeLwOzL5XAIBE0P5QJGKOYxY1awdCFJcIOHH2O7copis+Mj3q1xa3SALrEs15LYvNQGwSjYBAzjYLNcTATHo7YNzBZlO8ZKrP9PllrQ2zSch4hm7hTfFdvVWgubarUtCvxLJd7Jtrx6NUR295/E0RJqPpPiGDBOZHSuPMylY8Zt81gvO+aq33zXhhmg9unoaoqkhD2Rptn0svtlZ3aaOOreJkS2vHiZny7BNk+g1x84cKGrlJuh0ZOlhmCxqIQMEzYRPU4+yfWb8I5/em/8Qcm5D5NyApNZkxgGqdum/lSXl1HhhmFeMqUOnOCMS7/2j+oPxIWrAn40z2n6hRsfQ5uwys+gKLwRIXg+tq1sDRmRP6NO8Z6npmUSSqaUmf9kPAaZjnn47JdoqDre6bEJLn7JPmukuw0Qxrgg0i724piPIF6SKgszTDttZgrTwf8o+bu8kss2sy2S2PculP7ZAL5HZ8iAFxtX8uk37Vcacm4IIe5TFfSfb5hUgrkrlwvzhaRYNrQcnJORogwvQ1J6xtVESGr9szC4U1Oi9vYFsQhz7PSkOcY6Nt9g+nFW82FL929bjsMSObGO4trHp5z114cL42VXB3gorZfHuVIu350U9NdHbcV3vKnGYLIaXMwIc53JWLROcHEEmelJ8PY5OhboDqvLt/HmGsiZQuiUjMoRp+8/1vT5tmVeQA8eSHpr1zAnhmfz2bNyUsOlifnCxrLYhdFScHtWiVTn9OBOvVzl9cVfTfNsbOL7NYvL19ixnGaosRmUEuaEn4MgImdJZfjh0EU/vHFCzULeE2MWKSmpyrOGCQ0KJFN4xYjCwYO49yDfrPhhPqHxtRKF2oaiAnJKhfYiYVfBL6h43GZn9iK7KNBzl2xAiISzu0mOAJXiOxxINqhcI0qxsKdFbJygaQp8V9xrm4R1CvlLGe0Mv6HdJzNPJpODbK+ZcH0x2vo6IVcEqs1ypTK52duYOBkIa1qfwwRshzS7a/pJNUn3tt5jgQtmC389WhgQK7LK9euFwmnaSZvNEescnu/D4Rn+rGhru3WsDEmpyl6gfj4tKpBOet3mBc5D9ba93oA8s8N7JtT4ZAY36idroQHhdRGRKh0lqE/IZO9rA5tgEzH7UqFPKntbH5to68VDgQHybFlOjuCrNvtMBTGIm2ct+F1eb6nBxtsHVbVaKGQnyuXAcbiRQr8ZdXNVtrECG2CxUhy9iFIXw5EZod1oIlyhf63ZQAZqP/ULM+hr4Fu8PTzv4SB50tuz0vZOWdwOyVvoxK+TyZweG8NxMNvV4bpcZbF4auAm1JwpNMSF06HV7DjLdmhXkpOq8T05QCg2EiVrdoZdw5J4qgikJSSYc2TYdpYBZkF+WtHTkYaLxfQfcc2naiIuFLMcJPVApDLTJJ6PBCDE8u307p+D+QE7gdSw6xA108wb48bM5es5kVmY5DZBS24iLIEpEulcnkgLQcTjgLIyPS+Z4pwez1DmtxpKuui3dCyMFAoVAFEfLfBrWFZr8dlObdycw0/aLSXNB8YVdP7AAFnTaHUBP/AxSUUiTGduJP50XK+/0kKG8BVSbSgdftp5MglNH571y5HJYoOy6EeC1QhmS5fHapR675eVguyeHgReh9RK9IvF7e0RXlPAyFny8VqcEAGY93LK1bzpIgt/F0X5WlwCwedL3tuD3h4kQyLRdfFGl8X50NB4oi0Tv9ExSHU0ZORA4IyjIomeivvXT/jRPBF8QXIXLNWqtIQAQc4fghtMd8X4iX8MqTJpxRKRCB7AnMcZpljMlWi60Ej718S6lNN3qYZIFZ3gocY427gRJzP14FbF6TY0XYltteEXIIjMRuQDmc+3nFRlZxeVw+VmieLoQk6YrmWwNMN0hNrrUnHiMMBl2EoFSw+wB/sTLuByHf39Q19WlpWxcQT5yAKzlWxs7fQ/UH6i3XkxYPX7/Q/HXU1T1zrIgoLa2jabouqOYfuYwQu02v///5YeBB1+H1QJU2AK0dTVx6P4B6baEW4kDgYj5rVoPHbAW2WzVodCHruNQVXdMF8Lkitpng/Oyh0vDWeOFmMTfv/VttOnH9dxEs/lK3HEv8gun6aL9xW5bVq2JHOh3ZUfp/fj9/rgn/9g1mOwUZ8A5T4jgvDNOTmOHDijUjBNii5fPF9744Zen9nKXlV6jYhAMv6phEzH6TRs01nAhZqPahQPkLHAYsBfYXZV2AxquPBwRphXzLFYXlrZNAgztTIt0S4eXWw8LTI0wwzlyIZWUCfJihIl6YC3P1YXQEwlPce91Go5GWFLOKuCcUN+Uf7AcEeRUVcnWWBvdKmEcEYZOT4PmUhhL/XWjoFMn285S6JRcfudiTdTr3Mu/ZZEojhIYgvlEIx2ytlwjM2VRJ/Q6U4gokQhzo3XD5//v/+ZwKnB2dk2W2fndU2sG04nTe9U5IF04uzJYvF87ShCUAD5maKhGUbaMJlCrdaIMXaUISyrWENtbbSp0d+FM5KDw4c8B7kRBrFwaaZrxtkwoJpH09JMvcRkc0yGobNJPEA7QW6Rs1mmVJ+RvqsZztRFEsIZ//GOjUyDyIRARDIb2sdVknQJrJkSBKhgkoiaiuZiwviS4sp5vcu+KnRQN3Lq5IRu3ASnVGWXOnKCAp/vPySHpmgOm0sLxBKFFoJCLBbSXDabRa7kkcA+UyclpyQMSPWZCoUIn66wvtUnVpiqNYXmHZ0d6InkX3/ROJxtznQltkBIvrRw7Jo/4dWpidET8YKcDT7GgsZZiAMwU8TKGJfP2z8Ca2tIJFKhQwZLFHAUCxiXjjZVCnDc6C9J+pQ0O0oanxyJ0AmmdH9hFgsdDYejlTMGE1ESZ/JVOiu/kJiXIcSDNJVocfX5xE0g07yEMGrIynItFDNqRYnZModiLknzlYZMDYNAASdxc26mRMQP8EL7hZpcfzTpW6ismdeRUhzL+EcAsNFrQpfJMVPw6jGGtU/2IPK/sKzgTmT8yoKKjKxfJlOf4tDUXI7G1VsVvENp8vzLoEAKAhAwDB5rvKpzZEnsZdr7YAy0VgoLvY6Gw+kBFvgcneAztH96R4cfC2yRWUjrJOKzn755QduXghMohBBQOMVwIASEX2laLeQyhcnVR3/xO2LVTWDmh/MCiz30aPbnFCyKwzd9bQD3tRVk5lJzlmYCImTRBE6UJKAALxoYSQFrflyRTTzXlrT79+Jfz0jb9+fArlteMSnO6XVXk+yCv4rnJPz1P5Gz1s966bRo2tDAQ/wFWY547fhpaKJk+JiRarWhZYVr/11//gtmtu5StsZOUARWo93Tn5czTbwLmL94k5kYbybj453DNPDmMB7excwA7xQzdIE+qo45x5vFnOKduaNnmzDBnfmHT9kWnrznunlL37+WTE/6XxBek2TGAk9E4TjF/cyjflbqAcfcIHRVXPc9RxNWf9zp53Q/UIiC89t1Khh0ZFlJpmCV9y7wNM4VzUExWAnnlLll9zVSwmHYm1V+P5AkpUHCcUInoOoK9cHIjWFng5WfWBL3+S8KMRAknAiwlp19kDMgMcz56FolD6ooWTfbe+BcctWfajApmIqWgiYnOztTa0QoJBrRk4zazOwLBG80cy/QZg4xThGjXDQBve+SQUSQ4N9m7s8NI3C2z2Yppg9G7oVzh4LLAdOgaZzpKfzrFAkmvH6bMNORrJRSQTX3BDauM6gCQcWljWMi0Y4zS5B9GyVkIGOXXXPhsGKo1Zt9OCj3I4uv3e2O1ho5oegZ0x+1ECuvGfPWFqp9ImWAjQstHk+lNahhZV6rzQI8pDpntARBqNou5we/ltim3VC+VTIahzuXAnsS5PSM6YN1qVsVf1YQyatacSkmldA0/dD6lWpU5VvgAO+7Ayo2vF5FMUVpImoIArwo/JbM6A7nqLbOHTHtK+akU1wx2ccC21HJt1lrbCP3GeTU+8jpq57AA55FywLFBjB+7D5ZDUwqCsbfvDBmz70eS2ozFQpTTmn8eWo1MVSdQK0ZjCTbilXHnGiZ71RyBPGi6liuTVIYLtWptgTGyPxrQVNF/RmHYzyv2qYWvWBLTk7EkgZDhdQiVIV4kuTWJvUAGq5akoJtirgKR028hVWLaOT/pejFbkmLlzIO9IiYpC937sWgilh1lOYKsURn94t/gm8l4ZWb3fnN5cOX6j1BhzHo3jcXT5aBFnnW0RAx8K8ootyK2B9E1TKR0sUjRQY+twL4HgJgkv3xUE0KHTk9r0ZR5/N+sg2K6J0LS/Ntud1WUCW64iT2+P0dBE13umjHUeBxsy6eX9OAK/C4Fzm/RjQowWBC4zBwhg5qqhNpXnkEiC/fsHFPyY8UCpl8MCd5IGbQ822UzYqCD4uy8LgKyKxwEPk6+DvrZEwYe0k6vyeVs6Dut5+pbxz+omLudzpPrVMtPN4NPOpF+PcX/aCOFvD4ZKbio4s/8LxkXljxJdXglXleDnSCX/yJgYhDlTZGOOsOzjJCG1UcRMzOhwV68fI2Dv7b80a8WHdERBuyPC50PMfMEYzVB89gNgnKK9vbLHMIKRzrhMkS0UIxXyPngagImS+puHDrWg55Aiirug9SGjNxs6MblwiL+/2WpYj4ajpus6MxXiKvvBDdodv3o5fqsmA5iPqNFmCP1SHKLhrkoM2FxCoK59XSsapLwCV+fLLk743PflphvjlET2IK51FSckdtlvEXio55kwk+qO5sjlaaXbGyi4QVDRzX57DCn0Qchuf+QL/IzbPJEGpdqTmC/lGizoT0J5I2CS95ZnK/FlBNO9BysD1qm+VewB+QkpWSir7V7YO94Q9cm/fXKeD2yWjASytIbx0RVC5M8i3SsITK55MPFHUMF3CusZSMROkHjbdky3YMhu6T2Q6zZSq0snfRurETVndRitJv9vh1Hbg73KcsVPM7DtcaEorb6uweOboqBkNvXg9eQ6Nl/WAcooXH82QnsAzDFlfYFSoxJOf16O+skc9jFL3VOQpR9PnfFcX1qbALeRNgBuRs9VnWYP6dN6ew8OBZe2yDEtvsdsJ13c+5g27XnbDbNiV+c9b3MvMQ9jz8WVaXDEchShmhAxCkQoJaHBJGa5UjdHa7BCRJURWGY0XFKqCR7GM08Bq2OIIWAwnqZLSomK+d3fQk3x6TsWtx0daXEVRJs4m66uyRBhrR9+3fd8OIelG3l5NhzR8ZRjnxBD/m/BAbWAx5qUJUHB7eUWxiv2Qmykm2YEHCImMKezGoklT1l8x3Q3NWj2x6JaFuxZIMnkx4YxIkIQU5aqy261iWVb+r+dEiKERGgCIkIxXOcnHbwbcolJgkyK8ERRH3Jxk4XOJvo/wdvlk44q6cFAo0JbuwoMmclijaPwQRP+xOfRrdNlQDJJAp9NoF/x7TJ3hXeH9GWKAPhMaVoFccBpJJhcEbkTcCcFAjnZsm5fUcJFPYeWRu3fOL3LnPLczZiOVuBMFRzI0Uygq9kHTe+PjG7n4h+wObEMgjeTWJYm8sCAWfYeb5kw/Mz5nbxQYQhRDDVgiZwhUULOO3WGZZWT+kJEC1tNTvjxetvGwi/OUeigdhqg9PITDXz1x9rf6SSijd4UvcYt3iXaepHfIrx3Asww1syMZyaOk1jxeKYyhEL1xE7uVbYpOSN7SbDMpKvk/jG75mJMNWaRZE4TOkd/OaPRyJMCikoYk9eRoU8YGWyHRioU5Oy3PVQO8Q/5o7NbmlV8PuRVcDLjeVJBIN76wLIkR0kmH87BVnpLGl5nuY+aZ02mPPRFtNOiTacRY2EouEgA1mm0QDpDtUMzBkiedOhU0qE+Ye1OLT/uGoKrApeYWCm5+Ha+gTL6O1KyoYacQAFYlyPVjRqM6AGNWmkyFlOIWQTY+LtmCwByVS+IOyVTbjyevSh/1RRk0clBr3zI3uM0hago11yv2+VYNa0vaAluvs9F8nQBCBccGO3GeYcGxDzoJo5fSQ55rr+Ch6csRKJEXS84J9RYagvVC7sntn9lkpkOdTsHFkI71GOwABmcji5tBBcQZCf9rYtjOoLGP4D88ILkUEl9TcuDG+60y1n+LNCwGdfxrNKTzQ8JQcdO/eLHLaYSuy0rzGjlurL5z7fDYh//CEGKWdXnfm0mOaB5uWZ67VI4849X6VvAp50jkCSo+rSHJ6+LrUjdn7iyKQdUeVTilcN11X/HUvPDAjl2e4S+LPVanwweq4z9LvT6Vacqx3aFbgnu5Zi9fcybTaA2mu+XNu96ZZ1U6dtM/u8UTtejJ+cKD5JblsADGIQhRDkdugYycuIvdiTsdFU6TFyfBy88vrR9t2EKlORw6oPZlwpI0LZ1pSyGmt2awl3+1pZQ01jykGsop0MGeRJJIUuny1yvBdoScjhUKYuAO9oZlAhO3DFrSRlelEepAIVI6ArjtQBRZlzpvz7Pyale/ZOrqnQlw5Rmdba4HCSdR3IwiGaZHWmNbFeaeDzbq7Pz58ofbzJIueC8o3rm62BbJPscNxScZTeJKN//AUyuXDee4zvaKFFB5R57UaHGMwg9HUcky0COgwnrzaite6l3vhgwP+RIbhaUzyxf44Bj5cPzma3NIqcUHu7Oo5jR9is1jfvdh+OM0Z+hMX3KZyYGkeaZ+wr65dD4wZT+xB1IRxXX9qm5mdhHElwGO4Q0qGpIAdYadQpI/fuilvGpdVJAaBDKOPrScRNgCE11jM4tVHDJCluJ/AGvr/vk+W+RFk9ekGTM30+vNWNq6/Ckra9U5H2B8AAbPAaydNUEmPJ/xnG0oD4M9PX6WkWDp02UPtn0z81WMMmGAgaPkDGo2Dn7px/8RPA9PXI2PF8I+wHgPLC6ifaje+ut3iq712nN53WfvDaj6CInda/rZ7+a9+9Iwl7odOdKsTJ4cu9RNoyC3zvjfPxdIWsfbamVa78YQHt+I+XufQs9usbru4axcQF4IqVLtAXk2g1Mf5Jz9a12GG57jdks/rMc+mXk6D/qmedeJrN9LcaX6vrlZlruv9Gh40jd+I59em4CPOqmvwMNMtj6IP3Q86CEYqOcyjdKf6MuzRaLrj/GN1Ul1snE0yxR/bMGMtHtwcfcQBc6eLzq08u/H/xN4H5k7mUBfusmSOlXn3P2ofZsLYw82+FED16sSWH+T+JFeVgm83iwTI5ali+QIG0+Koea40afvJa3S8JaTz/2QvHOqFC/oJJXl+Zct822NLkMJ5Scn8p91zk9T5o9337iXcugeewRnYAEXQChvhqLYJwcexuJrqMqdtjKANRyVP8ilx65fwIsjtLHTAPWivvNjCqxsr9wNqkCvjckCrLKeaOyjqbzNniqrLGN95DMnwvG7xJFP9Ii/eWKCneS2byZfrCsdrqrEnDnZ07v7VOrWongFsA+bNIO/Fh6gPdZ/pmhZrHlVf957CfvRflTG1coOqhFO/uiIoiPBXy+4pVRp1kfO0tLrIhaQFPsBzuNi4C25eEE3lA/VOB8H0bVGzGeQuAZUT/2VpG3TN8x+ipnGlU7kJ01MR7RE3VUmeTbLnNvpRZPbUQjt1m1PLvba3ScRwM3n8kpW2gbTJ28zxlwcm6zbyspDJAiIma8u6KJpsyHVV1lUrqfOtW8mFniHHVldMXuWX3LCFtI0nXo5XNGPeMEdLWyJ2DmYreD6h7o0fUg57W0FjgQj8dNU/x9EPJGBnqZ5qMm28V+eORToOVichsgEbnMEDd4nbuAfgB6FjNfu0zWVjlxThXKLddJQdBDwbeDhwBvBQ4G3AT2ddaX1JadTSpXEG+HNZRPvSfc5xGcM8hJr/ElW++PpvmukX3CAwVhCPLR4DMulTnjwk3jxuZgF4dcpYj7Arq8d4FdYTXAqtJ0lS1TO466+nSDxReRnTPAwh4NqGeme02noXQiX1rtgKitxaRtGYM9f8ejW++PqxaFH17gT86z2wudd7siRVvXCJ6/1xsSHgQODOcmRJkW2SvDlXpnlmc6WmlWfqRVrI7AFHmeh1p5cu0JOS3C0QpHCbXI2BcnSYlhJduc4yLxcuLfmWKfZvjrnypKvLUWPueskWKx39qfVprUW8OSfHkr5PxnWZLc9yX2TRL6okuUe7k/ikr3G0qHk+R77pZrsxzPki86RvZdRUXMadKx9zlLzyrju1dPAwO6msaM2QrUvvokQLf37q03o9W63ZndDVdZHcrs9l3DTP3clcSfpcs5DIa8wxP4DSZ1emAuR7pef0tksZB9+CGDtXvlQqs1dfd65Us56QsxTlXkfY9Oy23q/SKzRWAGInVYsD/vKn2W+ItHhiUM1eLbCPBoU0v2TFAgfXpLuqMyXiyMKnBxwp5eETM4odgpObbXHLdTfaKv+eMkZTNSwJZ1n5xLj89XKVITWfg9twM8dBv7nrtjtdLDufofYpGpkDyjhkTE7UxooYdxZCJ9eVpwfuuW9ukdL0ifJyny/vX6byy59PAXy9cyp+6DBhwxlXSAQTzbNAZinmR4wkW5b6dkcRFFWfYDmGzIkm1CILaeVGjxEzlknCYscxudTSTPGQLq58eQpk1BIXDptFZZiqHoGYSLaFaQrLlRHYLR6l2BI76RVZnDRZ8vIdFl0BjekVphBTUcXWiE1ZiTjL+jm1pQxKktNPzAx2hnjGmrkXs5z0Xs4+MQnsJvvgLaYVNlgZzZyQiJjFt9t2WbVKcQNtUpZSVrye/n51mrRfhDuzYa3+/Y6cuVbsr1Z6wdX3/2VRW131NRTBQvqDXAMOrvH8JUpm28liNdZUcy21opwhkOQ1P3yt2qyqLUMbGR11DBtDuyMuu5QpM1Nm9hnRn6Qu6nDWHntZsyHD89EnP/tditK3fj7QmSt3nrwaBQpg0h3lKlRabru6hvJbrayRAgWdbiy8cESRosWKlygptyBZvV1/MpcLFCxUuEhTTRcVFjGFstYE63R75LF/PKldvJkSJaEN9WOBIMmKqumGadmO6/lEEplCpdEZTBaK4UFsDpfHFwhFYolUJlcoVWqNVqc3OF2c83ZEeWo0KLSaWmoz7zDd0lQ6lWbi5g1rru0/L3KJPDN9UYb9siDXFxCtO3nJbKfduqTTjDMxbPQ/GhznKhQSHFedyxL09g7NJxHOepZJoVvLW+qCG9be8pH+5cBfICZTSloD3XZk1rhTds/cJ5dZSDOv+VPCcON9OMFtViTPC9wPcXh/AkSIsZRJNodOO21OL+xY+aXB409KS9mgwb/Ro1ByC+lYlt2pPRHfkBCe89q96dc76MkleOm4iZymsTU70INvcSAvEyMTdZA5L1OzI3tLoyXjAiPPDdREDdXlYJbzjkXChDyaeFRiF4Es9EzahcLknbBvLl33U0ygLxQT1TQ0bZq9Px8Qc+InBNKJDJkhLv0uDIpBgdyZc9FI9S6bskil4mU/Vqd03alOtar4xEpQqfOwRTA+wWbeLE4sw9+Sdgq7DuD3sHj899rhII1lXvkiVLk6sQA0sQhzpcq0w0z9QuOMdID6GOlwqJWewo04UpOQZhZt8CA0Otkg5SvW1lr+KFLRydryJaRkRcoDj6S1Li2mC8aGgjS44bwIZM7E9Tai16uQ25v1a3XB2KutzIBQCRnUWggZhkvxDXnj2JsVcWyODECPjXUXrABImhPo3JHiD+OweAcjpa0pUZJ7GNdmdeyI+an/SZP83aYZV9cKZa6SZS41AklZ0Ao3KW5TjT/a7dHR1eaibbWMWbd5DiSnD27KXEccOr1xFbguMSLUuCNNAW6CZZor3XCCxlw+2p328R4fcZZvzOVrQM0+ORktQSsa8dwHomZ7kqg8ttVGmYi2IC/28Nk7QzM8sHgP8xniPcyHNu8TPuLwMZcPbf60oyZkb7XqaCPA2/bL73+cQYcVsYCI6Oom2V1RFlgEgEEioqscNgTykAAgrANhM5EAMEzYAB8wDUBneeEtQH4h9wmUwKMDQK/d4GARAAYJ9Bo2ABCwZ0AAAAAbAAA+AEAH8BYgPwMuAzXiEVvHJUN3Y9h4PL+lmY+nE6F3UJhcPZUCrgQy2xkrCBOf85GmaQV1AKG31uXaQ+rqDtuxMsNXfsqErvFhqTe+7iFeJW8JFu5S1E5qsdTgyC6iG3EvgXURZyWFWM6cbtnbgPsGjAw6WCQqn7ldLUsqjcO4TYdBv+dlARUzZwxFvLJpr9zGf5Uet85EiWdb6kKJm8YM/itdecYElJllTfiK/VjL3OML250DHyfenkYR9rnPh5tDukRcNpvcRDOJ9lmD6uoguBfvxv+nYeSmnKpftmM/EN7mbH1ukA77Psse/Ymhr2x5u0p4JH7hKPZ0ytmyQ/Hzh+n4/f/pPxpS3AIAAA=="}},"time_used":95,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":35,"receive":36,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
